import { JSX, useCallback, useContext, useMemo } from 'react'; import { Loading, StatusLight } from 'react-basics'; import { useMessages, useTheme } from 'components/hooks'; import BarChart from 'components/metrics/BarChart'; import { formatLongNumber } from 'lib/format'; import { ReportContext } from '../[reportId]/Report'; import styles from './FunnelChart.module.css'; export interface FunnelChartProps { className?: string; isLoading?: boolean; } export function FunnelChart({ className, isLoading }: FunnelChartProps) { const { report } = useContext(ReportContext); const { formatMessage, labels } = useMessages(); const { colors } = useTheme(); const { parameters, data } = report || {}; const renderXLabel = useCallback( (label: string, index: number) => { return parameters.urls[index]; }, [parameters], ); const renderTooltipPopup = useCallback( ( setTooltipPopup: (arg0: JSX.Element) => void, model: { tooltip: { opacity: any; labelColors: any; dataPoints: any } }, ) => { const { opacity, labelColors, dataPoints } = model.tooltip; if (!dataPoints?.length || !opacity) { setTooltipPopup(null); return; } setTooltipPopup( <>