import React from 'react'; import type { IChartData } from '@/app/_trpc/client'; import { useFormatDateInterval } from '@/hooks/useFormatDateInterval'; import { useNumber } from '@/hooks/useNumerFormatter'; import { useRechartDataModel } from '@/hooks/useRechartDataModel'; import { useVisibleSeries } from '@/hooks/useVisibleSeries'; import { getChartColor } from '@/utils/theme'; import type { IChartLineType, IInterval } from '@openpanel/validation'; import { Area, AreaChart, CartesianGrid, Tooltip, XAxis, YAxis, } from 'recharts'; import { getYAxisWidth } from './chart-utils'; import { useChartContext } from './ChartProvider'; import { ReportChartTooltip } from './ReportChartTooltip'; import { ReportTable } from './ReportTable'; import { ResponsiveContainer } from './ResponsiveContainer'; interface ReportAreaChartProps { data: IChartData; interval: IInterval; lineType: IChartLineType; } export function ReportAreaChart({ lineType, interval, data, }: ReportAreaChartProps) { const { editMode } = useChartContext(); const { series, setVisibleSeries } = useVisibleSeries(data); const formatDate = useFormatDateInterval(interval); const rechartData = useRechartDataModel(series); const number = useNumber(); return ( <> {({ width, height }) => ( } /> formatDate(m)} tickLine={false} allowDuplicatedCategory={false} /> {series.map((serie) => { const color = getChartColor(serie.index); return ( ); })} )} {editMode && ( )} ); }