@xyo-network/react-chain-blockchain 1.20.17 → 1.20.18

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.
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/components/account/BalanceHistoryFlexbox.tsx","../../src/components/account/helpers/formatBalanceMagnitude.ts","../../src/components/account/table/BalanceHistoryTableEx.tsx","../../src/components/account/table/BalanceHistoryTableRow.tsx","../../src/components/block/BlockHeadingFlexbox.tsx","../../src/context/analyzer/context.ts","../../src/context/analyzer/use.ts","../../src/context/polling/context.ts","../../src/context/polling/use.ts","../../src/components/transactions/submit/Builder.tsx","../../src/components/transactions/submit/Network.tsx","../../src/components/transactions/submit/SubmitChain.tsx","../../src/components/transactions/TransactionCountChip.tsx","../../src/components/transactions/TransactionsQuickTipButton.tsx","../../src/hooks/chain-iterator/useChainIteratorParams.ts","../../src/hooks/useBaseContext.ts","../../src/hooks/useTxsFromBlock.ts","../../src/helpers/txsFromBlock.ts","../../src/components/block/hooks/useAnchorElement.ts","../../src/components/block/hooks/useBlockHeadingEvents.ts","../../src/components/block/hooks/useBlockProducer.ts","../../src/components/block/hooks/usePayloadCountsFromBlock.ts","../../src/components/block/helpers/blockProducer.ts","../../src/components/block/helpers/buildBlockChainRenderComponent.tsx","../../src/components/block/helpers/payloadCountsFromBlock.ts","../../src/components/block/LinkedDivider.tsx","../../src/components/block/menu/Expanded.tsx","../../src/components/block/ProducerChip.tsx","../../src/components/block/ChipSkeleton.tsx","../../src/components/block/table/cell/BlockNumber.tsx","../../src/components/block/table/cell/hooks/useLinkedBlockItem.tsx","../../src/components/block/table/cell/Epoch.tsx","../../src/components/block/table/cell/helpers/timeFunctions.ts","../../src/components/block/table/cell/Hash.tsx","../../src/components/FeatureNotAvailable.tsx","../../src/components/block/table/cell/JsonView.tsx","../../src/components/block/table/cell/PayloadCounts.tsx","../../src/components/block/table/cell/Producer.tsx","../../src/components/block/table/cell/TransactionCount.tsx","../../src/components/block/table/cell/Verification.tsx","../../src/components/block/table/Ex.tsx","../../src/components/block/table/head/TableHead.tsx","../../src/components/block/table/row/TableRow.tsx","../../src/components/table/StyledLinkableTableRow.tsx","../../src/components/account/table/cell/AddressTableCell.tsx","../../src/components/account/table/hooks/useLinkedBalanceHistoryItem.tsx","../../src/components/account/table/cell/BlockNumber.tsx","../../src/components/account/table/cell/HashTableCell.tsx","../../src/components/account/table/RawAmountTableCell.tsx","../../src/components/account/table/types/index.ts","../../src/components/account/hooks/usePagedAccountBalanceHistory.ts","../../src/components/chain/controls/PollingControlsFlexbox.tsx","../../src/components/chain/stats/Dialog.tsx","../../src/components/chain/stats/producer/ProducerFlexbox.tsx","../../src/components/chain/stats/producer/Table.tsx","../../src/components/chain/controls/PulseSvgIcon.tsx","../../src/components/chain/dialog/Dialog.tsx","../../src/components/chain/hooks/useOnBlock.ts","../../src/components/chain/pagination/BlockChainPagination.tsx","../../src/components/chain/pagination/hooks/usePagination.tsx","../../src/components/chain/styled/BlockListWrapperFlexbox.tsx","../../src/components/payload/builder/Flexbox.tsx","../../src/components/payload/builder/producer-intent/Form.tsx","../../src/components/payload/fields/BlockNumberTextField.tsx","../../src/components/payload/fields/XyoAddressTextField.tsx","../../src/components/payload/builder/transfer/Flexbox.tsx","../../src/components/payload/builder/transfer/Form.tsx","../../src/components/payload/builder/transfer/builder/SingleFlexbox.tsx","../../src/components/rate/flexbox/FlexBox.tsx","../../src/helpers/rate/rateUnitToLabel.ts","../../src/components/rate/SpanTypography.tsx","../../src/components/rate/support/MetricTypography.tsx","../../src/components/rate/SpeedTypography.tsx","../../src/components/rate/TimeTypography.tsx","../../src/components/rate/gauge/Container.tsx","../../src/components/rate/gauge/helpers/blockRateConversions.ts","../../src/components/rate/gauge/Pointer.tsx","../../src/components/rate/gauge/Ticks.tsx","../../src/components/rate/gauge/WithLabel.tsx","../../src/stories/ChainArchivistDecorator.tsx","../../src/lib/getChainId.ts","../../src/stories/ChainArchivistDelayedInsertDecorator.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { type Address } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { useAccountBalanceHistory } from '@xyo-network/react-chain-provider'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport type { XyoViewer } from '@xyo-network/xl1-sdk'\nimport { AttoXL1 } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { formatBalanceMagnitude } from './helpers/index.ts'\nimport { AccountBalanceHistoryTableEx } from './table/index.ts'\n\nexport interface AccountBalanceHistoryFlexBoxProps extends FlexBoxProps {\n address?: Address\n refresh?: number\n viewer?: XyoViewer\n}\n\nexport const AccountBalanceHistoryFlexBox: React.FC<AccountBalanceHistoryFlexBoxProps> = ({\n address, refresh, viewer, ...props\n}) => {\n const [results, error] = useAccountBalanceHistory(address, viewer, undefined, undefined, refresh)\n const {\n history, balance, truncated,\n } = results || { balance: [AttoXL1(0n), AttoXL1(0n)], history: undefined }\n\n return isDefined(history) && isDefined(address)\n ? (\n <FlexCol {...props}>\n <ErrorRender error={error} scope=\"AccountBalanceHistoryTable\" />\n <Typography variant=\"h6\" gutterBottom>\n {formatBalanceMagnitude(balance)}\n </Typography>\n {truncated\n ? (\n <Typography variant=\"caption\" gutterBottom>\n Ranged Balance from\n {' '}\n {history.at(-1)!.blockNumber}\n {' '}\n -\n {' '}\n {history[0].blockNumber}\n </Typography>\n )\n : null}\n <AccountBalanceHistoryTableEx history={history} />\n </FlexCol>\n )\n : null\n}\n","import { type AttoXL1, XL1Amount } from '@xyo-network/xl1-sdk'\n\nexport const formatBalanceMagnitude = (set: [AttoXL1, AttoXL1]) => {\n const [received, sent] = set\n const netBalance = received - sent\n return netBalance < 0n ? `-${formatBalance(sent - received)}` : formatBalance(netBalance)\n}\n\nconst formatBalance = (balance: bigint) => {\n const xl1Amount = new XL1Amount(balance)\n return xl1Amount.toString(undefined, {\n places: 18, maxDecimal: 12, maxCharacters: 12, minDecimals: 1, locale: navigator.language,\n })\n}\n","import {\n TableBody, TableCell, TableHead, TableRow,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport type { TableExProps } from '@xyo-network/react-table'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\n\nimport { BalanceHistoryTableRow } from './BalanceHistoryTableRow.tsx'\nimport { TableHeadingLabels } from './types/index.ts'\n\nexport interface AccountBalanceHistoryTableExProps extends TableExProps {\n history?: AccountBalanceHistoryItemFormatted[]\n linked?: boolean\n}\n\nexport const AccountBalanceHistoryTableEx: React.FC<AccountBalanceHistoryTableExProps> = ({\n history, linked, ...props\n}) => {\n return isDefined(history)\n ? (\n <TableEx {...props}>\n <TableHead>\n <TableRow>\n {TableHeadingLabels.map(heading => (\n <TableCell key={heading}>{heading}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {history?.map(row => <BalanceHistoryTableRow key={row.key} linked={linked} row={row} />)}\n </TableBody>\n </TableEx>\n )\n : null\n}\n","import {\n TableCell,\n type TableRowProps,\n} from '@mui/material'\nimport { isDefined, type JsonValue } from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport { RawInfoIconButton } from '@xyo-network/react-payload-raw-info'\nimport type { Ref } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { BlockEpochTableCellInner } from '../../block/index.ts'\nimport { StyledLinkableTableRow } from '../../table/index.ts'\nimport {\n AddressTableCell, BalanceHistoryBlockNumberTableCellInner, HashTableCell,\n} from './cell/index.ts'\nimport { useLinkedBalanceHistoryItem } from './hooks/index.ts'\nimport { RawAmountTableCell } from './RawAmountTableCell.tsx'\nimport type { BalanceHistoryEventNouns } from './types/index.ts'\n\n// const TEXT_TX_HASH = '123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234' as Hash\n\nexport interface BalanceHistoryTableRowProps extends TableRowProps {\n linked?: boolean\n row: AccountBalanceHistoryItemFormatted\n}\n\nexport const BalanceHistoryTableRow: React.FC<BalanceHistoryTableRowProps> = ({\n linked, row, ...props\n}) => {\n const {\n amount, blockHash, blockNumber, debug, from, key, timestamp, to, type, txHash, transferHash,\n } = row ?? {} as AccountBalanceHistoryItemFormatted\n\n const linkedTableCallProps = useMemo(() => ({ linked }), [linked])\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n\n const noun: BalanceHistoryEventNouns = isDefined(txHash) ? 'tx-hash|transfer-hash' : 'block-hash|transfer-hash'\n const data = isDefined(txHash) ? `${txHash}|${transferHash}` : `${blockHash}|${transferHash}`\n\n return (\n <StyledLinkableTableRow\n linked={linked}\n key={key}\n onClick={linked ? e => handleClick(e, noun, data) : undefined}\n ref={ref as Ref<HTMLTableRowElement> | undefined}\n {...props}\n >\n <HashTableCell hash={txHash} toolTipTitle={`Transaction Hash: ${txHash}`} eventNoun=\"tx-hash\" {...linkedTableCallProps} />\n <BalanceHistoryBlockNumberTableCellInner blockNumber={blockNumber} eventNoun=\"block-number\" {...linkedTableCallProps} />\n <BlockEpochTableCellInner epoch={timestamp} {...linkedTableCallProps} />\n <AddressTableCell address={from} toolTipTitle={`From Address: ${from}`} eventNoun=\"from-address\" {...linkedTableCallProps} />\n <AddressTableCell address={to} toolTipTitle={`To Address: ${to}`} eventNoun=\"to-address\" {...linkedTableCallProps} />\n <RawAmountTableCell amount={amount} type={type} eventNoun=\"amount\" />\n <HashTableCell hash={transferHash} toolTipTitle={`Transfer Hash: ${transferHash}`} eventNoun={noun} eventData={data} {...linkedTableCallProps} />\n <TableCell>\n <RawInfoIconButton rawValue={debug as JsonValue} />\n </TableCell>\n </StyledLinkableTableRow>\n )\n}\n","import { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { BWVerification, HashHeadingPaper } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { useChainPollingContext } from '../../context/index.ts'\nimport type { BlockComponentWithTxsProps } from '../../types/index.ts'\nimport { TransactionCountChip } from '../transactions/index.ts'\nimport { useBlockHeadingEvents } from './hooks/index.ts'\nimport { LinkedDivider } from './LinkedDivider.tsx'\nimport { BlockMenuExpanded } from './menu/index.ts'\nimport { BlockProducerChip } from './ProducerChip.tsx'\n\nexport const BlockHeadingFlexbox: React.FC<BlockComponentWithTxsProps> = ({\n block, defaultExpanded, transactions,\n}) => {\n const hash = usePayloadHash(block?.[0])\n const [blockHeadingRef, blockHeadingListener] = useBlockHeadingEvents<HTMLDivElement>()\n const { pollingState } = useChainPollingContext()\n const expanded = (pollingState === 'paused') || defaultExpanded\n\n const handleTransactionCountClick = (event: React.MouseEvent, transactions: Hash[]) => {\n event.stopPropagation()\n blockHeadingListener('transaction-count', 'click', JSON.stringify(transactions), event.nativeEvent)\n }\n\n return (\n <FlexCol className=\"block-heading-flexbox\" alignItems=\"stretch\" ref={blockHeadingRef} onClick={() => blockHeadingListener('block-hash', 'click', hash)}>\n <LinkedDivider />\n <HashHeadingPaper\n hash={hash}\n heading={block?.[0].block === undefined ? '' : block?.[0].block.toString()}\n paperProps={{ sx: { p: 1, width: '100%' } }}\n AdornmentEnd={(\n <FlexRow gap={1}>\n <BlockProducerChip block={block} />\n <TransactionCountChip\n onClick={e => handleTransactionCountClick(e, transactions ?? [])}\n transactions={transactions}\n />\n <BWVerification iconColors boundwitness={block?.[0]} />\n <span style={{\n // maxWidth is required for css animation to work and 28px is the width of the icon button\n display: 'flex', transition: 'max-width .5s', maxWidth: expanded ? '28px' : 0,\n }}\n >\n <BlockMenuExpanded block={block} />\n </span>\n </FlexRow>\n )}\n identiconProps={{ p: 0.75, size: 18 }}\n />\n </FlexCol>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainAnalyzersState } from './state.ts'\n\nexport const ChainAnalyzersContext = createContextEx<ChainAnalyzersState>()\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainAnalyzersContext } from './context.ts'\nimport type { ChainAnalyzersState } from './state.ts'\n\nexport const useChainAnalyzersContext = (required = false) => useContextEx<ChainAnalyzersState>(ChainAnalyzersContext, 'ChainAnalyzers', required)\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainPollingState } from './state.ts'\n\nexport const ChainPollingContext = createContextEx<ChainPollingState>()\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainPollingContext } from './context.ts'\n\nexport const useChainPollingContext = (required = false) => useContextEx(ChainPollingContext, 'ChainPolling', required)\n","import {\n Button, FormControl, TextField,\n} from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { toHex } from '@xylabs/sdk-js'\nimport type { ChainId, TransactionBoundWitnessFields } from '@xyo-network/xl1-sdk'\nimport { defaultTransactionFees, toXL1BlockNumber } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nexport interface ChainTransactionBuilder {\n onSubmitTx?: (chainTx: Omit<TransactionBoundWitnessFields, 'from'>) => Promise<void>\n}\n\nexport const ChainTransactionBuilder: React.FC<ChainTransactionBuilder> = ({ onSubmitTx }) => {\n const handleSubmit = async (event: React.SubmitEvent<HTMLFormElement>) => {\n event.preventDefault()\n const formData = new FormData(event.currentTarget)\n\n // TODO - more field level validation\n const chainTx: Omit<TransactionBoundWitnessFields, 'from'> = {\n chain: formData.get('chain') as ChainId,\n nbf: toXL1BlockNumber(formData.get('nbf'), true),\n exp: toXL1BlockNumber(formData.get('exp'), true),\n fees: {\n gasLimit: toHex(defaultTransactionFees.gasLimit),\n gasPrice: toHex(defaultTransactionFees.gasPrice),\n base: toHex(defaultTransactionFees.base),\n priority: toHex(defaultTransactionFees.priority),\n },\n }\n\n await onSubmitTx?.(chainTx)\n }\n\n return (\n <form onSubmit={event => void handleSubmit(event)} style={{ width: '100%' }}>\n <FlexCol gap={2}>\n <FormControl fullWidth>\n <TextField label=\"Chain Address\" name=\"chain\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Gas\" name=\"gas\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Not Before Block\" name=\"nbf\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Not After Block\" name=\"exp\" required />\n </FormControl>\n\n <Button type=\"submit\" variant=\"contained\">Submit</Button>\n </FlexCol>\n </form>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport {\n FormControl, FormHelperText,\n TextField,\n} from '@mui/material'\nimport type { ChangeEventHandler } from 'react'\nimport React, { useState } from 'react'\n\nexport interface ChainTransactionNetworkProps extends StandardTextFieldProps {\n network?: URL\n onNetworkChange?: (url: URL) => void\n}\n\nexport const ChainTransactionNetwork: React.FC<ChainTransactionNetworkProps> = ({\n network, onNetworkChange, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n try {\n const url = new URL(event.target.value)\n setError(undefined)\n onNetworkChange?.(url)\n } catch (error) {\n console.error(error)\n setError(error as Error)\n }\n }\n\n return (\n <FormControl fullWidth>\n <TextField label=\"Network\" name=\"network\" onChange={handleChange} required value={network} {...props} />\n <FormHelperText sx={{ color: error ? 'red' : undefined }}>{error ? 'Not a valid url' : 'Enter full url of archivist'}</FormHelperText>\n </FormControl>\n )\n}\n","import {\n Alert, Grid, Typography,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport { axiosJsonConfig } from '@xylabs/sdk-js'\nimport type {\n ApiEnvelope, ModuleQueryResult, Payload,\n} from '@xyo-network/sdk-js'\nimport {\n Account, ArchivistInsertQuerySchema,\n PayloadBuilder, QueryBoundWitnessBuilder,\n} from '@xyo-network/sdk-js'\nimport type { TransactionBoundWitnessFields } from '@xyo-network/xl1-sdk'\nimport { buildTransaction } from '@xyo-network/xl1-sdk'\nimport { Axios } from 'axios'\nimport React, { useState } from 'react'\n\nimport { ChainTransactionBuilder } from './Builder.tsx'\nimport { ChainTransactionNetwork } from './Network.tsx'\n\nconst BETA_PENDING_TRANSACTIONS_ARCHIVIST = 'https://beta.api.chain.xyo.network/8050fee682a2762f504d5449d8269a6f17f0b693'\nconst defaultNetwork = new URL(BETA_PENDING_TRANSACTIONS_ARCHIVIST)\n\nexport const SubmitChainTransaction: React.FC = () => {\n const [network, setNetwork] = useState<URL | undefined>(defaultNetwork)\n const [result, setResult] = useState<ModuleQueryResult>()\n const [error, setError] = useState<Error>()\n\n const onSubmitTx = async (chainTx: Omit<TransactionBoundWitnessFields, 'from'>) => {\n if (network) {\n const randomAccount = await Account.random()\n const [transactionBoundWitness] = await buildTransaction(\n chainTx.chain,\n [],\n [],\n randomAccount,\n chainTx.nbf,\n chainTx.exp,\n )\n\n const insertQuery = new PayloadBuilder({ schema: ArchivistInsertQuerySchema }).build()\n const [queryBoundWitness] = await new QueryBoundWitnessBuilder()\n .payloads([transactionBoundWitness as Payload])\n .query(insertQuery)\n .signer(randomAccount)\n .build()\n\n const response = await new Axios(axiosJsonConfig()).post<ApiEnvelope<ModuleQueryResult>>(\n network.href,\n [queryBoundWitness, [insertQuery, transactionBoundWitness, chainTx]],\n )\n if (response.data.errors.length > 0) {\n setError(new Error(response.data.errors.map(e => e.message).join('\\n')))\n } else {\n setResult(response.data.data)\n }\n }\n }\n\n const onNetworkChange = (url: URL) => {\n setNetwork(url)\n }\n\n return (\n <Grid container>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <FlexGrowCol alignItems=\"start\" gap={2}>\n <ChainTransactionNetwork network={network} onNetworkChange={onNetworkChange} />\n {network ? <ChainTransactionBuilder onSubmitTx={onSubmitTx} /> : null}\n {result?.[2].length === 0 ? <Alert severity=\"success\">Success</Alert> : null}\n\n {error ? <ErrorRender error={error} /> : null}\n {result?.[2] && result?.[2].length > 0 ? <ErrorRender error={new Error('Failed insert...see result below')} /> : null}\n\n {result\n ? (\n <>\n <Typography variant=\"h6\">Result:</Typography>\n <pre>{JSON.stringify(result, null, 2)}</pre>\n </>\n )\n : null}\n </FlexGrowCol>\n </Grid>\n </Grid>\n )\n}\n","import CompareArrowsIcon from '@mui/icons-material/CompareArrows'\nimport type { ChipProps } from '@mui/material'\nimport { Chip, Icon } from '@mui/material'\nimport type { Hash } from '@xylabs/sdk-js'\nimport React, { useMemo } from 'react'\n\nexport interface TransactionCountChipProps extends ChipProps {\n transactions?: Hash[]\n}\n\nexport const TransactionCountChip: React.FC<TransactionCountChipProps> = ({\n transactions, sx, ...props\n}) => {\n const label = useMemo(() => {\n if (!transactions) return '0'\n return transactions?.length > 10 ? '+10' : transactions.length\n }, [transactions])\n\n return (\n <Chip\n avatar={(\n <Icon>\n <CompareArrowsIcon />\n </Icon>\n )}\n label={label}\n title={transactions ? `Block contains ${transactions.length} transactions` : undefined}\n sx={{\n display: 'inline-flex', alignItems: 'center', justifyContent: 'center', ...sx,\n }}\n {...props}\n />\n )\n}\n","import { ContentCopy as ContentCopyIcon, Paid } from '@mui/icons-material'\nimport {\n Alert, AlertTitle, Collapse, Snackbar, Typography,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport {\n FlexGrowCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { type Hash, isDefined } from '@xylabs/sdk-js'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\nimport React, { Fragment, useState } from 'react'\n\nimport { useTxsFromBlock } from '../../hooks/index.ts'\n\nexport interface TransactionsQuickTipButtonQuickTipButtonProps extends QuickTipButtonProps {\n block?: HydratedBlockWithHashMeta\n}\n\nexport const TransactionsQuickTipButton: React.FC<TransactionsQuickTipButtonQuickTipButtonProps> = ({ block, ...props }) => {\n const [transactions, transactionsError] = useTxsFromBlock(block)\n\n const [copied, setCopied] = useState(false)\n\n const [closeDialog, setCloseDialog] = useState(false)\n const open = isDefined(transactionsError)\n\n // if the error changes, reopen the dialog\n const [previousTransactionError, setPreviousTransactionError] = useState<Error | undefined>(transactionsError)\n if (isDefined(transactionsError) && transactionsError !== previousTransactionError) {\n setPreviousTransactionError(transactionsError)\n setCloseDialog(false)\n }\n\n const onCopy = async (transactionHash: Hash) => {\n await navigator.clipboard.writeText(transactionHash)\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 5000)\n }\n\n return (\n <>\n <QuickTipButton\n Icon={Paid}\n disabled={transactions?.length === 0}\n hoverText={`Transaction Count: ${transactions?.length ?? 0}`}\n disableDialog={transactions?.length === 0}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n {...props}\n >\n {transactions?.length === 0\n ? null\n : (\n <FlexGrowCol gap={1} alignItems=\"stretch\">\n {transactions?.map(([_transaction, hash]) => (\n <Fragment key={hash}>\n <FlexGrowRow gap={2} justifyContent=\"start\">\n <ContentCopyIcon sx={{ cursor: 'pointer' }} onClick={() => void onCopy(hash)} />\n <Typography sx={{\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}\n >\n {hash}\n </Typography>\n </FlexGrowRow>\n <FlexRow>\n <Collapse in={copied} unmountOnExit>\n <Alert>\n <AlertTitle>Previous hash copied to clipboard</AlertTitle>\n </Alert>\n </Collapse>\n </FlexRow>\n </Fragment>\n ))}\n </FlexGrowCol>\n )}\n </QuickTipButton>\n <Snackbar open={open && closeDialog === false} onClose={() => setCloseDialog(true)}>\n <ErrorRender error={transactionsError} scope=\"TransactionsQuickTipButton\" />\n </Snackbar>\n </>\n )\n}\n","import type { UsePromiseState } from '@xylabs/react-promise'\nimport { usePromise } from '@xylabs/react-promise'\nimport { type Hash, isHash } from '@xylabs/sdk-js'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type {\n Payload, ReadArchivist, WithHashMeta, WithStorageMeta,\n} from '@xyo-network/sdk-js'\nimport { BoundWitnessBuilder } from '@xyo-network/sdk-js'\nimport type {\n BlockBoundWitness, ChainId, Config, PayloadMapRead,\n} from '@xyo-network/xl1-sdk'\nimport { ConfigZod, isBlockBoundWitness } from '@xyo-network/xl1-sdk'\n\nimport type { BlockChainIterator } from '../../types/index.ts'\n\nexport const resolveDefinedHead = async (head: Hash, chainArchivist: ReadArchivist) => {\n // get the head from the chain archivist\n const [headPayload] = await chainArchivist.get([head])\n // if the head is undefined, we need to create a new one\n if (headPayload === undefined) {\n const [currentHead] = await new BoundWitnessBuilder<BlockBoundWitness>().build()\n return currentHead\n } else {\n // if the head is a block bound witness, we can use it\n return assertEx(isBlockBoundWitness(headPayload)\n ? headPayload\n : undefined, () => `Expected a block bound witness: ${JSON.stringify(headPayload)}`)\n }\n}\n\nexport const useChainIteratorParams = ({\n chainMap, chainId, head, name,\n}: BlockChainIterator): [{\n chainId: ChainId\n chainMap: PayloadMapRead<WithStorageMeta<Payload>>\n config: Config\n head: WithHashMeta<BlockBoundWitness>\n name: string\n} | undefined, Error | undefined, UsePromiseState | undefined] => {\n return usePromise(async () => {\n if (isDefined(chainMap) && isDefined(chainId) && isHash(head)) {\n const result = await chainMap.get(head)\n const foundResult = assertEx(result, () => `Head not found: ${head}`)\n const resolvedHead = assertEx(\n isBlockBoundWitness(foundResult) ? foundResult : undefined,\n () => `Head is not a boundwitness: ${JSON.stringify(foundResult)}`,\n )\n const config = ConfigZod.parse({})\n config.chain.id = chainId\n return {\n chainMap, chainId, config, head: resolvedHead, name,\n }\n }\n }, [chainMap, chainId, head])\n}\n","import type { BaseContext } from '@xyo-network/xl1-sdk'\nimport { useState } from 'react'\n\nexport const useBaseContext = (): BaseContext => {\n const [context] = useState<BaseContext>({ caches: {}, singletons: {} })\n // TODO: Update to use actual rect context when available\n return context\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\n\nimport { txsFromBlock } from '../helpers/index.ts'\n\nexport const useTxsFromBlock = (block?: HydratedBlockWithHashMeta) => {\n return usePromise(async () => {\n if (block) {\n return await txsFromBlock(block)\n }\n }, [block])\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\n\nexport const txsFromBlock = async (block: HydratedBlockWithHashMeta): Promise<[Payload, Hash][]> => {\n const wrapper = await HydratedBlockWrapper.parse(block)\n const txs = wrapper.transactions\n const txPayloads = txs.map(tx => tx.boundWitness)\n return await PayloadBuilder.hashPairs(txPayloads)\n}\n","import { useRef, useState } from 'react'\n\nexport const useAnchorElement = () => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const anchorRef = useRef<HTMLButtonElement>(null)\n const open = Boolean(anchorEl)\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return {\n anchorEl, anchorRef, open, handleClick, handleClose,\n }\n}\n","import { useEvent } from '@xyo-network/react-event'\n\nexport type BlockHeaderEventNouns = 'transaction-count' | 'block-hash' | 'block-number' | 'block-producer' | 'block-verification' | 'payload-counts'\n\n// Extracting the type so compilers can easily strip it off vs inlining it withing the hook\n// which causes compilation warnings.\ntype HookArgs<TElement extends HTMLElement> = Parameters<typeof useEvent<TElement, BlockHeaderEventNouns>>\n\nexport const useBlockHeadingEvents = <TElement extends HTMLElement>(...args: HookArgs<TElement>) => {\n return useEvent<TElement, BlockHeaderEventNouns>(...args)\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nexport const useBlockProducer = (block?: HydratedBlock) => {\n return useMemo(() => {\n if (block) {\n const producer = block[0].addresses[0]\n return producer\n }\n }, [block])\n}\n","import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport { payloadCountsFromBlock } from '../helpers/index.ts'\n\nexport const usePayloadCountsFromBlock = (block?: HydratedBlockWithHashMeta): [number | undefined, number | undefined, Error | undefined] => {\n return useMemo(() => {\n if (block) {\n return [...payloadCountsFromBlock(block), undefined]\n }\n return [undefined, undefined, undefined]\n }, [block])\n}\n","import type { BlockBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const blockProducer = (block: BlockBoundWitness) => {\n return block.addresses[0]\n}\n","import type { BaseContext } from '@xyo-network/xl1-sdk'\nimport type { ComponentType } from 'react'\nimport React from 'react'\n\nimport { txsFromBlock } from '../../../helpers/index.ts'\nimport type {\n BlockChainRenderComponent,\n BlockComponentProps, BlockComponentWithTxsProps,\n} from '../../../types/index.ts'\n\nexport const buildBlockChainRenderComponent = async (\n context: BaseContext,\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n blockComponentProps: BlockComponentProps,\n) => {\n const { block, ...remainingProps } = blockComponentProps\n const blockTxs = await txsFromBlock(block)\n const txHashes = blockTxs.map(([_, hash]) => hash)\n\n const item: BlockChainRenderComponent = {\n child: (\n <BlockComponent\n block={block}\n transactions={txHashes}\n {...remainingProps}\n />\n ),\n key: block[0].block.toString(),\n block,\n }\n return item\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const payloadCountsFromBlock = ([block, payloads]: HydratedBlockWithHashMeta): [number, number] => {\n const publicPayloads = block.payload_schemas.filter(schema => schema !== BoundWitnessSchema)\n const transactionHashes = payloads.filter(payload => isTransactionBoundWitness(payload)).flatMap(payload => payload.payload_hashes)\n const privateHashes = transactionHashes.filter(hash => !payloads.some(payload => payload._hash === hash))\n return [publicPayloads.length, privateHashes.length]\n}\n","import { Divider, Stack } from '@mui/material'\nimport React from 'react'\n\nexport const LinkedDivider: React.FC = () => {\n return (\n <>\n {/* An element to house the height of the divider...really just here to help with calculating\n the height for animation purposes and allowing for a dynamic divider height */}\n <Stack\n className=\"divider-spacer\"\n justifyContent=\"end\"\n sx={{\n width: '50%', height: 24, justifyContent: 'end',\n }}\n >\n <Divider\n className=\"divider\"\n orientation=\"vertical\"\n flexItem\n sx={{\n borderRightWidth: 2, height: 24, transition: 'height 1s',\n }}\n />\n </Stack>\n </>\n )\n}\n","import { MoreVert } from '@mui/icons-material'\nimport { IconButton, Menu } from '@mui/material'\nimport { BWJsonMenuItem, BWPreviousHashMenuItem } from '@xyo-network/react-boundwitness-plugin'\nimport type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { useAnchorElement } from '../hooks/index.ts'\n\nexport interface BlockExpandedMenuProps {\n block?: HydratedBlock\n}\n\nexport const BlockMenuExpanded: React.FC<BlockExpandedMenuProps> = ({ block }) => {\n const {\n anchorEl, anchorRef, open, handleClick, handleClose,\n } = useAnchorElement()\n\n return (\n <>\n <IconButton ref={anchorRef} size=\"small\" onClick={handleClick}>\n <MoreVert fontSize=\"inherit\" />\n </IconButton>\n <Menu\n open={open}\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: 'left', vertical: 'bottom' }}\n onClose={handleClose}\n >\n <BWPreviousHashMenuItem boundwitness={block?.[0]} dense onDialogClose={handleClose} />\n <BWJsonMenuItem boundwitness={block?.[0]} dense onDialogClose={handleClose} />\n </Menu>\n </>\n )\n}\n","import type { ChipProps } from '@mui/material'\nimport { Chip } from '@mui/material'\nimport {\n EthAddressWrapper, isString, isUndefined, toAddress,\n} from '@xylabs/sdk-js'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport React, { useMemo } from 'react'\n\nimport { ChipSkeleton } from './ChipSkeleton.tsx'\n\nconst formatProducerAddress = (address?: string): string | undefined => {\n if (isUndefined(address) || !isString(address)) return undefined\n const formattedAddress = toAddress(address)\n return EthAddressWrapper.parse(formattedAddress)?.toShortString(4)\n}\n\nexport interface BlockProducerChipProps extends ChipProps {\n block?: HydratedBlock\n}\nexport const BlockProducerChip: React.FC<BlockProducerChipProps> = ({ block, ...props }) => {\n const blockProducer = block?.[0].addresses[0]\n\n return <BlockAddressChip address={blockProducer} toolTipTitle={`Block producer: ${blockProducer}`} {...props} />\n}\n\nexport const BlockAddressChip: React.FC<BlockProducerChipProps & { address?: string; toolTipTitle?: string }> = ({\n address, sx, toolTipTitle, ...props\n}) => {\n const shortedBlockProducer = address === undefined ? null : formatProducerAddress(address)\n\n const avatar = useMemo(() => address === '' ? undefined : <BlockiesAvatar blockiesOptions={{ seed: address }} />, [address])\n\n return (\n <Chip\n avatar={avatar}\n label={shortedBlockProducer ?? <ChipSkeleton width={115} />}\n title={toolTipTitle}\n sx={{\n fontFamily: 'monospace', cursor: 'pointer', ...sx,\n }}\n {...props}\n />\n )\n}\n","import type { SkeletonProps } from '@mui/material'\nimport { Skeleton } from '@mui/material'\nimport React from 'react'\n\nexport const ChipSkeleton: React.FC<SkeletonProps> = (props) => {\n return <Skeleton width={100} {...props} />\n}\n","import {\n Link, TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { BlockHeaderEventNouns } from '../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockNumberTableCellProps extends BlockTableCellProps {\n eventNoun?: BlockHeaderEventNouns\n}\n\nexport const BlockNumberTableCell: React.FC<BlockNumberTableCellProps> = ({\n block, eventNoun = 'block-number', linked, ...props\n}) => {\n const blockNumber = block?.[0].block\n\n return <BlockNumberTableCellInner blockNumber={blockNumber} eventNoun={eventNoun} linked={linked} {...props} />\n}\n\nexport const BlockNumberTableCellInner: React.FC<BlockNumberTableCellProps & { blockNumber?: number; linked?: boolean }> = ({\n blockNumber, eventNoun = 'block-number', linked, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem(eventNoun, blockNumber?.toLocaleString())\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Number: ${blockNumber}`}>\n <Typography component=\"span\" variant=\"body1\">\n {linked ? <Link onClick={handleClick} sx={{ cursor: 'pointer' }}>{blockNumber}</Link> : blockNumber}\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { useEvent } from '@xyo-network/react-event'\nimport type { Ref } from 'react'\n\nimport type { BlockHeaderEventNouns } from '../../../hooks/index.ts'\n\nexport const useLinkedBlockItem = (noun?: BlockHeaderEventNouns, data?: string | object): [Ref<HTMLElement | null>, (event: React.MouseEvent) => void] => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BlockHeaderEventNouns, string, string | object>()\n\n const handleClick = (event: React.MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n if (noun === undefined) {\n console.warn('useLinkedBlockItem: noun is required')\n return\n }\n const selection = globalThis.getSelection()\n const isTextSelected = selection && selection.toString().length > 0\n\n if (!isTextSelected) {\n dispatch(noun, 'click', data, event.nativeEvent)\n }\n }\n\n return [ref, handleClick]\n}\n","import {\n Skeleton, TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { dateFormat, timeAgo } from './helpers/index.ts'\nimport { type BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockEpochTableCellProps extends BlockTableCellProps {}\n\nexport const BlockEpochTableCell: React.FC<BlockEpochTableCellProps> = ({\n block, linked, ...props\n}) => {\n const epoch = block?.[0]?.$epoch\n\n const dateTime = dateFormat.format(epoch)\n const age = isDefined(epoch) ? timeAgo(epoch) : undefined\n\n return (\n <TableCell {...props}>\n <Tooltip title={`Block Epoch: ${dateTime}`}>\n <Typography component=\"span\" variant=\"body1\">\n {age ?? <Skeleton width={115} /> }\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n\nexport const BlockEpochTableCellInner: React.FC<BlockEpochTableCellProps & { epoch?: number }> = ({\n epoch, linked, ...props\n}) => {\n const dateTime = dateFormat.format(epoch)\n const age = isDefined(epoch) ? timeAgo(epoch) : undefined\n\n return (\n <TableCell {...props}>\n <Tooltip title={`Block Epoch: ${dateTime}`}>\n <Typography component=\"span\" variant=\"body1\">\n {age ?? <Skeleton width={115} /> }\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","export const dateFormat = Intl.DateTimeFormat(globalThis.navigator.language ?? 'en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n})\n\nexport const timeAgo = (epoch: number, locale = navigator.language ?? 'en-US') => {\n const now = Date.now()\n const diffInSeconds = Math.floor((now - epoch) / 1000)\n\n const units: { max: number; name: Intl.RelativeTimeFormatUnit; value: number }[] = [\n {\n max: 60, value: 1, name: 'second',\n },\n {\n max: 3600, value: 60, name: 'minute',\n },\n {\n max: 86_400, value: 3600, name: 'hour',\n },\n {\n max: 604_800, value: 86_400, name: 'day',\n },\n {\n max: 2_620_800, value: 604_800, name: 'week',\n },\n {\n max: 31_449_600, value: 2_620_800, name: 'month',\n },\n {\n max: Infinity, value: 31_449_600, name: 'year',\n },\n ]\n\n for (const unit of units) {\n if (Math.abs(diffInSeconds) < unit.max) {\n const value = Math.round(diffInSeconds / unit.value)\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(-value, unit.name)\n }\n }\n}\n","import {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport { isHash } from '@xylabs/sdk-js'\nimport { usePayloadRootHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport { FeatureNotAvailable } from '../../../FeatureNotAvailable.tsx'\nimport { ChipSkeleton } from '../../ChipSkeleton.tsx'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockHashTableCellProps extends BlockTableCellProps {\n notAvailableDialog?: boolean\n}\n\nexport const BlockHashTableCell: React.FC<BlockHashTableCellProps> = ({\n block, notAvailableDialog, linked, ...props\n}) => {\n const hash = usePayloadRootHash(block?.[0])\n\n const [ref, handleClick] = useLinkedBlockItem('block-hash', hash)\n const [notAvailable, setNotAvailable] = useState(false)\n\n const shortenedHash = isHash(hash) ? `${hash.slice(0, 4)}...${hash.slice(-5, -1)}` : undefined\n\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Hash: ${hash}`}>\n {linked\n ? (\n <Link\n sx={{ cursor: 'pointer' }}\n onClick={linked ? handleClick : () => setNotAvailable(true)}\n >\n {shortenedHash ?? <ChipSkeleton />}\n </Link>\n )\n : <span>{shortenedHash ?? <ChipSkeleton />}</span>}\n </Tooltip>\n {(notAvailableDialog && notAvailable)\n ? <FeatureNotAvailable featureName=\"Block Details\" open={notAvailable} onClick={() => setNotAvailable(false)} />\n : null}\n </TableCell>\n )\n}\n","import {\n Button,\n Dialog, DialogActions, DialogContent, type DialogProps, DialogTitle,\n} from '@mui/material'\nimport type { FC } from 'react'\nimport React from 'react'\n\nexport const FeatureNotAvailable: FC<DialogProps & { featureName?: string }> = ({ featureName = 'Feature', ...props }) => (\n <Dialog {...props}>\n <DialogTitle>\n {`${featureName} Not Available`}\n </DialogTitle>\n <DialogContent>This feature is not currently available. Either you do not have access to it or it is currently undergoing maintenance.</DialogContent>\n <DialogActions>\n <Button onClick={e => props.onClose?.(e, 'backdropClick')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n)\n","import { DataObject } from '@mui/icons-material'\nimport {\n Button,\n Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TableCell,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { ellipsize, isHash } from '@xylabs/sdk-js'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport { usePayloadRootHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockJsonViewTableCellProps extends BlockTableCellProps {}\n\nexport const BlockJsonViewTableCell: React.FC<BlockJsonViewTableCellProps> = ({ block, ...props }) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n\n const hash = usePayloadRootHash(block?.[0])\n const title = isHash(hash) ? `JSON for ${ellipsize(hash, 5)}` : 'JSON'\n\n return (\n <TableCell {...props}>\n <FlexRow onClick={e => e.stopPropagation()} sx={{ width: '100%' }}>\n <IconButton onClick={() => setOpen(true)}>\n <DataObject />\n </IconButton>\n <Dialog open={open} onClose={onClose}>\n <DialogTitle>{title}</DialogTitle>\n <DialogContent>\n <JsonViewerEx value={block} />\n </DialogContent>\n <DialogActions sx={{\n display: 'flex', flexDirection: 'row', justifyContent: 'end',\n }}\n >\n <Button variant=\"contained\" onClick={onClose}>Close</Button>\n </DialogActions>\n </Dialog>\n </FlexRow>\n </TableCell>\n )\n}\n","import { Error } from '@mui/icons-material'\nimport {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport type { Hash } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { usePayloadCountsFromBlock } from '../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockPayloadCountsTableCellProps extends BlockTableCellProps {}\n\nexport interface BlockPayloadCountsEventData {\n block: Hash\n privatePayloads: number\n publicPayloads: number\n}\n\nexport const BlockPayloadCountsTableCell: React.FC<BlockPayloadCountsTableCellProps> = ({\n block, linked, ...props\n}) => {\n const [publicPayloads, privatePayloads, error] = usePayloadCountsFromBlock(block)\n const data: BlockPayloadCountsEventData | undefined = (block && privatePayloads !== undefined && publicPayloads !== undefined)\n ? {\n publicPayloads,\n privatePayloads,\n block: block[0]._hash,\n }\n : undefined\n const payloadCount = (publicPayloads ?? 0) + (privatePayloads ?? 0)\n const [ref, handleClick] = useLinkedBlockItem('payload-counts', data)\n\n return (\n <TableCell ref={ref} {...props}>\n <span>\n {error\n ? (\n <Tooltip title={error.message}>\n <Error color=\"error\" />\n </Tooltip>\n )\n : null}\n {linked\n ? (\n <Tooltip title={`Public Payloads: ${publicPayloads ?? '--'} Private Payloads: ${privatePayloads ?? '--'}`}>\n <Link\n onClick={handleClick}\n sx={{ cursor: 'pointer' }}\n >\n {payloadCount}\n </Link>\n </Tooltip>\n )\n : (\n <Tooltip title={`Public Payloads: ${publicPayloads ?? '--'} Private Payloads: ${privatePayloads ?? '--'}`}>\n <span>\n {payloadCount}\n </span>\n </Tooltip>\n )}\n </span>\n </TableCell>\n )\n}\n","import { TableCell, Tooltip } from '@mui/material'\nimport type { MouseEvent } from 'react'\nimport React, { useState } from 'react'\n\nimport { FeatureNotAvailable } from '../../../FeatureNotAvailable.tsx'\nimport { useBlockProducer } from '../../hooks/index.ts'\nimport type { BlockProducerChipProps } from '../../ProducerChip.tsx'\nimport { BlockAddressChip } from '../../ProducerChip.tsx'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockProducerTableCell extends BlockTableCellProps {\n notAvailableDialog?: boolean\n producerChipProps?: BlockProducerChipProps\n}\n\nexport const BlockProducerTableCell: React.FC<BlockProducerTableCell> = ({\n block, linked, notAvailableDialog, producerChipProps, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem('block-producer', JSON.stringify(block))\n const producer = useBlockProducer(block)\n\n return (\n <BlockProducerTableCellInner\n address={producer}\n handleClick={handleClick}\n linked={linked}\n notAvailableDialog={notAvailableDialog}\n producerChipProps={producerChipProps}\n {...props}\n ref={ref}\n />\n )\n}\n\nexport interface BlockProducerTableCellInner extends BlockTableCellProps {\n address?: string\n handleClick?: (event: MouseEvent) => void\n notAvailableDialog?: boolean\n producerChipProps?: BlockProducerChipProps\n}\n\nexport const BlockProducerTableCellInner: React.FC<BlockProducerTableCell & BlockProducerTableCellInner> = ({\n address, handleClick, linked, notAvailableDialog, producerChipProps, ...props\n}) => {\n const [notAvailable, setNotAvailable] = useState(false)\n return (\n <TableCell {...props}>\n <Tooltip title={`Block Producer: ${address}`}>\n <BlockAddressChip\n sx={{ cursor: 'pointer' }}\n onClick={linked ? handleClick : () => setNotAvailable(true)}\n address={address}\n toolTipTitle={`Block Producer: ${address}`}\n {...producerChipProps}\n />\n </Tooltip>\n {(notAvailableDialog && notAvailable)\n ? <FeatureNotAvailable featureName=\"Producer Details\" open={notAvailable} onClick={() => setNotAvailable(false)} />\n : null}\n </TableCell>\n )\n}\n","import { Error } from '@mui/icons-material'\nimport {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport type { Hash } from '@xylabs/sdk-js'\nimport React, { useMemo } from 'react'\n\nimport { useTxsFromBlock } from '../../../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockTransactionCountTableCellProps extends BlockTableCellProps {}\n\nexport interface BlockTransactionCountEventData {\n block: Hash\n transactions: number\n}\n\nexport const BlockTransactionCountTableCell: React.FC<BlockTransactionCountTableCellProps> = ({\n block, linked, ...props\n}) => {\n const [transactions, error] = useTxsFromBlock(block)\n const txHashes = useMemo(() => transactions?.map(([,hash]) => hash), [transactions])\n\n const data: BlockTransactionCountEventData | undefined = (block && transactions !== undefined)\n ? {\n transactions: transactions.length,\n block: block[0]._hash,\n }\n : undefined\n\n const [ref, handleClick] = useLinkedBlockItem('transaction-count', data)\n\n return (\n <TableCell ref={ref} {...props}>\n <span>\n {error\n ? (\n <Tooltip title={error.message}>\n <Error color=\"error\" />\n </Tooltip>\n )\n : null}\n {linked\n ? (\n <Link onClick={handleClick} sx={{ cursor: 'pointer' }}>\n {txHashes?.length}\n </Link>\n )\n : (\n txHashes?.length\n )}\n </span>\n </TableCell>\n )\n}\n","import { CheckCircleOutlineRounded } from '@mui/icons-material'\nimport { TableCell } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { BWVerification } from '@xyo-network/react-boundwitness-plugin'\nimport React from 'react'\n\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockVerificationTableCellProps extends BlockTableCellProps {\n deepValidation?: boolean\n}\n\nexport const BlockVerificationTableCell: React.FC<BlockVerificationTableCellProps> = ({\n block, linked, deepValidation, ...props\n}) => {\n return (\n <TableCell {...props}>\n <FlexRow onClick={e => e.stopPropagation()} sx={{ width: '100%' }}>\n {deepValidation\n ? <BWVerification iconColors boundwitness={block?.[0]} />\n : <CheckCircleOutlineRounded color=\"success\" />}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableBody } from '@mui/material'\nimport type { TableExProps } from '@xyo-network/react-table'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\n\nimport { BlockchainTableHead } from './head/index.ts'\n\nexport const BlockchainTableEx = ({\n ref, children, ...props\n}: TableExProps) => {\n return (\n <TableEx ref={ref} {...props}>\n <BlockchainTableHead />\n <TableBody>\n {children}\n </TableBody>\n </TableEx>\n )\n}\n\nBlockchainTableEx.displayName = 'BlockchainTableEx'\n","import { InfoOutline } from '@mui/icons-material'\nimport type { TableCellProps } from '@mui/material'\nimport {\n TableCell, TableHead, TableRow,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nconst ToolTipTableCell: React.FC<TableCellProps> = ({\n children, align, title, ...props\n}) => {\n return (\n <TableCell title={title} {...props}>\n <FlexRow justifyContent={align}>\n <Typography variant=\"body2\">{children}</Typography>\n &nbsp;\n <Tooltip title={title}>\n <InfoOutline fontSize=\"small\" />\n </Tooltip>\n </FlexRow>\n </TableCell>\n )\n}\n\nexport const BlockchainTableHead: React.FC = () => {\n return (\n <TableHead>\n <TableRow>\n <ToolTipTableCell align=\"left\" title=\"The block number that is included in the block\">Block</ToolTipTableCell>\n <ToolTipTableCell title=\"The hash of the block\" sx={{ width: '20%' }}>Hash</ToolTipTableCell>\n <ToolTipTableCell title=\"The epoch of the block\" sx={{ width: '20%' }}>Epoch</ToolTipTableCell>\n <ToolTipTableCell\n align=\"left\"\n title=\"The address of the block producer that produced the block\"\n sx={{ width: '20%' }}\n >\n Block Producer\n </ToolTipTableCell>\n <ToolTipTableCell align=\"left\" title=\"Count of transactions that are included in the block\">Transactions</ToolTipTableCell>\n <ToolTipTableCell align=\"left\" title=\"Count of public and private payload counts for the block\">Payloads</ToolTipTableCell>\n <ToolTipTableCell align=\"center\" title=\"The result of the local validation check for the block\">Valid</ToolTipTableCell>\n <ToolTipTableCell align=\"center\" title=\"Link to display the raw JSON of the block\">JSON</ToolTipTableCell>\n </TableRow>\n </TableHead>\n )\n}\n","import type { TableRowProps } from '@mui/material'\nimport { usePayloadRootHash } from '@xyo-network/react-shared'\nimport type { Ref } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { BlockComponentProps } from '../../../../types/index.ts'\nimport { StyledLinkableTableRow } from '../../../table/index.ts'\nimport { useLinkedBlockItem } from '../cell/hooks/index.ts'\nimport {\n BlockEpochTableCell,\n BlockHashTableCell, BlockJsonViewTableCell, BlockNumberTableCell, BlockPayloadCountsTableCell,\n BlockProducerTableCell,\n BlockTransactionCountTableCell, BlockVerificationTableCell,\n} from '../cell/index.ts'\n\nexport interface BlockChainTableRowProps extends BlockComponentProps, TableRowProps {\n deepValidation?: boolean\n linked?: boolean\n}\n\nexport const BlockChainTableRow: React.FC<BlockChainTableRowProps> = ({\n block, deepValidation, defaultExpanded, linked, ...props\n}) => {\n const linkedTableCellProps = useMemo(() => ({ block, linked }), [block, linked])\n const defaultTableCellProps = useMemo(() => ({ block }), [block])\n const hash = usePayloadRootHash(block?.[0])\n const [ref, handleClick] = useLinkedBlockItem('block-hash', hash)\n\n return (\n <StyledLinkableTableRow\n onClick={linked ? handleClick : undefined}\n ref={ref as Ref<HTMLTableRowElement> | undefined}\n linked={linked}\n {...props}\n >\n <BlockNumberTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockHashTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockEpochTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockProducerTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockTransactionCountTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockPayloadCountsTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockVerificationTableCell deepValidation={deepValidation} {...defaultTableCellProps} />\n <BlockJsonViewTableCell {...defaultTableCellProps} />\n </StyledLinkableTableRow>\n )\n}\n","import type { StyledComponent } from '@emotion/styled'\nimport type { TableRowProps, Theme } from '@mui/material'\nimport { styled, TableRow } from '@mui/material'\nimport { alphaCss } from '@xylabs/react-theme'\n\nexport const StyledLinkableTableRow: StyledComponent<TableRowProps & { linked?: boolean; theme?: Theme }> = styled(TableRow, { shouldForwardProp: prop => prop !== 'linked' })<\n TableRowProps & { linked?: boolean }\n>(({ theme, linked }) => ({\n 'cursor': linked ? 'pointer' : 'default',\n 'overflowY': 'scroll',\n '&:hover': { backgroundColor: alphaCss(theme.vars.palette.secondary.light, 0.15) },\n}\n))\n","import type { TableCellProps } from '@mui/material'\nimport { TableCell, Tooltip } from '@mui/material'\nimport React from 'react'\n\nimport { BlockAddressChip } from '../../../block/index.ts'\nimport { useLinkedBalanceHistoryItem } from '../hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface AddressTableCellProps extends TableCellProps {\n address?: string\n eventNoun?: BalanceHistoryEventNouns\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const AddressTableCell: React.FC<AddressTableCellProps> = ({\n address, eventNoun, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n return (\n <TableCell ref={ref} sx={{ cursor: linked ? 'pointer' : 'default', ...sx }} {...props}>\n <Tooltip title={toolTipTitle}>\n <BlockAddressChip address={address} onClick={linked ? e => handleClick(e, eventNoun, address) : undefined} />\n </Tooltip>\n </TableCell>\n )\n}\n","import { useEvent } from '@xyo-network/react-event'\nimport type { Ref } from 'react'\nimport type React from 'react'\n\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport const useLinkedBalanceHistoryItem = (): [\n Ref<HTMLElement | null>,\n (event: React.MouseEvent, noun?: BalanceHistoryEventNouns, data?: string | number) => void,\n] => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BalanceHistoryEventNouns, string, string | number>()\n\n const handleClick = (event: React.MouseEvent, noun?: BalanceHistoryEventNouns, data?: string | number) => {\n event.preventDefault()\n event.stopPropagation()\n if (noun === undefined) {\n console.warn('useLinkedBalanceHistoryItem: noun is required')\n return\n }\n const selection = globalThis.getSelection()\n const isTextSelected = selection && selection.toString().length > 0\n\n if (!isTextSelected) {\n dispatch(noun, 'click', data, event.nativeEvent)\n }\n }\n\n return [ref, handleClick]\n}\n","import {\n Link,\n TableCell, Tooltip,\n Typography,\n} from '@mui/material'\nimport type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { useLinkedBalanceHistoryItem } from '../hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface BalanceHistoryBlockNumberTableCellProps {\n block?: HydratedBlock\n eventNoun?: BalanceHistoryEventNouns\n linked?: boolean\n}\n\nexport const BalanceHistoryBlockNumberTableCell: React.FC<BalanceHistoryBlockNumberTableCellProps> = ({\n block, eventNoun = 'block-number', linked, ...props\n}) => {\n const blockNumber = block?.[0].block\n\n return <BalanceHistoryBlockNumberTableCellInner blockNumber={blockNumber} eventNoun={eventNoun} linked={linked} {...props} />\n}\n\nexport const BalanceHistoryBlockNumberTableCellInner: React.FC<BalanceHistoryBlockNumberTableCellProps & { blockNumber?: number; linked?: boolean }> = ({\n blockNumber, eventNoun = 'block-number', linked, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Number: ${blockNumber}`}>\n <Typography component=\"span\" variant=\"body1\">\n {linked ? <Link onClick={e => handleClick(e, eventNoun, blockNumber?.toString() ?? '')} sx={{ cursor: 'pointer' }}>{blockNumber}</Link> : blockNumber}\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import type { TableCellProps } from '@mui/material'\nimport {\n Link, TableCell, Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n ellipsize, type Hash, isDefined,\n} from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { useLinkedBalanceHistoryItem } from '../hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface HashTableCellProps extends TableCellProps {\n eventData?: string\n eventNoun?: BalanceHistoryEventNouns\n hash?: Hash\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const HashTableCell: React.FC<HashTableCellProps> = ({\n eventData, eventNoun = 'tx-hash', hash, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n const shortenedHash = isDefined(hash) ? ellipsize(hash as string, 6) : 'N/A'\n return (\n <TableCell ref={ref} {...props}>\n {hash\n ? (\n <Tooltip title={toolTipTitle}>\n <Typography component=\"span\" variant=\"body1\">\n {linked\n ? (\n <Link onClick={e => handleClick(e, eventNoun, eventData)} sx={{ cursor: 'pointer' }}>\n {shortenedHash}\n </Link>\n )\n : shortenedHash}\n </Typography>\n </Tooltip>\n )\n : 'N/A'}\n </TableCell>\n )\n}\n","import {\n Link,\n TableCell, type TableCellProps, Tooltip,\n} from '@mui/material'\nimport { isDefined, toHex } from '@xylabs/sdk-js'\nimport type { BalanceTransactionType } from '@xyo-network/react-chain-provider'\nimport { XL1Amount } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { useLinkedBalanceHistoryItem } from './hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from './types/index.ts'\n\nexport interface RawAmountTableCellProps extends TableCellProps {\n amount?: bigint\n eventNoun?: BalanceHistoryEventNouns\n linked?: boolean\n type?: BalanceTransactionType\n}\n\nexport const RawAmountTableCell: React.FC<RawAmountTableCellProps> = ({\n amount, eventNoun = 'amount', linked, sx, type, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n\n const formatAmount = (amount?: bigint) => {\n if (!isDefined(amount)) {\n return 'N/A'\n }\n const xl1Amount = new XL1Amount(amount)\n return xl1Amount.toString(undefined, {\n places: 18, maxDecimal: 12, maxCharacters: 12, minDecimals: 1, locale: navigator.language,\n })\n }\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Raw Amount: ${amount}`}>\n {linked\n ? (\n <Link onClick={e => handleClick(e, eventNoun, isDefined(amount) ? toHex(amount) : '')} sx={{ cursor: 'pointer' }}>\n {type === 'send' ? '-' : ''}\n {formatAmount(amount)}\n </Link>\n )\n : (\n <span>\n {type === 'send' ? '-' : ''}\n {formatAmount(amount)}\n </span>\n )}\n </Tooltip>\n </TableCell>\n )\n}\n","import type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport type { ExtendEventNoun } from '@xyo-network/react-event'\n\nexport type BalanceHistoryEventNouns = ExtendEventNoun<'from-address' | 'to-address' | 'amount' | 'block-number' | 'tx-hash' | 'transfer-hash' | 'tx-hash|transfer-hash' | 'block-hash|transfer-hash'>\n\nexport type TableHeadingLabels = 'Tx Hash' | 'BlockNumber' | 'Timestamp' | 'From' | 'To' | 'Amount' | 'Debug' | 'TransferHash'\nexport type TableHeadings = { [key in keyof AccountBalanceHistoryItemFormatted]: TableHeadingLabels }\n\nexport const TableHeadingLabels: TableHeadingLabels[] = [\n 'Tx Hash',\n 'BlockNumber',\n 'Timestamp',\n 'From',\n 'To',\n 'Amount',\n 'TransferHash',\n 'Debug',\n] as const\n","import type { Address } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport { useAccountBalanceHistory } from '@xyo-network/react-chain-provider'\nimport type { XL1BlockRange, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\nexport const usePagedAccountBalanceHistory = (address?: Address, viewer?: XyoViewer, maxPage = 1) => {\n const [updatedBlockRange, setUpdatedBlockRange] = useState<XL1BlockRange>()\n const [pagedHistory, setPagedHistory] = useState<AccountBalanceHistoryItemFormatted[]>()\n const [results, error, loading] = useAccountBalanceHistory(address, viewer, maxPage, updatedBlockRange)\n\n const { history, truncated } = results || {}\n const [previousHistory, setPreviousHistory] = useState(history)\n\n // Reset paged history when address changes\n if (isDefined(history) && history !== previousHistory) {\n setPagedHistory([...pagedHistory ?? [], ...history])\n setPreviousHistory(history)\n }\n\n const lastBlock = isDefined(history) ? history.at(-1)?.blockNumber : undefined\n const historyComplete = (isDefined(history) && history.length === 0) || lastBlock === 0\n\n const updateRange = useCallback(() => {\n if (isDefined(lastBlock) && lastBlock > 0 && truncated) {\n const newEndBlock = lastBlock - 1\n setUpdatedBlockRange([0, newEndBlock] as XL1BlockRange)\n }\n }, [lastBlock, truncated])\n\n return {\n pagedHistory,\n historyComplete,\n updateRange,\n error,\n loading,\n }\n}\n","import {\n Autorenew,\n Pause,\n} from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Grow,\n Icon, IconButton, Tooltip,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React, { memo } from 'react'\n\nimport type { PollingState } from '../hooks/index.ts'\nimport { ChainAnalyzerStatsDialogFromContext } from '../stats/index.ts'\nimport { StyledPulseSvgIcon } from './PulseSvgIcon.tsx'\n\nexport interface PollingControlsFlexboxProps extends FlexBoxProps {\n blocksBehind?: number\n pollingState?: PollingState\n setPollingState?: (newState: PollingState) => void\n}\n\nexport const PollingControlsFlexbox: React.FC<PollingControlsFlexboxProps> = ({\n blocksBehind, pollingState, setPollingState,\n}) => {\n const paused = pollingState === 'paused'\n const running = pollingState === 'running'\n\n return (\n <FlexRow justifyContent=\"space-between\" width=\"100%\">\n <FlexRow gap={2}>\n {running\n ? (\n <IconButton onClick={() => setPollingState?.('paused')} title=\"Pause Block Stream\">\n <Pause />\n </IconButton>\n )\n : null}\n {paused\n ? (\n <IconButton onClick={() => setPollingState?.('running')} title=\"Re-Sync Block Stream\">\n <Autorenew />\n </IconButton>\n )\n : null}\n <ChainAnalyzerStatsDialogFromContext />\n </FlexRow>\n <FlexRow gap={2}>\n <Grow in={(blocksBehind ?? 0) > 0}>\n <Tooltip title=\"Click to Re-Sync\">\n <Alert\n sx={{\n py: 0, px: 1, cursor: 'pointer',\n }}\n severity=\"warning\"\n onClick={() => setPollingState?.('running')}\n >\n <AlertTitle sx={{ mb: 0 }}>\n Behind:\n {' '}\n {blocksBehind}\n </AlertTitle>\n </Alert>\n </Tooltip>\n </Grow>\n <Icon>\n <StyledPulseSvgIcon className={running ? '' : 'paused'} />\n </Icon>\n </FlexRow>\n </FlexRow>\n )\n}\n\nexport const MemoizedPollingControlsFlexbox = memo(PollingControlsFlexbox)\n","import { QueryStats } from '@mui/icons-material'\nimport type { DialogProps } from '@mui/material'\nimport {\n Dialog, DialogContent,\n DialogTitle, IconButton,\n} from '@mui/material'\nimport React, { useState } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport { BlockProducerStatsFlexbox } from './producer/index.ts'\n\nexport interface ChainAnalyzerStatsDialogProps extends DialogProps {}\n\nexport const ChainAnalyzerStatsDialog: React.FC<ChainAnalyzerStatsDialogProps> = (props) => {\n const { analyzers, statsUpdated } = useChainAnalyzersContext()\n\n return (\n <Dialog {...props}>\n <DialogTitle>Chain Analysis</DialogTitle>\n <DialogContent>\n {statsUpdated > 0\n ? Object.entries(analyzers).map(([id, analyzer]) => (\n <div key={id}>\n {id === 'producers'\n ? (\n <BlockProducerStatsFlexbox payload={analyzer.result()} />\n )\n : null}\n </div>\n ))\n : null}\n </DialogContent>\n </Dialog>\n )\n}\n\nexport const ChainAnalyzerStatsDialogFromContext: React.FC = (props) => {\n const [open, setOpen] = useState(false)\n const handleClose = () => setOpen(false)\n\n return (\n <>\n <IconButton onClick={() => setOpen(true)}>\n <QueryStats />\n </IconButton>\n <ChainAnalyzerStatsDialog onClose={handleClose} open={open} {...props} />\n </>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isChainSummaryProducers } from '@xyo-network/chain-analyze'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport React, { useMemo } from 'react'\n\nimport { ChainProducerStatsTable } from './Table.tsx'\n\nexport interface BlockProducerStatsFlexboxProps {\n payload?: Payload\n}\n\nexport const BlockProducerStatsFlexbox: React.FC<BlockProducerStatsFlexboxProps> = ({ payload, ...props }) => {\n const [producer, producerError] = useMemo(() => {\n if (payload) {\n return isChainSummaryProducers(payload) ? [payload] : [undefined, new Error('Payload is not a Chain Producer')]\n } else {\n return []\n }\n }, [payload])\n\n const producersArray = useMemo(() => Object.values(producer?.producers ?? {}), [producer])\n\n return (\n <FlexCol alignItems=\"start\" gap={1} {...props}>\n <ErrorRender error={producerError} scope=\"BlockProducerStatsFlexbox\" />\n <Typography fontSize=\"1rem\">Block Producers</Typography>\n <ChainProducerStatsTable producers={producersArray} />\n </FlexCol>\n )\n}\n","import type { TableProps } from '@mui/material'\nimport {\n Table, TableBody, TableCell, TableHead,\n TableRow,\n useTheme,\n} from '@mui/material'\nimport type { AnalyzedProducer } from '@xyo-network/chain-analyze'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport React from 'react'\n\nexport interface ChainProducerStatsTableProps extends TableProps {\n producers?: AnalyzedProducer[]\n}\n\nexport const ChainProducerStatsTable: React.FC<ChainProducerStatsTableProps> = ({ producers, ...props }) => {\n const theme = useTheme()\n return (\n <Table {...props}>\n <TableHead>\n <TableRow>\n <TableCell>Address</TableCell>\n <TableCell>Blocks Produced</TableCell>\n <TableCell>Rewards Earned Produced</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {producers?.map(producer => (\n <TableRow key={producer.address}>\n <TableCell>\n <BlockiesAvatar blockiesOptions={{ seed: producer.address }} sx={{ height: theme.spacing(2.75), width: theme.spacing(2.75) }} />\n </TableCell>\n <TableCell>{producer.blocksProduced.toString()}</TableCell>\n <TableCell>{producer.rewardsEarned.toString()}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )\n}\n","import type { StyledComponent } from '@emotion/styled'\nimport type { SvgIconProps, Theme } from '@mui/material'\nimport {\n createSvgIcon, keyframes, styled,\n} from '@mui/material'\nimport React from 'react'\n\n// Adapted from - https://codepen.io/Taver/pen/PWyEqp\nexport const PulseSvgIcon = createSvgIcon(\n <svg viewBox=\"0 0 80 80\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(34,34)\">\n <circle className=\"core\" cx=\"0\" cy=\"0\" r=\"6\"></circle>\n <circle className=\"radar\" cx=\"0\" cy=\"0\" r=\"6\"></circle>\n </g>\n </svg>,\n 'PulseSvgIcon',\n)\n\nconst pulse1 = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0);\n }\n 30% {\n opacity: 1;\n transform: scale(1.5);\n }\n 60% {\n opacity: 1;\n transform: scale(2);\n }\n 100% {\n opacity: 0;\n transform: scale(2);\n }\n`\n\nconst pulse2 = keyframes`\n 0% {\n transform: scale(1, 1);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n transform: scale(6, 6);\n opacity: 0;\n }\n`\n\nexport const StyledPulseSvgIcon: StyledComponent<SvgIconProps & { theme?: Theme }> = styled(PulseSvgIcon)(({ theme }) => {\n return {\n '& .core': {\n animation: `${pulse1} 1.25s ease-in-out infinite`,\n fill: theme.vars.palette.success.main,\n },\n '&.paused .core': {\n animation: 'none',\n fill: theme.vars.palette.divider,\n transform: 'scale(2)',\n },\n '& .radar': {\n animation: `${pulse2} 1.25s ease-in-out infinite`,\n fill: `color-mix(in srgb, ${theme.vars.palette.success.main}, transparent 50%)`,\n },\n '&.paused .radar': {\n animation: 'none',\n fill: theme.vars.palette.divider,\n transform: 'scale(6)',\n },\n }\n})\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface TransactionsDialogProps extends DialogProps {}\n\nexport const TransactionsDialog: React.FC<TransactionsDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog onClose={onClose} {...props}>\n <DialogContent>\n Transactions Dialog\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={e => onClose?.(e, 'escapeKeyDown')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport { useEffect, useRef } from 'react'\n\nexport type PollingState = 'paused' | 'running'\n\nexport const useOnBlock = (\n initialHeadNumber?: number,\n onAddBlock?: (block: HydratedBlock) => Promise<void>,\n liveHead?: HydratedBlock,\n pollingState?: PollingState,\n) => {\n /**\n * blocksWhilePaused is a ref because we don't want to re-render the component when it changes.\n * But, since we get new blockComponents regardless, the hook rerenders anyway so consumers can get\n * the latest blocksWhilePaused value without having to rely on a state update.\n */\n const blocksWhilePausedRef = useRef<HydratedBlock[]>([])\n // Because the useEffect has liveHead AND pollingState, every time the polling state changes, the hook will\n // run a second time with the live head from the previous run. This is why we need to keep track of the last\n // live head so we can compare it to the current live head and prevent the hook from adding the same block twice\n const lastLiveHeadRef = useRef<HydratedBlock | undefined>(liveHead)\n\n useEffect(() => {\n const lastLiveHeadBlock = lastLiveHeadRef.current?.[0]\n const blocksWhilePausedBlock = lastLiveHeadRef.current?.[0]\n const liveHeadBlock = liveHead?.[0]\n\n // use lastLiveHead to prevent the hook from adding the same block multiple times\n if (lastLiveHeadBlock?.block === liveHeadBlock?.block) return\n\n if (liveHead && onAddBlock) {\n // update lastLiveHead\n lastLiveHeadRef.current = liveHead\n\n // if the polling state is paused and the block is new, add it to the blocksWhilePaused array\n const isNewBlock = initialHeadNumber !== liveHeadBlock?.block && liveHeadBlock?.block !== blocksWhilePausedBlock?.block\n if (pollingState === 'paused' && isNewBlock) {\n blocksWhilePausedRef.current.push(liveHead)\n } else if (pollingState === 'running') {\n // if the polling state is running, add the blocksWhilePaused\n if (blocksWhilePausedRef.current.length > 0) {\n for (const block of blocksWhilePausedRef.current) {\n void onAddBlock(block)\n }\n // clear the blocksWhilePaused array\n blocksWhilePausedRef.current = []\n }\n // add the liveHead block\n void onAddBlock(liveHead)\n }\n }\n }, [initialHeadNumber, liveHead, onAddBlock, pollingState])\n\n return blocksWhilePausedRef\n}\n","import type { TablePaginationActionsProps } from '@xyo-network/react-payload-table'\nimport { TablePaginationActions } from '@xyo-network/react-payload-table'\nimport React from 'react'\n\nexport interface BlockChainPaginationProps extends TablePaginationActionsProps {}\n\nexport const BlockChainPagination: React.FC<BlockChainPaginationProps> = ({\n count = 0, onPageChange, page, rowsPerPage = 10,\n}) => {\n return <TablePaginationActions count={count} onPageChange={onPageChange} page={page} rowsPerPage={rowsPerPage} />\n}\n","import type { MouseEvent } from 'react'\nimport { useMemo, useState } from 'react'\n\nimport type { BlockChainRenderComponent } from '../../../../types/index.ts'\n\nexport const useChainPagination = (pageSize: number, blockComponents?: BlockChainRenderComponent[]) => {\n const [page, setPage] = useState(0)\n\n const paginatedBlockComponents = useMemo(() => {\n const startIndex = page * pageSize\n const endIndex = startIndex + pageSize\n return blockComponents?.slice(startIndex, endIndex)\n }, [blockComponents, page, pageSize])\n\n const onPageChange = (_event: MouseEvent<HTMLButtonElement>, newPage: number) => {\n setPage(newPage)\n }\n\n return {\n onPageChange, page, paginatedBlockComponents,\n }\n}\n","import type { StyledComponent } from '@emotion/styled'\nimport type { Theme } from '@mui/material'\nimport { styled } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\n\n// Target the first visible child (first actual child is a hidden div) and hide the after pseudo element that visually links blocks together\nexport const BlockListWrapperFlexBox: StyledComponent<FlexBoxProps & { theme?: Theme }> = styled(FlexCol, { name: 'BlockListWrapperFlexbox' })(() => ({\n '& > div:nth-of-type(2) .block-heading-flexbox .divider-spacer': {\n // hide the spacer for the first element\n visibility: 'hidden',\n },\n '& > div:nth-of-type(2) .block-heading-flexbox .divider': {\n // keep the first element divider at 0 height so we can animate it to the correct height\n // when the next block comes in\n height: 0,\n },\n}))\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport type { ComponentType } from 'react'\nimport React, { useState } from 'react'\n\nimport type { PayloadBuilderComponentProps } from './BuilderComponentProps.ts'\n\nexport interface PayloadBuilderFlexboxProps extends PayloadBuilderComponentProps, FlexBoxProps {\n BuilderComponent: ComponentType<PayloadBuilderComponentProps>\n}\n\nexport const PayloadBuilderFlexbox: React.FC<PayloadBuilderFlexboxProps> = ({\n BuilderComponent, onBuild, ...props\n}) => {\n const [payload, setPayload] = useState<Payload>()\n\n const onBuildLocal = (payload: Payload) => {\n onBuild?.(payload)\n setPayload(payload)\n }\n\n return (\n <FlexCol gap={2} {...props}>\n <BuilderComponent onBuild={onBuildLocal} />\n {payload ? <JsonViewerEx value={payload} /> : null}\n </FlexCol>\n )\n}\n","import { Button, FormControl } from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { Address } from '@xylabs/sdk-js'\nimport { createProducerChainStakeIntent } from '@xyo-network/chain-protocol'\nimport type { XL1BlockNumber } from '@xyo-network/xl1-sdk'\nimport type { MouseEventHandler } from 'react'\nimport React, { useState } from 'react'\n\nimport { BlockNumberTextField, XyoAddressTextField } from '../../fields/index.ts'\nimport type { PayloadBuilderComponentProps } from '../BuilderComponentProps.ts'\n\nexport interface ProducerIntentBuilderFormProps extends PayloadBuilderComponentProps {}\n\nexport const ProducerIntentBuilderForm: React.FC<ProducerIntentBuilderFormProps> = ({ onBuild }) => {\n const [delegate, setDelegate] = useState<Address>()\n const [exp, setExp] = useState<XL1BlockNumber>()\n const [nbf, setNbf] = useState<XL1BlockNumber>()\n const [blockRangeError, setBlockRangeError] = useState<Error>()\n\n const [intentPayload] = usePromise(async () => {\n // confirm we have values for all fields\n if (exp !== undefined && nbf !== undefined) {\n // validate that expires is greater than not before\n if (exp <= nbf) {\n setBlockRangeError(new Error('Expires must be greater than Not Before'))\n } else {\n setBlockRangeError(undefined)\n if (delegate !== undefined) {\n // create the payload\n const payload = await createProducerChainStakeIntent(delegate, exp, nbf)\n return payload\n }\n }\n }\n }, [delegate, exp, nbf])\n\n const onBuildLocal: MouseEventHandler<HTMLButtonElement> = () => {\n if (onBuild && intentPayload) onBuild?.(intentPayload)\n }\n\n return (\n <>\n <FormControl fullWidth>\n <XyoAddressTextField label=\"Delegate\" name=\"delegate\" onAddressChanged={setDelegate} required size=\"small\" />\n </FormControl>\n <FormControl fullWidth>\n <BlockNumberTextField\n errorMessage={blockRangeError?.message}\n label=\"Expires\"\n name=\"exp\"\n onBlockNumberChanged={setExp}\n required\n size=\"small\"\n />\n </FormControl>\n <FormControl fullWidth>\n <BlockNumberTextField\n errorMessage={blockRangeError?.message}\n label=\"Not Before\"\n name=\"nbf\"\n onBlockNumberChanged={setNbf}\n required\n size=\"small\"\n />\n </FormControl>\n <Button disabled={!intentPayload} variant=\"contained\" onClick={onBuildLocal}>Build</Button>\n </>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport {\n FormControl, FormHelperText, TextField,\n} from '@mui/material'\nimport { toXL1BlockNumber, type XL1BlockNumber } from '@xyo-network/xl1-sdk'\nimport type { ChangeEventHandler } from 'react'\nimport React, { useState } from 'react'\n\ninterface BlockNumberTextFieldProps extends StandardTextFieldProps {\n errorMessage?: string\n onBlockNumberChanged?: (blockNumber?: XL1BlockNumber) => void\n}\n\nexport const BlockNumberTextField: React.FC<BlockNumberTextFieldProps> = ({\n errorMessage, onBlockNumberChanged, onChange, ...props\n}) => {\n const [blockNumber, setBlockNumber] = useState<number>()\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n const value = e.target.value.replaceAll(/\\D/g, '') // Remove non-digit characters\n setBlockNumber(value.length > 0 ? Number(value) : undefined)\n onBlockNumberChanged?.(toXL1BlockNumber(value))\n onChange?.(e)\n }\n\n const errored = errorMessage !== undefined\n\n return (\n <FormControl fullWidth>\n <TextField\n error={errored}\n onChange={handleChange}\n type=\"number\"\n value={blockNumber ?? ''}\n {...props}\n />\n {errored ? <FormHelperText sx={{ color: 'error.main' }}>{errorMessage}</FormHelperText> : null}\n </FormControl>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport {\n FormControl, FormHelperText, TextField,\n} from '@mui/material'\nimport type { Address } from '@xylabs/sdk-js'\nimport {\n asAddress, isAddress, isDefined,\n} from '@xylabs/sdk-js'\nimport React, { useState } from 'react'\n\ninterface XyoAddressTextFieldProps extends Omit<StandardTextFieldProps, 'value'> {\n onAddressChanged?: (address?: Address) => void\n // increment the value to trigger rerender with empty input\n resetValue?: number\n}\n\nexport const XyoAddressTextField: React.FC<XyoAddressTextFieldProps> = ({\n onAddressChanged, onChange, resetValue, ...props\n}) => {\n const [address, setAddress] = useState<string>('')\n const [addressError, setAddressError] = useState<Error>()\n\n const [previousResetValue, setPreviousResetValue] = useState<number | undefined>(resetValue)\n\n if (isDefined(resetValue) && resetValue !== previousResetValue) {\n setPreviousResetValue(resetValue)\n setAddress('')\n }\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n // allow the parent component to also respond to the change if they need to\n onChange?.(event)\n\n // validate the address and call onAddressChanged if it's valid\n const xyoAddress = asAddress(value)\n if (isAddress(xyoAddress)) {\n onAddressChanged?.(xyoAddress)\n setAddressError(undefined)\n } else if (value === '') {\n // if the input is empty, we clear the error but don't call onAddressChanged because there's no address\n setAddressError(undefined)\n } else {\n // if the address is invalid, we set an error and call onAddressChanged with undefined to clear any previously set address\n setAddressError(new Error('Invalid address'))\n }\n\n setAddress(value)\n }\n\n const handleBlur = () => {\n const xyoAddress = asAddress(address)\n if (!isAddress(xyoAddress)) {\n setAddressError(new Error('Invalid address'))\n onAddressChanged?.()\n }\n }\n\n return (\n <FormControl fullWidth>\n <TextField\n error={!!addressError}\n onBlur={handleBlur}\n onChange={handleChange}\n value={address}\n {...props}\n />\n {addressError ? <FormHelperText sx={{ color: 'error.main' }}>{addressError.message}</FormHelperText> : null}\n </FormControl>\n )\n}\n","import React from 'react'\n\nimport type { PayloadBuilderComponentProps } from '../BuilderComponentProps.ts'\nimport { PayloadBuilderFlexbox } from '../Flexbox.tsx'\nimport { TransferBuilderForm } from './Form.tsx'\n\nexport const TransferBuilderFlexbox: React.FC<PayloadBuilderComponentProps> = ({ onBuild, ...props }) => (\n <PayloadBuilderFlexbox\n gap={4}\n alignItems=\"start\"\n BuilderComponent={TransferBuilderForm}\n onBuild={onBuild}\n {...props}\n />\n)\n","import { Button, FormControl } from '@mui/material'\nimport type { Address, Hex } from '@xylabs/sdk-js'\nimport { isAddress } from '@xylabs/sdk-js'\nimport type { Transfer } from '@xyo-network/xl1-sdk'\nimport { TransferSchema } from '@xyo-network/xl1-sdk'\nimport type { MouseEventHandler } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { XyoAddressTextField } from '../../fields/index.ts'\nimport type { PayloadBuilderComponentProps } from '../BuilderComponentProps.ts'\nimport { SingleTransferBuilderFlexbox } from './builder/index.ts'\nimport type { TransferAmount } from './Transfer.ts'\n\nexport interface TransferBuilderFormProps extends PayloadBuilderComponentProps {}\n\nexport const TransferBuilderForm: React.FC<TransferBuilderFormProps> = ({ onBuild }) => {\n const [fromAddress, setFromAddress] = useState<Address>()\n const [transfers, setTransfers] = useState<TransferAmount[]>([])\n\n const [epoch] = useState(() => Date.now())\n\n const transferPayload: Transfer | undefined = useMemo(() => {\n if (isAddress(fromAddress) && transfers.length > 0) {\n const transfersRecord = {} as Transfer['transfers']\n for (const transfer of transfers) {\n transfersRecord[transfer.to] = transfer.amount\n }\n\n return {\n from: fromAddress,\n schema: TransferSchema,\n transfers: transfersRecord,\n epoch,\n }\n }\n }, [fromAddress, transfers, epoch])\n\n const onBuildLocal: MouseEventHandler<HTMLButtonElement> = () => {\n if (onBuild && transferPayload) onBuild?.(transferPayload)\n }\n\n const onTransferAdded = () => {\n const transferAmount: TransferAmount = {\n amount: '' as Hex,\n transferId: Date.now(),\n to: '' as Address,\n }\n setTransfers(prev => [...prev, transferAmount])\n }\n\n const onTransferRemoved = (transferId: number) => {\n setTransfers(prev => prev.filter(transfer => transfer.transferId !== transferId))\n }\n\n const onTransferUpdated = (singleTransfer: TransferAmount) => {\n setTransfers(prev => prev.map((transfer) => {\n if (transfer.transferId === singleTransfer.transferId) {\n return singleTransfer\n }\n return transfer\n }))\n }\n\n return (\n <>\n <FormControl fullWidth>\n <XyoAddressTextField label=\"From\" name=\"from\" onAddressChanged={setFromAddress} required size=\"small\" />\n </FormControl>\n <Button onClick={onTransferAdded} size=\"small\" variant=\"contained\">Add Transfer</Button>\n {transfers.map(transfer => (\n <SingleTransferBuilderFlexbox\n key={transfer.transferId}\n onTransferUpdated={onTransferUpdated}\n onRemoveTransfer={onTransferRemoved}\n singleTransfer={transfer}\n sx={{ width: '100%' }}\n />\n ))}\n <Button disabled={!transferPayload} variant=\"contained\" onClick={onBuildLocal}>Build</Button>\n </>\n )\n}\n","import { RemoveCircle } from '@mui/icons-material'\nimport {\n FormControl, Icon, IconButton,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport type { Address } from '@xylabs/sdk-js'\nimport {\n isAddress, isDefinedNotNull, toHex,\n} from '@xylabs/sdk-js'\nimport { BigIntInput } from '@xyo-network/react-shared'\nimport React, { useEffect, useState } from 'react'\n\nimport { XyoAddressTextField } from '../../../fields/index.ts'\nimport type { TransferAmount } from '../Transfer.ts'\n\nexport interface SingleTransferBuilderFlexboxProps extends FlexBoxProps {\n onRemoveTransfer?: (transferId: number) => void\n onTransferUpdated?: (transferAmount: TransferAmount) => void\n singleTransfer: TransferAmount\n}\n\nexport const SingleTransferBuilderFlexbox: React.FC<SingleTransferBuilderFlexboxProps> = ({\n onTransferUpdated, onRemoveTransfer, singleTransfer, ...props\n}) => {\n const [toAddress, setToAddress] = useState<Address>()\n const [amount, setAmount] = useState<bigint>()\n\n useEffect(() => {\n const transferAmount = isAddress(toAddress) && isDefinedNotNull(amount)\n ? {\n ...singleTransfer,\n amount: toHex(amount),\n to: toAddress,\n }\n : undefined\n if (transferAmount) onTransferUpdated?.(transferAmount)\n }, [amount, onTransferUpdated, singleTransfer, toAddress])\n\n return (\n <FlexRow alignItems=\"start\" gap={1} {...props}>\n <FormControl fullWidth>\n <XyoAddressTextField label=\"To\" name=\"to\" onAddressChanged={setToAddress} required size=\"small\" />\n </FormControl>\n <FormControl fullWidth>\n <BigIntInput.TextField label=\"Amount\" name=\"amount\" onChangeFixedPoint={setAmount} required size=\"small\" />\n </FormControl>\n <IconButton onClick={() => onRemoveTransfer?.(singleTransfer.transferId)}><Icon><RemoveCircle /></Icon></IconButton>\n </FlexRow>\n )\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { BlockRate } from '@xyo-network/xl1-sdk'\n\nimport { rateUnitToLabel } from '../../../helpers/rate/index.ts'\nimport { BlockRateSpanTypography } from '../SpanTypography.tsx'\nimport { BlockRateSpeedTypography } from '../SpeedTypography.tsx'\nimport { BlockRateTimeTypography } from '../TimeTypography.tsx'\n\nexport interface BlockRateFlexBoxProps extends FlexBoxProps {\n blockRate?: BlockRate\n}\n\nexport const BlockRateFlexBox: React.FC<BlockRateFlexBoxProps> = ({\n blockRate,\n ...flexBoxProps\n}) => {\n const {\n range, span, rate, timeUnit, timeDifference,\n } = blockRate ?? {}\n const rateUnitLabel = isDefined(timeUnit) ? rateUnitToLabel(timeUnit) : ''\n\n return (\n <FlexCol alignItems=\"start\" {...flexBoxProps}>\n <BlockRateSpeedTypography rate={rate} rateUnitLabel={rateUnitLabel} />\n <BlockRateSpanTypography range={range} span={span} />\n <BlockRateTimeTypography timeUnit={timeUnit} timeDifference={timeDifference} />\n </FlexCol>\n )\n}\n","import type { TimeDurations } from '@xyo-network/xl1-sdk'\n\nexport const rateUnitToLabel = (rateUnit: keyof TimeDurations) => {\n switch (rateUnit) {\n case 'millis': {\n return 'b/ms'\n }\n case 'seconds': {\n return 'b/s'\n }\n case 'minutes': {\n return 'b/m'\n }\n case 'hours': {\n return 'b/h'\n }\n case 'days': {\n return 'b/d'\n }\n case 'weeks': {\n return 'b/w'\n }\n default: {\n return rateUnit\n }\n }\n}\n","import { ViewAgendaOutlined } from '@mui/icons-material'\nimport { Tooltip, type TypographyProps } from '@mui/material'\nimport type { XL1BlockRange } from '@xyo-network/xl1-sdk'\n\nimport { MetricTypography } from './support/index.ts'\n\nexport interface BlockRateSpanTypographyProps extends TypographyProps {\n range?: XL1BlockRange\n span?: number\n}\n\nexport const BlockRateSpanTypography: React.FC<BlockRateSpanTypographyProps> = ({\n range, span, sx, ...props\n}) => {\n return (\n <Tooltip title={`Block Range: ${range?.join(' - ')}`}>\n <MetricTypography icon={<ViewAgendaOutlined fontSize=\"large\" />} metric={span} label=\"blocks\" {...props} />\n </Tooltip>\n )\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Icon, Typography } from '@mui/material'\nimport { isUndefined } from '@xylabs/sdk-js'\nimport type { ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\n\nexport interface MetricTypographyProps extends TypographyProps {\n animationDurationMs?: number\n disableAnimation?: boolean\n icon?: ReactNode\n label?: ReactNode\n metric?: number\n}\n\nexport const MetricTypography: React.FC<MetricTypographyProps> = ({\n animationDurationMs = 1000, disableAnimation, icon, label, metric, sx, ...props\n}) => {\n const [displayValue, setDisplayValue] = useState(0)\n\n if (isUndefined(metric) && displayValue !== 0) {\n setDisplayValue(0)\n }\n\n useEffect(() => {\n if (isUndefined(metric)) return\n const duration = animationDurationMs\n const startTime = Date.now()\n const startValue = 0\n const endValue = metric\n\n const animate = () => {\n const now = Date.now()\n const elapsed = now - startTime\n const progress = Math.min(elapsed / duration, 1)\n\n // Easing function for smooth animation (ease-out\n const easeProgress = 1 - Math.pow(1 - progress, 3)\n\n const currentValue = startValue + (endValue - startValue) * easeProgress\n setDisplayValue(currentValue)\n\n if (progress < 1) {\n requestAnimationFrame(animate)\n }\n }\n\n globalThis.requestAnimationFrame(animate)\n }, [animationDurationMs, metric])\n\n // Check if metric is a whole number\n const isWholeNumber = metric !== undefined && Number.isInteger(metric)\n\n // Format based on whether the target is a whole number\n const formattedValue = disableAnimation\n ? metric\n : displayValue.toLocaleString(navigator.language, {\n minimumFractionDigits: 0,\n maximumFractionDigits: isWholeNumber ? 0 : 2,\n })\n\n return (\n <Typography\n variant=\"h4\"\n mb={1}\n sx={{\n display: 'flex', alignItems: 'end', gap: 0.5, ...sx,\n }}\n {...props}\n >\n <Icon fontSize=\"large\">{icon}</Icon>\n {formattedValue}\n {' '}\n <Typography component=\"span\" variant=\"caption\" lineHeight={1.86}>\n {label}\n </Typography>\n </Typography>\n )\n}\n","import { SpeedOutlined } from '@mui/icons-material'\nimport type { TypographyProps } from '@mui/material'\n\nimport { MetricTypography } from './support/index.ts'\n\nexport interface BlockRateSpeedTypographyProps extends TypographyProps {\n rate?: number\n rateUnitLabel?: string\n}\n\nexport const BlockRateSpeedTypography: React.FC<BlockRateSpeedTypographyProps> = ({\n rate, rateUnitLabel, ...props\n}) => {\n return (\n <MetricTypography icon={<SpeedOutlined fontSize=\"large\" />} metric={rate} label={rateUnitLabel} {...props} />\n )\n}\n","import { TimelapseOutlined } from '@mui/icons-material'\nimport { type TypographyProps } from '@mui/material'\n\nimport { MetricTypography } from './support/index.ts'\n\nexport interface BlockRateTimeTypographyProps extends TypographyProps {\n timeDifference?: number\n timeUnit?: string\n}\n\nexport const BlockRateTimeTypography: React.FC<BlockRateTimeTypographyProps> = ({\n timeUnit, timeDifference, sx, ...props\n}) => {\n return (\n <MetricTypography icon={<TimelapseOutlined fontSize=\"large\" />} metric={timeDifference} label={timeUnit} {...props} />\n )\n}\n","import type { GaugeContainerProps } from '@mui/x-charts'\nimport {\n GaugeContainer, GaugeReferenceArc, GaugeValueArc,\n} from '@mui/x-charts'\nimport type { BlockRate, TimeDurations } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\n\nimport { BlockRateConversions } from './helpers/index.ts'\nimport { GaugePointer } from './Pointer.tsx'\nimport { GaugeTicks } from './Ticks.tsx'\n\nexport type GaugeConfig = {\n // whether to show ticks on the gauge\n showTicks?: boolean\n // the block rate to target on the gauge\n targetBlockRate: number\n // the unit of time for the target block rate (e.g., seconds, minutes)\n targetBlockRateUnit: keyof TimeDurations\n // the position of the pointer when the block rate matches the target rate\n // should be approximately between 2/3 and 3/4 position of the gauge\n targetPosition: number\n}\n\nexport interface BlockRateSpeedGaugeProps extends GaugeContainerProps, PropsWithChildren {\n blockRate?: BlockRate\n gaugeConfig?: GaugeConfig\n}\n\nexport const BlockRateSpeedGaugeContainer: React.FC<BlockRateSpeedGaugeProps> = ({\n blockRate,\n children,\n gaugeConfig,\n startAngle = -110,\n endAngle = 110,\n width = 200,\n height = 150,\n ...props\n}) => {\n const { rate, timeUnit } = blockRate || {}\n const {\n targetBlockRate = 5, targetBlockRateUnit = 'minutes', targetPosition = 75, showTicks = true,\n } = gaugeConfig || {}\n\n // Get the appropriate converter function based on the target block rate unit\n const converter = BlockRateConversions[targetBlockRateUnit]\n\n // Normalize rate to the gauge\n const maxGaugeValue = endAngle // matches endAngle\n const blocksPerMinute = rate === undefined ? 0 : converter(rate, timeUnit)\n\n // Scale: 5 blocks/min should map to 75 out of 110 max\n // This means: normalizedValue = (blocksPerMinute / targetRate) * targetPosition\n // And we want it capped at maxGaugeValue\n const normalizedValue = Math.min((blocksPerMinute / targetBlockRate) * targetPosition, maxGaugeValue)\n\n return (\n <GaugeContainer\n width={width}\n height={height}\n startAngle={startAngle}\n endAngle={endAngle}\n value={normalizedValue}\n valueMax={endAngle}\n innerRadius=\"95%\"\n outerRadius=\"100%\"\n {...props}\n >\n {showTicks && <GaugeTicks />}\n <GaugeReferenceArc />\n <GaugeValueArc />\n <GaugePointer startAngle={-2} />\n {children}\n </GaugeContainer>\n )\n}\n","import { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport type { TimeDurations } from '@xyo-network/xl1-sdk'\n\nexport type BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations) => number\n\nconst toBlocksPerMillisecond: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 1, // already in milliseconds\n seconds: 1000, // 1 second = 1000 milliseconds\n minutes: 60_000, // 1 minute = 60000 milliseconds\n hours: 3_600_000, // 1 hour = 3600000 milliseconds\n days: 86_400_000, // 1 day = 86400000 milliseconds\n weeks: 604_800_000, // 1 week = 604800000 milliseconds\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerSecond: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 0.001, // 1 millisecond = 0.001 seconds\n seconds: 1, // already in seconds\n minutes: 60, // 1 minute = 60 seconds\n hours: 3600, // 1 hour = 3600 seconds\n days: 86_400, // 1 day = 86400 seconds\n weeks: 604_800, // 1 week = 604800 seconds\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\n// Convert rate to blocks per minute based on the unit\nconst toBlocksPerMinute: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 60_000, // 1 minute = 60000 milliseconds\n seconds: 60, // 1 minute = 60 seconds\n minutes: 1, // already in minutes\n hours: 1 / 60, // 1 hour = 60 minutes\n days: 1 / 1440, // 1 day = 1440 minutes\n weeks: 1 / 10_080, // 1 week = 10080 minutes\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerHour: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 3_600_000, // 1 hour = 3600000 milliseconds\n seconds: 3600, // 1 hour = 3600 seconds\n minutes: 60, // 1 hour = 60 minutes\n hours: 1, // already in hours\n days: 1 / 24, // 1 day = 24 hours\n weeks: 1 / 168, // 1 week = 168 hours\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerDay: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 86_400_000, // 1 day = 86400000 milliseconds\n seconds: 86_400, // 1 day = 86400 seconds\n minutes: 1440, // 1 day = 1440 minutes\n hours: 24, // 1 day = 24 hours\n days: 1, // already in days\n weeks: 1 / 7, // 1 week = 7 days\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerWeek: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 604_800_000, // 1 week = 604800000 milliseconds\n seconds: 604_800, // 1 week = 604800 seconds\n minutes: 10_080, // 1 week = 10080 minutes\n hours: 168, // 1 week = 168 hours\n days: 7, // 1 week = 7 days\n weeks: 1, // already in weeks\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nexport const BlockRateConversions: Record<keyof TimeDurations, BlockRateConverter> = {\n millis: toBlocksPerMillisecond,\n seconds: toBlocksPerSecond,\n minutes: toBlocksPerMinute,\n hours: toBlocksPerHour,\n days: toBlocksPerDay,\n weeks: toBlocksPerWeek,\n}\n","import { useTheme } from '@mui/material'\nimport { useGaugeState } from '@mui/x-charts/Gauge'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { useEffect, useState } from 'react'\n\nexport interface GaugePointerProps {\n pointerColor?: string\n startAngle?: number\n}\n\nexport const GaugePointer: React.FC<GaugePointerProps> = ({ pointerColor, startAngle = 0 }) => {\n const theme = useTheme()\n const strokeColor = isDefined(pointerColor) ? pointerColor : theme.palette.error.dark\n const {\n valueAngle, outerRadius, cx, cy,\n } = useGaugeState()\n\n const [currentAngle, setCurrentAngle] = useState(startAngle)\n\n useEffect(() => {\n if (valueAngle === null) return\n\n const duration = 500 // 0.5 second animation\n const startTime = Date.now()\n const animationStartAngle = currentAngle // Start from current position\n const endAngle = valueAngle\n\n const animate = () => {\n const now = Date.now()\n const elapsed = now - startTime\n const progress = Math.min(elapsed / duration, 1)\n\n // Ease-out cubic for smooth deceleration\n const easeProgress = 1 - Math.pow(1 - progress, 3)\n\n // take the current angle and add the difference to the end angle based on progress\n const newAngle = animationStartAngle + (endAngle - animationStartAngle) * easeProgress\n setCurrentAngle(newAngle)\n\n if (progress < 1) {\n globalThis.requestAnimationFrame(animate)\n }\n }\n\n globalThis.requestAnimationFrame(animate)\n }, [currentAngle, valueAngle])\n\n if (valueAngle === null) {\n // No value to display\n return null\n }\n\n const target = {\n x: cx + outerRadius * Math.sin(currentAngle),\n y: cy - outerRadius * Math.cos(currentAngle),\n }\n return (\n <g className=\"GaugePointer\">\n <circle cx={cx} cy={cy} r={5} fill={strokeColor} />\n <path\n d={`M ${cx} ${cy} L ${target.x} ${target.y}`}\n stroke={strokeColor}\n strokeWidth={3}\n />\n </g>\n )\n}\n","import { useTheme } from '@mui/material'\nimport { useGaugeState } from '@mui/x-charts/Gauge'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { JSX } from 'react'\n\nexport interface GaugeTicksProps {\n /**\n * Length of major ticks as a percentage of the radius\n * @default 0.15\n */\n majorTickLength?: number\n /**\n * Width of major ticks in pixels\n * @default 2\n */\n majorTickWidth?: number\n /**\n * Length of minor ticks as a percentage of the radius\n * @default 0.08\n */\n minorTickLength?: number\n /**\n * Width of minor ticks in pixels\n * @default 1\n */\n minorTickWidth?: number\n /**\n * Number of minor ticks between major ticks\n * @default 4\n */\n minorTicksPerMajor?: number\n /**\n * Number of major ticks to display\n * @default 11\n */\n numTicks?: number\n /**\n * Color of the ticks\n */\n tickColor?: string\n}\n\nexport const GaugeTicks: React.FC<GaugeTicksProps> = ({\n numTicks = 11,\n minorTicksPerMajor = 4,\n majorTickLength = 0.2,\n minorTickLength = 0.15,\n majorTickWidth = 2,\n minorTickWidth = 1,\n tickColor,\n}) => {\n const theme = useTheme()\n const {\n startAngle, endAngle, outerRadius, cx, cy,\n } = useGaugeState()\n\n const color = isDefined(tickColor) ? tickColor : theme.vars.palette.text.secondary\n\n if (startAngle === null || endAngle === null) {\n return null\n }\n\n const ticks: JSX.Element[] = []\n const totalAngle = endAngle - startAngle\n\n // Generate major ticks\n for (let i = 0; i < numTicks; i++) {\n const angle = startAngle + (i / (numTicks - 1)) * totalAngle\n const tickLength = outerRadius * majorTickLength\n const tickStart = outerRadius\n const innerRadius = tickStart - tickLength\n\n const x1 = cx + tickStart * Math.sin(angle)\n const y1 = cy - tickStart * Math.cos(angle)\n const x2 = cx + innerRadius * Math.sin(angle)\n const y2 = cy - innerRadius * Math.cos(angle)\n\n ticks.push(\n <line\n className={`GaugeTick-major-${i}`}\n key={`major-${i}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke={color}\n strokeWidth={majorTickWidth}\n // strokeLinecap=\"round\"\n />,\n )\n // Generate minor ticks between major ticks (except after the last major tick)\n if (i < numTicks - 1) {\n const angleStep = totalAngle / (numTicks - 1) / (minorTicksPerMajor + 1)\n for (let j = 1; j <= minorTicksPerMajor; j++) {\n const minorAngle = angle + angleStep * j\n const minorTickLen = outerRadius * minorTickLength\n const minorTickStart = outerRadius\n const minorInnerRadius = minorTickStart - minorTickLen\n\n const mx1 = cx + minorTickStart * Math.sin(minorAngle)\n const my1 = cy - minorTickStart * Math.cos(minorAngle)\n const mx2 = cx + minorInnerRadius * Math.sin(minorAngle)\n const my2 = cy - minorInnerRadius * Math.cos(minorAngle)\n\n ticks.push(\n <line\n key={`minor-${i}-${j}`}\n x1={mx1}\n y1={my1}\n x2={mx2}\n y2={my2}\n stroke={color}\n strokeWidth={minorTickWidth}\n // strokeLinecap=\"round\"\n />,\n )\n }\n }\n }\n\n return <g className=\"GaugeTicks\">{ticks}</g>\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/sdk-js'\n\nimport { rateUnitToLabel } from '../../../helpers/rate/index.ts'\nimport { BlockRateSpeedTypography } from '../SpeedTypography.tsx'\nimport type { BlockRateSpeedGaugeProps } from './Container.tsx'\nimport { BlockRateSpeedGaugeContainer } from './Container.tsx'\n\nexport interface BlockRateSpeedGaugeWithLabelProps extends BlockRateSpeedGaugeProps {}\n\nexport const BlockRateSpeedGaugeWithLabel: React.FC<BlockRateSpeedGaugeProps> = ({ blockRate, ...props }) => {\n const rateUnitLabel = isDefined(blockRate?.rate) ? rateUnitToLabel(blockRate?.timeUnit) : ''\n\n return (\n <FlexCol>\n <BlockRateSpeedGaugeContainer blockRate={blockRate} {...props} />\n <BlockRateSpeedTypography rate={blockRate?.rate} rateUnitLabel={rateUnitLabel} />\n </FlexCol>\n )\n}\n","import { CircularProgress } from '@mui/material'\nimport type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport { ArchivistConfigSchema, MemoryArchivist } from '@xyo-network/sdk-js'\nimport { flattenHydratedBlocks } from '@xyo-network/xl1-sdk'\nimport React, { useEffect } from 'react'\n\nimport { getChainId } from '../lib/index.ts'\nimport type { BlockChainRenderBaseProps } from '../types/index.ts'\n\nexport const ChainArchivistDecorator: Decorator = (Story, { args, ...context }) => {\n const [randomBlockChain] = usePromise(async () => await buildRandomBlockChain(), [])\n const [blockChainRenderProps, blockChainRenderPropsError] = usePromise(async () => {\n if (randomBlockChain) {\n const chainArchivist = await MemoryArchivist.create({ config: { schema: ArchivistConfigSchema, name: 'ChainArchivist' } })\n const flattened = flattenHydratedBlocks(randomBlockChain)\n await chainArchivist.insert(flattened)\n const chainId = await getChainId()\n return { chainArchivist, chainId }\n }\n }, [randomBlockChain])\n\n useEffect(() => {\n if (blockChainRenderPropsError) {\n console.error(blockChainRenderPropsError)\n }\n }, [blockChainRenderPropsError])\n\n const props = {\n ...context,\n args: {\n ...args,\n blockChainRenderProps: {\n ...(args.blockChainRenderProps as BlockChainRenderBaseProps),\n ...blockChainRenderProps,\n head: randomBlockChain?.toReversed()[0][0]._hash,\n },\n },\n }\n\n return blockChainRenderProps?.chainArchivist ? <Story {...props} /> : <CircularProgress />\n}\n","import type { Address, Promisable } from '@xylabs/sdk-js'\nimport { toAddress } from '@xylabs/sdk-js'\n\nconst id = toAddress('ce080bf3043a40c6c8838c7e813c00ab53df1684')\n\nexport const getChainId = (): Promisable<Address> => {\n return id\n}\n","import { CircularProgress } from '@mui/material'\nimport type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { delay } from '@xylabs/sdk-js'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport { ArchivistConfigSchema, MemoryArchivist } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-sdk'\nimport { flattenHydratedBlock } from '@xyo-network/xl1-sdk'\nimport React, { useEffect, useState } from 'react'\n\nimport { getChainId } from '../lib/index.ts'\nimport type { BlockChainRenderBaseProps } from '../types/index.ts'\n\nlet chainArchivistRef: MemoryArchivist | undefined\n\nexport const ChainArchivistDelayedInsertDecorator: Decorator = (Story, context) => {\n const [firstBlock, setFirstBlock] = useState<BlockBoundWitness>()\n\n const [randomBlockChain] = usePromise(async () => await buildRandomBlockChain(), [])\n const [chainArchivist] = usePromise(async () => {\n if (chainArchivistRef) {\n return chainArchivistRef\n } else {\n chainArchivistRef = await MemoryArchivist.create({ config: { schema: ArchivistConfigSchema, name: 'ChainArchivist' } })\n return chainArchivistRef\n }\n }, [])\n\n const [, delayedInsertError] = usePromise(async () => {\n if (chainArchivist && randomBlockChain) {\n // TODO - use buildRandomChain helper\n for (const hydratedBlock of randomBlockChain) {\n const flattened = flattenHydratedBlock(hydratedBlock)\n // insert the block and subsequent payloads\n await chainArchivist.insert(flattened)\n\n // confirm the first block was inserted and set state so the story can load\n setFirstBlock(prev => prev ?? hydratedBlock[0])\n\n // we know we are gonna get a new block, so simulate the delay\n await delay(1000)\n }\n }\n }, [chainArchivist, randomBlockChain])\n\n useEffect(() => {\n if (delayedInsertError) {\n console.error(delayedInsertError)\n }\n }, [delayedInsertError])\n\n const [blockChainRenderProps] = usePromise(async () => {\n const chainId = await getChainId()\n return { chainArchivist, chainId }\n }, [chainArchivist])\n const { args } = context\n\n const props = {\n ...context,\n args: {\n ...args,\n blockChainRenderProps: {\n ...(args.blockChainRenderProps as BlockChainRenderBaseProps),\n ...blockChainRenderProps,\n head: randomBlockChain?.[0][0]?._hash,\n },\n },\n }\n\n return firstBlock ? <Story {...props} /> : <CircularProgress />\n}\n"],"mappings":"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","names":["Typography","FlexCol","isDefined","useAccountBalanceHistory","ErrorRender","AttoXL1","React","XL1Amount","formatBalanceMagnitude","set","received","sent","netBalance","formatBalance","balance","xl1Amount","XL1Amount","toString","undefined","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","TableBody","TableCell","TableHead","TableRow","isDefined","TableEx","React","TableCell","isDefined","RawInfoIconButton","React","useMemo","FlexCol","FlexRow","BWVerification","HashHeadingPaper","usePayloadHash","React","createContextEx","ChainAnalyzersContext","useContextEx","useChainAnalyzersContext","required","useContextEx","ChainAnalyzersContext","createContextEx","ChainPollingContext","useContextEx","useChainPollingContext","required","useContextEx","ChainPollingContext","Button","FormControl","TextField","FlexCol","toHex","defaultTransactionFees","toXL1BlockNumber","React","ChainTransactionBuilder","onSubmitTx","handleSubmit","event","preventDefault","formData","FormData","currentTarget","chainTx","chain","get","nbf","toXL1BlockNumber","exp","fees","gasLimit","toHex","defaultTransactionFees","gasPrice","base","priority","React","form","onSubmit","style","width","FlexCol","gap","FormControl","fullWidth","TextField","label","name","required","Button","type","variant","FormControl","FormHelperText","TextField","React","useState","ChainTransactionNetwork","network","onNetworkChange","props","error","setError","useState","handleChange","event","url","URL","target","value","undefined","console","React","FormControl","fullWidth","TextField","label","name","onChange","required","FormHelperText","sx","color","Alert","Grid","Typography","ErrorRender","FlexGrowCol","axiosJsonConfig","Account","ArchivistInsertQuerySchema","PayloadBuilder","QueryBoundWitnessBuilder","buildTransaction","Axios","React","useState","BETA_PENDING_TRANSACTIONS_ARCHIVIST","defaultNetwork","URL","SubmitChainTransaction","network","setNetwork","useState","result","setResult","error","setError","onSubmitTx","chainTx","randomAccount","Account","random","transactionBoundWitness","buildTransaction","chain","nbf","exp","insertQuery","PayloadBuilder","schema","ArchivistInsertQuerySchema","build","queryBoundWitness","QueryBoundWitnessBuilder","payloads","query","signer","response","Axios","axiosJsonConfig","post","href","data","errors","length","Error","map","e","message","join","onNetworkChange","url","React","Grid","container","size","xs","sm","md","FlexGrowCol","alignItems","gap","ChainTransactionNetwork","ChainTransactionBuilder","Alert","severity","ErrorRender","Typography","variant","pre","JSON","stringify","CompareArrowsIcon","Chip","Icon","React","useMemo","TransactionCountChip","transactions","sx","props","label","useMemo","length","React","Chip","avatar","Icon","CompareArrowsIcon","title","undefined","display","alignItems","justifyContent","ContentCopy","ContentCopyIcon","Paid","Alert","AlertTitle","Collapse","Snackbar","Typography","ErrorRender","FlexGrowCol","FlexGrowRow","FlexRow","QuickTipButton","isDefined","React","Fragment","useState","usePromise","isHash","assertEx","isDefined","BoundWitnessBuilder","ConfigZod","isBlockBoundWitness","resolveDefinedHead","head","chainArchivist","headPayload","get","undefined","currentHead","BoundWitnessBuilder","build","assertEx","isBlockBoundWitness","JSON","stringify","useChainIteratorParams","chainMap","chainId","name","usePromise","isDefined","isHash","result","foundResult","resolvedHead","config","ConfigZod","parse","chain","id","useState","useBaseContext","context","useState","caches","singletons","usePromise","HydratedBlockWrapper","PayloadBuilder","txsFromBlock","block","wrapper","HydratedBlockWrapper","parse","txs","transactions","txPayloads","map","tx","boundWitness","PayloadBuilder","hashPairs","useTxsFromBlock","block","usePromise","txsFromBlock","TransactionsQuickTipButton","block","props","transactions","transactionsError","useTxsFromBlock","copied","setCopied","useState","closeDialog","setCloseDialog","open","isDefined","previousTransactionError","setPreviousTransactionError","onCopy","transactionHash","navigator","clipboard","writeText","setTimeout","React","QuickTipButton","Icon","Paid","disabled","length","hoverText","disableDialog","dialogProps","fullWidth","maxWidth","FlexGrowCol","gap","alignItems","map","_transaction","hash","Fragment","key","FlexGrowRow","justifyContent","ContentCopyIcon","sx","cursor","onClick","Typography","overflow","textOverflow","whiteSpace","FlexRow","Collapse","in","unmountOnExit","Alert","AlertTitle","Snackbar","onClose","ErrorRender","error","scope","useRef","useState","useAnchorElement","anchorEl","setAnchorEl","useState","anchorRef","useRef","open","Boolean","handleClick","event","currentTarget","handleClose","useEvent","useBlockHeadingEvents","args","useEvent","useMemo","useBlockProducer","block","useMemo","producer","addresses","useMemo","blockProducer","block","addresses","React","buildBlockChainRenderComponent","context","BlockComponent","blockComponentProps","block","remainingProps","blockTxs","txsFromBlock","txHashes","map","_","hash","item","child","React","transactions","key","toString","BoundWitnessSchema","isTransactionBoundWitness","payloadCountsFromBlock","block","payloads","publicPayloads","payload_schemas","filter","schema","BoundWitnessSchema","transactionHashes","payload","isTransactionBoundWitness","flatMap","payload_hashes","privateHashes","hash","some","_hash","length","usePayloadCountsFromBlock","block","useMemo","payloadCountsFromBlock","undefined","Divider","Stack","React","LinkedDivider","React","Stack","className","justifyContent","sx","width","height","Divider","orientation","flexItem","borderRightWidth","transition","MoreVert","IconButton","Menu","BWJsonMenuItem","BWPreviousHashMenuItem","React","BlockMenuExpanded","block","anchorEl","anchorRef","open","handleClick","handleClose","useAnchorElement","React","IconButton","ref","size","onClick","MoreVert","fontSize","Menu","anchorOrigin","horizontal","vertical","onClose","BWPreviousHashMenuItem","boundwitness","dense","onDialogClose","BWJsonMenuItem","Chip","EthAddressWrapper","isString","isUndefined","toAddress","BlockiesAvatar","React","useMemo","Skeleton","React","ChipSkeleton","props","React","Skeleton","width","formatProducerAddress","address","isUndefined","isString","undefined","formattedAddress","toAddress","EthAddressWrapper","parse","toShortString","BlockProducerChip","block","props","blockProducer","addresses","React","BlockAddressChip","toolTipTitle","sx","shortedBlockProducer","avatar","useMemo","BlockiesAvatar","blockiesOptions","seed","Chip","label","ChipSkeleton","width","title","fontFamily","cursor","BlockHeadingFlexbox","block","defaultExpanded","transactions","hash","usePayloadHash","blockHeadingRef","blockHeadingListener","useBlockHeadingEvents","pollingState","useChainPollingContext","expanded","handleTransactionCountClick","event","stopPropagation","JSON","stringify","nativeEvent","React","FlexCol","className","alignItems","ref","onClick","LinkedDivider","HashHeadingPaper","heading","undefined","toString","paperProps","sx","p","width","AdornmentEnd","FlexRow","gap","BlockProducerChip","TransactionCountChip","e","BWVerification","iconColors","boundwitness","span","style","display","transition","maxWidth","BlockMenuExpanded","identiconProps","size","Link","TableCell","Tooltip","Typography","React","useEvent","useLinkedBlockItem","noun","data","ref","dispatch","useEvent","handleClick","event","preventDefault","stopPropagation","undefined","console","warn","selection","globalThis","getSelection","isTextSelected","toString","length","nativeEvent","BlockNumberTableCell","block","eventNoun","linked","props","blockNumber","React","BlockNumberTableCellInner","ref","handleClick","useLinkedBlockItem","toLocaleString","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","sx","cursor","Skeleton","TableCell","Tooltip","Typography","isDefined","React","dateFormat","Intl","DateTimeFormat","globalThis","navigator","language","year","month","day","hour","minute","second","timeAgo","epoch","locale","now","Date","diffInSeconds","Math","floor","units","max","value","name","Infinity","unit","abs","round","RelativeTimeFormat","numeric","format","BlockEpochTableCell","block","linked","props","epoch","$epoch","dateTime","dateFormat","format","age","isDefined","timeAgo","undefined","React","TableCell","Tooltip","title","Typography","component","variant","Skeleton","width","BlockEpochTableCellInner","Link","TableCell","Tooltip","isHash","usePayloadRootHash","React","useState","Button","Dialog","DialogActions","DialogContent","DialogTitle","React","FeatureNotAvailable","featureName","props","React","Dialog","DialogTitle","DialogContent","DialogActions","Button","onClick","e","onClose","BlockHashTableCell","block","notAvailableDialog","linked","props","hash","usePayloadRootHash","ref","handleClick","useLinkedBlockItem","notAvailable","setNotAvailable","useState","shortenedHash","isHash","slice","undefined","React","TableCell","Tooltip","title","Link","sx","cursor","onClick","ChipSkeleton","span","FeatureNotAvailable","featureName","open","DataObject","Button","Dialog","DialogActions","DialogContent","DialogTitle","IconButton","TableCell","FlexRow","ellipsize","isHash","JsonViewerEx","usePayloadRootHash","React","useState","BlockJsonViewTableCell","block","props","open","setOpen","useState","onClose","hash","usePayloadRootHash","title","isHash","ellipsize","React","TableCell","FlexRow","onClick","e","stopPropagation","sx","width","IconButton","DataObject","Dialog","DialogTitle","DialogContent","JsonViewerEx","value","DialogActions","display","flexDirection","justifyContent","Button","variant","Error","Link","TableCell","Tooltip","React","BlockPayloadCountsTableCell","block","linked","props","publicPayloads","privatePayloads","error","usePayloadCountsFromBlock","data","undefined","_hash","payloadCount","ref","handleClick","useLinkedBlockItem","React","TableCell","span","Tooltip","title","message","Error","color","Link","onClick","sx","cursor","TableCell","Tooltip","React","useState","BlockProducerTableCell","block","linked","notAvailableDialog","producerChipProps","props","ref","handleClick","useLinkedBlockItem","JSON","stringify","producer","useBlockProducer","React","BlockProducerTableCellInner","address","notAvailable","setNotAvailable","useState","TableCell","Tooltip","title","BlockAddressChip","sx","cursor","onClick","toolTipTitle","FeatureNotAvailable","featureName","open","Error","Link","TableCell","Tooltip","React","useMemo","BlockTransactionCountTableCell","block","linked","props","transactions","error","useTxsFromBlock","txHashes","useMemo","map","hash","data","undefined","length","_hash","ref","handleClick","useLinkedBlockItem","React","TableCell","span","Tooltip","title","message","Error","color","Link","onClick","sx","cursor","CheckCircleOutlineRounded","TableCell","FlexRow","BWVerification","React","BlockVerificationTableCell","block","linked","deepValidation","props","React","TableCell","FlexRow","onClick","e","stopPropagation","sx","width","BWVerification","iconColors","boundwitness","CheckCircleOutlineRounded","color","TableBody","TableEx","React","InfoOutline","TableCell","TableHead","TableRow","Tooltip","Typography","FlexRow","React","ToolTipTableCell","children","align","title","props","React","TableCell","FlexRow","justifyContent","Typography","variant","Tooltip","InfoOutline","fontSize","BlockchainTableHead","TableHead","TableRow","sx","width","BlockchainTableEx","ref","children","props","React","TableEx","BlockchainTableHead","TableBody","displayName","usePayloadRootHash","React","useMemo","styled","TableRow","alphaCss","StyledLinkableTableRow","styled","TableRow","shouldForwardProp","prop","theme","linked","backgroundColor","alphaCss","vars","palette","secondary","light","BlockChainTableRow","block","deepValidation","defaultExpanded","linked","props","linkedTableCellProps","useMemo","defaultTableCellProps","hash","usePayloadRootHash","ref","handleClick","useLinkedBlockItem","React","StyledLinkableTableRow","onClick","undefined","BlockNumberTableCell","align","BlockHashTableCell","BlockEpochTableCell","BlockProducerTableCell","BlockTransactionCountTableCell","BlockPayloadCountsTableCell","BlockVerificationTableCell","BlockJsonViewTableCell","TableCell","Tooltip","React","useEvent","useLinkedBalanceHistoryItem","ref","dispatch","useEvent","handleClick","event","noun","data","preventDefault","stopPropagation","undefined","console","warn","selection","globalThis","getSelection","isTextSelected","toString","length","nativeEvent","AddressTableCell","address","eventNoun","linked","toolTipTitle","sx","props","ref","handleClick","useLinkedBalanceHistoryItem","React","TableCell","cursor","Tooltip","title","BlockAddressChip","onClick","e","undefined","Link","TableCell","Tooltip","Typography","React","BalanceHistoryBlockNumberTableCell","block","eventNoun","linked","props","blockNumber","React","BalanceHistoryBlockNumberTableCellInner","ref","handleClick","useLinkedBalanceHistoryItem","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","e","toString","sx","cursor","Link","TableCell","Tooltip","Typography","ellipsize","isDefined","React","HashTableCell","eventData","eventNoun","hash","linked","toolTipTitle","sx","props","ref","handleClick","useLinkedBalanceHistoryItem","shortenedHash","isDefined","ellipsize","React","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","e","cursor","Link","TableCell","Tooltip","isDefined","toHex","XL1Amount","React","RawAmountTableCell","amount","eventNoun","linked","sx","type","props","ref","handleClick","useLinkedBalanceHistoryItem","formatAmount","isDefined","xl1Amount","XL1Amount","toString","undefined","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","React","TableCell","Tooltip","title","Link","onClick","e","toHex","cursor","span","BalanceHistoryTableRow","linked","row","props","amount","blockHash","blockNumber","debug","from","key","timestamp","to","type","txHash","transferHash","linkedTableCallProps","useMemo","ref","handleClick","useLinkedBalanceHistoryItem","noun","isDefined","data","React","StyledLinkableTableRow","onClick","e","undefined","HashTableCell","hash","toolTipTitle","eventNoun","BalanceHistoryBlockNumberTableCellInner","BlockEpochTableCellInner","epoch","AddressTableCell","address","RawAmountTableCell","eventData","TableCell","RawInfoIconButton","rawValue","TableHeadingLabels","AccountBalanceHistoryTableEx","history","linked","props","isDefined","React","TableEx","TableHead","TableRow","TableHeadingLabels","map","heading","TableCell","key","TableBody","row","BalanceHistoryTableRow","AccountBalanceHistoryFlexBox","address","refresh","viewer","props","results","error","useAccountBalanceHistory","undefined","history","balance","truncated","AttoXL1","isDefined","React","FlexCol","ErrorRender","scope","Typography","variant","gutterBottom","formatBalanceMagnitude","at","blockNumber","AccountBalanceHistoryTableEx","isDefined","useAccountBalanceHistory","useCallback","useState","usePagedAccountBalanceHistory","address","viewer","maxPage","updatedBlockRange","setUpdatedBlockRange","useState","pagedHistory","setPagedHistory","results","error","loading","useAccountBalanceHistory","history","truncated","previousHistory","setPreviousHistory","isDefined","lastBlock","at","blockNumber","undefined","historyComplete","length","updateRange","useCallback","newEndBlock","Autorenew","Pause","Alert","AlertTitle","Grow","Icon","IconButton","Tooltip","FlexRow","React","memo","QueryStats","Dialog","DialogContent","DialogTitle","IconButton","React","useState","Typography","ErrorRender","FlexCol","isChainSummaryProducers","React","useMemo","Table","TableBody","TableCell","TableHead","TableRow","useTheme","BlockiesAvatar","React","ChainProducerStatsTable","producers","props","theme","useTheme","React","Table","TableHead","TableRow","TableCell","TableBody","map","producer","key","address","BlockiesAvatar","blockiesOptions","seed","sx","height","spacing","width","blocksProduced","toString","rewardsEarned","BlockProducerStatsFlexbox","payload","props","producer","producerError","useMemo","isChainSummaryProducers","undefined","Error","producersArray","Object","values","producers","React","FlexCol","alignItems","gap","ErrorRender","error","scope","Typography","fontSize","ChainProducerStatsTable","ChainAnalyzerStatsDialog","props","analyzers","statsUpdated","useChainAnalyzersContext","React","Dialog","DialogTitle","DialogContent","Object","entries","map","id","analyzer","div","key","BlockProducerStatsFlexbox","payload","result","ChainAnalyzerStatsDialogFromContext","open","setOpen","useState","handleClose","IconButton","onClick","QueryStats","onClose","createSvgIcon","keyframes","styled","React","PulseSvgIcon","svg","viewBox","version","xmlns","g","transform","circle","className","cx","cy","r","pulse1","pulse2","StyledPulseSvgIcon","theme","animation","fill","vars","palette","success","main","divider","PollingControlsFlexbox","blocksBehind","pollingState","setPollingState","paused","running","React","FlexRow","justifyContent","width","gap","IconButton","onClick","title","Pause","Autorenew","ChainAnalyzerStatsDialogFromContext","Grow","in","Tooltip","Alert","sx","py","px","cursor","severity","AlertTitle","mb","Icon","StyledPulseSvgIcon","className","MemoizedPollingControlsFlexbox","memo","Button","Dialog","DialogActions","DialogContent","React","TransactionsDialog","onClose","props","React","Dialog","DialogContent","DialogActions","Button","variant","onClick","e","useEffect","useRef","useOnBlock","initialHeadNumber","onAddBlock","liveHead","pollingState","blocksWhilePausedRef","useRef","lastLiveHeadRef","useEffect","lastLiveHeadBlock","current","blocksWhilePausedBlock","liveHeadBlock","block","isNewBlock","push","length","TablePaginationActions","React","BlockChainPagination","count","onPageChange","page","rowsPerPage","React","TablePaginationActions","useMemo","useState","useChainPagination","pageSize","blockComponents","page","setPage","useState","paginatedBlockComponents","useMemo","startIndex","endIndex","slice","onPageChange","_event","newPage","styled","FlexCol","BlockListWrapperFlexBox","name","visibility","height","FlexCol","JsonViewerEx","React","useState","PayloadBuilderFlexbox","BuilderComponent","onBuild","props","payload","setPayload","useState","onBuildLocal","React","FlexCol","gap","JsonViewerEx","value","Button","FormControl","usePromise","createProducerChainStakeIntent","React","useState","FormControl","FormHelperText","TextField","toXL1BlockNumber","React","useState","BlockNumberTextField","errorMessage","onBlockNumberChanged","onChange","props","blockNumber","setBlockNumber","useState","handleChange","e","value","target","replaceAll","length","Number","undefined","toXL1BlockNumber","errored","React","FormControl","fullWidth","TextField","error","type","FormHelperText","sx","color","FormControl","FormHelperText","TextField","asAddress","isAddress","isDefined","React","useState","XyoAddressTextField","onAddressChanged","onChange","resetValue","props","address","setAddress","useState","addressError","setAddressError","previousResetValue","setPreviousResetValue","isDefined","handleChange","event","value","target","xyoAddress","asAddress","isAddress","undefined","Error","handleBlur","React","FormControl","fullWidth","TextField","error","onBlur","FormHelperText","sx","color","message","ProducerIntentBuilderForm","onBuild","delegate","setDelegate","useState","exp","setExp","nbf","setNbf","blockRangeError","setBlockRangeError","intentPayload","usePromise","undefined","Error","payload","createProducerChainStakeIntent","onBuildLocal","React","FormControl","fullWidth","XyoAddressTextField","label","name","onAddressChanged","required","size","BlockNumberTextField","errorMessage","message","onBlockNumberChanged","Button","disabled","variant","onClick","React","Button","FormControl","isAddress","TransferSchema","React","useMemo","useState","RemoveCircle","FormControl","Icon","IconButton","FlexRow","isAddress","isDefinedNotNull","toHex","BigIntInput","React","useEffect","useState","SingleTransferBuilderFlexbox","onTransferUpdated","onRemoveTransfer","singleTransfer","props","toAddress","setToAddress","useState","amount","setAmount","useEffect","transferAmount","isAddress","isDefinedNotNull","toHex","to","undefined","React","FlexRow","alignItems","gap","FormControl","fullWidth","XyoAddressTextField","label","name","onAddressChanged","required","size","BigIntInput","TextField","onChangeFixedPoint","IconButton","onClick","transferId","Icon","RemoveCircle","TransferBuilderForm","onBuild","fromAddress","setFromAddress","useState","transfers","setTransfers","epoch","Date","now","transferPayload","useMemo","isAddress","length","transfersRecord","transfer","to","amount","from","schema","TransferSchema","onBuildLocal","onTransferAdded","transferAmount","transferId","prev","onTransferRemoved","filter","onTransferUpdated","singleTransfer","map","React","FormControl","fullWidth","XyoAddressTextField","label","name","onAddressChanged","required","size","Button","onClick","variant","SingleTransferBuilderFlexbox","key","onRemoveTransfer","sx","width","disabled","TransferBuilderFlexbox","onBuild","props","React","PayloadBuilderFlexbox","gap","alignItems","BuilderComponent","TransferBuilderForm","FlexCol","isDefined","rateUnitToLabel","rateUnit","ViewAgendaOutlined","Tooltip","Icon","Typography","isUndefined","useEffect","useState","MetricTypography","animationDurationMs","disableAnimation","icon","label","metric","sx","props","displayValue","setDisplayValue","useState","isUndefined","useEffect","duration","startTime","Date","now","startValue","endValue","animate","elapsed","progress","Math","min","easeProgress","pow","currentValue","requestAnimationFrame","globalThis","isWholeNumber","undefined","Number","isInteger","formattedValue","toLocaleString","navigator","language","minimumFractionDigits","maximumFractionDigits","Typography","variant","mb","display","alignItems","gap","Icon","fontSize","component","lineHeight","BlockRateSpanTypography","range","span","sx","props","Tooltip","title","join","MetricTypography","icon","ViewAgendaOutlined","fontSize","metric","label","SpeedOutlined","BlockRateSpeedTypography","rate","rateUnitLabel","props","MetricTypography","icon","SpeedOutlined","fontSize","metric","label","TimelapseOutlined","BlockRateTimeTypography","timeUnit","timeDifference","sx","props","MetricTypography","icon","TimelapseOutlined","fontSize","metric","label","BlockRateFlexBox","blockRate","flexBoxProps","range","span","rate","timeUnit","timeDifference","rateUnitLabel","isDefined","rateUnitToLabel","FlexCol","alignItems","BlockRateSpeedTypography","BlockRateSpanTypography","BlockRateTimeTypography","GaugeContainer","GaugeReferenceArc","GaugeValueArc","isDefined","isUndefined","toBlocksPerMillisecond","rateValue","unit","isUndefined","conversions","millis","seconds","minutes","hours","days","weeks","isDefined","toBlocksPerSecond","toBlocksPerMinute","toBlocksPerHour","toBlocksPerDay","toBlocksPerWeek","BlockRateConversions","useTheme","useGaugeState","isDefined","useEffect","useState","GaugePointer","pointerColor","startAngle","theme","useTheme","strokeColor","isDefined","palette","error","dark","valueAngle","outerRadius","cx","cy","useGaugeState","currentAngle","setCurrentAngle","useState","useEffect","duration","startTime","Date","now","animationStartAngle","endAngle","animate","elapsed","progress","Math","min","easeProgress","pow","newAngle","globalThis","requestAnimationFrame","target","x","sin","y","cos","g","className","circle","r","fill","path","d","stroke","strokeWidth","useTheme","useGaugeState","isDefined","GaugeTicks","numTicks","minorTicksPerMajor","majorTickLength","minorTickLength","majorTickWidth","minorTickWidth","tickColor","theme","useTheme","startAngle","endAngle","outerRadius","cx","cy","useGaugeState","color","isDefined","vars","palette","text","secondary","ticks","totalAngle","i","angle","tickLength","tickStart","innerRadius","x1","Math","sin","y1","cos","x2","y2","push","line","className","key","stroke","strokeWidth","angleStep","j","minorAngle","minorTickLen","minorTickStart","minorInnerRadius","mx1","my1","mx2","my2","g","BlockRateSpeedGaugeContainer","blockRate","children","gaugeConfig","startAngle","endAngle","width","height","props","rate","timeUnit","targetBlockRate","targetBlockRateUnit","targetPosition","showTicks","converter","BlockRateConversions","maxGaugeValue","blocksPerMinute","undefined","normalizedValue","Math","min","GaugeContainer","value","valueMax","innerRadius","outerRadius","GaugeTicks","GaugeReferenceArc","GaugeValueArc","GaugePointer","FlexCol","isDefined","BlockRateSpeedGaugeWithLabel","blockRate","props","rateUnitLabel","isDefined","rate","rateUnitToLabel","timeUnit","FlexCol","BlockRateSpeedGaugeContainer","BlockRateSpeedTypography","CircularProgress","usePromise","buildRandomBlockChain","ArchivistConfigSchema","MemoryArchivist","flattenHydratedBlocks","React","useEffect","toAddress","id","toAddress","getChainId","ChainArchivistDecorator","Story","args","context","randomBlockChain","usePromise","buildRandomBlockChain","blockChainRenderProps","blockChainRenderPropsError","chainArchivist","MemoryArchivist","create","config","schema","ArchivistConfigSchema","name","flattened","flattenHydratedBlocks","insert","chainId","getChainId","useEffect","console","error","props","head","toReversed","_hash","React","CircularProgress","CircularProgress","usePromise","delay","buildRandomBlockChain","ArchivistConfigSchema","MemoryArchivist","flattenHydratedBlock","React","useEffect","useState","chainArchivistRef","ChainArchivistDelayedInsertDecorator","Story","context","firstBlock","setFirstBlock","useState","randomBlockChain","usePromise","buildRandomBlockChain","chainArchivist","MemoryArchivist","create","config","schema","ArchivistConfigSchema","name","delayedInsertError","hydratedBlock","flattened","flattenHydratedBlock","insert","prev","delay","useEffect","console","error","blockChainRenderProps","chainId","getChainId","args","props","head","_hash","React","CircularProgress"]}
1
+ {"version":3,"sources":["../../src/components/account/BalanceHistoryFlexbox.tsx","../../src/components/account/helpers/formatBalanceMagnitude.ts","../../src/components/account/table/BalanceHistoryTableEx.tsx","../../src/components/account/table/BalanceHistoryTableRow.tsx","../../src/components/block/BlockHeadingFlexbox.tsx","../../src/context/analyzer/context.ts","../../src/context/analyzer/use.ts","../../src/context/polling/context.ts","../../src/context/polling/use.ts","../../src/components/transactions/submit/Builder.tsx","../../src/components/transactions/submit/Network.tsx","../../src/components/transactions/submit/SubmitChain.tsx","../../src/components/transactions/TransactionCountChip.tsx","../../src/components/transactions/TransactionsQuickTipButton.tsx","../../src/hooks/chain-iterator/useChainIteratorParams.ts","../../src/hooks/useBaseContext.ts","../../src/hooks/useTxsFromBlock.ts","../../src/helpers/txsFromBlock.ts","../../src/components/block/hooks/useAnchorElement.ts","../../src/components/block/hooks/useBlockHeadingEvents.ts","../../src/components/block/hooks/useBlockProducer.ts","../../src/components/block/hooks/usePayloadCountsFromBlock.ts","../../src/components/block/helpers/blockProducer.ts","../../src/components/block/helpers/buildBlockChainRenderComponent.tsx","../../src/components/block/helpers/payloadCountsFromBlock.ts","../../src/components/block/LinkedDivider.tsx","../../src/components/block/menu/Expanded.tsx","../../src/components/block/ProducerChip.tsx","../../src/components/block/ChipSkeleton.tsx","../../src/components/block/table/cell/BlockNumber.tsx","../../src/components/block/table/cell/hooks/useLinkedBlockItem.tsx","../../src/components/block/table/cell/Epoch.tsx","../../src/components/block/table/cell/helpers/timeFunctions.ts","../../src/components/block/table/cell/Hash.tsx","../../src/components/FeatureNotAvailable.tsx","../../src/components/block/table/cell/JsonView.tsx","../../src/components/block/table/cell/PayloadCounts.tsx","../../src/components/block/table/cell/Producer.tsx","../../src/components/block/table/cell/TransactionCount.tsx","../../src/components/block/table/cell/Verification.tsx","../../src/components/block/table/Ex.tsx","../../src/components/block/table/head/TableHead.tsx","../../src/components/block/table/row/TableRow.tsx","../../src/components/table/StyledLinkableTableRow.tsx","../../src/components/account/table/cell/AddressTableCell.tsx","../../src/components/account/table/hooks/useLinkedBalanceHistoryItem.tsx","../../src/components/account/table/cell/BlockNumber.tsx","../../src/components/account/table/cell/HashTableCell.tsx","../../src/components/account/table/RawAmountTableCell.tsx","../../src/components/account/table/types/index.ts","../../src/components/account/hooks/usePagedAccountBalanceHistory.ts","../../src/components/chain/controls/PollingControlsFlexbox.tsx","../../src/components/chain/stats/Dialog.tsx","../../src/components/chain/stats/producer/ProducerFlexbox.tsx","../../src/components/chain/stats/producer/Table.tsx","../../src/components/chain/controls/PulseSvgIcon.tsx","../../src/components/chain/dialog/Dialog.tsx","../../src/components/chain/hooks/useOnBlock.ts","../../src/components/chain/pagination/BlockChainPagination.tsx","../../src/components/chain/pagination/hooks/usePagination.tsx","../../src/components/chain/styled/BlockListWrapperFlexbox.tsx","../../src/components/payload/builder/Flexbox.tsx","../../src/components/payload/builder/producer-intent/Form.tsx","../../src/components/payload/fields/BlockNumberTextField.tsx","../../src/components/payload/fields/XyoAddressTextField.tsx","../../src/components/payload/builder/transfer/Flexbox.tsx","../../src/components/payload/builder/transfer/Form.tsx","../../src/components/payload/builder/transfer/builder/SingleFlexbox.tsx","../../src/components/rate/flexbox/FlexBox.tsx","../../src/helpers/rate/rateUnitToLabel.ts","../../src/components/rate/SpanTypography.tsx","../../src/components/rate/support/MetricTypography.tsx","../../src/components/rate/SpeedTypography.tsx","../../src/components/rate/TimeTypography.tsx","../../src/components/rate/gauge/Container.tsx","../../src/components/rate/gauge/helpers/blockRateConversions.ts","../../src/components/rate/gauge/Pointer.tsx","../../src/components/rate/gauge/Ticks.tsx","../../src/components/rate/gauge/WithLabel.tsx","../../src/stories/ChainArchivistDecorator.tsx","../../src/lib/getChainId.ts","../../src/stories/ChainArchivistDelayedInsertDecorator.tsx"],"sourcesContent":["import { Typography } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { type Address } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { useAccountBalanceHistory } from '@xyo-network/react-chain-provider'\nimport { ErrorRender } from '@xyo-network/react-error'\nimport type { XyoViewer } from '@xyo-network/xl1-sdk'\nimport { AttoXL1 } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { formatBalanceMagnitude } from './helpers/index.ts'\nimport { AccountBalanceHistoryTableEx } from './table/index.ts'\n\nexport interface AccountBalanceHistoryFlexBoxProps extends FlexBoxProps {\n address?: Address\n refresh?: number\n viewer?: XyoViewer\n}\n\nexport const AccountBalanceHistoryFlexBox: React.FC<AccountBalanceHistoryFlexBoxProps> = ({\n address, refresh, viewer, ...props\n}) => {\n const [results, error] = useAccountBalanceHistory(address, viewer, undefined, undefined, refresh)\n const {\n history, balance, truncated,\n } = results || { balance: [AttoXL1(0n), AttoXL1(0n)], history: undefined }\n\n return isDefined(history) && isDefined(address)\n ? (\n <FlexCol {...props}>\n <ErrorRender error={error} scope=\"AccountBalanceHistoryTable\" />\n <Typography variant=\"h6\" gutterBottom>\n {formatBalanceMagnitude(balance)}\n </Typography>\n {truncated\n ? (\n <Typography variant=\"caption\" gutterBottom>\n Ranged Balance from\n {' '}\n {history.at(-1)!.blockNumber}\n {' '}\n -\n {' '}\n {history[0].blockNumber}\n </Typography>\n )\n : null}\n <AccountBalanceHistoryTableEx history={history} />\n </FlexCol>\n )\n : null\n}\n","import { type AttoXL1, XL1Amount } from '@xyo-network/xl1-sdk'\n\nexport const formatBalanceMagnitude = (set: [AttoXL1, AttoXL1]) => {\n const [received, sent] = set\n const netBalance = received - sent\n return netBalance < 0n ? `-${formatBalance(sent - received)}` : formatBalance(netBalance)\n}\n\nconst formatBalance = (balance: bigint) => {\n const xl1Amount = new XL1Amount(balance)\n return xl1Amount.toString(undefined, {\n places: 18, maxDecimal: 12, maxCharacters: 12, minDecimals: 1, locale: navigator.language,\n })\n}\n","import {\n TableBody, TableCell, TableHead, TableRow,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport type { TableExProps } from '@xyo-network/react-table'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\n\nimport { BalanceHistoryTableRow } from './BalanceHistoryTableRow.tsx'\nimport { TableHeadingLabels } from './types/index.ts'\n\nexport interface AccountBalanceHistoryTableExProps extends TableExProps {\n history?: AccountBalanceHistoryItemFormatted[]\n linked?: boolean\n}\n\nexport const AccountBalanceHistoryTableEx: React.FC<AccountBalanceHistoryTableExProps> = ({\n history, linked, ...props\n}) => {\n return isDefined(history)\n ? (\n <TableEx {...props}>\n <TableHead>\n <TableRow>\n {TableHeadingLabels.map(heading => (\n <TableCell key={heading}>{heading}</TableCell>\n ))}\n </TableRow>\n </TableHead>\n <TableBody>\n {history?.map(row => <BalanceHistoryTableRow key={row.key} linked={linked} row={row} />)}\n </TableBody>\n </TableEx>\n )\n : null\n}\n","import {\n TableCell,\n type TableRowProps,\n} from '@mui/material'\nimport { isDefined, type JsonValue } from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport { RawInfoIconButton } from '@xyo-network/react-payload-raw-info'\nimport type { Ref } from 'react'\nimport React, { useMemo } from 'react'\n\nimport { BlockEpochTableCellInner } from '../../block/index.ts'\nimport { StyledLinkableTableRow } from '../../table/index.ts'\nimport {\n AddressTableCell, BalanceHistoryBlockNumberTableCellInner, HashTableCell,\n} from './cell/index.ts'\nimport { useLinkedBalanceHistoryItem } from './hooks/index.ts'\nimport { RawAmountTableCell } from './RawAmountTableCell.tsx'\nimport type { BalanceHistoryEventNouns } from './types/index.ts'\n\n// const TEXT_TX_HASH = '123456789abcdef123456789abcdef123456789abcdef123456789abcdef1234' as Hash\n\nexport interface BalanceHistoryTableRowProps extends TableRowProps {\n linked?: boolean\n row: AccountBalanceHistoryItemFormatted\n}\n\nexport const BalanceHistoryTableRow: React.FC<BalanceHistoryTableRowProps> = ({\n linked, row, ...props\n}) => {\n const {\n amount, blockHash, blockNumber, debug, from, key, timestamp, to, type, txHash, transferHash,\n } = row ?? {} as AccountBalanceHistoryItemFormatted\n\n const linkedTableCallProps = useMemo(() => ({ linked }), [linked])\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n\n const noun: BalanceHistoryEventNouns = isDefined(txHash) ? 'tx-hash|transfer-hash' : 'block-hash|transfer-hash'\n const data = isDefined(txHash) ? `${txHash}|${transferHash}` : `${blockHash}|${transferHash}`\n\n return (\n <StyledLinkableTableRow\n linked={linked}\n key={key}\n onClick={linked ? e => handleClick(e, noun, data) : undefined}\n ref={ref as Ref<HTMLTableRowElement> | undefined}\n {...props}\n >\n <HashTableCell hash={txHash} toolTipTitle={`Transaction Hash: ${txHash}`} eventNoun=\"tx-hash\" {...linkedTableCallProps} />\n <BalanceHistoryBlockNumberTableCellInner blockNumber={blockNumber} eventNoun=\"block-number\" {...linkedTableCallProps} />\n <BlockEpochTableCellInner epoch={timestamp} {...linkedTableCallProps} />\n <AddressTableCell address={from} toolTipTitle={`From Address: ${from}`} eventNoun=\"from-address\" {...linkedTableCallProps} />\n <AddressTableCell address={to} toolTipTitle={`To Address: ${to}`} eventNoun=\"to-address\" {...linkedTableCallProps} />\n <RawAmountTableCell amount={amount} type={type} eventNoun=\"amount\" />\n <HashTableCell hash={transferHash} toolTipTitle={`Transfer Hash: ${transferHash}`} eventNoun={noun} eventData={data} {...linkedTableCallProps} />\n <TableCell>\n <RawInfoIconButton rawValue={debug as JsonValue} />\n </TableCell>\n </StyledLinkableTableRow>\n )\n}\n","import { FlexCol, FlexRow } from '@xylabs/react-flexbox'\nimport type { Hash } from '@xylabs/sdk-js'\nimport { BWVerification, HashHeadingPaper } from '@xyo-network/react-boundwitness-plugin'\nimport { usePayloadHash } from '@xyo-network/react-shared'\nimport React from 'react'\n\nimport { useChainPollingContext } from '../../context/index.ts'\nimport type { BlockComponentWithTxsProps } from '../../types/index.ts'\nimport { TransactionCountChip } from '../transactions/index.ts'\nimport { useBlockHeadingEvents } from './hooks/index.ts'\nimport { LinkedDivider } from './LinkedDivider.tsx'\nimport { BlockMenuExpanded } from './menu/index.ts'\nimport { BlockProducerChip } from './ProducerChip.tsx'\n\nexport const BlockHeadingFlexbox: React.FC<BlockComponentWithTxsProps> = ({\n block, defaultExpanded, transactions,\n}) => {\n const hash = usePayloadHash(block?.[0])\n const [blockHeadingRef, blockHeadingListener] = useBlockHeadingEvents<HTMLDivElement>()\n const { pollingState } = useChainPollingContext()\n const expanded = (pollingState === 'paused') || defaultExpanded\n\n const handleTransactionCountClick = (event: React.MouseEvent, transactions: Hash[]) => {\n event.stopPropagation()\n blockHeadingListener('transaction-count', 'click', JSON.stringify(transactions), event.nativeEvent)\n }\n\n return (\n <FlexCol className=\"block-heading-flexbox\" alignItems=\"stretch\" ref={blockHeadingRef} onClick={() => blockHeadingListener('block-hash', 'click', hash)}>\n <LinkedDivider />\n <HashHeadingPaper\n hash={hash}\n heading={block?.[0].block === undefined ? '' : block?.[0].block.toString()}\n paperProps={{ sx: { p: 1, width: '100%' } }}\n AdornmentEnd={(\n <FlexRow gap={1}>\n <BlockProducerChip block={block} />\n <TransactionCountChip\n onClick={e => handleTransactionCountClick(e, transactions ?? [])}\n transactions={transactions}\n />\n <BWVerification iconColors boundwitness={block?.[0]} />\n <span style={{\n // maxWidth is required for css animation to work and 28px is the width of the icon button\n display: 'flex', transition: 'max-width .5s', maxWidth: expanded ? '28px' : 0,\n }}\n >\n <BlockMenuExpanded block={block} />\n </span>\n </FlexRow>\n )}\n identiconProps={{ p: 0.75, size: 18 }}\n />\n </FlexCol>\n )\n}\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainAnalyzersState } from './state.ts'\n\nexport const ChainAnalyzersContext = createContextEx<ChainAnalyzersState>()\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainAnalyzersContext } from './context.ts'\nimport type { ChainAnalyzersState } from './state.ts'\n\nexport const useChainAnalyzersContext = (required = false) => useContextEx<ChainAnalyzersState>(ChainAnalyzersContext, 'ChainAnalyzers', required)\n","import { createContextEx } from '@xylabs/react-shared'\n\nimport type { ChainPollingState } from './state.ts'\n\nexport const ChainPollingContext = createContextEx<ChainPollingState>()\n","import { useContextEx } from '@xylabs/react-shared'\n\nimport { ChainPollingContext } from './context.ts'\n\nexport const useChainPollingContext = (required = false) => useContextEx(ChainPollingContext, 'ChainPolling', required)\n","import {\n Button, FormControl, TextField,\n} from '@mui/material'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { toHex } from '@xylabs/sdk-js'\nimport type { ChainId, TransactionBoundWitnessFields } from '@xyo-network/xl1-sdk'\nimport { defaultTransactionFees, toXL1BlockNumber } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nexport interface ChainTransactionBuilder {\n onSubmitTx?: (chainTx: Omit<TransactionBoundWitnessFields, 'from'>) => Promise<void>\n}\n\nexport const ChainTransactionBuilder: React.FC<ChainTransactionBuilder> = ({ onSubmitTx }) => {\n const handleSubmit = async (event: React.SubmitEvent<HTMLFormElement>) => {\n event.preventDefault()\n const formData = new FormData(event.currentTarget)\n\n // TODO - more field level validation\n const chainTx: Omit<TransactionBoundWitnessFields, 'from'> = {\n chain: formData.get('chain') as ChainId,\n nbf: toXL1BlockNumber(formData.get('nbf'), true),\n exp: toXL1BlockNumber(formData.get('exp'), true),\n fees: {\n gasLimit: toHex(defaultTransactionFees.gasLimit),\n gasPrice: toHex(defaultTransactionFees.gasPrice),\n base: toHex(defaultTransactionFees.base),\n priority: toHex(defaultTransactionFees.priority),\n },\n }\n\n await onSubmitTx?.(chainTx)\n }\n\n return (\n <form onSubmit={event => void handleSubmit(event)} style={{ width: '100%' }}>\n <FlexCol gap={2}>\n <FormControl fullWidth>\n <TextField label=\"Chain Address\" name=\"chain\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Gas\" name=\"gas\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Not Before Block\" name=\"nbf\" required />\n </FormControl>\n <FormControl fullWidth>\n <TextField label=\"Not After Block\" name=\"exp\" required />\n </FormControl>\n\n <Button type=\"submit\" variant=\"contained\">Submit</Button>\n </FlexCol>\n </form>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport {\n FormControl, FormHelperText,\n TextField,\n} from '@mui/material'\nimport type { ChangeEventHandler } from 'react'\nimport React, { useState } from 'react'\n\nexport interface ChainTransactionNetworkProps extends StandardTextFieldProps {\n network?: URL\n onNetworkChange?: (url: URL) => void\n}\n\nexport const ChainTransactionNetwork: React.FC<ChainTransactionNetworkProps> = ({\n network, onNetworkChange, ...props\n}) => {\n const [error, setError] = useState<Error>()\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (event) => {\n try {\n const url = new URL(event.target.value)\n setError(undefined)\n onNetworkChange?.(url)\n } catch (error) {\n console.error(error)\n setError(error as Error)\n }\n }\n\n return (\n <FormControl fullWidth>\n <TextField label=\"Network\" name=\"network\" onChange={handleChange} required value={network} {...props} />\n <FormHelperText sx={{ color: error ? 'red' : undefined }}>{error ? 'Not a valid url' : 'Enter full url of archivist'}</FormHelperText>\n </FormControl>\n )\n}\n","import {\n Alert, Grid, Typography,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport { axiosJsonConfig } from '@xylabs/sdk-js'\nimport type {\n ApiEnvelope, ModuleQueryResult, Payload,\n} from '@xyo-network/sdk-js'\nimport {\n Account, ArchivistInsertQuerySchema,\n PayloadBuilder, QueryBoundWitnessBuilder,\n} from '@xyo-network/sdk-js'\nimport type { TransactionBoundWitnessFields } from '@xyo-network/xl1-sdk'\nimport { buildTransaction } from '@xyo-network/xl1-sdk'\nimport { Axios } from 'axios'\nimport React, { useState } from 'react'\n\nimport { ChainTransactionBuilder } from './Builder.tsx'\nimport { ChainTransactionNetwork } from './Network.tsx'\n\nconst BETA_PENDING_TRANSACTIONS_ARCHIVIST = 'https://beta.api.chain.xyo.network/8050fee682a2762f504d5449d8269a6f17f0b693'\nconst defaultNetwork = new URL(BETA_PENDING_TRANSACTIONS_ARCHIVIST)\n\nexport const SubmitChainTransaction: React.FC = () => {\n const [network, setNetwork] = useState<URL | undefined>(defaultNetwork)\n const [result, setResult] = useState<ModuleQueryResult>()\n const [error, setError] = useState<Error>()\n\n const onSubmitTx = async (chainTx: Omit<TransactionBoundWitnessFields, 'from'>) => {\n if (network) {\n const randomAccount = await Account.random()\n const [transactionBoundWitness] = await buildTransaction(\n chainTx.chain,\n [],\n [],\n randomAccount,\n chainTx.nbf,\n chainTx.exp,\n )\n\n const insertQuery = new PayloadBuilder({ schema: ArchivistInsertQuerySchema }).build()\n const [queryBoundWitness] = await new QueryBoundWitnessBuilder()\n .payloads([transactionBoundWitness as Payload])\n .query(insertQuery)\n .signer(randomAccount)\n .build()\n\n const response = await new Axios(axiosJsonConfig()).post<ApiEnvelope<ModuleQueryResult>>(\n network.href,\n [queryBoundWitness, [insertQuery, transactionBoundWitness, chainTx]],\n )\n if (response.data.errors.length > 0) {\n setError(new Error(response.data.errors.map(e => e.message).join('\\n')))\n } else {\n setResult(response.data.data)\n }\n }\n }\n\n const onNetworkChange = (url: URL) => {\n setNetwork(url)\n }\n\n return (\n <Grid container>\n <Grid size={{\n xs: 12, sm: 6, md: 4,\n }}\n >\n <FlexGrowCol alignItems=\"start\" gap={2}>\n <ChainTransactionNetwork network={network} onNetworkChange={onNetworkChange} />\n {network ? <ChainTransactionBuilder onSubmitTx={onSubmitTx} /> : null}\n {result?.[2].length === 0 ? <Alert severity=\"success\">Success</Alert> : null}\n\n {error ? <ErrorRender error={error} /> : null}\n {result?.[2] && result?.[2].length > 0 ? <ErrorRender error={new Error('Failed insert...see result below')} /> : null}\n\n {result\n ? (\n <>\n <Typography variant=\"h6\">Result:</Typography>\n <pre>{JSON.stringify(result, null, 2)}</pre>\n </>\n )\n : null}\n </FlexGrowCol>\n </Grid>\n </Grid>\n )\n}\n","import CompareArrowsIcon from '@mui/icons-material/CompareArrows'\nimport type { ChipProps } from '@mui/material'\nimport { Chip, Icon } from '@mui/material'\nimport type { Hash } from '@xylabs/sdk-js'\nimport React, { useMemo } from 'react'\n\nexport interface TransactionCountChipProps extends ChipProps {\n transactions?: Hash[]\n}\n\nexport const TransactionCountChip: React.FC<TransactionCountChipProps> = ({\n transactions, sx, ...props\n}) => {\n const label = useMemo(() => {\n if (!transactions) return '0'\n return transactions?.length > 10 ? '+10' : transactions.length\n }, [transactions])\n\n return (\n <Chip\n avatar={(\n <Icon>\n <CompareArrowsIcon />\n </Icon>\n )}\n label={label}\n title={transactions ? `Block contains ${transactions.length} transactions` : undefined}\n sx={{\n display: 'inline-flex', alignItems: 'center', justifyContent: 'center', ...sx,\n }}\n {...props}\n />\n )\n}\n","import { ContentCopy as ContentCopyIcon, Paid } from '@mui/icons-material'\nimport {\n Alert, AlertTitle, Collapse, Snackbar, Typography,\n} from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport {\n FlexGrowCol, FlexGrowRow, FlexRow,\n} from '@xylabs/react-flexbox'\nimport type { QuickTipButtonProps } from '@xylabs/react-quick-tip-button'\nimport { QuickTipButton } from '@xylabs/react-quick-tip-button'\nimport { type Hash, isDefined } from '@xylabs/sdk-js'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\nimport React, { Fragment, useState } from 'react'\n\nimport { useTxsFromBlock } from '../../hooks/index.ts'\n\nexport interface TransactionsQuickTipButtonQuickTipButtonProps extends QuickTipButtonProps {\n block?: HydratedBlockWithHashMeta\n}\n\nexport const TransactionsQuickTipButton: React.FC<TransactionsQuickTipButtonQuickTipButtonProps> = ({ block, ...props }) => {\n const [transactions, transactionsError] = useTxsFromBlock(block)\n\n const [copied, setCopied] = useState(false)\n\n const [closeDialog, setCloseDialog] = useState(false)\n const open = isDefined(transactionsError)\n\n // if the error changes, reopen the dialog\n const [previousTransactionError, setPreviousTransactionError] = useState<Error | undefined>(transactionsError)\n if (isDefined(transactionsError) && transactionsError !== previousTransactionError) {\n setPreviousTransactionError(transactionsError)\n setCloseDialog(false)\n }\n\n const onCopy = async (transactionHash: Hash) => {\n await navigator.clipboard.writeText(transactionHash)\n setCopied(true)\n setTimeout(() => {\n setCopied(false)\n }, 5000)\n }\n\n return (\n <>\n <QuickTipButton\n Icon={Paid}\n disabled={transactions?.length === 0}\n hoverText={`Transaction Count: ${transactions?.length ?? 0}`}\n disableDialog={transactions?.length === 0}\n dialogProps={{ fullWidth: true, maxWidth: 'md' }}\n {...props}\n >\n {transactions?.length === 0\n ? null\n : (\n <FlexGrowCol gap={1} alignItems=\"stretch\">\n {transactions?.map(([_transaction, hash]) => (\n <Fragment key={hash}>\n <FlexGrowRow gap={2} justifyContent=\"start\">\n <ContentCopyIcon sx={{ cursor: 'pointer' }} onClick={() => void onCopy(hash)} />\n <Typography sx={{\n overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap',\n }}\n >\n {hash}\n </Typography>\n </FlexGrowRow>\n <FlexRow>\n <Collapse in={copied} unmountOnExit>\n <Alert>\n <AlertTitle>Previous hash copied to clipboard</AlertTitle>\n </Alert>\n </Collapse>\n </FlexRow>\n </Fragment>\n ))}\n </FlexGrowCol>\n )}\n </QuickTipButton>\n <Snackbar open={open && closeDialog === false} onClose={() => setCloseDialog(true)}>\n <ErrorRender error={transactionsError} scope=\"TransactionsQuickTipButton\" />\n </Snackbar>\n </>\n )\n}\n","import type { UsePromiseState } from '@xylabs/react-promise'\nimport { usePromise } from '@xylabs/react-promise'\nimport { type Hash, isHash } from '@xylabs/sdk-js'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type {\n Payload, ReadArchivist, WithHashMeta, WithStorageMeta,\n} from '@xyo-network/sdk-js'\nimport { BoundWitnessBuilder } from '@xyo-network/sdk-js'\nimport type {\n BlockBoundWitness, ChainId, Config, PayloadMapRead,\n} from '@xyo-network/xl1-sdk'\nimport { ConfigZod, isBlockBoundWitness } from '@xyo-network/xl1-sdk'\n\nimport type { BlockChainIterator } from '../../types/index.ts'\n\nexport const resolveDefinedHead = async (head: Hash, chainArchivist: ReadArchivist) => {\n // get the head from the chain archivist\n const [headPayload] = await chainArchivist.get([head])\n // if the head is undefined, we need to create a new one\n if (headPayload === undefined) {\n const [currentHead] = await new BoundWitnessBuilder<BlockBoundWitness>().build()\n return currentHead\n } else {\n // if the head is a block bound witness, we can use it\n return assertEx(isBlockBoundWitness(headPayload)\n ? headPayload\n : undefined, () => `Expected a block bound witness: ${JSON.stringify(headPayload)}`)\n }\n}\n\nexport const useChainIteratorParams = ({\n chainMap, chainId, head, name,\n}: BlockChainIterator): [{\n chainId: ChainId\n chainMap: PayloadMapRead<WithStorageMeta<Payload>>\n config: Config\n head: WithHashMeta<BlockBoundWitness>\n name: string\n} | undefined, Error | undefined, UsePromiseState | undefined] => {\n return usePromise(async () => {\n if (isDefined(chainMap) && isDefined(chainId) && isHash(head)) {\n const result = await chainMap.get(head)\n const foundResult = assertEx(result, () => `Head not found: ${head}`)\n const resolvedHead = assertEx(\n isBlockBoundWitness(foundResult) ? foundResult : undefined,\n () => `Head is not a boundwitness: ${JSON.stringify(foundResult)}`,\n )\n const config = ConfigZod.parse({})\n config.chain.id = chainId\n return {\n chainMap, chainId, config, head: resolvedHead, name,\n }\n }\n }, [chainMap, chainId, head])\n}\n","import type { BaseContext } from '@xyo-network/xl1-sdk'\nimport { useState } from 'react'\n\nexport const useBaseContext = (): BaseContext => {\n const [context] = useState<BaseContext>({ caches: {}, singletons: {} })\n // TODO: Update to use actual rect context when available\n return context\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\n\nimport { txsFromBlock } from '../helpers/index.ts'\n\nexport const useTxsFromBlock = (block?: HydratedBlockWithHashMeta) => {\n return usePromise(async () => {\n if (block) {\n return await txsFromBlock(block)\n }\n }, [block])\n}\n","import type { Hash } from '@xylabs/sdk-js'\nimport { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport { PayloadBuilder } from '@xyo-network/sdk-js'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\n\nexport const txsFromBlock = async (block: HydratedBlockWithHashMeta): Promise<[Payload, Hash][]> => {\n const wrapper = await HydratedBlockWrapper.parse(block)\n const txs = wrapper.transactions\n const txPayloads = txs.map(tx => tx.boundWitness)\n return await PayloadBuilder.hashPairs(txPayloads)\n}\n","import { useRef, useState } from 'react'\n\nexport const useAnchorElement = () => {\n const [anchorEl, setAnchorEl] = useState<null | HTMLElement>(null)\n const anchorRef = useRef<HTMLButtonElement>(null)\n const open = Boolean(anchorEl)\n\n const handleClick = (event: React.MouseEvent<HTMLElement>) => {\n setAnchorEl(event.currentTarget)\n }\n\n const handleClose = () => {\n setAnchorEl(null)\n }\n\n return {\n anchorEl, anchorRef, open, handleClick, handleClose,\n }\n}\n","import { useEvent } from '@xyo-network/react-event'\n\nexport type BlockHeaderEventNouns = 'transaction-count' | 'block-hash' | 'block-number' | 'block-producer' | 'block-verification' | 'payload-counts'\n\n// Extracting the type so compilers can easily strip it off vs inlining it withing the hook\n// which causes compilation warnings.\ntype HookArgs<TElement extends HTMLElement> = Parameters<typeof useEvent<TElement, BlockHeaderEventNouns>>\n\nexport const useBlockHeadingEvents = <TElement extends HTMLElement>(...args: HookArgs<TElement>) => {\n return useEvent<TElement, BlockHeaderEventNouns>(...args)\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nexport const useBlockProducer = (block?: HydratedBlock) => {\n return useMemo(() => {\n if (block) {\n const producer = block[0].addresses[0]\n return producer\n }\n }, [block])\n}\n","import type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\nimport { useMemo } from 'react'\n\nimport { payloadCountsFromBlock } from '../helpers/index.ts'\n\nexport const usePayloadCountsFromBlock = (block?: HydratedBlockWithHashMeta): [number | undefined, number | undefined, Error | undefined] => {\n return useMemo(() => {\n if (block) {\n return [...payloadCountsFromBlock(block), undefined]\n }\n return [undefined, undefined, undefined]\n }, [block])\n}\n","import type { BlockBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const blockProducer = (block: BlockBoundWitness) => {\n return block.addresses[0]\n}\n","import type { BaseContext } from '@xyo-network/xl1-sdk'\nimport type { ComponentType } from 'react'\nimport React from 'react'\n\nimport { txsFromBlock } from '../../../helpers/index.ts'\nimport type {\n BlockChainRenderComponent,\n BlockComponentProps, BlockComponentWithTxsProps,\n} from '../../../types/index.ts'\n\nexport const buildBlockChainRenderComponent = async (\n context: BaseContext,\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n blockComponentProps: BlockComponentProps,\n) => {\n const { block, ...remainingProps } = blockComponentProps\n const blockTxs = await txsFromBlock(block)\n const txHashes = blockTxs.map(([_, hash]) => hash)\n\n const item: BlockChainRenderComponent = {\n child: (\n <BlockComponent\n block={block}\n transactions={txHashes}\n {...remainingProps}\n />\n ),\n key: block[0].block.toString(),\n block,\n }\n return item\n}\n","import { BoundWitnessSchema } from '@xyo-network/boundwitness-model'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-sdk'\nimport { isTransactionBoundWitness } from '@xyo-network/xl1-sdk'\n\nexport const payloadCountsFromBlock = ([block, payloads]: HydratedBlockWithHashMeta): [number, number] => {\n const publicPayloads = block.payload_schemas.filter(schema => schema !== BoundWitnessSchema)\n const transactionHashes = payloads.filter(payload => isTransactionBoundWitness(payload)).flatMap(payload => payload.payload_hashes)\n const privateHashes = transactionHashes.filter(hash => !payloads.some(payload => payload._hash === hash))\n return [publicPayloads.length, privateHashes.length]\n}\n","import { Divider, Stack } from '@mui/material'\nimport React from 'react'\n\nexport const LinkedDivider: React.FC = () => {\n return (\n <>\n {/* An element to house the height of the divider...really just here to help with calculating\n the height for animation purposes and allowing for a dynamic divider height */}\n <Stack\n className=\"divider-spacer\"\n justifyContent=\"end\"\n sx={{\n width: '50%', height: 24, justifyContent: 'end',\n }}\n >\n <Divider\n className=\"divider\"\n orientation=\"vertical\"\n flexItem\n sx={{\n borderRightWidth: 2, height: 24, transition: 'height 1s',\n }}\n />\n </Stack>\n </>\n )\n}\n","import { MoreVert } from '@mui/icons-material'\nimport { IconButton, Menu } from '@mui/material'\nimport { BWJsonMenuItem, BWPreviousHashMenuItem } from '@xyo-network/react-boundwitness-plugin'\nimport type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { useAnchorElement } from '../hooks/index.ts'\n\nexport interface BlockExpandedMenuProps {\n block?: HydratedBlock\n}\n\nexport const BlockMenuExpanded: React.FC<BlockExpandedMenuProps> = ({ block }) => {\n const {\n anchorEl, anchorRef, open, handleClick, handleClose,\n } = useAnchorElement()\n\n return (\n <>\n <IconButton ref={anchorRef} size=\"small\" onClick={handleClick}>\n <MoreVert fontSize=\"inherit\" />\n </IconButton>\n <Menu\n open={open}\n anchorEl={anchorEl}\n anchorOrigin={{ horizontal: 'left', vertical: 'bottom' }}\n onClose={handleClose}\n >\n <BWPreviousHashMenuItem boundwitness={block?.[0]} dense onDialogClose={handleClose} />\n <BWJsonMenuItem boundwitness={block?.[0]} dense onDialogClose={handleClose} />\n </Menu>\n </>\n )\n}\n","import type { ChipProps } from '@mui/material'\nimport { Chip } from '@mui/material'\nimport {\n EthAddressWrapper, isString, isUndefined, toAddress,\n} from '@xylabs/sdk-js'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport React, { useMemo } from 'react'\n\nimport { ChipSkeleton } from './ChipSkeleton.tsx'\n\nconst formatProducerAddress = (address?: string): string | undefined => {\n if (isUndefined(address) || !isString(address)) return undefined\n const formattedAddress = toAddress(address)\n return EthAddressWrapper.parse(formattedAddress)?.toShortString(4)\n}\n\nexport interface BlockProducerChipProps extends ChipProps {\n block?: HydratedBlock\n}\nexport const BlockProducerChip: React.FC<BlockProducerChipProps> = ({ block, ...props }) => {\n const blockProducer = block?.[0].addresses[0]\n\n return <BlockAddressChip address={blockProducer} toolTipTitle={`Block producer: ${blockProducer}`} {...props} />\n}\n\nexport const BlockAddressChip: React.FC<BlockProducerChipProps & { address?: string; toolTipTitle?: string }> = ({\n address, sx, toolTipTitle, ...props\n}) => {\n const shortedBlockProducer = address === undefined ? null : formatProducerAddress(address)\n\n const avatar = useMemo(() => address === '' ? undefined : <BlockiesAvatar blockiesOptions={{ seed: address }} />, [address])\n\n return (\n <Chip\n avatar={avatar}\n label={shortedBlockProducer ?? <ChipSkeleton width={115} />}\n title={toolTipTitle}\n sx={{\n fontFamily: 'monospace', cursor: 'pointer', ...sx,\n }}\n {...props}\n />\n )\n}\n","import type { SkeletonProps } from '@mui/material'\nimport { Skeleton } from '@mui/material'\nimport React from 'react'\n\nexport const ChipSkeleton: React.FC<SkeletonProps> = (props) => {\n return <Skeleton width={100} {...props} />\n}\n","import {\n Link, TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport React from 'react'\n\nimport type { BlockHeaderEventNouns } from '../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockNumberTableCellProps extends BlockTableCellProps {\n eventNoun?: BlockHeaderEventNouns\n}\n\nexport const BlockNumberTableCell: React.FC<BlockNumberTableCellProps> = ({\n block, eventNoun = 'block-number', linked, ...props\n}) => {\n const blockNumber = block?.[0].block\n\n return <BlockNumberTableCellInner blockNumber={blockNumber} eventNoun={eventNoun} linked={linked} {...props} />\n}\n\nexport const BlockNumberTableCellInner: React.FC<BlockNumberTableCellProps & { blockNumber?: number; linked?: boolean }> = ({\n blockNumber, eventNoun = 'block-number', linked, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem(eventNoun, blockNumber?.toLocaleString())\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Number: ${blockNumber}`}>\n <Typography component=\"span\" variant=\"body1\">\n {linked ? <Link onClick={handleClick} sx={{ cursor: 'pointer' }}>{blockNumber}</Link> : blockNumber}\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import { useEvent } from '@xyo-network/react-event'\nimport type { Ref } from 'react'\n\nimport type { BlockHeaderEventNouns } from '../../../hooks/index.ts'\n\nexport const useLinkedBlockItem = (noun?: BlockHeaderEventNouns, data?: string | object): [Ref<HTMLElement | null>, (event: React.MouseEvent) => void] => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BlockHeaderEventNouns, string, string | object>()\n\n const handleClick = (event: React.MouseEvent) => {\n event.preventDefault()\n event.stopPropagation()\n if (noun === undefined) {\n console.warn('useLinkedBlockItem: noun is required')\n return\n }\n const selection = globalThis.getSelection()\n const isTextSelected = selection && selection.toString().length > 0\n\n if (!isTextSelected) {\n dispatch(noun, 'click', data, event.nativeEvent)\n }\n }\n\n return [ref, handleClick]\n}\n","import {\n Skeleton, TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { dateFormat, timeAgo } from './helpers/index.ts'\nimport { type BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockEpochTableCellProps extends BlockTableCellProps {}\n\nexport const BlockEpochTableCell: React.FC<BlockEpochTableCellProps> = ({\n block, linked, ...props\n}) => {\n const epoch = block?.[0]?.$epoch\n\n const dateTime = dateFormat.format(epoch)\n const age = isDefined(epoch) ? timeAgo(epoch) : undefined\n\n return (\n <TableCell {...props}>\n <Tooltip title={`Block Epoch: ${dateTime}`}>\n <Typography component=\"span\" variant=\"body1\">\n {age ?? <Skeleton width={115} /> }\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n\nexport const BlockEpochTableCellInner: React.FC<BlockEpochTableCellProps & { epoch?: number }> = ({\n epoch, linked, ...props\n}) => {\n const dateTime = dateFormat.format(epoch)\n const age = isDefined(epoch) ? timeAgo(epoch) : undefined\n\n return (\n <TableCell {...props}>\n <Tooltip title={`Block Epoch: ${dateTime}`}>\n <Typography component=\"span\" variant=\"body1\">\n {age ?? <Skeleton width={115} /> }\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","export const dateFormat = Intl.DateTimeFormat(globalThis.navigator.language ?? 'en-US', {\n year: 'numeric',\n month: '2-digit',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n})\n\nexport const timeAgo = (epoch: number, locale = navigator.language ?? 'en-US') => {\n const now = Date.now()\n const diffInSeconds = Math.floor((now - epoch) / 1000)\n\n const units: { max: number; name: Intl.RelativeTimeFormatUnit; value: number }[] = [\n {\n max: 60, value: 1, name: 'second',\n },\n {\n max: 3600, value: 60, name: 'minute',\n },\n {\n max: 86_400, value: 3600, name: 'hour',\n },\n {\n max: 604_800, value: 86_400, name: 'day',\n },\n {\n max: 2_620_800, value: 604_800, name: 'week',\n },\n {\n max: 31_449_600, value: 2_620_800, name: 'month',\n },\n {\n max: Infinity, value: 31_449_600, name: 'year',\n },\n ]\n\n for (const unit of units) {\n if (Math.abs(diffInSeconds) < unit.max) {\n const value = Math.round(diffInSeconds / unit.value)\n return new Intl.RelativeTimeFormat(locale, { numeric: 'auto' }).format(-value, unit.name)\n }\n }\n}\n","import {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport { isHash } from '@xylabs/sdk-js'\nimport { usePayloadRootHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport { FeatureNotAvailable } from '../../../FeatureNotAvailable.tsx'\nimport { ChipSkeleton } from '../../ChipSkeleton.tsx'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockHashTableCellProps extends BlockTableCellProps {\n notAvailableDialog?: boolean\n}\n\nexport const BlockHashTableCell: React.FC<BlockHashTableCellProps> = ({\n block, notAvailableDialog, linked, ...props\n}) => {\n const hash = usePayloadRootHash(block?.[0])\n\n const [ref, handleClick] = useLinkedBlockItem('block-hash', hash)\n const [notAvailable, setNotAvailable] = useState(false)\n\n const shortenedHash = isHash(hash) ? `${hash.slice(0, 4)}...${hash.slice(-5, -1)}` : undefined\n\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Hash: ${hash}`}>\n {linked\n ? (\n <Link\n sx={{ cursor: 'pointer' }}\n onClick={linked ? handleClick : () => setNotAvailable(true)}\n >\n {shortenedHash ?? <ChipSkeleton />}\n </Link>\n )\n : <span>{shortenedHash ?? <ChipSkeleton />}</span>}\n </Tooltip>\n {(notAvailableDialog && notAvailable)\n ? <FeatureNotAvailable featureName=\"Block Details\" open={notAvailable} onClick={() => setNotAvailable(false)} />\n : null}\n </TableCell>\n )\n}\n","import {\n Button,\n Dialog, DialogActions, DialogContent, type DialogProps, DialogTitle,\n} from '@mui/material'\nimport type { FC } from 'react'\nimport React from 'react'\n\nexport const FeatureNotAvailable: FC<DialogProps & { featureName?: string }> = ({ featureName = 'Feature', ...props }) => (\n <Dialog {...props}>\n <DialogTitle>\n {`${featureName} Not Available`}\n </DialogTitle>\n <DialogContent>This feature is not currently available. Either you do not have access to it or it is currently undergoing maintenance.</DialogContent>\n <DialogActions>\n <Button onClick={e => props.onClose?.(e, 'backdropClick')}>\n Close\n </Button>\n </DialogActions>\n </Dialog>\n)\n","import { DataObject } from '@mui/icons-material'\nimport {\n Button,\n Dialog, DialogActions, DialogContent, DialogTitle, IconButton, TableCell,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { ellipsize, isHash } from '@xylabs/sdk-js'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport { usePayloadRootHash } from '@xyo-network/react-shared'\nimport React, { useState } from 'react'\n\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockJsonViewTableCellProps extends BlockTableCellProps {}\n\nexport const BlockJsonViewTableCell: React.FC<BlockJsonViewTableCellProps> = ({ block, ...props }) => {\n const [open, setOpen] = useState(false)\n const onClose = () => setOpen(false)\n\n const hash = usePayloadRootHash(block?.[0])\n const title = isHash(hash) ? `JSON for ${ellipsize(hash, 5)}` : 'JSON'\n\n return (\n <TableCell {...props}>\n <FlexRow onClick={e => e.stopPropagation()} sx={{ width: '100%' }}>\n <IconButton onClick={() => setOpen(true)}>\n <DataObject />\n </IconButton>\n <Dialog open={open} onClose={onClose}>\n <DialogTitle>{title}</DialogTitle>\n <DialogContent>\n <JsonViewerEx value={block} />\n </DialogContent>\n <DialogActions sx={{\n display: 'flex', flexDirection: 'row', justifyContent: 'end',\n }}\n >\n <Button variant=\"contained\" onClick={onClose}>Close</Button>\n </DialogActions>\n </Dialog>\n </FlexRow>\n </TableCell>\n )\n}\n","import { Error } from '@mui/icons-material'\nimport {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport type { Hash } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { usePayloadCountsFromBlock } from '../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockPayloadCountsTableCellProps extends BlockTableCellProps {}\n\nexport interface BlockPayloadCountsEventData {\n block: Hash\n privatePayloads: number\n publicPayloads: number\n}\n\nexport const BlockPayloadCountsTableCell: React.FC<BlockPayloadCountsTableCellProps> = ({\n block, linked, ...props\n}) => {\n const [publicPayloads, privatePayloads, error] = usePayloadCountsFromBlock(block)\n const data: BlockPayloadCountsEventData | undefined = (block && privatePayloads !== undefined && publicPayloads !== undefined)\n ? {\n publicPayloads,\n privatePayloads,\n block: block[0]._hash,\n }\n : undefined\n const payloadCount = (publicPayloads ?? 0) + (privatePayloads ?? 0)\n const [ref, handleClick] = useLinkedBlockItem('payload-counts', data)\n\n return (\n <TableCell ref={ref} {...props}>\n <span>\n {error\n ? (\n <Tooltip title={error.message}>\n <Error color=\"error\" />\n </Tooltip>\n )\n : null}\n {linked\n ? (\n <Tooltip title={`Public Payloads: ${publicPayloads ?? '--'} Private Payloads: ${privatePayloads ?? '--'}`}>\n <Link\n onClick={handleClick}\n sx={{ cursor: 'pointer' }}\n >\n {payloadCount}\n </Link>\n </Tooltip>\n )\n : (\n <Tooltip title={`Public Payloads: ${publicPayloads ?? '--'} Private Payloads: ${privatePayloads ?? '--'}`}>\n <span>\n {payloadCount}\n </span>\n </Tooltip>\n )}\n </span>\n </TableCell>\n )\n}\n","import { TableCell, Tooltip } from '@mui/material'\nimport type { MouseEvent } from 'react'\nimport React, { useState } from 'react'\n\nimport { FeatureNotAvailable } from '../../../FeatureNotAvailable.tsx'\nimport { useBlockProducer } from '../../hooks/index.ts'\nimport type { BlockProducerChipProps } from '../../ProducerChip.tsx'\nimport { BlockAddressChip } from '../../ProducerChip.tsx'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockProducerTableCell extends BlockTableCellProps {\n notAvailableDialog?: boolean\n producerChipProps?: BlockProducerChipProps\n}\n\nexport const BlockProducerTableCell: React.FC<BlockProducerTableCell> = ({\n block, linked, notAvailableDialog, producerChipProps, ...props\n}) => {\n const [ref, handleClick] = useLinkedBlockItem('block-producer', JSON.stringify(block))\n const producer = useBlockProducer(block)\n\n return (\n <BlockProducerTableCellInner\n address={producer}\n handleClick={handleClick}\n linked={linked}\n notAvailableDialog={notAvailableDialog}\n producerChipProps={producerChipProps}\n {...props}\n ref={ref}\n />\n )\n}\n\nexport interface BlockProducerTableCellInner extends BlockTableCellProps {\n address?: string\n handleClick?: (event: MouseEvent) => void\n notAvailableDialog?: boolean\n producerChipProps?: BlockProducerChipProps\n}\n\nexport const BlockProducerTableCellInner: React.FC<BlockProducerTableCell & BlockProducerTableCellInner> = ({\n address, handleClick, linked, notAvailableDialog, producerChipProps, ...props\n}) => {\n const [notAvailable, setNotAvailable] = useState(false)\n return (\n <TableCell {...props}>\n <Tooltip title={`Block Producer: ${address}`}>\n <BlockAddressChip\n sx={{ cursor: 'pointer' }}\n onClick={linked ? handleClick : () => setNotAvailable(true)}\n address={address}\n toolTipTitle={`Block Producer: ${address}`}\n {...producerChipProps}\n />\n </Tooltip>\n {(notAvailableDialog && notAvailable)\n ? <FeatureNotAvailable featureName=\"Producer Details\" open={notAvailable} onClick={() => setNotAvailable(false)} />\n : null}\n </TableCell>\n )\n}\n","import { Error } from '@mui/icons-material'\nimport {\n Link, TableCell, Tooltip,\n} from '@mui/material'\nimport type { Hash } from '@xylabs/sdk-js'\nimport React, { useMemo } from 'react'\n\nimport { useTxsFromBlock } from '../../../../hooks/index.ts'\nimport { useLinkedBlockItem } from './hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockTransactionCountTableCellProps extends BlockTableCellProps {}\n\nexport interface BlockTransactionCountEventData {\n block: Hash\n transactions: number\n}\n\nexport const BlockTransactionCountTableCell: React.FC<BlockTransactionCountTableCellProps> = ({\n block, linked, ...props\n}) => {\n const [transactions, error] = useTxsFromBlock(block)\n const txHashes = useMemo(() => transactions?.map(([,hash]) => hash), [transactions])\n\n const data: BlockTransactionCountEventData | undefined = (block && transactions !== undefined)\n ? {\n transactions: transactions.length,\n block: block[0]._hash,\n }\n : undefined\n\n const [ref, handleClick] = useLinkedBlockItem('transaction-count', data)\n\n return (\n <TableCell ref={ref} {...props}>\n <span>\n {error\n ? (\n <Tooltip title={error.message}>\n <Error color=\"error\" />\n </Tooltip>\n )\n : null}\n {linked\n ? (\n <Link onClick={handleClick} sx={{ cursor: 'pointer' }}>\n {txHashes?.length}\n </Link>\n )\n : (\n txHashes?.length\n )}\n </span>\n </TableCell>\n )\n}\n","import { CheckCircleOutlineRounded } from '@mui/icons-material'\nimport { TableCell } from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport { BWVerification } from '@xyo-network/react-boundwitness-plugin'\nimport React from 'react'\n\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockVerificationTableCellProps extends BlockTableCellProps {\n deepValidation?: boolean\n}\n\nexport const BlockVerificationTableCell: React.FC<BlockVerificationTableCellProps> = ({\n block, linked, deepValidation, ...props\n}) => {\n return (\n <TableCell {...props}>\n <FlexRow onClick={e => e.stopPropagation()} sx={{ width: '100%' }}>\n {deepValidation\n ? <BWVerification iconColors boundwitness={block?.[0]} />\n : <CheckCircleOutlineRounded color=\"success\" />}\n </FlexRow>\n </TableCell>\n )\n}\n","import { TableBody } from '@mui/material'\nimport type { TableExProps } from '@xyo-network/react-table'\nimport { TableEx } from '@xyo-network/react-table'\nimport React from 'react'\n\nimport { BlockchainTableHead } from './head/index.ts'\n\nexport const BlockchainTableEx = ({\n ref, children, ...props\n}: TableExProps) => {\n return (\n <TableEx ref={ref} {...props}>\n <BlockchainTableHead />\n <TableBody>\n {children}\n </TableBody>\n </TableEx>\n )\n}\n\nBlockchainTableEx.displayName = 'BlockchainTableEx'\n","import { InfoOutline } from '@mui/icons-material'\nimport type { TableCellProps } from '@mui/material'\nimport {\n TableCell, TableHead, TableRow,\n Tooltip,\n Typography,\n} from '@mui/material'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nconst ToolTipTableCell: React.FC<TableCellProps> = ({\n children, align, title, ...props\n}) => {\n return (\n <TableCell title={title} {...props}>\n <FlexRow justifyContent={align}>\n <Typography variant=\"body2\">{children}</Typography>\n &nbsp;\n <Tooltip title={title}>\n <InfoOutline fontSize=\"small\" />\n </Tooltip>\n </FlexRow>\n </TableCell>\n )\n}\n\nexport const BlockchainTableHead: React.FC = () => {\n return (\n <TableHead>\n <TableRow>\n <ToolTipTableCell align=\"left\" title=\"The block number that is included in the block\">Block</ToolTipTableCell>\n <ToolTipTableCell title=\"The hash of the block\" sx={{ width: '20%' }}>Hash</ToolTipTableCell>\n <ToolTipTableCell title=\"The epoch of the block\" sx={{ width: '20%' }}>Epoch</ToolTipTableCell>\n <ToolTipTableCell\n align=\"left\"\n title=\"The address of the block producer that produced the block\"\n sx={{ width: '20%' }}\n >\n Block Producer\n </ToolTipTableCell>\n <ToolTipTableCell align=\"left\" title=\"Count of transactions that are included in the block\">Transactions</ToolTipTableCell>\n <ToolTipTableCell align=\"left\" title=\"Count of public and private payload counts for the block\">Payloads</ToolTipTableCell>\n <ToolTipTableCell align=\"center\" title=\"The result of the local validation check for the block\">Valid</ToolTipTableCell>\n <ToolTipTableCell align=\"center\" title=\"Link to display the raw JSON of the block\">JSON</ToolTipTableCell>\n </TableRow>\n </TableHead>\n )\n}\n","import type { TableRowProps } from '@mui/material'\nimport { usePayloadRootHash } from '@xyo-network/react-shared'\nimport type { Ref } from 'react'\nimport React, { useMemo } from 'react'\n\nimport type { BlockComponentProps } from '../../../../types/index.ts'\nimport { StyledLinkableTableRow } from '../../../table/index.ts'\nimport { useLinkedBlockItem } from '../cell/hooks/index.ts'\nimport {\n BlockEpochTableCell,\n BlockHashTableCell, BlockJsonViewTableCell, BlockNumberTableCell, BlockPayloadCountsTableCell,\n BlockProducerTableCell,\n BlockTransactionCountTableCell, BlockVerificationTableCell,\n} from '../cell/index.ts'\n\nexport interface BlockChainTableRowProps extends BlockComponentProps, TableRowProps {\n deepValidation?: boolean\n linked?: boolean\n}\n\nexport const BlockChainTableRow: React.FC<BlockChainTableRowProps> = ({\n block, deepValidation, defaultExpanded, linked, ...props\n}) => {\n const linkedTableCellProps = useMemo(() => ({ block, linked }), [block, linked])\n const defaultTableCellProps = useMemo(() => ({ block }), [block])\n const hash = usePayloadRootHash(block?.[0])\n const [ref, handleClick] = useLinkedBlockItem('block-hash', hash)\n\n return (\n <StyledLinkableTableRow\n onClick={linked ? handleClick : undefined}\n ref={ref as Ref<HTMLTableRowElement> | undefined}\n linked={linked}\n {...props}\n >\n <BlockNumberTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockHashTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockEpochTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockProducerTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockTransactionCountTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockPayloadCountsTableCell align=\"left\" {...linkedTableCellProps} />\n <BlockVerificationTableCell deepValidation={deepValidation} {...defaultTableCellProps} />\n <BlockJsonViewTableCell {...defaultTableCellProps} />\n </StyledLinkableTableRow>\n )\n}\n","import type { StyledComponent } from '@emotion/styled'\nimport type { TableRowProps, Theme } from '@mui/material'\nimport { styled, TableRow } from '@mui/material'\nimport { alphaCss } from '@xylabs/react-theme'\n\nexport const StyledLinkableTableRow: StyledComponent<TableRowProps & { linked?: boolean; theme?: Theme }> = styled(TableRow, { shouldForwardProp: prop => prop !== 'linked' })<\n TableRowProps & { linked?: boolean }\n>(({ theme, linked }) => ({\n 'cursor': linked ? 'pointer' : 'default',\n 'overflowY': 'scroll',\n '&:hover': { backgroundColor: alphaCss(theme.vars.palette.secondary.light, 0.15) },\n}\n))\n","import type { TableCellProps } from '@mui/material'\nimport { TableCell, Tooltip } from '@mui/material'\nimport React from 'react'\n\nimport { BlockAddressChip } from '../../../block/index.ts'\nimport { useLinkedBalanceHistoryItem } from '../hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface AddressTableCellProps extends TableCellProps {\n address?: string\n eventNoun?: BalanceHistoryEventNouns\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const AddressTableCell: React.FC<AddressTableCellProps> = ({\n address, eventNoun, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n return (\n <TableCell ref={ref} sx={{ cursor: linked ? 'pointer' : 'default', ...sx }} {...props}>\n <Tooltip title={toolTipTitle}>\n <BlockAddressChip address={address} onClick={linked ? e => handleClick(e, eventNoun, address) : undefined} />\n </Tooltip>\n </TableCell>\n )\n}\n","import { useEvent } from '@xyo-network/react-event'\nimport type React from 'react'\nimport type { Ref } from 'react'\n\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport const useLinkedBalanceHistoryItem = (): [\n Ref<HTMLElement | null>,\n (event: React.MouseEvent, noun?: BalanceHistoryEventNouns, data?: string | number) => void,\n] => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BalanceHistoryEventNouns, string, string | number>()\n\n const handleClick = (event: React.MouseEvent, noun?: BalanceHistoryEventNouns, data?: string | number) => {\n event.preventDefault()\n event.stopPropagation()\n if (noun === undefined) {\n console.warn('useLinkedBalanceHistoryItem: noun is required')\n return\n }\n const selection = globalThis.getSelection()\n const isTextSelected = selection && selection.toString().length > 0\n\n if (!isTextSelected) {\n dispatch(noun, 'click', data, event.nativeEvent)\n }\n }\n\n return [ref, handleClick]\n}\n","import {\n Link,\n TableCell, Tooltip,\n Typography,\n} from '@mui/material'\nimport type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { useLinkedBalanceHistoryItem } from '../hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface BalanceHistoryBlockNumberTableCellProps {\n block?: HydratedBlock\n eventNoun?: BalanceHistoryEventNouns\n linked?: boolean\n}\n\nexport const BalanceHistoryBlockNumberTableCell: React.FC<BalanceHistoryBlockNumberTableCellProps> = ({\n block, eventNoun = 'block-number', linked, ...props\n}) => {\n const blockNumber = block?.[0].block\n\n return <BalanceHistoryBlockNumberTableCellInner blockNumber={blockNumber} eventNoun={eventNoun} linked={linked} {...props} />\n}\n\nexport const BalanceHistoryBlockNumberTableCellInner: React.FC<BalanceHistoryBlockNumberTableCellProps & { blockNumber?: number; linked?: boolean }> = ({\n blockNumber, eventNoun = 'block-number', linked, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Block Number: ${blockNumber}`}>\n <Typography component=\"span\" variant=\"body1\">\n {linked ? <Link onClick={e => handleClick(e, eventNoun, blockNumber?.toString() ?? '')} sx={{ cursor: 'pointer' }}>{blockNumber}</Link> : blockNumber}\n </Typography>\n </Tooltip>\n </TableCell>\n )\n}\n","import type { TableCellProps } from '@mui/material'\nimport {\n Link, TableCell, Tooltip,\n Typography,\n} from '@mui/material'\nimport {\n ellipsize, type Hash, isDefined,\n} from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport { useLinkedBalanceHistoryItem } from '../hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface HashTableCellProps extends TableCellProps {\n eventData?: string\n eventNoun?: BalanceHistoryEventNouns\n hash?: Hash\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const HashTableCell: React.FC<HashTableCellProps> = ({\n eventData, eventNoun = 'tx-hash', hash, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n const shortenedHash = isDefined(hash) ? ellipsize(hash as string, 6) : 'N/A'\n return (\n <TableCell ref={ref} {...props}>\n {hash\n ? (\n <Tooltip title={toolTipTitle}>\n <Typography component=\"span\" variant=\"body1\">\n {linked\n ? (\n <Link onClick={e => handleClick(e, eventNoun, eventData)} sx={{ cursor: 'pointer' }}>\n {shortenedHash}\n </Link>\n )\n : shortenedHash}\n </Typography>\n </Tooltip>\n )\n : 'N/A'}\n </TableCell>\n )\n}\n","import {\n Link,\n TableCell, type TableCellProps, Tooltip,\n} from '@mui/material'\nimport { isDefined, toHex } from '@xylabs/sdk-js'\nimport type { BalanceTransactionType } from '@xyo-network/react-chain-provider'\nimport { XL1Amount } from '@xyo-network/xl1-sdk'\nimport React from 'react'\n\nimport { useLinkedBalanceHistoryItem } from './hooks/index.ts'\nimport type { BalanceHistoryEventNouns } from './types/index.ts'\n\nexport interface RawAmountTableCellProps extends TableCellProps {\n amount?: bigint\n eventNoun?: BalanceHistoryEventNouns\n linked?: boolean\n type?: BalanceTransactionType\n}\n\nexport const RawAmountTableCell: React.FC<RawAmountTableCellProps> = ({\n amount, eventNoun = 'amount', linked, sx, type, ...props\n}) => {\n const [ref, handleClick] = useLinkedBalanceHistoryItem()\n\n const formatAmount = (amount?: bigint) => {\n if (!isDefined(amount)) {\n return 'N/A'\n }\n const xl1Amount = new XL1Amount(amount)\n return xl1Amount.toString(undefined, {\n places: 18, maxDecimal: 12, maxCharacters: 12, minDecimals: 1, locale: navigator.language,\n })\n }\n return (\n <TableCell ref={ref} {...props}>\n <Tooltip title={`Raw Amount: ${amount}`}>\n {linked\n ? (\n <Link onClick={e => handleClick(e, eventNoun, isDefined(amount) ? toHex(amount) : '')} sx={{ cursor: 'pointer' }}>\n {type === 'send' ? '-' : ''}\n {formatAmount(amount)}\n </Link>\n )\n : (\n <span>\n {type === 'send' ? '-' : ''}\n {formatAmount(amount)}\n </span>\n )}\n </Tooltip>\n </TableCell>\n )\n}\n","import type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport type { ExtendEventNoun } from '@xyo-network/react-event'\n\nexport type BalanceHistoryEventNouns = ExtendEventNoun<'from-address' | 'to-address' | 'amount' | 'block-number' | 'tx-hash' | 'transfer-hash' | 'tx-hash|transfer-hash' | 'block-hash|transfer-hash'>\n\nexport type TableHeadingLabels = 'Tx Hash' | 'BlockNumber' | 'Timestamp' | 'From' | 'To' | 'Amount' | 'Debug' | 'TransferHash'\nexport type TableHeadings = { [key in keyof AccountBalanceHistoryItemFormatted]: TableHeadingLabels }\n\nexport const TableHeadingLabels: TableHeadingLabels[] = [\n 'Tx Hash',\n 'BlockNumber',\n 'Timestamp',\n 'From',\n 'To',\n 'Amount',\n 'TransferHash',\n 'Debug',\n] as const\n","import type { Address } from '@xylabs/sdk-js'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { AccountBalanceHistoryItemFormatted } from '@xyo-network/react-chain-provider'\nimport { useAccountBalanceHistory } from '@xyo-network/react-chain-provider'\nimport type { XL1BlockRange, XyoViewer } from '@xyo-network/xl1-sdk'\nimport { useCallback, useState } from 'react'\n\nexport const usePagedAccountBalanceHistory = (address?: Address, viewer?: XyoViewer, maxPage = 1) => {\n const [updatedBlockRange, setUpdatedBlockRange] = useState<XL1BlockRange>()\n const [pagedHistory, setPagedHistory] = useState<AccountBalanceHistoryItemFormatted[]>()\n const [results, error, loading] = useAccountBalanceHistory(address, viewer, maxPage, updatedBlockRange)\n\n const { history, truncated } = results || {}\n const [previousHistory, setPreviousHistory] = useState(history)\n\n // Reset paged history when address changes\n if (isDefined(history) && history !== previousHistory) {\n setPagedHistory([...pagedHistory ?? [], ...history])\n setPreviousHistory(history)\n }\n\n const lastBlock = isDefined(history) ? history.at(-1)?.blockNumber : undefined\n const historyComplete = (isDefined(history) && history.length === 0) || lastBlock === 0\n\n const updateRange = useCallback(() => {\n if (isDefined(lastBlock) && lastBlock > 0 && truncated) {\n const newEndBlock = lastBlock - 1\n setUpdatedBlockRange([0, newEndBlock] as XL1BlockRange)\n }\n }, [lastBlock, truncated])\n\n return {\n pagedHistory,\n historyComplete,\n updateRange,\n error,\n loading,\n }\n}\n","import {\n Autorenew,\n Pause,\n} from '@mui/icons-material'\nimport {\n Alert,\n AlertTitle,\n Grow,\n Icon, IconButton, Tooltip,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport React, { memo } from 'react'\n\nimport type { PollingState } from '../hooks/index.ts'\nimport { ChainAnalyzerStatsDialogFromContext } from '../stats/index.ts'\nimport { StyledPulseSvgIcon } from './PulseSvgIcon.tsx'\n\nexport interface PollingControlsFlexboxProps extends FlexBoxProps {\n blocksBehind?: number\n pollingState?: PollingState\n setPollingState?: (newState: PollingState) => void\n}\n\nexport const PollingControlsFlexbox: React.FC<PollingControlsFlexboxProps> = ({\n blocksBehind, pollingState, setPollingState,\n}) => {\n const paused = pollingState === 'paused'\n const running = pollingState === 'running'\n\n return (\n <FlexRow justifyContent=\"space-between\" width=\"100%\">\n <FlexRow gap={2}>\n {running\n ? (\n <IconButton onClick={() => setPollingState?.('paused')} title=\"Pause Block Stream\">\n <Pause />\n </IconButton>\n )\n : null}\n {paused\n ? (\n <IconButton onClick={() => setPollingState?.('running')} title=\"Re-Sync Block Stream\">\n <Autorenew />\n </IconButton>\n )\n : null}\n <ChainAnalyzerStatsDialogFromContext />\n </FlexRow>\n <FlexRow gap={2}>\n <Grow in={(blocksBehind ?? 0) > 0}>\n <Tooltip title=\"Click to Re-Sync\">\n <Alert\n sx={{\n py: 0, px: 1, cursor: 'pointer',\n }}\n severity=\"warning\"\n onClick={() => setPollingState?.('running')}\n >\n <AlertTitle sx={{ mb: 0 }}>\n Behind:\n {' '}\n {blocksBehind}\n </AlertTitle>\n </Alert>\n </Tooltip>\n </Grow>\n <Icon>\n <StyledPulseSvgIcon className={running ? '' : 'paused'} />\n </Icon>\n </FlexRow>\n </FlexRow>\n )\n}\n\nexport const MemoizedPollingControlsFlexbox = memo(PollingControlsFlexbox)\n","import { QueryStats } from '@mui/icons-material'\nimport type { DialogProps } from '@mui/material'\nimport {\n Dialog, DialogContent,\n DialogTitle, IconButton,\n} from '@mui/material'\nimport React, { useState } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport { BlockProducerStatsFlexbox } from './producer/index.ts'\n\nexport interface ChainAnalyzerStatsDialogProps extends DialogProps {}\n\nexport const ChainAnalyzerStatsDialog: React.FC<ChainAnalyzerStatsDialogProps> = (props) => {\n const { analyzers, statsUpdated } = useChainAnalyzersContext()\n\n return (\n <Dialog {...props}>\n <DialogTitle>Chain Analysis</DialogTitle>\n <DialogContent>\n {statsUpdated > 0\n ? Object.entries(analyzers).map(([id, analyzer]) => (\n <div key={id}>\n {id === 'producers'\n ? (\n <BlockProducerStatsFlexbox payload={analyzer.result()} />\n )\n : null}\n </div>\n ))\n : null}\n </DialogContent>\n </Dialog>\n )\n}\n\nexport const ChainAnalyzerStatsDialogFromContext: React.FC = (props) => {\n const [open, setOpen] = useState(false)\n const handleClose = () => setOpen(false)\n\n return (\n <>\n <IconButton onClick={() => setOpen(true)}>\n <QueryStats />\n </IconButton>\n <ChainAnalyzerStatsDialog onClose={handleClose} open={open} {...props} />\n </>\n )\n}\n","import { Typography } from '@mui/material'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isChainSummaryProducers } from '@xyo-network/chain-analyze'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport React, { useMemo } from 'react'\n\nimport { ChainProducerStatsTable } from './Table.tsx'\n\nexport interface BlockProducerStatsFlexboxProps {\n payload?: Payload\n}\n\nexport const BlockProducerStatsFlexbox: React.FC<BlockProducerStatsFlexboxProps> = ({ payload, ...props }) => {\n const [producer, producerError] = useMemo(() => {\n if (payload) {\n return isChainSummaryProducers(payload) ? [payload] : [undefined, new Error('Payload is not a Chain Producer')]\n } else {\n return []\n }\n }, [payload])\n\n const producersArray = useMemo(() => Object.values(producer?.producers ?? {}), [producer])\n\n return (\n <FlexCol alignItems=\"start\" gap={1} {...props}>\n <ErrorRender error={producerError} scope=\"BlockProducerStatsFlexbox\" />\n <Typography fontSize=\"1rem\">Block Producers</Typography>\n <ChainProducerStatsTable producers={producersArray} />\n </FlexCol>\n )\n}\n","import type { TableProps } from '@mui/material'\nimport {\n Table, TableBody, TableCell, TableHead,\n TableRow,\n useTheme,\n} from '@mui/material'\nimport type { AnalyzedProducer } from '@xyo-network/chain-analyze'\nimport { BlockiesAvatar } from '@xyo-network/react-chain-blockies'\nimport React from 'react'\n\nexport interface ChainProducerStatsTableProps extends TableProps {\n producers?: AnalyzedProducer[]\n}\n\nexport const ChainProducerStatsTable: React.FC<ChainProducerStatsTableProps> = ({ producers, ...props }) => {\n const theme = useTheme()\n return (\n <Table {...props}>\n <TableHead>\n <TableRow>\n <TableCell>Address</TableCell>\n <TableCell>Blocks Produced</TableCell>\n <TableCell>Rewards Earned Produced</TableCell>\n </TableRow>\n </TableHead>\n <TableBody>\n {producers?.map(producer => (\n <TableRow key={producer.address}>\n <TableCell>\n <BlockiesAvatar blockiesOptions={{ seed: producer.address }} sx={{ height: theme.spacing(2.75), width: theme.spacing(2.75) }} />\n </TableCell>\n <TableCell>{producer.blocksProduced.toString()}</TableCell>\n <TableCell>{producer.rewardsEarned.toString()}</TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n )\n}\n","import type { StyledComponent } from '@emotion/styled'\nimport type { SvgIconProps, Theme } from '@mui/material'\nimport {\n createSvgIcon, keyframes, styled,\n} from '@mui/material'\nimport React from 'react'\n\n// Adapted from - https://codepen.io/Taver/pen/PWyEqp\nexport const PulseSvgIcon = createSvgIcon(\n <svg viewBox=\"0 0 80 80\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">\n <g transform=\"translate(34,34)\">\n <circle className=\"core\" cx=\"0\" cy=\"0\" r=\"6\"></circle>\n <circle className=\"radar\" cx=\"0\" cy=\"0\" r=\"6\"></circle>\n </g>\n </svg>,\n 'PulseSvgIcon',\n)\n\nconst pulse1 = keyframes`\n 0% {\n opacity: 0;\n transform: scale(0);\n }\n 30% {\n opacity: 1;\n transform: scale(1.5);\n }\n 60% {\n opacity: 1;\n transform: scale(2);\n }\n 100% {\n opacity: 0;\n transform: scale(2);\n }\n`\n\nconst pulse2 = keyframes`\n 0% {\n transform: scale(1, 1);\n opacity: 0;\n }\n 50% {\n opacity: 1;\n }\n 100% {\n transform: scale(6, 6);\n opacity: 0;\n }\n`\n\nexport const StyledPulseSvgIcon: StyledComponent<SvgIconProps & { theme?: Theme }> = styled(PulseSvgIcon)(({ theme }) => {\n return {\n '& .core': {\n animation: `${pulse1} 1.25s ease-in-out infinite`,\n fill: theme.vars.palette.success.main,\n },\n '&.paused .core': {\n animation: 'none',\n fill: theme.vars.palette.divider,\n transform: 'scale(2)',\n },\n '& .radar': {\n animation: `${pulse2} 1.25s ease-in-out infinite`,\n fill: `color-mix(in srgb, ${theme.vars.palette.success.main}, transparent 50%)`,\n },\n '&.paused .radar': {\n animation: 'none',\n fill: theme.vars.palette.divider,\n transform: 'scale(6)',\n },\n }\n})\n","import type { DialogProps } from '@mui/material'\nimport {\n Button, Dialog, DialogActions, DialogContent,\n} from '@mui/material'\nimport React from 'react'\n\nexport interface TransactionsDialogProps extends DialogProps {}\n\nexport const TransactionsDialog: React.FC<TransactionsDialogProps> = ({ onClose, ...props }) => {\n return (\n <Dialog onClose={onClose} {...props}>\n <DialogContent>\n Transactions Dialog\n </DialogContent>\n <DialogActions>\n <Button variant=\"outlined\" onClick={e => onClose?.(e, 'escapeKeyDown')}>Close</Button>\n </DialogActions>\n </Dialog>\n )\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-sdk'\nimport { useEffect, useRef } from 'react'\n\nexport type PollingState = 'paused' | 'running'\n\nexport const useOnBlock = (\n initialHeadNumber?: number,\n onAddBlock?: (block: HydratedBlock) => Promise<void>,\n liveHead?: HydratedBlock,\n pollingState?: PollingState,\n) => {\n /**\n * blocksWhilePaused is a ref because we don't want to re-render the component when it changes.\n * But, since we get new blockComponents regardless, the hook rerenders anyway so consumers can get\n * the latest blocksWhilePaused value without having to rely on a state update.\n */\n const blocksWhilePausedRef = useRef<HydratedBlock[]>([])\n // Because the useEffect has liveHead AND pollingState, every time the polling state changes, the hook will\n // run a second time with the live head from the previous run. This is why we need to keep track of the last\n // live head so we can compare it to the current live head and prevent the hook from adding the same block twice\n const lastLiveHeadRef = useRef<HydratedBlock | undefined>(liveHead)\n\n useEffect(() => {\n const lastLiveHeadBlock = lastLiveHeadRef.current?.[0]\n const blocksWhilePausedBlock = lastLiveHeadRef.current?.[0]\n const liveHeadBlock = liveHead?.[0]\n\n // use lastLiveHead to prevent the hook from adding the same block multiple times\n if (lastLiveHeadBlock?.block === liveHeadBlock?.block) return\n\n if (liveHead && onAddBlock) {\n // update lastLiveHead\n lastLiveHeadRef.current = liveHead\n\n // if the polling state is paused and the block is new, add it to the blocksWhilePaused array\n const isNewBlock = initialHeadNumber !== liveHeadBlock?.block && liveHeadBlock?.block !== blocksWhilePausedBlock?.block\n if (pollingState === 'paused' && isNewBlock) {\n blocksWhilePausedRef.current.push(liveHead)\n } else if (pollingState === 'running') {\n // if the polling state is running, add the blocksWhilePaused\n if (blocksWhilePausedRef.current.length > 0) {\n for (const block of blocksWhilePausedRef.current) {\n void onAddBlock(block)\n }\n // clear the blocksWhilePaused array\n blocksWhilePausedRef.current = []\n }\n // add the liveHead block\n void onAddBlock(liveHead)\n }\n }\n }, [initialHeadNumber, liveHead, onAddBlock, pollingState])\n\n return blocksWhilePausedRef\n}\n","import type { TablePaginationActionsProps } from '@xyo-network/react-payload-table'\nimport { TablePaginationActions } from '@xyo-network/react-payload-table'\nimport React from 'react'\n\nexport interface BlockChainPaginationProps extends TablePaginationActionsProps {}\n\nexport const BlockChainPagination: React.FC<BlockChainPaginationProps> = ({\n count = 0, onPageChange, page, rowsPerPage = 10,\n}) => {\n return <TablePaginationActions count={count} onPageChange={onPageChange} page={page} rowsPerPage={rowsPerPage} />\n}\n","import type { MouseEvent } from 'react'\nimport { useMemo, useState } from 'react'\n\nimport type { BlockChainRenderComponent } from '../../../../types/index.ts'\n\nexport const useChainPagination = (pageSize: number, blockComponents?: BlockChainRenderComponent[]) => {\n const [page, setPage] = useState(0)\n\n const paginatedBlockComponents = useMemo(() => {\n const startIndex = page * pageSize\n const endIndex = startIndex + pageSize\n return blockComponents?.slice(startIndex, endIndex)\n }, [blockComponents, page, pageSize])\n\n const onPageChange = (_event: MouseEvent<HTMLButtonElement>, newPage: number) => {\n setPage(newPage)\n }\n\n return {\n onPageChange, page, paginatedBlockComponents,\n }\n}\n","import type { StyledComponent } from '@emotion/styled'\nimport type { Theme } from '@mui/material'\nimport { styled } from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\n\n// Target the first visible child (first actual child is a hidden div) and hide the after pseudo element that visually links blocks together\nexport const BlockListWrapperFlexBox: StyledComponent<FlexBoxProps & { theme?: Theme }> = styled(FlexCol, { name: 'BlockListWrapperFlexbox' })(() => ({\n '& > div:nth-of-type(2) .block-heading-flexbox .divider-spacer': {\n // hide the spacer for the first element\n visibility: 'hidden',\n },\n '& > div:nth-of-type(2) .block-heading-flexbox .divider': {\n // keep the first element divider at 0 height so we can animate it to the correct height\n // when the next block comes in\n height: 0,\n },\n}))\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\nimport type { Payload } from '@xyo-network/sdk-js'\nimport type { ComponentType } from 'react'\nimport React, { useState } from 'react'\n\nimport type { PayloadBuilderComponentProps } from './BuilderComponentProps.ts'\n\nexport interface PayloadBuilderFlexboxProps extends PayloadBuilderComponentProps, FlexBoxProps {\n BuilderComponent: ComponentType<PayloadBuilderComponentProps>\n}\n\nexport const PayloadBuilderFlexbox: React.FC<PayloadBuilderFlexboxProps> = ({\n BuilderComponent, onBuild, ...props\n}) => {\n const [payload, setPayload] = useState<Payload>()\n\n const onBuildLocal = (payload: Payload) => {\n onBuild?.(payload)\n setPayload(payload)\n }\n\n return (\n <FlexCol gap={2} {...props}>\n <BuilderComponent onBuild={onBuildLocal} />\n {payload ? <JsonViewerEx value={payload} /> : null}\n </FlexCol>\n )\n}\n","import { Button, FormControl } from '@mui/material'\nimport { usePromise } from '@xylabs/react-promise'\nimport type { Address } from '@xylabs/sdk-js'\nimport { createProducerChainStakeIntent } from '@xyo-network/chain-protocol'\nimport type { XL1BlockNumber } from '@xyo-network/xl1-sdk'\nimport type { MouseEventHandler } from 'react'\nimport React, { useState } from 'react'\n\nimport { BlockNumberTextField, XyoAddressTextField } from '../../fields/index.ts'\nimport type { PayloadBuilderComponentProps } from '../BuilderComponentProps.ts'\n\nexport interface ProducerIntentBuilderFormProps extends PayloadBuilderComponentProps {}\n\nexport const ProducerIntentBuilderForm: React.FC<ProducerIntentBuilderFormProps> = ({ onBuild }) => {\n const [delegate, setDelegate] = useState<Address>()\n const [exp, setExp] = useState<XL1BlockNumber>()\n const [nbf, setNbf] = useState<XL1BlockNumber>()\n const [blockRangeError, setBlockRangeError] = useState<Error>()\n\n const [intentPayload] = usePromise(async () => {\n // confirm we have values for all fields\n if (exp !== undefined && nbf !== undefined) {\n // validate that expires is greater than not before\n if (exp <= nbf) {\n setBlockRangeError(new Error('Expires must be greater than Not Before'))\n } else {\n setBlockRangeError(undefined)\n if (delegate !== undefined) {\n // create the payload\n const payload = await createProducerChainStakeIntent(delegate, exp, nbf)\n return payload\n }\n }\n }\n }, [delegate, exp, nbf])\n\n const onBuildLocal: MouseEventHandler<HTMLButtonElement> = () => {\n if (onBuild && intentPayload) onBuild?.(intentPayload)\n }\n\n return (\n <>\n <FormControl fullWidth>\n <XyoAddressTextField label=\"Delegate\" name=\"delegate\" onAddressChanged={setDelegate} required size=\"small\" />\n </FormControl>\n <FormControl fullWidth>\n <BlockNumberTextField\n errorMessage={blockRangeError?.message}\n label=\"Expires\"\n name=\"exp\"\n onBlockNumberChanged={setExp}\n required\n size=\"small\"\n />\n </FormControl>\n <FormControl fullWidth>\n <BlockNumberTextField\n errorMessage={blockRangeError?.message}\n label=\"Not Before\"\n name=\"nbf\"\n onBlockNumberChanged={setNbf}\n required\n size=\"small\"\n />\n </FormControl>\n <Button disabled={!intentPayload} variant=\"contained\" onClick={onBuildLocal}>Build</Button>\n </>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport {\n FormControl, FormHelperText, TextField,\n} from '@mui/material'\nimport { toXL1BlockNumber, type XL1BlockNumber } from '@xyo-network/xl1-sdk'\nimport type { ChangeEventHandler } from 'react'\nimport React, { useState } from 'react'\n\ninterface BlockNumberTextFieldProps extends StandardTextFieldProps {\n errorMessage?: string\n onBlockNumberChanged?: (blockNumber?: XL1BlockNumber) => void\n}\n\nexport const BlockNumberTextField: React.FC<BlockNumberTextFieldProps> = ({\n errorMessage, onBlockNumberChanged, onChange, ...props\n}) => {\n const [blockNumber, setBlockNumber] = useState<number>()\n\n const handleChange: ChangeEventHandler<HTMLInputElement> = (e) => {\n const value = e.target.value.replaceAll(/\\D/g, '') // Remove non-digit characters\n setBlockNumber(value.length > 0 ? Number(value) : undefined)\n onBlockNumberChanged?.(toXL1BlockNumber(value))\n onChange?.(e)\n }\n\n const errored = errorMessage !== undefined\n\n return (\n <FormControl fullWidth>\n <TextField\n error={errored}\n onChange={handleChange}\n type=\"number\"\n value={blockNumber ?? ''}\n {...props}\n />\n {errored ? <FormHelperText sx={{ color: 'error.main' }}>{errorMessage}</FormHelperText> : null}\n </FormControl>\n )\n}\n","import type { StandardTextFieldProps } from '@mui/material'\nimport {\n FormControl, FormHelperText, TextField,\n} from '@mui/material'\nimport type { Address } from '@xylabs/sdk-js'\nimport {\n asAddress, isAddress, isDefined,\n} from '@xylabs/sdk-js'\nimport React, { useState } from 'react'\n\ninterface XyoAddressTextFieldProps extends Omit<StandardTextFieldProps, 'value'> {\n onAddressChanged?: (address?: Address) => void\n // increment the value to trigger rerender with empty input\n resetValue?: number\n}\n\nexport const XyoAddressTextField: React.FC<XyoAddressTextFieldProps> = ({\n onAddressChanged, onChange, resetValue, ...props\n}) => {\n const [address, setAddress] = useState<string>('')\n const [addressError, setAddressError] = useState<Error>()\n\n const [previousResetValue, setPreviousResetValue] = useState<number | undefined>(resetValue)\n\n if (isDefined(resetValue) && resetValue !== previousResetValue) {\n setPreviousResetValue(resetValue)\n setAddress('')\n }\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n // allow the parent component to also respond to the change if they need to\n onChange?.(event)\n\n // validate the address and call onAddressChanged if it's valid\n const xyoAddress = asAddress(value)\n if (isAddress(xyoAddress)) {\n onAddressChanged?.(xyoAddress)\n setAddressError(undefined)\n } else if (value === '') {\n // if the input is empty, we clear the error but don't call onAddressChanged because there's no address\n setAddressError(undefined)\n } else {\n // if the address is invalid, we set an error and call onAddressChanged with undefined to clear any previously set address\n setAddressError(new Error('Invalid address'))\n }\n\n setAddress(value)\n }\n\n const handleBlur = () => {\n const xyoAddress = asAddress(address)\n if (!isAddress(xyoAddress)) {\n setAddressError(new Error('Invalid address'))\n onAddressChanged?.()\n }\n }\n\n return (\n <FormControl fullWidth>\n <TextField\n error={!!addressError}\n onBlur={handleBlur}\n onChange={handleChange}\n value={address}\n {...props}\n />\n {addressError ? <FormHelperText sx={{ color: 'error.main' }}>{addressError.message}</FormHelperText> : null}\n </FormControl>\n )\n}\n","import React from 'react'\n\nimport type { PayloadBuilderComponentProps } from '../BuilderComponentProps.ts'\nimport { PayloadBuilderFlexbox } from '../Flexbox.tsx'\nimport { TransferBuilderForm } from './Form.tsx'\n\nexport const TransferBuilderFlexbox: React.FC<PayloadBuilderComponentProps> = ({ onBuild, ...props }) => (\n <PayloadBuilderFlexbox\n gap={4}\n alignItems=\"start\"\n BuilderComponent={TransferBuilderForm}\n onBuild={onBuild}\n {...props}\n />\n)\n","import { Button, FormControl } from '@mui/material'\nimport type { Address, Hex } from '@xylabs/sdk-js'\nimport { isAddress } from '@xylabs/sdk-js'\nimport type { Transfer } from '@xyo-network/xl1-sdk'\nimport { TransferSchema } from '@xyo-network/xl1-sdk'\nimport type { MouseEventHandler } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { XyoAddressTextField } from '../../fields/index.ts'\nimport type { PayloadBuilderComponentProps } from '../BuilderComponentProps.ts'\nimport { SingleTransferBuilderFlexbox } from './builder/index.ts'\nimport type { TransferAmount } from './Transfer.ts'\n\nexport interface TransferBuilderFormProps extends PayloadBuilderComponentProps {}\n\nexport const TransferBuilderForm: React.FC<TransferBuilderFormProps> = ({ onBuild }) => {\n const [fromAddress, setFromAddress] = useState<Address>()\n const [transfers, setTransfers] = useState<TransferAmount[]>([])\n\n const [epoch] = useState(() => Date.now())\n\n const transferPayload: Transfer | undefined = useMemo(() => {\n if (isAddress(fromAddress) && transfers.length > 0) {\n const transfersRecord = {} as Transfer['transfers']\n for (const transfer of transfers) {\n transfersRecord[transfer.to] = transfer.amount\n }\n\n return {\n from: fromAddress,\n schema: TransferSchema,\n transfers: transfersRecord,\n epoch,\n }\n }\n }, [fromAddress, transfers, epoch])\n\n const onBuildLocal: MouseEventHandler<HTMLButtonElement> = () => {\n if (onBuild && transferPayload) onBuild?.(transferPayload)\n }\n\n const onTransferAdded = () => {\n const transferAmount: TransferAmount = {\n amount: '' as Hex,\n transferId: Date.now(),\n to: '' as Address,\n }\n setTransfers(prev => [...prev, transferAmount])\n }\n\n const onTransferRemoved = (transferId: number) => {\n setTransfers(prev => prev.filter(transfer => transfer.transferId !== transferId))\n }\n\n const onTransferUpdated = (singleTransfer: TransferAmount) => {\n setTransfers(prev => prev.map((transfer) => {\n if (transfer.transferId === singleTransfer.transferId) {\n return singleTransfer\n }\n return transfer\n }))\n }\n\n return (\n <>\n <FormControl fullWidth>\n <XyoAddressTextField label=\"From\" name=\"from\" onAddressChanged={setFromAddress} required size=\"small\" />\n </FormControl>\n <Button onClick={onTransferAdded} size=\"small\" variant=\"contained\">Add Transfer</Button>\n {transfers.map(transfer => (\n <SingleTransferBuilderFlexbox\n key={transfer.transferId}\n onTransferUpdated={onTransferUpdated}\n onRemoveTransfer={onTransferRemoved}\n singleTransfer={transfer}\n sx={{ width: '100%' }}\n />\n ))}\n <Button disabled={!transferPayload} variant=\"contained\" onClick={onBuildLocal}>Build</Button>\n </>\n )\n}\n","import { RemoveCircle } from '@mui/icons-material'\nimport {\n FormControl, Icon, IconButton,\n} from '@mui/material'\nimport type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexRow } from '@xylabs/react-flexbox'\nimport type { Address } from '@xylabs/sdk-js'\nimport {\n isAddress, isDefinedNotNull, toHex,\n} from '@xylabs/sdk-js'\nimport { BigIntInput } from '@xyo-network/react-shared'\nimport React, { useEffect, useState } from 'react'\n\nimport { XyoAddressTextField } from '../../../fields/index.ts'\nimport type { TransferAmount } from '../Transfer.ts'\n\nexport interface SingleTransferBuilderFlexboxProps extends FlexBoxProps {\n onRemoveTransfer?: (transferId: number) => void\n onTransferUpdated?: (transferAmount: TransferAmount) => void\n singleTransfer: TransferAmount\n}\n\nexport const SingleTransferBuilderFlexbox: React.FC<SingleTransferBuilderFlexboxProps> = ({\n onTransferUpdated, onRemoveTransfer, singleTransfer, ...props\n}) => {\n const [toAddress, setToAddress] = useState<Address>()\n const [amount, setAmount] = useState<bigint>()\n\n useEffect(() => {\n const transferAmount = isAddress(toAddress) && isDefinedNotNull(amount)\n ? {\n ...singleTransfer,\n amount: toHex(amount),\n to: toAddress,\n }\n : undefined\n if (transferAmount) onTransferUpdated?.(transferAmount)\n }, [amount, onTransferUpdated, singleTransfer, toAddress])\n\n return (\n <FlexRow alignItems=\"start\" gap={1} {...props}>\n <FormControl fullWidth>\n <XyoAddressTextField label=\"To\" name=\"to\" onAddressChanged={setToAddress} required size=\"small\" />\n </FormControl>\n <FormControl fullWidth>\n <BigIntInput.TextField label=\"Amount\" name=\"amount\" onChangeFixedPoint={setAmount} required size=\"small\" />\n </FormControl>\n <IconButton onClick={() => onRemoveTransfer?.(singleTransfer.transferId)}><Icon><RemoveCircle /></Icon></IconButton>\n </FlexRow>\n )\n}\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { BlockRate } from '@xyo-network/xl1-sdk'\n\nimport { rateUnitToLabel } from '../../../helpers/rate/index.ts'\nimport { BlockRateSpanTypography } from '../SpanTypography.tsx'\nimport { BlockRateSpeedTypography } from '../SpeedTypography.tsx'\nimport { BlockRateTimeTypography } from '../TimeTypography.tsx'\n\nexport interface BlockRateFlexBoxProps extends FlexBoxProps {\n blockRate?: BlockRate\n}\n\nexport const BlockRateFlexBox: React.FC<BlockRateFlexBoxProps> = ({\n blockRate,\n ...flexBoxProps\n}) => {\n const {\n range, span, rate, timeUnit, timeDifference,\n } = blockRate ?? {}\n const rateUnitLabel = isDefined(timeUnit) ? rateUnitToLabel(timeUnit) : ''\n\n return (\n <FlexCol alignItems=\"start\" {...flexBoxProps}>\n <BlockRateSpeedTypography rate={rate} rateUnitLabel={rateUnitLabel} />\n <BlockRateSpanTypography range={range} span={span} />\n <BlockRateTimeTypography timeUnit={timeUnit} timeDifference={timeDifference} />\n </FlexCol>\n )\n}\n","import type { TimeDurations } from '@xyo-network/xl1-sdk'\n\nexport const rateUnitToLabel = (rateUnit: keyof TimeDurations) => {\n switch (rateUnit) {\n case 'millis': {\n return 'b/ms'\n }\n case 'seconds': {\n return 'b/s'\n }\n case 'minutes': {\n return 'b/m'\n }\n case 'hours': {\n return 'b/h'\n }\n case 'days': {\n return 'b/d'\n }\n case 'weeks': {\n return 'b/w'\n }\n default: {\n return rateUnit\n }\n }\n}\n","import { ViewAgendaOutlined } from '@mui/icons-material'\nimport { Tooltip, type TypographyProps } from '@mui/material'\nimport type { XL1BlockRange } from '@xyo-network/xl1-sdk'\n\nimport { MetricTypography } from './support/index.ts'\n\nexport interface BlockRateSpanTypographyProps extends TypographyProps {\n range?: XL1BlockRange\n span?: number\n}\n\nexport const BlockRateSpanTypography: React.FC<BlockRateSpanTypographyProps> = ({\n range, span, sx, ...props\n}) => {\n return (\n <Tooltip title={`Block Range: ${range?.join(' - ')}`}>\n <MetricTypography icon={<ViewAgendaOutlined fontSize=\"large\" />} metric={span} label=\"blocks\" {...props} />\n </Tooltip>\n )\n}\n","import type { TypographyProps } from '@mui/material'\nimport { Icon, Typography } from '@mui/material'\nimport { isUndefined } from '@xylabs/sdk-js'\nimport type { ReactNode } from 'react'\nimport { useEffect, useState } from 'react'\n\nexport interface MetricTypographyProps extends TypographyProps {\n animationDurationMs?: number\n disableAnimation?: boolean\n icon?: ReactNode\n label?: ReactNode\n metric?: number\n}\n\nexport const MetricTypography: React.FC<MetricTypographyProps> = ({\n animationDurationMs = 1000, disableAnimation, icon, label, metric, sx, ...props\n}) => {\n const [displayValue, setDisplayValue] = useState(0)\n\n if (isUndefined(metric) && displayValue !== 0) {\n setDisplayValue(0)\n }\n\n useEffect(() => {\n if (isUndefined(metric)) return\n const duration = animationDurationMs\n const startTime = Date.now()\n const startValue = 0\n const endValue = metric\n\n const animate = () => {\n const now = Date.now()\n const elapsed = now - startTime\n const progress = Math.min(elapsed / duration, 1)\n\n // Easing function for smooth animation (ease-out\n const easeProgress = 1 - Math.pow(1 - progress, 3)\n\n const currentValue = startValue + (endValue - startValue) * easeProgress\n setDisplayValue(currentValue)\n\n if (progress < 1) {\n requestAnimationFrame(animate)\n }\n }\n\n globalThis.requestAnimationFrame(animate)\n }, [animationDurationMs, metric])\n\n // Check if metric is a whole number\n const isWholeNumber = metric !== undefined && Number.isInteger(metric)\n\n // Format based on whether the target is a whole number\n const formattedValue = disableAnimation\n ? metric\n : displayValue.toLocaleString(navigator.language, {\n minimumFractionDigits: 0,\n maximumFractionDigits: isWholeNumber ? 0 : 2,\n })\n\n return (\n <Typography\n variant=\"h4\"\n mb={1}\n sx={{\n display: 'flex', alignItems: 'end', gap: 0.5, ...sx,\n }}\n {...props}\n >\n <Icon fontSize=\"large\">{icon}</Icon>\n {formattedValue}\n {' '}\n <Typography component=\"span\" variant=\"caption\" lineHeight={1.86}>\n {label}\n </Typography>\n </Typography>\n )\n}\n","import { SpeedOutlined } from '@mui/icons-material'\nimport type { TypographyProps } from '@mui/material'\n\nimport { MetricTypography } from './support/index.ts'\n\nexport interface BlockRateSpeedTypographyProps extends TypographyProps {\n rate?: number\n rateUnitLabel?: string\n}\n\nexport const BlockRateSpeedTypography: React.FC<BlockRateSpeedTypographyProps> = ({\n rate, rateUnitLabel, ...props\n}) => {\n return (\n <MetricTypography icon={<SpeedOutlined fontSize=\"large\" />} metric={rate} label={rateUnitLabel} {...props} />\n )\n}\n","import { TimelapseOutlined } from '@mui/icons-material'\nimport { type TypographyProps } from '@mui/material'\n\nimport { MetricTypography } from './support/index.ts'\n\nexport interface BlockRateTimeTypographyProps extends TypographyProps {\n timeDifference?: number\n timeUnit?: string\n}\n\nexport const BlockRateTimeTypography: React.FC<BlockRateTimeTypographyProps> = ({\n timeUnit, timeDifference, sx, ...props\n}) => {\n return (\n <MetricTypography icon={<TimelapseOutlined fontSize=\"large\" />} metric={timeDifference} label={timeUnit} {...props} />\n )\n}\n","import type { GaugeContainerProps } from '@mui/x-charts'\nimport {\n GaugeContainer, GaugeReferenceArc, GaugeValueArc,\n} from '@mui/x-charts'\nimport type { BlockRate, TimeDurations } from '@xyo-network/xl1-sdk'\nimport type { PropsWithChildren } from 'react'\n\nimport { BlockRateConversions } from './helpers/index.ts'\nimport { GaugePointer } from './Pointer.tsx'\nimport { GaugeTicks } from './Ticks.tsx'\n\nexport interface GaugeConfig {\n // whether to show ticks on the gauge\n showTicks?: boolean\n // the block rate to target on the gauge\n targetBlockRate: number\n // the unit of time for the target block rate (e.g., seconds, minutes)\n targetBlockRateUnit: keyof TimeDurations\n // the position of the pointer when the block rate matches the target rate\n // should be approximately between 2/3 and 3/4 position of the gauge\n targetPosition: number\n}\n\nexport interface BlockRateSpeedGaugeProps extends GaugeContainerProps, PropsWithChildren {\n blockRate?: BlockRate\n gaugeConfig?: GaugeConfig\n}\n\nexport const BlockRateSpeedGaugeContainer: React.FC<BlockRateSpeedGaugeProps> = ({\n blockRate,\n children,\n gaugeConfig,\n startAngle = -110,\n endAngle = 110,\n width = 200,\n height = 150,\n ...props\n}) => {\n const { rate, timeUnit } = blockRate || {}\n const {\n targetBlockRate = 5, targetBlockRateUnit = 'minutes', targetPosition = 75, showTicks = true,\n } = gaugeConfig || {}\n\n // Get the appropriate converter function based on the target block rate unit\n const converter = BlockRateConversions[targetBlockRateUnit]\n\n // Normalize rate to the gauge\n const maxGaugeValue = endAngle // matches endAngle\n const blocksPerMinute = rate === undefined ? 0 : converter(rate, timeUnit)\n\n // Scale: 5 blocks/min should map to 75 out of 110 max\n // This means: normalizedValue = (blocksPerMinute / targetRate) * targetPosition\n // And we want it capped at maxGaugeValue\n const normalizedValue = Math.min((blocksPerMinute / targetBlockRate) * targetPosition, maxGaugeValue)\n\n return (\n <GaugeContainer\n width={width}\n height={height}\n startAngle={startAngle}\n endAngle={endAngle}\n value={normalizedValue}\n valueMax={endAngle}\n innerRadius=\"95%\"\n outerRadius=\"100%\"\n {...props}\n >\n {showTicks && <GaugeTicks />}\n <GaugeReferenceArc />\n <GaugeValueArc />\n <GaugePointer startAngle={-2} />\n {children}\n </GaugeContainer>\n )\n}\n","import { isDefined, isUndefined } from '@xylabs/sdk-js'\nimport type { TimeDurations } from '@xyo-network/xl1-sdk'\n\nexport type BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations) => number\n\nconst toBlocksPerMillisecond: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 1, // already in milliseconds\n seconds: 1000, // 1 second = 1000 milliseconds\n minutes: 60_000, // 1 minute = 60000 milliseconds\n hours: 3_600_000, // 1 hour = 3600000 milliseconds\n days: 86_400_000, // 1 day = 86400000 milliseconds\n weeks: 604_800_000, // 1 week = 604800000 milliseconds\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerSecond: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 0.001, // 1 millisecond = 0.001 seconds\n seconds: 1, // already in seconds\n minutes: 60, // 1 minute = 60 seconds\n hours: 3600, // 1 hour = 3600 seconds\n days: 86_400, // 1 day = 86400 seconds\n weeks: 604_800, // 1 week = 604800 seconds\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\n// Convert rate to blocks per minute based on the unit\nconst toBlocksPerMinute: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 60_000, // 1 minute = 60000 milliseconds\n seconds: 60, // 1 minute = 60 seconds\n minutes: 1, // already in minutes\n hours: 1 / 60, // 1 hour = 60 minutes\n days: 1 / 1440, // 1 day = 1440 minutes\n weeks: 1 / 10_080, // 1 week = 10080 minutes\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerHour: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 3_600_000, // 1 hour = 3600000 milliseconds\n seconds: 3600, // 1 hour = 3600 seconds\n minutes: 60, // 1 hour = 60 minutes\n hours: 1, // already in hours\n days: 1 / 24, // 1 day = 24 hours\n weeks: 1 / 168, // 1 week = 168 hours\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerDay: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 86_400_000, // 1 day = 86400000 milliseconds\n seconds: 86_400, // 1 day = 86400 seconds\n minutes: 1440, // 1 day = 1440 minutes\n hours: 24, // 1 day = 24 hours\n days: 1, // already in days\n weeks: 1 / 7, // 1 week = 7 days\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nconst toBlocksPerWeek: BlockRateConverter = (rateValue: number, unit?: keyof TimeDurations): number => {\n if (isUndefined(unit)) return rateValue\n\n const conversions: Record<keyof TimeDurations, number> = {\n millis: 604_800_000, // 1 week = 604800000 milliseconds\n seconds: 604_800, // 1 week = 604800 seconds\n minutes: 10_080, // 1 week = 10080 minutes\n hours: 168, // 1 week = 168 hours\n days: 7, // 1 week = 7 days\n weeks: 1, // already in weeks\n }\n\n return rateValue * (isDefined(conversions[unit]) ? conversions[unit] : 1)\n}\n\nexport const BlockRateConversions: Record<keyof TimeDurations, BlockRateConverter> = {\n millis: toBlocksPerMillisecond,\n seconds: toBlocksPerSecond,\n minutes: toBlocksPerMinute,\n hours: toBlocksPerHour,\n days: toBlocksPerDay,\n weeks: toBlocksPerWeek,\n}\n","import { useTheme } from '@mui/material'\nimport { useGaugeState } from '@mui/x-charts/Gauge'\nimport { isDefined } from '@xylabs/sdk-js'\nimport { useEffect, useState } from 'react'\n\nexport interface GaugePointerProps {\n pointerColor?: string\n startAngle?: number\n}\n\nexport const GaugePointer: React.FC<GaugePointerProps> = ({ pointerColor, startAngle = 0 }) => {\n const theme = useTheme()\n const strokeColor = isDefined(pointerColor) ? pointerColor : theme.palette.error.dark\n const {\n valueAngle, outerRadius, cx, cy,\n } = useGaugeState()\n\n const [currentAngle, setCurrentAngle] = useState(startAngle)\n\n useEffect(() => {\n if (valueAngle === null) return\n\n const duration = 500 // 0.5 second animation\n const startTime = Date.now()\n const animationStartAngle = currentAngle // Start from current position\n const endAngle = valueAngle\n\n const animate = () => {\n const now = Date.now()\n const elapsed = now - startTime\n const progress = Math.min(elapsed / duration, 1)\n\n // Ease-out cubic for smooth deceleration\n const easeProgress = 1 - Math.pow(1 - progress, 3)\n\n // take the current angle and add the difference to the end angle based on progress\n const newAngle = animationStartAngle + (endAngle - animationStartAngle) * easeProgress\n setCurrentAngle(newAngle)\n\n if (progress < 1) {\n globalThis.requestAnimationFrame(animate)\n }\n }\n\n globalThis.requestAnimationFrame(animate)\n }, [currentAngle, valueAngle])\n\n if (valueAngle === null) {\n // No value to display\n return null\n }\n\n const target = {\n x: cx + outerRadius * Math.sin(currentAngle),\n y: cy - outerRadius * Math.cos(currentAngle),\n }\n return (\n <g className=\"GaugePointer\">\n <circle cx={cx} cy={cy} r={5} fill={strokeColor} />\n <path\n d={`M ${cx} ${cy} L ${target.x} ${target.y}`}\n stroke={strokeColor}\n strokeWidth={3}\n />\n </g>\n )\n}\n","import { useTheme } from '@mui/material'\nimport { useGaugeState } from '@mui/x-charts/Gauge'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { JSX } from 'react'\n\nexport interface GaugeTicksProps {\n /**\n * Length of major ticks as a percentage of the radius\n * @default 0.15\n */\n majorTickLength?: number\n /**\n * Width of major ticks in pixels\n * @default 2\n */\n majorTickWidth?: number\n /**\n * Length of minor ticks as a percentage of the radius\n * @default 0.08\n */\n minorTickLength?: number\n /**\n * Width of minor ticks in pixels\n * @default 1\n */\n minorTickWidth?: number\n /**\n * Number of minor ticks between major ticks\n * @default 4\n */\n minorTicksPerMajor?: number\n /**\n * Number of major ticks to display\n * @default 11\n */\n numTicks?: number\n /**\n * Color of the ticks\n */\n tickColor?: string\n}\n\nexport const GaugeTicks: React.FC<GaugeTicksProps> = ({\n numTicks = 11,\n minorTicksPerMajor = 4,\n majorTickLength = 0.2,\n minorTickLength = 0.15,\n majorTickWidth = 2,\n minorTickWidth = 1,\n tickColor,\n}) => {\n const theme = useTheme()\n const {\n startAngle, endAngle, outerRadius, cx, cy,\n } = useGaugeState()\n\n const color = isDefined(tickColor) ? tickColor : theme.vars.palette.text.secondary\n\n if (startAngle === null || endAngle === null) {\n return null\n }\n\n const ticks: JSX.Element[] = []\n const totalAngle = endAngle - startAngle\n\n // Generate major ticks\n for (let i = 0; i < numTicks; i++) {\n const angle = startAngle + (i / (numTicks - 1)) * totalAngle\n const tickLength = outerRadius * majorTickLength\n const tickStart = outerRadius\n const innerRadius = tickStart - tickLength\n\n const x1 = cx + tickStart * Math.sin(angle)\n const y1 = cy - tickStart * Math.cos(angle)\n const x2 = cx + innerRadius * Math.sin(angle)\n const y2 = cy - innerRadius * Math.cos(angle)\n\n ticks.push(\n <line\n className={`GaugeTick-major-${i}`}\n key={`major-${i}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke={color}\n strokeWidth={majorTickWidth}\n // strokeLinecap=\"round\"\n />,\n )\n // Generate minor ticks between major ticks (except after the last major tick)\n if (i < numTicks - 1) {\n const angleStep = totalAngle / (numTicks - 1) / (minorTicksPerMajor + 1)\n for (let j = 1; j <= minorTicksPerMajor; j++) {\n const minorAngle = angle + angleStep * j\n const minorTickLen = outerRadius * minorTickLength\n const minorTickStart = outerRadius\n const minorInnerRadius = minorTickStart - minorTickLen\n\n const mx1 = cx + minorTickStart * Math.sin(minorAngle)\n const my1 = cy - minorTickStart * Math.cos(minorAngle)\n const mx2 = cx + minorInnerRadius * Math.sin(minorAngle)\n const my2 = cy - minorInnerRadius * Math.cos(minorAngle)\n\n ticks.push(\n <line\n key={`minor-${i}-${j}`}\n x1={mx1}\n y1={my1}\n x2={mx2}\n y2={my2}\n stroke={color}\n strokeWidth={minorTickWidth}\n // strokeLinecap=\"round\"\n />,\n )\n }\n }\n }\n\n return <g className=\"GaugeTicks\">{ticks}</g>\n}\n","import { FlexCol } from '@xylabs/react-flexbox'\nimport { isDefined } from '@xylabs/sdk-js'\n\nimport { rateUnitToLabel } from '../../../helpers/rate/index.ts'\nimport { BlockRateSpeedTypography } from '../SpeedTypography.tsx'\nimport type { BlockRateSpeedGaugeProps } from './Container.tsx'\nimport { BlockRateSpeedGaugeContainer } from './Container.tsx'\n\nexport interface BlockRateSpeedGaugeWithLabelProps extends BlockRateSpeedGaugeProps {}\n\nexport const BlockRateSpeedGaugeWithLabel: React.FC<BlockRateSpeedGaugeProps> = ({ blockRate, ...props }) => {\n const rateUnitLabel = isDefined(blockRate?.rate) ? rateUnitToLabel(blockRate?.timeUnit) : ''\n\n return (\n <FlexCol>\n <BlockRateSpeedGaugeContainer blockRate={blockRate} {...props} />\n <BlockRateSpeedTypography rate={blockRate?.rate} rateUnitLabel={rateUnitLabel} />\n </FlexCol>\n )\n}\n","import { CircularProgress } from '@mui/material'\nimport type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport { ArchivistConfigSchema, MemoryArchivist } from '@xyo-network/sdk-js'\nimport { flattenHydratedBlocks } from '@xyo-network/xl1-sdk'\nimport React, { useEffect } from 'react'\n\nimport { getChainId } from '../lib/index.ts'\nimport type { BlockChainRenderBaseProps } from '../types/index.ts'\n\nexport const ChainArchivistDecorator: Decorator = (Story, { args, ...context }) => {\n const [randomBlockChain] = usePromise(async () => await buildRandomBlockChain(), [])\n const [blockChainRenderProps, blockChainRenderPropsError] = usePromise(async () => {\n if (randomBlockChain) {\n const chainArchivist = await MemoryArchivist.create({ config: { schema: ArchivistConfigSchema, name: 'ChainArchivist' } })\n const flattened = flattenHydratedBlocks(randomBlockChain)\n await chainArchivist.insert(flattened)\n const chainId = await getChainId()\n return { chainArchivist, chainId }\n }\n }, [randomBlockChain])\n\n useEffect(() => {\n if (blockChainRenderPropsError) {\n console.error(blockChainRenderPropsError)\n }\n }, [blockChainRenderPropsError])\n\n const props = {\n ...context,\n args: {\n ...args,\n blockChainRenderProps: {\n ...(args.blockChainRenderProps as BlockChainRenderBaseProps),\n ...blockChainRenderProps,\n head: randomBlockChain?.toReversed()[0][0]._hash,\n },\n },\n }\n\n return blockChainRenderProps?.chainArchivist ? <Story {...props} /> : <CircularProgress />\n}\n","import type { Address, Promisable } from '@xylabs/sdk-js'\nimport { toAddress } from '@xylabs/sdk-js'\n\nconst id = toAddress('ce080bf3043a40c6c8838c7e813c00ab53df1684')\n\nexport const getChainId = (): Promisable<Address> => {\n return id\n}\n","import { CircularProgress } from '@mui/material'\nimport type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { delay } from '@xylabs/sdk-js'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport { ArchivistConfigSchema, MemoryArchivist } from '@xyo-network/sdk-js'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-sdk'\nimport { flattenHydratedBlock } from '@xyo-network/xl1-sdk'\nimport React, { useEffect, useState } from 'react'\n\nimport { getChainId } from '../lib/index.ts'\nimport type { BlockChainRenderBaseProps } from '../types/index.ts'\n\nlet chainArchivistRef: MemoryArchivist | undefined\n\nexport const ChainArchivistDelayedInsertDecorator: Decorator = (Story, context) => {\n const [firstBlock, setFirstBlock] = useState<BlockBoundWitness>()\n\n const [randomBlockChain] = usePromise(async () => await buildRandomBlockChain(), [])\n const [chainArchivist] = usePromise(async () => {\n if (chainArchivistRef) {\n return chainArchivistRef\n } else {\n chainArchivistRef = await MemoryArchivist.create({ config: { schema: ArchivistConfigSchema, name: 'ChainArchivist' } })\n return chainArchivistRef\n }\n }, [])\n\n const [, delayedInsertError] = usePromise(async () => {\n if (chainArchivist && randomBlockChain) {\n // TODO - use buildRandomChain helper\n for (const hydratedBlock of randomBlockChain) {\n const flattened = flattenHydratedBlock(hydratedBlock)\n // insert the block and subsequent payloads\n await chainArchivist.insert(flattened)\n\n // confirm the first block was inserted and set state so the story can load\n setFirstBlock(prev => prev ?? hydratedBlock[0])\n\n // we know we are gonna get a new block, so simulate the delay\n await delay(1000)\n }\n }\n }, [chainArchivist, randomBlockChain])\n\n useEffect(() => {\n if (delayedInsertError) {\n console.error(delayedInsertError)\n }\n }, [delayedInsertError])\n\n const [blockChainRenderProps] = usePromise(async () => {\n const chainId = await getChainId()\n return { chainArchivist, chainId }\n }, [chainArchivist])\n const { args } = context\n\n const props = {\n ...context,\n args: {\n ...args,\n blockChainRenderProps: {\n ...(args.blockChainRenderProps as BlockChainRenderBaseProps),\n ...blockChainRenderProps,\n head: randomBlockChain?.[0][0]?._hash,\n },\n },\n }\n\n return firstBlock ? <Story {...props} /> : <CircularProgress />\n}\n"],"mappings":"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","names":["Typography","FlexCol","isDefined","useAccountBalanceHistory","ErrorRender","AttoXL1","React","XL1Amount","formatBalanceMagnitude","set","received","sent","netBalance","formatBalance","balance","xl1Amount","XL1Amount","toString","undefined","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","TableBody","TableCell","TableHead","TableRow","isDefined","TableEx","React","TableCell","isDefined","RawInfoIconButton","React","useMemo","FlexCol","FlexRow","BWVerification","HashHeadingPaper","usePayloadHash","React","createContextEx","ChainAnalyzersContext","useContextEx","useChainAnalyzersContext","required","useContextEx","ChainAnalyzersContext","createContextEx","ChainPollingContext","useContextEx","useChainPollingContext","required","useContextEx","ChainPollingContext","Button","FormControl","TextField","FlexCol","toHex","defaultTransactionFees","toXL1BlockNumber","React","ChainTransactionBuilder","onSubmitTx","handleSubmit","event","preventDefault","formData","FormData","currentTarget","chainTx","chain","get","nbf","toXL1BlockNumber","exp","fees","gasLimit","toHex","defaultTransactionFees","gasPrice","base","priority","React","form","onSubmit","style","width","FlexCol","gap","FormControl","fullWidth","TextField","label","name","required","Button","type","variant","FormControl","FormHelperText","TextField","React","useState","ChainTransactionNetwork","network","onNetworkChange","props","error","setError","useState","handleChange","event","url","URL","target","value","undefined","console","React","FormControl","fullWidth","TextField","label","name","onChange","required","FormHelperText","sx","color","Alert","Grid","Typography","ErrorRender","FlexGrowCol","axiosJsonConfig","Account","ArchivistInsertQuerySchema","PayloadBuilder","QueryBoundWitnessBuilder","buildTransaction","Axios","React","useState","BETA_PENDING_TRANSACTIONS_ARCHIVIST","defaultNetwork","URL","SubmitChainTransaction","network","setNetwork","useState","result","setResult","error","setError","onSubmitTx","chainTx","randomAccount","Account","random","transactionBoundWitness","buildTransaction","chain","nbf","exp","insertQuery","PayloadBuilder","schema","ArchivistInsertQuerySchema","build","queryBoundWitness","QueryBoundWitnessBuilder","payloads","query","signer","response","Axios","axiosJsonConfig","post","href","data","errors","length","Error","map","e","message","join","onNetworkChange","url","React","Grid","container","size","xs","sm","md","FlexGrowCol","alignItems","gap","ChainTransactionNetwork","ChainTransactionBuilder","Alert","severity","ErrorRender","Typography","variant","pre","JSON","stringify","CompareArrowsIcon","Chip","Icon","React","useMemo","TransactionCountChip","transactions","sx","props","label","useMemo","length","React","Chip","avatar","Icon","CompareArrowsIcon","title","undefined","display","alignItems","justifyContent","ContentCopy","ContentCopyIcon","Paid","Alert","AlertTitle","Collapse","Snackbar","Typography","ErrorRender","FlexGrowCol","FlexGrowRow","FlexRow","QuickTipButton","isDefined","React","Fragment","useState","usePromise","isHash","assertEx","isDefined","BoundWitnessBuilder","ConfigZod","isBlockBoundWitness","resolveDefinedHead","head","chainArchivist","headPayload","get","undefined","currentHead","BoundWitnessBuilder","build","assertEx","isBlockBoundWitness","JSON","stringify","useChainIteratorParams","chainMap","chainId","name","usePromise","isDefined","isHash","result","foundResult","resolvedHead","config","ConfigZod","parse","chain","id","useState","useBaseContext","context","useState","caches","singletons","usePromise","HydratedBlockWrapper","PayloadBuilder","txsFromBlock","block","wrapper","HydratedBlockWrapper","parse","txs","transactions","txPayloads","map","tx","boundWitness","PayloadBuilder","hashPairs","useTxsFromBlock","block","usePromise","txsFromBlock","TransactionsQuickTipButton","block","props","transactions","transactionsError","useTxsFromBlock","copied","setCopied","useState","closeDialog","setCloseDialog","open","isDefined","previousTransactionError","setPreviousTransactionError","onCopy","transactionHash","navigator","clipboard","writeText","setTimeout","React","QuickTipButton","Icon","Paid","disabled","length","hoverText","disableDialog","dialogProps","fullWidth","maxWidth","FlexGrowCol","gap","alignItems","map","_transaction","hash","Fragment","key","FlexGrowRow","justifyContent","ContentCopyIcon","sx","cursor","onClick","Typography","overflow","textOverflow","whiteSpace","FlexRow","Collapse","in","unmountOnExit","Alert","AlertTitle","Snackbar","onClose","ErrorRender","error","scope","useRef","useState","useAnchorElement","anchorEl","setAnchorEl","useState","anchorRef","useRef","open","Boolean","handleClick","event","currentTarget","handleClose","useEvent","useBlockHeadingEvents","args","useEvent","useMemo","useBlockProducer","block","useMemo","producer","addresses","useMemo","blockProducer","block","addresses","React","buildBlockChainRenderComponent","context","BlockComponent","blockComponentProps","block","remainingProps","blockTxs","txsFromBlock","txHashes","map","_","hash","item","child","React","transactions","key","toString","BoundWitnessSchema","isTransactionBoundWitness","payloadCountsFromBlock","block","payloads","publicPayloads","payload_schemas","filter","schema","BoundWitnessSchema","transactionHashes","payload","isTransactionBoundWitness","flatMap","payload_hashes","privateHashes","hash","some","_hash","length","usePayloadCountsFromBlock","block","useMemo","payloadCountsFromBlock","undefined","Divider","Stack","React","LinkedDivider","React","Stack","className","justifyContent","sx","width","height","Divider","orientation","flexItem","borderRightWidth","transition","MoreVert","IconButton","Menu","BWJsonMenuItem","BWPreviousHashMenuItem","React","BlockMenuExpanded","block","anchorEl","anchorRef","open","handleClick","handleClose","useAnchorElement","React","IconButton","ref","size","onClick","MoreVert","fontSize","Menu","anchorOrigin","horizontal","vertical","onClose","BWPreviousHashMenuItem","boundwitness","dense","onDialogClose","BWJsonMenuItem","Chip","EthAddressWrapper","isString","isUndefined","toAddress","BlockiesAvatar","React","useMemo","Skeleton","React","ChipSkeleton","props","React","Skeleton","width","formatProducerAddress","address","isUndefined","isString","undefined","formattedAddress","toAddress","EthAddressWrapper","parse","toShortString","BlockProducerChip","block","props","blockProducer","addresses","React","BlockAddressChip","toolTipTitle","sx","shortedBlockProducer","avatar","useMemo","BlockiesAvatar","blockiesOptions","seed","Chip","label","ChipSkeleton","width","title","fontFamily","cursor","BlockHeadingFlexbox","block","defaultExpanded","transactions","hash","usePayloadHash","blockHeadingRef","blockHeadingListener","useBlockHeadingEvents","pollingState","useChainPollingContext","expanded","handleTransactionCountClick","event","stopPropagation","JSON","stringify","nativeEvent","React","FlexCol","className","alignItems","ref","onClick","LinkedDivider","HashHeadingPaper","heading","undefined","toString","paperProps","sx","p","width","AdornmentEnd","FlexRow","gap","BlockProducerChip","TransactionCountChip","e","BWVerification","iconColors","boundwitness","span","style","display","transition","maxWidth","BlockMenuExpanded","identiconProps","size","Link","TableCell","Tooltip","Typography","React","useEvent","useLinkedBlockItem","noun","data","ref","dispatch","useEvent","handleClick","event","preventDefault","stopPropagation","undefined","console","warn","selection","globalThis","getSelection","isTextSelected","toString","length","nativeEvent","BlockNumberTableCell","block","eventNoun","linked","props","blockNumber","React","BlockNumberTableCellInner","ref","handleClick","useLinkedBlockItem","toLocaleString","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","sx","cursor","Skeleton","TableCell","Tooltip","Typography","isDefined","React","dateFormat","Intl","DateTimeFormat","globalThis","navigator","language","year","month","day","hour","minute","second","timeAgo","epoch","locale","now","Date","diffInSeconds","Math","floor","units","max","value","name","Infinity","unit","abs","round","RelativeTimeFormat","numeric","format","BlockEpochTableCell","block","linked","props","epoch","$epoch","dateTime","dateFormat","format","age","isDefined","timeAgo","undefined","React","TableCell","Tooltip","title","Typography","component","variant","Skeleton","width","BlockEpochTableCellInner","Link","TableCell","Tooltip","isHash","usePayloadRootHash","React","useState","Button","Dialog","DialogActions","DialogContent","DialogTitle","React","FeatureNotAvailable","featureName","props","React","Dialog","DialogTitle","DialogContent","DialogActions","Button","onClick","e","onClose","BlockHashTableCell","block","notAvailableDialog","linked","props","hash","usePayloadRootHash","ref","handleClick","useLinkedBlockItem","notAvailable","setNotAvailable","useState","shortenedHash","isHash","slice","undefined","React","TableCell","Tooltip","title","Link","sx","cursor","onClick","ChipSkeleton","span","FeatureNotAvailable","featureName","open","DataObject","Button","Dialog","DialogActions","DialogContent","DialogTitle","IconButton","TableCell","FlexRow","ellipsize","isHash","JsonViewerEx","usePayloadRootHash","React","useState","BlockJsonViewTableCell","block","props","open","setOpen","useState","onClose","hash","usePayloadRootHash","title","isHash","ellipsize","React","TableCell","FlexRow","onClick","e","stopPropagation","sx","width","IconButton","DataObject","Dialog","DialogTitle","DialogContent","JsonViewerEx","value","DialogActions","display","flexDirection","justifyContent","Button","variant","Error","Link","TableCell","Tooltip","React","BlockPayloadCountsTableCell","block","linked","props","publicPayloads","privatePayloads","error","usePayloadCountsFromBlock","data","undefined","_hash","payloadCount","ref","handleClick","useLinkedBlockItem","React","TableCell","span","Tooltip","title","message","Error","color","Link","onClick","sx","cursor","TableCell","Tooltip","React","useState","BlockProducerTableCell","block","linked","notAvailableDialog","producerChipProps","props","ref","handleClick","useLinkedBlockItem","JSON","stringify","producer","useBlockProducer","React","BlockProducerTableCellInner","address","notAvailable","setNotAvailable","useState","TableCell","Tooltip","title","BlockAddressChip","sx","cursor","onClick","toolTipTitle","FeatureNotAvailable","featureName","open","Error","Link","TableCell","Tooltip","React","useMemo","BlockTransactionCountTableCell","block","linked","props","transactions","error","useTxsFromBlock","txHashes","useMemo","map","hash","data","undefined","length","_hash","ref","handleClick","useLinkedBlockItem","React","TableCell","span","Tooltip","title","message","Error","color","Link","onClick","sx","cursor","CheckCircleOutlineRounded","TableCell","FlexRow","BWVerification","React","BlockVerificationTableCell","block","linked","deepValidation","props","React","TableCell","FlexRow","onClick","e","stopPropagation","sx","width","BWVerification","iconColors","boundwitness","CheckCircleOutlineRounded","color","TableBody","TableEx","React","InfoOutline","TableCell","TableHead","TableRow","Tooltip","Typography","FlexRow","React","ToolTipTableCell","children","align","title","props","React","TableCell","FlexRow","justifyContent","Typography","variant","Tooltip","InfoOutline","fontSize","BlockchainTableHead","TableHead","TableRow","sx","width","BlockchainTableEx","ref","children","props","React","TableEx","BlockchainTableHead","TableBody","displayName","usePayloadRootHash","React","useMemo","styled","TableRow","alphaCss","StyledLinkableTableRow","styled","TableRow","shouldForwardProp","prop","theme","linked","backgroundColor","alphaCss","vars","palette","secondary","light","BlockChainTableRow","block","deepValidation","defaultExpanded","linked","props","linkedTableCellProps","useMemo","defaultTableCellProps","hash","usePayloadRootHash","ref","handleClick","useLinkedBlockItem","React","StyledLinkableTableRow","onClick","undefined","BlockNumberTableCell","align","BlockHashTableCell","BlockEpochTableCell","BlockProducerTableCell","BlockTransactionCountTableCell","BlockPayloadCountsTableCell","BlockVerificationTableCell","BlockJsonViewTableCell","TableCell","Tooltip","React","useEvent","useLinkedBalanceHistoryItem","ref","dispatch","useEvent","handleClick","event","noun","data","preventDefault","stopPropagation","undefined","console","warn","selection","globalThis","getSelection","isTextSelected","toString","length","nativeEvent","AddressTableCell","address","eventNoun","linked","toolTipTitle","sx","props","ref","handleClick","useLinkedBalanceHistoryItem","React","TableCell","cursor","Tooltip","title","BlockAddressChip","onClick","e","undefined","Link","TableCell","Tooltip","Typography","React","BalanceHistoryBlockNumberTableCell","block","eventNoun","linked","props","blockNumber","React","BalanceHistoryBlockNumberTableCellInner","ref","handleClick","useLinkedBalanceHistoryItem","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","e","toString","sx","cursor","Link","TableCell","Tooltip","Typography","ellipsize","isDefined","React","HashTableCell","eventData","eventNoun","hash","linked","toolTipTitle","sx","props","ref","handleClick","useLinkedBalanceHistoryItem","shortenedHash","isDefined","ellipsize","React","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","e","cursor","Link","TableCell","Tooltip","isDefined","toHex","XL1Amount","React","RawAmountTableCell","amount","eventNoun","linked","sx","type","props","ref","handleClick","useLinkedBalanceHistoryItem","formatAmount","isDefined","xl1Amount","XL1Amount","toString","undefined","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","React","TableCell","Tooltip","title","Link","onClick","e","toHex","cursor","span","BalanceHistoryTableRow","linked","row","props","amount","blockHash","blockNumber","debug","from","key","timestamp","to","type","txHash","transferHash","linkedTableCallProps","useMemo","ref","handleClick","useLinkedBalanceHistoryItem","noun","isDefined","data","React","StyledLinkableTableRow","onClick","e","undefined","HashTableCell","hash","toolTipTitle","eventNoun","BalanceHistoryBlockNumberTableCellInner","BlockEpochTableCellInner","epoch","AddressTableCell","address","RawAmountTableCell","eventData","TableCell","RawInfoIconButton","rawValue","TableHeadingLabels","AccountBalanceHistoryTableEx","history","linked","props","isDefined","React","TableEx","TableHead","TableRow","TableHeadingLabels","map","heading","TableCell","key","TableBody","row","BalanceHistoryTableRow","AccountBalanceHistoryFlexBox","address","refresh","viewer","props","results","error","useAccountBalanceHistory","undefined","history","balance","truncated","AttoXL1","isDefined","React","FlexCol","ErrorRender","scope","Typography","variant","gutterBottom","formatBalanceMagnitude","at","blockNumber","AccountBalanceHistoryTableEx","isDefined","useAccountBalanceHistory","useCallback","useState","usePagedAccountBalanceHistory","address","viewer","maxPage","updatedBlockRange","setUpdatedBlockRange","useState","pagedHistory","setPagedHistory","results","error","loading","useAccountBalanceHistory","history","truncated","previousHistory","setPreviousHistory","isDefined","lastBlock","at","blockNumber","undefined","historyComplete","length","updateRange","useCallback","newEndBlock","Autorenew","Pause","Alert","AlertTitle","Grow","Icon","IconButton","Tooltip","FlexRow","React","memo","QueryStats","Dialog","DialogContent","DialogTitle","IconButton","React","useState","Typography","ErrorRender","FlexCol","isChainSummaryProducers","React","useMemo","Table","TableBody","TableCell","TableHead","TableRow","useTheme","BlockiesAvatar","React","ChainProducerStatsTable","producers","props","theme","useTheme","React","Table","TableHead","TableRow","TableCell","TableBody","map","producer","key","address","BlockiesAvatar","blockiesOptions","seed","sx","height","spacing","width","blocksProduced","toString","rewardsEarned","BlockProducerStatsFlexbox","payload","props","producer","producerError","useMemo","isChainSummaryProducers","undefined","Error","producersArray","Object","values","producers","React","FlexCol","alignItems","gap","ErrorRender","error","scope","Typography","fontSize","ChainProducerStatsTable","ChainAnalyzerStatsDialog","props","analyzers","statsUpdated","useChainAnalyzersContext","React","Dialog","DialogTitle","DialogContent","Object","entries","map","id","analyzer","div","key","BlockProducerStatsFlexbox","payload","result","ChainAnalyzerStatsDialogFromContext","open","setOpen","useState","handleClose","IconButton","onClick","QueryStats","onClose","createSvgIcon","keyframes","styled","React","PulseSvgIcon","svg","viewBox","version","xmlns","g","transform","circle","className","cx","cy","r","pulse1","pulse2","StyledPulseSvgIcon","theme","animation","fill","vars","palette","success","main","divider","PollingControlsFlexbox","blocksBehind","pollingState","setPollingState","paused","running","React","FlexRow","justifyContent","width","gap","IconButton","onClick","title","Pause","Autorenew","ChainAnalyzerStatsDialogFromContext","Grow","in","Tooltip","Alert","sx","py","px","cursor","severity","AlertTitle","mb","Icon","StyledPulseSvgIcon","className","MemoizedPollingControlsFlexbox","memo","Button","Dialog","DialogActions","DialogContent","React","TransactionsDialog","onClose","props","React","Dialog","DialogContent","DialogActions","Button","variant","onClick","e","useEffect","useRef","useOnBlock","initialHeadNumber","onAddBlock","liveHead","pollingState","blocksWhilePausedRef","useRef","lastLiveHeadRef","useEffect","lastLiveHeadBlock","current","blocksWhilePausedBlock","liveHeadBlock","block","isNewBlock","push","length","TablePaginationActions","React","BlockChainPagination","count","onPageChange","page","rowsPerPage","React","TablePaginationActions","useMemo","useState","useChainPagination","pageSize","blockComponents","page","setPage","useState","paginatedBlockComponents","useMemo","startIndex","endIndex","slice","onPageChange","_event","newPage","styled","FlexCol","BlockListWrapperFlexBox","name","visibility","height","FlexCol","JsonViewerEx","React","useState","PayloadBuilderFlexbox","BuilderComponent","onBuild","props","payload","setPayload","useState","onBuildLocal","React","FlexCol","gap","JsonViewerEx","value","Button","FormControl","usePromise","createProducerChainStakeIntent","React","useState","FormControl","FormHelperText","TextField","toXL1BlockNumber","React","useState","BlockNumberTextField","errorMessage","onBlockNumberChanged","onChange","props","blockNumber","setBlockNumber","useState","handleChange","e","value","target","replaceAll","length","Number","undefined","toXL1BlockNumber","errored","React","FormControl","fullWidth","TextField","error","type","FormHelperText","sx","color","FormControl","FormHelperText","TextField","asAddress","isAddress","isDefined","React","useState","XyoAddressTextField","onAddressChanged","onChange","resetValue","props","address","setAddress","useState","addressError","setAddressError","previousResetValue","setPreviousResetValue","isDefined","handleChange","event","value","target","xyoAddress","asAddress","isAddress","undefined","Error","handleBlur","React","FormControl","fullWidth","TextField","error","onBlur","FormHelperText","sx","color","message","ProducerIntentBuilderForm","onBuild","delegate","setDelegate","useState","exp","setExp","nbf","setNbf","blockRangeError","setBlockRangeError","intentPayload","usePromise","undefined","Error","payload","createProducerChainStakeIntent","onBuildLocal","React","FormControl","fullWidth","XyoAddressTextField","label","name","onAddressChanged","required","size","BlockNumberTextField","errorMessage","message","onBlockNumberChanged","Button","disabled","variant","onClick","React","Button","FormControl","isAddress","TransferSchema","React","useMemo","useState","RemoveCircle","FormControl","Icon","IconButton","FlexRow","isAddress","isDefinedNotNull","toHex","BigIntInput","React","useEffect","useState","SingleTransferBuilderFlexbox","onTransferUpdated","onRemoveTransfer","singleTransfer","props","toAddress","setToAddress","useState","amount","setAmount","useEffect","transferAmount","isAddress","isDefinedNotNull","toHex","to","undefined","React","FlexRow","alignItems","gap","FormControl","fullWidth","XyoAddressTextField","label","name","onAddressChanged","required","size","BigIntInput","TextField","onChangeFixedPoint","IconButton","onClick","transferId","Icon","RemoveCircle","TransferBuilderForm","onBuild","fromAddress","setFromAddress","useState","transfers","setTransfers","epoch","Date","now","transferPayload","useMemo","isAddress","length","transfersRecord","transfer","to","amount","from","schema","TransferSchema","onBuildLocal","onTransferAdded","transferAmount","transferId","prev","onTransferRemoved","filter","onTransferUpdated","singleTransfer","map","React","FormControl","fullWidth","XyoAddressTextField","label","name","onAddressChanged","required","size","Button","onClick","variant","SingleTransferBuilderFlexbox","key","onRemoveTransfer","sx","width","disabled","TransferBuilderFlexbox","onBuild","props","React","PayloadBuilderFlexbox","gap","alignItems","BuilderComponent","TransferBuilderForm","FlexCol","isDefined","rateUnitToLabel","rateUnit","ViewAgendaOutlined","Tooltip","Icon","Typography","isUndefined","useEffect","useState","MetricTypography","animationDurationMs","disableAnimation","icon","label","metric","sx","props","displayValue","setDisplayValue","useState","isUndefined","useEffect","duration","startTime","Date","now","startValue","endValue","animate","elapsed","progress","Math","min","easeProgress","pow","currentValue","requestAnimationFrame","globalThis","isWholeNumber","undefined","Number","isInteger","formattedValue","toLocaleString","navigator","language","minimumFractionDigits","maximumFractionDigits","Typography","variant","mb","display","alignItems","gap","Icon","fontSize","component","lineHeight","BlockRateSpanTypography","range","span","sx","props","Tooltip","title","join","MetricTypography","icon","ViewAgendaOutlined","fontSize","metric","label","SpeedOutlined","BlockRateSpeedTypography","rate","rateUnitLabel","props","MetricTypography","icon","SpeedOutlined","fontSize","metric","label","TimelapseOutlined","BlockRateTimeTypography","timeUnit","timeDifference","sx","props","MetricTypography","icon","TimelapseOutlined","fontSize","metric","label","BlockRateFlexBox","blockRate","flexBoxProps","range","span","rate","timeUnit","timeDifference","rateUnitLabel","isDefined","rateUnitToLabel","FlexCol","alignItems","BlockRateSpeedTypography","BlockRateSpanTypography","BlockRateTimeTypography","GaugeContainer","GaugeReferenceArc","GaugeValueArc","isDefined","isUndefined","toBlocksPerMillisecond","rateValue","unit","isUndefined","conversions","millis","seconds","minutes","hours","days","weeks","isDefined","toBlocksPerSecond","toBlocksPerMinute","toBlocksPerHour","toBlocksPerDay","toBlocksPerWeek","BlockRateConversions","useTheme","useGaugeState","isDefined","useEffect","useState","GaugePointer","pointerColor","startAngle","theme","useTheme","strokeColor","isDefined","palette","error","dark","valueAngle","outerRadius","cx","cy","useGaugeState","currentAngle","setCurrentAngle","useState","useEffect","duration","startTime","Date","now","animationStartAngle","endAngle","animate","elapsed","progress","Math","min","easeProgress","pow","newAngle","globalThis","requestAnimationFrame","target","x","sin","y","cos","g","className","circle","r","fill","path","d","stroke","strokeWidth","useTheme","useGaugeState","isDefined","GaugeTicks","numTicks","minorTicksPerMajor","majorTickLength","minorTickLength","majorTickWidth","minorTickWidth","tickColor","theme","useTheme","startAngle","endAngle","outerRadius","cx","cy","useGaugeState","color","isDefined","vars","palette","text","secondary","ticks","totalAngle","i","angle","tickLength","tickStart","innerRadius","x1","Math","sin","y1","cos","x2","y2","push","line","className","key","stroke","strokeWidth","angleStep","j","minorAngle","minorTickLen","minorTickStart","minorInnerRadius","mx1","my1","mx2","my2","g","BlockRateSpeedGaugeContainer","blockRate","children","gaugeConfig","startAngle","endAngle","width","height","props","rate","timeUnit","targetBlockRate","targetBlockRateUnit","targetPosition","showTicks","converter","BlockRateConversions","maxGaugeValue","blocksPerMinute","undefined","normalizedValue","Math","min","GaugeContainer","value","valueMax","innerRadius","outerRadius","GaugeTicks","GaugeReferenceArc","GaugeValueArc","GaugePointer","FlexCol","isDefined","BlockRateSpeedGaugeWithLabel","blockRate","props","rateUnitLabel","isDefined","rate","rateUnitToLabel","timeUnit","FlexCol","BlockRateSpeedGaugeContainer","BlockRateSpeedTypography","CircularProgress","usePromise","buildRandomBlockChain","ArchivistConfigSchema","MemoryArchivist","flattenHydratedBlocks","React","useEffect","toAddress","id","toAddress","getChainId","ChainArchivistDecorator","Story","args","context","randomBlockChain","usePromise","buildRandomBlockChain","blockChainRenderProps","blockChainRenderPropsError","chainArchivist","MemoryArchivist","create","config","schema","ArchivistConfigSchema","name","flattened","flattenHydratedBlocks","insert","chainId","getChainId","useEffect","console","error","props","head","toReversed","_hash","React","CircularProgress","CircularProgress","usePromise","delay","buildRandomBlockChain","ArchivistConfigSchema","MemoryArchivist","flattenHydratedBlock","React","useEffect","useState","chainArchivistRef","ChainArchivistDelayedInsertDecorator","Story","context","firstBlock","setFirstBlock","useState","randomBlockChain","usePromise","buildRandomBlockChain","chainArchivist","MemoryArchivist","create","config","schema","ArchivistConfigSchema","name","delayedInsertError","hydratedBlock","flattened","flattenHydratedBlock","insert","prev","delay","useEffect","console","error","blockChainRenderProps","chainId","getChainId","args","props","head","_hash","React","CircularProgress"]}