@xyo-network/react-chain-boundwitness 1.5.28 → 1.5.30
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/index.mjs +123 -54
- package/dist/browser/index.mjs.map +1 -1
- package/dist/types/components/{BwPayloadTable.d.ts → PayloadTable.d.ts} +3 -2
- package/dist/types/components/PayloadTable.d.ts.map +1 -0
- package/dist/types/components/block/card/hooks/useDetails.d.ts.map +1 -1
- package/dist/types/components/index.d.ts +1 -1
- package/dist/types/components/index.d.ts.map +1 -1
- package/dist/types/components/transactions/{TransactionDetails.d.ts → TransactionBoundWitnessDetails.d.ts} +1 -1
- package/dist/types/components/transactions/TransactionBoundWitnessDetails.d.ts.map +1 -0
- package/dist/types/components/transactions/card/hooks/useDetails.d.ts.map +1 -1
- package/dist/types/components/transactions/hooks/index.d.ts +2 -0
- package/dist/types/components/transactions/hooks/index.d.ts.map +1 -0
- package/dist/types/components/transactions/hooks/usePayloadTypes.d.ts +12 -0
- package/dist/types/components/transactions/hooks/usePayloadTypes.d.ts.map +1 -0
- package/dist/types/components/transactions/index.d.ts +1 -1
- package/dist/types/components/transactions/index.d.ts.map +1 -1
- package/dist/types/lib/formatNumber.d.ts +2 -0
- package/dist/types/lib/formatNumber.d.ts.map +1 -0
- package/dist/types/lib/index.d.ts +1 -0
- package/dist/types/lib/index.d.ts.map +1 -1
- package/package.json +24 -25
- package/src/components/{BwPayloadTable.tsx → PayloadTable.tsx} +17 -2
- package/src/components/block/BlockBoundWitnessDetails.tsx +3 -3
- package/src/components/block/card/hooks/useDetails.ts +7 -8
- package/src/components/index.ts +1 -1
- package/src/components/transactions/{TransactionDetails.stories.tsx → TransactionBoundWitnessDetails.stories.tsx} +1 -1
- package/src/components/transactions/{TransactionDetails.tsx → TransactionBoundWitnessDetails.tsx} +30 -42
- package/src/components/transactions/card/hooks/useDetails.ts +8 -5
- package/src/components/transactions/hooks/index.ts +1 -0
- package/src/components/transactions/hooks/usePayloadTypes.ts +67 -0
- package/src/components/transactions/index.ts +1 -1
- package/src/lib/formatNumber.ts +3 -0
- package/src/lib/index.ts +1 -0
- package/dist/types/components/BwPayloadTable.d.ts.map +0 -1
- package/dist/types/components/transactions/TransactionDetails.d.ts.map +0 -1
package/dist/browser/index.mjs
CHANGED
|
@@ -28,6 +28,11 @@ var formatFee = /* @__PURE__ */ __name((fee) => {
|
|
|
28
28
|
return stringValue;
|
|
29
29
|
}, "formatFee");
|
|
30
30
|
|
|
31
|
+
// src/lib/formatNumber.ts
|
|
32
|
+
var formatNumber = /* @__PURE__ */ __name((num) => {
|
|
33
|
+
return num.toLocaleString(navigator.language ?? "en-US");
|
|
34
|
+
}, "formatNumber");
|
|
35
|
+
|
|
31
36
|
// src/lib/formatPayloadsForTable.ts
|
|
32
37
|
var formatPayloadsForTable = /* @__PURE__ */ __name((pairs) => {
|
|
33
38
|
let hashes = [];
|
|
@@ -55,8 +60,11 @@ var formatResults = /* @__PURE__ */ __name((results) => {
|
|
|
55
60
|
return result;
|
|
56
61
|
}, "formatResults");
|
|
57
62
|
|
|
58
|
-
// src/components/
|
|
63
|
+
// src/components/PayloadTable.tsx
|
|
64
|
+
import { InfoOutline } from "@mui/icons-material";
|
|
65
|
+
import { Tooltip } from "@mui/material";
|
|
59
66
|
import { FlexCol } from "@xylabs/react-flexbox";
|
|
67
|
+
import { isDefined } from "@xylabs/typeof";
|
|
60
68
|
import { BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper } from "@xyo-network/react-boundwitness-plugin";
|
|
61
69
|
import { TableEx } from "@xyo-network/react-table";
|
|
62
70
|
import React from "react";
|
|
@@ -64,13 +72,22 @@ import { VscSymbolMethod } from "react-icons/vsc";
|
|
|
64
72
|
var defaultClickableFields = [
|
|
65
73
|
"hash"
|
|
66
74
|
];
|
|
67
|
-
var
|
|
75
|
+
var PayloadTableFlexbox = /* @__PURE__ */ __name(({ IconComponent, eventNoun, hashes, schemas, headingTitle, clickableFields = defaultClickableFields, tooltip, ...props }) => {
|
|
68
76
|
const resolvedIconComponent = IconComponent ?? /* @__PURE__ */ React.createElement(VscSymbolMethod, null);
|
|
69
77
|
return /* @__PURE__ */ React.createElement(FlexCol, {
|
|
70
78
|
alignItems: "stretch",
|
|
71
79
|
rowGap: 1,
|
|
72
80
|
...props
|
|
73
81
|
}, /* @__PURE__ */ React.createElement(HeadingPaper, {
|
|
82
|
+
AdornmentEnd: isDefined(tooltip) ? /* @__PURE__ */ React.createElement(Tooltip, {
|
|
83
|
+
title: tooltip
|
|
84
|
+
}, /* @__PURE__ */ React.createElement(InfoOutline, {
|
|
85
|
+
fontSize: "small",
|
|
86
|
+
sx: {
|
|
87
|
+
py: 2,
|
|
88
|
+
px: 1
|
|
89
|
+
}
|
|
90
|
+
})) : null,
|
|
74
91
|
IconComponent: resolvedIconComponent,
|
|
75
92
|
heading: headingTitle
|
|
76
93
|
}), /* @__PURE__ */ React.createElement(TableEx, null, /* @__PURE__ */ React.createElement(BoundWitnessPayloadTableHead, null), /* @__PURE__ */ React.createElement(BoundWitnessPayloadTableBody, {
|
|
@@ -79,7 +96,7 @@ var BWPayloadTableFlexbox = /* @__PURE__ */ __name(({ IconComponent, eventNoun,
|
|
|
79
96
|
eventNoun,
|
|
80
97
|
clickableFields
|
|
81
98
|
})));
|
|
82
|
-
}, "
|
|
99
|
+
}, "PayloadTableFlexbox");
|
|
83
100
|
|
|
84
101
|
// src/components/block/card/Card.tsx
|
|
85
102
|
import { Card, CardContent, Grid, Skeleton, Stack } from "@mui/material";
|
|
@@ -91,7 +108,7 @@ import { IoStatsChartOutline } from "react-icons/io5";
|
|
|
91
108
|
import { VscSymbolNamespace } from "react-icons/vsc";
|
|
92
109
|
|
|
93
110
|
// src/components/block/card/CardHeader.tsx
|
|
94
|
-
import { CardHeader, Link, Tooltip, Typography } from "@mui/material";
|
|
111
|
+
import { CardHeader, Link, Tooltip as Tooltip2, Typography } from "@mui/material";
|
|
95
112
|
import { BlockiesAvatarAddress } from "@xyo-network/react-chain-blockies";
|
|
96
113
|
import { useEvent } from "@xyo-network/react-event";
|
|
97
114
|
import React2 from "react";
|
|
@@ -113,7 +130,7 @@ var BlockBoundWitnessCardHeader = /* @__PURE__ */ __name(({ linked = true, addre
|
|
|
113
130
|
cursor: "pointer"
|
|
114
131
|
}
|
|
115
132
|
}, address) : address),
|
|
116
|
-
avatar: /* @__PURE__ */ React2.createElement(
|
|
133
|
+
avatar: /* @__PURE__ */ React2.createElement(Tooltip2, {
|
|
117
134
|
title: `Address - ${address}`
|
|
118
135
|
}, /* @__PURE__ */ React2.createElement(BlockiesAvatarAddress, {
|
|
119
136
|
address,
|
|
@@ -136,15 +153,15 @@ var generateStepHashText = /* @__PURE__ */ __name((blockNumber, stepHashIndex) =
|
|
|
136
153
|
const stepStop = blockNumber;
|
|
137
154
|
return [
|
|
138
155
|
`Step ${stepHashIndex} (${stepSize})`,
|
|
139
|
-
`${stepStart} - ${stepStop}`
|
|
156
|
+
`${formatNumber(stepStart)} - ${formatNumber(stepStop)}`
|
|
140
157
|
];
|
|
141
158
|
}, "generateStepHashText");
|
|
142
159
|
var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
|
|
143
160
|
const stats = useMemo(() => {
|
|
144
161
|
const stats2 = {
|
|
145
|
-
Height: wrapper.boundWitness.block
|
|
162
|
+
Height: formatNumber(wrapper.boundWitness.block),
|
|
146
163
|
Protocol: wrapper.boundWitness.protocol.toString(),
|
|
147
|
-
Signatures: wrapper.signatureCount
|
|
164
|
+
Signatures: formatNumber(wrapper.signatureCount),
|
|
148
165
|
$epoch: wrapper.boundWitness.$epoch.toString()
|
|
149
166
|
};
|
|
150
167
|
return formatResults(stats2);
|
|
@@ -153,10 +170,8 @@ var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
|
|
|
153
170
|
]);
|
|
154
171
|
const payloads = useMemo(() => {
|
|
155
172
|
const payloads2 = {
|
|
156
|
-
"Transactions": wrapper.transactionCount
|
|
157
|
-
"
|
|
158
|
-
"Private Payloads": wrapper.privatePayloadCount.toLocaleString(navigator.language ?? "en-US"),
|
|
159
|
-
"Total Payloads": wrapper.payloadCount.toLocaleString(navigator.language ?? "en-US")
|
|
173
|
+
"Transactions": formatNumber(wrapper.transactionCount),
|
|
174
|
+
"Total Payloads": formatNumber(wrapper.payloadCount)
|
|
160
175
|
};
|
|
161
176
|
return formatResults(payloads2);
|
|
162
177
|
}, [
|
|
@@ -332,7 +347,7 @@ var BlockBoundWitnessDetails = /* @__PURE__ */ __name(({ block, paper, viewer, c
|
|
|
332
347
|
elevation: 4,
|
|
333
348
|
viewer,
|
|
334
349
|
wrapper
|
|
335
|
-
}), (transactions?.length ?? 0) > 0 && /* @__PURE__ */ React4.createElement(
|
|
350
|
+
}), (transactions?.length ?? 0) > 0 && /* @__PURE__ */ React4.createElement(PayloadTableFlexbox, {
|
|
336
351
|
IconComponent: /* @__PURE__ */ React4.createElement(GrTransaction, null),
|
|
337
352
|
eventNoun: "transaction",
|
|
338
353
|
hashes: txHashes,
|
|
@@ -350,7 +365,7 @@ var BlockBoundWitnessDetails = /* @__PURE__ */ __name(({ block, paper, viewer, c
|
|
|
350
365
|
heading: "Payloads"
|
|
351
366
|
}), /* @__PURE__ */ React4.createElement(BoundWitnessPayloadsTable, {
|
|
352
367
|
boundwitness: boundWitness
|
|
353
|
-
})), hasNonTxBoundWitnesses ? /* @__PURE__ */ React4.createElement(
|
|
368
|
+
})), hasNonTxBoundWitnesses ? /* @__PURE__ */ React4.createElement(PayloadTableFlexbox, {
|
|
354
369
|
IconComponent: /* @__PURE__ */ React4.createElement(VscSymbolMethod2, null),
|
|
355
370
|
eventNoun: "boundwitness",
|
|
356
371
|
hashes: nonTxBwHashes,
|
|
@@ -372,7 +387,7 @@ var BlockBoundWitnessDetails = /* @__PURE__ */ __name(({ block, paper, viewer, c
|
|
|
372
387
|
}, "BlockBoundWitnessDetails");
|
|
373
388
|
|
|
374
389
|
// src/components/transactions/card/Card.tsx
|
|
375
|
-
import { Card as Card2, CardContent as CardContent2, CardHeader as CardHeader2, Grid as Grid2, Link as Link2, Tooltip as
|
|
390
|
+
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";
|
|
376
391
|
import { BlockiesAvatarAddress as BlockiesAvatarAddress2 } from "@xyo-network/react-chain-blockies";
|
|
377
392
|
import { DetailsStack as DetailsStack2, LabelValueStack as LabelValueStack2 } from "@xyo-network/react-chain-shared";
|
|
378
393
|
import { useEvent as useEvent2 } from "@xyo-network/react-event";
|
|
@@ -385,10 +400,11 @@ import { useMemo as useMemo3 } from "react";
|
|
|
385
400
|
var useTransactionDetails = /* @__PURE__ */ __name((wrapper) => {
|
|
386
401
|
const stats = useMemo3(() => {
|
|
387
402
|
const stats2 = {
|
|
388
|
-
"Reward": wrapper.reward()
|
|
389
|
-
"
|
|
390
|
-
"
|
|
391
|
-
"
|
|
403
|
+
"Reward": formatNumber(wrapper.reward()),
|
|
404
|
+
"On Chain Payloads": formatNumber(wrapper.elevatedPayloadCount),
|
|
405
|
+
"Public Payloads": formatNumber(Object.values(wrapper.publicExternalPayloads).length),
|
|
406
|
+
"Referenced Payloads": formatNumber(Object.entries(wrapper.privateExternalPayloads).length),
|
|
407
|
+
"Signatures": formatNumber(wrapper.signatureCount)
|
|
392
408
|
};
|
|
393
409
|
return formatResults(stats2);
|
|
394
410
|
}, [
|
|
@@ -444,7 +460,7 @@ var TransactionBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true
|
|
|
444
460
|
cursor: "pointer"
|
|
445
461
|
}
|
|
446
462
|
}, wrapper?.boundWitness.from) : wrapper?.boundWitness.from),
|
|
447
|
-
avatar: /* @__PURE__ */ React5.createElement(
|
|
463
|
+
avatar: /* @__PURE__ */ React5.createElement(Tooltip3, {
|
|
448
464
|
title: `From Address - ${wrapper?.boundWitness.from}`
|
|
449
465
|
}, /* @__PURE__ */ React5.createElement(BlockiesAvatarAddress2, {
|
|
450
466
|
address: wrapper?.boundWitness.from,
|
|
@@ -502,28 +518,26 @@ var TransactionBoundWitnessCard = /* @__PURE__ */ __name(({ linkedAddress = true
|
|
|
502
518
|
}))))));
|
|
503
519
|
}, "TransactionBoundWitnessCard");
|
|
504
520
|
|
|
505
|
-
// src/components/transactions/
|
|
521
|
+
// src/components/transactions/TransactionBoundWitnessDetails.tsx
|
|
506
522
|
import { ErrorRender as ErrorRender3 } from "@xylabs/react-error";
|
|
507
523
|
import { FlexCol as FlexCol3 } from "@xylabs/react-flexbox";
|
|
508
|
-
import { usePromise as
|
|
509
|
-
import { isDefined } from "@xylabs/typeof";
|
|
524
|
+
import { usePromise as usePromise4 } from "@xylabs/react-promise";
|
|
510
525
|
import { SignedHydratedTransactionWrapper } from "@xyo-network/chain-wrappers";
|
|
511
|
-
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
512
526
|
import { BoundWitnessSignatureTable as BoundWitnessSignatureTable2, BWActions as BWActions2, HashHeadingPaper as HashHeadingPaper2, HeadingPaper as HeadingPaper3 } from "@xyo-network/react-boundwitness-plugin";
|
|
513
527
|
import React6 from "react";
|
|
514
528
|
import { FaSignature as FaSignature2 } from "react-icons/fa";
|
|
515
|
-
import {
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
529
|
+
import { VscSymbolNamespace as VscSymbolNamespace3 } from "react-icons/vsc";
|
|
530
|
+
|
|
531
|
+
// src/components/transactions/hooks/usePayloadTypes.ts
|
|
532
|
+
import { isHash } from "@xylabs/hex";
|
|
533
|
+
import { usePromise as usePromise3 } from "@xylabs/react-promise";
|
|
534
|
+
import { isDefined as isDefined2 } from "@xylabs/typeof";
|
|
535
|
+
import { PayloadBuilder as PayloadBuilder2 } from "@xyo-network/payload-builder";
|
|
536
|
+
import { isSchema } from "@xyo-network/payload-model";
|
|
537
|
+
import { useMemo as useMemo4 } from "react";
|
|
538
|
+
var useTransactionPayloadTypes = /* @__PURE__ */ __name((wrapper) => {
|
|
525
539
|
const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise3(async () => {
|
|
526
|
-
if (
|
|
540
|
+
if (isDefined2(wrapper)) {
|
|
527
541
|
const elevatedPayloads = wrapper.elevatedPayloads;
|
|
528
542
|
const pairs = await PayloadBuilder2.hashPairs(elevatedPayloads);
|
|
529
543
|
return formatPayloadsForTable(pairs);
|
|
@@ -536,14 +550,10 @@ var TransactionBoundWitnessDetails = /* @__PURE__ */ __name(({ transaction, ...p
|
|
|
536
550
|
}, [
|
|
537
551
|
wrapper
|
|
538
552
|
]);
|
|
539
|
-
const [
|
|
540
|
-
if (
|
|
541
|
-
const
|
|
542
|
-
const
|
|
543
|
-
const nonElevatedPayloads = payloads.filter((payload) => {
|
|
544
|
-
return elevatedPayloads.every((elevated) => elevated._hash !== payload._hash);
|
|
545
|
-
});
|
|
546
|
-
const pairs = await PayloadBuilder2.hashPairs(nonElevatedPayloads);
|
|
553
|
+
const [publicPayloads, publicPayloadsError] = usePromise3(async () => {
|
|
554
|
+
if (isDefined2(wrapper)) {
|
|
555
|
+
const publicPayloads2 = wrapper.publicExternalPayloads;
|
|
556
|
+
const pairs = await PayloadBuilder2.hashPairs(publicPayloads2);
|
|
547
557
|
return formatPayloadsForTable(pairs);
|
|
548
558
|
} else {
|
|
549
559
|
return {
|
|
@@ -554,8 +564,56 @@ var TransactionBoundWitnessDetails = /* @__PURE__ */ __name(({ transaction, ...p
|
|
|
554
564
|
}, [
|
|
555
565
|
wrapper
|
|
556
566
|
]);
|
|
567
|
+
const referencedPayloads = useMemo4(() => {
|
|
568
|
+
const ret = {
|
|
569
|
+
hashes: [],
|
|
570
|
+
schemas: []
|
|
571
|
+
};
|
|
572
|
+
if (isDefined2(wrapper)) {
|
|
573
|
+
const referencedPayloads2 = wrapper.privateExternalPayloads;
|
|
574
|
+
for (const [hash, payloadOrSchema] of Object.entries(referencedPayloads2)) {
|
|
575
|
+
if (isHash(hash)) {
|
|
576
|
+
ret.hashes.push(hash);
|
|
577
|
+
}
|
|
578
|
+
if (isSchema(payloadOrSchema)) {
|
|
579
|
+
ret.schemas.push(hash);
|
|
580
|
+
}
|
|
581
|
+
throw new Error(`Unexpected payload or schema type for hash ${hash}: ${payloadOrSchema}`);
|
|
582
|
+
}
|
|
583
|
+
return ret;
|
|
584
|
+
} else {
|
|
585
|
+
return ret;
|
|
586
|
+
}
|
|
587
|
+
}, [
|
|
588
|
+
wrapper,
|
|
589
|
+
elevatedPayloadSets
|
|
590
|
+
]);
|
|
557
591
|
const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {};
|
|
558
|
-
const { hashes:
|
|
592
|
+
const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {};
|
|
593
|
+
const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {};
|
|
594
|
+
return {
|
|
595
|
+
elevatedPayloadHashes,
|
|
596
|
+
elevatedPayloadSchemas,
|
|
597
|
+
elevatedPayloadSetsError,
|
|
598
|
+
publicPayloadHashes,
|
|
599
|
+
publicPayloadSchemas,
|
|
600
|
+
publicPayloadsError,
|
|
601
|
+
referencedPayloadHashes,
|
|
602
|
+
referencedPayloadSchemas
|
|
603
|
+
};
|
|
604
|
+
}, "useTransactionPayloadTypes");
|
|
605
|
+
|
|
606
|
+
// src/components/transactions/TransactionBoundWitnessDetails.tsx
|
|
607
|
+
var nonClickableFields = [];
|
|
608
|
+
var TransactionBoundWitnessDetails = /* @__PURE__ */ __name(({ transaction, ...props }) => {
|
|
609
|
+
const [wrapper, wrapperError] = usePromise4(async () => {
|
|
610
|
+
if (transaction) {
|
|
611
|
+
return await SignedHydratedTransactionWrapper.parse(transaction);
|
|
612
|
+
}
|
|
613
|
+
}, [
|
|
614
|
+
transaction
|
|
615
|
+
]);
|
|
616
|
+
const { elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError, publicPayloadHashes, publicPayloadSchemas, publicPayloadsError, referencedPayloadHashes, referencedPayloadSchemas } = useTransactionPayloadTypes(wrapper);
|
|
559
617
|
return /* @__PURE__ */ React6.createElement(FlexCol3, {
|
|
560
618
|
alignItems: "stretch",
|
|
561
619
|
rowGap: 2,
|
|
@@ -581,25 +639,36 @@ var TransactionBoundWitnessDetails = /* @__PURE__ */ __name(({ transaction, ...p
|
|
|
581
639
|
error: elevatedPayloadSetsError,
|
|
582
640
|
scope: "elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx"
|
|
583
641
|
}), /* @__PURE__ */ React6.createElement(ErrorRender3, {
|
|
584
|
-
error:
|
|
585
|
-
scope: "
|
|
642
|
+
error: publicPayloadsError,
|
|
643
|
+
scope: "publicPayloadsError:TransactionBoundWitnessDetails.tsx"
|
|
586
644
|
}), /* @__PURE__ */ React6.createElement(TransactionBoundWitnessCard, {
|
|
587
645
|
elevation: 4,
|
|
588
646
|
wrapper
|
|
589
|
-
}), /* @__PURE__ */ React6.createElement(
|
|
647
|
+
}), /* @__PURE__ */ React6.createElement(PayloadTableFlexbox, {
|
|
648
|
+
tooltip: "Payloads included in the transaction that are elevated and validated.",
|
|
590
649
|
IconComponent: /* @__PURE__ */ React6.createElement(VscSymbolNamespace3, null),
|
|
591
650
|
hashes: elevatedPayloadHashes,
|
|
592
|
-
headingTitle: "
|
|
651
|
+
headingTitle: "On Chain Payloads",
|
|
593
652
|
schemas: elevatedPayloadSchemas,
|
|
594
653
|
sx: {
|
|
595
654
|
mb: 1
|
|
596
655
|
}
|
|
597
|
-
}), (
|
|
598
|
-
|
|
656
|
+
}), (publicPayloadHashes?.length ?? 0) > 0 && /* @__PURE__ */ React6.createElement(PayloadTableFlexbox, {
|
|
657
|
+
tooltip: "Public payloads included in the transaction.",
|
|
658
|
+
IconComponent: /* @__PURE__ */ React6.createElement(VscSymbolNamespace3, null),
|
|
659
|
+
hashes: publicPayloadHashes,
|
|
660
|
+
headingTitle: "Public Payloads",
|
|
661
|
+
schemas: publicPayloadSchemas,
|
|
662
|
+
sx: {
|
|
663
|
+
mb: 1
|
|
664
|
+
}
|
|
665
|
+
}), (referencedPayloadHashes?.length ?? 0) > 0 && /* @__PURE__ */ React6.createElement(PayloadTableFlexbox, {
|
|
666
|
+
tooltip: "Payload hashes referenced by the transaction but not included.",
|
|
667
|
+
IconComponent: /* @__PURE__ */ React6.createElement(VscSymbolNamespace3, null),
|
|
599
668
|
clickableFields: nonClickableFields,
|
|
600
|
-
hashes:
|
|
601
|
-
headingTitle: "
|
|
602
|
-
schemas:
|
|
669
|
+
hashes: referencedPayloadHashes,
|
|
670
|
+
headingTitle: "Referenced Payloads",
|
|
671
|
+
schemas: referencedPayloadSchemas,
|
|
603
672
|
sx: {
|
|
604
673
|
mb: 1
|
|
605
674
|
}
|
|
@@ -615,8 +684,8 @@ var TransactionBoundWitnessDetails = /* @__PURE__ */ __name(({ transaction, ...p
|
|
|
615
684
|
})));
|
|
616
685
|
}, "TransactionBoundWitnessDetails");
|
|
617
686
|
export {
|
|
618
|
-
BWPayloadTableFlexbox,
|
|
619
687
|
BlockBoundWitnessDetails,
|
|
688
|
+
PayloadTableFlexbox,
|
|
620
689
|
TransactionBoundWitnessCard,
|
|
621
690
|
TransactionBoundWitnessDetails
|
|
622
691
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/BwPayloadTable.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionDetails.tsx"],"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 { SignedHydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n BWActions,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedBlock, 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 { BWPayloadTableFlexbox } from '../BwPayloadTable.tsx'\nimport { BlockBoundWitnessCard } from './card/Card.tsx'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: SignedHydratedBlock\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 SignedHydratedBlockWrapper.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={<BWActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0 && (\n <BWPayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\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} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <BWPayloadTableFlexbox<TransactionBoundWitnessEvents>\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","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 type { Hash } from '@xylabs/hex'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\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 type ClickableFields = 'hash'\nconst defaultClickableFields: ClickableFields[] = ['hash']\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n}\n\nexport const BWPayloadTableFlexbox = <TNoun extends ExtendEventNoun = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields = defaultClickableFields,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper IconComponent={resolvedIconComponent} heading={headingTitle} />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\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 { SignedHydratedBlockInstance } 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?: SignedHydratedBlockInstance\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 { SignedHydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { 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 return [`Step ${stepHashIndex} (${stepSize})`, `${stepStart} - ${stepStop}`]\n}\n\nexport const useBlockDetails = (wrapper: SignedHydratedBlockInstance, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n const stats = {\n Height: wrapper.boundWitness.block.toLocaleString(navigator.language ?? 'en-US'),\n Protocol: wrapper.boundWitness.protocol.toString(),\n Signatures: wrapper.signatureCount.toLocaleString(navigator.language ?? 'en-US'),\n $epoch: wrapper.boundWitness.$epoch.toString(),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n const payloads = {\n 'Transactions': wrapper.transactionCount.toLocaleString(navigator.language ?? 'en-US'),\n 'Public Payloads': wrapper.publicPayloadCount.toLocaleString(navigator.language ?? 'en-US'),\n 'Private Payloads': wrapper.privatePayloadCount.toLocaleString(navigator.language ?? 'en-US'),\n 'Total Payloads': wrapper.payloadCount.toLocaleString(navigator.language ?? 'en-US'),\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 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 { SignedHydratedTransactionInstance } 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?: SignedHydratedTransactionInstance\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 { SignedHydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatFee, formatResults } from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: SignedHydratedTransactionInstance) => {\n const stats = useMemo(() => {\n const stats = {\n 'Reward': wrapper.reward().toLocaleString(navigator.language ?? 'en-US'),\n 'Elevated Payloads': wrapper.elevatedPayloadCount.toLocaleString(navigator.language ?? 'en-US'),\n 'Total Payloads': wrapper.payloadCount.toLocaleString(navigator.language ?? 'en-US'),\n 'Signatures': wrapper.signatureCount.toLocaleString(navigator.language ?? 'en-US'),\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 { isDefined } from '@xylabs/typeof'\nimport { SignedHydratedTransactionWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessSignatureTable, BWActions, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { ClickableFields } from '../BwPayloadTable.tsx'\nimport { BWPayloadTableFlexbox } from '../BwPayloadTable.tsx'\nimport { TransactionBoundWitnessCard } from './card/index.ts'\n\nconst nonClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransaction | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await SignedHydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\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 // TODO - use forthcoming wrapper method since hydrated transactions don't include non-elevated payloads\n const [nonElevatedPayloadSets, nonElevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const payloads = wrapper.payloads\n const nonElevatedPayloads = payloads.filter((payload) => {\n return elevatedPayloads.every(elevated => elevated._hash !== payload._hash)\n })\n const pairs = await PayloadBuilder.hashPairs(nonElevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: nonElevatedPayloadHashes, schemas: nonElevatedPayloadSchemas } = nonElevatedPayloadSets ?? {}\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BWActions boundwitness={wrapper?.boundWitness} />}\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={nonElevatedPayloadSetsError} scope=\"nonElevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <BWPayloadTableFlexbox\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"Elevated Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(nonElevatedPayloadHashes?.length ?? 0) > 0 && (\n <BWPayloadTableFlexbox\n IconComponent={<VscSymbolMethod />}\n clickableFields={nonClickableFields}\n hashes={nonElevatedPayloadHashes}\n headingTitle=\"Non-Elevated Payloads\"\n schemas={nonElevatedPayloadSchemas}\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"],"mappings":"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","names":["filterAs","ErrorRender","FlexCol","usePromise","isBoundWitness","SignedHydratedBlockWrapper","PayloadBuilder","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","BWActions","HashHeadingPaper","HeadingPaper","useTxsFromBlock","usePayloadHash","isTransactionBoundWitness","React","useMemo","FaSignature","GrTransaction","VscSymbolMethod","VscSymbolNamespace","isUndefined","bigIntToFixedPointString","formatFee","fee","isUndefined","stringValue","bigIntToFixedPointString","formatPayloadsForTable","pairs","hashes","schemas","bw","hash","push","schema","formatResults","results","result","labels","values","label","value","Object","entries","push","FlexCol","BoundWitnessPayloadTableBody","BoundWitnessPayloadTableHead","HeadingPaper","TableEx","React","VscSymbolMethod","defaultClickableFields","BWPayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","clickableFields","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","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","useBlockDetails","wrapper","viewer","stats","useMemo","Height","boundWitness","block","toLocaleString","navigator","language","Protocol","protocol","toString","Signatures","signatureCount","$epoch","formatResults","payloads","transactionCount","publicPayloadCount","privatePayloadCount","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","SignedHydratedBlockWrapper","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","BWActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","BWPayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","Card","CardContent","CardHeader","Grid","Link","Tooltip","Typography","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","React","GiReceiveMoney","GiSandsOfTime","IoStatsChartOutline","useMemo","useTransactionDetails","wrapper","stats","useMemo","reward","toLocaleString","navigator","language","elevatedPayloadCount","payloadCount","signatureCount","formatResults","fees","formatFee","base","gasPrice","priority","gasLimit","blockDuration","boundWitness","exp","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","isDefined","SignedHydratedTransactionWrapper","PayloadBuilder","BoundWitnessSignatureTable","BWActions","HashHeadingPaper","HeadingPaper","React","FaSignature","VscSymbolMethod","VscSymbolNamespace","nonClickableFields","TransactionBoundWitnessDetails","transaction","props","wrapper","wrapperError","usePromise","SignedHydratedTransactionWrapper","parse","elevatedPayloadSets","elevatedPayloadSetsError","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","nonElevatedPayloadSets","nonElevatedPayloadSetsError","payloads","nonElevatedPayloads","filter","payload","every","elevated","_hash","elevatedPayloadHashes","elevatedPayloadSchemas","nonElevatedPayloadHashes","nonElevatedPayloadSchemas","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","paperProps","sx","p","AdornmentEnd","BWActions","boundwitness","identiconProps","size","ErrorRender","error","scope","TransactionBoundWitnessCard","elevation","BWPayloadTableFlexbox","IconComponent","VscSymbolNamespace","headingTitle","mb","length","VscSymbolMethod","clickableFields","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/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../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 { SignedHydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n BWActions,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedBlock, 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 { BlockBoundWitnessCard } from './card/Card.tsx'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: SignedHydratedBlock\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 SignedHydratedBlockWrapper.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={<BWActions 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 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} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\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 {\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 type ClickableFields = 'hash'\nconst defaultClickableFields: ClickableFields[] = ['hash']\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun = 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 = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields = defaultClickableFields,\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 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 { SignedHydratedBlockInstance } 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?: SignedHydratedBlockInstance\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 { SignedHydratedBlockInstance } 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: SignedHydratedBlockInstance, 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 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 { SignedHydratedTransactionInstance } 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?: SignedHydratedTransactionInstance\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 { SignedHydratedTransactionInstance } 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: SignedHydratedTransactionInstance) => {\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 { SignedHydratedTransactionWrapper } from '@xyo-network/chain-wrappers'\nimport {\n BoundWitnessSignatureTable, BWActions, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport type { ClickableFields } from '../PayloadTable.tsx'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst nonClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransaction | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await SignedHydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas,\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={<BWActions boundwitness={wrapper?.boundWitness} />}\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 <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <PayloadTableFlexbox\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 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 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 { SignedHydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: SignedHydratedTransactionInstance) => {\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 referencedPayloads = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, payloadOrSchema] of Object.entries(referencedPayloads)) {\n if (isHash(hash)) {\n ret.hashes.push(hash)\n }\n if (isSchema(payloadOrSchema)) {\n ret.schemas.push(hash)\n }\n throw new Error(`Unexpected payload or schema type for hash ${hash}: ${payloadOrSchema}`)\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 }\n}\n"],"mappings":"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","names":["filterAs","ErrorRender","FlexCol","usePromise","isBoundWitness","SignedHydratedBlockWrapper","PayloadBuilder","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","BWActions","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","defaultClickableFields","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","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","SignedHydratedBlockWrapper","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","BWActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","PayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","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","SignedHydratedTransactionWrapper","BoundWitnessSignatureTable","BWActions","HashHeadingPaper","HeadingPaper","React","FaSignature","VscSymbolNamespace","isHash","usePromise","isDefined","PayloadBuilder","isSchema","useMemo","useTransactionPayloadTypes","wrapper","elevatedPayloadSets","elevatedPayloadSetsError","usePromise","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","publicPayloads","publicPayloadsError","publicExternalPayloads","referencedPayloads","useMemo","ret","privateExternalPayloads","hash","payloadOrSchema","Object","entries","isHash","push","isSchema","Error","elevatedPayloadHashes","elevatedPayloadSchemas","publicPayloadHashes","publicPayloadSchemas","referencedPayloadHashes","referencedPayloadSchemas","nonClickableFields","TransactionBoundWitnessDetails","transaction","props","wrapper","wrapperError","usePromise","SignedHydratedTransactionWrapper","parse","elevatedPayloadHashes","elevatedPayloadSchemas","elevatedPayloadSetsError","publicPayloadHashes","publicPayloadSchemas","publicPayloadsError","referencedPayloadHashes","referencedPayloadSchemas","useTransactionPayloadTypes","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","BWActions","boundwitness","identiconProps","size","ErrorRender","error","scope","TransactionBoundWitnessCard","elevation","PayloadTableFlexbox","tooltip","IconComponent","VscSymbolNamespace","hashes","headingTitle","schemas","mb","length","clickableFields","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
|
|
@@ -10,6 +10,7 @@ export interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun = Even
|
|
|
10
10
|
hashes?: Hash[];
|
|
11
11
|
headingTitle?: string;
|
|
12
12
|
schemas?: string[];
|
|
13
|
+
tooltip?: string;
|
|
13
14
|
}
|
|
14
|
-
export declare const
|
|
15
|
-
//# sourceMappingURL=
|
|
15
|
+
export declare const PayloadTableFlexbox: <TNoun extends ExtendEventNoun = EventNoun>({ IconComponent, eventNoun, hashes, schemas, headingTitle, clickableFields, tooltip, ...props }: BWPayloadTableFlexboxProps<TNoun>) => import("react/jsx-runtime").JSX.Element;
|
|
16
|
+
//# sourceMappingURL=PayloadTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PayloadTable.d.ts","sourceRoot":"","sources":["../../../src/components/PayloadTable.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAMzD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAGpC,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,eAAe,GAAG,SAAS,CAAE,SAAQ,YAAY;IACzG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,eAAe,CAAC,EAAE,eAAe,EAAE,CAAA;IACnC,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;IAClB,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,eAAO,MAAM,mBAAmB,GAAI,KAAK,SAAS,eAAe,GAAG,SAAS,EAAE,iGAS5E,0BAA0B,CAAC,KAAK,CAAC,4CAqBnC,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,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;
|
|
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,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAahF,eAAO,MAAM,eAAe,GAAI,SAAS,2BAA2B,EAAE,SAAS,SAAS;;;;;;;;;;;;;;;CAiDvF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/index.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAA;AAChC,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
|
|
@@ -5,4 +5,4 @@ export interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {
|
|
|
5
5
|
transaction?: SignedHydratedTransaction | null;
|
|
6
6
|
}
|
|
7
7
|
export declare const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps>;
|
|
8
|
-
//# sourceMappingURL=
|
|
8
|
+
//# sourceMappingURL=TransactionBoundWitnessDetails.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransactionBoundWitnessDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/transactions/TransactionBoundWitnessDetails.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAMlE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,WAAW,mCAAoC,SAAQ,YAAY;IACvE,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAA;CAC/C;AAED,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CA4DxF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/hooks/useDetails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAA;
|
|
1
|
+
{"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/hooks/useDetails.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAA;AAOtF,eAAO,MAAM,qBAAqB,GAAI,SAAS,iCAAiC;;;;;;;;;;;;;CAoC/E,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/hooks/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAA"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { SignedHydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk';
|
|
2
|
+
export declare const useTransactionPayloadTypes: (wrapper?: SignedHydratedTransactionInstance) => {
|
|
3
|
+
elevatedPayloadHashes: Lowercase<string>[] | undefined;
|
|
4
|
+
elevatedPayloadSchemas: string[] | undefined;
|
|
5
|
+
elevatedPayloadSetsError: Error | undefined;
|
|
6
|
+
publicPayloadHashes: Lowercase<string>[] | undefined;
|
|
7
|
+
publicPayloadSchemas: string[] | undefined;
|
|
8
|
+
publicPayloadsError: Error | undefined;
|
|
9
|
+
referencedPayloadHashes: Lowercase<string>[];
|
|
10
|
+
referencedPayloadSchemas: string[];
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=usePayloadTypes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"usePayloadTypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/hooks/usePayloadTypes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,+BAA+B,CAAA;AAKtF,eAAO,MAAM,0BAA0B,GAAI,UAAU,iCAAiC;;;;;;;;;CAsDrF,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/transactions/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/components/transactions/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sCAAsC,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatNumber.d.ts","sourceRoot":"","sources":["../../../src/lib/formatNumber.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,YAAY,GAAI,KAAK,MAAM,GAAG,MAAM,KAAG,MAEnD,CAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/lib/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,mBAAmB,CAAA;AACjC,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA"}
|
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.5.
|
|
4
|
+
"version": "1.5.30",
|
|
5
5
|
"description": "XYO Layer One React SDK BoundWitness",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -34,28 +34,26 @@
|
|
|
34
34
|
"module": "dist/browser/index.mjs",
|
|
35
35
|
"types": "dist/types/index.d.ts",
|
|
36
36
|
"dependencies": {
|
|
37
|
-
"@xylabs/array": "^4.11.
|
|
38
|
-
"@xylabs/
|
|
39
|
-
"@xylabs/hex": "^4.11.16",
|
|
37
|
+
"@xylabs/array": "^4.11.20",
|
|
38
|
+
"@xylabs/hex": "^4.11.20",
|
|
40
39
|
"@xylabs/react-error": "^6.3.4",
|
|
41
40
|
"@xylabs/react-flexbox": "^6.3.4",
|
|
42
41
|
"@xylabs/react-promise": "^6.3.4",
|
|
43
|
-
"@xylabs/typeof": "^4.11.
|
|
44
|
-
"@xyo-network/boundwitness-model": "^3.18.
|
|
45
|
-
"@xyo-network/chain-utils": "^1.5.
|
|
46
|
-
"@xyo-network/chain-wrappers": "^1.5.
|
|
47
|
-
"@xyo-network/payload-builder": "^3.18.
|
|
48
|
-
"@xyo-network/payload-model": "^3.18.
|
|
49
|
-
"@xyo-network/react-boundwitness-plugin": "^5.3.
|
|
50
|
-
"@xyo-network/react-chain-blockchain": "^1.5.
|
|
51
|
-
"@xyo-network/react-chain-blockies": "^1.5.
|
|
52
|
-
"@xyo-network/react-chain-
|
|
53
|
-
"@xyo-network/react-
|
|
54
|
-
"@xyo-network/react-
|
|
55
|
-
"@xyo-network/react-
|
|
56
|
-
"@xyo-network/
|
|
57
|
-
"@xyo-network/xl1-protocol": "^1.
|
|
58
|
-
"@xyo-network/xl1-protocol-sdk": "^1.5.28",
|
|
42
|
+
"@xylabs/typeof": "^4.11.20",
|
|
43
|
+
"@xyo-network/boundwitness-model": "^3.18.8",
|
|
44
|
+
"@xyo-network/chain-utils": "^1.5.30",
|
|
45
|
+
"@xyo-network/chain-wrappers": "^1.5.30",
|
|
46
|
+
"@xyo-network/payload-builder": "^3.18.8",
|
|
47
|
+
"@xyo-network/payload-model": "^3.18.8",
|
|
48
|
+
"@xyo-network/react-boundwitness-plugin": "^5.3.8",
|
|
49
|
+
"@xyo-network/react-chain-blockchain": "^1.5.30",
|
|
50
|
+
"@xyo-network/react-chain-blockies": "^1.5.30",
|
|
51
|
+
"@xyo-network/react-chain-shared": "^1.5.30",
|
|
52
|
+
"@xyo-network/react-event": "^5.3.8",
|
|
53
|
+
"@xyo-network/react-shared": "^5.3.8",
|
|
54
|
+
"@xyo-network/react-table": "^5.3.8",
|
|
55
|
+
"@xyo-network/xl1-protocol": "^1.4.25",
|
|
56
|
+
"@xyo-network/xl1-protocol-sdk": "^1.5.30",
|
|
59
57
|
"react-icons": "^5.5.0"
|
|
60
58
|
},
|
|
61
59
|
"devDependencies": {
|
|
@@ -63,13 +61,14 @@
|
|
|
63
61
|
"@emotion/styled": "^11.14.0",
|
|
64
62
|
"@mui/icons-material": "^7.1.1",
|
|
65
63
|
"@mui/material": "^7.1.1",
|
|
66
|
-
"@storybook/react-vite": "^9.0.
|
|
64
|
+
"@storybook/react-vite": "^9.0.9",
|
|
67
65
|
"@xylabs/ts-scripts-yarn3": "^6.5.8",
|
|
68
66
|
"@xylabs/tsconfig-react": "^6.5.8",
|
|
69
|
-
"@xyo-network/chain-protocol": "^1.5.
|
|
70
|
-
"@xyo-network/react-chain-network": "^1.5.
|
|
71
|
-
"@xyo-network/react-chain-
|
|
72
|
-
"
|
|
67
|
+
"@xyo-network/chain-protocol": "^1.5.30",
|
|
68
|
+
"@xyo-network/react-chain-network": "^1.5.30",
|
|
69
|
+
"@xyo-network/react-chain-provider": "^1.5.30",
|
|
70
|
+
"@xyo-network/react-chain-shared": "^1.5.30",
|
|
71
|
+
"knip": "^5.61.0",
|
|
73
72
|
"react": "^19.1.0",
|
|
74
73
|
"react-dom": "^19.1.0",
|
|
75
74
|
"react-router-dom": "^7.6.2",
|
|
@@ -1,6 +1,9 @@
|
|
|
1
|
+
import { InfoOutline } from '@mui/icons-material'
|
|
2
|
+
import { Tooltip } from '@mui/material'
|
|
1
3
|
import type { Hash } from '@xylabs/hex'
|
|
2
4
|
import type { FlexBoxProps } from '@xylabs/react-flexbox'
|
|
3
5
|
import { FlexCol } from '@xylabs/react-flexbox'
|
|
6
|
+
import { isDefined } from '@xylabs/typeof'
|
|
4
7
|
import {
|
|
5
8
|
BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,
|
|
6
9
|
} from '@xyo-network/react-boundwitness-plugin'
|
|
@@ -19,21 +22,33 @@ export interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun = Even
|
|
|
19
22
|
hashes?: Hash[]
|
|
20
23
|
headingTitle?: string
|
|
21
24
|
schemas?: string[]
|
|
25
|
+
tooltip?: string
|
|
22
26
|
}
|
|
23
27
|
|
|
24
|
-
export const
|
|
28
|
+
export const PayloadTableFlexbox = <TNoun extends ExtendEventNoun = EventNoun>({
|
|
25
29
|
IconComponent,
|
|
26
30
|
eventNoun,
|
|
27
31
|
hashes,
|
|
28
32
|
schemas,
|
|
29
33
|
headingTitle,
|
|
30
34
|
clickableFields = defaultClickableFields,
|
|
35
|
+
tooltip,
|
|
31
36
|
...props
|
|
32
37
|
}: BWPayloadTableFlexboxProps<TNoun>) => {
|
|
33
38
|
const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />
|
|
34
39
|
return (
|
|
35
40
|
<FlexCol alignItems="stretch" rowGap={1} {...props}>
|
|
36
|
-
<HeadingPaper
|
|
41
|
+
<HeadingPaper
|
|
42
|
+
AdornmentEnd={isDefined(tooltip)
|
|
43
|
+
? (
|
|
44
|
+
<Tooltip title={tooltip}>
|
|
45
|
+
<InfoOutline fontSize="small" sx={{ py: 2, px: 1 }} />
|
|
46
|
+
</Tooltip>
|
|
47
|
+
)
|
|
48
|
+
: null}
|
|
49
|
+
IconComponent={resolvedIconComponent}
|
|
50
|
+
heading={headingTitle}
|
|
51
|
+
/>
|
|
37
52
|
<TableEx>
|
|
38
53
|
<BoundWitnessPayloadTableHead />
|
|
39
54
|
<BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />
|
|
@@ -24,7 +24,7 @@ import { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'
|
|
|
24
24
|
|
|
25
25
|
import { formatPayloadsForTable } from '../../lib/index.ts'
|
|
26
26
|
import type { TransactionBoundWitnessEvents } from '../../types/index.ts'
|
|
27
|
-
import {
|
|
27
|
+
import { PayloadTableFlexbox } from '../PayloadTable.tsx'
|
|
28
28
|
import { BlockBoundWitnessCard } from './card/Card.tsx'
|
|
29
29
|
|
|
30
30
|
export interface BoundWitnessDetailsProps extends FlexBoxProps {
|
|
@@ -71,7 +71,7 @@ export const BlockBoundWitnessDetails = ({
|
|
|
71
71
|
/>
|
|
72
72
|
<BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />
|
|
73
73
|
{(transactions?.length ?? 0) > 0 && (
|
|
74
|
-
<
|
|
74
|
+
<PayloadTableFlexbox<TransactionBoundWitnessEvents>
|
|
75
75
|
IconComponent={<GrTransaction />}
|
|
76
76
|
eventNoun="transaction"
|
|
77
77
|
hashes={txHashes}
|
|
@@ -86,7 +86,7 @@ export const BlockBoundWitnessDetails = ({
|
|
|
86
86
|
</FlexCol>
|
|
87
87
|
{hasNonTxBoundWitnesses
|
|
88
88
|
? (
|
|
89
|
-
<
|
|
89
|
+
<PayloadTableFlexbox<TransactionBoundWitnessEvents>
|
|
90
90
|
IconComponent={<VscSymbolMethod />}
|
|
91
91
|
eventNoun="boundwitness"
|
|
92
92
|
hashes={nonTxBwHashes}
|
|
@@ -3,21 +3,22 @@ import { StepSizes, type XyoViewer } from '@xyo-network/xl1-protocol'
|
|
|
3
3
|
import type { SignedHydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'
|
|
4
4
|
import { useMemo } from 'react'
|
|
5
5
|
|
|
6
|
-
import { formatResults } from '../../../../lib/index.ts'
|
|
6
|
+
import { formatNumber, formatResults } from '../../../../lib/index.ts'
|
|
7
7
|
|
|
8
8
|
const generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {
|
|
9
9
|
const stepSize = StepSizes[stepHashIndex]
|
|
10
10
|
const stepStart = blockNumber - stepSize + 1
|
|
11
11
|
const stepStop = blockNumber
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]
|
|
13
14
|
}
|
|
14
15
|
|
|
15
16
|
export const useBlockDetails = (wrapper: SignedHydratedBlockInstance, viewer?: XyoViewer) => {
|
|
16
17
|
const stats = useMemo(() => {
|
|
17
18
|
const stats = {
|
|
18
|
-
Height: wrapper.boundWitness.block
|
|
19
|
+
Height: formatNumber(wrapper.boundWitness.block),
|
|
19
20
|
Protocol: wrapper.boundWitness.protocol.toString(),
|
|
20
|
-
Signatures: wrapper.signatureCount
|
|
21
|
+
Signatures: formatNumber(wrapper.signatureCount),
|
|
21
22
|
$epoch: wrapper.boundWitness.$epoch.toString(),
|
|
22
23
|
}
|
|
23
24
|
|
|
@@ -26,10 +27,8 @@ export const useBlockDetails = (wrapper: SignedHydratedBlockInstance, viewer?: X
|
|
|
26
27
|
|
|
27
28
|
const payloads = useMemo(() => {
|
|
28
29
|
const payloads = {
|
|
29
|
-
'Transactions': wrapper.transactionCount
|
|
30
|
-
'
|
|
31
|
-
'Private Payloads': wrapper.privatePayloadCount.toLocaleString(navigator.language ?? 'en-US'),
|
|
32
|
-
'Total Payloads': wrapper.payloadCount.toLocaleString(navigator.language ?? 'en-US'),
|
|
30
|
+
'Transactions': formatNumber(wrapper.transactionCount),
|
|
31
|
+
'Total Payloads': formatNumber(wrapper.payloadCount),
|
|
33
32
|
}
|
|
34
33
|
|
|
35
34
|
return formatResults(payloads)
|
package/src/components/index.ts
CHANGED
|
@@ -2,7 +2,7 @@ import type { Meta, StoryFn } from '@storybook/react-vite'
|
|
|
2
2
|
import { buildRandomTransaction } from '@xyo-network/chain-protocol'
|
|
3
3
|
import React from 'react'
|
|
4
4
|
|
|
5
|
-
import { TransactionBoundWitnessDetails } from './
|
|
5
|
+
import { TransactionBoundWitnessDetails } from './TransactionBoundWitnessDetails.tsx'
|
|
6
6
|
|
|
7
7
|
export default {
|
|
8
8
|
title: 'BoundWitness/Transaction/Details/Flexbox',
|
package/src/components/transactions/{TransactionDetails.tsx → TransactionBoundWitnessDetails.tsx}
RENAMED
|
@@ -1,21 +1,19 @@
|
|
|
1
1
|
import { ErrorRender } from '@xylabs/react-error'
|
|
2
2
|
import { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'
|
|
3
3
|
import { usePromise } from '@xylabs/react-promise'
|
|
4
|
-
import { isDefined } from '@xylabs/typeof'
|
|
5
4
|
import { SignedHydratedTransactionWrapper } from '@xyo-network/chain-wrappers'
|
|
6
|
-
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
7
5
|
import {
|
|
8
6
|
BoundWitnessSignatureTable, BWActions, HashHeadingPaper, HeadingPaper,
|
|
9
7
|
} from '@xyo-network/react-boundwitness-plugin'
|
|
10
8
|
import type { SignedHydratedTransaction } from '@xyo-network/xl1-protocol'
|
|
11
9
|
import React from 'react'
|
|
12
10
|
import { FaSignature } from 'react-icons/fa'
|
|
13
|
-
import {
|
|
11
|
+
import { VscSymbolNamespace } from 'react-icons/vsc'
|
|
14
12
|
|
|
15
|
-
import {
|
|
16
|
-
import
|
|
17
|
-
import { BWPayloadTableFlexbox } from '../BwPayloadTable.tsx'
|
|
13
|
+
import type { ClickableFields } from '../PayloadTable.tsx'
|
|
14
|
+
import { PayloadTableFlexbox } from '../PayloadTable.tsx'
|
|
18
15
|
import { TransactionBoundWitnessCard } from './card/index.ts'
|
|
16
|
+
import { useTransactionPayloadTypes } from './hooks/index.ts'
|
|
19
17
|
|
|
20
18
|
const nonClickableFields: ClickableFields[] = []
|
|
21
19
|
|
|
@@ -30,33 +28,11 @@ export const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDet
|
|
|
30
28
|
}
|
|
31
29
|
}, [transaction])
|
|
32
30
|
|
|
33
|
-
const
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
} else {
|
|
39
|
-
return { hashes: [], schemas: [] }
|
|
40
|
-
}
|
|
41
|
-
}, [wrapper])
|
|
42
|
-
|
|
43
|
-
// TODO - use forthcoming wrapper method since hydrated transactions don't include non-elevated payloads
|
|
44
|
-
const [nonElevatedPayloadSets, nonElevatedPayloadSetsError] = usePromise(async () => {
|
|
45
|
-
if (isDefined(wrapper)) {
|
|
46
|
-
const elevatedPayloads = wrapper.elevatedPayloads
|
|
47
|
-
const payloads = wrapper.payloads
|
|
48
|
-
const nonElevatedPayloads = payloads.filter((payload) => {
|
|
49
|
-
return elevatedPayloads.every(elevated => elevated._hash !== payload._hash)
|
|
50
|
-
})
|
|
51
|
-
const pairs = await PayloadBuilder.hashPairs(nonElevatedPayloads)
|
|
52
|
-
return formatPayloadsForTable(pairs)
|
|
53
|
-
} else {
|
|
54
|
-
return { hashes: [], schemas: [] }
|
|
55
|
-
}
|
|
56
|
-
}, [wrapper])
|
|
57
|
-
|
|
58
|
-
const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}
|
|
59
|
-
const { hashes: nonElevatedPayloadHashes, schemas: nonElevatedPayloadSchemas } = nonElevatedPayloadSets ?? {}
|
|
31
|
+
const {
|
|
32
|
+
elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,
|
|
33
|
+
publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,
|
|
34
|
+
referencedPayloadHashes, referencedPayloadSchemas,
|
|
35
|
+
} = useTransactionPayloadTypes(wrapper)
|
|
60
36
|
|
|
61
37
|
return (
|
|
62
38
|
<FlexCol alignItems="stretch" rowGap={2} {...props}>
|
|
@@ -68,22 +44,34 @@ export const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDet
|
|
|
68
44
|
/>
|
|
69
45
|
<ErrorRender error={wrapperError} scope="wrapperError:TransactionBoundWitnessDetails.tsx" />
|
|
70
46
|
<ErrorRender error={elevatedPayloadSetsError} scope="elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx" />
|
|
71
|
-
<ErrorRender error={
|
|
47
|
+
<ErrorRender error={publicPayloadsError} scope="publicPayloadsError:TransactionBoundWitnessDetails.tsx" />
|
|
72
48
|
<TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />
|
|
73
|
-
<
|
|
49
|
+
<PayloadTableFlexbox
|
|
50
|
+
tooltip="Payloads included in the transaction that are elevated and validated."
|
|
74
51
|
IconComponent={<VscSymbolNamespace />}
|
|
75
52
|
hashes={elevatedPayloadHashes}
|
|
76
|
-
headingTitle="
|
|
53
|
+
headingTitle="On Chain Payloads"
|
|
77
54
|
schemas={elevatedPayloadSchemas}
|
|
78
55
|
sx={{ mb: 1 }}
|
|
79
56
|
/>
|
|
80
|
-
{(
|
|
81
|
-
<
|
|
82
|
-
|
|
57
|
+
{(publicPayloadHashes?.length ?? 0) > 0 && (
|
|
58
|
+
<PayloadTableFlexbox
|
|
59
|
+
tooltip="Public payloads included in the transaction."
|
|
60
|
+
IconComponent={<VscSymbolNamespace />}
|
|
61
|
+
hashes={publicPayloadHashes}
|
|
62
|
+
headingTitle="Public Payloads"
|
|
63
|
+
schemas={publicPayloadSchemas}
|
|
64
|
+
sx={{ mb: 1 }}
|
|
65
|
+
/>
|
|
66
|
+
)}
|
|
67
|
+
{(referencedPayloadHashes?.length ?? 0) > 0 && (
|
|
68
|
+
<PayloadTableFlexbox
|
|
69
|
+
tooltip="Payload hashes referenced by the transaction but not included."
|
|
70
|
+
IconComponent={<VscSymbolNamespace />}
|
|
83
71
|
clickableFields={nonClickableFields}
|
|
84
|
-
hashes={
|
|
85
|
-
headingTitle="
|
|
86
|
-
schemas={
|
|
72
|
+
hashes={referencedPayloadHashes}
|
|
73
|
+
headingTitle="Referenced Payloads"
|
|
74
|
+
schemas={referencedPayloadSchemas}
|
|
87
75
|
sx={{ mb: 1 }}
|
|
88
76
|
/>
|
|
89
77
|
)}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import type { SignedHydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'
|
|
2
2
|
import { useMemo } from 'react'
|
|
3
3
|
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
formatFee, formatNumber, formatResults,
|
|
6
|
+
} from '../../../../lib/index.ts'
|
|
5
7
|
|
|
6
8
|
export const useTransactionDetails = (wrapper: SignedHydratedTransactionInstance) => {
|
|
7
9
|
const stats = useMemo(() => {
|
|
8
10
|
const stats = {
|
|
9
|
-
'Reward': wrapper.reward()
|
|
10
|
-
'
|
|
11
|
-
'
|
|
12
|
-
'
|
|
11
|
+
'Reward': formatNumber(wrapper.reward()),
|
|
12
|
+
'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),
|
|
13
|
+
'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),
|
|
14
|
+
'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),
|
|
15
|
+
'Signatures': formatNumber(wrapper.signatureCount),
|
|
13
16
|
}
|
|
14
17
|
|
|
15
18
|
return formatResults(stats)
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from './usePayloadTypes.ts'
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { Hash } from '@xylabs/hex'
|
|
2
|
+
import { isHash } from '@xylabs/hex'
|
|
3
|
+
import { usePromise } from '@xylabs/react-promise'
|
|
4
|
+
import { isDefined } from '@xylabs/typeof'
|
|
5
|
+
import { PayloadBuilder } from '@xyo-network/payload-builder'
|
|
6
|
+
import type { Schema } from '@xyo-network/payload-model'
|
|
7
|
+
import { isSchema } from '@xyo-network/payload-model'
|
|
8
|
+
import type { SignedHydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'
|
|
9
|
+
import { useMemo } from 'react'
|
|
10
|
+
|
|
11
|
+
import { formatPayloadsForTable } from '../../../lib/index.ts'
|
|
12
|
+
|
|
13
|
+
export const useTransactionPayloadTypes = (wrapper?: SignedHydratedTransactionInstance) => {
|
|
14
|
+
const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {
|
|
15
|
+
if (isDefined(wrapper)) {
|
|
16
|
+
const elevatedPayloads = wrapper.elevatedPayloads
|
|
17
|
+
const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)
|
|
18
|
+
return formatPayloadsForTable(pairs)
|
|
19
|
+
} else {
|
|
20
|
+
return { hashes: [], schemas: [] }
|
|
21
|
+
}
|
|
22
|
+
}, [wrapper])
|
|
23
|
+
|
|
24
|
+
const [publicPayloads, publicPayloadsError] = usePromise(async () => {
|
|
25
|
+
if (isDefined(wrapper)) {
|
|
26
|
+
const publicPayloads = wrapper.publicExternalPayloads
|
|
27
|
+
const pairs = await PayloadBuilder.hashPairs(publicPayloads)
|
|
28
|
+
return formatPayloadsForTable(pairs)
|
|
29
|
+
} else {
|
|
30
|
+
return { hashes: [], schemas: [] }
|
|
31
|
+
}
|
|
32
|
+
}, [wrapper])
|
|
33
|
+
|
|
34
|
+
const referencedPayloads = useMemo(() => {
|
|
35
|
+
const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }
|
|
36
|
+
if (isDefined(wrapper)) {
|
|
37
|
+
const referencedPayloads = wrapper.privateExternalPayloads
|
|
38
|
+
for (const [hash, payloadOrSchema] of Object.entries(referencedPayloads)) {
|
|
39
|
+
if (isHash(hash)) {
|
|
40
|
+
ret.hashes.push(hash)
|
|
41
|
+
}
|
|
42
|
+
if (isSchema(payloadOrSchema)) {
|
|
43
|
+
ret.schemas.push(hash)
|
|
44
|
+
}
|
|
45
|
+
throw new Error(`Unexpected payload or schema type for hash ${hash}: ${payloadOrSchema}`)
|
|
46
|
+
}
|
|
47
|
+
return ret
|
|
48
|
+
} else {
|
|
49
|
+
return ret
|
|
50
|
+
}
|
|
51
|
+
}, [wrapper, elevatedPayloadSets])
|
|
52
|
+
|
|
53
|
+
const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}
|
|
54
|
+
const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}
|
|
55
|
+
const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}
|
|
56
|
+
|
|
57
|
+
return {
|
|
58
|
+
elevatedPayloadHashes,
|
|
59
|
+
elevatedPayloadSchemas,
|
|
60
|
+
elevatedPayloadSetsError,
|
|
61
|
+
publicPayloadHashes,
|
|
62
|
+
publicPayloadSchemas,
|
|
63
|
+
publicPayloadsError,
|
|
64
|
+
referencedPayloadHashes,
|
|
65
|
+
referencedPayloadSchemas,
|
|
66
|
+
}
|
|
67
|
+
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export * from './card/index.ts'
|
|
2
|
-
export * from './
|
|
2
|
+
export * from './TransactionBoundWitnessDetails.tsx'
|
package/src/lib/index.ts
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BwPayloadTable.d.ts","sourceRoot":"","sources":["../../../src/components/BwPayloadTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAKzD,OAAO,KAAK,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAE1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAGzB,MAAM,MAAM,eAAe,GAAG,MAAM,CAAA;AAGpC,MAAM,WAAW,0BAA0B,CAAC,KAAK,SAAS,eAAe,GAAG,SAAS,CAAE,SAAQ,YAAY;IACzG,aAAa,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;IAC/B,eAAe,CAAC,EAAE,eAAe,EAAE,CAAA;IACnC,SAAS,CAAC,EAAE,KAAK,CAAA;IACjB,MAAM,CAAC,EAAE,IAAI,EAAE,CAAA;IACf,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,eAAO,MAAM,qBAAqB,GAAI,KAAK,SAAS,eAAe,GAAG,SAAS,EAAE,wFAQ9E,0BAA0B,CAAC,KAAK,CAAC,4CAWnC,CAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionDetails.d.ts","sourceRoot":"","sources":["../../../../src/components/transactions/TransactionDetails.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,YAAY,EAAW,MAAM,uBAAuB,CAAA;AAQlE,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AAC1E,OAAO,KAAK,MAAM,OAAO,CAAA;AAWzB,MAAM,WAAW,mCAAoC,SAAQ,YAAY;IACvE,WAAW,CAAC,EAAE,yBAAyB,GAAG,IAAI,CAAA;CAC/C;AAED,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAsExF,CAAA"}
|