import { capitalize } from 'es-toolkit'; import React from 'react'; import type { Block } from 'types/api/block'; import type { ClusterChainConfig } from 'types/multichain'; import config from 'configs/app'; import { AddressHighlightProvider } from 'lib/contexts/addressHighlight'; import useInitialList from 'lib/hooks/useInitialList'; import getNetworkValidatorTitle from 'lib/networks/getNetworkValidatorTitle'; import { currencyUnits } from 'lib/units'; import { TableBody, TableColumnHeader, TableHeaderSticky, TableRoot, TableRow } from 'toolkit/chakra/table'; import BlocksTableItem from 'ui/blocks/BlocksTableItem'; import * as SocketNewItemsNotice from 'ui/shared/SocketNewItemsNotice'; import TimeFormatToggle from 'ui/shared/time/TimeFormatToggle'; interface Props { data: Array; isLoading?: boolean; top: number; page: number; socketInfoNum?: number; showSocketErrorAlert?: boolean; showSocketInfo?: boolean; chainData?: ClusterChainConfig; } const VALIDATOR_COL_WEIGHT = 23; const GAS_COL_WEIGHT = 33; const REWARD_COL_WEIGHT = 22; const FEES_COL_WEIGHT = 22; const isRollup = config.features.rollup.isEnabled; const BlocksTable = ({ data, isLoading, top, page, showSocketInfo, socketInfoNum, showSocketErrorAlert, chainData }: Props) => { const initialList = useInitialList({ data: data ?? [], idFn: (item) => item.height, enabled: !isLoading, }); const widthBase = (!config.UI.views.block.hiddenFields?.miner ? VALIDATOR_COL_WEIGHT : 0) + GAS_COL_WEIGHT + (!isRollup && !config.UI.views.block.hiddenFields?.total_reward ? REWARD_COL_WEIGHT : 0) + (!isRollup && !config.UI.views.block.hiddenFields?.burnt_fees ? FEES_COL_WEIGHT : 0); return ( { chainData && } Block Size, bytes { !config.UI.views.block.hiddenFields?.miner && ( { capitalize(getNetworkValidatorTitle()) } ) } Txn Gas used { !isRollup && !config.UI.views.block.hiddenFields?.total_reward && Reward { currencyUnits.ether } } { !isRollup && !config.UI.views.block.hiddenFields?.burnt_fees && Burnt fees { currencyUnits.ether } } { !isRollup && !config.UI.views.block.hiddenFields?.base_fee && Base fee } { showSocketInfo && ( ) } { data.map((item, index) => ( )) } ); }; export default BlocksTable;