@xyo-network/react-chain-boundwitness 1.22.0 → 1.23.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/browser/index.mjs +577 -618
- package/dist/browser/index.mjs.map +7 -1
- package/package.json +47 -59
|
@@ -1 +1,7 @@
|
|
|
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 { 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 { filterAs } from '@xylabs/sdk-js'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\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 { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { SignedHydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\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?: SignedHydratedBlockWithHashMeta\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\n {...props}\n sx={[{\n alignItems: 'stretch',\n rowGap: 4,\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\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={{ sx: { p: 0.75 }, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0\n ? (\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 : null}\n <FlexCol\n sx={{\n alignItems: 'stretch',\n rowGap: 1,\n mb: 1,\n }}\n >\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\n sx={{\n alignItems: 'stretch',\n rowGap: 1,\n mb: 1,\n }}\n >\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { isUndefined } from '@xylabs/sdk-js'\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/sdk-js'\nimport type { Payload } from '@xyo-network/sdk-js'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n const hashes: Hash[] = []\n const 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 { InfoOutlined } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\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\n {...props}\n sx={[{\n alignItems: 'stretch',\n rowGap: 1,\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutlined\n sx={{\n fontSize: 'small',\n py: 2,\n px: 1,\n }}\n />\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\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 { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport { useBaseContext } from '@xyo-network/react-chain-blockchain'\nimport type { BlockValidationError } from '@xyo-network/xl1-sdk'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-sdk'\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 context = useBaseContext()\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(context, resolvedBlock)\n }\n }, [block, context])\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 { isUndefined } from '@xylabs/sdk-js'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-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 const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(payloads) || isUndefined(stepHashes)) return null\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => (\n <BlockBoundWitnessCardHeader\n key={address}\n address={address}\n linked={linkedAddress}\n chainId={wrapper.boundWitness.chain}\n />\n ))}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Block Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack sx={{ gap: 0.25 }}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n","import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Icon, IconButton, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/sdk-js'\nimport { ellipsize, isDefined } from '@xylabs/sdk-js'\nimport { BlockiesAvatarAddress } from '@xyo-network/react-chain-blockies'\nimport { useEvent } from '@xyo-network/react-event'\nimport type { ChainId } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n chainId?: ChainId\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({\n linked = true, address, chainId,\n}) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { StepSizes } from '@xyo-network/xl1-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 | undefined, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n if (isUndefined(wrapper)) return\n const epochDate = new Date(wrapper.boundWitness.$epoch)\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n // protocol should always be defined except for malformed blocks and very early blocks in the chain\n Protocol: wrapper.boundWitness.protocol?.toString() ?? 'N/A',\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`,\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n if (isUndefined(wrapper)) return\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 (isUndefined(wrapper) || isUndefined(viewer)) return\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 }, [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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\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 { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport { isSignedHydratedTransactionWithStorageMeta, validateTransaction } from '@xyo-network/xl1-sdk'\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({ singletons: {}, chainId: resolvedTransaction[0].chain }, resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n","import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,\n} from '@mui/material'\nimport {\n ellipsize, isDefined, isUndefined,\n} from '@xylabs/sdk-js'\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-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n const chainId = wrapper?.boundWitness.chain\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(fees) || isUndefined(blockDuration)) return null\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance | undefined) => {\n const stats = useMemo(() => {\n if (isUndefined(wrapper)) return\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 if (isUndefined(wrapper)) return\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 if (isUndefined(wrapper)) return\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 {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-sdk'\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\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n linkedProducerAddress?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({\n linkedProducerAddress, transaction, ...props\n}) => {\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\n {...props}\n sx={[{\n alignItems: 'stretch',\n rowGap: 2,\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ sx: { 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 =>\n <ErrorRender key={error.message} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} linkedAddress={linkedProducerAddress} 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 ? (\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 : null}\n {(referencedPayloadHashes?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol\n sx={{\n alignItems: 'stretch',\n rowGap: 1,\n mb: 1,\n }}\n >\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, isHash } from '@xylabs/sdk-js'\nimport type { Schema } from '@xyo-network/sdk-js'\nimport { isSchema, PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport { useMemo } 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 [referencedPayloads, referencedPayloadsError] = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n const errors: Error[] = []\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n const hashValid = isHash(hash)\n const schemaValid = isSchema(schema)\n if (hashValid) ret.hashes.push(hash)\n if (schemaValid) ret.schemas.push(schema)\n if (!hashValid && !schemaValid) {\n errors.push(new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`))\n }\n }\n }\n return [ret, errors] as const\n }, [wrapper])\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","filterAs","isBoundWitness","HydratedBlockWrapper","BoundWitnessPayloadsTable","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","useTxsFromBlock","usePayloadHash","PayloadBuilder","isTransactionBoundWitness","React","useMemo","FaSignature","GrTransaction","VscSymbolMethod","VscSymbolNamespace","isUndefined","bigIntToFixedPointString","formatFee","fee","isUndefined","stringValue","bigIntToFixedPointString","formatNumber","num","toLocaleString","navigator","language","formatPayloadsForTable","pairs","hashes","schemas","bw","hash","push","schema","formatResults","results","result","labels","values","label","value","Object","entries","push","InfoOutlined","Tooltip","FlexCol","isDefined","BoundWitnessPayloadTableBody","BoundWitnessPayloadTableHead","HeadingPaper","TableEx","React","VscSymbolMethod","PayloadTableFlexbox","IconComponent","eventNoun","hashes","schemas","headingTitle","clickableFields","tooltip","props","resolvedIconComponent","VscSymbolMethod","FlexCol","sx","alignItems","rowGap","Array","isArray","HeadingPaper","AdornmentEnd","isDefined","Tooltip","title","InfoOutlined","fontSize","py","px","heading","TableEx","BoundWitnessPayloadTableHead","BoundWitnessPayloadTableBody","payloadHashes","payloadSchemas","DataObject","DataObjectIcon","FlexRow","QuickTipButton","ellipsize","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","ErrorQuickTipButton","usePromise","assertEx","isDefined","validateBlock","useBaseContext","isBlockBoundWitness","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","BlockBoundWitnessVerification","block","context","useBaseContext","validationErrors","validateError","usePromise","isDefined","resolvedBlock","assertEx","isBlockBoundWitness","undefined","validateBlock","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","BlockBoundWitnessActions","boundwitness","validationIconColors","props","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","BlockBoundWitnessVerification","iconColors","block","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","Grid","Skeleton","Stack","ErrorRender","isUndefined","DetailsStack","LabelValueStack","React","GrSteps","IoStatsChartOutline","VscSymbolNamespace","CardHeader","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","BlockiesAvatarAddress","useEvent","React","FaCopy","BlockBoundWitnessCardHeader","linked","address","chainId","ref","dispatch","useEvent","React","CardHeader","title","Typography","onClick","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","usePromise","isUndefined","StepSizes","useMemo","generateStepHashText","blockNumber","stepHashIndex","stepSize","StepSizes","stepStart","stepStop","formatNumber","useBlockDetails","wrapper","viewer","stats","useMemo","isUndefined","epochDate","Date","boundWitness","$epoch","Height","block","Protocol","protocol","toString","Signatures","signatureCount","toLocaleDateString","toLocaleTimeString","formatResults","payloads","transactionCount","payloadCount","stepHashes","stepHashesError","stepHashesLoading","usePromise","index","hash","step_hashes","entries","blockByHash","console","warn","label","value","e","error","defaultValue","labels","values","BlockBoundWitnessCard","linkedAddress","viewer","wrapper","props","stats","payloads","stepHashes","stepHashesError","stepHashesLoading","useBlockDetails","isUndefined","React","Card","boundWitness","addresses","map","address","BlockBoundWitnessCardHeader","key","linked","chainId","chain","ErrorRender","error","scope","CardContent","Grid","container","spacing","sx","width","size","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","VscSymbolNamespace","GrSteps","Stack","gap","Skeleton","variant","height","BlockBoundWitnessDetails","block","paper","viewer","children","props","wrapper","wrapperError","usePromise","HydratedBlockWrapper","parse","boundWitness","payloads","hash","usePayloadHash","transactions","txFromBlockError","useTxsFromBlock","hashes","txHashes","schemas","txSchemas","useMemo","formatPayloadsForTable","nonTxBoundWitnesses","bwsFromBlockError","bws","filterAs","payload","isTransactionBoundWitness","isBoundWitness","undefined","PayloadBuilder","hashPairs","nonTxBwHashes","nonTxBwSchemas","hasNonTxBoundWitnesses","length","React","FlexCol","sx","alignItems","rowGap","Array","isArray","ErrorRender","error","scope","HashHeadingPaper","paperProps","p","AdornmentEnd","BlockBoundWitnessActions","boundwitness","identiconProps","size","BlockBoundWitnessCard","elevation","PayloadTableFlexbox","IconComponent","GrTransaction","eventNoun","clickableFields","headingTitle","mb","HeadingPaper","VscSymbolNamespace","heading","BoundWitnessPayloadsTable","VscSymbolMethod","FaSignature","BoundWitnessSignatureTable","DataObject","DataObjectIcon","FlexRow","QuickTipButton","ellipsize","BWPreviousHashQuickTipButton","usePayloadHash","React","CancelRounded","CancelRoundedIcon","ErrorQuickTipButton","usePromise","assertEx","isDefined","isSignedHydratedTransactionWithStorageMeta","validateTransaction","React","useMemo","InvalidIcon","ref","props","React","CancelRoundedIcon","color","displayName","TransactionVerification","transaction","validationErrors","validateError","usePromise","isDefined","resolvedTransaction","assertEx","isSignedHydratedTransactionWithStorageMeta","undefined","validateTransaction","singletons","chainId","chain","resolvedErrors","useMemo","errors","Array","isArray","push","Error","ErrorQuickTipButton","boundWitnessType","TransactionActions","transaction","validationIconColors","props","txBw","hash","usePayloadHash","React","FlexRow","previous_hashes","length","BWPreviousHashQuickTipButton","boundwitness","TransactionVerification","iconColors","QuickTipButton","Icon","DataObjectIcon","title","ellipsize","dialogProps","fullWidth","maxWidth","pre","style","wordBreak","JSON","stringify","Card","CardContent","CardHeader","Grid","Icon","IconButton","Link","Tooltip","Typography","ellipsize","isDefined","isUndefined","BlockiesAvatarAddress","DetailsStack","LabelValueStack","useEvent","React","FaCopy","GiReceiveMoney","GiSandsOfTime","IoStatsChartOutline","isUndefined","useMemo","useTransactionDetails","wrapper","stats","useMemo","isUndefined","formatNumber","reward","elevatedPayloadCount","Object","values","publicExternalPayloads","length","entries","privateExternalPayloads","signatureCount","formatResults","fees","formatFee","base","gasPrice","priority","gasLimit","blockDuration","boundWitness","exp","toLocaleString","navigator","language","nbf","TransactionBoundWitnessCard","linkedAddress","wrapper","props","chainId","boundWitness","chain","stats","fees","blockDuration","useTransactionDetails","ref","dispatch","useEvent","isUndefined","React","Card","CardHeader","title","Typography","onClick","from","variant","sx","maxWidth","textOverflow","overflow","fontFamily","Link","cursor","subheader","isDefined","fontSize","opacity","mt","ellipsize","IconButton","size","navigator","clipboard","writeText","Icon","FaCopy","avatar","Tooltip","BlockiesAvatarAddress","address","CardContent","Grid","container","spacing","width","xs","sm","md","DetailsStack","IconComponent","IoStatsChartOutline","heading","tooltipTitle","LabelValueStack","labels","values","GiReceiveMoney","GiSandsOfTime","ErrorRender","FlexCol","usePromise","BoundWitnessSignatureTable","HashHeadingPaper","HeadingPaper","HydratedTransactionWrapper","React","FaSignature","VscSymbolNamespace","usePromise","isDefined","isHash","isSchema","PayloadBuilder","useMemo","useTransactionPayloadTypes","wrapper","elevatedPayloadSets","elevatedPayloadSetsError","usePromise","isDefined","elevatedPayloads","pairs","PayloadBuilder","hashPairs","formatPayloadsForTable","hashes","schemas","publicPayloads","publicPayloadsError","publicExternalPayloads","referencedPayloads","referencedPayloadsError","useMemo","ret","errors","privateExternalPayloads","hash","schema","Object","entries","hashValid","isHash","schemaValid","isSchema","push","Error","elevatedPayloadHashes","elevatedPayloadSchemas","publicPayloadHashes","publicPayloadSchemas","referencedPayloadHashes","referencedPayloadSchemas","TransactionBoundWitnessDetails","linkedProducerAddress","transaction","props","wrapper","wrapperError","usePromise","HydratedTransactionWrapper","parse","elevatedPayloadHashes","elevatedPayloadSchemas","elevatedPayloadSetsError","publicPayloadHashes","publicPayloadSchemas","publicPayloadsError","referencedPayloadHashes","referencedPayloadSchemas","referencedPayloadsError","useTransactionPayloadTypes","React","FlexCol","sx","alignItems","rowGap","Array","isArray","HashHeadingPaper","hash","boundWitness","_hash","paperProps","p","AdornmentEnd","TransactionActions","identiconProps","size","ErrorRender","error","scope","map","key","message","TransactionBoundWitnessCard","elevation","linkedAddress","PayloadTableFlexbox","eventNoun","clickableFields","tooltip","IconComponent","VscSymbolNamespace","hashes","headingTitle","schemas","mb","length","HeadingPaper","FaSignature","heading","BoundWitnessSignatureTable","block"]}
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
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"],
|
|
4
|
+
"sourcesContent": ["import { 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 { filterAs } from '@xylabs/sdk-js'\nimport { isBoundWitness } from '@xyo-network/boundwitness-model'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\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 { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { SignedHydratedBlockWithHashMeta, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\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?: SignedHydratedBlockWithHashMeta\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\n {...props}\n sx={[{\n alignItems: 'stretch',\n rowGap: 4,\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\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={{ sx: { p: 0.75 }, size: 24 }}\n />\n <BlockBoundWitnessCard elevation={4} viewer={viewer} wrapper={wrapper} />\n {(transactions?.length ?? 0) > 0\n ? (\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 : null}\n <FlexCol\n sx={{\n alignItems: 'stretch',\n rowGap: 1,\n mb: 1,\n }}\n >\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\n sx={{\n alignItems: 'stretch',\n rowGap: 1,\n mb: 1,\n }}\n >\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n", "import { isUndefined } from '@xylabs/sdk-js'\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/sdk-js'\nimport type { Payload } from '@xyo-network/sdk-js'\n\nexport const formatPayloadsForTable = (pairs: [Payload, Hash][]) => {\n const hashes: Hash[] = []\n const 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 { InfoOutlined } from '@mui/icons-material'\nimport { Tooltip } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\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\n {...props}\n sx={[{\n alignItems: 'stretch',\n rowGap: 1,\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <HeadingPaper\n AdornmentEnd={isDefined(tooltip)\n ? (\n <Tooltip title={tooltip}>\n <InfoOutlined\n sx={{\n fontSize: 'small',\n py: 2,\n px: 1,\n }}\n />\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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\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 { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { BoundWitness } from '@xyo-network/boundwitness-model'\nimport { validateBlock } from '@xyo-network/chain-validation'\nimport { useBaseContext } from '@xyo-network/react-chain-blockchain'\nimport type { BlockValidationError } from '@xyo-network/xl1-sdk'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-sdk'\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 context = useBaseContext()\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(context, resolvedBlock)\n }\n }, [block, context])\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 { isUndefined } from '@xylabs/sdk-js'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-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 const {\n stats, payloads, stepHashes, stepHashesError, stepHashesLoading,\n } = useBlockDetails(wrapper, viewer)\n\n if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(payloads) || isUndefined(stepHashes)) return null\n return (\n <Card {...props}>\n {wrapper?.boundWitness.addresses.map(address => (\n <BlockBoundWitnessCardHeader\n key={address}\n address={address}\n linked={linkedAddress}\n chainId={wrapper.boundWitness.chain}\n />\n ))}\n <ErrorRender error={stepHashesError} scope=\"BlockBoundWitnessCard.tsx:stepHashesError\" />\n <CardContent>\n <Grid container spacing={6} sx={{ width: '100%' }}>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={IoStatsChartOutline} heading=\"Stats\" tooltipTitle=\"Block Statistics\">\n <LabelValueStack labels={stats.labels} values={stats.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={VscSymbolNamespace} heading=\"Payloads\" tooltipTitle=\"Payloads within the Block\">\n <LabelValueStack labels={payloads.labels} values={payloads.values} />\n </DetailsStack>\n </Grid>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <DetailsStack IconComponent={GrSteps} heading=\"Step Hashes\" tooltipTitle=\"Step Hashes for the Block\">\n {stepHashesLoading === 'pending'\n ? (\n <Stack sx={{ gap: 0.25 }}>\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n <Skeleton variant=\"text\" width=\"100%\" height={20} />\n </Stack>\n )\n : null}\n <LabelValueStack labels={stepHashes?.labels ?? []} values={stepHashes?.values ?? []} />\n </DetailsStack>\n </Grid>\n </Grid>\n </CardContent>\n </Card>\n )\n}\n", "import type { CardHeaderProps } from '@mui/material'\nimport {\n CardHeader, Icon, IconButton, Link,\n Tooltip, Typography,\n} from '@mui/material'\nimport type { Address } from '@xylabs/sdk-js'\nimport { ellipsize, isDefined } from '@xylabs/sdk-js'\nimport { useEvent } from '@xyo-network/react-event'\nimport { BlockiesAvatarAddress } from '@xyo-network/xl1-blockies'\nimport type { ChainId } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\n\nexport interface BlockBoundWitnessCardHeaderProps extends CardHeaderProps {\n address?: Address\n chainId?: ChainId\n linked?: boolean\n}\n\nexport const BlockBoundWitnessCardHeader: React.FC<BlockBoundWitnessCardHeaderProps> = ({\n linked = true, address, chainId,\n}) => {\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n return (\n <CardHeader\n ref={ref}\n title={(\n <Typography\n onClick={() => linked && dispatch('address', 'click', address)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linked\n ? (\n <Link sx={{ cursor: 'pointer' }}>{address}</Link>\n )\n : address}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedBlockInstance, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { StepSizes } from '@xyo-network/xl1-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 | undefined, viewer?: XyoViewer) => {\n const stats = useMemo(() => {\n if (isUndefined(wrapper)) return\n const epochDate = new Date(wrapper.boundWitness.$epoch)\n const stats = {\n Height: formatNumber(wrapper.boundWitness.block),\n // protocol should always be defined except for malformed blocks and very early blocks in the chain\n Protocol: wrapper.boundWitness.protocol?.toString() ?? 'N/A',\n Signatures: formatNumber(wrapper.signatureCount),\n $epoch: `${epochDate.toLocaleDateString()} ${epochDate.toLocaleTimeString()}`,\n }\n\n return formatResults(stats)\n }, [wrapper])\n\n const payloads = useMemo(() => {\n if (isUndefined(wrapper)) return\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 (isUndefined(wrapper) || isUndefined(viewer)) return\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 }, [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 type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { ellipsize } from '@xylabs/sdk-js'\nimport { BWPreviousHashQuickTipButton } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\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 { ErrorQuickTipButton } from '@xylabs/react-error'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionValidationError, SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport { isSignedHydratedTransactionWithStorageMeta, validateTransaction } from '@xyo-network/xl1-sdk'\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({ singletons: {}, chainId: resolvedTransaction[0].chain }, resolvedTransaction)\n }\n }, [transaction])\n\n const resolvedErrors = useMemo(() => {\n const errors: (Error | HydratedTransactionValidationError)[] = []\n if (isDefined(validationErrors)) {\n if (Array.isArray(validationErrors)) errors.push(...validationErrors)\n if (validationErrors instanceof Error) errors.push(validationErrors)\n if (isDefined(validateError)) errors.push(validateError)\n return errors\n }\n }, [validateError, validationErrors])\n\n return (\n <ErrorQuickTipButton boundWitnessType=\"Transaction\" errors={resolvedErrors} {...props} />\n )\n}\n", "import type { CardProps } from '@mui/material'\nimport {\n Card, CardContent, CardHeader, Grid, Icon, IconButton, Link, Tooltip, Typography,\n} from '@mui/material'\nimport {\n ellipsize, isDefined, isUndefined,\n} from '@xylabs/sdk-js'\nimport { DetailsStack, LabelValueStack } from '@xyo-network/react-chain-shared'\nimport { useEvent } from '@xyo-network/react-event'\nimport { BlockiesAvatarAddress } from '@xyo-network/xl1-blockies'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport React from 'react'\nimport { FaCopy } from 'react-icons/fa'\nimport { GiReceiveMoney, GiSandsOfTime } from 'react-icons/gi'\nimport { IoStatsChartOutline } from 'react-icons/io5'\n\nimport { useTransactionDetails } from './hooks/index.ts'\n\nexport interface TransactionBoundWitnessCardProps extends CardProps {\n linkedAddress?: boolean\n wrapper?: HydratedTransactionInstance\n}\n\nexport const TransactionBoundWitnessCard: React.FC<TransactionBoundWitnessCardProps> = ({\n linkedAddress = true, wrapper, ...props\n}) => {\n const chainId = wrapper?.boundWitness.chain\n\n const {\n stats, fees, blockDuration,\n } = useTransactionDetails(wrapper)\n\n const [ref, dispatch] = useEvent<HTMLDivElement>()\n\n if (isUndefined(wrapper) || isUndefined(stats) || isUndefined(fees) || isUndefined(blockDuration)) return null\n return (\n <Card ref={ref} {...props}>\n <CardHeader\n title={(\n <Typography\n onClick={() => linkedAddress && dispatch('address', 'click', wrapper.boundWitness.from)}\n variant=\"body2\"\n sx={{\n maxWidth: '100%', textOverflow: 'ellipsis', overflow: 'hidden', fontFamily: 'monospace',\n }}\n >\n {linkedAddress\n ? (\n <Link sx={{ cursor: 'pointer' }}>{wrapper?.boundWitness.from}</Link>\n )\n : wrapper?.boundWitness.from}\n </Typography>\n )}\n subheader={isDefined(chainId)\n ? (\n <Typography\n variant=\"subtitle2\"\n sx={{\n fontFamily: 'monospace', fontSize: 12, opacity: 0.5, mt: 0.25,\n }}\n title={`chain: ${chainId}`}\n >\n {ellipsize(chainId, 8)}\n <IconButton size=\"small\" onClick={() => void navigator.clipboard.writeText(chainId)}>\n <Icon sx={{ fontSize: '0.7rem' }}>\n <FaCopy />\n </Icon>\n </IconButton>\n </Typography>\n )\n : null}\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport {\n formatFee, formatNumber, formatResults,\n} from '../../../../lib/index.ts'\n\nexport const useTransactionDetails = (wrapper: HydratedTransactionInstance | undefined) => {\n const stats = useMemo(() => {\n if (isUndefined(wrapper)) return\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 if (isUndefined(wrapper)) return\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 if (isUndefined(wrapper)) return\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 {\n BoundWitnessSignatureTable, HashHeadingPaper, HeadingPaper,\n} from '@xyo-network/react-boundwitness-plugin'\nimport type { SignedHydratedTransactionWithStorageMeta } from '@xyo-network/xl1-sdk'\nimport { HydratedTransactionWrapper } from '@xyo-network/xl1-sdk'\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\nexport interface TransactionBoundWitnessDetailsProps extends FlexBoxProps {\n linkedProducerAddress?: boolean\n transaction?: SignedHydratedTransactionWithStorageMeta | null\n}\n\nexport const TransactionBoundWitnessDetails: React.FC<TransactionBoundWitnessDetailsProps> = ({\n linkedProducerAddress, transaction, ...props\n}) => {\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\n {...props}\n sx={[{\n alignItems: 'stretch',\n rowGap: 2,\n }, ...(Array.isArray(props.sx) ? props.sx : [props.sx])]}\n >\n <HashHeadingPaper\n hash={wrapper?.boundWitness?._hash}\n paperProps={{ sx: { p: 2 } }}\n AdornmentEnd={<TransactionActions transaction={transaction} />}\n identiconProps={{ sx: { 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 =>\n <ErrorRender key={error.message} error={error} scope=\"referencedPayloadsError:TransactionBoundWitnessDetails.tsx\" />)}\n <TransactionBoundWitnessCard elevation={4} linkedAddress={linkedProducerAddress} 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 ? (\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 : null}\n {(referencedPayloadHashes?.length ?? 0) > 0\n ? (\n <PayloadTableFlexbox\n eventNoun=\"payload\"\n clickableFields={['hash']}\n tooltip=\"Payload hashes referenced by the transaction but not included.\"\n IconComponent={<VscSymbolNamespace />}\n hashes={referencedPayloadHashes}\n headingTitle=\"Referenced Payloads\"\n schemas={referencedPayloadSchemas}\n sx={{ mb: 1 }}\n />\n )\n : null}\n <FlexCol\n sx={{\n alignItems: 'stretch',\n rowGap: 1,\n mb: 1,\n }}\n >\n <HeadingPaper IconComponent={<FaSignature />} heading=\"Signatures\" />\n <BoundWitnessSignatureTable block={wrapper?.boundWitness} />\n </FlexCol>\n </FlexCol>\n )\n}\n", "import { usePromise } from '@xylabs/react-promise'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { isDefined, isHash } from '@xylabs/sdk-js'\nimport type { Schema } from '@xyo-network/sdk-js'\nimport { isSchema, PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { HydratedTransactionInstance } from '@xyo-network/xl1-sdk'\nimport { useMemo } 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 [referencedPayloads, referencedPayloadsError] = useMemo(() => {\n const ret = { hashes: [] as Hash[], schemas: [] as Schema[] }\n const errors: Error[] = []\n if (isDefined(wrapper)) {\n const referencedPayloads = wrapper.privateExternalPayloads\n for (const [hash, schema] of Object.entries(referencedPayloads)) {\n const hashValid = isHash(hash)\n const schemaValid = isSchema(schema)\n if (hashValid) ret.hashes.push(hash)\n if (schemaValid) ret.schemas.push(schema)\n if (!hashValid && !schemaValid) {\n errors.push(new Error(`Unexpected payload or schema type for hash ${hash}: ${schema}`))\n }\n }\n }\n return [ret, errors] as const\n }, [wrapper])\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"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["ErrorRender", "FlexCol", "usePromise", "HeadingPaper", "usePayloadHash", "useMemo", "VscSymbolMethod", "VscSymbolNamespace", "isDefined", "jsx", "jsx", "jsxs", "isUndefined", "Tooltip", "ellipsize", "isDefined", "jsx", "jsxs", "usePromise", "isUndefined", "useMemo", "useMemo", "isUndefined", "stats", "payloads", "usePromise", "stepHashes", "jsx", "jsxs", "isUndefined", "jsx", "jsxs", "usePromise", "usePayloadHash", "useMemo", "FlexCol", "ErrorRender", "HeadingPaper", "VscSymbolNamespace", "VscSymbolMethod", "DataObjectIcon", "FlexRow", "QuickTipButton", "ellipsize", "BWPreviousHashQuickTipButton", "usePayloadHash", "CancelRoundedIcon", "ErrorQuickTipButton", "usePromise", "assertEx", "isDefined", "useMemo", "jsx", "InvalidIcon", "jsx", "jsxs", "usePayloadHash", "FlexRow", "BWPreviousHashQuickTipButton", "QuickTipButton", "DataObjectIcon", "ellipsize", "Card", "CardContent", "CardHeader", "Grid", "Icon", "IconButton", "Link", "Tooltip", "Typography", "ellipsize", "isDefined", "isUndefined", "DetailsStack", "LabelValueStack", "useEvent", "BlockiesAvatarAddress", "FaCopy", "IoStatsChartOutline", "isUndefined", "useMemo", "useMemo", "isUndefined", "stats", "fees", "blockDuration", "jsx", "jsxs", "useEvent", "isUndefined", "Card", "CardHeader", "Typography", "Link", "isDefined", "ellipsize", "IconButton", "Icon", "FaCopy", "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"]
|
|
7
|
+
}
|
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.23.2",
|
|
5
5
|
"description": "XYO Layer One React SDK BoundWitness",
|
|
6
6
|
"homepage": "https://xylabs.com",
|
|
7
7
|
"bugs": {
|
|
@@ -39,60 +39,55 @@
|
|
|
39
39
|
"README.md"
|
|
40
40
|
],
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@xyo-network/chain-utils": "~1.
|
|
43
|
-
"@xyo-network/
|
|
44
|
-
"@xyo-network/react-chain-
|
|
45
|
-
"@xyo-network/chain-
|
|
46
|
-
"@xyo-network/chain-
|
|
47
|
-
"@xyo-network/react-chain-blockchain": "~1.22.0"
|
|
42
|
+
"@xyo-network/chain-utils": "~1.23.2",
|
|
43
|
+
"@xyo-network/chain-validation": "~1.23.2",
|
|
44
|
+
"@xyo-network/react-chain-blockchain": "~1.23.2",
|
|
45
|
+
"@xyo-network/chain-wrappers": "~1.23.2",
|
|
46
|
+
"@xyo-network/react-chain-shared": "~1.23.2"
|
|
48
47
|
},
|
|
49
48
|
"devDependencies": {
|
|
50
49
|
"@bitauth/libauth": "~3.0.0",
|
|
51
50
|
"@emotion/react": "^11.14.0",
|
|
52
51
|
"@emotion/styled": "^11.14.1",
|
|
53
|
-
"@metamask/json-rpc-engine": "^10.
|
|
52
|
+
"@metamask/json-rpc-engine": "^10.5.0",
|
|
54
53
|
"@metamask/providers": "^22.1.1",
|
|
55
54
|
"@metamask/utils": "~11.11.0",
|
|
56
|
-
"@
|
|
57
|
-
"@
|
|
58
|
-
"@mui/
|
|
59
|
-
"@mui/
|
|
60
|
-
"@mui/
|
|
61
|
-
"@mui/x-charts": "~9.1.0",
|
|
62
|
-
"@mui/x-tree-view": "~9.1.0",
|
|
55
|
+
"@mui/icons-material": "~9.0.1",
|
|
56
|
+
"@mui/material": "~9.0.1",
|
|
57
|
+
"@mui/system": "~9.0.1",
|
|
58
|
+
"@mui/x-charts": "~9.2",
|
|
59
|
+
"@mui/x-tree-view": "~9.1",
|
|
63
60
|
"@opentelemetry/api": "^1.9.1",
|
|
64
61
|
"@opentelemetry/sdk-trace-base": "^2.7.1",
|
|
65
62
|
"@react-spring/web": "~10.0.3",
|
|
66
63
|
"@rollbar/react": "~1.0.0",
|
|
67
64
|
"@scure/base": "~2.2.0",
|
|
68
65
|
"@scure/bip39": "~2.2.0",
|
|
69
|
-
"@storybook/react-vite": "^10.
|
|
70
|
-
"@testing-library/dom": ">=7.21.4",
|
|
66
|
+
"@storybook/react-vite": "^10.4.0",
|
|
71
67
|
"@textea/json-viewer": "^4.0.1",
|
|
72
|
-
"@types/node": "^20.19.0 || >=22.12.0",
|
|
73
68
|
"@types/react": "^19.2.14",
|
|
74
69
|
"@xylabs/fetch": "~5.1.2",
|
|
75
70
|
"@xylabs/geo": "^5.1.2",
|
|
76
71
|
"@xylabs/pixel": "~5.1.2",
|
|
77
|
-
"@xylabs/react-animation": "~8.0",
|
|
78
|
-
"@xylabs/react-async-effect": "~8.0",
|
|
79
|
-
"@xylabs/react-button": "~8.0",
|
|
80
|
-
"@xylabs/react-error": "~8.0",
|
|
81
|
-
"@xylabs/react-flexbox": "~8.0",
|
|
82
|
-
"@xylabs/react-hooks": "~8.0",
|
|
83
|
-
"@xylabs/react-identicon": "~8.0",
|
|
84
|
-
"@xylabs/react-link": "~8.0",
|
|
85
|
-
"@xylabs/react-promise": "~8.0",
|
|
86
|
-
"@xylabs/react-quick-tip-button": "~8.0",
|
|
87
|
-
"@xylabs/react-select": "~8.0",
|
|
88
|
-
"@xylabs/react-shared": "~8.0",
|
|
89
|
-
"@xylabs/react-theme": "~8.0",
|
|
72
|
+
"@xylabs/react-animation": "~8.0.2",
|
|
73
|
+
"@xylabs/react-async-effect": "~8.0.2",
|
|
74
|
+
"@xylabs/react-button": "~8.0.2",
|
|
75
|
+
"@xylabs/react-error": "~8.0.2",
|
|
76
|
+
"@xylabs/react-flexbox": "~8.0.2",
|
|
77
|
+
"@xylabs/react-hooks": "~8.0.2",
|
|
78
|
+
"@xylabs/react-identicon": "~8.0.2",
|
|
79
|
+
"@xylabs/react-link": "~8.0.2",
|
|
80
|
+
"@xylabs/react-promise": "~8.0.2",
|
|
81
|
+
"@xylabs/react-quick-tip-button": "~8.0.2",
|
|
82
|
+
"@xylabs/react-select": "~8.0.2",
|
|
83
|
+
"@xylabs/react-shared": "~8.0.2",
|
|
84
|
+
"@xylabs/react-theme": "~8.0.2",
|
|
90
85
|
"@xylabs/sdk-js": "^5.1.2",
|
|
91
86
|
"@xylabs/threads": "~5.1.2",
|
|
92
|
-
"@xylabs/toolchain": "~
|
|
93
|
-
"@xylabs/tsconfig": "~
|
|
94
|
-
"@xylabs/tsconfig-dom": "~
|
|
95
|
-
"@xylabs/tsconfig-react": "~
|
|
87
|
+
"@xylabs/toolchain": "~8.0.4",
|
|
88
|
+
"@xylabs/tsconfig": "~8.0.4",
|
|
89
|
+
"@xylabs/tsconfig-dom": "~8.0.4",
|
|
90
|
+
"@xylabs/tsconfig-react": "~8.0.3",
|
|
96
91
|
"@xyo-network/account": "~5.6.2",
|
|
97
92
|
"@xyo-network/account-model": "~5.6.3",
|
|
98
93
|
"@xyo-network/api": "~5.6.2",
|
|
@@ -134,11 +129,11 @@
|
|
|
134
129
|
"@xyo-network/typeof": "~5.3.30",
|
|
135
130
|
"@xyo-network/wallet": "~5.6.2",
|
|
136
131
|
"@xyo-network/wallet-model": "^5.6.3",
|
|
137
|
-
"@xyo-network/xl1-
|
|
138
|
-
"
|
|
132
|
+
"@xyo-network/xl1-blockies": "^1.30.2",
|
|
133
|
+
"@xyo-network/xl1-react-client-sdk": "^1.30.2",
|
|
134
|
+
"@xyo-network/xl1-sdk": "^1.30.2",
|
|
139
135
|
"ajv": "^8.20.0",
|
|
140
136
|
"async-mutex": "^0.5.0",
|
|
141
|
-
"axios": "^1",
|
|
142
137
|
"bn.js": "^5.2.3",
|
|
143
138
|
"bowser": "^2.14.1",
|
|
144
139
|
"buffer": "^6.0.3",
|
|
@@ -148,7 +143,6 @@
|
|
|
148
143
|
"eslint": "^10.3.0",
|
|
149
144
|
"ethers": "^6.16.0",
|
|
150
145
|
"fast-deep-equal": "~3.1.3",
|
|
151
|
-
"firebase": "^12",
|
|
152
146
|
"hash-wasm": "~4.12.0",
|
|
153
147
|
"idb": "^8.0.3",
|
|
154
148
|
"js-cookie": "~3.0.5",
|
|
@@ -163,24 +157,22 @@
|
|
|
163
157
|
"react": "^19.2.6",
|
|
164
158
|
"react-dom": "^19.2.6",
|
|
165
159
|
"react-icons": "~5.6.0",
|
|
166
|
-
"react-is": "
|
|
167
|
-
"react-router-dom": "^7.15.
|
|
160
|
+
"react-is": "^19.2.6",
|
|
161
|
+
"react-router-dom": "^7.15.1",
|
|
168
162
|
"recharts": "~3.8.1",
|
|
169
|
-
"redux": "^5.0.0",
|
|
170
163
|
"rollbar": "^3.1.0",
|
|
171
|
-
"rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0",
|
|
172
164
|
"shallowequal": "~1.1.0",
|
|
173
165
|
"spark-md5": "~3.0.2",
|
|
174
166
|
"store2": "~2.14.4",
|
|
175
|
-
"storybook": "^10.
|
|
176
|
-
"typescript": "~
|
|
167
|
+
"storybook": "^10.4.0",
|
|
168
|
+
"typescript": "~6.0.3",
|
|
177
169
|
"uuid": "~14.0.0",
|
|
178
|
-
"vite": "^8.0.
|
|
170
|
+
"vite": "^8.0.13",
|
|
179
171
|
"wasm-feature-detect": "~1.8.0",
|
|
180
172
|
"webextension-polyfill": "^0.12.0",
|
|
181
173
|
"zod": "~4.4.3",
|
|
182
|
-
"@xyo-network/react-chain-
|
|
183
|
-
"@xyo-network/react-chain-
|
|
174
|
+
"@xyo-network/react-chain-network": "~1.23.2",
|
|
175
|
+
"@xyo-network/react-chain-provider": "~1.23.2"
|
|
184
176
|
},
|
|
185
177
|
"peerDependencies": {
|
|
186
178
|
"@bitauth/libauth": "~3.0",
|
|
@@ -189,12 +181,10 @@
|
|
|
189
181
|
"@metamask/json-rpc-engine": "^10.3",
|
|
190
182
|
"@metamask/providers": "^22.1",
|
|
191
183
|
"@metamask/utils": "~11.11",
|
|
192
|
-
"@
|
|
193
|
-
"@
|
|
194
|
-
"@mui/
|
|
195
|
-
"@mui/
|
|
196
|
-
"@mui/system": "^9.0",
|
|
197
|
-
"@mui/x-charts": "~9.1",
|
|
184
|
+
"@mui/icons-material": "~9.0",
|
|
185
|
+
"@mui/material": "~9.0",
|
|
186
|
+
"@mui/system": "~9.0",
|
|
187
|
+
"@mui/x-charts": "~9.2",
|
|
198
188
|
"@mui/x-tree-view": "~9.1",
|
|
199
189
|
"@opentelemetry/api": "^1.9",
|
|
200
190
|
"@opentelemetry/sdk-trace-base": "^2.7",
|
|
@@ -203,7 +193,6 @@
|
|
|
203
193
|
"@scure/base": "~2.2",
|
|
204
194
|
"@scure/bip39": "~2.2",
|
|
205
195
|
"@storybook/react-vite": "^10.3",
|
|
206
|
-
"@testing-library/dom": ">=7.21.4",
|
|
207
196
|
"@textea/json-viewer": "^4.0",
|
|
208
197
|
"@xylabs/fetch": "~5.1",
|
|
209
198
|
"@xylabs/geo": "^5.1",
|
|
@@ -263,10 +252,11 @@
|
|
|
263
252
|
"@xyo-network/typeof": "~5.3",
|
|
264
253
|
"@xyo-network/wallet": "~5.6",
|
|
265
254
|
"@xyo-network/wallet-model": "^5.6",
|
|
255
|
+
"@xyo-network/xl1-blockies": "^1.28",
|
|
256
|
+
"@xyo-network/xl1-react-client-sdk": "^1.28",
|
|
266
257
|
"@xyo-network/xl1-sdk": "^1.28",
|
|
267
258
|
"ajv": "^8.20",
|
|
268
259
|
"async-mutex": "^0.5",
|
|
269
|
-
"axios": "^1",
|
|
270
260
|
"bn.js": "^5.2",
|
|
271
261
|
"bowser": "^2.14",
|
|
272
262
|
"buffer": "^6.0",
|
|
@@ -275,7 +265,6 @@
|
|
|
275
265
|
"debug": "~4.4",
|
|
276
266
|
"ethers": "^6.16",
|
|
277
267
|
"fast-deep-equal": "~3.1",
|
|
278
|
-
"firebase": "^12",
|
|
279
268
|
"hash-wasm": "~4.12",
|
|
280
269
|
"idb": "^8.0",
|
|
281
270
|
"js-cookie": "~3.0",
|
|
@@ -290,10 +279,9 @@
|
|
|
290
279
|
"react": "^19.2",
|
|
291
280
|
"react-dom": "^19.2",
|
|
292
281
|
"react-icons": "~5.6",
|
|
293
|
-
"react-is": "
|
|
282
|
+
"react-is": "^19.2",
|
|
294
283
|
"react-router-dom": "^7.15",
|
|
295
284
|
"recharts": "~3.8",
|
|
296
|
-
"redux": "^5.0.0",
|
|
297
285
|
"rollbar": "^3.1",
|
|
298
286
|
"shallowequal": "~1.1",
|
|
299
287
|
"spark-md5": "~3.0",
|