import { IPriceLine, PriceLineOptions } from 'lightweight-charts'; import { useEffect, useRef } from 'react'; import { useSeries } from '../hooks/useSeries'; /** * Create a price line for the series. * * ❗Only use inside ``. */ export const PriceLine = (props: Partial) => { const series = useSeries(); const priceLineRef = useRef(); // create price line useEffect(() => { if (!priceLineRef.current) { priceLineRef.current = series?.createPriceLine(props as PriceLineOptions); } else { priceLineRef.current.applyOptions(props); } }, [series, props]); // remove price line useEffect(() => { return () => { if (!priceLineRef.current || !series) return; // suppress error when series is trying remove a removed price line or the chart is already removed in parent lifecycle try { series.removePriceLine(priceLineRef.current); } catch {} // eslint-disable-line no-empty priceLineRef.current = undefined; }; }, [series]); return null; };