import type { RefObject } from 'react'; import { useInView } from 'react-intersection-observer'; import { addDecimalsFormatNumber, isNumeric } from '@vegaprotocol/utils'; import { useThrottledDataProvider } from '@vegaprotocol/react-helpers'; import { PriceCell } from '@vegaprotocol/datagrid'; import { marketDataProvider } from '@vegaprotocol/market-list'; import { THROTTLE_UPDATE_TIME } from '../constants'; interface Props { marketId?: string; decimalPlaces?: number; asPriceCell?: boolean; inViewRoot?: RefObject; initialValue?: string; } export const MarketMarkPrice = ({ marketId, decimalPlaces, initialValue, inViewRoot, asPriceCell, }: Props) => { const [ref, inView] = useInView({ root: inViewRoot?.current }); const { data } = useThrottledDataProvider( { dataProvider: marketDataProvider, variables: { marketId: marketId || '' }, skip: !inView, }, THROTTLE_UPDATE_TIME ); const marketPrice = data?.markPrice || initialValue; if (!marketPrice || !isNumeric(decimalPlaces)) { return -; } if (asPriceCell) { return ( ); } return ( {addDecimalsFormatNumber(marketPrice, decimalPlaces)} ); };