@xyo-network/react-chain-boundwitness 1.5.21 → 1.5.23
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 +11 -3
- package/dist/browser/index.mjs.map +1 -1
- package/dist/types/components/block/card/hooks/useDetails.d.ts +1 -1
- package/dist/types/components/block/card/hooks/useDetails.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/components/block/card/hooks/useDetails.ts +16 -5
package/dist/browser/index.mjs
CHANGED
|
@@ -128,8 +128,17 @@ var BlockBoundWitnessCardHeader = /* @__PURE__ */ __name(({ linked = true, addre
|
|
|
128
128
|
|
|
129
129
|
// src/components/block/card/hooks/useDetails.ts
|
|
130
130
|
import { usePromise } from "@xylabs/react-promise";
|
|
131
|
-
import {
|
|
131
|
+
import { StepSizes } from "@xyo-network/xl1-protocol";
|
|
132
132
|
import { useMemo } from "react";
|
|
133
|
+
var updateStepHashWindow = /* @__PURE__ */ __name((blockNumber, stepHashes) => {
|
|
134
|
+
for (const [index, step] of StepSizes.entries()) {
|
|
135
|
+
const nextStep = StepSizes[index + 1];
|
|
136
|
+
if (blockNumber >= step && blockNumber < nextStep) {
|
|
137
|
+
stepHashes[`Step ${index} - ${blockNumber}`] = `${blockNumber - step + 1} - ${blockNumber}`;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return stepHashes;
|
|
141
|
+
}, "updateStepHashWindow");
|
|
133
142
|
var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
|
|
134
143
|
const stats = useMemo(() => {
|
|
135
144
|
const stats2 = {
|
|
@@ -167,9 +176,8 @@ var useBlockDetails = /* @__PURE__ */ __name((wrapper, viewer) => {
|
|
|
167
176
|
continue;
|
|
168
177
|
}
|
|
169
178
|
const blockNumber = block[0].block;
|
|
170
|
-
|
|
179
|
+
updateStepHashWindow(blockNumber, stepHashes2);
|
|
171
180
|
step++;
|
|
172
|
-
stepHashes2[`Step ${step} - ${blockNumber}`] = stepWindow.join(" - ");
|
|
173
181
|
} catch (e) {
|
|
174
182
|
console.error(`Error fetching block for step hash ${hash}:`, e);
|
|
175
183
|
step++;
|
|
@@ -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\nconst clickableFields = 'hash'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\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 ...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} 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,\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 <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 { ellipsize } from '@xylabs/eth-address'\nimport { usePromise } from '@xylabs/react-promise'\nimport { stepWindowCalculatorFromBlock } from '@xyo-network/chain-utils'\nimport 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\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] = usePromise(async () => {\n if (viewer) {\n const stepHashes = {} as Record<string, string>\n let step = 0\n for (const hash of wrapper.boundWitness.step_hashes) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n step++\n stepHashes[`Step ${step}`] = 'N/A'\n continue\n }\n const blockNumber = block[0].block\n const stepWindow = stepWindowCalculatorFromBlock(blockNumber)\n step++\n stepHashes[`Step ${step} - ${blockNumber}`] = stepWindow.join(' - ')\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n step++\n stepHashes[`Step ${step}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError,\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 } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport { BWPayloadTableFlexbox } from '../BwPayloadTable.tsx'\nimport { TransactionBoundWitnessCard } from './card/index.ts'\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 const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\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 <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <BWPayloadTableFlexbox\n IconComponent={<VscSymbolMethod />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"Elevated Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\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","clickableFields","BWPayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","Card","CardContent","Grid","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","stepWindowCalculatorFromBlock","useMemo","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","usePromise","step","hash","step_hashes","blockByHash","console","warn","blockNumber","stepWindow","stepWindowCalculatorFromBlock","join","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","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","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","TransactionBoundWitnessDetails","transaction","props","wrapper","wrapperError","usePromise","SignedHydratedTransactionWrapper","parse","elevatedPayloadSets","elevatedPayloadSetsError","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","elevatedPayloadHashes","elevatedPayloadSchemas","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","BWActions","boundwitness","identiconProps","size","ErrorRender","error","scope","TransactionBoundWitnessCard","elevation","BWPayloadTableFlexbox","IconComponent","VscSymbolMethod","headingTitle","mb","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
|
|
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\nconst clickableFields = 'hash'\n\nexport interface BWPayloadTableFlexboxProps<TNoun extends ExtendEventNoun = EventNoun> extends FlexBoxProps {\n IconComponent?: React.ReactNode\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 ...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} 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,\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 <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 updateStepHashWindow = (blockNumber: number, stepHashes: Record<string, string>): Record<string, string> => {\n for (const [index, step] of StepSizes.entries()) {\n const nextStep = StepSizes[index + 1]\n if (blockNumber >= step && blockNumber < nextStep) {\n // Result Format - [block number - step size + 1, block number]\n stepHashes[`Step ${index} - ${blockNumber}`] = `${blockNumber - step + 1} - ${blockNumber}`\n }\n // TODO - handle case where block number is beyond all steps\n }\n return stepHashes\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] = usePromise(async () => {\n if (viewer) {\n const stepHashes = {} as Record<string, string>\n let step = 0\n for (const hash of wrapper.boundWitness.step_hashes) {\n try {\n const block = await viewer.blockByHash(hash)\n if (block === null) {\n console.warn(`Block not found for step hash ${hash}`)\n step++\n stepHashes[`Step ${step}`] = 'N/A'\n continue\n }\n\n const blockNumber = block[0].block\n updateStepHashWindow(blockNumber, stepHashes)\n\n step++\n } catch (e) {\n console.error(`Error fetching block for step hash ${hash}:`, e)\n step++\n stepHashes[`Step ${step}`] = 'N/A'\n }\n }\n\n return formatResults(stepHashes)\n }\n }, [wrapper, viewer], { defaultValue: { labels: [], values: [] } })\n\n return {\n stats, payloads, stepHashes, stepHashesError,\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 } from 'react-icons/vsc'\n\nimport { formatPayloadsForTable } from '../../lib/index.ts'\nimport { BWPayloadTableFlexbox } from '../BwPayloadTable.tsx'\nimport { TransactionBoundWitnessCard } from './card/index.ts'\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 const { hashes: elevatedPayloadHashes, schemas: elevatedPayloadSchemas } = elevatedPayloadSets ?? {}\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 <TransactionBoundWitnessCard elevation={4} wrapper={wrapper} />\n <BWPayloadTableFlexbox\n IconComponent={<VscSymbolMethod />}\n hashes={elevatedPayloadHashes}\n headingTitle=\"Elevated Payloads\"\n schemas={elevatedPayloadSchemas}\n sx={{ mb: 1 }}\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","clickableFields","BWPayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","props","resolvedIconComponent","VscSymbolMethod","FlexCol","alignItems","rowGap","HeadingPaper","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","Card","CardContent","Grid","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","updateStepHashWindow","blockNumber","stepHashes","index","step","StepSizes","entries","nextStep","useBlockDetails","wrapper","viewer","stats","useMemo","Height","boundWitness","block","toLocaleString","navigator","language","Protocol","protocol","toString","Signatures","signatureCount","$epoch","formatResults","payloads","transactionCount","publicPayloadCount","privatePayloadCount","payloadCount","stepHashesError","usePromise","hash","step_hashes","blockByHash","console","warn","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","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","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","TransactionBoundWitnessDetails","transaction","props","wrapper","wrapperError","usePromise","SignedHydratedTransactionWrapper","parse","elevatedPayloadSets","elevatedPayloadSetsError","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","elevatedPayloadHashes","elevatedPayloadSchemas","React","FlexCol","alignItems","rowGap","HashHeadingPaper","hash","boundWitness","_hash","paperProps","sx","p","AdornmentEnd","BWActions","boundwitness","identiconProps","size","ErrorRender","error","scope","TransactionBoundWitnessCard","elevation","BWPayloadTableFlexbox","IconComponent","VscSymbolMethod","headingTitle","mb","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type
|
|
1
|
+
import { type XyoViewer } from '@xyo-network/xl1-protocol';
|
|
2
2
|
import type { SignedHydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk';
|
|
3
3
|
export declare const useBlockDetails: (wrapper: SignedHydratedBlockInstance, viewer?: XyoViewer) => {
|
|
4
4
|
stats: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useDetails.d.ts","sourceRoot":"","sources":["../../../../../../src/components/block/card/hooks/useDetails.ts"],"names":[],"mappings":"
|
|
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;AAiBhF,eAAO,MAAM,eAAe,GAAI,SAAS,2BAA2B,EAAE,SAAS,SAAS;;;;;;;;;;;;;;CAuDvF,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.23",
|
|
5
5
|
"description": "XYO Layer One React SDK BoundWitness",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -42,20 +42,20 @@
|
|
|
42
42
|
"@xylabs/react-promise": "^6.3.4",
|
|
43
43
|
"@xylabs/typeof": "^4.11.14",
|
|
44
44
|
"@xyo-network/boundwitness-model": "^3.18.4",
|
|
45
|
-
"@xyo-network/chain-utils": "^1.5.
|
|
46
|
-
"@xyo-network/chain-wrappers": "^1.5.
|
|
45
|
+
"@xyo-network/chain-utils": "^1.5.23",
|
|
46
|
+
"@xyo-network/chain-wrappers": "^1.5.23",
|
|
47
47
|
"@xyo-network/payload-builder": "^3.18.4",
|
|
48
48
|
"@xyo-network/payload-model": "^3.18.4",
|
|
49
49
|
"@xyo-network/react-boundwitness-plugin": "^5.3.7",
|
|
50
|
-
"@xyo-network/react-chain-blockchain": "^1.5.
|
|
51
|
-
"@xyo-network/react-chain-blockies": "^1.5.
|
|
52
|
-
"@xyo-network/react-chain-provider": "^1.5.
|
|
53
|
-
"@xyo-network/react-chain-shared": "^1.5.
|
|
50
|
+
"@xyo-network/react-chain-blockchain": "^1.5.23",
|
|
51
|
+
"@xyo-network/react-chain-blockies": "^1.5.23",
|
|
52
|
+
"@xyo-network/react-chain-provider": "^1.5.23",
|
|
53
|
+
"@xyo-network/react-chain-shared": "^1.5.23",
|
|
54
54
|
"@xyo-network/react-event": "^5.3.7",
|
|
55
55
|
"@xyo-network/react-shared": "^5.3.7",
|
|
56
56
|
"@xyo-network/react-table": "^5.3.7",
|
|
57
57
|
"@xyo-network/xl1-protocol": "^1.4.19",
|
|
58
|
-
"@xyo-network/xl1-protocol-sdk": "^1.5.
|
|
58
|
+
"@xyo-network/xl1-protocol-sdk": "^1.5.23",
|
|
59
59
|
"react-icons": "^5.5.0"
|
|
60
60
|
},
|
|
61
61
|
"devDependencies": {
|
|
@@ -66,9 +66,9 @@
|
|
|
66
66
|
"@storybook/react-vite": "^9.0.5",
|
|
67
67
|
"@xylabs/ts-scripts-yarn3": "^6.5.8",
|
|
68
68
|
"@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-shared": "^1.5.
|
|
69
|
+
"@xyo-network/chain-protocol": "^1.5.23",
|
|
70
|
+
"@xyo-network/react-chain-network": "^1.5.23",
|
|
71
|
+
"@xyo-network/react-chain-shared": "^1.5.23",
|
|
72
72
|
"knip": "^5.60.2",
|
|
73
73
|
"react": "^19.1.0",
|
|
74
74
|
"react-dom": "^19.1.0",
|
|
@@ -1,12 +1,22 @@
|
|
|
1
|
-
import { ellipsize } from '@xylabs/eth-address'
|
|
2
1
|
import { usePromise } from '@xylabs/react-promise'
|
|
3
|
-
import {
|
|
4
|
-
import type { XyoViewer } from '@xyo-network/xl1-protocol'
|
|
2
|
+
import { StepSizes, type XyoViewer } from '@xyo-network/xl1-protocol'
|
|
5
3
|
import type { SignedHydratedBlockInstance } from '@xyo-network/xl1-protocol-sdk'
|
|
6
4
|
import { useMemo } from 'react'
|
|
7
5
|
|
|
8
6
|
import { formatResults } from '../../../../lib/index.ts'
|
|
9
7
|
|
|
8
|
+
const updateStepHashWindow = (blockNumber: number, stepHashes: Record<string, string>): Record<string, string> => {
|
|
9
|
+
for (const [index, step] of StepSizes.entries()) {
|
|
10
|
+
const nextStep = StepSizes[index + 1]
|
|
11
|
+
if (blockNumber >= step && blockNumber < nextStep) {
|
|
12
|
+
// Result Format - [block number - step size + 1, block number]
|
|
13
|
+
stepHashes[`Step ${index} - ${blockNumber}`] = `${blockNumber - step + 1} - ${blockNumber}`
|
|
14
|
+
}
|
|
15
|
+
// TODO - handle case where block number is beyond all steps
|
|
16
|
+
}
|
|
17
|
+
return stepHashes
|
|
18
|
+
}
|
|
19
|
+
|
|
10
20
|
export const useBlockDetails = (wrapper: SignedHydratedBlockInstance, viewer?: XyoViewer) => {
|
|
11
21
|
const stats = useMemo(() => {
|
|
12
22
|
const stats = {
|
|
@@ -43,10 +53,11 @@ export const useBlockDetails = (wrapper: SignedHydratedBlockInstance, viewer?: X
|
|
|
43
53
|
stepHashes[`Step ${step}`] = 'N/A'
|
|
44
54
|
continue
|
|
45
55
|
}
|
|
56
|
+
|
|
46
57
|
const blockNumber = block[0].block
|
|
47
|
-
|
|
58
|
+
updateStepHashWindow(blockNumber, stepHashes)
|
|
59
|
+
|
|
48
60
|
step++
|
|
49
|
-
stepHashes[`Step ${step} - ${blockNumber}`] = stepWindow.join(' - ')
|
|
50
61
|
} catch (e) {
|
|
51
62
|
console.error(`Error fetching block for step hash ${hash}:`, e)
|
|
52
63
|
step++
|