@xyo-network/react-chain-blockchain 1.16.25 → 1.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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/Provider.tsx","../../src/context/analyzer/use.ts","../../src/context/chain/Context.ts","../../src/context/chain/Provider.tsx","../../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/ChainIteratorStore.ts","../../src/hooks/chain-iterator/useChainIteratorParams.ts","../../src/hooks/chain-iterator/useChainIteratorUpdatingHead.ts","../../src/hooks/useIterateChain.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/useDynamicBlockComponents.ts","../../src/components/block/helpers/blockProducer.ts","../../src/components/block/helpers/buildBlockChainRenderComponent.tsx","../../src/components/block/helpers/payloadCountsFromBlock.ts","../../src/components/block/hooks/usePayloadCountsFromBlock.ts","../../src/components/block/hooks/useStaticBlockComponents.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/Epoch.tsx","../../src/components/block/table/cell/lib/timeFunctions.ts","../../src/components/block/table/cell/Hash.tsx","../../src/components/FeatureNotAvailable.tsx","../../src/components/block/table/cell/hooks/useLinkedBlockItem.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/account/table/cell/AddressTableCell.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/render/static/flexbox/variants/Base.tsx","../../src/components/chain/list/Animated.tsx","../../src/components/chain/styled/BlockListWrapperFlexbox.tsx","../../src/components/chain/render/static/hooks/useStaticBlockRenderComponents.ts","../../src/components/chain/render/static/flexbox/variants/WithAnalysis.tsx","../../src/components/chain/render/static/flexbox/Flexbox.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/stories/ChainArchivistDecorator.tsx","../../src/lib/getChainArchivist.ts","../../src/lib/getChainId.ts","../../src/stories/ChainArchivistDelayedInsertDecorator.tsx","../../src/stories/ChainInfoContextDecorator.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 { AttoXL1 } from '@xyo-network/xl1-protocol'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol-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, 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-protocol'\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, TableRow, type TableRowProps,\n} from '@mui/material'\nimport 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 React, { useMemo } from 'react'\n\nimport { BlockEpochTableCellInner, BlockNumberTableCellInner } from '../../block/index.ts'\nimport { AddressTableCell, HashTableCell } from './cell/index.ts'\nimport { RawAmountTableCell } from './RawAmountTableCell.tsx'\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, blockNumber, debug, from, key, timestamp, to, type, txHash,\n } = row ?? {}\n\n const linkedTableCallProps = useMemo(() => ({ linked }), [linked])\n\n return (\n <TableRow key={key} {...props}>\n <HashTableCell hash={txHash} toolTipTitle={`Transaction Hash: ${txHash}`} {...linkedTableCallProps} />\n <BlockNumberTableCellInner blockNumber={blockNumber} {...linkedTableCallProps} />\n <BlockEpochTableCellInner epoch={timestamp} {...linkedTableCallProps} />\n <AddressTableCell address={from} toolTipTitle={`From Address: ${from}`} {...linkedTableCallProps} />\n <AddressTableCell address={to} toolTipTitle={`To Address: ${to}`} {...linkedTableCallProps} />\n {/* Intentionally not passing linked prop here till we know where a link would go */}\n <RawAmountTableCell amount={amount} type={type} />\n <TableCell>\n <RawInfoIconButton rawValue={debug as JsonValue} />\n </TableCell>\n </TableRow>\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))\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainAnalyzersContext } from './context.ts'\nimport type { ChainAnalyzers, ChainAnalyzersState } from './state.ts'\n\nexport interface ChainAnalyzersProviderProps extends PropsWithChildren {\n analyzers?: ChainAnalyzers\n}\n\nexport const ChainAnalyzersProvider: React.FC<ChainAnalyzersProviderProps> = ({ analyzers: analyzersProp, children }) => {\n const [analyzersState, setAnalyzersState] = useState<ChainAnalyzers>(analyzersProp ?? {} as ChainAnalyzers)\n const [statsUpdated, setStatsUpdated] = useState(Date.now())\n\n const analyzers = useMemo(() => ({ ...analyzersProp, ...analyzersState }), [analyzersProp])\n\n const addAnalyzers: ChainAnalyzersState['addAnalyzers'] = useCallback((analyzers: ChainAnalyzersState['analyzers']) => {\n if (isUndefined(analyzers)) return\n setAnalyzersState(prev => ({ ...prev, ...analyzers }))\n }, [])\n\n const onBlock = useCallback(async (hydratedBlock: HydratedBlock) => {\n await Promise.resolve()\n for (const analyzer of Object.values(analyzers)) {\n void analyzer.onBlock(hydratedBlock)\n setStatsUpdated(Date.now())\n }\n }, [analyzers])\n\n const value: ChainAnalyzersState = useMemo(() => ({\n analyzers, addAnalyzers, onBlock, statsUpdated, provided: true,\n }), [analyzers, addAnalyzers, onBlock, statsUpdated])\n\n return (\n <ChainAnalyzersContext value={value}>{children}</ChainAnalyzersContext>\n )\n}\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 { ChainInfoState } from './State.ts'\n\nexport const ChainInfoContext = createContextEx<ChainInfoState>()\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { ChainInfoContext } from './Context.ts'\nimport type { ChainInfoState } from './State.ts'\n\ninterface ChainInfoProviderProps extends PropsWithChildren, Omit<ChainInfoState, 'provided'> {\n}\n\nexport const ChainInfoProvider: React.FC<ChainInfoProviderProps> = ({\n children, chainArchivist: chainArchivistProp, chainId: chainIdProp, chainIterator: chainIteratorProp,\n}) => {\n const [chainArchivist, setChainArchivist] = useState<ChainInfoState['chainArchivist']>(chainArchivistProp)\n const [chainId, setChainId] = useState<ChainInfoState['chainId']>(chainIdProp)\n const [chainIterator, setChainIterator] = useState<ChainInfoState['chainIterator']>(chainIteratorProp)\n\n const updateChainArchivist = (chainArchivist: ChainInfoState['chainArchivist']) => {\n setChainArchivist(chainArchivist)\n }\n const updateChainId = (chainId: ChainInfoState['chainId']) => {\n setChainId(chainId)\n }\n const updateChainIterator = (chainIterator: ChainInfoState['chainIterator']) => {\n setChainIterator(chainIterator)\n }\n\n useMemo(() => {\n updateChainArchivist(chainArchivistProp)\n }, [chainArchivistProp])\n\n useMemo(() => {\n updateChainId(chainIdProp)\n }, [chainIdProp])\n\n useMemo(() => {\n updateChainIterator(chainIteratorProp)\n }, [chainIteratorProp])\n\n const chainState: ChainInfoState = useMemo(() => ({\n chainArchivist,\n chainId,\n chainIterator,\n updateChainArchivist,\n updateChainId,\n updateChainIterator,\n provided: true,\n }), [chainArchivist, chainId, chainIterator, updateChainArchivist, updateChainId, updateChainIterator])\n\n return (\n <ChainInfoContext value={chainState}>\n {children}\n </ChainInfoContext>\n )\n}\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-protocol'\nimport { defaultTransactionFees, toXL1BlockNumber } from '@xyo-network/xl1-protocol'\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.FormEvent<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 { axiosJsonConfig } from '@xylabs/axios'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport { Account } from '@xyo-network/account'\nimport type { ApiEnvelope } from '@xyo-network/api-models'\nimport { ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { TransactionBoundWitnessFields } from '@xyo-network/xl1-protocol'\nimport { buildTransaction } from '@xyo-network/xl1-protocol-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 } from '@xylabs/sdk-js'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport React, {\n Fragment, useMemo, useState,\n} 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 const [showError, setShowError] = useState(false)\n useMemo(() => transactionsError ? setShowError(true) : setShowError(false), [transactionsError])\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 {/* eslint-disable-next-line @typescript-eslint/no-unused-vars */}\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={showError} onClose={() => setShowError(false)}>\n <ErrorRender error={transactionsError} scope=\"TransactionsQuickTipButton\" />\n </Snackbar>\n </>\n )\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport { ChainBlockNumberIterationService } from '@xyo-network/chain-services'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport type { EventingChainBlockNumberIteratorService, HeadEventArgs } from '@xyo-network/xl1-protocol-sdk'\nimport { hydrateBlock } from '@xyo-network/xl1-protocol-sdk'\n\nexport type Listener = (...args: Array<unknown>) => void\n\nexport type ChainIteratorStoreValues = { chainIterator: ChainBlockNumberIterationService; error?: Error; head: HydratedBlock }\n\nexport class ChainIteratorStore {\n private _chainIterator: EventingChainBlockNumberIteratorService | undefined\n private _externalListeners: Listener[] = []\n private _internalUnsubscribes: WeakRef<() => void>[] = []\n private _values: ChainIteratorStoreValues | undefined\n\n get chainIterator(): EventingChainBlockNumberIteratorService {\n return assertEx(this._chainIterator, () => 'ChainIteratorStore has not been initialized')\n }\n\n get values(): ChainIteratorStoreValues {\n return assertEx(this._values, () => 'ChainIteratorStore values have not been initialized')\n }\n\n static async create(params: XyoChainIteratorParams): Promise<ChainIteratorStore> {\n // create the classes\n const instance = new ChainIteratorStore()\n const chainIterator = await ChainBlockNumberIterationService.create(params)\n\n // set the chainIterator\n instance._chainIterator = chainIterator\n\n const head = await chainIterator.head()\n const hydratedHead = await hydrateBlock({ chainMap: params.chainMap }, await PayloadBuilder.hash(head))\n\n // set the initial values\n instance._values = {\n chainIterator,\n head: hydratedHead,\n }\n\n // set the internal listeners\n const headUpdatedListener = async ({ blocks }: HeadEventArgs) => {\n const hydratedBlock = await hydrateBlock({ chainMap: params.chainMap }, await PayloadBuilder.hash(blocks?.[0]))\n instance._values = {\n chainIterator,\n head: hydratedBlock,\n }\n instance.emitChange()\n }\n\n // Add listener to the chainIterator\n const unsubscribe = chainIterator.on('headUpdated', headUpdatedListener)\n\n // track the internal listener\n const weakRefListener = new WeakRef(unsubscribe)\n instance._internalUnsubscribes.push(weakRefListener)\n\n return instance\n }\n\n cleanup() {\n for (const unsubscribeRef of this._internalUnsubscribes) {\n const unsubscribe = unsubscribeRef.deref()\n unsubscribe?.()\n }\n }\n\n getSnapshot(): Partial<ChainIteratorStoreValues> {\n return this.values\n }\n\n subscribe(onStoreChange: Listener) {\n this._externalListeners.push(onStoreChange)\n return () => {\n this._externalListeners = this._externalListeners.filter(l => l !== onStoreChange)\n }\n }\n\n private emitChange() {\n for (const listener of this._externalListeners) {\n listener()\n }\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { type Hash, isHash } from '@xylabs/sdk-js'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { getDefaultConfig } from '@xyo-network/xl1-protocol-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 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 = getDefaultConfig()\n config.chain.id = chainId\n return {\n chainMap, chainId, config, head: resolvedHead, name,\n }\n }\n }, [chainMap, chainId, head])\n}\n","import { toHex } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { findMostRecentBlock } from '@xyo-network/chain-protocol'\nimport type { ChainBlockNumberIteratorService } from '@xyo-network/xl1-protocol-sdk'\nimport { useEffect, useState } from 'react'\n\nexport interface ChainIteratorUpdatingHeadParams {\n chainArchivist?: ArchivistInstance\n chainIterator?: ChainBlockNumberIteratorService\n interval?: number\n maxBlocks?: number\n}\n\n// Polls the chain archivist for new blocks and updates the chain iterator head\nexport const useChainIteratorUpdatingHead = ({\n chainIterator, interval = 500, maxBlocks, chainArchivist,\n}: ChainIteratorUpdatingHeadParams): Error | undefined => {\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n let pollArchivistTimeout: NodeJS.Timeout | undefined\n\n const pollingFunction = async () => {\n if (chainIterator && chainArchivist) {\n try {\n const currentHead = await chainIterator.head()\n const mostRecentBlock = await findMostRecentBlock(chainArchivist)\n if (mostRecentBlock) {\n const currentBlockNumber = currentHead?.block ?? -1\n const nextBlockNumber = mostRecentBlock.block\n if (nextBlockNumber > currentBlockNumber) {\n console.debug('Found more recent head:', toHex(nextBlockNumber))\n console.debug('Updating head:', `${toHex(nextBlockNumber)}`)\n await chainIterator.updateHead(mostRecentBlock)\n console.debug('Updated head:', `${toHex(nextBlockNumber)}`)\n }\n }\n } catch (e) {\n setError(e as Error)\n console.error(e)\n }\n }\n\n // Schedule the next polling function\n // disabling because it looks like a false positive\n // eslint-disable-next-line react-web-api/no-leaked-timeout\n pollArchivistTimeout = setTimeout(() => void pollingFunction(), interval)\n }\n\n // Start the polling function\n void pollingFunction()\n\n return () => clearInterval(pollArchivistTimeout)\n }, [interval, chainIterator, chainArchivist, maxBlocks])\n\n return error\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport { ChainBlockNumberIterationService } from '@xyo-network/chain-services'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness, HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport type { PayloadMapRead } from '@xyo-network/xl1-protocol-sdk'\nimport { hydrateBlock } from '@xyo-network/xl1-protocol-sdk'\n\nconst getHydratedBlock = async (chainMap: PayloadMapRead<WithStorageMeta<Payload>>, head: BlockBoundWitness) => {\n const headHash = await PayloadBuilder.hash(head)\n return await hydrateBlock({ chainMap }, headHash)\n}\n\nconst iterateChain = async (chainIteratorParams?: XyoChainIteratorParams, maxDepth?: number) => {\n const { chainMap, head } = chainIteratorParams ?? {} as XyoChainIteratorParams\n const headPayload = assertEx(isBlockBoundWitness(head) ? head : null, () => 'Head is not a Block Bound Witness')\n // confirm the head is a block\n const headBlockBoundWitness = assertEx(isBlockBoundWitness(headPayload) ? headPayload : null, () => 'Invalid head block')\n // create the chain iterator\n const chainIterator = await ChainBlockNumberIterationService.create({ head: headBlockBoundWitness, chainMap })\n\n // get head of the chain\n const chainHead = await chainIterator.head()\n let block = await getHydratedBlock(chainMap, chainHead)\n\n // create the blocks array\n const blocks: HydratedBlockWithHashMeta[] = [block]\n\n // track the depth\n let depth = 1\n // iterate the chain\n while (true) {\n // get the next block\n const [, next] = await chainIterator.previous(block[0].block, 2)\n\n const nextHydratedBlock = await getHydratedBlock(chainMap, next)\n // push the next block\n blocks.push(nextHydratedBlock)\n // set the next block as the current block\n block = nextHydratedBlock\n // increment the depth\n depth++\n // if max depth is set and we have reached it, break\n if ((maxDepth !== undefined && depth >= maxDepth) || block?.[0].block === 0) break\n }\n return blocks\n}\n\nexport const useIterateChain = (\n chainIteratorParams?: XyoChainIteratorParams,\n maxDepth?: number,\n) => {\n return usePromise(async () => {\n return await iterateChain(chainIteratorParams, maxDepth)\n }, [chainIteratorParams, maxDepth])\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\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 { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\n\nexport const txsFromBlock = async (block: HydratedBlockWithHashMeta) => {\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-protocol'\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 { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport type { ComponentType } from 'react'\nimport { useState } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport type {\n BlockChainRenderComponent,\n BlockComponentProps, BlockComponentWithTxsProps,\n} from '../../../types/index.ts'\nimport { buildBlockChainRenderComponent } from '../helpers/index.ts'\n\nexport const useDynamicBlockComponents = (BlockComponent: ComponentType<BlockComponentWithTxsProps>, params?: XyoChainIteratorParams, maxBlocks?: number) => {\n const { chainMap } = params ?? {}\n const [blockChainRenderComponents, setBlockChainRenderComponents] = useState<BlockChainRenderComponent[]>([])\n\n const { onBlock } = useChainAnalyzersContext()\n\n const onAddBlock = async (block: HydratedBlockWithHashMeta | undefined) => {\n if (!block || !chainMap) return\n\n const blockComponentProps: BlockComponentProps = { block }\n const newBlockComponent = await buildBlockChainRenderComponent(BlockComponent, blockComponentProps)\n\n if (block?.[0].block !== blockChainRenderComponents[0]?.block?.[0].block) {\n void onBlock?.(block)\n\n setBlockChainRenderComponents((blockComponents) => {\n const newBlockComponents = [newBlockComponent, ...blockComponents]\n\n if (maxBlocks !== undefined && newBlockComponents.length > maxBlocks) {\n // trim the last block if we exceed the max\n newBlockComponents.pop()\n }\n\n return newBlockComponents\n })\n }\n }\n\n return { blockChainRenderComponents, onAddBlock }\n}\n","import type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\n\nexport const blockProducer = (block: BlockBoundWitness) => {\n return block.addresses[0]\n}\n","import 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 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 HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nexport const payloadCountsFromBlock = ([block, payloads]: HydratedBlock): [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 => !publicPayloads.includes(hash))\n return [publicPayloads.length, privateHashes.length]\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { useMemo } from 'react'\n\nimport { payloadCountsFromBlock } from '../helpers/index.ts'\n\nexport const usePayloadCountsFromBlock = (block?: HydratedBlock): [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 { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport type { ComponentType } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport type { BlockComponentProps, BlockComponentWithTxsProps } from '../../../types/index.ts'\nimport { buildBlockChainRenderComponent } from '../helpers/index.ts'\n\nexport const useStaticBlockComponents = (\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n params?: XyoChainIteratorParams,\n blocks?: HydratedBlockWithHashMeta[],\n) => {\n const { onBlock } = useChainAnalyzersContext()\n\n const [blockComponents, blockComponentsError] = usePromise(async () => {\n const resolvedBlockWithStorage = blocks ?? []\n if (!params?.chainMap) return []\n\n return await Promise.all(resolvedBlockWithStorage?.map(async (block) => {\n // TODO: Figure out why this onBlock is always defined (per TS), even though the context is optional?\n if (isDefined(onBlock)) {\n await onBlock(block)\n }\n\n const blockComponentProps: BlockComponentProps = { block, defaultExpanded: true }\n return await buildBlockChainRenderComponent(BlockComponent, blockComponentProps)\n }))\n }, [blocks, params, BlockComponent])\n\n return { blockComponents, errors: blockComponentsError }\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-protocol'\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-protocol'\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,\n TableCell, Tooltip,\n Typography,\n} from '@mui/material'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport type { BlockHeaderEventNouns } from '../../hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockNumberTableCellProps extends BlockTableCellProps {}\n\nexport const BlockNumberTableCell: React.FC<BlockNumberTableCellProps> = ({\n block, linked, ...props\n}) => {\n const blockNumber = block?.[0].block\n\n return <BlockNumberTableCellInner blockNumber={blockNumber} linked={linked} {...props} />\n}\n\nexport const BlockNumberTableCellInner: React.FC<BlockNumberTableCellProps & { blockNumber?: number; linked?: boolean }> = ({\n blockNumber, linked, ...props\n}) => {\n const [ref, dispatch] = useEvent<HTMLTableCellElement, BlockHeaderEventNouns>()\n const handleClick = () => dispatch('block-number', 'click', blockNumber?.toString() ?? '')\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 {\n Skeleton,\n TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport {\n type BlockTableCellProps, dateFormat, timeAgo,\n} 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 { 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)\n }\n }\n\n return [ref, handleClick]\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 { TableRow, useTheme } from '@mui/material'\nimport { alphaCss } from '@xylabs/react-theme'\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 { 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, sx, ...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 const theme = useTheme()\n\n return (\n <TableRow\n onClick={linked ? handleClick : undefined}\n ref={ref as Ref<HTMLTableRowElement> | undefined}\n sx={{\n 'cursor': linked ? 'pointer' : 'default',\n 'overflowY': 'scroll',\n '&:hover': { backgroundColor: alphaCss(theme.vars.palette.secondary.light, 0.15) },\n ...sx,\n }}\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 </TableRow>\n )\n}\n","import type { TableCellProps } from '@mui/material'\nimport { TableCell, Tooltip } from '@mui/material'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport { BlockAddressChip } from '../../../block/index.ts'\n\nexport interface AddressTableCellProps extends TableCellProps {\n address?: string\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const AddressTableCell: React.FC<AddressTableCellProps> = ({\n address, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, dispatch] = useEvent()\n const handleClick = () => dispatch('address', 'click', address)\n return (\n <TableCell ref={ref} sx={{ cursor: linked ? 'pointer' : 'default', ...sx }} {...props}>\n <Tooltip title={toolTipTitle}>\n <BlockAddressChip address={address} onClick={handleClick} />\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 { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface HashTableCellProps extends TableCellProps {\n hash?: Hash\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const HashTableCell: React.FC<HashTableCellProps> = ({\n hash, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, dispatch] = useEvent<HTMLTableCellElement, BalanceHistoryEventNouns>()\n const handleClick = () => dispatch('tx-hash', 'click', hash)\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={handleClick} 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 { useEvent } from '@xyo-network/react-event'\nimport { XL1Amount } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport type { BalanceHistoryEventNouns } from './types/index.ts'\n\nexport interface RawAmountTableCellProps extends TableCellProps {\n amount?: bigint\n linked?: boolean\n type?: BalanceTransactionType\n}\n\nexport const RawAmountTableCell: React.FC<RawAmountTableCellProps> = ({\n amount, linked, sx, type, ...props\n}) => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BalanceHistoryEventNouns>()\n const handleClick = () => dispatch('amount', 'click', isDefined(amount) ? toHex(amount) : '')\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={handleClick} 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<'amount' | 'blockNumber' | 'tx-hash'>\n\nexport type TableHeadingLabels = 'Tx Hash' | 'BlockNumber' | 'Timestamp' | 'From' | 'To' | 'Amount' | 'Debug'\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 '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 } from '@xyo-network/xl1-protocol'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol-sdk'\nimport {\n useCallback, useMemo, useState,\n} 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\n useMemo(() => {\n if (isDefined(history)) {\n setPagedHistory((pagedHistory) => {\n return [...pagedHistory ?? [], ...history]\n })\n }\n }, [history])\n\n const firstBlock = isDefined(history) ? history.at(0)?.blockNumber : undefined\n const lastBlock = isDefined(history) ? history.at(-1)?.blockNumber : undefined\n const historyComplete = isDefined(history) && history.length === 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 }, [firstBlock, 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 {\n ListItem, styled, Typography,\n} 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/payload-model'\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\nexport const StyledListItem = styled(ListItem)(() => ({\n paddingTop: 0,\n paddingBottom: 0,\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 {\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 = 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-protocol'\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 blocksWhilePaused = 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 lastLiveHead = useRef<HydratedBlock | undefined>(liveHead)\n\n useEffect(() => {\n const lastLiveHeadBlock = lastLiveHead.current?.[0]\n const blocksWhilePausedBlock = lastLiveHead.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 lastLiveHead.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 blocksWhilePaused.current.push(liveHead)\n } else if (pollingState === 'running') {\n // if the polling state is running, add the blocksWhilePaused\n if (blocksWhilePaused.current.length > 0) {\n for (const block of blocksWhilePaused.current) {\n void onAddBlock(block)\n }\n // clear the blocksWhilePaused array\n blocksWhilePaused.current = []\n }\n // add the liveHead block\n void onAddBlock(liveHead)\n }\n }\n }, [liveHead, pollingState])\n\n return blocksWhilePaused.current\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 { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { BlockChainRenderFlexboxProps } from '../../../../../../types/index.ts'\nimport { BlockHeadingFlexbox } from '../../../../../block/index.ts'\nimport { BlockListAnimated } from '../../../../list/index.ts'\nimport { BlockChainPagination } from '../../../../pagination/index.ts'\nimport { ChainAnalyzerStatsDialogFromContext } from '../../../../stats/index.ts'\nimport { useStaticBlockRenderComponents } from '../../hooks/index.ts'\n\nexport const StaticListBase: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const {\n blockComponents, errors, paginatedBlockComponents, onPageChange, page, pageSize,\n } = useStaticBlockRenderComponents(BlockHeadingFlexbox, blockChainRenderProps)\n\n return (\n <FlexCol alignItems=\"start\" gap={2} width=\"100%\" {...props}>\n {errors?.map(error => <ErrorRender error={error} key={error.name} scope=\"StaticBlockchainFlexboxInner\" />)}\n {(paginatedBlockComponents?.length ?? 0) > 0\n ? (\n <FlexGrowRow justifyContent=\"space-between\" width=\"100%\">\n <ChainAnalyzerStatsDialogFromContext />\n <BlockChainPagination count={blockComponents?.length ?? 0} onPageChange={onPageChange} page={page} rowsPerPage={pageSize} />\n </FlexGrowRow>\n )\n : null}\n <BlockListAnimated blockChainRenderComponents={paginatedBlockComponents} />\n </FlexCol>\n )\n}\n","import { AnimatedList } from '@xylabs/react-animation'\nimport React from 'react'\n\nimport type { BlockListComponentProps } from '../../../types/index.ts'\nimport { BlockListWrapperFlexBox } from '../styled/index.ts'\n\nexport const BlockListAnimated: React.FC<BlockListComponentProps> = ({ blockChainRenderComponents }) => {\n return (\n <BlockListWrapperFlexBox\n alignItems=\"stretch\"\n width=\"100%\"\n >\n <AnimatedList\n fullWidth\n items={blockChainRenderComponents}\n />\n </BlockListWrapperFlexBox>\n )\n}\n","import { styled } from '@mui/material'\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 = 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 { CreatableName } from '@xylabs/sdk-js'\nimport { exists } from '@xylabs/sdk-js'\nimport type { ComponentType } from 'react'\nimport { useMemo } from 'react'\n\nimport { useChainIteratorParams, useIterateChain } from '../../../../../hooks/index.ts'\nimport type { BlockChainRenderProps, BlockComponentWithTxsProps } from '../../../../../types/index.ts'\nimport { useStaticBlockComponents } from '../../../../block/index.ts'\nimport { useChainPagination } from '../../../pagination/index.ts'\n\nconst DEFAULT_PAGE_SIZE = 25\n\n// This is a hook but could easily be bundled up in a class with callbacks\nexport const useStaticBlockRenderComponents = (BlockComponent: ComponentType<BlockComponentWithTxsProps>, blockChainRenderProps?: BlockChainRenderProps) => {\n const { maxBlocks } = blockChainRenderProps ?? {}\n const pageSize = blockChainRenderProps?.pageSize ?? DEFAULT_PAGE_SIZE\n\n const chainIteratorParams = useMemo(() => blockChainRenderProps ?? { name: 'unknown' as CreatableName }, [blockChainRenderProps])\n\n const [params, paramsError] = useChainIteratorParams(chainIteratorParams)\n\n const [blocks, blocksError] = useIterateChain(params, maxBlocks)\n\n const { blockComponents, errors: blockComponentsError } = useStaticBlockComponents(BlockComponent, params, blocks)\n\n const {\n onPageChange, page, paginatedBlockComponents,\n } = useChainPagination(pageSize, blockComponents)\n\n return {\n paginatedBlockComponents,\n blockComponents,\n errors: [paramsError, blocksError, blockComponentsError].filter(exists),\n onPageChange,\n page,\n pageSize,\n }\n}\n","import { isAddress } from '@xylabs/sdk-js'\nimport { ChainProducersAnalyzer } from '@xyo-network/chain-analyze'\nimport React, { useMemo } from 'react'\n\nimport type { ChainAnalyzers } from '../../../../../../context/index.ts'\nimport { ChainAnalyzersProvider } from '../../../../../../context/index.ts'\nimport type { BlockChainRenderFlexboxProps } from '../../../../../../types/index.ts'\nimport { StaticListBase } from './Base.tsx'\n\nexport const WithAnalysis: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const { chainId } = blockChainRenderProps ?? {}\n\n const analyzers = useMemo(() => {\n if (isAddress(chainId)) {\n return { producers: new ChainProducersAnalyzer() } as ChainAnalyzers\n }\n }, [chainId])\n\n return (\n <ChainAnalyzersProvider analyzers={analyzers}>\n <StaticListBase blockChainRenderProps={blockChainRenderProps} {...props} />\n </ChainAnalyzersProvider>\n )\n}\n","import { StaticListBase, WithAnalysis } from './variants/index.ts'\n\nexport const StaticBlockchainRenderFlexBox = { Base: StaticListBase, WithAnalysis }\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\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-protocol'\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-protocol'\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 { asAddress, isAddress } from '@xylabs/sdk-js'\nimport React, { useMemo, 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 useMemo(() => setAddress(''), [resetValue])\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n onChange?.(event)\n\n const xyoAddress = asAddress(value)\n if (isAddress(xyoAddress)) {\n onAddressChanged?.(xyoAddress)\n }\n\n setAddressError(undefined)\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-protocol'\nimport { TransferSchema } from '@xyo-network/xl1-protocol'\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 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: Date.now(),\n }\n }\n }, [fromAddress, transfers])\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 { isAddress, toHex } from '@xylabs/sdk-js'\nimport { BigIntInput } from '@xyo-network/react-shared'\nimport React, {\n useEffect, useMemo, useState,\n} 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 const transferAmount = useMemo(() => {\n if (isAddress(toAddress) && amount !== undefined) {\n return {\n ...singleTransfer,\n amount: toHex(amount),\n to: toAddress,\n }\n }\n }, [toAddress, amount])\n\n useEffect(() => {\n if (transferAmount) onTransferUpdated?.(transferAmount)\n }, [transferAmount])\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 { CircularProgress } from '@mui/material'\nimport type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport { flattenHydratedBlocks } from '@xyo-network/xl1-protocol-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 { assertEx } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { HttpBridgeConfig } from '@xyo-network/bridge-http'\nimport { HttpBridge, HttpBridgeConfigSchema } from '@xyo-network/bridge-http'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport interface BridgedChainArchivistParams {\n chainArchivistModuleId: ModuleIdentifier\n url: string\n}\n\nexport const getChainArchivistFromBridge = async (params: BridgedChainArchivistParams): Promise<ArchivistInstance> => {\n const { url, chainArchivistModuleId } = params\n const config: HttpBridgeConfig = { schema: HttpBridgeConfigSchema, client: { url } }\n const bridge = await HttpBridge.create({ config })\n\n const resolved = await bridge.resolve(chainArchivistModuleId)\n const mod = assertEx(resolved, () => `Module ${chainArchivistModuleId} not found`)\n return assertEx(asArchivistInstance(mod), () => `Module ${chainArchivistModuleId} is not an archivist`)\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 { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { flattenHydratedBlock } from '@xyo-network/xl1-protocol-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","import type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport { ChainBlockNumberIterationService } from '@xyo-network/chain-services'\nimport { findFirstMatching } from '@xyo-network/chain-utils'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { readPayloadMapFromStore } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\n\nimport { ChainInfoProvider } from '../context/index.ts'\nimport type { BridgedChainArchivistParams } from '../lib/index.ts'\nimport { getChainArchivistFromBridge, getChainId } from '../lib/index.ts'\n\nconst archivistConfig: BridgedChainArchivistParams = {\n url: 'http://localhost:8080',\n chainArchivistModuleId: 'XYOPublic:XYOChain:Chain',\n}\n\nexport const ChainInfoContextDecorator: Decorator = (Story, context) => {\n const [chainIdResponse] = usePromise(async () => {\n return await getChainId()\n }, [])\n\n const chainId = chainIdResponse\n\n const [chainArchivist] = usePromise(async () => {\n return await getChainArchivistFromBridge(archivistConfig)\n }, [])\n\n const [chainIterator] = usePromise(async () => {\n if (isDefined(chainArchivist) && isDefined(chainId)) {\n const firstMatch = assertEx(await findFirstMatching(chainArchivist), () => `No head found in archivist: ${chainArchivist.id} `)\n const head: BlockBoundWitness = assertEx(isBlockBoundWitness(firstMatch)\n ? firstMatch\n : undefined, () => `Expected a block bound witness: ${JSON.stringify(firstMatch)}`)\n const chainMap = readPayloadMapFromStore<WithStorageMeta<Payload>>(chainArchivist)\n return await ChainBlockNumberIterationService.create({ chainMap, head })\n }\n }, [chainArchivist, chainId])\n\n return (\n <ChainInfoProvider chainArchivist={chainArchivist} chainId={chainId} chainIterator={chainIterator}>\n <Story {...context} />\n </ChainInfoProvider>\n )\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","TableRow","RawInfoIconButton","React","useMemo","FlexCol","FlexRow","BWVerification","HashHeadingPaper","usePayloadHash","React","createContextEx","ChainAnalyzersContext","isUndefined","React","useCallback","useMemo","useState","ChainAnalyzersProvider","analyzers","analyzersProp","children","analyzersState","setAnalyzersState","useState","statsUpdated","setStatsUpdated","Date","now","useMemo","addAnalyzers","useCallback","isUndefined","prev","onBlock","hydratedBlock","Promise","resolve","analyzer","Object","values","value","provided","ChainAnalyzersContext","useContextEx","useChainAnalyzersContext","required","useContextEx","ChainAnalyzersContext","createContextEx","ChainInfoContext","React","useMemo","useState","ChainInfoProvider","children","chainArchivist","chainArchivistProp","chainId","chainIdProp","chainIterator","chainIteratorProp","setChainArchivist","useState","setChainId","setChainIterator","updateChainArchivist","updateChainId","updateChainIterator","useMemo","chainState","provided","React","ChainInfoContext","value","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","axiosJsonConfig","ErrorRender","FlexGrowCol","Account","ArchivistInsertQuerySchema","QueryBoundWitnessBuilder","PayloadBuilder","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","React","Fragment","useMemo","useState","assertEx","ChainBlockNumberIterationService","PayloadBuilder","hydrateBlock","ChainIteratorStore","_chainIterator","_externalListeners","_internalUnsubscribes","_values","chainIterator","assertEx","values","create","params","instance","ChainBlockNumberIterationService","head","hydratedHead","hydrateBlock","chainMap","PayloadBuilder","hash","headUpdatedListener","blocks","hydratedBlock","emitChange","unsubscribe","on","weakRefListener","WeakRef","push","cleanup","unsubscribeRef","deref","getSnapshot","subscribe","onStoreChange","filter","l","listener","usePromise","isHash","assertEx","isDefined","BoundWitnessBuilder","isBlockBoundWitness","getDefaultConfig","resolveDefinedHead","head","chainArchivist","headPayload","get","undefined","currentHead","BoundWitnessBuilder","build","assertEx","isBlockBoundWitness","JSON","stringify","useChainIteratorParams","chainMap","chainId","name","usePromise","isDefined","isHash","result","foundResult","resolvedHead","config","getDefaultConfig","chain","id","toHex","findMostRecentBlock","useEffect","useState","useChainIteratorUpdatingHead","chainIterator","interval","maxBlocks","chainArchivist","error","setError","useState","useEffect","pollArchivistTimeout","pollingFunction","currentHead","head","mostRecentBlock","findMostRecentBlock","currentBlockNumber","block","nextBlockNumber","console","debug","toHex","updateHead","e","setTimeout","clearInterval","usePromise","assertEx","ChainBlockNumberIterationService","PayloadBuilder","isBlockBoundWitness","hydrateBlock","getHydratedBlock","chainMap","head","headHash","PayloadBuilder","hash","hydrateBlock","iterateChain","chainIteratorParams","maxDepth","headPayload","assertEx","isBlockBoundWitness","headBlockBoundWitness","chainIterator","ChainBlockNumberIterationService","create","chainHead","block","blocks","depth","next","previous","nextHydratedBlock","push","undefined","useIterateChain","usePromise","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","showError","setShowError","useMemo","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","open","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","useState","blockProducer","block","addresses","React","buildBlockChainRenderComponent","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","includes","length","useDynamicBlockComponents","BlockComponent","params","maxBlocks","chainMap","blockChainRenderComponents","setBlockChainRenderComponents","useState","onBlock","useChainAnalyzersContext","onAddBlock","block","blockComponentProps","newBlockComponent","buildBlockChainRenderComponent","blockComponents","newBlockComponents","undefined","length","pop","useMemo","usePayloadCountsFromBlock","block","useMemo","payloadCountsFromBlock","undefined","usePromise","isDefined","useStaticBlockComponents","BlockComponent","params","blocks","onBlock","useChainAnalyzersContext","blockComponents","blockComponentsError","usePromise","resolvedBlockWithStorage","chainMap","Promise","all","map","block","isDefined","blockComponentProps","defaultExpanded","buildBlockChainRenderComponent","errors","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","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","useEvent","React","BlockNumberTableCell","block","linked","props","blockNumber","React","BlockNumberTableCellInner","ref","dispatch","useEvent","handleClick","toString","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","useEvent","useLinkedBlockItem","noun","data","ref","dispatch","useEvent","handleClick","event","preventDefault","stopPropagation","undefined","console","warn","selection","globalThis","getSelection","isTextSelected","toString","length","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","TableRow","useTheme","alphaCss","usePayloadRootHash","React","useMemo","BlockChainTableRow","block","deepValidation","defaultExpanded","linked","sx","props","linkedTableCellProps","useMemo","defaultTableCellProps","hash","usePayloadRootHash","ref","handleClick","useLinkedBlockItem","theme","useTheme","React","TableRow","onClick","undefined","backgroundColor","alphaCss","vars","palette","secondary","light","BlockNumberTableCell","align","BlockHashTableCell","BlockEpochTableCell","BlockProducerTableCell","BlockTransactionCountTableCell","BlockPayloadCountsTableCell","BlockVerificationTableCell","BlockJsonViewTableCell","TableCell","Tooltip","useEvent","React","AddressTableCell","address","linked","toolTipTitle","sx","props","ref","dispatch","useEvent","handleClick","React","TableCell","cursor","Tooltip","title","BlockAddressChip","onClick","Link","TableCell","Tooltip","Typography","ellipsize","isDefined","useEvent","React","HashTableCell","hash","linked","toolTipTitle","sx","props","ref","dispatch","useEvent","handleClick","shortenedHash","isDefined","ellipsize","React","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","cursor","Link","TableCell","Tooltip","isDefined","toHex","useEvent","XL1Amount","React","RawAmountTableCell","amount","linked","sx","type","props","ref","dispatch","useEvent","handleClick","isDefined","toHex","formatAmount","xl1Amount","XL1Amount","toString","undefined","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","React","TableCell","Tooltip","title","Link","onClick","cursor","span","BalanceHistoryTableRow","linked","row","props","amount","blockNumber","debug","from","key","timestamp","to","type","txHash","linkedTableCallProps","useMemo","React","TableRow","HashTableCell","hash","toolTipTitle","BlockNumberTableCellInner","BlockEpochTableCellInner","epoch","AddressTableCell","address","RawAmountTableCell","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","history","balance","truncated","AttoXL1","undefined","isDefined","React","FlexCol","ErrorRender","scope","Typography","variant","gutterBottom","formatBalanceMagnitude","at","blockNumber","AccountBalanceHistoryTableEx","isDefined","useAccountBalanceHistory","useCallback","useMemo","useState","usePagedAccountBalanceHistory","address","viewer","maxPage","updatedBlockRange","setUpdatedBlockRange","useState","pagedHistory","setPagedHistory","results","error","loading","useAccountBalanceHistory","history","truncated","useMemo","isDefined","firstBlock","at","blockNumber","undefined","lastBlock","historyComplete","length","updateRange","useCallback","newEndBlock","Autorenew","Pause","Alert","AlertTitle","Grow","Icon","IconButton","Tooltip","FlexRow","React","memo","QueryStats","Dialog","DialogContent","DialogTitle","IconButton","React","useState","ListItem","styled","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","StyledListItem","styled","ListItem","paddingTop","paddingBottom","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","blocksWhilePaused","useRef","lastLiveHead","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","ErrorRender","FlexCol","FlexGrowRow","React","AnimatedList","React","styled","FlexCol","BlockListWrapperFlexBox","name","visibility","height","BlockListAnimated","blockChainRenderComponents","React","BlockListWrapperFlexBox","alignItems","width","AnimatedList","fullWidth","items","exists","useMemo","DEFAULT_PAGE_SIZE","useStaticBlockRenderComponents","BlockComponent","blockChainRenderProps","maxBlocks","pageSize","chainIteratorParams","useMemo","name","params","paramsError","useChainIteratorParams","blocks","blocksError","useIterateChain","blockComponents","errors","blockComponentsError","useStaticBlockComponents","onPageChange","page","paginatedBlockComponents","useChainPagination","filter","exists","StaticListBase","blockChainRenderProps","props","blockComponents","errors","paginatedBlockComponents","onPageChange","page","pageSize","useStaticBlockRenderComponents","BlockHeadingFlexbox","React","FlexCol","alignItems","gap","width","map","error","ErrorRender","key","name","scope","length","FlexGrowRow","justifyContent","ChainAnalyzerStatsDialogFromContext","BlockChainPagination","count","rowsPerPage","BlockListAnimated","blockChainRenderComponents","isAddress","ChainProducersAnalyzer","React","useMemo","WithAnalysis","blockChainRenderProps","props","chainId","analyzers","useMemo","isAddress","producers","ChainProducersAnalyzer","React","ChainAnalyzersProvider","StaticListBase","StaticBlockchainRenderFlexBox","Base","StaticListBase","WithAnalysis","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","React","useMemo","useState","XyoAddressTextField","onAddressChanged","onChange","resetValue","props","address","setAddress","useState","addressError","setAddressError","useMemo","handleChange","event","value","target","xyoAddress","asAddress","isAddress","undefined","handleBlur","Error","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","toHex","BigIntInput","React","useEffect","useMemo","useState","SingleTransferBuilderFlexbox","onTransferUpdated","onRemoveTransfer","singleTransfer","props","toAddress","setToAddress","useState","amount","setAmount","transferAmount","useMemo","isAddress","undefined","toHex","to","useEffect","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","transferPayload","useMemo","isAddress","length","transfersRecord","transfer","to","amount","from","schema","TransferSchema","epoch","Date","now","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","CircularProgress","usePromise","MemoryArchivist","ArchivistConfigSchema","buildRandomBlockChain","flattenHydratedBlocks","React","useEffect","assertEx","asArchivistInstance","HttpBridge","HttpBridgeConfigSchema","getChainArchivistFromBridge","params","url","chainArchivistModuleId","config","schema","HttpBridgeConfigSchema","client","bridge","HttpBridge","create","resolved","resolve","mod","assertEx","asArchivistInstance","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","MemoryArchivist","ArchivistConfigSchema","buildRandomBlockChain","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","usePromise","assertEx","isDefined","ChainBlockNumberIterationService","findFirstMatching","isBlockBoundWitness","readPayloadMapFromStore","React","archivistConfig","url","chainArchivistModuleId","ChainInfoContextDecorator","Story","context","chainIdResponse","usePromise","getChainId","chainId","chainArchivist","getChainArchivistFromBridge","chainIterator","isDefined","firstMatch","assertEx","findFirstMatching","id","head","isBlockBoundWitness","undefined","JSON","stringify","chainMap","readPayloadMapFromStore","ChainBlockNumberIterationService","create","React","ChainInfoProvider"]}
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/Provider.tsx","../../src/context/analyzer/use.ts","../../src/context/chain/Context.ts","../../src/context/chain/Provider.tsx","../../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/ChainIteratorStore.ts","../../src/hooks/chain-iterator/useChainIteratorParams.ts","../../src/hooks/chain-iterator/useChainIteratorUpdatingHead.ts","../../src/hooks/useIterateChain.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/useDynamicBlockComponents.ts","../../src/components/block/helpers/blockProducer.ts","../../src/components/block/helpers/buildBlockChainRenderComponent.tsx","../../src/components/block/helpers/payloadCountsFromBlock.ts","../../src/components/block/hooks/usePayloadCountsFromBlock.ts","../../src/components/block/hooks/useStaticBlockComponents.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/Epoch.tsx","../../src/components/block/table/cell/lib/timeFunctions.ts","../../src/components/block/table/cell/Hash.tsx","../../src/components/FeatureNotAvailable.tsx","../../src/components/block/table/cell/hooks/useLinkedBlockItem.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/account/table/cell/AddressTableCell.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/render/static/flexbox/variants/Base.tsx","../../src/components/chain/list/Animated.tsx","../../src/components/chain/styled/BlockListWrapperFlexbox.tsx","../../src/components/chain/render/static/hooks/useStaticBlockRenderComponents.ts","../../src/components/chain/render/static/flexbox/variants/WithAnalysis.tsx","../../src/components/chain/render/static/flexbox/Flexbox.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/stories/ChainArchivistDecorator.tsx","../../src/lib/getChainArchivist.ts","../../src/lib/getChainId.ts","../../src/stories/ChainArchivistDelayedInsertDecorator.tsx","../../src/stories/ChainInfoContextDecorator.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 { AttoXL1 } from '@xyo-network/xl1-protocol'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol-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, 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-protocol'\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, TableRow, type TableRowProps,\n} from '@mui/material'\nimport 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 React, { useMemo } from 'react'\n\nimport { BlockEpochTableCellInner, BlockNumberTableCellInner } from '../../block/index.ts'\nimport { AddressTableCell, HashTableCell } from './cell/index.ts'\nimport { RawAmountTableCell } from './RawAmountTableCell.tsx'\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, blockNumber, debug, from, key, timestamp, to, type, txHash,\n } = row ?? {}\n\n const linkedTableCallProps = useMemo(() => ({ linked }), [linked])\n\n return (\n <TableRow key={key} {...props}>\n <HashTableCell hash={txHash} toolTipTitle={`Transaction Hash: ${txHash}`} {...linkedTableCallProps} />\n <BlockNumberTableCellInner blockNumber={blockNumber} {...linkedTableCallProps} />\n <BlockEpochTableCellInner epoch={timestamp} {...linkedTableCallProps} />\n <AddressTableCell address={from} toolTipTitle={`From Address: ${from}`} {...linkedTableCallProps} />\n <AddressTableCell address={to} toolTipTitle={`To Address: ${to}`} {...linkedTableCallProps} />\n {/* Intentionally not passing linked prop here till we know where a link would go */}\n <RawAmountTableCell amount={amount} type={type} />\n <TableCell>\n <RawInfoIconButton rawValue={debug as JsonValue} />\n </TableCell>\n </TableRow>\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))\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 { isUndefined } from '@xylabs/sdk-js'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport type { PropsWithChildren } from 'react'\nimport React, {\n useCallback, useMemo, useState,\n} from 'react'\n\nimport { ChainAnalyzersContext } from './context.ts'\nimport type { ChainAnalyzers, ChainAnalyzersState } from './state.ts'\n\nexport interface ChainAnalyzersProviderProps extends PropsWithChildren {\n analyzers?: ChainAnalyzers\n}\n\nexport const ChainAnalyzersProvider: React.FC<ChainAnalyzersProviderProps> = ({ analyzers: analyzersProp, children }) => {\n const [analyzersState, setAnalyzersState] = useState<ChainAnalyzers>(analyzersProp ?? {} as ChainAnalyzers)\n const [statsUpdated, setStatsUpdated] = useState(Date.now())\n\n const analyzers = useMemo(() => ({ ...analyzersProp, ...analyzersState }), [analyzersProp])\n\n const addAnalyzers: ChainAnalyzersState['addAnalyzers'] = useCallback((analyzers: ChainAnalyzersState['analyzers']) => {\n if (isUndefined(analyzers)) return\n setAnalyzersState(prev => ({ ...prev, ...analyzers }))\n }, [])\n\n const onBlock = useCallback(async (hydratedBlock: HydratedBlock) => {\n await Promise.resolve()\n for (const analyzer of Object.values(analyzers)) {\n void analyzer.onBlock(hydratedBlock)\n setStatsUpdated(Date.now())\n }\n }, [analyzers])\n\n const value: ChainAnalyzersState = useMemo(() => ({\n analyzers, addAnalyzers, onBlock, statsUpdated, provided: true,\n }), [analyzers, addAnalyzers, onBlock, statsUpdated])\n\n return (\n <ChainAnalyzersContext value={value}>{children}</ChainAnalyzersContext>\n )\n}\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 { ChainInfoState } from './State.ts'\n\nexport const ChainInfoContext = createContextEx<ChainInfoState>()\n","import type { PropsWithChildren } from 'react'\nimport React, { useMemo, useState } from 'react'\n\nimport { ChainInfoContext } from './Context.ts'\nimport type { ChainInfoState } from './State.ts'\n\ninterface ChainInfoProviderProps extends PropsWithChildren, Omit<ChainInfoState, 'provided'> {\n}\n\nexport const ChainInfoProvider: React.FC<ChainInfoProviderProps> = ({\n children, chainArchivist: chainArchivistProp, chainId: chainIdProp, chainIterator: chainIteratorProp,\n}) => {\n const [chainArchivist, setChainArchivist] = useState<ChainInfoState['chainArchivist']>(chainArchivistProp)\n const [chainId, setChainId] = useState<ChainInfoState['chainId']>(chainIdProp)\n const [chainIterator, setChainIterator] = useState<ChainInfoState['chainIterator']>(chainIteratorProp)\n\n const updateChainArchivist = (chainArchivist: ChainInfoState['chainArchivist']) => {\n setChainArchivist(chainArchivist)\n }\n const updateChainId = (chainId: ChainInfoState['chainId']) => {\n setChainId(chainId)\n }\n const updateChainIterator = (chainIterator: ChainInfoState['chainIterator']) => {\n setChainIterator(chainIterator)\n }\n\n useMemo(() => {\n updateChainArchivist(chainArchivistProp)\n }, [chainArchivistProp])\n\n useMemo(() => {\n updateChainId(chainIdProp)\n }, [chainIdProp])\n\n useMemo(() => {\n updateChainIterator(chainIteratorProp)\n }, [chainIteratorProp])\n\n const chainState: ChainInfoState = useMemo(() => ({\n chainArchivist,\n chainId,\n chainIterator,\n updateChainArchivist,\n updateChainId,\n updateChainIterator,\n provided: true,\n }), [chainArchivist, chainId, chainIterator, updateChainArchivist, updateChainId, updateChainIterator])\n\n return (\n <ChainInfoContext value={chainState}>\n {children}\n </ChainInfoContext>\n )\n}\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-protocol'\nimport { defaultTransactionFees, toXL1BlockNumber } from '@xyo-network/xl1-protocol'\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.FormEvent<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 { axiosJsonConfig } from '@xylabs/axios'\nimport { ErrorRender } from '@xylabs/react-error'\nimport { FlexGrowCol } from '@xylabs/react-flexbox'\nimport { Account } from '@xyo-network/account'\nimport type { ApiEnvelope } from '@xyo-network/api-models'\nimport { ArchivistInsertQuerySchema } from '@xyo-network/archivist-model'\nimport { QueryBoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { ModuleQueryResult } from '@xyo-network/module-model'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload } from '@xyo-network/payload-model'\nimport type { TransactionBoundWitnessFields } from '@xyo-network/xl1-protocol'\nimport { buildTransaction } from '@xyo-network/xl1-protocol-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 } from '@xylabs/sdk-js'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport React, {\n Fragment, useMemo, useState,\n} 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 const [showError, setShowError] = useState(false)\n useMemo(() => transactionsError ? setShowError(true) : setShowError(false), [transactionsError])\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 {/* eslint-disable-next-line @typescript-eslint/no-unused-vars */}\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={showError} onClose={() => setShowError(false)}>\n <ErrorRender error={transactionsError} scope=\"TransactionsQuickTipButton\" />\n </Snackbar>\n </>\n )\n}\n","import { assertEx } from '@xylabs/sdk-js'\nimport type { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport { ChainBlockNumberIterationService } from '@xyo-network/chain-services'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport type { EventingChainBlockNumberIteratorService, HeadEventArgs } from '@xyo-network/xl1-protocol-sdk'\nimport { hydrateBlock } from '@xyo-network/xl1-protocol-sdk'\n\nexport type Listener = (...args: Array<unknown>) => void\n\nexport type ChainIteratorStoreValues = { chainIterator: ChainBlockNumberIterationService; error?: Error; head: HydratedBlock }\n\nexport class ChainIteratorStore {\n private _chainIterator: EventingChainBlockNumberIteratorService | undefined\n private _externalListeners: Listener[] = []\n private _internalUnsubscribes: WeakRef<() => void>[] = []\n private _values: ChainIteratorStoreValues | undefined\n\n get chainIterator(): EventingChainBlockNumberIteratorService {\n return assertEx(this._chainIterator, () => 'ChainIteratorStore has not been initialized')\n }\n\n get values(): ChainIteratorStoreValues {\n return assertEx(this._values, () => 'ChainIteratorStore values have not been initialized')\n }\n\n static async create(params: XyoChainIteratorParams): Promise<ChainIteratorStore> {\n // create the classes\n const instance = new ChainIteratorStore()\n const chainIterator = await ChainBlockNumberIterationService.create(params)\n\n // set the chainIterator\n instance._chainIterator = chainIterator\n\n const head = await chainIterator.head()\n const hydratedHead = await hydrateBlock({ chainMap: params.chainMap }, await PayloadBuilder.hash(head))\n\n // set the initial values\n instance._values = {\n chainIterator,\n head: hydratedHead,\n }\n\n // set the internal listeners\n const headUpdatedListener = async ({ blocks }: HeadEventArgs) => {\n const hydratedBlock = await hydrateBlock({ chainMap: params.chainMap }, await PayloadBuilder.hash(blocks?.[0]))\n instance._values = {\n chainIterator,\n head: hydratedBlock,\n }\n instance.emitChange()\n }\n\n // Add listener to the chainIterator\n const unsubscribe = chainIterator.on('headUpdated', headUpdatedListener)\n\n // track the internal listener\n const weakRefListener = new WeakRef(unsubscribe)\n instance._internalUnsubscribes.push(weakRefListener)\n\n return instance\n }\n\n cleanup() {\n for (const unsubscribeRef of this._internalUnsubscribes) {\n const unsubscribe = unsubscribeRef.deref()\n unsubscribe?.()\n }\n }\n\n getSnapshot(): Partial<ChainIteratorStoreValues> {\n return this.values\n }\n\n subscribe(onStoreChange: Listener) {\n this._externalListeners.push(onStoreChange)\n return () => {\n this._externalListeners = this._externalListeners.filter(l => l !== onStoreChange)\n }\n }\n\n private emitChange() {\n for (const listener of this._externalListeners) {\n listener()\n }\n }\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { type Hash, isHash } from '@xylabs/sdk-js'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport type { ReadArchivist } from '@xyo-network/archivist-model'\nimport { BoundWitnessBuilder } from '@xyo-network/boundwitness-builder'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { getDefaultConfig } from '@xyo-network/xl1-protocol-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 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 = getDefaultConfig()\n config.chain.id = chainId\n return {\n chainMap, chainId, config, head: resolvedHead, name,\n }\n }\n }, [chainMap, chainId, head])\n}\n","import { toHex } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { type ChainBlockNumberIteratorService, findMostRecentBlock } from '@xyo-network/xl1-protocol-sdk'\nimport { useEffect, useState } from 'react'\n\nexport interface ChainIteratorUpdatingHeadParams {\n chainArchivist?: ArchivistInstance\n chainIterator?: ChainBlockNumberIteratorService\n interval?: number\n maxBlocks?: number\n}\n\n// Polls the chain archivist for new blocks and updates the chain iterator head\nexport const useChainIteratorUpdatingHead = ({\n chainIterator, interval = 500, maxBlocks, chainArchivist,\n}: ChainIteratorUpdatingHeadParams): Error | undefined => {\n const [error, setError] = useState<Error>()\n\n useEffect(() => {\n let pollArchivistTimeout: NodeJS.Timeout | undefined\n\n const pollingFunction = async () => {\n if (chainIterator && chainArchivist) {\n try {\n const currentHead = await chainIterator.head()\n const mostRecentBlock = await findMostRecentBlock(chainArchivist)\n if (mostRecentBlock) {\n const currentBlockNumber = currentHead?.block ?? -1\n const nextBlockNumber = mostRecentBlock.block\n if (nextBlockNumber > currentBlockNumber) {\n console.debug('Found more recent head:', toHex(nextBlockNumber))\n console.debug('Updating head:', `${toHex(nextBlockNumber)}`)\n await chainIterator.updateHead(mostRecentBlock)\n console.debug('Updated head:', `${toHex(nextBlockNumber)}`)\n }\n }\n } catch (e) {\n setError(e as Error)\n console.error(e)\n }\n }\n\n // Schedule the next polling function\n // disabling because it looks like a false positive\n // eslint-disable-next-line react-web-api/no-leaked-timeout\n pollArchivistTimeout = setTimeout(() => void pollingFunction(), interval)\n }\n\n // Start the polling function\n void pollingFunction()\n\n return () => clearInterval(pollArchivistTimeout)\n }, [interval, chainIterator, chainArchivist, maxBlocks])\n\n return error\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport { assertEx } from '@xylabs/sdk-js'\nimport type { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport { ChainBlockNumberIterationService } from '@xyo-network/chain-services'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness, HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport type { PayloadMapRead } from '@xyo-network/xl1-protocol-sdk'\nimport { hydrateBlock } from '@xyo-network/xl1-protocol-sdk'\n\nconst getHydratedBlock = async (chainMap: PayloadMapRead<WithStorageMeta<Payload>>, head: BlockBoundWitness) => {\n const headHash = await PayloadBuilder.hash(head)\n return await hydrateBlock({ chainMap }, headHash)\n}\n\nconst iterateChain = async (chainIteratorParams?: XyoChainIteratorParams, maxDepth?: number) => {\n const { chainMap, head } = chainIteratorParams ?? {} as XyoChainIteratorParams\n const headPayload = assertEx(isBlockBoundWitness(head) ? head : null, () => 'Head is not a Block Bound Witness')\n // confirm the head is a block\n const headBlockBoundWitness = assertEx(isBlockBoundWitness(headPayload) ? headPayload : null, () => 'Invalid head block')\n // create the chain iterator\n const chainIterator = await ChainBlockNumberIterationService.create({ head: headBlockBoundWitness, chainMap })\n\n // get head of the chain\n const chainHead = await chainIterator.head()\n let block = await getHydratedBlock(chainMap, chainHead)\n\n // create the blocks array\n const blocks: HydratedBlockWithHashMeta[] = [block]\n\n // track the depth\n let depth = 1\n // iterate the chain\n while (true) {\n // get the next block\n const [, next] = await chainIterator.previous(block[0].block, 2)\n\n const nextHydratedBlock = await getHydratedBlock(chainMap, next)\n // push the next block\n blocks.push(nextHydratedBlock)\n // set the next block as the current block\n block = nextHydratedBlock\n // increment the depth\n depth++\n // if max depth is set and we have reached it, break\n if ((maxDepth !== undefined && depth >= maxDepth) || block?.[0].block === 0) break\n }\n return blocks\n}\n\nexport const useIterateChain = (\n chainIteratorParams?: XyoChainIteratorParams,\n maxDepth?: number,\n) => {\n return usePromise(async () => {\n return await iterateChain(chainIteratorParams, maxDepth)\n }, [chainIteratorParams, maxDepth])\n}\n","import { usePromise } from '@xylabs/react-promise'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\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 { HydratedBlockWrapper } from '@xyo-network/chain-wrappers'\nimport { PayloadBuilder } from '@xyo-network/payload-builder'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\n\nexport const txsFromBlock = async (block: HydratedBlockWithHashMeta) => {\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-protocol'\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 { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport type { ComponentType } from 'react'\nimport { useState } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport type {\n BlockChainRenderComponent,\n BlockComponentProps, BlockComponentWithTxsProps,\n} from '../../../types/index.ts'\nimport { buildBlockChainRenderComponent } from '../helpers/index.ts'\n\nexport const useDynamicBlockComponents = (BlockComponent: ComponentType<BlockComponentWithTxsProps>, params?: XyoChainIteratorParams, maxBlocks?: number) => {\n const { chainMap } = params ?? {}\n const [blockChainRenderComponents, setBlockChainRenderComponents] = useState<BlockChainRenderComponent[]>([])\n\n const { onBlock } = useChainAnalyzersContext()\n\n const onAddBlock = async (block: HydratedBlockWithHashMeta | undefined) => {\n if (!block || !chainMap) return\n\n const blockComponentProps: BlockComponentProps = { block }\n const newBlockComponent = await buildBlockChainRenderComponent(BlockComponent, blockComponentProps)\n\n if (block?.[0].block !== blockChainRenderComponents[0]?.block?.[0].block) {\n void onBlock?.(block)\n\n setBlockChainRenderComponents((blockComponents) => {\n const newBlockComponents = [newBlockComponent, ...blockComponents]\n\n if (maxBlocks !== undefined && newBlockComponents.length > maxBlocks) {\n // trim the last block if we exceed the max\n newBlockComponents.pop()\n }\n\n return newBlockComponents\n })\n }\n }\n\n return { blockChainRenderComponents, onAddBlock }\n}\n","import type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\n\nexport const blockProducer = (block: BlockBoundWitness) => {\n return block.addresses[0]\n}\n","import 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 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 HydratedBlock, isTransactionBoundWitness } from '@xyo-network/xl1-protocol'\n\nexport const payloadCountsFromBlock = ([block, payloads]: HydratedBlock): [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 => !publicPayloads.includes(hash))\n return [publicPayloads.length, privateHashes.length]\n}\n","import type { HydratedBlock } from '@xyo-network/xl1-protocol'\nimport { useMemo } from 'react'\n\nimport { payloadCountsFromBlock } from '../helpers/index.ts'\n\nexport const usePayloadCountsFromBlock = (block?: HydratedBlock): [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 { usePromise } from '@xylabs/react-promise'\nimport { isDefined } from '@xylabs/sdk-js'\nimport type { XyoChainIteratorParams } from '@xyo-network/chain-services'\nimport type { HydratedBlockWithHashMeta } from '@xyo-network/xl1-protocol'\nimport type { ComponentType } from 'react'\n\nimport { useChainAnalyzersContext } from '../../../context/index.ts'\nimport type { BlockComponentProps, BlockComponentWithTxsProps } from '../../../types/index.ts'\nimport { buildBlockChainRenderComponent } from '../helpers/index.ts'\n\nexport const useStaticBlockComponents = (\n BlockComponent: ComponentType<BlockComponentWithTxsProps>,\n params?: XyoChainIteratorParams,\n blocks?: HydratedBlockWithHashMeta[],\n) => {\n const { onBlock } = useChainAnalyzersContext()\n\n const [blockComponents, blockComponentsError] = usePromise(async () => {\n const resolvedBlockWithStorage = blocks ?? []\n if (!params?.chainMap) return []\n\n return await Promise.all(resolvedBlockWithStorage?.map(async (block) => {\n // TODO: Figure out why this onBlock is always defined (per TS), even though the context is optional?\n if (isDefined(onBlock)) {\n await onBlock(block)\n }\n\n const blockComponentProps: BlockComponentProps = { block, defaultExpanded: true }\n return await buildBlockChainRenderComponent(BlockComponent, blockComponentProps)\n }))\n }, [blocks, params, BlockComponent])\n\n return { blockComponents, errors: blockComponentsError }\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-protocol'\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-protocol'\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,\n TableCell, Tooltip,\n Typography,\n} from '@mui/material'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport type { BlockHeaderEventNouns } from '../../hooks/index.ts'\nimport type { BlockTableCellProps } from './lib/index.ts'\n\nexport interface BlockNumberTableCellProps extends BlockTableCellProps {}\n\nexport const BlockNumberTableCell: React.FC<BlockNumberTableCellProps> = ({\n block, linked, ...props\n}) => {\n const blockNumber = block?.[0].block\n\n return <BlockNumberTableCellInner blockNumber={blockNumber} linked={linked} {...props} />\n}\n\nexport const BlockNumberTableCellInner: React.FC<BlockNumberTableCellProps & { blockNumber?: number; linked?: boolean }> = ({\n blockNumber, linked, ...props\n}) => {\n const [ref, dispatch] = useEvent<HTMLTableCellElement, BlockHeaderEventNouns>()\n const handleClick = () => dispatch('block-number', 'click', blockNumber?.toString() ?? '')\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 {\n Skeleton,\n TableCell, Tooltip, Typography,\n} from '@mui/material'\nimport { isDefined } from '@xylabs/sdk-js'\nimport React from 'react'\n\nimport {\n type BlockTableCellProps, dateFormat, timeAgo,\n} 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 { 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)\n }\n }\n\n return [ref, handleClick]\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 { TableRow, useTheme } from '@mui/material'\nimport { alphaCss } from '@xylabs/react-theme'\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 { 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, sx, ...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 const theme = useTheme()\n\n return (\n <TableRow\n onClick={linked ? handleClick : undefined}\n ref={ref as Ref<HTMLTableRowElement> | undefined}\n sx={{\n 'cursor': linked ? 'pointer' : 'default',\n 'overflowY': 'scroll',\n '&:hover': { backgroundColor: alphaCss(theme.vars.palette.secondary.light, 0.15) },\n ...sx,\n }}\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 </TableRow>\n )\n}\n","import type { TableCellProps } from '@mui/material'\nimport { TableCell, Tooltip } from '@mui/material'\nimport { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport { BlockAddressChip } from '../../../block/index.ts'\n\nexport interface AddressTableCellProps extends TableCellProps {\n address?: string\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const AddressTableCell: React.FC<AddressTableCellProps> = ({\n address, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, dispatch] = useEvent()\n const handleClick = () => dispatch('address', 'click', address)\n return (\n <TableCell ref={ref} sx={{ cursor: linked ? 'pointer' : 'default', ...sx }} {...props}>\n <Tooltip title={toolTipTitle}>\n <BlockAddressChip address={address} onClick={handleClick} />\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 { useEvent } from '@xyo-network/react-event'\nimport React from 'react'\n\nimport type { BalanceHistoryEventNouns } from '../types/index.ts'\n\nexport interface HashTableCellProps extends TableCellProps {\n hash?: Hash\n linked?: boolean\n toolTipTitle?: string\n}\n\nexport const HashTableCell: React.FC<HashTableCellProps> = ({\n hash, linked, toolTipTitle, sx, ...props\n}) => {\n const [ref, dispatch] = useEvent<HTMLTableCellElement, BalanceHistoryEventNouns>()\n const handleClick = () => dispatch('tx-hash', 'click', hash)\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={handleClick} 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 { useEvent } from '@xyo-network/react-event'\nimport { XL1Amount } from '@xyo-network/xl1-protocol'\nimport React from 'react'\n\nimport type { BalanceHistoryEventNouns } from './types/index.ts'\n\nexport interface RawAmountTableCellProps extends TableCellProps {\n amount?: bigint\n linked?: boolean\n type?: BalanceTransactionType\n}\n\nexport const RawAmountTableCell: React.FC<RawAmountTableCellProps> = ({\n amount, linked, sx, type, ...props\n}) => {\n const [ref, dispatch] = useEvent<HTMLAnchorElement, BalanceHistoryEventNouns>()\n const handleClick = () => dispatch('amount', 'click', isDefined(amount) ? toHex(amount) : '')\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={handleClick} 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<'amount' | 'blockNumber' | 'tx-hash'>\n\nexport type TableHeadingLabels = 'Tx Hash' | 'BlockNumber' | 'Timestamp' | 'From' | 'To' | 'Amount' | 'Debug'\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 '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 } from '@xyo-network/xl1-protocol'\nimport type { XyoViewer } from '@xyo-network/xl1-protocol-sdk'\nimport {\n useCallback, useMemo, useState,\n} 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\n useMemo(() => {\n if (isDefined(history)) {\n setPagedHistory((pagedHistory) => {\n return [...pagedHistory ?? [], ...history]\n })\n }\n }, [history])\n\n const firstBlock = isDefined(history) ? history.at(0)?.blockNumber : undefined\n const lastBlock = isDefined(history) ? history.at(-1)?.blockNumber : undefined\n const historyComplete = isDefined(history) && history.length === 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 }, [firstBlock, 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 {\n ListItem, styled, Typography,\n} 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/payload-model'\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\nexport const StyledListItem = styled(ListItem)(() => ({\n paddingTop: 0,\n paddingBottom: 0,\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 {\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 = 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-protocol'\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 blocksWhilePaused = 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 lastLiveHead = useRef<HydratedBlock | undefined>(liveHead)\n\n useEffect(() => {\n const lastLiveHeadBlock = lastLiveHead.current?.[0]\n const blocksWhilePausedBlock = lastLiveHead.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 lastLiveHead.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 blocksWhilePaused.current.push(liveHead)\n } else if (pollingState === 'running') {\n // if the polling state is running, add the blocksWhilePaused\n if (blocksWhilePaused.current.length > 0) {\n for (const block of blocksWhilePaused.current) {\n void onAddBlock(block)\n }\n // clear the blocksWhilePaused array\n blocksWhilePaused.current = []\n }\n // add the liveHead block\n void onAddBlock(liveHead)\n }\n }\n }, [liveHead, pollingState])\n\n return blocksWhilePaused.current\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 { ErrorRender } from '@xylabs/react-error'\nimport { FlexCol, FlexGrowRow } from '@xylabs/react-flexbox'\nimport React from 'react'\n\nimport type { BlockChainRenderFlexboxProps } from '../../../../../../types/index.ts'\nimport { BlockHeadingFlexbox } from '../../../../../block/index.ts'\nimport { BlockListAnimated } from '../../../../list/index.ts'\nimport { BlockChainPagination } from '../../../../pagination/index.ts'\nimport { ChainAnalyzerStatsDialogFromContext } from '../../../../stats/index.ts'\nimport { useStaticBlockRenderComponents } from '../../hooks/index.ts'\n\nexport const StaticListBase: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const {\n blockComponents, errors, paginatedBlockComponents, onPageChange, page, pageSize,\n } = useStaticBlockRenderComponents(BlockHeadingFlexbox, blockChainRenderProps)\n\n return (\n <FlexCol alignItems=\"start\" gap={2} width=\"100%\" {...props}>\n {errors?.map(error => <ErrorRender error={error} key={error.name} scope=\"StaticBlockchainFlexboxInner\" />)}\n {(paginatedBlockComponents?.length ?? 0) > 0\n ? (\n <FlexGrowRow justifyContent=\"space-between\" width=\"100%\">\n <ChainAnalyzerStatsDialogFromContext />\n <BlockChainPagination count={blockComponents?.length ?? 0} onPageChange={onPageChange} page={page} rowsPerPage={pageSize} />\n </FlexGrowRow>\n )\n : null}\n <BlockListAnimated blockChainRenderComponents={paginatedBlockComponents} />\n </FlexCol>\n )\n}\n","import { AnimatedList } from '@xylabs/react-animation'\nimport React from 'react'\n\nimport type { BlockListComponentProps } from '../../../types/index.ts'\nimport { BlockListWrapperFlexBox } from '../styled/index.ts'\n\nexport const BlockListAnimated: React.FC<BlockListComponentProps> = ({ blockChainRenderComponents }) => {\n return (\n <BlockListWrapperFlexBox\n alignItems=\"stretch\"\n width=\"100%\"\n >\n <AnimatedList\n fullWidth\n items={blockChainRenderComponents}\n />\n </BlockListWrapperFlexBox>\n )\n}\n","import { styled } from '@mui/material'\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 = 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 { CreatableName } from '@xylabs/sdk-js'\nimport { exists } from '@xylabs/sdk-js'\nimport type { ComponentType } from 'react'\nimport { useMemo } from 'react'\n\nimport { useChainIteratorParams, useIterateChain } from '../../../../../hooks/index.ts'\nimport type { BlockChainRenderProps, BlockComponentWithTxsProps } from '../../../../../types/index.ts'\nimport { useStaticBlockComponents } from '../../../../block/index.ts'\nimport { useChainPagination } from '../../../pagination/index.ts'\n\nconst DEFAULT_PAGE_SIZE = 25\n\n// This is a hook but could easily be bundled up in a class with callbacks\nexport const useStaticBlockRenderComponents = (BlockComponent: ComponentType<BlockComponentWithTxsProps>, blockChainRenderProps?: BlockChainRenderProps) => {\n const { maxBlocks } = blockChainRenderProps ?? {}\n const pageSize = blockChainRenderProps?.pageSize ?? DEFAULT_PAGE_SIZE\n\n const chainIteratorParams = useMemo(() => blockChainRenderProps ?? { name: 'unknown' as CreatableName }, [blockChainRenderProps])\n\n const [params, paramsError] = useChainIteratorParams(chainIteratorParams)\n\n const [blocks, blocksError] = useIterateChain(params, maxBlocks)\n\n const { blockComponents, errors: blockComponentsError } = useStaticBlockComponents(BlockComponent, params, blocks)\n\n const {\n onPageChange, page, paginatedBlockComponents,\n } = useChainPagination(pageSize, blockComponents)\n\n return {\n paginatedBlockComponents,\n blockComponents,\n errors: [paramsError, blocksError, blockComponentsError].filter(exists),\n onPageChange,\n page,\n pageSize,\n }\n}\n","import { isAddress } from '@xylabs/sdk-js'\nimport { ChainProducersAnalyzer } from '@xyo-network/chain-analyze'\nimport React, { useMemo } from 'react'\n\nimport type { ChainAnalyzers } from '../../../../../../context/index.ts'\nimport { ChainAnalyzersProvider } from '../../../../../../context/index.ts'\nimport type { BlockChainRenderFlexboxProps } from '../../../../../../types/index.ts'\nimport { StaticListBase } from './Base.tsx'\n\nexport const WithAnalysis: React.FC<BlockChainRenderFlexboxProps> = ({ blockChainRenderProps, ...props }) => {\n const { chainId } = blockChainRenderProps ?? {}\n\n const analyzers = useMemo(() => {\n if (isAddress(chainId)) {\n return { producers: new ChainProducersAnalyzer() } as ChainAnalyzers\n }\n }, [chainId])\n\n return (\n <ChainAnalyzersProvider analyzers={analyzers}>\n <StaticListBase blockChainRenderProps={blockChainRenderProps} {...props} />\n </ChainAnalyzersProvider>\n )\n}\n","import { StaticListBase, WithAnalysis } from './variants/index.ts'\n\nexport const StaticBlockchainRenderFlexBox = { Base: StaticListBase, WithAnalysis }\n","import type { FlexBoxProps } from '@xylabs/react-flexbox'\nimport { FlexCol } from '@xylabs/react-flexbox'\nimport type { Payload } from '@xyo-network/payload-model'\nimport { JsonViewerEx } from '@xyo-network/react-payload-raw-info'\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-protocol'\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-protocol'\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 { asAddress, isAddress } from '@xylabs/sdk-js'\nimport React, { useMemo, 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 useMemo(() => setAddress(''), [resetValue])\n\n const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {\n const { value } = event.target\n onChange?.(event)\n\n const xyoAddress = asAddress(value)\n if (isAddress(xyoAddress)) {\n onAddressChanged?.(xyoAddress)\n }\n\n setAddressError(undefined)\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-protocol'\nimport { TransferSchema } from '@xyo-network/xl1-protocol'\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 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: Date.now(),\n }\n }\n }, [fromAddress, transfers])\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 { isAddress, toHex } from '@xylabs/sdk-js'\nimport { BigIntInput } from '@xyo-network/react-shared'\nimport React, {\n useEffect, useMemo, useState,\n} 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 const transferAmount = useMemo(() => {\n if (isAddress(toAddress) && amount !== undefined) {\n return {\n ...singleTransfer,\n amount: toHex(amount),\n to: toAddress,\n }\n }\n }, [toAddress, amount])\n\n useEffect(() => {\n if (transferAmount) onTransferUpdated?.(transferAmount)\n }, [transferAmount])\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 { CircularProgress } from '@mui/material'\nimport type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport { flattenHydratedBlocks } from '@xyo-network/xl1-protocol-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 { assertEx } from '@xylabs/sdk-js'\nimport type { ArchivistInstance } from '@xyo-network/archivist-model'\nimport { asArchivistInstance } from '@xyo-network/archivist-model'\nimport type { HttpBridgeConfig } from '@xyo-network/bridge-http'\nimport { HttpBridge, HttpBridgeConfigSchema } from '@xyo-network/bridge-http'\nimport type { ModuleIdentifier } from '@xyo-network/module-model'\n\nexport interface BridgedChainArchivistParams {\n chainArchivistModuleId: ModuleIdentifier\n url: string\n}\n\nexport const getChainArchivistFromBridge = async (params: BridgedChainArchivistParams): Promise<ArchivistInstance> => {\n const { url, chainArchivistModuleId } = params\n const config: HttpBridgeConfig = { schema: HttpBridgeConfigSchema, client: { url } }\n const bridge = await HttpBridge.create({ config })\n\n const resolved = await bridge.resolve(chainArchivistModuleId)\n const mod = assertEx(resolved, () => `Module ${chainArchivistModuleId} not found`)\n return assertEx(asArchivistInstance(mod), () => `Module ${chainArchivistModuleId} is not an archivist`)\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 { MemoryArchivist } from '@xyo-network/archivist-memory'\nimport { ArchivistConfigSchema } from '@xyo-network/archivist-model'\nimport { buildRandomBlockChain } from '@xyo-network/react-chain-shared'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { flattenHydratedBlock } from '@xyo-network/xl1-protocol-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","import type { Decorator } from '@storybook/react-vite'\nimport { usePromise } from '@xylabs/react-promise'\nimport { assertEx, isDefined } from '@xylabs/sdk-js'\nimport { ChainBlockNumberIterationService } from '@xyo-network/chain-services'\nimport { findFirstMatching } from '@xyo-network/chain-utils'\nimport type { Payload, WithStorageMeta } from '@xyo-network/payload-model'\nimport type { BlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { isBlockBoundWitness } from '@xyo-network/xl1-protocol'\nimport { readPayloadMapFromStore } from '@xyo-network/xl1-protocol-sdk'\nimport React from 'react'\n\nimport { ChainInfoProvider } from '../context/index.ts'\nimport type { BridgedChainArchivistParams } from '../lib/index.ts'\nimport { getChainArchivistFromBridge, getChainId } from '../lib/index.ts'\n\nconst archivistConfig: BridgedChainArchivistParams = {\n url: 'http://localhost:8080',\n chainArchivistModuleId: 'XYOPublic:XYOChain:Chain',\n}\n\nexport const ChainInfoContextDecorator: Decorator = (Story, context) => {\n const [chainIdResponse] = usePromise(async () => {\n return await getChainId()\n }, [])\n\n const chainId = chainIdResponse\n\n const [chainArchivist] = usePromise(async () => {\n return await getChainArchivistFromBridge(archivistConfig)\n }, [])\n\n const [chainIterator] = usePromise(async () => {\n if (isDefined(chainArchivist) && isDefined(chainId)) {\n const firstMatch = assertEx(await findFirstMatching(chainArchivist), () => `No head found in archivist: ${chainArchivist.id} `)\n const head: BlockBoundWitness = assertEx(isBlockBoundWitness(firstMatch)\n ? firstMatch\n : undefined, () => `Expected a block bound witness: ${JSON.stringify(firstMatch)}`)\n const chainMap = readPayloadMapFromStore<WithStorageMeta<Payload>>(chainArchivist)\n return await ChainBlockNumberIterationService.create({ chainMap, head })\n }\n }, [chainArchivist, chainId])\n\n return (\n <ChainInfoProvider chainArchivist={chainArchivist} chainId={chainId} chainIterator={chainIterator}>\n <Story {...context} />\n </ChainInfoProvider>\n )\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","TableRow","RawInfoIconButton","React","useMemo","FlexCol","FlexRow","BWVerification","HashHeadingPaper","usePayloadHash","React","createContextEx","ChainAnalyzersContext","isUndefined","React","useCallback","useMemo","useState","ChainAnalyzersProvider","analyzers","analyzersProp","children","analyzersState","setAnalyzersState","useState","statsUpdated","setStatsUpdated","Date","now","useMemo","addAnalyzers","useCallback","isUndefined","prev","onBlock","hydratedBlock","Promise","resolve","analyzer","Object","values","value","provided","ChainAnalyzersContext","useContextEx","useChainAnalyzersContext","required","useContextEx","ChainAnalyzersContext","createContextEx","ChainInfoContext","React","useMemo","useState","ChainInfoProvider","children","chainArchivist","chainArchivistProp","chainId","chainIdProp","chainIterator","chainIteratorProp","setChainArchivist","useState","setChainId","setChainIterator","updateChainArchivist","updateChainId","updateChainIterator","useMemo","chainState","provided","React","ChainInfoContext","value","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","axiosJsonConfig","ErrorRender","FlexGrowCol","Account","ArchivistInsertQuerySchema","QueryBoundWitnessBuilder","PayloadBuilder","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","React","Fragment","useMemo","useState","assertEx","ChainBlockNumberIterationService","PayloadBuilder","hydrateBlock","ChainIteratorStore","_chainIterator","_externalListeners","_internalUnsubscribes","_values","chainIterator","assertEx","values","create","params","instance","ChainBlockNumberIterationService","head","hydratedHead","hydrateBlock","chainMap","PayloadBuilder","hash","headUpdatedListener","blocks","hydratedBlock","emitChange","unsubscribe","on","weakRefListener","WeakRef","push","cleanup","unsubscribeRef","deref","getSnapshot","subscribe","onStoreChange","filter","l","listener","usePromise","isHash","assertEx","isDefined","BoundWitnessBuilder","isBlockBoundWitness","getDefaultConfig","resolveDefinedHead","head","chainArchivist","headPayload","get","undefined","currentHead","BoundWitnessBuilder","build","assertEx","isBlockBoundWitness","JSON","stringify","useChainIteratorParams","chainMap","chainId","name","usePromise","isDefined","isHash","result","foundResult","resolvedHead","config","getDefaultConfig","chain","id","toHex","findMostRecentBlock","useEffect","useState","useChainIteratorUpdatingHead","chainIterator","interval","maxBlocks","chainArchivist","error","setError","useState","useEffect","pollArchivistTimeout","pollingFunction","currentHead","head","mostRecentBlock","findMostRecentBlock","currentBlockNumber","block","nextBlockNumber","console","debug","toHex","updateHead","e","setTimeout","clearInterval","usePromise","assertEx","ChainBlockNumberIterationService","PayloadBuilder","isBlockBoundWitness","hydrateBlock","getHydratedBlock","chainMap","head","headHash","PayloadBuilder","hash","hydrateBlock","iterateChain","chainIteratorParams","maxDepth","headPayload","assertEx","isBlockBoundWitness","headBlockBoundWitness","chainIterator","ChainBlockNumberIterationService","create","chainHead","block","blocks","depth","next","previous","nextHydratedBlock","push","undefined","useIterateChain","usePromise","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","showError","setShowError","useMemo","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","open","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","useState","blockProducer","block","addresses","React","buildBlockChainRenderComponent","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","includes","length","useDynamicBlockComponents","BlockComponent","params","maxBlocks","chainMap","blockChainRenderComponents","setBlockChainRenderComponents","useState","onBlock","useChainAnalyzersContext","onAddBlock","block","blockComponentProps","newBlockComponent","buildBlockChainRenderComponent","blockComponents","newBlockComponents","undefined","length","pop","useMemo","usePayloadCountsFromBlock","block","useMemo","payloadCountsFromBlock","undefined","usePromise","isDefined","useStaticBlockComponents","BlockComponent","params","blocks","onBlock","useChainAnalyzersContext","blockComponents","blockComponentsError","usePromise","resolvedBlockWithStorage","chainMap","Promise","all","map","block","isDefined","blockComponentProps","defaultExpanded","buildBlockChainRenderComponent","errors","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","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","useEvent","React","BlockNumberTableCell","block","linked","props","blockNumber","React","BlockNumberTableCellInner","ref","dispatch","useEvent","handleClick","toString","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","useEvent","useLinkedBlockItem","noun","data","ref","dispatch","useEvent","handleClick","event","preventDefault","stopPropagation","undefined","console","warn","selection","globalThis","getSelection","isTextSelected","toString","length","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","TableRow","useTheme","alphaCss","usePayloadRootHash","React","useMemo","BlockChainTableRow","block","deepValidation","defaultExpanded","linked","sx","props","linkedTableCellProps","useMemo","defaultTableCellProps","hash","usePayloadRootHash","ref","handleClick","useLinkedBlockItem","theme","useTheme","React","TableRow","onClick","undefined","backgroundColor","alphaCss","vars","palette","secondary","light","BlockNumberTableCell","align","BlockHashTableCell","BlockEpochTableCell","BlockProducerTableCell","BlockTransactionCountTableCell","BlockPayloadCountsTableCell","BlockVerificationTableCell","BlockJsonViewTableCell","TableCell","Tooltip","useEvent","React","AddressTableCell","address","linked","toolTipTitle","sx","props","ref","dispatch","useEvent","handleClick","React","TableCell","cursor","Tooltip","title","BlockAddressChip","onClick","Link","TableCell","Tooltip","Typography","ellipsize","isDefined","useEvent","React","HashTableCell","hash","linked","toolTipTitle","sx","props","ref","dispatch","useEvent","handleClick","shortenedHash","isDefined","ellipsize","React","TableCell","Tooltip","title","Typography","component","variant","Link","onClick","cursor","Link","TableCell","Tooltip","isDefined","toHex","useEvent","XL1Amount","React","RawAmountTableCell","amount","linked","sx","type","props","ref","dispatch","useEvent","handleClick","isDefined","toHex","formatAmount","xl1Amount","XL1Amount","toString","undefined","places","maxDecimal","maxCharacters","minDecimals","locale","navigator","language","React","TableCell","Tooltip","title","Link","onClick","cursor","span","BalanceHistoryTableRow","linked","row","props","amount","blockNumber","debug","from","key","timestamp","to","type","txHash","linkedTableCallProps","useMemo","React","TableRow","HashTableCell","hash","toolTipTitle","BlockNumberTableCellInner","BlockEpochTableCellInner","epoch","AddressTableCell","address","RawAmountTableCell","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","history","balance","truncated","AttoXL1","undefined","isDefined","React","FlexCol","ErrorRender","scope","Typography","variant","gutterBottom","formatBalanceMagnitude","at","blockNumber","AccountBalanceHistoryTableEx","isDefined","useAccountBalanceHistory","useCallback","useMemo","useState","usePagedAccountBalanceHistory","address","viewer","maxPage","updatedBlockRange","setUpdatedBlockRange","useState","pagedHistory","setPagedHistory","results","error","loading","useAccountBalanceHistory","history","truncated","useMemo","isDefined","firstBlock","at","blockNumber","undefined","lastBlock","historyComplete","length","updateRange","useCallback","newEndBlock","Autorenew","Pause","Alert","AlertTitle","Grow","Icon","IconButton","Tooltip","FlexRow","React","memo","QueryStats","Dialog","DialogContent","DialogTitle","IconButton","React","useState","ListItem","styled","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","StyledListItem","styled","ListItem","paddingTop","paddingBottom","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","blocksWhilePaused","useRef","lastLiveHead","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","ErrorRender","FlexCol","FlexGrowRow","React","AnimatedList","React","styled","FlexCol","BlockListWrapperFlexBox","name","visibility","height","BlockListAnimated","blockChainRenderComponents","React","BlockListWrapperFlexBox","alignItems","width","AnimatedList","fullWidth","items","exists","useMemo","DEFAULT_PAGE_SIZE","useStaticBlockRenderComponents","BlockComponent","blockChainRenderProps","maxBlocks","pageSize","chainIteratorParams","useMemo","name","params","paramsError","useChainIteratorParams","blocks","blocksError","useIterateChain","blockComponents","errors","blockComponentsError","useStaticBlockComponents","onPageChange","page","paginatedBlockComponents","useChainPagination","filter","exists","StaticListBase","blockChainRenderProps","props","blockComponents","errors","paginatedBlockComponents","onPageChange","page","pageSize","useStaticBlockRenderComponents","BlockHeadingFlexbox","React","FlexCol","alignItems","gap","width","map","error","ErrorRender","key","name","scope","length","FlexGrowRow","justifyContent","ChainAnalyzerStatsDialogFromContext","BlockChainPagination","count","rowsPerPage","BlockListAnimated","blockChainRenderComponents","isAddress","ChainProducersAnalyzer","React","useMemo","WithAnalysis","blockChainRenderProps","props","chainId","analyzers","useMemo","isAddress","producers","ChainProducersAnalyzer","React","ChainAnalyzersProvider","StaticListBase","StaticBlockchainRenderFlexBox","Base","StaticListBase","WithAnalysis","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","React","useMemo","useState","XyoAddressTextField","onAddressChanged","onChange","resetValue","props","address","setAddress","useState","addressError","setAddressError","useMemo","handleChange","event","value","target","xyoAddress","asAddress","isAddress","undefined","handleBlur","Error","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","toHex","BigIntInput","React","useEffect","useMemo","useState","SingleTransferBuilderFlexbox","onTransferUpdated","onRemoveTransfer","singleTransfer","props","toAddress","setToAddress","useState","amount","setAmount","transferAmount","useMemo","isAddress","undefined","toHex","to","useEffect","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","transferPayload","useMemo","isAddress","length","transfersRecord","transfer","to","amount","from","schema","TransferSchema","epoch","Date","now","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","CircularProgress","usePromise","MemoryArchivist","ArchivistConfigSchema","buildRandomBlockChain","flattenHydratedBlocks","React","useEffect","assertEx","asArchivistInstance","HttpBridge","HttpBridgeConfigSchema","getChainArchivistFromBridge","params","url","chainArchivistModuleId","config","schema","HttpBridgeConfigSchema","client","bridge","HttpBridge","create","resolved","resolve","mod","assertEx","asArchivistInstance","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","MemoryArchivist","ArchivistConfigSchema","buildRandomBlockChain","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","usePromise","assertEx","isDefined","ChainBlockNumberIterationService","findFirstMatching","isBlockBoundWitness","readPayloadMapFromStore","React","archivistConfig","url","chainArchivistModuleId","ChainInfoContextDecorator","Story","context","chainIdResponse","usePromise","getChainId","chainId","chainArchivist","getChainArchivistFromBridge","chainIterator","isDefined","firstMatch","assertEx","findFirstMatching","id","head","isBlockBoundWitness","undefined","JSON","stringify","chainMap","readPayloadMapFromStore","ChainBlockNumberIterationService","create","React","ChainInfoProvider"]}