import React, { useEffect, useRef } from 'react'; import { useInViewport } from 'react-in-viewport'; import type { ReportChartProps } from '.'; import { Chart } from '.'; import type { ChartContextType } from './ChartProvider'; export function LazyChart(props: ReportChartProps & ChartContextType) { const ref = useRef(null); const once = useRef(false); const { inViewport } = useInViewport(ref, undefined, { disconnectOnLeave: true, }); useEffect(() => { if (inViewport) { once.current = true; } }, [inViewport]); return (
{once.current || inViewport ? ( ) : (
)}
); }