import React, { useState } from 'react'; import CustomTooltip from "./CustomChartTooltip"; import { Styles } from '../common'; import { ResponsiveContainer, XAxis, YAxis, CartesianGrid, Tooltip, AreaChart, Area, Legend, } from 'recharts'; 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 { 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 || 'Number of Sessions', }} /> } // Pass hoveredSeries to tooltip /> {Array.isArray(reorderedNamesMap) && reorderedNamesMap.map((key, index) => ( ))} ); } export default CustomAreaChart;