{"version":3,"file":"nivo-line.mjs","sources":["../src/PointTooltip.tsx","../src/defaults.ts","../src/SliceTooltip.tsx","../src/hooks.ts","../src/Areas.tsx","../src/LinesItem.tsx","../src/Lines.tsx","../src/SlicesItem.tsx","../src/Slices.tsx","../src/Points.tsx","../src/Mesh.tsx","../src/Line.tsx","../src/ResponsiveLine.tsx","../src/LineCanvas.tsx","../src/ResponsiveLineCanvas.tsx","../src/types.ts"],"sourcesContent":["import { memo } from 'react'\nimport { BasicTooltip } from '@nivo/tooltip'\nimport { LineSeries, PointTooltipProps } from './types'\n\nexport const NonMemoizedPointTooltip = <Series extends LineSeries>({\n    point,\n}: PointTooltipProps<Series>) => {\n    return (\n        <BasicTooltip\n            id={\n                <span>\n                    x: <strong>{point.data.xFormatted}</strong>, y:{' '}\n                    <strong>{point.data.yFormatted}</strong>\n                </span>\n            }\n            enableChip={true}\n            color={point.seriesColor}\n        />\n    )\n}\n\nexport const PointTooltip = memo(NonMemoizedPointTooltip)\n","import { defaultAxisProps } from '@nivo/axes'\nimport {\n    CommonLineProps,\n    LineSvgPropsWithDefaults,\n    LineCanvasPropsWithDefaults,\n    DefaultSeries,\n    LineLayerId,\n} from './types'\nimport { PointTooltip } from './PointTooltip'\nimport { SliceTooltip } from './SliceTooltip'\n\nexport const commonDefaultProps: Omit<\n    CommonLineProps<DefaultSeries>,\n    | 'data'\n    | 'xFormat'\n    | 'yFormat'\n    | 'layers'\n    | 'width'\n    | 'height'\n    | 'margin'\n    | 'theme'\n    | 'pointSymbol'\n    | 'gridXValues'\n    | 'gridYValues'\n    | 'onMouseEnter'\n    | 'onMouseMove'\n    | 'onMouseLeave'\n    | 'onMouseDown'\n    | 'onMouseUp'\n    | 'onClick'\n    | 'onDoubleClick'\n    | 'onTouchStart'\n    | 'onTouchMove'\n    | 'onTouchEnd'\n> & {\n    layers: LineLayerId[]\n} = {\n    xScale: {\n        type: 'point',\n    },\n    yScale: {\n        type: 'linear',\n        min: 0,\n        max: 'auto',\n    },\n    curve: 'linear',\n    colors: { scheme: 'nivo' },\n    lineWidth: 2,\n    layers: [\n        'grid',\n        'markers',\n        'axes',\n        'areas',\n        'crosshair',\n        'lines',\n        'points',\n        'slices',\n        'mesh',\n        'legends',\n    ],\n    enablePoints: true,\n    pointSize: 6,\n    pointColor: { from: 'series.color' },\n    pointBorderWidth: 0,\n    pointBorderColor: { theme: 'background' },\n    enableArea: false,\n    areaBaselineValue: 0,\n    areaOpacity: 0.2,\n    enableGridX: true,\n    enableGridY: true,\n    legends: [],\n    isInteractive: true,\n    tooltip: PointTooltip,\n    sliceTooltip: SliceTooltip,\n    debugMesh: false,\n    renderWrapper: true,\n}\n\nexport const svgDefaultProps: Omit<\n    LineSvgPropsWithDefaults<DefaultSeries>,\n    'data' | 'width' | 'height' | 'margin' | 'theme'\n> = {\n    ...commonDefaultProps,\n    defs: [],\n    fill: [],\n    enablePointLabel: false,\n    pointLabel: 'data.yFormatted',\n    areaBlendMode: 'normal',\n    axisTop: null,\n    axisRight: null,\n    axisBottom: defaultAxisProps,\n    axisLeft: defaultAxisProps,\n    useMesh: false,\n    enableSlices: false,\n    debugSlices: false,\n    enableCrosshair: true,\n    crosshairType: 'bottom-left',\n    enableTouchCrosshair: false,\n    initialHiddenIds: [],\n    animate: true,\n    motionConfig: 'gentle',\n    role: 'img',\n    isFocusable: false,\n}\n\nexport const canvasDefaultProps: Omit<\n    LineCanvasPropsWithDefaults<DefaultSeries>,\n    'data' | 'width' | 'height' | 'margin' | 'theme'\n> = {\n    ...commonDefaultProps,\n    pixelRatio: typeof window !== 'undefined' ? (window.devicePixelRatio ?? 1) : 1,\n    axisTop: null,\n    axisRight: null,\n    axisBottom: defaultAxisProps,\n    axisLeft: defaultAxisProps,\n}\n","import { memo } from 'react'\nimport { useTheme } from '@nivo/theming'\nimport { Chip, TableTooltip } from '@nivo/tooltip'\nimport { LineSeries, SliceTooltipProps } from './types'\n\nexport const NonMemoizedSliceTooltip = <Series extends LineSeries>({\n    slice,\n    axis,\n}: SliceTooltipProps<Series>) => {\n    const theme = useTheme()\n    const otherAxis = axis === 'x' ? 'y' : 'x'\n\n    return (\n        <TableTooltip\n            rows={slice.points.map(point => [\n                <Chip key=\"chip\" color={point.seriesColor} style={theme.tooltip.chip} />,\n                point.seriesId,\n                <span key=\"value\" style={theme.tooltip.tableCellValue}>\n                    {point.data[`${otherAxis}Formatted`]}\n                </span>,\n            ])}\n        />\n    )\n}\n\nexport const SliceTooltip = memo(NonMemoizedSliceTooltip)\n","import { useCallback, useMemo, useState } from 'react'\nimport { area, line } from 'd3-shape'\nimport uniqueId from 'lodash/uniqueId.js'\nimport { curveFromProp, useValueFormatter } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport {\n    useOrdinalColorScale,\n    useInheritedColor,\n    OrdinalColorScaleConfig,\n    InheritedColorConfig,\n} from '@nivo/colors'\nimport { computeXYScalesForSeries } from '@nivo/scales'\nimport { commonDefaultProps, svgDefaultProps } from './defaults'\nimport {\n    LineSeries,\n    CommonLineProps,\n    DataProps,\n    InferX,\n    InferY,\n    InferSeriesId,\n    LineSvgProps,\n    LineGenerator,\n    AreaGenerator,\n    AllowedValue,\n    ComputedSeries,\n    Point,\n    SliceData,\n    PointColorContext,\n} from './types'\n\nexport function useLineGenerator(curve: CommonLineProps<LineSeries>['curve']): LineGenerator {\n    return useMemo(() => {\n        return line<{\n            x: number\n            y: number\n        }>()\n            .defined(d => d.x !== null && d.y !== null)\n            .x(d => d.x)\n            .y(d => d.y)\n            .curve(curveFromProp(curve))\n    }, [curve])\n}\n\nexport function useAreaGenerator<Y extends AllowedValue>({\n    curve,\n    yScale,\n    areaBaselineValue,\n}: {\n    curve: CommonLineProps<LineSeries>['curve']\n    yScale: (y: Y) => number\n    areaBaselineValue: Y\n}): AreaGenerator {\n    return useMemo(() => {\n        return area<{\n            x: number\n            y: number\n        }>()\n            .defined(d => d.x !== null && d.y !== null)\n            .x(d => d.x)\n            .y1(d => d.y)\n            .curve(curveFromProp(curve))\n            .y0(yScale(areaBaselineValue))\n    }, [curve, yScale, areaBaselineValue])\n}\n\nfunction usePoints<Series extends LineSeries>({\n    series,\n    getPointColor,\n    getPointBorderColor,\n    formatX,\n    formatY,\n}: {\n    series: ComputedSeries<Series>[]\n    getPointColor: (context: PointColorContext<Series>) => string\n    getPointBorderColor: (point: Omit<Point<Series>, 'borderColor'>) => string\n    formatX: (x: InferX<Series>) => string\n    formatY: (y: InferY<Series>) => string\n}) {\n    return useMemo(() => {\n        return series.reduce((acc, seriesItem, seriesIndex) => {\n            return [\n                ...acc,\n                ...seriesItem.data\n                    .filter(datum => datum.position.x !== null && datum.position.y !== null)\n                    .map((datum, indexInSeries) => {\n                        const point: Omit<Point<Series>, 'color' | 'borderColor'> & {\n                            color?: string\n                            borderColor?: string\n                        } = {\n                            id: `${seriesItem.id}.${indexInSeries}`,\n                            indexInSeries,\n                            absIndex: acc.length + indexInSeries,\n                            seriesIndex,\n                            seriesId: seriesItem.id,\n                            seriesColor: seriesItem.color,\n                            x: datum.position.x,\n                            y: datum.position.y,\n                            data: {\n                                ...datum.data,\n                                xFormatted: formatX(datum.data.x as InferX<Series>),\n                                yFormatted: formatY(datum.data.y as InferY<Series>),\n                            },\n                        }\n                        point.color = getPointColor({\n                            series: seriesItem,\n                            point: point as Omit<Point<Series>, 'color' | 'borderColor'>,\n                        })\n                        point.borderColor = getPointBorderColor(\n                            point as Omit<Point<Series>, 'borderColor'>\n                        )\n\n                        return point as Point<Series>\n                    }),\n            ]\n        }, [] as Point<Series>[])\n    }, [series, getPointColor, getPointBorderColor, formatX, formatY])\n}\n\nexport const useSlices = <Series extends LineSeries>({\n    componentId,\n    enableSlices,\n    points,\n    width,\n    height,\n}: {\n    componentId: string\n    enableSlices: Exclude<LineSvgProps<Series>['enableSlices'], undefined>\n    points: Point<Series>[]\n    width: number\n    height: number\n}) => {\n    return useMemo(() => {\n        if (enableSlices === 'x') {\n            const map = new Map()\n            points.forEach(point => {\n                if (point.data.x === null || point.data.y === null) return\n                if (!map.has(point.x)) map.set(point.x, [point])\n                else map.get(point.x).push(point)\n            })\n\n            return Array.from(map.entries())\n                .sort((a, b) => a[0] - b[0])\n                .map(([x, slicePoints], i, slices) => {\n                    const prevSlice = slices[i - 1]\n                    const nextSlice = slices[i + 1]\n\n                    let x0\n                    if (!prevSlice) x0 = x\n                    else x0 = x - (x - prevSlice[0]) / 2\n\n                    let sliceWidth\n                    if (!nextSlice) sliceWidth = width - x0\n                    else sliceWidth = x - x0 + (nextSlice[0] - x) / 2\n\n                    return {\n                        id: `slice:${componentId}:${x}`,\n                        x0,\n                        x,\n                        y0: 0,\n                        y: 0,\n                        width: sliceWidth,\n                        height,\n                        points: slicePoints.reverse(),\n                    } as SliceData<Series>\n                })\n        } else if (enableSlices === 'y') {\n            const map = new Map()\n            points.forEach(point => {\n                if (point.data.x === null || point.data.y === null) return\n                if (!map.has(point.y)) map.set(point.y, [point])\n                else map.get(point.y).push(point)\n            })\n\n            return Array.from(map.entries())\n                .sort((a, b) => a[0] - b[0])\n                .map(([y, slicePoints], i, slices) => {\n                    const prevSlice = slices[i - 1]\n                    const nextSlice = slices[i + 1]\n\n                    let y0\n                    if (!prevSlice) y0 = y\n                    else y0 = y - (y - prevSlice[0]) / 2\n\n                    let sliceHeight\n                    if (!nextSlice) sliceHeight = height - y0\n                    else sliceHeight = y - y0 + (nextSlice[0] - y) / 2\n\n                    return {\n                        id: y,\n                        x0: 0,\n                        x: 0,\n                        y0,\n                        y,\n                        width,\n                        height: sliceHeight,\n                        points: slicePoints.reverse(),\n                    } as SliceData<Series>\n                })\n        }\n\n        return []\n    }, [componentId, enableSlices, height, points, width])\n}\n\nexport const LINE_UNIQUE_ID_PREFIX = 'line'\n\nexport const useLine = <Series extends LineSeries>({\n    data,\n    xScale: xScaleSpec = commonDefaultProps.xScale,\n    xFormat,\n    yScale: yScaleSpec = commonDefaultProps.yScale,\n    yFormat,\n    width,\n    height,\n    colors = commonDefaultProps.colors as OrdinalColorScaleConfig<Series>,\n    curve = commonDefaultProps.curve,\n    areaBaselineValue = commonDefaultProps.areaBaselineValue as InferY<Series>,\n    pointColor = commonDefaultProps.pointColor as InheritedColorConfig<PointColorContext<Series>>,\n    pointBorderColor = commonDefaultProps.pointBorderColor as InheritedColorConfig<\n        Omit<Point<Series>, 'borderColor'>\n    >,\n    enableSlices = svgDefaultProps.enableSlices as Exclude<\n        LineSvgProps<Series>['enableSlices'],\n        undefined\n    >,\n    initialHiddenIds = svgDefaultProps.initialHiddenIds as InferSeriesId<Series>[],\n}: DataProps<Series> &\n    Pick<\n        CommonLineProps<Series>,\n        | 'xScale'\n        | 'yScale'\n        | 'colors'\n        | 'curve'\n        | 'areaBaselineValue'\n        | 'pointColor'\n        | 'pointBorderColor'\n    > & {\n        xFormat?: CommonLineProps<Series>['xFormat']\n        yFormat?: CommonLineProps<Series>['yFormat']\n    } & Pick<LineSvgProps<Series>, 'enableSlices' | 'initialHiddenIds'> & {\n        width: number\n        height: number\n    }): {\n    legendData: {\n        id: InferSeriesId<Series>\n        label: string\n        color: string\n        hidden: boolean\n    }[]\n    toggleSeries: (id: InferSeriesId<Series>) => void\n    lineGenerator: LineGenerator\n    areaGenerator: AreaGenerator\n    getColor: (series: Series) => string\n    series: ComputedSeries<Series>[]\n    xScale: (x: InferX<Series>) => number\n    yScale: (y: InferY<Series>) => number\n    slices: SliceData<Series>[]\n    points: Point<Series>[]\n} => {\n    const [componentId] = useState(uniqueId(LINE_UNIQUE_ID_PREFIX))\n    const formatX = useValueFormatter(xFormat)\n    const formatY = useValueFormatter(yFormat)\n    const getColor = useOrdinalColorScale(colors, 'id')\n    const theme = useTheme()\n    const getPointColor = useInheritedColor(pointColor, theme)\n    const getPointBorderColor = useInheritedColor(pointBorderColor, theme)\n    const [hiddenIds, setHiddenIds] = useState(initialHiddenIds ?? [])\n\n    const {\n        xScale,\n        yScale,\n        series: rawSeries,\n    } = useMemo(\n        () =>\n            computeXYScalesForSeries<Series, Series['data'][number]>(\n                data.filter(item => hiddenIds.indexOf(item.id as InferSeriesId<Series>) === -1),\n                xScaleSpec,\n                yScaleSpec,\n                width,\n                height\n            ),\n        [data, hiddenIds, xScaleSpec, yScaleSpec, width, height]\n    )\n\n    const { legendData, series } = useMemo(() => {\n        const dataWithColor = data.map(seriesItem => ({\n            id: seriesItem.id as InferSeriesId<Series>,\n            label: `${seriesItem.id}`,\n            color: getColor(seriesItem),\n        }))\n\n        const series = dataWithColor\n            .map(datum => ({\n                ...rawSeries.find(seriesItem => seriesItem.id === datum.id)!,\n                color: datum.color,\n            }))\n            .filter(item => Boolean(item.id)) as unknown as ComputedSeries<Series>[]\n\n        const legendData = dataWithColor\n            .map(item => ({\n                ...item,\n                hidden: !series.find(seriesItem => seriesItem.id === item.id),\n            }))\n            .reverse()\n\n        return { legendData, series }\n    }, [data, rawSeries, getColor])\n\n    const toggleSeries = useCallback((id: InferSeriesId<Series>) => {\n        setHiddenIds(state =>\n            state.indexOf(id) > -1 ? state.filter(item => item !== id) : [...state, id]\n        )\n    }, [])\n\n    const points = usePoints<Series>({\n        series,\n        getPointColor,\n        getPointBorderColor,\n        formatX,\n        formatY,\n    })\n\n    const slices = useSlices<Series>({\n        componentId,\n        enableSlices,\n        points,\n        width,\n        height,\n    })\n\n    const lineGenerator = useLineGenerator(curve)\n    const areaGenerator = useAreaGenerator<InferY<Series>>({\n        curve,\n        yScale: yScale as (y: InferY<Series>) => number,\n        areaBaselineValue,\n    })\n\n    return {\n        legendData,\n        toggleSeries,\n        lineGenerator,\n        areaGenerator,\n        getColor,\n        series,\n        xScale: xScale as (x: InferX<Series>) => number,\n        yScale: yScale as (y: InferY<Series>) => number,\n        slices,\n        points,\n    }\n}\n","import { memo } from 'react'\nimport { useSpring, animated } from '@react-spring/web'\nimport { CssMixBlendMode, useAnimatedPath, useMotionConfig } from '@nivo/core'\nimport { LineSeries, ComputedSeries, AreaGenerator } from './types'\n\nconst AreaPath = ({\n    areaBlendMode,\n    areaOpacity,\n    color,\n    fill,\n    path,\n}: {\n    areaBlendMode: CssMixBlendMode\n    areaOpacity: number\n    color: string\n    fill?: string\n    path: string\n}) => {\n    const { animate, config: springConfig } = useMotionConfig()\n\n    const animatedPath = useAnimatedPath(path)\n    const animatedProps = useSpring({\n        color,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    return (\n        <animated.path\n            d={animatedPath}\n            fill={fill ? fill : animatedProps.color}\n            fillOpacity={areaOpacity}\n            strokeWidth={0}\n            style={{\n                mixBlendMode: areaBlendMode,\n            }}\n        />\n    )\n}\n\nconst NonMemoizedAreas = <Series extends LineSeries>({\n    areaGenerator,\n    areaOpacity,\n    areaBlendMode,\n    series,\n}: {\n    areaGenerator: AreaGenerator\n    areaOpacity: number\n    areaBlendMode: CssMixBlendMode\n    series: readonly ComputedSeries<Series>[]\n}) => {\n    const reversedSeries = series.slice(0).reverse()\n\n    return (\n        <g>\n            {reversedSeries.map(seriesItem => (\n                <AreaPath\n                    key={`${seriesItem.id}`}\n                    path={areaGenerator(seriesItem.data.map(d => d.position))!}\n                    {...{ areaOpacity, areaBlendMode, ...seriesItem }}\n                />\n            ))}\n        </g>\n    )\n}\n\nexport const Areas = memo(NonMemoizedAreas) as typeof NonMemoizedAreas\n","import { memo, useMemo } from 'react'\nimport { animated } from '@react-spring/web'\nimport { useAnimatedPath } from '@nivo/core'\nimport { LineGenerator } from './types'\n\nexport const NonMemoizedLinesItem = ({\n    lineGenerator,\n    points,\n    color,\n    thickness,\n}: {\n    lineGenerator: LineGenerator\n    points: { x: number; y: number }[]\n    color: string\n    thickness: number\n}) => {\n    const path = useMemo(() => lineGenerator(points), [lineGenerator, points])\n    const animatedPath = useAnimatedPath(path!)\n\n    return <animated.path d={animatedPath} fill=\"none\" strokeWidth={thickness} stroke={color} />\n}\n\nexport const LinesItem = memo(NonMemoizedLinesItem) as typeof NonMemoizedLinesItem\n","import { memo } from 'react'\nimport { LineSeries, ComputedSeries, LineGenerator } from './types'\nimport { LinesItem } from './LinesItem'\n\nexport const NonMemoizedLines = <Series extends LineSeries>({\n    series,\n    lineGenerator,\n    lineWidth,\n}: {\n    series: readonly ComputedSeries<Series>[]\n    lineGenerator: LineGenerator\n    lineWidth: number\n}) => {\n    return (\n        <>\n            {series\n                .slice(0)\n                .reverse()\n                .map(({ id, data, color }) => (\n                    <LinesItem\n                        key={id}\n                        points={data.map(d => d.position)}\n                        lineGenerator={lineGenerator}\n                        color={color}\n                        thickness={lineWidth}\n                    />\n                ))}\n        </>\n    )\n}\n\nexport const Lines = memo(NonMemoizedLines) as typeof NonMemoizedLines\n","import { createElement, memo, useCallback, MouseEvent, TouchEvent } from 'react'\nimport { useTooltip } from '@nivo/tooltip'\nimport { LineSeries, SliceData, CommonLineProps, LineSvgProps } from './types'\n\nexport const NonMemoizedSlicesItem = <Series extends LineSeries>({\n    slice,\n    slices,\n    axis,\n    debug,\n    tooltip,\n    isCurrent,\n    setCurrent,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    onClick,\n    onDoubleClick,\n    onTouchStart,\n    onTouchMove,\n    onTouchEnd,\n}: {\n    slice: SliceData<Series>\n    slices: readonly SliceData<Series>[]\n    axis: Exclude<LineSvgProps<Series>['enableSlices'], undefined | false>\n    debug: boolean\n    tooltip: CommonLineProps<Series>['sliceTooltip']\n    isCurrent: boolean\n    setCurrent: (slice: SliceData<Series> | null) => void\n    onMouseEnter?: CommonLineProps<Series>['onMouseEnter']\n    onMouseMove?: CommonLineProps<Series>['onMouseMove']\n    onMouseLeave?: CommonLineProps<Series>['onMouseLeave']\n    onMouseDown?: CommonLineProps<Series>['onMouseDown']\n    onMouseUp?: CommonLineProps<Series>['onMouseUp']\n    onClick?: CommonLineProps<Series>['onClick']\n    onDoubleClick?: CommonLineProps<Series>['onDoubleClick']\n    onTouchStart?: CommonLineProps<Series>['onTouchStart']\n    onTouchMove?: CommonLineProps<Series>['onTouchMove']\n    onTouchEnd?: CommonLineProps<Series>['onTouchEnd']\n}) => {\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleMouseEnter = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            showTooltipFromEvent(createElement(tooltip, { slice, axis }), event, 'right')\n            setCurrent(slice)\n            onMouseEnter?.(slice, event)\n        },\n        [showTooltipFromEvent, tooltip, slice, axis, setCurrent, onMouseEnter]\n    )\n\n    const handleMouseMove = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            showTooltipFromEvent(createElement(tooltip, { slice, axis }), event, 'right')\n            onMouseMove?.(slice, event)\n        },\n        [showTooltipFromEvent, tooltip, slice, axis, onMouseMove]\n    )\n\n    const handleMouseLeave = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            hideTooltip()\n            setCurrent(null)\n            onMouseLeave?.(slice, event)\n        },\n        [hideTooltip, setCurrent, onMouseLeave, slice]\n    )\n\n    const handleMouseDown = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            onMouseDown?.(slice, event)\n        },\n        [slice, onMouseDown]\n    )\n\n    const handleMouseUp = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            onMouseUp?.(slice, event)\n        },\n        [slice, onMouseUp]\n    )\n\n    const handleClick = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            onClick?.(slice, event)\n        },\n        [slice, onClick]\n    )\n\n    const handleDoubleClick = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            onDoubleClick?.(slice, event)\n        },\n        [slice, onDoubleClick]\n    )\n\n    const handeOnTouchStart = useCallback(\n        (event: TouchEvent<SVGRectElement>) => {\n            showTooltipFromEvent(createElement(tooltip, { slice, axis }), event, 'right')\n            setCurrent(slice)\n            onTouchStart?.(slice, event)\n        },\n        [axis, onTouchStart, setCurrent, showTooltipFromEvent, slice, tooltip]\n    )\n\n    const handeOnTouchMove = useCallback(\n        (event: TouchEvent<SVGRectElement>) => {\n            // This event will be locked to the element that was touched originally\n            // We find the element that is currently being \"hovered over\" by getting the element at the touch point\n            const touchPoint = event.touches[0]\n            const touchingElement = document.elementFromPoint(\n                touchPoint.clientX,\n                touchPoint.clientY\n            )\n            // Is this a nivo ref?\n            const touchingSliceId = touchingElement?.getAttribute('data-ref')\n            if (touchingSliceId) {\n                // Is this a slice for this graph?\n                const slice = slices.find(slice => slice.id === touchingSliceId)\n                if (slice) {\n                    showTooltipFromEvent(createElement(tooltip, { slice, axis }), event, 'right')\n                    setCurrent(slice)\n                }\n            }\n\n            // Note here, this will pass the original slice, not the one we found\n            // But this can be found with document.elementFromPoint()\n            onTouchMove?.(slice, event)\n        },\n        [axis, onTouchMove, setCurrent, showTooltipFromEvent, slice, slices, tooltip]\n    )\n\n    const handleOnTouchEnd = useCallback(\n        (event: TouchEvent<SVGRectElement>) => {\n            hideTooltip()\n            setCurrent(null)\n            onTouchEnd?.(slice, event)\n        },\n        [hideTooltip, setCurrent, onTouchEnd, slice]\n    )\n\n    return (\n        <rect\n            x={slice.x0}\n            y={slice.y0}\n            width={slice.width}\n            height={slice.height}\n            stroke=\"red\"\n            strokeWidth={debug ? 1 : 0}\n            strokeOpacity={0.75}\n            fill=\"red\"\n            fillOpacity={isCurrent && debug ? 0.35 : 0}\n            onMouseEnter={handleMouseEnter}\n            onMouseMove={handleMouseMove}\n            onMouseLeave={handleMouseLeave}\n            onMouseDown={handleMouseDown}\n            onMouseUp={handleMouseUp}\n            onClick={handleClick}\n            onDoubleClick={handleDoubleClick}\n            onTouchStart={handeOnTouchStart}\n            onTouchMove={handeOnTouchMove}\n            onTouchEnd={handleOnTouchEnd}\n            data-ref={slice.id}\n        />\n    )\n}\n\nexport const SlicesItem = memo(NonMemoizedSlicesItem) as typeof NonMemoizedSlicesItem\n","import { memo } from 'react'\nimport { SlicesItem } from './SlicesItem'\nimport { LineSeries, SliceData, CommonLineProps, LineSvgProps } from './types'\n\nexport const NonMemoizedSlices = <Series extends LineSeries>({\n    slices,\n    axis,\n    debug,\n    tooltip,\n    current,\n    setCurrent,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    onClick,\n    onDoubleClick,\n    onTouchStart,\n    onTouchMove,\n    onTouchEnd,\n}: {\n    slices: readonly SliceData<Series>[]\n    axis: Exclude<LineSvgProps<Series>['enableSlices'], undefined | false>\n    debug: boolean\n    tooltip: CommonLineProps<Series>['sliceTooltip']\n    current: SliceData<Series> | null\n    setCurrent: (slice: SliceData<Series> | null) => void\n    onMouseEnter?: CommonLineProps<Series>['onMouseEnter']\n    onMouseMove?: CommonLineProps<Series>['onMouseMove']\n    onMouseLeave?: CommonLineProps<Series>['onMouseLeave']\n    onMouseDown?: CommonLineProps<Series>['onMouseDown']\n    onMouseUp?: CommonLineProps<Series>['onMouseUp']\n    onClick?: CommonLineProps<Series>['onClick']\n    onDoubleClick?: CommonLineProps<Series>['onDoubleClick']\n    onTouchStart?: CommonLineProps<Series>['onTouchStart']\n    onTouchMove?: CommonLineProps<Series>['onTouchMove']\n    onTouchEnd?: CommonLineProps<Series>['onTouchEnd']\n}) => {\n    return (\n        <>\n            {slices.map(slice => (\n                <SlicesItem<Series>\n                    key={slice.id}\n                    slice={slice}\n                    slices={slices}\n                    axis={axis}\n                    debug={debug}\n                    tooltip={tooltip}\n                    setCurrent={setCurrent}\n                    isCurrent={current !== null && current.id === slice.id}\n                    onMouseEnter={onMouseEnter}\n                    onMouseMove={onMouseMove}\n                    onMouseLeave={onMouseLeave}\n                    onMouseDown={onMouseDown}\n                    onMouseUp={onMouseUp}\n                    onClick={onClick}\n                    onDoubleClick={onDoubleClick}\n                    onTouchStart={onTouchStart}\n                    onTouchMove={onTouchMove}\n                    onTouchEnd={onTouchEnd}\n                />\n            ))}\n        </>\n    )\n}\n\nexport const Slices = memo(NonMemoizedSlices) as typeof NonMemoizedSlices\n","import { createElement, memo } from 'react'\n// @ts-expect-error no types\nimport { getLabelGenerator } from '@nivo/core'\nimport { DotsItem, Margin } from '@nivo/core'\nimport { useTooltip } from '@nivo/tooltip'\nimport { LineSeries, LineSvgPropsWithDefaults, Point } from './types'\n\nconst NonMemoizedPoints = <Series extends LineSeries>({\n    points,\n    symbol,\n    size,\n    borderWidth,\n    enableLabel,\n    label,\n    labelYOffset,\n    isFocusable,\n    setCurrentPoint,\n    tooltip,\n    margin,\n    ariaLabel,\n    ariaLabelledBy,\n    ariaDescribedBy,\n    ariaHidden,\n    ariaDisabled,\n}: {\n    points: readonly Point<Series>[]\n    symbol: LineSvgPropsWithDefaults<Series>['pointSymbol']\n    size: number\n    borderWidth: LineSvgPropsWithDefaults<Series>['pointBorderWidth']\n    enableLabel: LineSvgPropsWithDefaults<Series>['enablePointLabel']\n    label: LineSvgPropsWithDefaults<Series>['pointLabel']\n    labelYOffset: LineSvgPropsWithDefaults<Series>['pointLabelYOffset']\n    isFocusable: LineSvgPropsWithDefaults<Series>['isFocusable']\n    setCurrentPoint: (point: Point<Series> | null) => void\n    tooltip: LineSvgPropsWithDefaults<Series>['tooltip']\n    margin: Margin\n    ariaLabel: LineSvgPropsWithDefaults<Series>['pointAriaLabel']\n    ariaLabelledBy: LineSvgPropsWithDefaults<Series>['pointAriaLabelledBy']\n    ariaDescribedBy: LineSvgPropsWithDefaults<Series>['pointAriaDescribedBy']\n    ariaHidden: LineSvgPropsWithDefaults<Series>['pointAriaHidden']\n    ariaDisabled: LineSvgPropsWithDefaults<Series>['pointAriaDisabled']\n}) => {\n    const getLabel = getLabelGenerator(label)\n\n    const { showTooltipAt, hideTooltip } = useTooltip()\n\n    // We sort the points so that the lower series are drawn on top of the higher ones.\n    const mappedPoints = points\n        .slice(0)\n        .sort((a, b) => a.indexInSeries - b.indexInSeries)\n        .sort((a, b) => b.seriesIndex - a.seriesIndex)\n        .map(point => {\n            return {\n                id: point.id,\n                x: point.x,\n                y: point.y,\n                datum: point.data,\n                fill: point.color,\n                stroke: point.borderColor,\n                label: enableLabel ? getLabel(point) : null,\n                ariaLabel: ariaLabel ? ariaLabel(point) : undefined,\n                ariaLabelledBy: ariaLabelledBy ? ariaLabelledBy(point) : undefined,\n                ariaDescribedBy: ariaDescribedBy ? ariaDescribedBy(point) : undefined,\n                ariaHidden: ariaHidden ? ariaHidden(point) : undefined,\n                ariaDisabled: ariaDisabled ? ariaDisabled(point) : undefined,\n                onFocus: isFocusable\n                    ? () => {\n                          setCurrentPoint(point)\n                          showTooltipAt(\n                              createElement(tooltip, { point }),\n                              [margin.left + point.x, margin.top + point.y],\n                              'top'\n                          )\n                      }\n                    : undefined,\n                onBlur: isFocusable\n                    ? () => {\n                          setCurrentPoint(null)\n                          hideTooltip()\n                      }\n                    : undefined,\n            }\n        })\n\n    return (\n        <g>\n            {mappedPoints.map(point => (\n                <DotsItem\n                    key={point.id}\n                    x={point.x}\n                    y={point.y}\n                    datum={point.datum}\n                    symbol={symbol as any}\n                    size={size}\n                    color={point.fill}\n                    borderWidth={borderWidth}\n                    borderColor={point.stroke}\n                    label={point.label}\n                    labelYOffset={labelYOffset}\n                    ariaLabel={point.ariaLabel}\n                    ariaLabelledBy={point.ariaLabelledBy}\n                    ariaDescribedBy={point.ariaDescribedBy}\n                    ariaHidden={point.ariaHidden}\n                    ariaDisabled={point.ariaDisabled}\n                    isFocusable={isFocusable}\n                    onFocus={point.onFocus}\n                    onBlur={point.onBlur}\n                    testId={`line.point.${point.id}`}\n                />\n            ))}\n        </g>\n    )\n}\n\nexport const Points = memo(NonMemoizedPoints) as typeof NonMemoizedPoints\n","import { createElement, memo, useCallback, MouseEvent, TouchEvent } from 'react'\nimport { Margin } from '@nivo/core'\nimport { useTooltip } from '@nivo/tooltip'\nimport { Mesh as BaseMesh } from '@nivo/voronoi'\nimport { LineSeries, Point, LineSvgProps, LineSvgPropsWithDefaults } from './types'\n\nconst NonMemoizedMesh = <Series extends LineSeries>({\n    points,\n    width,\n    height,\n    margin,\n    setCurrent,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    onClick,\n    onDoubleClick,\n    onTouchStart,\n    onTouchMove,\n    onTouchEnd,\n    tooltip,\n    debug,\n    enableTouchCrosshair,\n}: {\n    points: Point<Series>[]\n    width: number\n    height: number\n    margin: Margin\n    setCurrent: (point: Point<Series> | null) => void\n    onMouseEnter?: LineSvgProps<Series>['onMouseEnter']\n    onMouseMove?: LineSvgProps<Series>['onMouseMove']\n    onMouseLeave?: LineSvgProps<Series>['onMouseLeave']\n    onMouseDown?: LineSvgProps<Series>['onMouseDown']\n    onMouseUp?: LineSvgProps<Series>['onMouseUp']\n    onClick?: LineSvgProps<Series>['onClick']\n    onDoubleClick?: LineSvgProps<Series>['onDoubleClick']\n    onTouchStart?: LineSvgProps<Series>['onTouchStart']\n    onTouchMove?: LineSvgProps<Series>['onTouchMove']\n    onTouchEnd?: LineSvgProps<Series>['onTouchEnd']\n    tooltip: LineSvgPropsWithDefaults<Series>['tooltip']\n    debug: boolean\n    enableTouchCrosshair: LineSvgPropsWithDefaults<Series>['enableTouchCrosshair']\n}) => {\n    const { showTooltipAt, hideTooltip } = useTooltip()\n\n    const handleMouseEnter = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            showTooltipAt(\n                createElement(tooltip, { point }),\n                [point.x + margin.left, point.y + margin.top],\n                'top'\n            )\n            onMouseEnter?.(point, event)\n        },\n        [showTooltipAt, tooltip, onMouseEnter, margin]\n    )\n\n    const handleMouseMove = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            showTooltipAt(\n                createElement(tooltip, { point }),\n                [point.x + margin.left, point.y + margin.top],\n                'top'\n            )\n            onMouseMove?.(point, event)\n        },\n        [showTooltipAt, tooltip, margin.left, margin.top, onMouseMove]\n    )\n\n    const handleMouseLeave = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            hideTooltip()\n            onMouseLeave?.(point, event)\n        },\n        [hideTooltip, onMouseLeave]\n    )\n\n    const handleMouseDown = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            onMouseDown?.(point, event)\n        },\n        [onMouseDown]\n    )\n\n    const handleMouseUp = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            onMouseUp?.(point, event)\n        },\n        [onMouseUp]\n    )\n\n    const handleClick = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            onClick?.(point, event)\n        },\n        [onClick]\n    )\n\n    const handleDoubleClick = useCallback(\n        (point: Point<Series>, event: MouseEvent) => {\n            onDoubleClick?.(point, event)\n        },\n        [onDoubleClick]\n    )\n\n    const handleTouchStart = useCallback(\n        (point: Point<Series>, event: TouchEvent) => {\n            showTooltipAt(\n                createElement(tooltip, { point }),\n                [point.x + margin.left, point.y + margin.top],\n                'top'\n            )\n            onTouchStart?.(point, event)\n        },\n        [margin.left, margin.top, onTouchStart, showTooltipAt, tooltip]\n    )\n\n    const handleTouchMove = useCallback(\n        (point: Point<Series>, event: TouchEvent) => {\n            showTooltipAt(\n                createElement(tooltip, { point }),\n                [point.x + margin.left, point.y + margin.top],\n                'top'\n            )\n            onTouchMove?.(point, event)\n        },\n        [margin.left, margin.top, onTouchMove, showTooltipAt, tooltip]\n    )\n\n    const handleTouchEnd = useCallback(\n        (point: Point<Series>, event: TouchEvent) => {\n            hideTooltip()\n            onTouchEnd?.(point, event)\n        },\n        [onTouchEnd, hideTooltip]\n    )\n\n    return (\n        <BaseMesh<Point<Series>>\n            nodes={points}\n            width={width}\n            height={height}\n            setCurrent={setCurrent}\n            onMouseEnter={handleMouseEnter}\n            onMouseMove={handleMouseMove}\n            onMouseLeave={handleMouseLeave}\n            onMouseDown={handleMouseDown}\n            onMouseUp={handleMouseUp}\n            onClick={handleClick}\n            onDoubleClick={handleDoubleClick}\n            onTouchStart={handleTouchStart}\n            onTouchMove={handleTouchMove}\n            onTouchEnd={handleTouchEnd}\n            enableTouchCrosshair={enableTouchCrosshair}\n            debug={debug}\n        />\n    )\n}\n\nexport const Mesh = memo(NonMemoizedMesh) as typeof NonMemoizedMesh\n","import { Fragment, ReactNode, useState, forwardRef, Ref, ReactElement } from 'react'\nimport {\n    // @ts-expect-error no types\n    bindDefs,\n    useDimensions,\n    SvgWrapper,\n    CartesianMarkers,\n    Container,\n    LineCurveFactoryId,\n    WithChartRef,\n} from '@nivo/core'\nimport { InheritedColorConfig, OrdinalColorScaleConfig } from '@nivo/colors'\nimport { Axes, Grid } from '@nivo/axes'\nimport { BoxLegendSvg } from '@nivo/legends'\nimport { Crosshair, CrosshairType } from '@nivo/tooltip'\nimport { AnyScale } from '@nivo/scales'\nimport { useLine } from './hooks'\nimport { Areas } from './Areas'\nimport { Lines } from './Lines'\nimport { Slices } from './Slices'\nimport { Points } from './Points'\nimport { Mesh } from './Mesh'\nimport {\n    LineSeries,\n    InferSeriesId,\n    InferY,\n    LineLayerId,\n    LineSvgProps,\n    Point,\n    PointColorContext,\n    SliceData,\n    LineCustomSvgLayerProps,\n    PointTooltipComponent,\n    SliceTooltipComponent,\n    LineSvgPropsWithDefaults,\n} from './types'\nimport { svgDefaultProps } from './defaults'\n\nfunction InnerLine<Series extends LineSeries>(\n    props: LineSvgProps<Series> & { forwardedRef: Ref<SVGSVGElement> }\n) {\n    const {\n        data,\n        xScale: xScaleSpec = svgDefaultProps.xScale,\n        xFormat,\n        yScale: yScaleSpec = svgDefaultProps.yScale,\n        yFormat,\n        curve = svgDefaultProps.curve as LineCurveFactoryId,\n        margin: partialMargin,\n        width,\n        height,\n        colors = svgDefaultProps.colors as OrdinalColorScaleConfig<Series>,\n        lineWidth = svgDefaultProps.lineWidth as number,\n        layers = svgDefaultProps.layers as readonly LineLayerId[],\n        enableArea = svgDefaultProps.enableArea,\n        areaBaselineValue = svgDefaultProps.areaBaselineValue as InferY<Series>,\n        areaOpacity = svgDefaultProps.areaOpacity,\n        areaBlendMode = svgDefaultProps.areaBlendMode,\n        enablePoints = svgDefaultProps.enablePoints,\n        pointSymbol,\n        pointSize = svgDefaultProps.pointSize,\n        pointColor = svgDefaultProps.pointColor as InheritedColorConfig<PointColorContext<Series>>,\n        pointBorderWidth = svgDefaultProps.pointBorderWidth,\n        pointBorderColor = svgDefaultProps.pointBorderColor as InheritedColorConfig<\n            Omit<Point<Series>, 'borderColor'>\n        >,\n        enablePointLabel = svgDefaultProps.enablePointLabel,\n        pointLabel = svgDefaultProps.pointLabel as string,\n        pointLabelYOffset,\n        enableGridX = svgDefaultProps.enableGridX,\n        gridXValues,\n        enableGridY = svgDefaultProps.enableGridY,\n        gridYValues,\n        axisTop,\n        axisRight,\n        axisBottom = svgDefaultProps.axisBottom,\n        axisLeft = svgDefaultProps.axisLeft,\n        defs = svgDefaultProps.defs,\n        fill = svgDefaultProps.fill,\n        markers,\n        legends = svgDefaultProps.legends,\n        isInteractive = svgDefaultProps.isInteractive,\n        useMesh = svgDefaultProps.useMesh,\n        debugMesh = svgDefaultProps.debugMesh,\n        onMouseEnter,\n        onMouseMove,\n        onMouseLeave,\n        onMouseDown,\n        onMouseUp,\n        onClick,\n        onDoubleClick,\n        onTouchStart,\n        onTouchMove,\n        onTouchEnd,\n        tooltip = svgDefaultProps.tooltip as PointTooltipComponent<Series>,\n        enableSlices = svgDefaultProps.enableSlices,\n        debugSlices = svgDefaultProps.debugSlices,\n        sliceTooltip = svgDefaultProps.sliceTooltip as SliceTooltipComponent<Series>,\n        enableCrosshair = svgDefaultProps.enableCrosshair,\n        crosshairType = svgDefaultProps.crosshairType as CrosshairType,\n        enableTouchCrosshair = svgDefaultProps.enableTouchCrosshair,\n        role = svgDefaultProps.role,\n        ariaLabel,\n        ariaLabelledBy,\n        ariaDescribedBy,\n        isFocusable = svgDefaultProps.isFocusable,\n        pointAriaLabel,\n        pointAriaLabelledBy,\n        pointAriaDescribedBy,\n        pointAriaHidden,\n        pointAriaDisabled,\n        initialHiddenIds = svgDefaultProps.initialHiddenIds as InferSeriesId<Series>[],\n        forwardedRef,\n    } = props\n\n    const { margin, innerWidth, innerHeight, outerWidth, outerHeight } = useDimensions(\n        width,\n        height,\n        partialMargin\n    )\n\n    const {\n        legendData,\n        toggleSeries,\n        lineGenerator,\n        areaGenerator,\n        series,\n        xScale,\n        yScale,\n        slices,\n        points,\n    } = useLine<Series>({\n        data,\n        xScale: xScaleSpec,\n        xFormat,\n        yScale: yScaleSpec,\n        yFormat,\n        width: innerWidth,\n        height: innerHeight,\n        colors,\n        curve,\n        areaBaselineValue,\n        pointColor,\n        pointBorderColor,\n        enableSlices,\n        initialHiddenIds,\n    })\n\n    const [currentPoint, setCurrentPoint] = useState<Point<Series> | null>(null)\n    const [currentSlice, setCurrentSlice] = useState<SliceData<Series> | null>(null)\n\n    const layerById: Record<LineLayerId, ReactNode> = {\n        grid: null,\n        markers: null,\n        axes: null,\n        areas: null,\n        crosshair: null,\n        lines: null,\n        points: null,\n        slices: null,\n        mesh: null,\n        legends: null,\n    }\n\n    if (layers.includes('grid') && (enableGridX || enableGridY)) {\n        layerById.grid = (\n            <Grid\n                key=\"grid\"\n                width={innerWidth}\n                height={innerHeight}\n                xScale={enableGridX ? (xScale as AnyScale) : null}\n                yScale={enableGridY ? (yScale as AnyScale) : null}\n                xValues={gridXValues}\n                yValues={gridYValues}\n            />\n        )\n    }\n\n    if (layers.includes('markers') && Array.isArray(markers) && markers.length > 0) {\n        layerById.markers = (\n            <CartesianMarkers\n                key=\"markers\"\n                markers={markers}\n                width={innerWidth}\n                height={innerHeight}\n                xScale={xScale}\n                yScale={yScale}\n            />\n        )\n    }\n\n    if (layers.includes('axes')) {\n        layerById.axes = (\n            <Axes\n                key=\"axes\"\n                xScale={xScale as AnyScale}\n                yScale={yScale as AnyScale}\n                width={innerWidth}\n                height={innerHeight}\n                top={axisTop}\n                right={axisRight}\n                bottom={axisBottom}\n                left={axisLeft}\n            />\n        )\n    }\n\n    if (layers.includes('lines')) {\n        layerById.lines = (\n            <Lines<Series>\n                key=\"lines\"\n                series={series}\n                lineGenerator={lineGenerator}\n                lineWidth={lineWidth}\n            />\n        )\n    }\n\n    if (layers.includes('legends') && legends.length > 0) {\n        layerById.legends = (\n            <Fragment key=\"legends\">\n                {legends.map((legend, i) => (\n                    <BoxLegendSvg\n                        key={i}\n                        {...legend}\n                        containerWidth={innerWidth}\n                        containerHeight={innerHeight}\n                        data={legend.data || legendData}\n                        toggleSerie={\n                            legend.toggleSerie\n                                ? (toggleSeries as (id: string | number) => void)\n                                : undefined\n                        }\n                    />\n                ))}\n            </Fragment>\n        )\n    }\n\n    const boundDefs = bindDefs(defs, series, fill)\n\n    if (enableArea) {\n        layerById.areas = (\n            <Areas<Series>\n                key=\"areas\"\n                areaGenerator={areaGenerator}\n                areaOpacity={areaOpacity}\n                areaBlendMode={areaBlendMode}\n                series={series}\n            />\n        )\n    }\n\n    if (isInteractive && enableSlices !== false) {\n        layerById.slices = (\n            <Slices<Series>\n                key=\"slices\"\n                slices={slices}\n                axis={enableSlices}\n                debug={debugSlices}\n                tooltip={sliceTooltip}\n                current={currentSlice}\n                setCurrent={setCurrentSlice}\n                onMouseEnter={onMouseEnter}\n                onMouseMove={onMouseMove}\n                onMouseLeave={onMouseLeave}\n                onMouseDown={onMouseDown}\n                onMouseUp={onMouseUp}\n                onClick={onClick}\n                onDoubleClick={onDoubleClick}\n                onTouchStart={onTouchStart}\n                onTouchMove={onTouchMove}\n                onTouchEnd={onTouchEnd}\n            />\n        )\n    }\n\n    if (enablePoints) {\n        layerById.points = (\n            <Points<Series>\n                key=\"points\"\n                points={points}\n                symbol={pointSymbol}\n                size={pointSize}\n                borderWidth={pointBorderWidth}\n                enableLabel={enablePointLabel}\n                label={pointLabel}\n                labelYOffset={pointLabelYOffset}\n                isFocusable={isFocusable}\n                setCurrentPoint={setCurrentPoint}\n                tooltip={tooltip}\n                margin={margin}\n                ariaLabel={pointAriaLabel}\n                ariaLabelledBy={pointAriaLabelledBy}\n                ariaDescribedBy={pointAriaDescribedBy}\n                ariaHidden={pointAriaHidden}\n                ariaDisabled={pointAriaDisabled}\n            />\n        )\n    }\n\n    if (isInteractive && enableCrosshair) {\n        if (currentPoint !== null) {\n            layerById.crosshair = (\n                <Crosshair\n                    key=\"crosshair\"\n                    width={innerWidth}\n                    height={innerHeight}\n                    x={currentPoint.x}\n                    y={currentPoint.y}\n                    type={crosshairType}\n                />\n            )\n        }\n        if (currentSlice !== null && enableSlices) {\n            layerById.crosshair = (\n                <Crosshair\n                    key=\"crosshair\"\n                    width={innerWidth}\n                    height={innerHeight}\n                    x={currentSlice.x}\n                    y={currentSlice.y}\n                    type={enableSlices}\n                />\n            )\n        }\n    }\n\n    if (isInteractive && useMesh && enableSlices === false) {\n        layerById.mesh = (\n            <Mesh<Series>\n                key=\"mesh\"\n                points={points}\n                width={innerWidth}\n                height={innerHeight}\n                margin={margin}\n                setCurrent={setCurrentPoint}\n                onMouseEnter={onMouseEnter}\n                onMouseMove={onMouseMove}\n                onMouseLeave={onMouseLeave}\n                onMouseDown={onMouseDown}\n                onMouseUp={onMouseUp}\n                onClick={onClick}\n                onDoubleClick={onDoubleClick}\n                onTouchStart={onTouchStart}\n                onTouchMove={onTouchMove}\n                onTouchEnd={onTouchEnd}\n                tooltip={tooltip}\n                enableTouchCrosshair={enableTouchCrosshair}\n                debug={debugMesh}\n            />\n        )\n    }\n\n    const customLayerProps: LineCustomSvgLayerProps<Series> = {\n        ...(props as LineSvgPropsWithDefaults<Series>),\n        innerWidth,\n        innerHeight,\n        series,\n        slices,\n        points,\n        xScale,\n        yScale,\n        lineGenerator,\n        areaGenerator,\n        currentPoint,\n        setCurrentPoint,\n        currentSlice,\n        setCurrentSlice,\n    }\n\n    return (\n        <SvgWrapper\n            defs={boundDefs}\n            width={outerWidth}\n            height={outerHeight}\n            margin={margin}\n            role={role}\n            ariaLabel={ariaLabel}\n            ariaLabelledBy={ariaLabelledBy}\n            ariaDescribedBy={ariaDescribedBy}\n            isFocusable={isFocusable}\n            ref={forwardedRef}\n        >\n            {layers.map((layer, i) => {\n                if (typeof layer === 'function') {\n                    return <Fragment key={i}>{layer(customLayerProps)}</Fragment>\n                }\n\n                return layerById[layer]\n            })}\n        </SvgWrapper>\n    )\n}\n\nexport const Line = forwardRef(\n    <Series extends LineSeries>(\n        {\n            isInteractive = svgDefaultProps.isInteractive,\n            animate = svgDefaultProps.animate,\n            motionConfig = svgDefaultProps.motionConfig,\n            theme,\n            renderWrapper,\n            ...otherProps\n        }: LineSvgProps<Series>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <Container\n            animate={animate}\n            isInteractive={isInteractive}\n            motionConfig={motionConfig}\n            renderWrapper={renderWrapper}\n            theme={theme}\n        >\n            <InnerLine<Series> isInteractive={isInteractive} {...otherProps} forwardedRef={ref} />\n        </Container>\n    )\n) as <Series extends LineSeries>(\n    props: WithChartRef<LineSvgProps<Series>, SVGSVGElement>\n) => ReactElement\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { Line } from './Line'\nimport { LineSvgProps, LineSeries } from './types'\n\nexport const ResponsiveLine = forwardRef(\n    <Series extends LineSeries>(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<LineSvgProps<Series>>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultHeight}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }: { width: number; height: number }) => (\n                <Line<Series> width={width} height={height} {...props} ref={ref} />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <Series extends LineSeries>(\n    props: WithChartRef<ResponsiveProps<LineSvgProps<Series>>, SVGSVGElement>\n) => ReactElement\n","import {\n    createElement,\n    useRef,\n    useEffect,\n    useState,\n    useCallback,\n    forwardRef,\n    ForwardedRef,\n    MouseEvent,\n    useMemo,\n    ReactElement,\n    Ref,\n} from 'react'\nimport { useDimensions, getRelativeCursor, isCursorInRect, Container, mergeRefs } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { renderAxesToCanvas, renderGridLinesToCanvas } from '@nivo/axes'\nimport { renderLegendToCanvas } from '@nivo/legends'\nimport { useTooltip } from '@nivo/tooltip'\nimport { useVoronoiMesh, renderVoronoiToCanvas, renderVoronoiCellToCanvas } from '@nivo/voronoi'\nimport { OrdinalColorScaleConfig, InheritedColorConfig } from '@nivo/colors'\nimport { useLine } from './hooks'\nimport {\n    InferY,\n    LineCanvasProps,\n    LineLayerId,\n    LineSeries,\n    PointTooltipComponent,\n    Point,\n    LineCustomCanvasLayerProps,\n    PointColorContext,\n} from './types'\nimport { canvasDefaultProps } from './defaults'\nimport { AnyScale } from '@nivo/scales'\n\nconst InnerLineCanvas = <Series extends LineSeries>({\n    width,\n    height,\n    margin: partialMargin,\n    pixelRatio = canvasDefaultProps.pixelRatio,\n    data,\n    xScale: xScaleSpec = canvasDefaultProps.xScale,\n    xFormat,\n    yScale: yScaleSpec = canvasDefaultProps.yScale,\n    yFormat,\n    curve = canvasDefaultProps.curve,\n    layers = canvasDefaultProps.layers as LineLayerId[],\n    colors = canvasDefaultProps.colors as OrdinalColorScaleConfig<Series>,\n    lineWidth = canvasDefaultProps.lineWidth,\n    enableArea = canvasDefaultProps.enableArea,\n    areaBaselineValue = canvasDefaultProps.areaBaselineValue as InferY<Series>,\n    areaOpacity = canvasDefaultProps.areaOpacity,\n    enablePoints = canvasDefaultProps.enablePoints,\n    pointSize = canvasDefaultProps.pointSize,\n    pointColor = canvasDefaultProps.pointColor as InheritedColorConfig<PointColorContext<Series>>,\n    pointBorderWidth = canvasDefaultProps.pointBorderWidth,\n    pointBorderColor = canvasDefaultProps.pointBorderColor as InheritedColorConfig<\n        Omit<Point<Series>, 'borderColor'>\n    >,\n    enableGridX = canvasDefaultProps.enableGridX,\n    gridXValues,\n    enableGridY = canvasDefaultProps.enableGridY,\n    gridYValues,\n    axisTop,\n    axisRight,\n    axisBottom = canvasDefaultProps.axisBottom,\n    axisLeft = canvasDefaultProps.axisLeft,\n    legends = canvasDefaultProps.legends,\n    isInteractive = canvasDefaultProps.isInteractive,\n    debugMesh = canvasDefaultProps.debugMesh,\n    onMouseLeave,\n    onMouseDown,\n    onMouseUp,\n    onClick,\n    onDoubleClick,\n    tooltip = canvasDefaultProps.tooltip as PointTooltipComponent<Series>,\n    role,\n    forwardedRef,\n}: Omit<LineCanvasProps<Series>, 'renderWrapper' | 'theme'> & {\n    forwardedRef: Ref<HTMLCanvasElement>\n}) => {\n    const canvasEl = useRef<HTMLCanvasElement | null>(null)\n\n    const { margin, innerWidth, innerHeight, outerWidth, outerHeight } = useDimensions(\n        width,\n        height,\n        partialMargin\n    )\n    const theme = useTheme()\n    const [currentPoint, setCurrentPoint] = useState<Point<Series> | null>(null)\n\n    const { lineGenerator, areaGenerator, series, xScale, yScale, points } = useLine<Series>({\n        data,\n        xScale: xScaleSpec,\n        xFormat,\n        yScale: yScaleSpec,\n        yFormat,\n        width: innerWidth,\n        height: innerHeight,\n        colors,\n        curve,\n        areaBaselineValue,\n        pointColor,\n        pointBorderColor,\n    })\n\n    const customLayerProps: LineCustomCanvasLayerProps<Series> = useMemo(\n        () => ({\n            innerWidth,\n            innerHeight,\n            series,\n            points,\n            xScale,\n            yScale,\n            lineWidth,\n            lineGenerator,\n            areaGenerator,\n            currentPoint,\n            setCurrentPoint,\n        }),\n        [\n            innerWidth,\n            innerHeight,\n            series,\n            points,\n            xScale,\n            yScale,\n            lineWidth,\n            lineGenerator,\n            areaGenerator,\n            currentPoint,\n            setCurrentPoint,\n        ]\n    )\n\n    const { delaunay, voronoi } = useVoronoiMesh({\n        points,\n        width: innerWidth,\n        height: innerHeight,\n        debug: debugMesh,\n    })\n\n    useEffect(() => {\n        if (canvasEl.current === null) return\n\n        canvasEl.current.width = outerWidth * pixelRatio\n        canvasEl.current.height = outerHeight * pixelRatio\n\n        const ctx = canvasEl.current.getContext('2d')!\n\n        ctx.scale(pixelRatio, pixelRatio)\n\n        ctx.fillStyle = theme.background\n        ctx.fillRect(0, 0, outerWidth, outerHeight)\n        ctx.translate(margin.left, margin.top)\n\n        layers.forEach(layer => {\n            if (typeof layer === 'function') {\n                layer(ctx, customLayerProps)\n            }\n\n            const gridLineWidth = theme.grid.line.strokeWidth ?? 0\n            if (layer === 'grid' && typeof gridLineWidth !== 'string' && gridLineWidth > 0) {\n                ctx.lineWidth = gridLineWidth\n                ctx.strokeStyle = theme.grid.line.stroke as string\n\n                if (enableGridX) {\n                    renderGridLinesToCanvas(ctx, {\n                        width: innerWidth,\n                        height: innerHeight,\n                        scale: xScale as AnyScale,\n                        axis: 'x',\n                        values: gridXValues,\n                    })\n                }\n\n                if (enableGridY) {\n                    renderGridLinesToCanvas(ctx, {\n                        width: innerWidth,\n                        height: innerHeight,\n                        scale: yScale as AnyScale,\n                        axis: 'y',\n                        values: gridYValues,\n                    })\n                }\n            }\n\n            if (layer === 'axes') {\n                renderAxesToCanvas(ctx, {\n                    xScale: xScale as AnyScale,\n                    yScale: yScale as AnyScale,\n                    width: innerWidth,\n                    height: innerHeight,\n                    top: axisTop,\n                    right: axisRight,\n                    bottom: axisBottom,\n                    left: axisLeft,\n                    theme,\n                })\n            }\n\n            if (layer === 'areas' && enableArea === true) {\n                ctx.save()\n                ctx.globalAlpha = areaOpacity\n\n                areaGenerator.context(ctx)\n                for (let i = series.length - 1; i >= 0; i--) {\n                    ctx.fillStyle = series[i].color\n                    ctx.beginPath()\n                    areaGenerator(series[i].data.map(d => d.position))\n                    ctx.fill()\n                }\n\n                ctx.restore()\n            }\n\n            if (layer === 'lines') {\n                lineGenerator.context(ctx)\n                series.forEach(seriesItem => {\n                    ctx.strokeStyle = seriesItem.color\n                    ctx.lineWidth = lineWidth\n                    ctx.beginPath()\n                    lineGenerator(seriesItem.data.map(d => d.position))\n                    ctx.stroke()\n                })\n            }\n\n            if (layer === 'points' && enablePoints === true && pointSize > 0) {\n                points.forEach(point => {\n                    ctx.fillStyle = point.color\n                    ctx.beginPath()\n                    ctx.arc(point.x, point.y, pointSize / 2, 0, 2 * Math.PI)\n                    ctx.fill()\n\n                    if (pointBorderWidth > 0) {\n                        ctx.strokeStyle = point.borderColor\n                        ctx.lineWidth = pointBorderWidth\n                        ctx.stroke()\n                    }\n                })\n            }\n\n            if (layer === 'mesh' && debugMesh === true && voronoi !== undefined) {\n                renderVoronoiToCanvas(ctx, voronoi)\n                if (currentPoint) {\n                    renderVoronoiCellToCanvas(ctx, voronoi, currentPoint.absIndex)\n                }\n            }\n\n            if (layer === 'legends') {\n                const legendData = series\n                    .map(serie => ({\n                        id: serie.id,\n                        label: serie.id,\n                        color: serie.color,\n                    }))\n                    .reverse()\n\n                legends.forEach(legend => {\n                    renderLegendToCanvas(ctx, {\n                        ...legend,\n                        data: legend.data || legendData,\n                        containerWidth: innerWidth,\n                        containerHeight: innerHeight,\n                        theme,\n                    })\n                })\n            }\n        })\n    }, [\n        canvasEl,\n        innerWidth,\n        outerWidth,\n        innerHeight,\n        outerHeight,\n        margin.left,\n        margin.top,\n        pixelRatio,\n        layers,\n        theme,\n        lineGenerator,\n        series,\n        xScale,\n        yScale,\n        enableGridX,\n        gridXValues,\n        enableGridY,\n        gridYValues,\n        axisTop,\n        axisRight,\n        axisBottom,\n        axisLeft,\n        legends,\n        points,\n        enablePoints,\n        pointSize,\n        pointBorderWidth,\n        currentPoint,\n        customLayerProps,\n        debugMesh,\n        enableArea,\n        areaGenerator,\n        areaOpacity,\n        lineWidth,\n        voronoi,\n    ])\n\n    const getPointFromMouseEvent = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (!canvasEl.current) return null\n\n            const [x, y] = getRelativeCursor(canvasEl.current, event)\n            if (!isCursorInRect(margin.left, margin.top, innerWidth, innerHeight, x, y)) return null\n\n            const pointIndex = delaunay.find(x - margin.left, y - margin.top)\n            return points[pointIndex]\n        },\n        [canvasEl, margin, innerWidth, innerHeight, delaunay, points]\n    )\n\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleMouseHover = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            const point = getPointFromMouseEvent(event)\n            setCurrentPoint(point)\n\n            if (point) {\n                showTooltipFromEvent(createElement(tooltip, { point }), event)\n            } else {\n                hideTooltip()\n            }\n        },\n        [getPointFromMouseEvent, setCurrentPoint, showTooltipFromEvent, hideTooltip, tooltip]\n    )\n\n    const handleMouseLeave = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            hideTooltip()\n            setCurrentPoint(null)\n            if (currentPoint) onMouseLeave?.(currentPoint, event)\n        },\n        [hideTooltip, setCurrentPoint, onMouseLeave, currentPoint]\n    )\n\n    const handleMouseDown = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (onMouseDown) {\n                const point = getPointFromMouseEvent(event)\n                if (point) onMouseDown(point, event)\n            }\n        },\n        [getPointFromMouseEvent, onMouseDown]\n    )\n\n    const handleMouseUp = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (onMouseUp) {\n                const point = getPointFromMouseEvent(event)\n                if (point) onMouseUp(point, event)\n            }\n        },\n        [getPointFromMouseEvent, onMouseUp]\n    )\n\n    const handleClick = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (onClick) {\n                const point = getPointFromMouseEvent(event)\n                if (point) onClick(point, event)\n            }\n        },\n        [getPointFromMouseEvent, onClick]\n    )\n\n    const handleDoubleClick = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (onDoubleClick) {\n                const point = getPointFromMouseEvent(event)\n                if (point) onDoubleClick(point, event)\n            }\n        },\n        [getPointFromMouseEvent, onDoubleClick]\n    )\n\n    return (\n        <canvas\n            ref={mergeRefs<HTMLCanvasElement>(canvasEl, forwardedRef)}\n            width={outerWidth * pixelRatio}\n            height={outerHeight * pixelRatio}\n            style={{\n                width: outerWidth,\n                height: outerHeight,\n                cursor: isInteractive ? 'auto' : 'normal',\n            }}\n            onMouseEnter={isInteractive ? handleMouseHover : undefined}\n            onMouseMove={isInteractive ? handleMouseHover : undefined}\n            onMouseLeave={isInteractive ? handleMouseLeave : undefined}\n            onMouseDown={isInteractive ? handleMouseDown : undefined}\n            onMouseUp={isInteractive ? handleMouseUp : undefined}\n            onClick={isInteractive ? handleClick : undefined}\n            onDoubleClick={isInteractive ? handleDoubleClick : undefined}\n            role={role}\n        />\n    )\n}\n\nexport const LineCanvas = forwardRef(\n    <Series extends LineSeries>(\n        { isInteractive, renderWrapper, theme, ...props }: LineCanvasProps<Series>,\n        ref: Ref<HTMLCanvasElement>\n    ) => (\n        <Container {...{ isInteractive, renderWrapper, theme }} animate={false}>\n            <InnerLineCanvas<Series> {...props} forwardedRef={ref} />\n        </Container>\n    )\n) as <Series extends LineSeries>(\n    props: LineCanvasProps<Series> & {\n        ref?: ForwardedRef<HTMLCanvasElement>\n    }\n) => ReactElement\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { LineCanvasProps, LineSeries } from './types'\nimport { LineCanvas } from './LineCanvas'\n\nexport const ResponsiveLineCanvas = forwardRef(\n    <Series extends LineSeries>(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<LineCanvasProps<Series>>,\n        ref: Ref<HTMLCanvasElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultWidth}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }: { width: number; height: number }) => (\n                <LineCanvas<Series> width={width} height={height} {...props} ref={ref} />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <Series extends LineSeries>(\n    props: WithChartRef<ResponsiveProps<LineCanvasProps<Series>>, HTMLCanvasElement>\n) => ReactElement\n","import { FunctionComponent, MouseEvent, TouchEvent, AriaAttributes } from 'react'\nimport { Line, Area } from 'd3-shape'\nimport {\n    Dimensions,\n    Box,\n    MotionProps,\n    CssMixBlendMode,\n    ValueFormat,\n    SvgDefsAndFill,\n    CartesianMarkerProps,\n    PropertyAccessor,\n    LineCurveFactoryId,\n    DotsItemSymbolComponent,\n} from '@nivo/core'\nimport { PartialTheme } from '@nivo/theming'\nimport { AxisProps, CanvasAxisProps } from '@nivo/axes'\nimport { InheritedColorConfig, OrdinalColorScaleConfig } from '@nivo/colors'\nimport { ScaleSpec, TicksSpec } from '@nivo/scales'\nimport { LegendProps } from '@nivo/legends'\nimport { CrosshairType } from '@nivo/tooltip'\n\nexport type AllowedSeriesId = string | number\n// `null` is allowed in the data to indicate a missing value.\nexport type AllowedValue = string | number | Date | null\nexport type LineSeries = {\n    id: AllowedSeriesId\n    data: readonly { x: AllowedValue; y: AllowedValue }[]\n}\n\nexport type InferSeriesId<T> = T extends { id: infer Id } ? Id : never\n\nexport type InferX<T> = T extends { data: ReadonlyArray<infer D> }\n    ? D extends { x: infer X }\n        ? X\n        : never\n    : never\nexport type InferY<T> = T extends { data: ReadonlyArray<infer D> }\n    ? D extends { y: infer Y }\n        ? Y\n        : never\n    : never\n\nexport type DefaultSeries = {\n    id: string\n    data: readonly {\n        x: string | null\n        y: number | null\n    }[]\n}\n\nexport interface ComputedDatum<Series extends LineSeries> {\n    data: Series['data'][number]\n    position: {\n        x: number\n        y: number\n    }\n}\n\nexport type ComputedSeries<Series extends LineSeries> = Omit<Series, 'data' | 'id'> & {\n    id: InferSeriesId<Series>\n    data: readonly ComputedDatum<Series>[]\n    color: string\n}\n\nexport interface Point<Series extends LineSeries> {\n    id: string\n    indexInSeries: number\n    absIndex: number\n    seriesIndex: number\n    seriesId: InferSeriesId<Series>\n    seriesColor: string\n    x: number\n    y: number\n    color: string\n    borderColor: string\n    data: Series['data'][number] & {\n        xFormatted: string\n        yFormatted: string\n    }\n}\n\nexport type PointColorContext<Series extends LineSeries> = {\n    series: ComputedSeries<Series>\n    point: Omit<Point<Series>, 'color' | 'borderColor'>\n}\n\nexport interface SliceData<Series extends LineSeries> {\n    id: string\n    x0: number\n    x: number\n    y0: number\n    y: number\n    width: number\n    height: number\n    points: readonly Point<Series>[]\n}\n\nexport type PointOrSliceData<Series extends LineSeries> = Point<Series> | SliceData<Series>\nexport function isPoint<Series extends LineSeries>(\n    data: PointOrSliceData<Series>\n): data is Point<Series> {\n    return (data as Point<Series>).seriesId !== undefined\n}\nexport function isSliceData<Series extends LineSeries>(\n    data: PointOrSliceData<Series>\n): data is SliceData<Series> {\n    return (data as SliceData<Series>).points !== undefined\n}\n\nexport interface DataProps<Series extends LineSeries> {\n    data: readonly Series[]\n}\n\nexport type LineGenerator = Line<{ x: number; y: number }>\nexport type AreaGenerator = Area<{ x: number; y: number }>\n\nexport interface PointTooltipProps<Series extends LineSeries> {\n    point: Point<Series>\n}\nexport type PointTooltipComponent<Series extends LineSeries> = FunctionComponent<\n    PointTooltipProps<Series>\n>\n\nexport interface SliceTooltipProps<Series extends LineSeries> {\n    axis: 'x' | 'y'\n    slice: SliceData<Series>\n}\nexport type SliceTooltipComponent<Series extends LineSeries> = FunctionComponent<\n    SliceTooltipProps<Series>\n>\n\nexport type PointOrSliceMouseHandler<Series extends LineSeries> = (\n    datum: Readonly<Point<Series>> | Readonly<SliceData<Series>>,\n    event: MouseEvent\n) => void\nexport type PointOrSliceTouchHandler<Series extends LineSeries> = (\n    datum: Readonly<Point<Series>> | Readonly<SliceData<Series>>,\n    event: TouchEvent\n) => void\n\nexport type LineLayerId =\n    | 'grid'\n    | 'markers'\n    | 'axes'\n    | 'areas'\n    | 'crosshair'\n    | 'lines'\n    | 'slices'\n    | 'points'\n    | 'mesh'\n    | 'legends'\n\nexport interface CommonCustomLayerProps<Series extends LineSeries> {\n    innerWidth: number\n    innerHeight: number\n    series: readonly ComputedSeries<Series>[]\n    points: readonly Point<Series>[]\n    xScale: (x: InferX<Series>) => number\n    yScale: (y: InferY<Series>) => number\n    lineGenerator: LineGenerator\n    areaGenerator: AreaGenerator\n    currentPoint: Point<Series> | null\n    setCurrentPoint: (point: Point<Series> | null) => void\n}\n\nexport type LineCustomSvgLayerProps<Series extends LineSeries> = Omit<\n    LineSvgPropsWithDefaults<Series>,\n    'xScale' | 'yScale'\n> &\n    CommonCustomLayerProps<Series> & {\n        slices: readonly SliceData<Series>[]\n        currentSlice: SliceData<Series> | null\n        setCurrentSlice: (slice: SliceData<Series> | null) => void\n    }\nexport type LineCustomSvgLayer<Series extends LineSeries> = FunctionComponent<\n    LineCustomSvgLayerProps<Series>\n>\nexport type LineSvgLayer<Series extends LineSeries> = LineLayerId | LineCustomSvgLayer<Series>\n\nexport type LineCustomCanvasLayerProps<Series extends LineSeries> = CommonCustomLayerProps<Series>\nexport type LineCustomCanvasLayer<Series extends LineSeries> = (\n    context: CanvasRenderingContext2D,\n    props: LineCustomCanvasLayerProps<Series>\n) => void\nexport type LineCanvasLayer<Series extends LineSeries> = LineLayerId | LineCustomCanvasLayer<Series>\n\nexport type CommonLineProps<Series extends LineSeries> = {\n    xScale: ScaleSpec\n    xFormat?: ValueFormat<InferX<Series>>\n    yScale: ScaleSpec\n    yFormat?: ValueFormat<InferY<Series>>\n    margin: Box\n    curve: LineCurveFactoryId\n    theme: PartialTheme\n    colors: OrdinalColorScaleConfig<Series>\n    lineWidth: number\n    enablePoints: boolean\n    pointSymbol?: DotsItemSymbolComponent<Point<Series>>\n    pointSize: number\n    pointColor: InheritedColorConfig<PointColorContext<Series>>\n    pointBorderWidth: number\n    pointBorderColor: InheritedColorConfig<Omit<Point<Series>, 'borderColor'>>\n    enableArea: boolean\n    areaBaselineValue: InferY<Series>\n    areaOpacity: number\n    enableGridX: boolean\n    gridXValues?: TicksSpec<InferX<Series>>\n    enableGridY: boolean\n    gridYValues?: TicksSpec<InferY<Series>>\n    legends: readonly LegendProps[]\n    isInteractive: boolean\n    debugMesh: boolean\n    onMouseEnter?: PointOrSliceMouseHandler<Series>\n    onMouseMove?: PointOrSliceMouseHandler<Series>\n    onMouseLeave?: PointOrSliceMouseHandler<Series>\n    onMouseDown?: PointOrSliceMouseHandler<Series>\n    onMouseUp?: PointOrSliceMouseHandler<Series>\n    onClick?: PointOrSliceMouseHandler<Series>\n    onDoubleClick?: PointOrSliceMouseHandler<Series>\n    onTouchStart?: PointOrSliceTouchHandler<Series>\n    onTouchMove?: PointOrSliceTouchHandler<Series>\n    onTouchEnd?: PointOrSliceTouchHandler<Series>\n    tooltip: PointTooltipComponent<Series>\n    sliceTooltip: SliceTooltipComponent<Series>\n    renderWrapper: boolean\n    role?: string\n}\n\nexport interface LineSvgExtraProps<Series extends LineSeries> {\n    layers: readonly LineSvgLayer<Series>[]\n    enablePointLabel: boolean\n    pointLabel: PropertyAccessor<Point<Series>, string>\n    pointLabelYOffset?: number\n    areaBlendMode: CssMixBlendMode\n    axisTop?: AxisProps | null\n    axisRight?: AxisProps | null\n    axisBottom?: AxisProps | null\n    axisLeft?: AxisProps | null\n    useMesh: boolean\n    enableSlices: 'x' | 'y' | false\n    debugSlices: boolean\n    enableCrosshair: boolean\n    crosshairType: CrosshairType\n    enableTouchCrosshair: boolean\n    markers?: readonly CartesianMarkerProps[]\n    initialHiddenIds: readonly InferSeriesId<Series>[]\n    animate: boolean\n    motionConfig: MotionProps['motionConfig']\n    ariaLabel?: AriaAttributes['aria-label']\n    ariaLabelledBy?: AriaAttributes['aria-labelledby']\n    ariaDescribedBy?: AriaAttributes['aria-describedby']\n    isFocusable: boolean\n    pointAriaLabel?: (point: Point<Series>) => AriaAttributes['aria-label']\n    pointAriaLabelledBy?: (point: Point<Series>) => AriaAttributes['aria-labelledby']\n    pointAriaDescribedBy?: (point: Point<Series>) => AriaAttributes['aria-describedby']\n    pointAriaHidden?: (point: Point<Series>) => AriaAttributes['aria-hidden']\n    pointAriaDisabled?: (point: Point<Series>) => AriaAttributes['aria-disabled']\n}\nexport type LineSvgProps<Series extends LineSeries> = DataProps<Series> &\n    Dimensions &\n    Partial<CommonLineProps<Series>> &\n    Partial<LineSvgExtraProps<Series>> &\n    SvgDefsAndFill<any>\nexport type LineSvgPropsWithDefaults<Series extends LineSeries> = DataProps<Series> &\n    Dimensions &\n    CommonLineProps<Series> &\n    LineSvgExtraProps<Series> &\n    SvgDefsAndFill<any>\n\nexport interface LineCanvasExtraProps<Series extends LineSeries> {\n    layers: readonly LineCanvasLayer<Series>[]\n    pixelRatio: number\n    axisTop?: CanvasAxisProps | null\n    axisRight?: CanvasAxisProps | null\n    axisBottom?: CanvasAxisProps | null\n    axisLeft?: CanvasAxisProps | null\n}\nexport type LineCanvasProps<Series extends LineSeries> = DataProps<Series> &\n    Dimensions &\n    Partial<CommonLineProps<Series>> &\n    Partial<LineCanvasExtraProps<Series>>\nexport type LineCanvasPropsWithDefaults<Series extends LineSeries> = DataProps<Series> &\n    Dimensions &\n    CommonLineProps<Series> &\n    LineCanvasExtraProps<Series>\n"],"names":["commonDefaultProps","xScale","type","yScale","min","max","curve","colors","scheme","lineWidth","layers","enablePoints","pointSize","pointColor","from","pointBorderWidth","pointBorderColor","theme","enableArea","areaBaselineValue","areaOpacity","enableGridX","enableGridY","legends","isInteractive","tooltip","memo","_ref","point","_jsx","BasicTooltip","id","_jsxs","children","data","xFormatted","yFormatted","enableChip","color","seriesColor","sliceTooltip","slice","axis","useTheme","otherAxis","TableTooltip","rows","points","map","Chip","style","chip","seriesId","tableCellValue","debugMesh","renderWrapper","svgDefaultProps","_extends","defs","fill","enablePointLabel","pointLabel","areaBlendMode","axisTop","axisRight","axisBottom","defaultAxisProps","axisLeft","useMesh","enableSlices","debugSlices","enableCrosshair","crosshairType","enableTouchCrosshair","initialHiddenIds","animate","motionConfig","role","isFocusable","canvasDefaultProps","pixelRatio","window","_window$devicePixelRa","devicePixelRatio","useLineGenerator","useMemo","line","defined","d","x","y","curveFromProp","useAreaGenerator","area","y1","y0","useSlices","_ref3","componentId","width","height","Map","forEach","has","get","push","set","Array","entries","sort","a","b","_ref4","i","slices","x0","sliceWidth","slicePoints","prevSlice","nextSlice","reverse","_ref5","sliceHeight","LINE_UNIQUE_ID_PREFIX","useLine","_ref6","_ref6$xScale","xScaleSpec","xFormat","_ref6$yScale","yScaleSpec","yFormat","_ref6$colors","_ref6$curve","_ref6$areaBaselineVal","_ref6$pointColor","_ref6$pointBorderColo","_ref6$enableSlices","_ref6$initialHiddenId","useState","uniqueId","formatX","useValueFormatter","formatY","getColor","useOrdinalColorScale","getPointColor","useInheritedColor","getPointBorderColor","_useState2","hiddenIds","setHiddenIds","_useMemo","computeXYScalesForSeries","filter","item","indexOf","rawSeries","series","_useMemo2","dataWithColor","seriesItem","label","datum","find","Boolean","legendData","hidden","toggleSeries","useCallback","state","concat","_ref2","reduce","acc","seriesIndex","position","indexInSeries","absIndex","length","borderColor","usePoints","lineGenerator","areaGenerator","AreaPath","path","_useMotionConfig","useMotionConfig","springConfig","config","animatedPath","useAnimatedPath","animatedProps","useSpring","immediate","animated","fillOpacity","strokeWidth","mixBlendMode","Areas","reversedSeries","LinesItem","thickness","stroke","Lines","_Fragment","SlicesItem","debug","isCurrent","setCurrent","onMouseEnter","onMouseMove","onMouseLeave","onMouseDown","onMouseUp","onClick","onDoubleClick","onTouchStart","onTouchMove","onTouchEnd","_useTooltip","useTooltip","showTooltipFromEvent","hideTooltip","handleMouseEnter","event","createElement","handleMouseMove","handleMouseLeave","handleMouseDown","handleMouseUp","handleClick","handleDoubleClick","handeOnTouchStart","handeOnTouchMove","touchPoint","touches","touchingElement","document","elementFromPoint","clientX","clientY","touchingSliceId","getAttribute","handleOnTouchEnd","strokeOpacity","Slices","current","Points","symbol","size","borderWidth","enableLabel","labelYOffset","setCurrentPoint","margin","ariaLabel","ariaLabelledBy","ariaDescribedBy","ariaHidden","ariaDisabled","getLabel","getLabelGenerator","showTooltipAt","mappedPoints","undefined","onFocus","left","top","onBlur","DotsItem","testId","Mesh","handleTouchStart","handleTouchMove","handleTouchEnd","BaseMesh","nodes","InnerLine","props","_props$xScale","_props$yScale","_props$curve","partialMargin","_props$colors","_props$lineWidth","_props$layers","_props$enableArea","_props$areaBaselineVa","_props$areaOpacity","_props$areaBlendMode","_props$enablePoints","pointSymbol","_props$pointSize","_props$pointColor","_props$pointBorderWid","_props$pointBorderCol","_props$enablePointLab","_props$pointLabel","pointLabelYOffset","_props$enableGridX","gridXValues","_props$enableGridY","gridYValues","_props$axisBottom","_props$axisLeft","_props$defs","_props$fill","markers","_props$legends","_props$isInteractive","_props$useMesh","_props$debugMesh","_props$tooltip","_props$enableSlices","_props$debugSlices","_props$sliceTooltip","_props$enableCrosshai","_props$crosshairType","_props$enableTouchCro","_props$role","_props$isFocusable","pointAriaLabel","pointAriaLabelledBy","pointAriaDescribedBy","pointAriaHidden","pointAriaDisabled","_props$initialHiddenI","forwardedRef","_useDimensions","useDimensions","innerWidth","innerHeight","outerWidth","outerHeight","_useLine","_useState","currentPoint","currentSlice","setCurrentSlice","layerById","grid","axes","areas","crosshair","lines","mesh","includes","Grid","xValues","yValues","isArray","CartesianMarkers","Axes","right","bottom","Fragment","legend","BoxLegendSvg","containerWidth","containerHeight","toggleSerie","boundDefs","bindDefs","Crosshair","customLayerProps","SvgWrapper","ref","layer","Line","forwardRef","_ref$isInteractive","_ref$animate","_ref$motionConfig","otherProps","_objectWithoutPropertiesLoose","_excluded","Container","ResponsiveLine","defaultWidth","defaultHeight","onResize","debounceResize","ResponsiveWrapper","InnerLineCanvas","_ref$pixelRatio","_ref$xScale","_ref$yScale","_ref$curve","_ref$layers","_ref$colors","_ref$lineWidth","_ref$enableArea","_ref$areaBaselineValu","_ref$areaOpacity","_ref$enablePoints","_ref$pointSize","_ref$pointColor","_ref$pointBorderWidth","_ref$pointBorderColor","_ref$enableGridX","_ref$enableGridY","_ref$axisBottom","_ref$axisLeft","_ref$legends","_ref$debugMesh","_ref$tooltip","canvasEl","useRef","_useVoronoiMesh","useVoronoiMesh","delaunay","voronoi","useEffect","ctx","getContext","scale","fillStyle","background","fillRect","translate","_theme$grid$line$stro","gridLineWidth","strokeStyle","renderGridLinesToCanvas","values","renderAxesToCanvas","save","globalAlpha","context","beginPath","restore","arc","Math","PI","renderVoronoiToCanvas","renderVoronoiCellToCanvas","serie","renderLegendToCanvas","getPointFromMouseEvent","_getRelativeCursor","getRelativeCursor","isCursorInRect","pointIndex","handleMouseHover","mergeRefs","cursor","LineCanvas","ResponsiveLineCanvas","isPoint","isSliceData"],"mappings":"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"}