@xyo-network/react-chain-boundwitness 1.10.2 → 1.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/components/block/BlockBoundWitnessDetails.stories.d.ts +3 -3
- package/dist/browser/components/transactions/TransactionBoundWitnessDetails.d.ts +2 -2
- package/dist/browser/components/transactions/TransactionBoundWitnessDetails.d.ts.map +1 -1
- package/dist/browser/components/transactions/TransactionBoundWitnessDetails.stories.d.ts +4 -4
- package/dist/browser/components/transactions/card/actions/TransactionActions.d.ts +2 -2
- package/dist/browser/components/transactions/card/actions/TransactionActions.d.ts.map +1 -1
- package/dist/browser/components/transactions/card/actions/TransactionVerification.d.ts +2 -2
- package/dist/browser/components/transactions/card/actions/TransactionVerification.d.ts.map +1 -1
- package/dist/browser/components/transactions/hooks/usePayloadTypes.d.ts +15 -4
- package/dist/browser/components/transactions/hooks/usePayloadTypes.d.ts.map +1 -1
- package/dist/browser/index.mjs +2 -2
- package/dist/browser/index.mjs.map +1 -1
- package/dist/browser/lib/formatPayloadsForTable.d.ts +5 -1
- package/dist/browser/lib/formatPayloadsForTable.d.ts.map +1 -1
- package/package.json +27 -27
- package/src/components/transactions/TransactionBoundWitnessDetails.stories.tsx +3 -3
- package/src/components/transactions/TransactionBoundWitnessDetails.tsx +2 -2
- package/src/components/transactions/card/actions/TransactionActions.tsx +2 -2
- package/src/components/transactions/card/actions/TransactionVerification.tsx +6 -4
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
declare const _default: Meta;
|
|
3
3
|
export default _default;
|
|
4
|
-
declare const Default: import(".store/storybook-virtual-
|
|
5
|
-
declare const WithData: import(".store/storybook-virtual-
|
|
6
|
-
declare const WithDataEvents: import(".store/storybook-virtual-
|
|
4
|
+
declare const Default: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./BlockBoundWitnessDetails.tsx").BoundWitnessDetailsProps>;
|
|
5
|
+
declare const WithData: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./BlockBoundWitnessDetails.tsx").BoundWitnessDetailsProps>;
|
|
6
|
+
declare const WithDataEvents: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./BlockBoundWitnessDetails.tsx").BoundWitnessDetailsProps>;
|
|
7
7
|
export { Default, WithData, WithDataEvents, };
|
|
8
8
|
//# sourceMappingURL=BlockBoundWitnessDetails.stories.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type FlexBoxProps } from '@xylabs/react-flexbox';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
export interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {
|
|
5
|
-
transaction?:
|
|
5
|
+
transaction?: SignedHydratedTransactionWithStorageMeta | null;
|
|
6
6
|
}
|
|
7
7
|
export declare const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps>;
|
|
8
8
|
//# sourceMappingURL=TransactionBoundWitnessDetails.d.ts.map
|
|
@@ -1 +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,
|
|
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,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AAEzF,OAAO,KAAK,MAAM,OAAO,CAAA;AAUzB,MAAM,WAAW,mCAAoC,SAAQ,YAAY;IACvE,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,8BAA8B,EAAE,KAAK,CAAC,EAAE,CAAC,mCAAmC,CAoExF,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { Meta } from '@storybook/react-vite';
|
|
2
2
|
declare const _default: Meta;
|
|
3
3
|
export default _default;
|
|
4
|
-
declare const Default: import(".store/storybook-virtual-
|
|
5
|
-
declare const WithData: import(".store/storybook-virtual-
|
|
6
|
-
declare const WithDataEvents: import(".store/storybook-virtual-
|
|
7
|
-
declare const WithInvalidData: import(".store/storybook-virtual-
|
|
4
|
+
declare const Default: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransactionBoundWitnessDetails.tsx").TransactionBoundWitnessDetailsProps>;
|
|
5
|
+
declare const WithData: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransactionBoundWitnessDetails.tsx").TransactionBoundWitnessDetailsProps>;
|
|
6
|
+
declare const WithDataEvents: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransactionBoundWitnessDetails.tsx").TransactionBoundWitnessDetailsProps>;
|
|
7
|
+
declare const WithInvalidData: import(".store/storybook-virtual-ad5e384318/package/internal/csf").AnnotatedStoryFn<import("@storybook/react-vite").ReactRenderer, import("./TransactionBoundWitnessDetails.tsx").TransactionBoundWitnessDetailsProps>;
|
|
8
8
|
export { Default, WithData, WithDataEvents, WithInvalidData, };
|
|
9
9
|
//# sourceMappingURL=TransactionBoundWitnessDetails.stories.d.ts.map
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { FlexBoxProps } from '@xylabs/react-flexbox';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
export interface TransactionActionsProps extends FlexBoxProps {
|
|
5
|
-
transaction?:
|
|
5
|
+
transaction?: SignedHydratedTransactionWithStorageMeta | null;
|
|
6
6
|
validationIconColors?: boolean;
|
|
7
7
|
}
|
|
8
8
|
export declare const TransactionActions: React.FC<TransactionActionsProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionActions.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAKzD,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"TransactionActions.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionActions.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AAKzD,OAAO,KAAK,EAAE,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AACzF,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,MAAM,WAAW,uBAAwB,SAAQ,YAAY;IAC3D,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;IAC7D,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAED,eAAO,MAAM,kBAAkB,EAAE,KAAK,CAAC,EAAE,CAAC,uBAAuB,CAoBhE,CAAA"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button';
|
|
2
|
-
import type {
|
|
2
|
+
import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol';
|
|
3
3
|
import React from 'react';
|
|
4
4
|
export interface TxVerification extends QuickTipButtonProps {
|
|
5
5
|
iconColors?: boolean;
|
|
6
|
-
transaction?:
|
|
6
|
+
transaction?: SignedHydratedTransactionWithStorageMeta | null;
|
|
7
7
|
}
|
|
8
8
|
export declare const TransactionVerification: React.FC<TxVerification>;
|
|
9
9
|
//# sourceMappingURL=TransactionVerification.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TransactionVerification.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionVerification.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"TransactionVerification.d.ts","sourceRoot":"","sources":["../../../../../../src/components/transactions/card/actions/TransactionVerification.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AAEzE,OAAO,KAAK,EAAsC,wCAAwC,EAAE,MAAM,2BAA2B,CAAA;AAG7H,OAAO,KAAkB,MAAM,OAAO,CAAA;AAMtC,MAAM,WAAW,cAAe,SAAQ,mBAAmB;IACzD,UAAU,CAAC,EAAE,OAAO,CAAA;IACpB,WAAW,CAAC,EAAE,wCAAwC,GAAG,IAAI,CAAA;CAC9D;AAED,eAAO,MAAM,uBAAuB,EAAE,KAAK,CAAC,EAAE,CAAC,cAAc,CAuB5D,CAAA"}
|
|
@@ -1,13 +1,24 @@
|
|
|
1
|
-
import type { Hash } from '@xylabs/hex';
|
|
2
1
|
import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk';
|
|
3
2
|
export declare const useTransactionPayloadTypes: (wrapper?: HydratedTransactionInstance) => {
|
|
4
|
-
elevatedPayloadHashes:
|
|
3
|
+
elevatedPayloadHashes: import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
4
|
+
readonly __hex: true;
|
|
5
|
+
}>, {
|
|
6
|
+
readonly __hash: true;
|
|
7
|
+
}>[] | undefined;
|
|
5
8
|
elevatedPayloadSchemas: string[] | undefined;
|
|
6
9
|
elevatedPayloadSetsError: Error | undefined;
|
|
7
|
-
publicPayloadHashes:
|
|
10
|
+
publicPayloadHashes: import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
11
|
+
readonly __hex: true;
|
|
12
|
+
}>, {
|
|
13
|
+
readonly __hash: true;
|
|
14
|
+
}>[] | undefined;
|
|
8
15
|
publicPayloadSchemas: string[] | undefined;
|
|
9
16
|
publicPayloadsError: Error | undefined;
|
|
10
|
-
referencedPayloadHashes:
|
|
17
|
+
referencedPayloadHashes: import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
18
|
+
readonly __hex: true;
|
|
19
|
+
}>, {
|
|
20
|
+
readonly __hash: true;
|
|
21
|
+
}>[];
|
|
11
22
|
referencedPayloadSchemas: string[];
|
|
12
23
|
referencedPayloadsError: Error[];
|
|
13
24
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"usePayloadTypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/hooks/usePayloadTypes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"usePayloadTypes.d.ts","sourceRoot":"","sources":["../../../../../src/components/transactions/hooks/usePayloadTypes.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAA;AAKhF,eAAO,MAAM,0BAA0B,GAAI,UAAU,2BAA2B;;;;;;;;;;;;;;;;;;;;;;CA6D/E,CAAA"}
|
package/dist/browser/index.mjs
CHANGED
|
@@ -424,7 +424,7 @@ import { assertEx as assertEx2 } from "@xylabs/assert";
|
|
|
424
424
|
import { ErrorQuickTipButton as ErrorQuickTipButton2 } from "@xylabs/react-error";
|
|
425
425
|
import { usePromise as usePromise4 } from "@xylabs/react-promise";
|
|
426
426
|
import { isDefined as isDefined3 } from "@xylabs/typeof";
|
|
427
|
-
import {
|
|
427
|
+
import { isSignedHydratedTransactionWithStorageMeta } from "@xyo-network/xl1-protocol";
|
|
428
428
|
import { validateTransaction } from "@xyo-network/xl1-validation";
|
|
429
429
|
import { useMemo as useMemo4 } from "react";
|
|
430
430
|
import { jsx as jsx7 } from "react/jsx-runtime";
|
|
@@ -433,7 +433,7 @@ InvalidIcon2.displayName = "InvalidIcon";
|
|
|
433
433
|
var TransactionVerification = ({ transaction, ...props }) => {
|
|
434
434
|
const [validationErrors, validateError] = usePromise4(async () => {
|
|
435
435
|
if (isDefined3(transaction)) {
|
|
436
|
-
const resolvedTransaction = assertEx2(
|
|
436
|
+
const resolvedTransaction = assertEx2(isSignedHydratedTransactionWithStorageMeta(transaction) ? transaction : void 0, () => "Transaction must be a SignedHydratedTransactionWithStorageMeta");
|
|
437
437
|
return await validateTransaction(resolvedTransaction);
|
|
438
438
|
}
|
|
439
439
|
}, [transaction]);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatNumber.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/PayloadTable.tsx","../../src/components/block/card/actions/BlockBoundWitnessActions.tsx","../../src/components/block/card/actions/BlockBoundWitnessVerification.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/actions/TransactionActions.tsx","../../src/components/transactions/card/actions/TransactionVerification.tsx","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionBoundWitnessDetails.tsx","../../src/components/transactions/hooks/usePayloadTypes.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport { ErrorRender } from '@xylabs/react-error'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport type { EventNoun } from '@xyo-network/react-event'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { HydratedBlock, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { GrTransaction } from 'react-icons/gr'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { TransactionBoundWitnessEvents } from '../../types/index.ts'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { BlockBoundWitnessActions, BlockBoundWitnessCard } from './card/index.ts'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: HydratedBlock\n viewer?: XyoViewer\n}\n\nexport const BlockBoundWitnessDetails = ({\n block, paper, viewer, children, ...props\n}: BoundWitnessDetailsProps) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (block) {\n return await HydratedBlockWrapper.parse(block)\n }\n }, [block])\n\n const boundWitness = block?.[0]\n const payloads = block?.[1]\n\n const hash = usePayloadHash(boundWitness)\n\n const [transactions, txFromBlockError] = useTxsFromBlock(block)\n\n const { hashes: txHashes, schemas: txSchemas } = useMemo(() => formatPayloadsForTable(transactions ?? []), [transactions])\n\n const [nonTxBoundWitnesses, bwsFromBlockError] = usePromise(async () => {\n const bws = filterAs(payloads ?? [], payload =>\n (!isTransactionBoundWitness(payload) && isBoundWitness(payload)) ? payload : undefined)\n return await PayloadBuilder.hashPairs(bws)\n }, [payloads])\n\n const { hashes: nonTxBwHashes, schemas: nonTxBwSchemas } = useMemo(() => formatPayloadsForTable(nonTxBoundWitnesses ?? []), [nonTxBoundWitnesses])\n const hasNonTxBoundWitnesses = (nonTxBoundWitnesses?.length ?? 0) > 0\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={4} {...props}>\n <ErrorRender error={txFromBlockError ?? bwsFromBlockError} scope=\"BlockBoundWitnessDetails.tsx\" />\n <ErrorRender error={wrapperError} scope=\"BlockBoundWitnessDetails.tsx:wrapperError\" />\n <HashHeadingPaper\n hash={hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BlockBoundWitnessActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0 && (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\n clickableFields={['hash']}\n hashes={txHashes}\n headingTitle=\"Transactions\"\n schemas={txSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<VscSymbolNamespace />} heading=\"Payloads\" />\n <BoundWitnessPayloadsTable boundwitness={boundWitness} eventNoun=\"payload\" clickableFields={['hash']} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<EventNoun>\n IconComponent={<VscSymbolMethod />}\n eventNoun=\"boundwitness\"\n hashes={nonTxBwHashes}\n headingTitle=\"Bound Witnesses\"\n schemas={nonTxBwSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport { bigIntToFixedPointString } from '@xyo-network/chain-utils'\n\nexport const formatFee = (fee?: bigint) => {\n if (isUndefined(fee)) return 'N/A'\n const stringValue = bigIntToFixedPointString(fee, 12)\n if (stringValue === '0') return stringValue\n return stringValue\n}\n","export const formatNumber = (num: number | bigint): string => {\n return num.toLocaleString(navigator.language ?? 'en-US')\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n let hashes: Hash[] = []\n let schemas: string[] = []\n for (const [bw, hash] of pairs ?? []) {\n hashes.push(hash)\n schemas.push(bw?.schema ?? '')\n }\n return { hashes, schemas }\n}\n","export const formatResults = (results: Record<string, string>) => {\n const result = { labels: [] as string[], values: [] as string[] }\n for (const [label, value] of Object.entries(results)) {\n result.labels.push(label)\n result.values.push(value)\n }\n return result\n}\n","import { InfoOutline } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { Hash } from '@xylabs/hex'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { EventNoun, ExtendEventNoun } from '@xyo-network/react-event'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\nimport { VscSymbolMethod } from 'react-icons/vsc'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n tooltip?: string\n}\n\nexport const PayloadTableFlexbox = <TNoun extends ExtendEventNoun<string> = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields,\n tooltip,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutline fontSize=\"small\" sx={{ py: 2, px: 1 }} />\n </Tooltip>\n )\n : null}\n IconComponent={resolvedIconComponent}\n heading={headingTitle}\n />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\n )\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { BlockBoundWitnessVerification } from './BlockBoundWitnessVerification.tsx'\n\nexport interface BlockBoundWitnessActionsProps extends FlexBoxProps {\n boundwitness?: BoundWitness\n validationIconColors?: boolean\n}\n\nexport const BlockBoundWitnessActions: React.FC<BlockBoundWitnessActionsProps> = ({\n boundwitness,\n validationIconColors = false,\n ...props\n}) => {\n const hash = usePayloadHash(boundwitness)\n\n return (\n <FlexRow {...props}>\n {boundwitness?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={boundwitness} />}\n <BlockBoundWitnessVerification iconColors={validationIconColors} block={boundwitness} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{boundwitness ? JSON.stringify(boundwitness, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport type { BlockValidationError } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface BWVerification extends QuickTipButtonProps {\n block?: BoundWitness\n iconColors?: boolean\n}\n\nexport const BlockBoundWitnessVerification: React.FC<BWVerification> = ({ block, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(block)) {\n const resolvedBlock = assertEx(isBlockBoundWitness(block) ? block : undefined, () => 'Block must be a BlockBoundWitness')\n return await validateBlock(resolvedBlock)\n }\n }, [block])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | BlockValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Block\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, Grid,\n Skeleton,\n Stack,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GrSteps } from 'react-icons/gr'\nimport { IoStatsChartOutline } from 'react-icons/io5'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { BlockBoundWitnessCardHeader } from './CardHeader.tsx'\nimport { useBlockDetails } from './hooks/index.ts'\n\nexport interface BlockBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n viewer?: XyoViewer\n wrapper?: HydratedBlockInstance\n}\n\nexport const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({\n linkedAddress = true, viewer, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => <BlockBoundWitnessCardHeader key={address} address={address} linked={linkedAddress} />)}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack gap={0.25}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/hex'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({ linked = true, address }) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n avatar={(\n <Tooltip title={`Address - ${address}`}>\n <BlockiesAvatarAddress\n address={address}\n onClick={() => dispatch('address', 'click', address)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StepSizes, type XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatNumber, formatResults } from '../../../../lib/index.ts'\n\nconst generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {\n const stepSize = StepSizes[stepHashIndex]\n const stepStart = blockNumber - stepSize + 1\n const stepStop = blockNumber\n\n return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]\n}\n\nexport const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n Protocol: wrapper.boundWitness.protocol.toString(),\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: wrapper.boundWitness.$epoch.toString(),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n const payloads = {\n 'Transactions': formatNumber(wrapper.transactionCount),\n 'Total Payloads': formatNumber(wrapper.payloadCount),\n }\n\n return formatResults(payloads)\n }, [wrapper])\n\n const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {\n if (viewer) {\n const stepHashes: Record<string, string> = {}\n for (const [index, hash] of wrapper.boundWitness.step_hashes.entries()) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n stepHashes[`Step ${index}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n const [label, value] = generateStepHashText(blockNumber, index)\n stepHashes[label] = value\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n stepHashes[`Step ${index}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n }\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { HydratedTransaction } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport { TransactionVerification } from './TransactionVerification.tsx'\n\nexport interface TransactionActionsProps extends FlexBoxProps {\n transaction?: HydratedTransaction | null\n validationIconColors?: boolean\n}\n\nexport const TransactionActions: React.FC<TransactionActionsProps> = ({\n transaction,\n validationIconColors = false,\n ...props\n}) => {\n const txBw = transaction?.[0]\n const hash = usePayloadHash(txBw)\n return (\n <FlexRow {...props}>\n {txBw?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={txBw} />}\n <TransactionVerification iconColors={validationIconColors} transaction={transaction} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{transaction ? JSON.stringify(transaction, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { HydratedTransaction, HydratedTransactionValidationError } from '@xyo-network/xl1-protocol'\nimport { isHydratedTransaction } from '@xyo-network/xl1-protocol'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface TxVerification extends QuickTipButtonProps {\n iconColors?: boolean\n transaction?: HydratedTransaction | null\n}\n\nexport const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(transaction)) {\n const resolvedTransaction = assertEx(isHydratedTransaction(transaction) ? transaction : undefined, () => 'Transaction must be a HydratedTransaction')\n return await validateTransaction(resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Link, Tooltip, Typography,\n} from '@mui/material'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n avatar={(\n <Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>\n <BlockiesAvatarAddress\n address={wrapper?.boundWitness.from}\n onClick={() => dispatch('address', 'click', wrapper.boundWitness.from)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiReceiveMoney} heading=\"Fees\" tooltipTitle=\"Fees offered to the producer\">\n <LabelValueStack labels={fees.labels} values={fees.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiSandsOfTime} heading=\"Block Duration\" tooltipTitle=\"Block window for the transaction to be valid\">\n <LabelValueStack labels={blockDuration.labels} values={blockDuration.values} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {\n const stats = useMemo(() => {\n const stats = {\n 'Reward': formatNumber(wrapper.reward()),\n 'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),\n 'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),\n 'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),\n 'Signatures': formatNumber(wrapper.signatureCount),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const fees = useMemo(() => {\n const fees = {\n 'Base': formatFee(wrapper.fees.base),\n 'Gas': formatFee(wrapper.fees.gasPrice),\n 'Priority': formatFee(wrapper.fees.priority),\n 'Gas Limit': formatFee(wrapper.fees.gasLimit),\n }\n\n return formatResults(fees)\n }, [wrapper])\n\n const blockDuration = useMemo(() => {\n const blockDuration = {\n 'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),\n 'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),\n }\n\n return formatResults(blockDuration)\n }, [wrapper])\n\n return {\n stats, fees, blockDuration,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { HydratedTransaction } from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionActions, TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst nonClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n transaction?: HydratedTransaction | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await HydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas, referencedPayloadsError,\n } = useTransactionPayloadTypes(wrapper)\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <ErrorRender error={wrapperError} scope=\"wrapperError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={elevatedPayloadSetsError} scope=\"elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={publicPayloadsError} scope=\"publicPayloadsError:TransactionBoundWitnessDetails.tsx\" />\n {referencedPayloadsError.map((error, index) =>\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <ErrorRender key={index} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payloads included in the transaction that are elevated and validated.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"On Chain Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(publicPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Public payloads included in the transaction.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={publicPayloadHashes}\n headingTitle=\"Public Payloads\"\n schemas={publicPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n {(referencedPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n // TODO - bring back once the hashes can be searched via datalake\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n clickableFields={nonClickableFields}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { isSchema } from '@xyo-network/payload-model'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo, useState } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance) => {\n const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [publicPayloads, publicPayloadsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const publicPayloads = wrapper.publicExternalPayloads\n const pairs = await PayloadBuilder.hashPairs(publicPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [referencedPayloadsError, setReferencedPayloadsError] = useState<Error[]>([])\n const referencedPayloads = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n let resolved = false\n if (isHash(hash)) {\n ret.hashes.push(hash)\n resolved = true\n }\n if (isSchema(schema)) {\n ret.schemas.push(schema)\n resolved = true\n }\n if (!resolved) {\n setReferencedPayloadsError(prev => [...prev, new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)])\n }\n }\n return ret\n } else {\n return ret\n }\n }, [wrapper, elevatedPayloadSets])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}\n const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}\n\n return {\n elevatedPayloadHashes,\n elevatedPayloadSchemas,\n elevatedPayloadSetsError,\n publicPayloadHashes,\n publicPayloadSchemas,\n publicPayloadsError,\n referencedPayloadHashes,\n referencedPayloadSchemas,\n referencedPayloadsError,\n }\n}\n"],"mappings":"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","names":["ErrorRender","FlexCol","usePromise","HeadingPaper","usePayloadHash","useMemo","VscSymbolMethod","VscSymbolNamespace","isDefined","jsx","jsx","jsxs","Tooltip","jsx","usePromise","useMemo","useMemo","stats","payloads","usePromise","stepHashes","jsx","jsxs","jsx","jsxs","usePromise","usePayloadHash","useMemo","FlexCol","ErrorRender","HeadingPaper","VscSymbolNamespace","VscSymbolMethod","DataObjectIcon","ellipsize","FlexRow","QuickTipButton","BWPreviousHashQuickTipButton","usePayloadHash","CancelRoundedIcon","assertEx","ErrorQuickTipButton","usePromise","isDefined","useMemo","jsx","InvalidIcon","jsx","jsxs","usePayloadHash","FlexRow","BWPreviousHashQuickTipButton","QuickTipButton","DataObjectIcon","ellipsize","Card","CardContent","CardHeader","Grid","Link","Tooltip","Typography","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","IoStatsChartOutline","useMemo","useMemo","stats","fees","blockDuration","jsx","jsxs","useEvent","Card","CardHeader","Typography","Link","Tooltip","BlockiesAvatarAddress","CardContent","Grid","DetailsStack","IoStatsChartOutline","LabelValueStack","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","FaSignature","VscSymbolNamespace","usePromise","isDefined","PayloadBuilder","useMemo","usePromise","isDefined","PayloadBuilder","publicPayloads","useMemo","referencedPayloads","jsx","jsxs","usePromise","FlexCol","HashHeadingPaper","ErrorRender","VscSymbolNamespace","HeadingPaper","FaSignature","BoundWitnessSignatureTable"]}
|
|
1
|
+
{"version":3,"sources":["../../src/components/block/BlockBoundWitnessDetails.tsx","../../src/lib/formatFees.ts","../../src/lib/formatNumber.ts","../../src/lib/formatPayloadsForTable.ts","../../src/lib/formatResults.ts","../../src/components/PayloadTable.tsx","../../src/components/block/card/actions/BlockBoundWitnessActions.tsx","../../src/components/block/card/actions/BlockBoundWitnessVerification.tsx","../../src/components/block/card/Card.tsx","../../src/components/block/card/CardHeader.tsx","../../src/components/block/card/hooks/useDetails.ts","../../src/components/transactions/card/actions/TransactionActions.tsx","../../src/components/transactions/card/actions/TransactionVerification.tsx","../../src/components/transactions/card/Card.tsx","../../src/components/transactions/card/hooks/useDetails.ts","../../src/components/transactions/TransactionBoundWitnessDetails.tsx","../../src/components/transactions/hooks/usePayloadTypes.ts"],"sourcesContent":["import { filterAs } from '@xylabs/array'\nimport { ErrorRender } from '@xylabs/react-error'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport {\n BoundWitnessPayloadsTable,\n BoundWitnessSignatureTable,\n HashHeadingPaper,\n HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport { useTxsFromBlock } from '@xyo-network/react-chain-blockchain'\nimport type { EventNoun } from '@xyo-network/react-event'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { HydratedBlock, XyoViewer } from '@xyo-network/xl1-protocol'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { GrTransaction } from 'react-icons/gr'\nimport { VscSymbolMethod, VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport type { TransactionBoundWitnessEvents } from '../../types/index.ts'\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { BlockBoundWitnessActions, BlockBoundWitnessCard } from './card/index.ts'\n\nexport interface BoundWitnessDetailsProps extends FlexBoxProps {\n block?: HydratedBlock\n viewer?: XyoViewer\n}\n\nexport const BlockBoundWitnessDetails = ({\n block, paper, viewer, children, ...props\n}: BoundWitnessDetailsProps) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (block) {\n return await HydratedBlockWrapper.parse(block)\n }\n }, [block])\n\n const boundWitness = block?.[0]\n const payloads = block?.[1]\n\n const hash = usePayloadHash(boundWitness)\n\n const [transactions, txFromBlockError] = useTxsFromBlock(block)\n\n const { hashes: txHashes, schemas: txSchemas } = useMemo(() => formatPayloadsForTable(transactions ?? []), [transactions])\n\n const [nonTxBoundWitnesses, bwsFromBlockError] = usePromise(async () => {\n const bws = filterAs(payloads ?? [], payload =>\n (!isTransactionBoundWitness(payload) && isBoundWitness(payload)) ? payload : undefined)\n return await PayloadBuilder.hashPairs(bws)\n }, [payloads])\n\n const { hashes: nonTxBwHashes, schemas: nonTxBwSchemas } = useMemo(() => formatPayloadsForTable(nonTxBoundWitnesses ?? []), [nonTxBoundWitnesses])\n const hasNonTxBoundWitnesses = (nonTxBoundWitnesses?.length ?? 0) > 0\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={4} {...props}>\n <ErrorRender error={txFromBlockError ?? bwsFromBlockError} scope=\"BlockBoundWitnessDetails.tsx\" />\n <ErrorRender error={wrapperError} scope=\"BlockBoundWitnessDetails.tsx:wrapperError\" />\n <HashHeadingPaper\n hash={hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<BlockBoundWitnessActions boundwitness={boundWitness} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0 && (\n <PayloadTableFlexbox<TransactionBoundWitnessEvents>\n IconComponent={<GrTransaction />}\n eventNoun=\"transaction\"\n clickableFields={['hash']}\n hashes={txHashes}\n headingTitle=\"Transactions\"\n schemas={txSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<VscSymbolNamespace />} heading=\"Payloads\" />\n <BoundWitnessPayloadsTable boundwitness={boundWitness} eventNoun=\"payload\" clickableFields={['hash']} />\n </FlexCol>\n {hasNonTxBoundWitnesses\n ? (\n <PayloadTableFlexbox<EventNoun>\n IconComponent={<VscSymbolMethod />}\n eventNoun=\"boundwitness\"\n hashes={nonTxBwHashes}\n headingTitle=\"Bound Witnesses\"\n schemas={nonTxBwSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/typeof'\nimport { bigIntToFixedPointString } from '@xyo-network/chain-utils'\n\nexport const formatFee = (fee?: bigint) => {\n if (isUndefined(fee)) return 'N/A'\n const stringValue = bigIntToFixedPointString(fee, 12)\n if (stringValue === '0') return stringValue\n return stringValue\n}\n","export const formatNumber = (num: number | bigint): string => {\n return num.toLocaleString(navigator.language ?? 'en-US')\n}\n","import type { Hash } from '@xylabs/hex'\nimport type { Payload } from '@xyo-network/payload-model'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n let hashes: Hash[] = []\n let schemas: string[] = []\n for (const [bw, hash] of pairs ?? []) {\n hashes.push(hash)\n schemas.push(bw?.schema ?? '')\n }\n return { hashes, schemas }\n}\n","export const formatResults = (results: Record<string, string>) => {\n const result = { labels: [] as string[], values: [] as string[] }\n for (const [label, value] of Object.entries(results)) {\n result.labels.push(label)\n result.values.push(value)\n }\n return result\n}\n","import { InfoOutline } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { Hash } from '@xylabs/hex'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/typeof'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessPayloadTableBody, BoundWitnessPayloadTableHead, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { EventNoun, ExtendEventNoun } from '@xyo-network/react-event'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\nimport { VscSymbolMethod } from 'react-icons/vsc'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun<string> = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\n clickableFields?: ClickableFields[]\n eventNoun?: TNoun\n hashes?: Hash[]\n headingTitle?: string\n schemas?: string[]\n tooltip?: string\n}\n\nexport const PayloadTableFlexbox = <TNoun extends ExtendEventNoun<string> = EventNoun>({\n IconComponent,\n eventNoun,\n hashes,\n schemas,\n headingTitle,\n clickableFields,\n tooltip,\n ...props\n}: BWPayloadTableFlexboxProps<TNoun>) => {\n const resolvedIconComponent = IconComponent ?? <VscSymbolMethod />\n return (\n <FlexCol alignItems=\"stretch\" rowGap={1} {...props}>\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutline fontSize=\"small\" sx={{ py: 2, px: 1 }} />\n </Tooltip>\n )\n : null}\n IconComponent={resolvedIconComponent}\n heading={headingTitle}\n />\n <TableEx>\n <BoundWitnessPayloadTableHead />\n <BoundWitnessPayloadTableBody<TNoun> payloadHashes={hashes} payloadSchemas={schemas} eventNoun={eventNoun} clickableFields={clickableFields} />\n </TableEx>\n </FlexCol>\n )\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { BlockBoundWitnessVerification } from './BlockBoundWitnessVerification.tsx'\n\nexport interface BlockBoundWitnessActionsProps extends FlexBoxProps {\n boundwitness?: BoundWitness\n validationIconColors?: boolean\n}\n\nexport const BlockBoundWitnessActions: React.FC<BlockBoundWitnessActionsProps> = ({\n boundwitness,\n validationIconColors = false,\n ...props\n}) => {\n const hash = usePayloadHash(boundwitness)\n\n return (\n <FlexRow {...props}>\n {boundwitness?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={boundwitness} />}\n <BlockBoundWitnessVerification iconColors={validationIconColors} block={boundwitness} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{boundwitness ? JSON.stringify(boundwitness, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport type { BlockValidationError } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface BWVerification extends QuickTipButtonProps {\n block?: BoundWitness\n iconColors?: boolean\n}\n\nexport const BlockBoundWitnessVerification: React.FC<BWVerification> = ({ block, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(block)) {\n const resolvedBlock = assertEx(isBlockBoundWitness(block) ? block : undefined, () => 'Block must be a BlockBoundWitness')\n return await validateBlock(resolvedBlock)\n }\n }, [block])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | BlockValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Block\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, Grid,\n Skeleton,\n Stack,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GrSteps } from 'react-icons/gr'\nimport { IoStatsChartOutline } from 'react-icons/io5'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { BlockBoundWitnessCardHeader } from './CardHeader.tsx'\nimport { useBlockDetails } from './hooks/index.ts'\n\nexport interface BlockBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n viewer?: XyoViewer\n wrapper?: HydratedBlockInstance\n}\n\nexport const BlockBoundWitnessCard: React.FC<BlockBoundWitnessCardProps> = ({\n linkedAddress = true, viewer, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => <BlockBoundWitnessCardHeader key={address} address={address} linked={linkedAddress} />)}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack gap={0.25}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/hex'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({ linked = true, address }) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n avatar={(\n <Tooltip title={`Address - ${address}`}>\n <BlockiesAvatarAddress\n address={address}\n onClick={() => dispatch('address', 'click', address)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { StepSizes, type XyoViewer } from '@xyo-network/xl1-protocol'\nimport type { HydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport { formatNumber, formatResults } from '../../../../lib/index.ts'\n\nconst generateStepHashText = (blockNumber: number, stepHashIndex: number): [string, string] => {\n const stepSize = StepSizes[stepHashIndex]\n const stepStart = blockNumber - stepSize + 1\n const stepStop = blockNumber\n\n return [`Step ${stepHashIndex} (${stepSize})`, `${formatNumber(stepStart)} - ${formatNumber(stepStop)}`]\n}\n\nexport const useBlockDetails = (wrapper: HydratedBlockInstance, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n Protocol: wrapper.boundWitness.protocol.toString(),\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: wrapper.boundWitness.$epoch.toString(),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n const payloads = {\n 'Transactions': formatNumber(wrapper.transactionCount),\n 'Total Payloads': formatNumber(wrapper.payloadCount),\n }\n\n return formatResults(payloads)\n }, [wrapper])\n\n const [stepHashes, stepHashesError, stepHashesLoading] = usePromise(async () => {\n if (viewer) {\n const stepHashes: Record<string, string> = {}\n for (const [index, hash] of wrapper.boundWitness.step_hashes.entries()) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n stepHashes[`Step ${index}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n const [label, value] = generateStepHashText(blockNumber, index)\n stepHashes[label] = value\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n stepHashes[`Step ${index}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n }\n}\n","import { DataObject as DataObjectIcon } from '@mui/icons-material'\nimport { ellipsize } from '@xylabs/eth-address'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport { TransactionVerification } from './TransactionVerification.tsx'\n\nexport interface TransactionActionsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n validationIconColors?: boolean\n}\n\nexport const TransactionActions: React.FC<TransactionActionsProps> = ({\n transaction,\n validationIconColors = false,\n ...props\n}) => {\n const txBw = transaction?.[0]\n const hash = usePayloadHash(txBw)\n return (\n <FlexRow {...props}>\n {txBw?.previous_hashes.length === 0 ? null : <BWPreviousHashQuickTipButton boundwitness={txBw} />}\n <TransactionVerification iconColors={validationIconColors} transaction={transaction} />\n <QuickTipButton\n Icon={DataObjectIcon}\n title={`JSON for ${ellipsize(hash ?? '', 8)}`}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n >\n <pre style={{ wordBreak: 'break-all' }}>{transaction ? JSON.stringify(transaction, null, 2) : null}</pre>\n </QuickTipButton>\n </FlexRow>\n )\n}\n","import { CancelRounded as CancelRoundedIcon } from '@mui/icons-material'\nimport type { SvgIconProps } from '@mui/material'\nimport { assertEx } from '@xylabs/assert'\nimport { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { isDefined } from '@xylabs/typeof'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { isSignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { validateTransaction } from '@xyo-network/xl1-validation'\nimport React, { useMemo } from 'react'\n\nconst InvalidIcon = ({ ref, ...props }: SvgIconProps\n & { ref?: React.Ref<SVGSVGElement | null> }) => <CancelRoundedIcon color=\"error\" ref={ref} {...props} />\nInvalidIcon.displayName = 'InvalidIcon'\n\nexport interface TxVerification extends QuickTipButtonProps {\n iconColors?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {\n const [validationErrors, validateError] = usePromise(async () => {\n if (isDefined(transaction)) {\n const resolvedTransaction = assertEx(isSignedHydratedTransactionWithStorageMeta(transaction)\n ? transaction\n : undefined, () => 'Transaction must be a SignedHydratedTransactionWithStorageMeta')\n return await validateTransaction(resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Link, Tooltip, Typography,\n} from '@mui/material'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n if (!wrapper) return null\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n avatar={(\n <Tooltip title={`From Address - ${wrapper?.boundWitness.from}`}>\n <BlockiesAvatarAddress\n address={wrapper?.boundWitness.from}\n onClick={() => dispatch('address', 'click', wrapper.boundWitness.from)}\n size={21}\n sx={{ cursor: 'pointer' }}\n />\n </Tooltip>\n )}\n />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Transaction Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiReceiveMoney} heading=\"Fees\" tooltipTitle=\"Fees offered to the producer\">\n <LabelValueStack labels={fees.labels} values={fees.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GiSandsOfTime} heading=\"Block Duration\" tooltipTitle=\"Block window for the transaction to be valid\">\n <LabelValueStack labels={blockDuration.labels} values={blockDuration.values} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance) => {\n const stats = useMemo(() => {\n const stats = {\n 'Reward': formatNumber(wrapper.reward()),\n 'On Chain Payloads': formatNumber(wrapper.elevatedPayloadCount),\n 'Public Payloads': formatNumber(Object.values(wrapper.publicExternalPayloads).length),\n 'Referenced Payloads': formatNumber(Object.entries(wrapper.privateExternalPayloads).length),\n 'Signatures': formatNumber(wrapper.signatureCount),\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const fees = useMemo(() => {\n const fees = {\n 'Base': formatFee(wrapper.fees.base),\n 'Gas': formatFee(wrapper.fees.gasPrice),\n 'Priority': formatFee(wrapper.fees.priority),\n 'Gas Limit': formatFee(wrapper.fees.gasLimit),\n }\n\n return formatResults(fees)\n }, [wrapper])\n\n const blockDuration = useMemo(() => {\n const blockDuration = {\n 'Expiration': wrapper.boundWitness.exp.toLocaleString(navigator.language ?? 'en-US'),\n 'Not Before': wrapper.boundWitness.nbf.toLocaleString(navigator.language ?? 'en-US'),\n }\n\n return formatResults(blockDuration)\n }, [wrapper])\n\n return {\n stats, fees, blockDuration,\n }\n}\n","import { ErrorRender } from '@xylabs/react-error'\nimport { type FlexBoxProps, FlexCol } from '@xylabs/react-flexbox'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'\nimport {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'\nimport React from 'react'\nimport { FaSignature } from 'react-icons/fa'\nimport { VscSymbolNamespace } from 'react-icons/vsc'\n\nimport { PayloadTableFlexbox } from '../PayloadTable.tsx'\nimport { TransactionActions, TransactionBoundWitnessCard } from './card/index.ts'\nimport { useTransactionPayloadTypes } from './hooks/index.ts'\n\nconst nonClickableFields: ClickableFields[] = []\n\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {\n const [wrapper, wrapperError] = usePromise(async () => {\n if (transaction) {\n return await HydratedTransactionWrapper.parse(transaction)\n }\n }, [transaction])\n\n const {\n elevatedPayloadHashes, elevatedPayloadSchemas, elevatedPayloadSetsError,\n publicPayloadHashes, publicPayloadSchemas, publicPayloadsError,\n referencedPayloadHashes, referencedPayloadSchemas, referencedPayloadsError,\n } = useTransactionPayloadTypes(wrapper)\n\n return (\n <FlexCol alignItems=\"stretch\" rowGap={2} {...props}>\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ p: 0.75, size: 24 }}\n />\n <ErrorRender error={wrapperError} scope=\"wrapperError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={elevatedPayloadSetsError} scope=\"elevatedPayloadSetsError:TransactionBoundWitnessDetails.tsx\" />\n <ErrorRender error={publicPayloadsError} scope=\"publicPayloadsError:TransactionBoundWitnessDetails.tsx\" />\n {referencedPayloadsError.map((error, index) =>\n // eslint-disable-next-line @eslint-react/no-array-index-key\n <ErrorRender key={index} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payloads included in the transaction that are elevated and validated.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"On Chain Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n {(publicPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Public payloads included in the transaction.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={publicPayloadHashes}\n headingTitle=\"Public Payloads\"\n schemas={publicPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n {(referencedPayloadHashes?.length ?? 0) > 0 && (\n <PayloadTableFlexbox\n // TODO - bring back once the hashes can be searched via datalake\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n clickableFields={nonClickableFields}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )}\n <FlexCol alignItems=\"stretch\" rowGap={1} mb={1}>\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import type { Hash } from '@xylabs/hex'\nimport { isHash } from '@xylabs/hex'\nimport { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/typeof'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Schema } from '@xyo-network/payload-model'\nimport { isSchema } from '@xyo-network/payload-model'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-protocol-sdk'\nimport { useMemo, useState } from 'react'\n\nimport { formatPayloadsForTable } from '../../../lib/index.ts'\n\nexport const useTransactionPayloadTypes = (wrapper?: HydratedTransactionInstance) => {\n const [elevatedPayloadSets, elevatedPayloadSetsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const elevatedPayloads = wrapper.elevatedPayloads\n const pairs = await PayloadBuilder.hashPairs(elevatedPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [publicPayloads, publicPayloadsError] = usePromise(async () => {\n if (isDefined(wrapper)) {\n const publicPayloads = wrapper.publicExternalPayloads\n const pairs = await PayloadBuilder.hashPairs(publicPayloads)\n return formatPayloadsForTable(pairs)\n } else {\n return { hashes: [], schemas: [] }\n }\n }, [wrapper])\n\n const [referencedPayloadsError, setReferencedPayloadsError] = useState<Error[]>([])\n const referencedPayloads = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n let resolved = false\n if (isHash(hash)) {\n ret.hashes.push(hash)\n resolved = true\n }\n if (isSchema(schema)) {\n ret.schemas.push(schema)\n resolved = true\n }\n if (!resolved) {\n setReferencedPayloadsError(prev => [...prev, new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`)])\n }\n }\n return ret\n } else {\n return ret\n }\n }, [wrapper, elevatedPayloadSets])\n\n const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\n const { hashes: publicPayloadHashes, schemas: publicPayloadSchemas } = publicPayloads ?? {}\n const { hashes: referencedPayloadHashes, schemas: referencedPayloadSchemas } = referencedPayloads ?? {}\n\n return {\n elevatedPayloadHashes,\n elevatedPayloadSchemas,\n elevatedPayloadSetsError,\n publicPayloadHashes,\n publicPayloadSchemas,\n publicPayloadsError,\n referencedPayloadHashes,\n referencedPayloadSchemas,\n referencedPayloadsError,\n }\n}\n"],"mappings":"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","names":["ErrorRender","FlexCol","usePromise","HeadingPaper","usePayloadHash","useMemo","VscSymbolMethod","VscSymbolNamespace","isDefined","jsx","jsx","jsxs","Tooltip","jsx","usePromise","useMemo","useMemo","stats","payloads","usePromise","stepHashes","jsx","jsxs","jsx","jsxs","usePromise","usePayloadHash","useMemo","FlexCol","ErrorRender","HeadingPaper","VscSymbolNamespace","VscSymbolMethod","DataObjectIcon","ellipsize","FlexRow","QuickTipButton","BWPreviousHashQuickTipButton","usePayloadHash","CancelRoundedIcon","assertEx","ErrorQuickTipButton","usePromise","isDefined","useMemo","jsx","InvalidIcon","jsx","jsxs","usePayloadHash","FlexRow","BWPreviousHashQuickTipButton","QuickTipButton","DataObjectIcon","ellipsize","Card","CardContent","CardHeader","Grid","Link","Tooltip","Typography","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","IoStatsChartOutline","useMemo","useMemo","stats","fees","blockDuration","jsx","jsxs","useEvent","Card","CardHeader","Typography","Link","Tooltip","BlockiesAvatarAddress","CardContent","Grid","DetailsStack","IoStatsChartOutline","LabelValueStack","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","FaSignature","VscSymbolNamespace","usePromise","isDefined","PayloadBuilder","useMemo","usePromise","isDefined","PayloadBuilder","publicPayloads","useMemo","referencedPayloads","jsx","jsxs","usePromise","FlexCol","HashHeadingPaper","ErrorRender","VscSymbolNamespace","HeadingPaper","FaSignature","BoundWitnessSignatureTable"]}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { Hash } from '@xylabs/hex';
|
|
2
2
|
import type { Payload } from '@xyo-network/payload-model';
|
|
3
3
|
export declare const formatPayloadsForTable: (pairs: [Payload, Hash][]) => {
|
|
4
|
-
hashes:
|
|
4
|
+
hashes: import("@xylabs/typeof").Brand<import("@xylabs/typeof").Brand<Lowercase<string>, {
|
|
5
|
+
readonly __hex: true;
|
|
6
|
+
}>, {
|
|
7
|
+
readonly __hash: true;
|
|
8
|
+
}>[];
|
|
5
9
|
schemas: string[];
|
|
6
10
|
};
|
|
7
11
|
//# sourceMappingURL=formatPayloadsForTable.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"formatPayloadsForTable.d.ts","sourceRoot":"","sources":["../../../src/lib/formatPayloadsForTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,sBAAsB,GAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE
|
|
1
|
+
{"version":3,"file":"formatPayloadsForTable.d.ts","sourceRoot":"","sources":["../../../src/lib/formatPayloadsForTable.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,aAAa,CAAA;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAA;AAEzD,eAAO,MAAM,sBAAsB,GAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE;;;;;;;CAQ9D,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.
|
|
4
|
+
"version": "1.12.0",
|
|
5
5
|
"description": "XYO Layer One React SDK BoundWitness",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -41,32 +41,32 @@
|
|
|
41
41
|
"src"
|
|
42
42
|
],
|
|
43
43
|
"dependencies": {
|
|
44
|
-
"@xylabs/array": "~5.0.
|
|
45
|
-
"@xylabs/assert": "~5.0.
|
|
46
|
-
"@xylabs/eth-address": "~5.0.
|
|
47
|
-
"@xylabs/hex": "~5.0.
|
|
44
|
+
"@xylabs/array": "~5.0.7",
|
|
45
|
+
"@xylabs/assert": "~5.0.7",
|
|
46
|
+
"@xylabs/eth-address": "~5.0.7",
|
|
47
|
+
"@xylabs/hex": "~5.0.7",
|
|
48
48
|
"@xylabs/react-error": "~7.0.0",
|
|
49
49
|
"@xylabs/react-flexbox": "~7.0.0",
|
|
50
50
|
"@xylabs/react-promise": "~7.0.0",
|
|
51
51
|
"@xylabs/react-quick-tip-button": "~7.0.0",
|
|
52
|
-
"@xylabs/typeof": "~5.0.
|
|
53
|
-
"@xyo-network/boundwitness-model": "~5.0.
|
|
54
|
-
"@xyo-network/chain-utils": "~1.
|
|
55
|
-
"@xyo-network/chain-validation": "~1.
|
|
56
|
-
"@xyo-network/chain-wrappers": "~1.
|
|
57
|
-
"@xyo-network/payload-builder": "~5.0.
|
|
58
|
-
"@xyo-network/payload-model": "~5.0.
|
|
52
|
+
"@xylabs/typeof": "~5.0.7",
|
|
53
|
+
"@xyo-network/boundwitness-model": "~5.0.2",
|
|
54
|
+
"@xyo-network/chain-utils": "~1.12.0",
|
|
55
|
+
"@xyo-network/chain-validation": "~1.12.0",
|
|
56
|
+
"@xyo-network/chain-wrappers": "~1.12.0",
|
|
57
|
+
"@xyo-network/payload-builder": "~5.0.2",
|
|
58
|
+
"@xyo-network/payload-model": "~5.0.2",
|
|
59
59
|
"@xyo-network/react-boundwitness-plugin": "~7.0.0",
|
|
60
|
-
"@xyo-network/react-chain-blockchain": "~1.
|
|
61
|
-
"@xyo-network/react-chain-blockies": "~1.
|
|
62
|
-
"@xyo-network/react-chain-shared": "~1.
|
|
60
|
+
"@xyo-network/react-chain-blockchain": "~1.12.0",
|
|
61
|
+
"@xyo-network/react-chain-blockies": "~1.12.0",
|
|
62
|
+
"@xyo-network/react-chain-shared": "~1.12.0",
|
|
63
63
|
"@xyo-network/react-event": "~7.0.0",
|
|
64
64
|
"@xyo-network/react-shared": "~7.0.0",
|
|
65
65
|
"@xyo-network/react-table": "~7.0.0",
|
|
66
|
-
"@xyo-network/xl1-protocol": "~1.
|
|
67
|
-
"@xyo-network/xl1-protocol-sdk": "~1.
|
|
68
|
-
"@xyo-network/xl1-validation": "~1.
|
|
69
|
-
"@xyo-network/xl1-wrappers": "~1.
|
|
66
|
+
"@xyo-network/xl1-protocol": "~1.10.12",
|
|
67
|
+
"@xyo-network/xl1-protocol-sdk": "~1.12.0",
|
|
68
|
+
"@xyo-network/xl1-validation": "~1.12.0",
|
|
69
|
+
"@xyo-network/xl1-wrappers": "~1.12.0",
|
|
70
70
|
"react-icons": "~5.5.0"
|
|
71
71
|
},
|
|
72
72
|
"devDependencies": {
|
|
@@ -74,20 +74,20 @@
|
|
|
74
74
|
"@emotion/styled": "~11.14.1",
|
|
75
75
|
"@mui/icons-material": "~7.3.1",
|
|
76
76
|
"@mui/material": "~7.3.1",
|
|
77
|
-
"@storybook/react-vite": "~9.1.
|
|
77
|
+
"@storybook/react-vite": "~9.1.2",
|
|
78
78
|
"@xylabs/ts-scripts-yarn3": "~7.1.0",
|
|
79
79
|
"@xylabs/tsconfig": "~7.1.0",
|
|
80
80
|
"@xylabs/tsconfig-dom": "~7.1.0",
|
|
81
81
|
"@xylabs/tsconfig-react": "~7.1.0",
|
|
82
|
-
"@xyo-network/account": "~5.0.
|
|
83
|
-
"@xyo-network/chain-network-model": "~1.
|
|
84
|
-
"@xyo-network/chain-protocol": "~1.
|
|
85
|
-
"@xyo-network/react-chain-network": "~1.
|
|
86
|
-
"@xyo-network/react-chain-provider": "~1.
|
|
87
|
-
"@xyo-network/react-chain-shared": "~1.
|
|
82
|
+
"@xyo-network/account": "~5.0.2",
|
|
83
|
+
"@xyo-network/chain-network-model": "~1.12.0",
|
|
84
|
+
"@xyo-network/chain-protocol": "~1.12.0",
|
|
85
|
+
"@xyo-network/react-chain-network": "~1.12.0",
|
|
86
|
+
"@xyo-network/react-chain-provider": "~1.12.0",
|
|
87
|
+
"@xyo-network/react-chain-shared": "~1.12.0",
|
|
88
88
|
"react": "~19.1.1",
|
|
89
89
|
"react-dom": "~19.1.1",
|
|
90
|
-
"react-router-dom": "~7.
|
|
90
|
+
"react-router-dom": "~7.8.0",
|
|
91
91
|
"typescript": "~5.9.2"
|
|
92
92
|
},
|
|
93
93
|
"peerDependencies": {
|
|
@@ -4,7 +4,7 @@ import type { Address } from '@xylabs/hex'
|
|
|
4
4
|
import { asHash, toAddress } from '@xylabs/hex'
|
|
5
5
|
import { Account } from '@xyo-network/account'
|
|
6
6
|
import { useEvent } from '@xyo-network/react-event'
|
|
7
|
-
import type { HashPayload,
|
|
7
|
+
import type { HashPayload, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
|
|
8
8
|
import { buildTransaction } from '@xyo-network/xl1-protocol-sdk'
|
|
9
9
|
import React from 'react'
|
|
10
10
|
|
|
@@ -23,8 +23,8 @@ const signer = await Account.random()
|
|
|
23
23
|
const chainId = toAddress('a82920051db4fcbb804463440dd45e03f72442fd')
|
|
24
24
|
const builtTx = await buildTransaction(chainId, [elevated], [publicPayload, referenced], signer, 0, 1)
|
|
25
25
|
const builtInvalidTx = await buildTransaction('0x123' as Address, [elevated], [publicPayload, referenced], signer, 0, 1)
|
|
26
|
-
const tx = [builtTx[0], builtTx[1].filter(payload => payload.schema !== referenced.schema)] as
|
|
27
|
-
const invalidTx = [builtInvalidTx[0], builtInvalidTx[1].filter(payload => payload.schema !== referenced.schema)] as
|
|
26
|
+
const tx = [builtTx[0], builtTx[1].filter(payload => payload.schema !== referenced.schema)] as SignedHydratedTransactionWithStorageMeta
|
|
27
|
+
const invalidTx = [builtInvalidTx[0], builtInvalidTx[1].filter(payload => payload.schema !== referenced.schema)] as SignedHydratedTransactionWithStorageMeta
|
|
28
28
|
|
|
29
29
|
const Template: StoryFn<typeof TransactionBoundWitnessDetails> = args => <TransactionBoundWitnessDetails {...args} />
|
|
30
30
|
|
|
@@ -5,7 +5,7 @@ import type { ClickableFields } from '@xyo-network/react-boundwitness-plugin'
|
|
|
5
5
|
import {
|
|
6
6
|
BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,
|
|
7
7
|
} from '@xyo-network/react-boundwitness-plugin'
|
|
8
|
-
import type {
|
|
8
|
+
import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
|
|
9
9
|
import { HydratedTransactionWrapper } from '@xyo-network/xl1-wrappers'
|
|
10
10
|
import React from 'react'
|
|
11
11
|
import { FaSignature } from 'react-icons/fa'
|
|
@@ -18,7 +18,7 @@ import { useTransactionPayloadTypes } from './hooks/index.ts'
|
|
|
18
18
|
const nonClickableFields: ClickableFields[] = []
|
|
19
19
|
|
|
20
20
|
export interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {
|
|
21
|
-
transaction?:
|
|
21
|
+
transaction?: SignedHydratedTransactionWithStorageMeta | null
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
export const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({ transaction, ...props }) => {
|
|
@@ -5,13 +5,13 @@ import { FlexRow } from '@xylabs/react-flexbox'
|
|
|
5
5
|
import { QuickTipButton } from '@xylabs/react-quick-tip-button'
|
|
6
6
|
import { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'
|
|
7
7
|
import { usePayloadHash } from '@xyo-network/react-shared'
|
|
8
|
-
import type {
|
|
8
|
+
import type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
|
|
9
9
|
import React from 'react'
|
|
10
10
|
|
|
11
11
|
import { TransactionVerification } from './TransactionVerification.tsx'
|
|
12
12
|
|
|
13
13
|
export interface TransactionActionsProps extends FlexBoxProps {
|
|
14
|
-
transaction?:
|
|
14
|
+
transaction?: SignedHydratedTransactionWithStorageMeta | null
|
|
15
15
|
validationIconColors?: boolean
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -5,8 +5,8 @@ import { ErrorQuickTipButton } from '@xylabs/react-error'
|
|
|
5
5
|
import { usePromise } from '@xylabs/react-promise'
|
|
6
6
|
import type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'
|
|
7
7
|
import { isDefined } from '@xylabs/typeof'
|
|
8
|
-
import type {
|
|
9
|
-
import {
|
|
8
|
+
import type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
|
|
9
|
+
import { isSignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-protocol'
|
|
10
10
|
import { validateTransaction } from '@xyo-network/xl1-validation'
|
|
11
11
|
import React, { useMemo } from 'react'
|
|
12
12
|
|
|
@@ -16,13 +16,15 @@ InvalidIcon.displayName = 'InvalidIcon'
|
|
|
16
16
|
|
|
17
17
|
export interface TxVerification extends QuickTipButtonProps {
|
|
18
18
|
iconColors?: boolean
|
|
19
|
-
transaction?:
|
|
19
|
+
transaction?: SignedHydratedTransactionWithStorageMeta | null
|
|
20
20
|
}
|
|
21
21
|
|
|
22
22
|
export const TransactionVerification: React.FC<TxVerification> = ({ transaction, ...props }) => {
|
|
23
23
|
const [validationErrors, validateError] = usePromise(async () => {
|
|
24
24
|
if (isDefined(transaction)) {
|
|
25
|
-
const resolvedTransaction = assertEx(
|
|
25
|
+
const resolvedTransaction = assertEx(isSignedHydratedTransactionWithStorageMeta(transaction)
|
|
26
|
+
? transaction
|
|
27
|
+
: undefined, () => 'Transaction must be a SignedHydratedTransactionWithStorageMeta')
|
|
26
28
|
return await validateTransaction(resolvedTransaction)
|
|
27
29
|
}
|
|
28
30
|
}, [transaction])
|