@xyo-network/react-chain-boundwitness 1.14.0 → 1.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/block/card/Card.d.ts.map +1 -1
- package/dist/browser/components/block/card/CardHeader.d.ts +2 -0
- package/dist/browser/components/block/card/CardHeader.d.ts.map +1 -1
- package/dist/browser/components/block/card/hooks/useDetails.d.ts.map +1 -1
- package/dist/browser/components/transactions/card/Card.d.ts.map +1 -1
- package/dist/browser/index.mjs +59 -16
- package/dist/browser/index.mjs.map +1 -1
- package/package.json +21 -21
- package/src/components/block/card/Card.tsx +9 -2
- package/src/components/block/card/CardHeader.tsx +25 -2
- package/src/components/block/card/hooks/useDetails.ts +2 -1
- package/src/components/transactions/card/Card.tsx +22 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,WAAW,0BAA2B,SAAQ,SAAS;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAQ9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAQzB,MAAM,WAAW,0BAA2B,SAAQ,SAAS;IAC3D,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,MAAM,CAAC,EAAE,SAAS,CAAA;IAClB,OAAO,CAAC,EAAE,qBAAqB,CAAA;CAChC;AAED,eAAO,MAAM,qBAAqB,EAAE,KAAK,CAAC,EAAE,CAAC,0BAA0B,CA4DtE,CAAA"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { CardHeaderProps } from '@mui/material';
|
|
2
2
|
import type { Address } from '@xylabs/hex';
|
|
3
|
+
import type { Chain } from '@xyo-network/xl1-protocol';
|
|
3
4
|
import React from 'react';
|
|
4
5
|
export interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {
|
|
5
6
|
address?: Address;
|
|
7
|
+
chainId?: Chain;
|
|
6
8
|
linked?: boolean;
|
|
7
9
|
}
|
|
8
10
|
export declare const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CardHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/CardHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"CardHeader.d.ts","sourceRoot":"","sources":["../../../../../src/components/block/card/CardHeader.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAMpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,aAAa,CAAA;AAI1C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,2BAA2B,CAAA;AACtD,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,WAAW,gCAAiC,SAAQ,eAAe;IACvE,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB,OAAO,CAAC,EAAE,KAAK,CAAA;IACf,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAmDlF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/block/card/hooks/useDetails.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAa1E,eAAO,MAAM,eAAe,GAAI,SAAS,qBAAqB,EAAE,SAAS,SAAS;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/block/card/hooks/useDetails.ts"],"names":[],"mappings":"AACA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAA;AAa1E,eAAO,MAAM,eAAe,GAAI,SAAS,qBAAqB,EAAE,SAAS,SAAS;;;;;;;;;;;;;;;CAkDjF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Card.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/card/Card.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA;AAS9C,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAChF,OAAO,KAAK,MAAM,OAAO,CAAA;AAOzB,MAAM,WAAW,gCAAiC,SAAQ,SAAS;IACjE,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,OAAO,CAAC,EAAE,2BAA2B,CAAA;CACtC;AAED,eAAO,MAAM,2BAA2B,EAAE,KAAK,CAAC,EAAE,CAAC,gCAAgC,CAwFlF,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -179,11 +179,14 @@ import { IoStatsChartOutline } from "react-icons/io5";
|
|
|
179
179
|
import { VscSymbolNamespace } from "react-icons/vsc";
|
|
180
180
|
|
|
181
181
|
// src/components/block/card/CardHeader.tsx
|
|
182
|
-
import { CardHeader, Link, Tooltip as Tooltip2, Typography } from "@mui/material";
|
|
182
|
+
import { CardHeader, Icon, IconButton, Link, Tooltip as Tooltip2, Typography } from "@mui/material";
|
|
183
|
+
import { ellipsize as ellipsize2 } from "@xylabs/eth-address";
|
|
184
|
+
import { isDefined as isDefined3 } from "@xylabs/typeof";
|
|
183
185
|
import { BlockiesAvatarAddress } from "@xyo-network/react-chain-blockies";
|
|
184
186
|
import { useEvent } from "@xyo-network/react-event";
|
|
185
187
|
import React4 from "react";
|
|
186
|
-
|
|
188
|
+
import { FaCopy } from "react-icons/fa";
|
|
189
|
+
var BlockBoundWitnessCardHeader = /* @__PURE__ */ __name(({ linked = true, address, chainId }) => {
|
|
187
190
|
const [ref, dispatch] = useEvent();
|
|
188
191
|
return /* @__PURE__ */ React4.createElement(CardHeader, {
|
|
189
192
|
ref,
|
|
@@ -201,6 +204,23 @@ var BlockBoundWitnessCardHeader = /* @__PURE__ */ __name(({ linked = true, addre
|
|
|
201
204
|
cursor: "pointer"
|
|
202
205
|
}
|
|
203
206
|
}, address) : address),
|
|
207
|
+
subheader: isDefined3(chainId) && /* @__PURE__ */ React4.createElement(Typography, {
|
|
208
|
+
variant: "subtitle2",
|
|
209
|
+
sx: {
|
|
210
|
+
fontFamily: "monospace",
|
|
211
|
+
fontSize: 12,
|
|
212
|
+
opacity: 0.5,
|
|
213
|
+
mt: 0.25
|
|
214
|
+
},
|
|
215
|
+
title: `chain: ${chainId}`
|
|
216
|
+
}, ellipsize2(chainId, 8), /* @__PURE__ */ React4.createElement(IconButton, {
|
|
217
|
+
size: "small",
|
|
218
|
+
onClick: /* @__PURE__ */ __name(() => void navigator.clipboard.writeText(chainId), "onClick")
|
|
219
|
+
}, /* @__PURE__ */ React4.createElement(Icon, {
|
|
220
|
+
sx: {
|
|
221
|
+
fontSize: "0.7rem"
|
|
222
|
+
}
|
|
223
|
+
}, /* @__PURE__ */ React4.createElement(FaCopy, null)))),
|
|
204
224
|
avatar: /* @__PURE__ */ React4.createElement(Tooltip2, {
|
|
205
225
|
title: `Address - ${address}`
|
|
206
226
|
}, /* @__PURE__ */ React4.createElement(BlockiesAvatarAddress, {
|
|
@@ -229,11 +249,12 @@ var generateStepHashText = /* @__PURE__ */ __name((blockNumber, stepHashIndex) =
|
|
|
229
249
|
}, "generateStepHashText");
|
|
230
250
|
var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
|
|
231
251
|
const stats = useMemo2(() => {
|
|
252
|
+
const epochDate = new Date(wrapper.boundWitness.$epoch);
|
|
232
253
|
const stats2 = {
|
|
233
254
|
Height: formatNumber(wrapper.boundWitness.block),
|
|
234
255
|
Protocol: wrapper.boundWitness.protocol.toString(),
|
|
235
256
|
Signatures: formatNumber(wrapper.signatureCount),
|
|
236
|
-
$epoch:
|
|
257
|
+
$epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`
|
|
237
258
|
};
|
|
238
259
|
return formatResults(stats2);
|
|
239
260
|
}, [
|
|
@@ -294,7 +315,8 @@ var BlockBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true, view
|
|
|
294
315
|
return /* @__PURE__ */ React5.createElement(Card, props, wrapper?.boundWitness.addresses.map((address) => /* @__PURE__ */ React5.createElement(BlockBoundWitnessCardHeader, {
|
|
295
316
|
key: address,
|
|
296
317
|
address,
|
|
297
|
-
linked: linkedAddress
|
|
318
|
+
linked: linkedAddress,
|
|
319
|
+
chainId: wrapper.boundWitness.chain
|
|
298
320
|
})), /* @__PURE__ */ React5.createElement(ErrorRender, {
|
|
299
321
|
error: stepHashesError,
|
|
300
322
|
scope: "BlockBoundWitnessCard.tsx:stepHashesError"
|
|
@@ -313,7 +335,7 @@ var BlockBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true, view
|
|
|
313
335
|
}, /* @__PURE__ */ React5.createElement(DetailsStack, {
|
|
314
336
|
IconComponent: IoStatsChartOutline,
|
|
315
337
|
heading: "Stats",
|
|
316
|
-
tooltipTitle: "
|
|
338
|
+
tooltipTitle: "Block Statistics"
|
|
317
339
|
}, /* @__PURE__ */ React5.createElement(LabelValueStack, {
|
|
318
340
|
labels: stats.labels,
|
|
319
341
|
values: stats.values
|
|
@@ -466,7 +488,7 @@ var BlockBoundWitnessDetails = /* @__PURE__ */ __name(({ block, paper, viewer, c
|
|
|
466
488
|
|
|
467
489
|
// src/components/transactions/card/actions/TransactionActions.tsx
|
|
468
490
|
import { DataObject as DataObjectIcon2 } from "@mui/icons-material";
|
|
469
|
-
import { ellipsize as
|
|
491
|
+
import { ellipsize as ellipsize3 } from "@xylabs/eth-address";
|
|
470
492
|
import { FlexRow as FlexRow2 } from "@xylabs/react-flexbox";
|
|
471
493
|
import { QuickTipButton as QuickTipButton2 } from "@xylabs/react-quick-tip-button";
|
|
472
494
|
import { BWPreviousHashQuickTipButton as BWPreviousHashQuickTipButton2 } from "@xyo-network/react-boundwitness-plugin";
|
|
@@ -478,7 +500,7 @@ import { CancelRounded as CancelRoundedIcon2 } from "@mui/icons-material";
|
|
|
478
500
|
import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
479
501
|
import { ErrorQuickTipButton as ErrorQuickTipButton2 } from "@xylabs/react-error";
|
|
480
502
|
import { usePromise as usePromise4 } from "@xylabs/react-promise";
|
|
481
|
-
import { isDefined as
|
|
503
|
+
import { isDefined as isDefined4 } from "@xylabs/typeof";
|
|
482
504
|
import { isSignedHydratedTransactionWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
483
505
|
import { validateTransaction } from "@xyo-network/xl1-validation";
|
|
484
506
|
import React7, { useMemo as useMemo4 } from "react";
|
|
@@ -490,7 +512,7 @@ var InvalidIcon2 = /* @__PURE__ */ __name(({ ref, ...props }) => /* @__PURE__ */
|
|
|
490
512
|
InvalidIcon2.displayName = "InvalidIcon";
|
|
491
513
|
var TransactionVerification = /* @__PURE__ */ __name(({ transaction, ...props }) => {
|
|
492
514
|
const [validationErrors, validateError] = usePromise4(async () => {
|
|
493
|
-
if (
|
|
515
|
+
if (isDefined4(transaction)) {
|
|
494
516
|
const resolvedTransaction = assertEx2(isSignedHydratedTransactionWithStorageMeta(transaction) ? transaction : void 0, () => "Transaction must be a SignedHydratedTransactionWithStorageMeta");
|
|
495
517
|
return await validateTransaction(resolvedTransaction);
|
|
496
518
|
}
|
|
@@ -499,10 +521,10 @@ var TransactionVerification = /* @__PURE__ */ __name(({ transaction, ...props })
|
|
|
499
521
|
]);
|
|
500
522
|
const resolvedErrors = useMemo4(() => {
|
|
501
523
|
const errors = [];
|
|
502
|
-
if (
|
|
524
|
+
if (isDefined4(validationErrors)) {
|
|
503
525
|
if (Array.isArray(validationErrors)) errors.push(...validationErrors);
|
|
504
526
|
if (validationErrors instanceof Error) errors.push(validationErrors);
|
|
505
|
-
if (
|
|
527
|
+
if (isDefined4(validateError)) errors.push(validateError);
|
|
506
528
|
return errors;
|
|
507
529
|
}
|
|
508
530
|
}, [
|
|
@@ -527,7 +549,7 @@ var TransactionActions = /* @__PURE__ */ __name(({ transaction, validationIconCo
|
|
|
527
549
|
transaction
|
|
528
550
|
}), /* @__PURE__ */ React8.createElement(QuickTipButton2, {
|
|
529
551
|
Icon: DataObjectIcon2,
|
|
530
|
-
title: `JSON for ${
|
|
552
|
+
title: `JSON for ${ellipsize3(hash ?? "", 8)}`,
|
|
531
553
|
dialogProps: {
|
|
532
554
|
fullWidth: true,
|
|
533
555
|
maxWidth: "md"
|
|
@@ -540,11 +562,14 @@ var TransactionActions = /* @__PURE__ */ __name(({ transaction, validationIconCo
|
|
|
540
562
|
}, "TransactionActions");
|
|
541
563
|
|
|
542
564
|
// src/components/transactions/card/Card.tsx
|
|
543
|
-
import { Card as Card2, CardContent as CardContent2, CardHeader as CardHeader2, Grid as Grid2, Link as Link2, Tooltip as Tooltip3, Typography as Typography2 } from "@mui/material";
|
|
565
|
+
import { Card as Card2, CardContent as CardContent2, CardHeader as CardHeader2, Grid as Grid2, Icon as Icon2, IconButton as IconButton2, Link as Link2, Tooltip as Tooltip3, Typography as Typography2 } from "@mui/material";
|
|
566
|
+
import { ellipsize as ellipsize4 } from "@xylabs/eth-address";
|
|
567
|
+
import { isDefined as isDefined5 } from "@xylabs/typeof";
|
|
544
568
|
import { BlockiesAvatarAddress as BlockiesAvatarAddress2 } from "@xyo-network/react-chain-blockies";
|
|
545
569
|
import { DetailsStack as DetailsStack2, LabelValueStack as LabelValueStack2 } from "@xyo-network/react-chain-shared";
|
|
546
570
|
import { useEvent as useEvent2 } from "@xyo-network/react-event";
|
|
547
571
|
import React9 from "react";
|
|
572
|
+
import { FaCopy as FaCopy2 } from "react-icons/fa";
|
|
548
573
|
import { GiReceiveMoney, GiSandsOfTime } from "react-icons/gi";
|
|
549
574
|
import { IoStatsChartOutline as IoStatsChartOutline2 } from "react-icons/io5";
|
|
550
575
|
|
|
@@ -593,6 +618,7 @@ var useTransactionDetails = /* @__PURE__ */ __name((wrapper) => {
|
|
|
593
618
|
// src/components/transactions/card/Card.tsx
|
|
594
619
|
var TransactionBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true, wrapper, ...props }) => {
|
|
595
620
|
if (!wrapper) return null;
|
|
621
|
+
const chainId = wrapper?.boundWitness.chain;
|
|
596
622
|
const { stats, fees, blockDuration } = useTransactionDetails(wrapper);
|
|
597
623
|
const [ref, dispatch] = useEvent2();
|
|
598
624
|
return /* @__PURE__ */ React9.createElement(Card2, {
|
|
@@ -613,6 +639,23 @@ var TransactionBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true
|
|
|
613
639
|
cursor: "pointer"
|
|
614
640
|
}
|
|
615
641
|
}, wrapper?.boundWitness.from) : wrapper?.boundWitness.from),
|
|
642
|
+
subheader: isDefined5(chainId) && /* @__PURE__ */ React9.createElement(Typography2, {
|
|
643
|
+
variant: "subtitle2",
|
|
644
|
+
sx: {
|
|
645
|
+
fontFamily: "monospace",
|
|
646
|
+
fontSize: 12,
|
|
647
|
+
opacity: 0.5,
|
|
648
|
+
mt: 0.25
|
|
649
|
+
},
|
|
650
|
+
title: `chain: ${chainId}`
|
|
651
|
+
}, ellipsize4(chainId, 8), /* @__PURE__ */ React9.createElement(IconButton2, {
|
|
652
|
+
size: "small",
|
|
653
|
+
onClick: /* @__PURE__ */ __name(() => void navigator.clipboard.writeText(chainId), "onClick")
|
|
654
|
+
}, /* @__PURE__ */ React9.createElement(Icon2, {
|
|
655
|
+
sx: {
|
|
656
|
+
fontSize: "0.7rem"
|
|
657
|
+
}
|
|
658
|
+
}, /* @__PURE__ */ React9.createElement(FaCopy2, null)))),
|
|
616
659
|
avatar: /* @__PURE__ */ React9.createElement(Tooltip3, {
|
|
617
660
|
title: `From Address - ${wrapper?.boundWitness.from}`
|
|
618
661
|
}, /* @__PURE__ */ React9.createElement(BlockiesAvatarAddress2, {
|
|
@@ -684,13 +727,13 @@ import { VscSymbolNamespace as VscSymbolNamespace3 } from "react-icons/vsc";
|
|
|
684
727
|
// src/components/transactions/hooks/usePayloadTypes.ts
|
|
685
728
|
import { isHash } from "@xylabs/hex";
|
|
686
729
|
import { usePromise as usePromise5 } from "@xylabs/react-promise";
|
|
687
|
-
import { isDefined as
|
|
730
|
+
import { isDefined as isDefined6 } from "@xylabs/typeof";
|
|
688
731
|
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
689
732
|
import { isSchema } from "@xyo-network/payload-model";
|
|
690
733
|
import { useMemo as useMemo6, useState } from "react";
|
|
691
734
|
var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
|
|
692
735
|
const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise5(async () => {
|
|
693
|
-
if (
|
|
736
|
+
if (isDefined6(wrapper)) {
|
|
694
737
|
const elevatedPayloads = wrapper.elevatedPayloads;
|
|
695
738
|
const pairs = await PayloadBuilder2.hashPairs(elevatedPayloads);
|
|
696
739
|
return formatPayloadsForTable(pairs);
|
|
@@ -704,7 +747,7 @@ var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
|
|
|
704
747
|
wrapper
|
|
705
748
|
]);
|
|
706
749
|
const [publicPayloads, publicPayloadsError] = usePromise5(async () => {
|
|
707
|
-
if (
|
|
750
|
+
if (isDefined6(wrapper)) {
|
|
708
751
|
const publicPayloads2 = wrapper.publicExternalPayloads;
|
|
709
752
|
const pairs = await PayloadBuilder2.hashPairs(publicPayloads2);
|
|
710
753
|
return formatPayloadsForTable(pairs);
|
|
@@ -723,7 +766,7 @@ var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
|
|
|
723
766
|
hashes: [],
|
|
724
767
|
schemas: []
|
|
725
768
|
};
|
|
726
|
-
if (
|
|
769
|
+
if (isDefined6(wrapper)) {
|
|
727
770
|
const referencedPayloads2 = wrapper.privateExternalPayloads;
|
|
728
771
|
for (const [hash, schema] of Object.entries(referencedPayloads2)) {
|
|
729
772
|
let resolved = false;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatNumber.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/PayloadTable.tsx","../../src/components/block/card/actions/BlockBoundWitnessActions.tsx","../../src/components/block/card/actions/BlockBoundWitnessVerification.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/actions/TransactionActions.tsx","../../src/components/transactions/card/actions/TransactionVerification.tsx","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionBoundWitnessDetails.tsx","../../src/components/transactions/hooks/usePayloadTypes.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport { ErrorRender } from '@xylabs/react-error'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport type { EventNoun } from '@xyo-network/react-event'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { HydratedBlock, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { GrTransaction } from 'react-icons/gr'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { TransactionBoundWitnessEvents } from '../../types/index.ts'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { BlockBoundWitnessActions, BlockBoundWitnessCard } from './card/index.ts'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: HydratedBlock\n viewer?: XyoViewer\n}\n\nexport const BlockBoundWitnessDetails = ({\n block, paper, viewer, children, ...props\n}: BoundWitnessDetailsProps) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (block) {\n return await HydratedBlockWrapper.parse(block)\n }\n }, [block])\n\n const boundWitness = block?.[0]\n const payloads = block?.[1]\n\n const hash = usePayloadHash(boundWitness)\n\n const [transactions, txFromBlockError] = useTxsFromBlock(block)\n\n const { hashes: txHashes, schemas: txSchemas } = useMemo(() => formatPayloadsForTable(transactions ?? []), [transactions])\n\n const [nonTxBoundWitnesses, bwsFromBlockError] = usePromise(async () => {\n const bws = filterAs(payloads ?? [], payload =>\n (!isTransactionBoundWitness(payload) && isBoundWitness(payload)) ? payload : undefined)\n return await PayloadBuilder.hashPairs(bws)\n }, [payloads])\n\n const { hashes: nonTxBwHashes, schemas: nonTxBwSchemas } = useMemo(() => formatPayloadsForTable(nonTxBoundWitnesses ?? []), [nonTxBoundWitnesses])\n const hasNonTxBoundWitnesses = (nonTxBoundWitnesses?.length ?? 0) > 0\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={4} {...props}>\n <ErrorRender error={txFromBlockError ?? bwsFromBlockError} scope=\"BlockBoundWitnessDetails.tsx\" />\n <ErrorRender error={wrapperError} scope=\"BlockBoundWitnessDetails.tsx:wrapperError\" />\n <HashHeadingPaper\n hash={hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BlockBoundWitnessActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0 && (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\n clickableFields={['hash']}\n hashes={txHashes}\n headingTitle=\"Transactions\"\n schemas={txSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<VscSymbolNamespace />} heading=\"Payloads\" />\n <BoundWitnessPayloadsTable boundwitness={boundWitness} eventNoun=\"payload\" clickableFields={['hash']} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<EventNoun>\n IconComponent={<VscSymbolMethod />}\n eventNoun=\"boundwitness\"\n hashes={nonTxBwHashes}\n headingTitle=\"Bound Witnesses\"\n schemas={nonTxBwSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport { bigIntToFixedPointString } from '@xyo-network/chain-utils'\n\nexport const formatFee = (fee?: bigint) => {\n if (isUndefined(fee)) return 'N/A'\n const stringValue = bigIntToFixedPointString(fee, 12)\n if (stringValue === '0') return stringValue\n return stringValue\n}\n","export const formatNumber = (num: number | bigint): string => {\n return num.toLocaleString(navigator.language ?? 'en-US')\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n let hashes: Hash[] = []\n let schemas: string[] = []\n for (const [bw, hash] of pairs ?? []) {\n hashes.push(hash)\n schemas.push(bw?.schema ?? '')\n }\n return { hashes, schemas }\n}\n","export const formatResults = (results: Record<string, string>) => {\n const result = { labels: [] as string[], values: [] as string[] }\n for (const [label, value] of Object.entries(results)) {\n result.labels.push(label)\n result.values.push(value)\n }\n return result\n}\n","import { InfoOutline } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { Hash } from '@xylabs/hex'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { EventNoun, ExtendEventNoun } from '@xyo-network/react-event'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\nimport { VscSymbolMethod } from 'react-icons/vsc'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n tooltip?: string\n}\n\nexport const PayloadTableFlexbox = <TNoun extends ExtendEventNoun<string> = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields,\n tooltip,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutline fontSize=\"small\" sx={{ py: 2, px: 1 }} />\n </Tooltip>\n )\n : null}\n IconComponent={resolvedIconComponent}\n heading={headingTitle}\n />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\n )\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { BlockBoundWitnessVerification } from './BlockBoundWitnessVerification.tsx'\n\nexport interface BlockBoundWitnessActionsProps extends FlexBoxProps {\n boundwitness?: BoundWitness\n validationIconColors?: boolean\n}\n\nexport const BlockBoundWitnessActions: React.FC<BlockBoundWitnessActionsProps> = ({\n boundwitness,\n validationIconColors = false,\n ...props\n}) => {\n const hash = usePayloadHash(boundwitness)\n\n return (\n <FlexRow {...props}>\n {boundwitness?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={boundwitness} />}\n <BlockBoundWitnessVerification iconColors={validationIconColors} block={boundwitness} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{boundwitness ? JSON.stringify(boundwitness, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport type { BlockValidationError } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface BWVerification extends QuickTipButtonProps {\n block?: BoundWitness\n iconColors?: boolean\n}\n\nexport const BlockBoundWitnessVerification: React.FC<BWVerification> = ({ block, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(block)) {\n const resolvedBlock = assertEx(isBlockBoundWitness(block) ? block : undefined, () => 'Block must be a BlockBoundWitness')\n return await validateBlock(resolvedBlock)\n }\n }, [block])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | BlockValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Block\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, Grid,\n Skeleton,\n Stack,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GrSteps } from 'react-icons/gr'\nimport { IoStatsChartOutline } from 'react-icons/io5'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { BlockBoundWitnessCardHeader } from './CardHeader.tsx'\nimport { useBlockDetails } from './hooks/index.ts'\n\nexport interface BlockBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n viewer?: XyoViewer\n wrapper?: HydratedBlockInstance\n}\n\nexport const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({\n linkedAddress = true, viewer, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => <BlockBoundWitnessCardHeader key={address} address={address} linked={linkedAddress} />)}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack gap={0.25}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/hex'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({ linked = true, address }) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n avatar={(\n <Tooltip title={`Address - ${address}`}>\n <BlockiesAvatarAddress\n address={address}\n onClick={() => dispatch('address', 'click', address)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StepSizes, type XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatNumber, formatResults } from '../../../../lib/index.ts'\n\nconst generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {\n const stepSize = StepSizes[stepHashIndex]\n const stepStart = blockNumber - stepSize + 1\n const stepStop = blockNumber\n\n return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]\n}\n\nexport const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n Protocol: wrapper.boundWitness.protocol.toString(),\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: wrapper.boundWitness.$epoch.toString(),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n const payloads = {\n 'Transactions': formatNumber(wrapper.transactionCount),\n 'Total Payloads': formatNumber(wrapper.payloadCount),\n }\n\n return formatResults(payloads)\n }, [wrapper])\n\n const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {\n if (viewer) {\n const stepHashes: Record<string, string> = {}\n for (const [index, hash] of wrapper.boundWitness.step_hashes.entries()) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n stepHashes[`Step ${index}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n const [label, value] = generateStepHashText(blockNumber, index)\n stepHashes[label] = value\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n stepHashes[`Step ${index}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n }\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport { TransactionVerification } from './TransactionVerification.tsx'\n\nexport interface TransactionActionsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n validationIconColors?: boolean\n}\n\nexport const TransactionActions: React.FC<TransactionActionsProps> = ({\n transaction,\n validationIconColors = false,\n ...props\n}) => {\n const txBw = transaction?.[0]\n const hash = usePayloadHash(txBw)\n return (\n <FlexRow {...props}>\n {txBw?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={txBw} />}\n <TransactionVerification iconColors={validationIconColors} transaction={transaction} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{transaction ? JSON.stringify(transaction, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isSignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface TxVerification extends QuickTipButtonProps {\n iconColors?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(transaction)) {\n const resolvedTransaction = assertEx(isSignedHydratedTransactionWithStorageMeta(transaction)\n ? transaction\n : undefined, () => 'Transaction must be a SignedHydratedTransactionWithStorageMeta')\n return await validateTransaction(resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Link, Tooltip, Typography,\n} from '@mui/material'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n avatar={(\n <Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>\n <BlockiesAvatarAddress\n address={wrapper?.boundWitness.from}\n onClick={() => dispatch('address', 'click', wrapper.boundWitness.from)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiReceiveMoney} heading=\"Fees\" tooltipTitle=\"Fees offered to the producer\">\n <LabelValueStack labels={fees.labels} values={fees.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiSandsOfTime} heading=\"Block Duration\" tooltipTitle=\"Block window for the transaction to be valid\">\n <LabelValueStack labels={blockDuration.labels} values={blockDuration.values} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {\n const stats = useMemo(() => {\n const stats = {\n 'Reward': formatNumber(wrapper.reward()),\n 'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),\n 'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),\n 'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),\n 'Signatures': formatNumber(wrapper.signatureCount),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const fees = useMemo(() => {\n const fees = {\n 'Base': formatFee(wrapper.fees.base),\n 'Gas': formatFee(wrapper.fees.gasPrice),\n 'Priority': formatFee(wrapper.fees.priority),\n 'Gas Limit': formatFee(wrapper.fees.gasLimit),\n }\n\n return formatResults(fees)\n }, [wrapper])\n\n const blockDuration = useMemo(() => {\n const blockDuration = {\n 'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),\n 'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),\n }\n\n return formatResults(blockDuration)\n }, [wrapper])\n\n return {\n stats, fees, blockDuration,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionActions, TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst nonClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await HydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas, referencedPayloadsError,\n } = useTransactionPayloadTypes(wrapper)\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <ErrorRender error={wrapperError} scope=\"wrapperError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={elevatedPayloadSetsError} scope=\"elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={publicPayloadsError} scope=\"publicPayloadsError:TransactionBoundWitnessDetails.tsx\" />\n {referencedPayloadsError.map((error, index) =>\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <ErrorRender key={index} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payloads included in the transaction that are elevated and validated.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"On Chain Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(publicPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Public payloads included in the transaction.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={publicPayloadHashes}\n headingTitle=\"Public Payloads\"\n schemas={publicPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n {(referencedPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n // TODO - bring back once the hashes can be searched via datalake\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n clickableFields={nonClickableFields}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { isSchema } from '@xyo-network/payload-model'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo, useState } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance) => {\n const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [publicPayloads, publicPayloadsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const publicPayloads = wrapper.publicExternalPayloads\n const pairs = await PayloadBuilder.hashPairs(publicPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [referencedPayloadsError, setReferencedPayloadsError] = useState<Error[]>([])\n const referencedPayloads = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n let resolved = false\n if (isHash(hash)) {\n ret.hashes.push(hash)\n resolved = true\n }\n if (isSchema(schema)) {\n ret.schemas.push(schema)\n resolved = true\n }\n if (!resolved) {\n setReferencedPayloadsError(prev => [...prev, new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)])\n }\n }\n return ret\n } else {\n return ret\n }\n }, [wrapper, elevatedPayloadSets])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}\n const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}\n\n return {\n elevatedPayloadHashes,\n elevatedPayloadSchemas,\n elevatedPayloadSetsError,\n publicPayloadHashes,\n publicPayloadSchemas,\n publicPayloadsError,\n referencedPayloadHashes,\n referencedPayloadSchemas,\n referencedPayloadsError,\n }\n}\n"],"mappings":"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","names":["filterAs","ErrorRender","FlexCol","usePromise","isBoundWitness","HydratedBlockWrapper","PayloadBuilder","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","useTxsFromBlock","usePayloadHash","isTransactionBoundWitness","React","useMemo","FaSignature","GrTransaction","VscSymbolMethod","VscSymbolNamespace","isUndefined","bigIntToFixedPointString","formatFee","fee","isUndefined","stringValue","bigIntToFixedPointString","formatNumber","num","toLocaleString","navigator","language","formatPayloadsForTable","pairs","hashes","schemas","bw","hash","push","schema","formatResults","results","result","labels","values","label","value","Object","entries","push","InfoOutline","Tooltip","FlexCol","isDefined","BoundWitnessPayloadTableBody","BoundWitnessPayloadTableHead","HeadingPaper","TableEx","React","VscSymbolMethod","PayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","clickableFields","tooltip","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","AdornmentEnd","isDefined","Tooltip","title","InfoOutline","fontSize","sx","py","px","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","DataObject","DataObjectIcon","ellipsize","FlexRow","QuickTipButton","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","assertEx","ErrorQuickTipButton","usePromise","isDefined","validateBlock","isBlockBoundWitness","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","BlockBoundWitnessVerification","block","validationErrors","validateError","usePromise","isDefined","resolvedBlock","assertEx","isBlockBoundWitness","undefined","validateBlock","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","BlockBoundWitnessActions","boundwitness","validationIconColors","props","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","BlockBoundWitnessVerification","iconColors","block","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","Grid","Skeleton","Stack","ErrorRender","DetailsStack","LabelValueStack","React","GrSteps","IoStatsChartOutline","VscSymbolNamespace","CardHeader","Link","Tooltip","Typography","BlockiesAvatarAddress","useEvent","React","BlockBoundWitnessCardHeader","linked","address","ref","dispatch","useEvent","React","CardHeader","title","Typography","onClick","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","avatar","Tooltip","BlockiesAvatarAddress","size","usePromise","StepSizes","useMemo","generateStepHashText","blockNumber","stepHashIndex","stepSize","StepSizes","stepStart","stepStop","formatNumber","useBlockDetails","wrapper","viewer","stats","useMemo","Height","boundWitness","block","Protocol","protocol","toString","Signatures","signatureCount","$epoch","formatResults","payloads","transactionCount","payloadCount","stepHashes","stepHashesError","stepHashesLoading","usePromise","index","hash","step_hashes","entries","blockByHash","console","warn","label","value","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","stepHashesLoading","useBlockDetails","React","Card","boundWitness","addresses","map","address","BlockBoundWitnessCardHeader","key","linked","ErrorRender","error","scope","CardContent","Grid","container","spacing","sx","width","size","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","VscSymbolNamespace","GrSteps","Stack","gap","Skeleton","variant","height","BlockBoundWitnessDetails","block","paper","viewer","children","props","wrapper","wrapperError","usePromise","HydratedBlockWrapper","parse","boundWitness","payloads","hash","usePayloadHash","transactions","txFromBlockError","useTxsFromBlock","hashes","txHashes","schemas","txSchemas","useMemo","formatPayloadsForTable","nonTxBoundWitnesses","bwsFromBlockError","bws","filterAs","payload","isTransactionBoundWitness","isBoundWitness","undefined","PayloadBuilder","hashPairs","nonTxBwHashes","nonTxBwSchemas","hasNonTxBoundWitnesses","length","React","FlexCol","alignItems","rowGap","ErrorRender","error","scope","HashHeadingPaper","paperProps","sx","p","AdornmentEnd","BlockBoundWitnessActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","PayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","clickableFields","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","DataObject","DataObjectIcon","ellipsize","FlexRow","QuickTipButton","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","assertEx","ErrorQuickTipButton","usePromise","isDefined","isSignedHydratedTransactionWithStorageMeta","validateTransaction","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","TransactionVerification","transaction","validationErrors","validateError","usePromise","isDefined","resolvedTransaction","assertEx","isSignedHydratedTransactionWithStorageMeta","undefined","validateTransaction","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","TransactionActions","transaction","validationIconColors","props","txBw","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","boundwitness","TransactionVerification","iconColors","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","CardHeader","Grid","Link","Tooltip","Typography","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","React","GiReceiveMoney","GiSandsOfTime","IoStatsChartOutline","useMemo","useTransactionDetails","wrapper","stats","useMemo","formatNumber","reward","elevatedPayloadCount","Object","values","publicExternalPayloads","length","entries","privateExternalPayloads","signatureCount","formatResults","fees","formatFee","base","gasPrice","priority","gasLimit","blockDuration","boundWitness","exp","toLocaleString","navigator","language","nbf","TransactionBoundWitnessCard","linkedAddress","wrapper","props","stats","fees","blockDuration","useTransactionDetails","ref","dispatch","useEvent","React","Card","CardHeader","title","Typography","onClick","boundWitness","from","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","avatar","Tooltip","BlockiesAvatarAddress","address","size","CardContent","Grid","container","spacing","width","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","GiReceiveMoney","GiSandsOfTime","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","HydratedTransactionWrapper","React","FaSignature","VscSymbolNamespace","isHash","usePromise","isDefined","PayloadBuilder","isSchema","useMemo","useState","useTransactionPayloadTypes","wrapper","elevatedPayloadSets","elevatedPayloadSetsError","usePromise","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","publicPayloads","publicPayloadsError","publicExternalPayloads","referencedPayloadsError","setReferencedPayloadsError","useState","referencedPayloads","useMemo","ret","privateExternalPayloads","hash","schema","Object","entries","resolved","isHash","push","isSchema","prev","Error","elevatedPayloadHashes","elevatedPayloadSchemas","publicPayloadHashes","publicPayloadSchemas","referencedPayloadHashes","referencedPayloadSchemas","nonClickableFields","TransactionBoundWitnessDetails","transaction","props","wrapper","wrapperError","usePromise","HydratedTransactionWrapper","parse","elevatedPayloadHashes","elevatedPayloadSchemas","elevatedPayloadSetsError","publicPayloadHashes","publicPayloadSchemas","publicPayloadsError","referencedPayloadHashes","referencedPayloadSchemas","referencedPayloadsError","useTransactionPayloadTypes","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","TransactionActions","identiconProps","size","ErrorRender","error","scope","map","index","key","TransactionBoundWitnessCard","elevation","PayloadTableFlexbox","eventNoun","clickableFields","tooltip","IconComponent","VscSymbolNamespace","hashes","headingTitle","schemas","mb","length","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatNumber.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/PayloadTable.tsx","../../src/components/block/card/actions/BlockBoundWitnessActions.tsx","../../src/components/block/card/actions/BlockBoundWitnessVerification.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/actions/TransactionActions.tsx","../../src/components/transactions/card/actions/TransactionVerification.tsx","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionBoundWitnessDetails.tsx","../../src/components/transactions/hooks/usePayloadTypes.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport { ErrorRender } from '@xylabs/react-error'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport type { EventNoun } from '@xyo-network/react-event'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { HydratedBlock, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { GrTransaction } from 'react-icons/gr'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { TransactionBoundWitnessEvents } from '../../types/index.ts'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { BlockBoundWitnessActions, BlockBoundWitnessCard } from './card/index.ts'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: HydratedBlock\n viewer?: XyoViewer\n}\n\nexport const BlockBoundWitnessDetails = ({\n block, paper, viewer, children, ...props\n}: BoundWitnessDetailsProps) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (block) {\n return await HydratedBlockWrapper.parse(block)\n }\n }, [block])\n\n const boundWitness = block?.[0]\n const payloads = block?.[1]\n\n const hash = usePayloadHash(boundWitness)\n\n const [transactions, txFromBlockError] = useTxsFromBlock(block)\n\n const { hashes: txHashes, schemas: txSchemas } = useMemo(() => formatPayloadsForTable(transactions ?? []), [transactions])\n\n const [nonTxBoundWitnesses, bwsFromBlockError] = usePromise(async () => {\n const bws = filterAs(payloads ?? [], payload =>\n (!isTransactionBoundWitness(payload) && isBoundWitness(payload)) ? payload : undefined)\n return await PayloadBuilder.hashPairs(bws)\n }, [payloads])\n\n const { hashes: nonTxBwHashes, schemas: nonTxBwSchemas } = useMemo(() => formatPayloadsForTable(nonTxBoundWitnesses ?? []), [nonTxBoundWitnesses])\n const hasNonTxBoundWitnesses = (nonTxBoundWitnesses?.length ?? 0) > 0\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={4} {...props}>\n <ErrorRender error={txFromBlockError ?? bwsFromBlockError} scope=\"BlockBoundWitnessDetails.tsx\" />\n <ErrorRender error={wrapperError} scope=\"BlockBoundWitnessDetails.tsx:wrapperError\" />\n <HashHeadingPaper\n hash={hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BlockBoundWitnessActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0 && (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\n clickableFields={['hash']}\n hashes={txHashes}\n headingTitle=\"Transactions\"\n schemas={txSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<VscSymbolNamespace />} heading=\"Payloads\" />\n <BoundWitnessPayloadsTable boundwitness={boundWitness} eventNoun=\"payload\" clickableFields={['hash']} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<EventNoun>\n IconComponent={<VscSymbolMethod />}\n eventNoun=\"boundwitness\"\n hashes={nonTxBwHashes}\n headingTitle=\"Bound Witnesses\"\n schemas={nonTxBwSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport { bigIntToFixedPointString } from '@xyo-network/chain-utils'\n\nexport const formatFee = (fee?: bigint) => {\n if (isUndefined(fee)) return 'N/A'\n const stringValue = bigIntToFixedPointString(fee, 12)\n if (stringValue === '0') return stringValue\n return stringValue\n}\n","export const formatNumber = (num: number | bigint): string => {\n return num.toLocaleString(navigator.language ?? 'en-US')\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n let hashes: Hash[] = []\n let schemas: string[] = []\n for (const [bw, hash] of pairs ?? []) {\n hashes.push(hash)\n schemas.push(bw?.schema ?? '')\n }\n return { hashes, schemas }\n}\n","export const formatResults = (results: Record<string, string>) => {\n const result = { labels: [] as string[], values: [] as string[] }\n for (const [label, value] of Object.entries(results)) {\n result.labels.push(label)\n result.values.push(value)\n }\n return result\n}\n","import { InfoOutline } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { Hash } from '@xylabs/hex'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { EventNoun, ExtendEventNoun } from '@xyo-network/react-event'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\nimport { VscSymbolMethod } from 'react-icons/vsc'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n tooltip?: string\n}\n\nexport const PayloadTableFlexbox = <TNoun extends ExtendEventNoun<string> = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields,\n tooltip,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutline fontSize=\"small\" sx={{ py: 2, px: 1 }} />\n </Tooltip>\n )\n : null}\n IconComponent={resolvedIconComponent}\n heading={headingTitle}\n />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\n )\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { BlockBoundWitnessVerification } from './BlockBoundWitnessVerification.tsx'\n\nexport interface BlockBoundWitnessActionsProps extends FlexBoxProps {\n boundwitness?: BoundWitness\n validationIconColors?: boolean\n}\n\nexport const BlockBoundWitnessActions: React.FC<BlockBoundWitnessActionsProps> = ({\n boundwitness,\n validationIconColors = false,\n ...props\n}) => {\n const hash = usePayloadHash(boundwitness)\n\n return (\n <FlexRow {...props}>\n {boundwitness?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={boundwitness} />}\n <BlockBoundWitnessVerification iconColors={validationIconColors} block={boundwitness} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{boundwitness ? JSON.stringify(boundwitness, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport type { BlockValidationError } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface BWVerification extends QuickTipButtonProps {\n block?: BoundWitness\n iconColors?: boolean\n}\n\nexport const BlockBoundWitnessVerification: React.FC<BWVerification> = ({ block, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(block)) {\n const resolvedBlock = assertEx(isBlockBoundWitness(block) ? block : undefined, () => 'Block must be a BlockBoundWitness')\n return await validateBlock(resolvedBlock)\n }\n }, [block])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | BlockValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Block\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, Grid,\n Skeleton,\n Stack,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GrSteps } from 'react-icons/gr'\nimport { IoStatsChartOutline } from 'react-icons/io5'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { BlockBoundWitnessCardHeader } from './CardHeader.tsx'\nimport { useBlockDetails } from './hooks/index.ts'\n\nexport interface BlockBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n viewer?: XyoViewer\n wrapper?: HydratedBlockInstance\n}\n\nexport const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({\n linkedAddress = true, viewer, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => (\n <BlockBoundWitnessCardHeader\n key={address}\n address={address}\n linked={linkedAddress}\n chainId={wrapper.boundWitness.chain}\n />\n ))}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Block Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack gap={0.25}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Icon, IconButton, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { Address } from '@xylabs/hex'\nimport { isDefined } from '@xylabs/typeof'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { Chain } from '@xyo-network/xl1-protocol'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n chainId?: Chain\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({\n linked = true, address, chainId,\n}) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n subheader={isDefined(chainId) && (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )}\n avatar={(\n <Tooltip title={`Address - ${address}`}>\n <BlockiesAvatarAddress\n address={address}\n onClick={() => dispatch('address', 'click', address)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StepSizes, type XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatNumber, formatResults } from '../../../../lib/index.ts'\n\nconst generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {\n const stepSize = StepSizes[stepHashIndex]\n const stepStart = blockNumber - stepSize + 1\n const stepStop = blockNumber\n\n return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]\n}\n\nexport const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n const epochDate = new Date(wrapper.boundWitness.$epoch)\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n Protocol: wrapper.boundWitness.protocol.toString(),\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`,\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n const payloads = {\n 'Transactions': formatNumber(wrapper.transactionCount),\n 'Total Payloads': formatNumber(wrapper.payloadCount),\n }\n\n return formatResults(payloads)\n }, [wrapper])\n\n const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {\n if (viewer) {\n const stepHashes: Record<string, string> = {}\n for (const [index, hash] of wrapper.boundWitness.step_hashes.entries()) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n stepHashes[`Step ${index}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n const [label, value] = generateStepHashText(blockNumber, index)\n stepHashes[label] = value\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n stepHashes[`Step ${index}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n }\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport { TransactionVerification } from './TransactionVerification.tsx'\n\nexport interface TransactionActionsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n validationIconColors?: boolean\n}\n\nexport const TransactionActions: React.FC<TransactionActionsProps> = ({\n transaction,\n validationIconColors = false,\n ...props\n}) => {\n const txBw = transaction?.[0]\n const hash = usePayloadHash(txBw)\n return (\n <FlexRow {...props}>\n {txBw?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={txBw} />}\n <TransactionVerification iconColors={validationIconColors} transaction={transaction} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{transaction ? JSON.stringify(transaction, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isSignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface TxVerification extends QuickTipButtonProps {\n iconColors?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(transaction)) {\n const resolvedTransaction = assertEx(isSignedHydratedTransactionWithStorageMeta(transaction)\n ? transaction\n : undefined, () => 'Transaction must be a SignedHydratedTransactionWithStorageMeta')\n return await validateTransaction(resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,\n} from '@mui/material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport { isDefined } from '@xylabs/typeof'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const chainId = wrapper?.boundWitness.chain\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n subheader={isDefined(chainId) && (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )}\n avatar={(\n <Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>\n <BlockiesAvatarAddress\n address={wrapper?.boundWitness.from}\n onClick={() => dispatch('address', 'click', wrapper.boundWitness.from)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiReceiveMoney} heading=\"Fees\" tooltipTitle=\"Fees offered to the producer\">\n <LabelValueStack labels={fees.labels} values={fees.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiSandsOfTime} heading=\"Block Duration\" tooltipTitle=\"Block window for the transaction to be valid\">\n <LabelValueStack labels={blockDuration.labels} values={blockDuration.values} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {\n const stats = useMemo(() => {\n const stats = {\n 'Reward': formatNumber(wrapper.reward()),\n 'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),\n 'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),\n 'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),\n 'Signatures': formatNumber(wrapper.signatureCount),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const fees = useMemo(() => {\n const fees = {\n 'Base': formatFee(wrapper.fees.base),\n 'Gas': formatFee(wrapper.fees.gasPrice),\n 'Priority': formatFee(wrapper.fees.priority),\n 'Gas Limit': formatFee(wrapper.fees.gasLimit),\n }\n\n return formatResults(fees)\n }, [wrapper])\n\n const blockDuration = useMemo(() => {\n const blockDuration = {\n 'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),\n 'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),\n }\n\n return formatResults(blockDuration)\n }, [wrapper])\n\n return {\n stats, fees, blockDuration,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionActions, TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst nonClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await HydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas, referencedPayloadsError,\n } = useTransactionPayloadTypes(wrapper)\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <ErrorRender error={wrapperError} scope=\"wrapperError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={elevatedPayloadSetsError} scope=\"elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={publicPayloadsError} scope=\"publicPayloadsError:TransactionBoundWitnessDetails.tsx\" />\n {referencedPayloadsError.map((error, index) =>\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <ErrorRender key={index} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payloads included in the transaction that are elevated and validated.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"On Chain Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(publicPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Public payloads included in the transaction.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={publicPayloadHashes}\n headingTitle=\"Public Payloads\"\n schemas={publicPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n {(referencedPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n // TODO - bring back once the hashes can be searched via datalake\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n clickableFields={nonClickableFields}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { isSchema } from '@xyo-network/payload-model'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo, useState } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance) => {\n const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [publicPayloads, publicPayloadsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const publicPayloads = wrapper.publicExternalPayloads\n const pairs = await PayloadBuilder.hashPairs(publicPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [referencedPayloadsError, setReferencedPayloadsError] = useState<Error[]>([])\n const referencedPayloads = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n let resolved = false\n if (isHash(hash)) {\n ret.hashes.push(hash)\n resolved = true\n }\n if (isSchema(schema)) {\n ret.schemas.push(schema)\n resolved = true\n }\n if (!resolved) {\n setReferencedPayloadsError(prev => [...prev, new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)])\n }\n }\n return ret\n } else {\n return ret\n }\n }, [wrapper, elevatedPayloadSets])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}\n const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}\n\n return {\n elevatedPayloadHashes,\n elevatedPayloadSchemas,\n elevatedPayloadSetsError,\n publicPayloadHashes,\n publicPayloadSchemas,\n publicPayloadsError,\n referencedPayloadHashes,\n referencedPayloadSchemas,\n referencedPayloadsError,\n }\n}\n"],"mappings":"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","names":["filterAs","ErrorRender","FlexCol","usePromise","isBoundWitness","HydratedBlockWrapper","PayloadBuilder","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","useTxsFromBlock","usePayloadHash","isTransactionBoundWitness","React","useMemo","FaSignature","GrTransaction","VscSymbolMethod","VscSymbolNamespace","isUndefined","bigIntToFixedPointString","formatFee","fee","isUndefined","stringValue","bigIntToFixedPointString","formatNumber","num","toLocaleString","navigator","language","formatPayloadsForTable","pairs","hashes","schemas","bw","hash","push","schema","formatResults","results","result","labels","values","label","value","Object","entries","push","InfoOutline","Tooltip","FlexCol","isDefined","BoundWitnessPayloadTableBody","BoundWitnessPayloadTableHead","HeadingPaper","TableEx","React","VscSymbolMethod","PayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","clickableFields","tooltip","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","AdornmentEnd","isDefined","Tooltip","title","InfoOutline","fontSize","sx","py","px","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","DataObject","DataObjectIcon","ellipsize","FlexRow","QuickTipButton","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","assertEx","ErrorQuickTipButton","usePromise","isDefined","validateBlock","isBlockBoundWitness","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","BlockBoundWitnessVerification","block","validationErrors","validateError","usePromise","isDefined","resolvedBlock","assertEx","isBlockBoundWitness","undefined","validateBlock","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","BlockBoundWitnessActions","boundwitness","validationIconColors","props","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","BlockBoundWitnessVerification","iconColors","block","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","Grid","Skeleton","Stack","ErrorRender","DetailsStack","LabelValueStack","React","GrSteps","IoStatsChartOutline","VscSymbolNamespace","CardHeader","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","BlockiesAvatarAddress","useEvent","React","FaCopy","BlockBoundWitnessCardHeader","linked","address","chainId","ref","dispatch","useEvent","React","CardHeader","title","Typography","onClick","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","usePromise","StepSizes","useMemo","generateStepHashText","blockNumber","stepHashIndex","stepSize","StepSizes","stepStart","stepStop","formatNumber","useBlockDetails","wrapper","viewer","stats","useMemo","epochDate","Date","boundWitness","$epoch","Height","block","Protocol","protocol","toString","Signatures","signatureCount","toLocaleDateString","toLocaleTimeString","formatResults","payloads","transactionCount","payloadCount","stepHashes","stepHashesError","stepHashesLoading","usePromise","index","hash","step_hashes","entries","blockByHash","console","warn","label","value","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","stepHashesLoading","useBlockDetails","React","Card","boundWitness","addresses","map","address","BlockBoundWitnessCardHeader","key","linked","chainId","chain","ErrorRender","error","scope","CardContent","Grid","container","spacing","sx","width","size","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","VscSymbolNamespace","GrSteps","Stack","gap","Skeleton","variant","height","BlockBoundWitnessDetails","block","paper","viewer","children","props","wrapper","wrapperError","usePromise","HydratedBlockWrapper","parse","boundWitness","payloads","hash","usePayloadHash","transactions","txFromBlockError","useTxsFromBlock","hashes","txHashes","schemas","txSchemas","useMemo","formatPayloadsForTable","nonTxBoundWitnesses","bwsFromBlockError","bws","filterAs","payload","isTransactionBoundWitness","isBoundWitness","undefined","PayloadBuilder","hashPairs","nonTxBwHashes","nonTxBwSchemas","hasNonTxBoundWitnesses","length","React","FlexCol","alignItems","rowGap","ErrorRender","error","scope","HashHeadingPaper","paperProps","sx","p","AdornmentEnd","BlockBoundWitnessActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","PayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","clickableFields","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","DataObject","DataObjectIcon","ellipsize","FlexRow","QuickTipButton","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","assertEx","ErrorQuickTipButton","usePromise","isDefined","isSignedHydratedTransactionWithStorageMeta","validateTransaction","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","TransactionVerification","transaction","validationErrors","validateError","usePromise","isDefined","resolvedTransaction","assertEx","isSignedHydratedTransactionWithStorageMeta","undefined","validateTransaction","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","TransactionActions","transaction","validationIconColors","props","txBw","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","boundwitness","TransactionVerification","iconColors","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","CardHeader","Grid","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","React","FaCopy","GiReceiveMoney","GiSandsOfTime","IoStatsChartOutline","useMemo","useTransactionDetails","wrapper","stats","useMemo","formatNumber","reward","elevatedPayloadCount","Object","values","publicExternalPayloads","length","entries","privateExternalPayloads","signatureCount","formatResults","fees","formatFee","base","gasPrice","priority","gasLimit","blockDuration","boundWitness","exp","toLocaleString","navigator","language","nbf","TransactionBoundWitnessCard","linkedAddress","wrapper","props","chainId","boundWitness","chain","stats","fees","blockDuration","useTransactionDetails","ref","dispatch","useEvent","React","Card","CardHeader","title","Typography","onClick","from","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","address","CardContent","Grid","container","spacing","width","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","GiReceiveMoney","GiSandsOfTime","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","HydratedTransactionWrapper","React","FaSignature","VscSymbolNamespace","isHash","usePromise","isDefined","PayloadBuilder","isSchema","useMemo","useState","useTransactionPayloadTypes","wrapper","elevatedPayloadSets","elevatedPayloadSetsError","usePromise","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","publicPayloads","publicPayloadsError","publicExternalPayloads","referencedPayloadsError","setReferencedPayloadsError","useState","referencedPayloads","useMemo","ret","privateExternalPayloads","hash","schema","Object","entries","resolved","isHash","push","isSchema","prev","Error","elevatedPayloadHashes","elevatedPayloadSchemas","publicPayloadHashes","publicPayloadSchemas","referencedPayloadHashes","referencedPayloadSchemas","nonClickableFields","TransactionBoundWitnessDetails","transaction","props","wrapper","wrapperError","usePromise","HydratedTransactionWrapper","parse","elevatedPayloadHashes","elevatedPayloadSchemas","elevatedPayloadSetsError","publicPayloadHashes","publicPayloadSchemas","publicPayloadsError","referencedPayloadHashes","referencedPayloadSchemas","referencedPayloadsError","useTransactionPayloadTypes","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","TransactionActions","identiconProps","size","ErrorRender","error","scope","map","index","key","TransactionBoundWitnessCard","elevation","PayloadTableFlexbox","eventNoun","clickableFields","tooltip","IconComponent","VscSymbolNamespace","hashes","headingTitle","schemas","mb","length","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "http://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@xyo-network/react-chain-boundwitness",
|
|
4
|
-
"version": "1.14.
|
|
4
|
+
"version": "1.14.2",
|
|
5
5
|
"description": "XYO Layer One React SDK BoundWitness",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -51,38 +51,38 @@
|
|
|
51
51
|
"@xylabs/react-quick-tip-button": "~7.0.4",
|
|
52
52
|
"@xylabs/typeof": "~5.0.11",
|
|
53
53
|
"@xyo-network/boundwitness-model": "~5.1.0",
|
|
54
|
-
"@xyo-network/chain-utils": "~1.14.
|
|
55
|
-
"@xyo-network/chain-validation": "~1.14.
|
|
56
|
-
"@xyo-network/chain-wrappers": "~1.14.
|
|
54
|
+
"@xyo-network/chain-utils": "~1.14.2",
|
|
55
|
+
"@xyo-network/chain-validation": "~1.14.2",
|
|
56
|
+
"@xyo-network/chain-wrappers": "~1.14.2",
|
|
57
57
|
"@xyo-network/payload-builder": "~5.1.0",
|
|
58
58
|
"@xyo-network/payload-model": "~5.1.0",
|
|
59
|
-
"@xyo-network/react-boundwitness-plugin": "~7.
|
|
60
|
-
"@xyo-network/react-chain-blockchain": "~1.14.
|
|
61
|
-
"@xyo-network/react-chain-blockies": "~1.14.
|
|
62
|
-
"@xyo-network/react-chain-shared": "~1.14.
|
|
63
|
-
"@xyo-network/react-event": "~7.
|
|
64
|
-
"@xyo-network/react-shared": "~7.
|
|
65
|
-
"@xyo-network/react-table": "~7.
|
|
66
|
-
"@xyo-network/xl1-protocol": "~1.
|
|
67
|
-
"@xyo-network/xl1-protocol-sdk": "~1.14.
|
|
68
|
-
"@xyo-network/xl1-validation": "~1.14.
|
|
69
|
-
"@xyo-network/xl1-wrappers": "~1.14.
|
|
59
|
+
"@xyo-network/react-boundwitness-plugin": "~7.2.0",
|
|
60
|
+
"@xyo-network/react-chain-blockchain": "~1.14.2",
|
|
61
|
+
"@xyo-network/react-chain-blockies": "~1.14.2",
|
|
62
|
+
"@xyo-network/react-chain-shared": "~1.14.2",
|
|
63
|
+
"@xyo-network/react-event": "~7.2.0",
|
|
64
|
+
"@xyo-network/react-shared": "~7.2.0",
|
|
65
|
+
"@xyo-network/react-table": "~7.2.0",
|
|
66
|
+
"@xyo-network/xl1-protocol": "~1.12.14",
|
|
67
|
+
"@xyo-network/xl1-protocol-sdk": "~1.14.2",
|
|
68
|
+
"@xyo-network/xl1-validation": "~1.14.2",
|
|
69
|
+
"@xyo-network/xl1-wrappers": "~1.14.2",
|
|
70
70
|
"react-icons": "~5.5.0"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
73
73
|
"@emotion/react": "~11.14.0",
|
|
74
74
|
"@emotion/styled": "~11.14.1",
|
|
75
|
-
"@mui/icons-material": "~7.3.
|
|
76
|
-
"@mui/material": "~7.3.
|
|
77
|
-
"@storybook/react-vite": "~9.1.
|
|
75
|
+
"@mui/icons-material": "~7.3.2",
|
|
76
|
+
"@mui/material": "~7.3.2",
|
|
77
|
+
"@storybook/react-vite": "~9.1.4",
|
|
78
78
|
"@xylabs/ts-scripts-yarn3": "~7.1.7",
|
|
79
79
|
"@xylabs/tsconfig": "~7.1.7",
|
|
80
80
|
"@xylabs/tsconfig-dom": "~7.1.7",
|
|
81
81
|
"@xylabs/tsconfig-react": "~7.1.7",
|
|
82
82
|
"@xyo-network/account": "~5.1.0",
|
|
83
|
-
"@xyo-network/chain-network-model": "~1.14.
|
|
84
|
-
"@xyo-network/react-chain-network": "~1.14.
|
|
85
|
-
"@xyo-network/react-chain-provider": "~1.14.
|
|
83
|
+
"@xyo-network/chain-network-model": "~1.14.2",
|
|
84
|
+
"@xyo-network/react-chain-network": "~1.14.2",
|
|
85
|
+
"@xyo-network/react-chain-provider": "~1.14.2",
|
|
86
86
|
"eslint": "^9.34.0",
|
|
87
87
|
"react": "~19.1.1",
|
|
88
88
|
"react-dom": "~19.1.1",
|
|
@@ -33,7 +33,14 @@ export const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({
|
|
|
33
33
|
|
|
34
34
|
return (
|
|
35
35
|
<Card {...props}>
|
|
36
|
-
{wrapper?.boundWitness.addresses.map(address =>
|
|
36
|
+
{wrapper?.boundWitness.addresses.map(address => (
|
|
37
|
+
<BlockBoundWitnessCardHeader
|
|
38
|
+
key={address}
|
|
39
|
+
address={address}
|
|
40
|
+
linked={linkedAddress}
|
|
41
|
+
chainId={wrapper.boundWitness.chain}
|
|
42
|
+
/>
|
|
43
|
+
))}
|
|
37
44
|
<ErrorRender error={stepHashesError} scope="BlockBoundWitnessCard.tsx:stepHashesError" />
|
|
38
45
|
<CardContent>
|
|
39
46
|
<Grid container spacing={6} sx={{ width: '100%' }}>
|
|
@@ -41,7 +48,7 @@ export const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({
|
|
|
41
48
|
xs: 12, sm: 6, md: 4,
|
|
42
49
|
}}
|
|
43
50
|
>
|
|
44
|
-
<DetailsStack IconComponent={IoStatsChartOutline} heading="Stats" tooltipTitle="
|
|
51
|
+
<DetailsStack IconComponent={IoStatsChartOutline} heading="Stats" tooltipTitle="Block Statistics">
|
|
45
52
|
<LabelValueStack labels={stats.labels} values={stats.values} />
|
|
46
53
|
</DetailsStack>
|
|
47
54
|
</Grid>
|
|
@@ -1,19 +1,26 @@
|
|
|
1
1
|
import type { CardHeaderProps } from '@mui/material'
|
|
2
2
|
import {
|
|
3
|
-
CardHeader, Link,
|
|
3
|
+
CardHeader, Icon, IconButton, Link,
|
|
4
4
|
Tooltip, Typography,
|
|
5
5
|
} from '@mui/material'
|
|
6
|
+
import { ellipsize } from '@xylabs/eth-address'
|
|
6
7
|
import type { Address } from '@xylabs/hex'
|
|
8
|
+
import { isDefined } from '@xylabs/typeof'
|
|
7
9
|
import { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'
|
|
8
10
|
import { useEvent } from '@xyo-network/react-event'
|
|
11
|
+
import type { Chain } from '@xyo-network/xl1-protocol'
|
|
9
12
|
import React from 'react'
|
|
13
|
+
import { FaCopy } from 'react-icons/fa'
|
|
10
14
|
|
|
11
15
|
export interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {
|
|
12
16
|
address?: Address
|
|
17
|
+
chainId?: Chain
|
|
13
18
|
linked?: boolean
|
|
14
19
|
}
|
|
15
20
|
|
|
16
|
-
export const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({
|
|
21
|
+
export const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({
|
|
22
|
+
linked = true, address, chainId,
|
|
23
|
+
}) => {
|
|
17
24
|
const [ref, dispatch] = useEvent<HTMLDivElement>()
|
|
18
25
|
|
|
19
26
|
return (
|
|
@@ -34,6 +41,22 @@ export const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderPr
|
|
|
34
41
|
: address}
|
|
35
42
|
</Typography>
|
|
36
43
|
)}
|
|
44
|
+
subheader={isDefined(chainId) && (
|
|
45
|
+
<Typography
|
|
46
|
+
variant="subtitle2"
|
|
47
|
+
sx={{
|
|
48
|
+
fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,
|
|
49
|
+
}}
|
|
50
|
+
title={`chain: ${chainId}`}
|
|
51
|
+
>
|
|
52
|
+
{ellipsize(chainId, 8)}
|
|
53
|
+
<IconButton size="small" onClick={() => void navigator.clipboard.writeText(chainId)}>
|
|
54
|
+
<Icon sx={{ fontSize: '0.7rem' }}>
|
|
55
|
+
<FaCopy />
|
|
56
|
+
</Icon>
|
|
57
|
+
</IconButton>
|
|
58
|
+
</Typography>
|
|
59
|
+
)}
|
|
37
60
|
avatar={(
|
|
38
61
|
<Tooltip title={`Address - ${address}`}>
|
|
39
62
|
<BlockiesAvatarAddress
|
|
@@ -15,11 +15,12 @@ const generateStepHashText = (blockNumber: number, stepHashIndex: number): [stri
|
|
|
15
15
|
|
|
16
16
|
export const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {
|
|
17
17
|
const stats = useMemo(() => {
|
|
18
|
+
const epochDate = new Date(wrapper.boundWitness.$epoch)
|
|
18
19
|
const stats = {
|
|
19
20
|
Height: formatNumber(wrapper.boundWitness.block),
|
|
20
21
|
Protocol: wrapper.boundWitness.protocol.toString(),
|
|
21
22
|
Signatures: formatNumber(wrapper.signatureCount),
|
|
22
|
-
$epoch:
|
|
23
|
+
$epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`,
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
return formatResults(stats)
|
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
import type { CardProps } from '@mui/material'
|
|
2
2
|
import {
|
|
3
|
-
Card, CardContent, CardHeader, Grid, Link, Tooltip, Typography,
|
|
3
|
+
Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,
|
|
4
4
|
} from '@mui/material'
|
|
5
|
+
import { ellipsize } from '@xylabs/eth-address'
|
|
6
|
+
import { isDefined } from '@xylabs/typeof'
|
|
5
7
|
import { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'
|
|
6
8
|
import { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'
|
|
7
9
|
import { useEvent } from '@xyo-network/react-event'
|
|
8
10
|
import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'
|
|
9
11
|
import React from 'react'
|
|
12
|
+
import { FaCopy } from 'react-icons/fa'
|
|
10
13
|
import { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'
|
|
11
14
|
import { IoStatsChartOutline } from 'react-icons/io5'
|
|
12
15
|
|
|
@@ -22,6 +25,8 @@ export const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardPr
|
|
|
22
25
|
}) => {
|
|
23
26
|
if (!wrapper) return null
|
|
24
27
|
|
|
28
|
+
const chainId = wrapper?.boundWitness.chain
|
|
29
|
+
|
|
25
30
|
const {
|
|
26
31
|
stats, fees, blockDuration,
|
|
27
32
|
} = useTransactionDetails(wrapper)
|
|
@@ -46,6 +51,22 @@ export const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardPr
|
|
|
46
51
|
: wrapper?.boundWitness.from}
|
|
47
52
|
</Typography>
|
|
48
53
|
)}
|
|
54
|
+
subheader={isDefined(chainId) && (
|
|
55
|
+
<Typography
|
|
56
|
+
variant="subtitle2"
|
|
57
|
+
sx={{
|
|
58
|
+
fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,
|
|
59
|
+
}}
|
|
60
|
+
title={`chain: ${chainId}`}
|
|
61
|
+
>
|
|
62
|
+
{ellipsize(chainId, 8)}
|
|
63
|
+
<IconButton size="small" onClick={() => void navigator.clipboard.writeText(chainId)}>
|
|
64
|
+
<Icon sx={{ fontSize: '0.7rem' }}>
|
|
65
|
+
<FaCopy />
|
|
66
|
+
</Icon>
|
|
67
|
+
</IconButton>
|
|
68
|
+
</Typography>
|
|
69
|
+
)}
|
|
49
70
|
avatar={(
|
|
50
71
|
<Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>
|
|
51
72
|
<BlockiesAvatarAddress
|