import React, { useState } from 'react'; import { ResponsiveContainer, XAxis, YAxis, CartesianGrid, Tooltip, AreaChart, Area, Legend, } from 'recharts'; import CustomTooltip from './CustomChartTooltip'; import { Styles } from '../common'; import { useTranslation } from 'react-i18next'; interface Props { data: { chart: any[]; namesMap: string[] }; colors: any; onClick?: (event, index) => void; yaxis?: Record; label?: string; hideLegend?: boolean; inGrid?: boolean; } function CustomAreaChart(props: Props) { const { t } = useTranslation(); const { data = { chart: [], namesMap: [] }, colors, onClick = () => null, yaxis = { ...Styles.yaxis }, label = 'Number of Sessions', hideLegend = false, inGrid, } = props; const [hoveredSeries, setHoveredSeries] = useState(null); const handleMouseOver = (key: string) => () => { setHoveredSeries(key); }; const handleMouseLeave = () => { setHoveredSeries(null); }; // Dynamically reorder namesMap to render hovered series last const reorderedNamesMap = hoveredSeries ? [...data.namesMap.filter((key) => key !== hoveredSeries), hoveredSeries] : data.namesMap; return ( {!hideLegend && ( ({ value: key, type: 'line', color: colors[index], id: key, }))} /> )} Styles.tickFormatter(val)} label={{ ...Styles.axisLabelLeft, value: label || t('Number of Sessions'), }} /> } // Pass hoveredSeries to tooltip /> {Array.isArray(reorderedNamesMap) && reorderedNamesMap.map((key, index) => ( ))} ); } export default CustomAreaChart;