{"version":3,"file":"nivo-heatmap.mjs","sources":["../src/HeatMapTooltip.tsx","../src/defaults.ts","../src/compute.ts","../src/hooks.ts","../src/HeatMapCellRect.tsx","../src/HeatMapCellCircle.tsx","../src/HeatMapCells.tsx","../src/HeatMapCellAnnotations.tsx","../src/HeatMap.tsx","../src/ResponsiveHeatMap.tsx","../src/canvas.tsx","../src/HeatMapCanvas.tsx","../src/ResponsiveHeatMapCanvas.tsx"],"sourcesContent":["import { memo } from 'react'\nimport { BasicTooltip } from '@nivo/tooltip'\nimport { HeatMapDatum, TooltipProps } from './types'\n\nconst NonMemoizedHeatMapTooltip = <Datum extends HeatMapDatum>({ cell }: TooltipProps<Datum>) => {\n    if (cell.formattedValue === null) return null\n\n    return (\n        <BasicTooltip\n            id={`${cell.serieId} - ${cell.data.x}`}\n            value={cell.formattedValue}\n            enableChip={true}\n            color={cell.color}\n        />\n    )\n}\n\nexport const HeatMapTooltip = memo(NonMemoizedHeatMapTooltip) as typeof NonMemoizedHeatMapTooltip\n","import { DefaultHeatMapDatum, HeatMapCommonProps, LayerId } from './types'\nimport { HeatMapTooltip } from './HeatMapTooltip'\n\nexport const commonDefaultProps: Omit<\n    HeatMapCommonProps<DefaultHeatMapDatum>,\n    | 'margin'\n    | 'theme'\n    | 'valueFormat'\n    | 'onClick'\n    | 'renderWrapper'\n    | 'role'\n    | 'ariaLabel'\n    | 'ariaLabelledBy'\n    | 'ariaDescribedBy'\n> & {\n    layers: LayerId[]\n} = {\n    layers: ['grid', 'axes', 'cells', 'legends', 'annotations'],\n\n    forceSquare: false,\n    xInnerPadding: 0,\n    xOuterPadding: 0,\n    yInnerPadding: 0,\n    yOuterPadding: 0,\n    sizeVariation: false,\n\n    opacity: 1,\n    activeOpacity: 1,\n    inactiveOpacity: 0.15,\n    borderWidth: 0,\n    borderColor: { from: 'color', modifiers: [['darker', 0.8]] },\n\n    enableGridX: false,\n    enableGridY: false,\n\n    enableLabels: true,\n    label: 'formattedValue',\n    labelTextColor: { from: 'color', modifiers: [['darker', 2]] },\n\n    colors: {\n        type: 'sequential',\n        scheme: 'brown_blueGreen',\n    },\n    emptyColor: '#000000',\n\n    legends: [],\n    annotations: [],\n\n    isInteractive: true,\n    hoverTarget: 'rowColumn',\n    tooltip: HeatMapTooltip,\n\n    animate: true,\n    motionConfig: 'gentle' as const,\n}\n\nexport const svgDefaultProps = {\n    ...commonDefaultProps,\n    axisTop: {},\n    axisRight: null,\n    axisBottom: null,\n    axisLeft: {},\n    borderRadius: 0,\n    cellComponent: 'rect' as const,\n}\n\nexport const canvasDefaultProps = {\n    ...commonDefaultProps,\n    axisTop: {},\n    axisRight: null,\n    axisBottom: null,\n    axisLeft: {},\n    renderCell: 'rect' as const,\n    pixelRatio: typeof window !== 'undefined' ? window.devicePixelRatio || 1 : 1,\n}\n","import { scaleBand, scaleLinear } from 'd3-scale'\nimport { castBandScale } from '@nivo/scales'\nimport {\n    ComputedCell,\n    HeatMapCommonProps,\n    HeatMapDataProps,\n    HeatMapDatum,\n    SizeVariationConfig,\n} from './types'\n\nexport const computeLayout = ({\n    width: _width,\n    height: _height,\n    rows,\n    columns,\n    forceSquare,\n}: {\n    width: number\n    height: number\n    rows: number\n    columns: number\n    forceSquare: boolean\n}) => {\n    let width = _width\n    let height = _height\n\n    let offsetX = 0\n    let offsetY = 0\n\n    if (forceSquare) {\n        const cellWidth = Math.max(_width / columns, 0)\n        const cellHeight = Math.max(_height / rows, 0)\n        const cellSize = Math.min(cellWidth, cellHeight)\n\n        width = cellSize * columns\n        height = cellSize * rows\n\n        offsetX = (_width - width) / 2\n        offsetY = (_height - height) / 2\n    }\n\n    return {\n        offsetX,\n        offsetY,\n        width,\n        height,\n    }\n}\n\nexport const computeCells = <Datum extends HeatMapDatum, ExtraProps extends object>({\n    data,\n    width: _width,\n    height: _height,\n    xInnerPadding,\n    xOuterPadding,\n    yInnerPadding,\n    yOuterPadding,\n    forceSquare,\n}: {\n    data: HeatMapDataProps<Datum, ExtraProps>['data']\n    width: number\n    height: number\n} & Pick<\n    HeatMapCommonProps<Datum>,\n    'xOuterPadding' | 'xInnerPadding' | 'yOuterPadding' | 'yInnerPadding' | 'forceSquare'\n>) => {\n    const xValuesSet = new Set<Datum['x']>()\n    const serieIds: string[] = []\n    const allValues: number[] = []\n\n    const cells: Pick<ComputedCell<Datum>, 'id' | 'serieId' | 'value' | 'data'>[] = []\n\n    data.forEach(serie => {\n        serieIds.push(serie.id)\n\n        serie.data.forEach(datum => {\n            xValuesSet.add(datum.x)\n\n            let value: number | null = null\n            if (datum.y !== undefined && datum.y !== null) {\n                allValues.push(datum.y)\n                value = datum.y\n            }\n\n            cells.push({\n                id: `${serie.id}.${datum.x}`,\n                serieId: serie.id,\n                value,\n                data: datum,\n            })\n        })\n    })\n\n    const xValues = Array.from(xValuesSet)\n\n    const { width, height, offsetX, offsetY } = computeLayout({\n        width: _width,\n        height: _height,\n        columns: xValues.length,\n        rows: serieIds.length,\n        forceSquare,\n    })\n\n    const xScale = castBandScale<Datum['x']>(\n        scaleBand<Datum['x']>()\n            .domain(xValues)\n            .range([0, width])\n            .paddingOuter(xOuterPadding)\n            .paddingInner(xInnerPadding)\n    )\n\n    const yScale = castBandScale<string>(\n        scaleBand<string>()\n            .domain(serieIds)\n            .range([0, height])\n            .paddingOuter(yOuterPadding)\n            .paddingInner(yInnerPadding)\n    )\n\n    const cellWidth = xScale.bandwidth()\n    const cellHeight = yScale.bandwidth()\n\n    const cellsWithPosition: Omit<\n        ComputedCell<Datum>,\n        'formattedValue' | 'color' | 'opacity' | 'borderColor' | 'label' | 'labelTextColor'\n    >[] = cells.map(cell => ({\n        ...cell,\n        x: xScale(cell.data.x)! + cellWidth / 2,\n        y: yScale(cell.serieId)! + cellHeight / 2,\n        width: cellWidth,\n        height: cellHeight,\n    }))\n\n    return {\n        width,\n        height,\n        offsetX,\n        offsetY,\n        xScale,\n        yScale,\n        minValue: Math.min(...allValues),\n        maxValue: Math.max(...allValues),\n        cells: cellsWithPosition,\n    }\n}\n\nexport const computeSizeScale = (\n    size: false | SizeVariationConfig,\n    min: number,\n    max: number\n): ((value: number | null) => number) => {\n    if (!size) return () => 1\n\n    const scale = scaleLinear()\n        .domain(size.values ? size.values : [min, max])\n        .range(size.sizes)\n\n    return (value: number | null) => {\n        if (value === null) return 1\n        return scale(value)\n    }\n}\n\nexport const getCellAnnotationPosition = <Datum extends HeatMapDatum>(\n    cell: ComputedCell<Datum>\n) => ({\n    x: cell.x,\n    y: cell.y,\n})\n\nexport const getCellAnnotationDimensions = <Datum extends HeatMapDatum>(\n    cell: ComputedCell<Datum>\n) => ({\n    size: Math.max(cell.width, cell.height),\n    width: cell.width,\n    height: cell.height,\n})\n","import { useMemo, useCallback, useState } from 'react'\nimport { usePropertyAccessor, useValueFormatter } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { useInheritedColor, getContinuousColorScale } from '@nivo/colors'\nimport { AnnotationMatcher, useAnnotations } from '@nivo/annotations'\nimport {\n    ComputedCell,\n    DefaultHeatMapDatum,\n    HeatMapCommonProps,\n    HeatMapDataProps,\n    HeatMapDatum,\n    SizeVariationConfig,\n} from './types'\nimport { commonDefaultProps } from './defaults'\nimport {\n    computeCells,\n    computeSizeScale,\n    getCellAnnotationPosition,\n    getCellAnnotationDimensions,\n} from './compute'\n\nexport const useComputeCells = <Datum extends HeatMapDatum, ExtraProps extends object>({\n    data,\n    width,\n    height,\n    xInnerPadding,\n    xOuterPadding,\n    yInnerPadding,\n    yOuterPadding,\n    forceSquare,\n}: {\n    data: HeatMapDataProps<Datum, ExtraProps>['data']\n    width: number\n    height: number\n} & Pick<\n    HeatMapCommonProps<Datum>,\n    'xOuterPadding' | 'xInnerPadding' | 'yOuterPadding' | 'yInnerPadding' | 'forceSquare'\n>) =>\n    useMemo(\n        () =>\n            computeCells<Datum, ExtraProps>({\n                data,\n                width,\n                height,\n                xInnerPadding,\n                xOuterPadding,\n                yInnerPadding,\n                yOuterPadding,\n                forceSquare,\n            }),\n        [\n            data,\n            width,\n            height,\n            xInnerPadding,\n            xOuterPadding,\n            yInnerPadding,\n            yOuterPadding,\n            forceSquare,\n        ]\n    )\n\nconst isHoverTargetByType = {\n    cell: <Datum extends HeatMapDatum>(\n        cell: Omit<\n            ComputedCell<Datum>,\n            'formattedValue' | 'color' | 'opacity' | 'borderColor' | 'label' | 'labelTextColor'\n        >,\n        current: ComputedCell<Datum>\n    ) => cell.id === current.id,\n    row: <Datum extends HeatMapDatum>(\n        cell: Omit<\n            ComputedCell<Datum>,\n            'formattedValue' | 'color' | 'opacity' | 'borderColor' | 'label' | 'labelTextColor'\n        >,\n        current: ComputedCell<Datum>\n    ) => cell.serieId === current.serieId,\n    column: <Datum extends HeatMapDatum>(\n        cell: Omit<\n            ComputedCell<Datum>,\n            'formattedValue' | 'color' | 'opacity' | 'borderColor' | 'label' | 'labelTextColor'\n        >,\n        current: ComputedCell<Datum>\n    ) => cell.data.x === current.data.x,\n    rowColumn: <Datum extends HeatMapDatum>(\n        cell: Omit<\n            ComputedCell<Datum>,\n            'formattedValue' | 'color' | 'opacity' | 'borderColor' | 'label' | 'labelTextColor'\n        >,\n        current: ComputedCell<Datum>\n    ) => cell.serieId === current.serieId || cell.data.x === current.data.x,\n}\n\nconst useSizeScale = (\n    size: false | SizeVariationConfig,\n    min: number,\n    max: number\n): ((value: number | null) => number) =>\n    useMemo(() => computeSizeScale(size, min, max), [size, min, max])\n\nconst useCellsStyle = <Datum extends HeatMapDatum = DefaultHeatMapDatum>({\n    cells,\n    minValue,\n    maxValue,\n    sizeVariation,\n    colors,\n    emptyColor,\n    opacity,\n    activeOpacity,\n    inactiveOpacity,\n    borderColor,\n    label,\n    labelTextColor,\n    valueFormat,\n    activeIds,\n}: {\n    cells: Omit<\n        ComputedCell<Datum>,\n        'formattedValue' | 'color' | 'opacity' | 'borderColor' | 'label' | 'labelTextColor'\n    >[]\n    minValue: number\n    maxValue: number\n    valueFormat?: HeatMapCommonProps<Datum>['valueFormat']\n    activeIds: string[]\n} & Pick<\n    HeatMapCommonProps<Datum>,\n    | 'sizeVariation'\n    | 'colors'\n    | 'emptyColor'\n    | 'opacity'\n    | 'activeOpacity'\n    | 'inactiveOpacity'\n    | 'borderColor'\n    | 'label'\n    | 'labelTextColor'\n>) => {\n    const getSize = useSizeScale(sizeVariation, minValue, maxValue)\n\n    const colorScale = useMemo(() => {\n        if (typeof colors === 'function') return null\n\n        return getContinuousColorScale(colors, {\n            min: minValue,\n            max: maxValue,\n        })\n    }, [colors, minValue, maxValue])\n\n    const getColor = useCallback(\n        (cell: Omit<ComputedCell<Datum>, 'color' | 'opacity' | 'borderColor'>) => {\n            if (cell.value !== null) {\n                if (typeof colors === 'function') return colors(cell)\n                if (colorScale !== null) return colorScale(cell.value)\n            }\n\n            return emptyColor\n        },\n        [colors, colorScale, emptyColor]\n    )\n    const theme = useTheme()\n    const getBorderColor = useInheritedColor(borderColor, theme)\n    const getLabelTextColor = useInheritedColor(labelTextColor, theme)\n\n    const formatValue = useValueFormatter(valueFormat)\n    const getLabel = usePropertyAccessor(label)\n\n    const styledCells = useMemo(\n        () =>\n            cells.map(cell => {\n                let computedOpacity = opacity\n                if (activeIds.length > 0) {\n                    computedOpacity = activeIds.includes(cell.id) ? activeOpacity : inactiveOpacity\n                }\n\n                const sizeMultiplier = getSize(cell.value)\n\n                const computedCell = {\n                    ...cell,\n                    width: cell.width * sizeMultiplier,\n                    height: cell.height * sizeMultiplier,\n                    formattedValue: cell.value !== null ? formatValue(cell.value) : null,\n                    opacity: computedOpacity,\n                } as ComputedCell<Datum>\n\n                computedCell.label = getLabel(computedCell)\n                computedCell.color = getColor(computedCell)\n                computedCell.borderColor = getBorderColor(computedCell)\n                computedCell.labelTextColor = getLabelTextColor(computedCell)\n\n                return computedCell\n            }),\n        [\n            cells,\n            getSize,\n            getColor,\n            getBorderColor,\n            getLabelTextColor,\n            formatValue,\n            getLabel,\n            activeIds,\n            opacity,\n            activeOpacity,\n            inactiveOpacity,\n        ]\n    )\n\n    return {\n        cells: styledCells,\n        colorScale,\n    }\n}\n\nexport const useHeatMap = <\n    Datum extends HeatMapDatum = DefaultHeatMapDatum,\n    ExtraProps extends object = Record<string, never>,\n>({\n    data,\n    valueFormat,\n    width: _width,\n    height: _height,\n    xOuterPadding = commonDefaultProps.xOuterPadding,\n    xInnerPadding = commonDefaultProps.xInnerPadding,\n    yOuterPadding = commonDefaultProps.yOuterPadding,\n    yInnerPadding = commonDefaultProps.yInnerPadding,\n    forceSquare = commonDefaultProps.forceSquare,\n    sizeVariation = commonDefaultProps.sizeVariation,\n    colors = commonDefaultProps.colors as HeatMapCommonProps<Datum>['colors'],\n    emptyColor = commonDefaultProps.emptyColor,\n    opacity = commonDefaultProps.opacity,\n    activeOpacity = commonDefaultProps.activeOpacity,\n    inactiveOpacity = commonDefaultProps.inactiveOpacity,\n    borderColor = commonDefaultProps.borderColor as HeatMapCommonProps<Datum>['borderColor'],\n    label = commonDefaultProps.label as HeatMapCommonProps<Datum>['label'],\n    labelTextColor = commonDefaultProps.labelTextColor as HeatMapCommonProps<Datum>['labelTextColor'],\n    hoverTarget = commonDefaultProps.hoverTarget,\n}: {\n    data: HeatMapDataProps<Datum, ExtraProps>['data']\n    width: number\n    height: number\n} & Partial<\n    Pick<\n        HeatMapCommonProps<Datum>,\n        | 'valueFormat'\n        | 'xOuterPadding'\n        | 'xInnerPadding'\n        | 'yOuterPadding'\n        | 'yInnerPadding'\n        | 'forceSquare'\n        | 'sizeVariation'\n        | 'colors'\n        | 'emptyColor'\n        | 'opacity'\n        | 'activeOpacity'\n        | 'inactiveOpacity'\n        | 'borderColor'\n        | 'label'\n        | 'labelTextColor'\n        | 'hoverTarget'\n    >\n>) => {\n    const [activeCell, setActiveCell] = useState<ComputedCell<Datum> | null>(null)\n\n    const { width, height, offsetX, offsetY, cells, xScale, yScale, minValue, maxValue } =\n        useComputeCells<Datum, ExtraProps>({\n            data,\n            width: _width,\n            height: _height,\n            xOuterPadding,\n            xInnerPadding,\n            yOuterPadding,\n            yInnerPadding,\n            forceSquare,\n        })\n\n    const activeIds = useMemo(() => {\n        if (!activeCell) return []\n\n        const isHoverTarget = isHoverTargetByType[hoverTarget]\n\n        return cells.filter(cell => isHoverTarget(cell, activeCell)).map(cell => cell.id)\n    }, [cells, activeCell, hoverTarget])\n\n    const { cells: computedCells, colorScale } = useCellsStyle<Datum>({\n        cells,\n        minValue,\n        maxValue,\n        sizeVariation,\n        colors,\n        emptyColor,\n        opacity,\n        activeOpacity,\n        inactiveOpacity,\n        borderColor,\n        label,\n        labelTextColor,\n        valueFormat,\n        activeIds,\n    })\n\n    return {\n        width,\n        height,\n        offsetX,\n        offsetY,\n        cells: computedCells,\n        xScale,\n        yScale,\n        colorScale,\n        activeCell,\n        setActiveCell,\n    }\n}\n\nexport const useCellAnnotations = <Datum extends HeatMapDatum>(\n    cells: ComputedCell<Datum>[],\n    annotations: AnnotationMatcher<ComputedCell<Datum>>[]\n) =>\n    useAnnotations<ComputedCell<Datum>>({\n        data: cells,\n        annotations,\n        getPosition: getCellAnnotationPosition,\n        getDimensions: getCellAnnotationDimensions,\n    })\n","import { memo, useMemo } from 'react'\nimport { animated, to } from '@react-spring/web'\nimport { useTheme } from '@nivo/theming'\nimport { Text } from '@nivo/text'\nimport { CellComponentProps, HeatMapDatum } from './types'\n\nconst NonMemoizedHeatMapCellRect = <Datum extends HeatMapDatum>({\n    cell,\n    borderWidth,\n    borderRadius,\n    animatedProps,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onClick,\n    enableLabels,\n}: CellComponentProps<Datum>) => {\n    const theme = useTheme()\n\n    const handlers = useMemo(\n        () => ({\n            onMouseEnter: onMouseEnter ? onMouseEnter(cell) : undefined,\n            onMouseMove: onMouseMove ? onMouseMove(cell) : undefined,\n            onMouseLeave: onMouseLeave ? onMouseLeave(cell) : undefined,\n            onClick: onClick ? onClick(cell) : undefined,\n        }),\n        [cell, onMouseEnter, onMouseMove, onMouseLeave, onClick]\n    )\n\n    return (\n        <animated.g\n            data-testid={`cell.${cell.id}`}\n            style={{ cursor: 'pointer' }}\n            opacity={animatedProps.opacity}\n            {...handlers}\n            transform={to(\n                [animatedProps.x, animatedProps.y, animatedProps.scale],\n                (x, y, scale) => `translate(${x}, ${y}) scale(${scale})`\n            )}\n        >\n            <animated.rect\n                transform={to(\n                    [animatedProps.width, animatedProps.height],\n                    (width, height) => `translate(${width * -0.5}, ${height * -0.5})`\n                )}\n                key={cell.id}\n                fill={animatedProps.color}\n                width={animatedProps.width}\n                height={animatedProps.height}\n                stroke={animatedProps.borderColor}\n                strokeWidth={borderWidth}\n                rx={borderRadius}\n                ry={borderRadius}\n            />\n            {enableLabels && (\n                <Text\n                    textAnchor=\"middle\"\n                    dominantBaseline=\"central\"\n                    fill={animatedProps.labelTextColor}\n                    style={{\n                        ...theme.labels.text,\n                        fill: undefined,\n                        userSelect: 'none',\n                    }}\n                >\n                    {cell.label}\n                </Text>\n            )}\n        </animated.g>\n    )\n}\n\nexport const HeatMapCellRect = memo(NonMemoizedHeatMapCellRect) as typeof NonMemoizedHeatMapCellRect\n","import { memo, useMemo } from 'react'\nimport { animated, to } from '@react-spring/web'\nimport { useTheme } from '@nivo/theming'\nimport { Text } from '@nivo/text'\nimport { HeatMapDatum, CellComponentProps } from './types'\n\nconst NonMemoizedHeatMapCellCircle = <Datum extends HeatMapDatum>({\n    cell,\n    borderWidth,\n    animatedProps,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onClick,\n    enableLabels,\n}: CellComponentProps<Datum>) => {\n    const theme = useTheme()\n\n    const handlers = useMemo(\n        () => ({\n            onMouseEnter: onMouseEnter ? onMouseEnter(cell) : undefined,\n            onMouseMove: onMouseMove ? onMouseMove(cell) : undefined,\n            onMouseLeave: onMouseLeave ? onMouseLeave(cell) : undefined,\n            onClick: onClick ? onClick(cell) : undefined,\n        }),\n        [cell, onMouseEnter, onMouseMove, onMouseLeave, onClick]\n    )\n\n    return (\n        <animated.g\n            data-testid={`cell.${cell.id}`}\n            style={{ cursor: 'pointer' }}\n            opacity={animatedProps.opacity}\n            {...handlers}\n            transform={to([animatedProps.x, animatedProps.y], (x, y) => `translate(${x}, ${y})`)}\n        >\n            <animated.circle\n                r={to(\n                    [animatedProps.width, animatedProps.height],\n                    (width, height) => Math.min(width, height) / 2\n                )}\n                fill={animatedProps.color}\n                fillOpacity={animatedProps.opacity}\n                strokeWidth={borderWidth}\n                stroke={animatedProps.borderColor}\n            />\n            {enableLabels && (\n                <Text\n                    dominantBaseline=\"central\"\n                    textAnchor=\"middle\"\n                    fill={animatedProps.labelTextColor}\n                    style={{\n                        ...theme.labels.text,\n                        fill: undefined,\n                    }}\n                >\n                    {cell.label}\n                </Text>\n            )}\n        </animated.g>\n    )\n}\n\nexport const HeatMapCellCircle = memo(\n    NonMemoizedHeatMapCellCircle\n) as typeof NonMemoizedHeatMapCellCircle\n","import { createElement, MouseEvent, useMemo } from 'react'\nimport { useTransition } from '@react-spring/web'\nimport { useMotionConfig } from '@nivo/core'\nimport { useTooltip } from '@nivo/tooltip'\nimport {\n    CellComponent,\n    ComputedCell,\n    HeatMapDatum,\n    HeatMapSvgProps,\n    CellAnimatedProps,\n} from './types'\nimport { HeatMapCellRect } from './HeatMapCellRect'\nimport { HeatMapCellCircle } from './HeatMapCellCircle'\n\ninterface HeatMapCellsProps<Datum extends HeatMapDatum, ExtraProps extends object> {\n    cells: ComputedCell<Datum>[]\n    cellComponent: NonNullable<HeatMapSvgProps<Datum, ExtraProps>['cellComponent']>\n    borderRadius: NonNullable<HeatMapSvgProps<Datum, ExtraProps>['borderRadius']>\n    borderWidth: NonNullable<HeatMapSvgProps<Datum, ExtraProps>['borderWidth']>\n    isInteractive: NonNullable<HeatMapSvgProps<Datum, ExtraProps>['isInteractive']>\n    setActiveCell: (cell: ComputedCell<Datum> | null) => void\n    onMouseEnter: HeatMapSvgProps<Datum, ExtraProps>['onMouseEnter']\n    onMouseMove: HeatMapSvgProps<Datum, ExtraProps>['onMouseMove']\n    onMouseLeave: HeatMapSvgProps<Datum, ExtraProps>['onMouseLeave']\n    onClick: HeatMapSvgProps<Datum, ExtraProps>['onClick']\n    tooltip: NonNullable<HeatMapSvgProps<Datum, ExtraProps>['tooltip']>\n    enableLabels: NonNullable<HeatMapSvgProps<Datum, ExtraProps>['enableLabels']>\n}\n\nconst enterTransition = <Datum extends HeatMapDatum>(cell: ComputedCell<Datum>) => ({\n    x: cell.x,\n    y: cell.y,\n    width: cell.width,\n    height: cell.height,\n    color: cell.color,\n    opacity: 0,\n    borderColor: cell.borderColor,\n    labelTextColor: cell.labelTextColor,\n    scale: 0,\n})\n\nconst regularTransition = <Datum extends HeatMapDatum>(cell: ComputedCell<Datum>) => ({\n    x: cell.x,\n    y: cell.y,\n    width: cell.width,\n    height: cell.height,\n    color: cell.color,\n    opacity: cell.opacity,\n    borderColor: cell.borderColor,\n    labelTextColor: cell.labelTextColor,\n    scale: 1,\n})\n\nconst exitTransition = <Datum extends HeatMapDatum>(cell: ComputedCell<Datum>) => ({\n    x: cell.x,\n    y: cell.y,\n    width: cell.width,\n    height: cell.height,\n    color: cell.color,\n    opacity: 0,\n    borderColor: cell.borderColor,\n    labelTextColor: cell.labelTextColor,\n    scale: 0,\n})\n\nexport const HeatMapCells = <Datum extends HeatMapDatum, ExtraProps extends object>({\n    cells,\n    cellComponent,\n    borderRadius,\n    borderWidth,\n    isInteractive,\n    setActiveCell,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onClick,\n    tooltip,\n    enableLabels,\n}: HeatMapCellsProps<Datum, ExtraProps>) => {\n    const { animate, config: springConfig } = useMotionConfig()\n\n    const transition = useTransition<ComputedCell<Datum>, CellAnimatedProps>(cells, {\n        keys: (cell: ComputedCell<Datum>) => cell.id,\n        initial: regularTransition,\n        from: enterTransition,\n        enter: regularTransition,\n        update: regularTransition,\n        leave: exitTransition,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleMouseEnter = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (cell: ComputedCell<Datum>) => (event: MouseEvent) => {\n            showTooltipFromEvent(createElement(tooltip, { cell }), event)\n            setActiveCell(cell)\n            onMouseEnter?.(cell, event)\n        }\n    }, [isInteractive, showTooltipFromEvent, tooltip, setActiveCell, onMouseEnter])\n\n    const handleMouseMove = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (cell: ComputedCell<Datum>) => (event: MouseEvent) => {\n            showTooltipFromEvent(createElement(tooltip, { cell }), event)\n            onMouseMove?.(cell, event)\n        }\n    }, [isInteractive, showTooltipFromEvent, tooltip, onMouseMove])\n\n    const handleMouseLeave = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (cell: ComputedCell<Datum>) => (event: MouseEvent) => {\n            hideTooltip()\n            setActiveCell(null)\n            onMouseLeave?.(cell, event)\n        }\n    }, [isInteractive, hideTooltip, setActiveCell, onMouseLeave])\n\n    const handleClick = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (cell: ComputedCell<Datum>) => (event: MouseEvent) => {\n            onClick?.(cell, event)\n        }\n    }, [isInteractive, onClick])\n\n    let Cell: CellComponent<Datum>\n    if (cellComponent === 'rect') {\n        Cell = HeatMapCellRect\n    } else if (cellComponent === 'circle') {\n        Cell = HeatMapCellCircle\n    } else {\n        Cell = cellComponent\n    }\n\n    return (\n        <>\n            {transition((animatedProps, cell) =>\n                createElement(Cell, {\n                    cell,\n                    borderRadius,\n                    borderWidth,\n                    animatedProps,\n                    enableLabels,\n                    onMouseEnter: handleMouseEnter,\n                    onMouseMove: handleMouseMove,\n                    onMouseLeave: handleMouseLeave,\n                    onClick: handleClick,\n                })\n            )}\n        </>\n    )\n}\n","import { Annotation } from '@nivo/annotations'\nimport { ComputedCell, HeatMapCommonProps, HeatMapDatum } from './types'\nimport { useCellAnnotations } from './hooks'\n\ninterface HeatMapCellAnnotationsProps<Datum extends HeatMapDatum> {\n    cells: ComputedCell<Datum>[]\n    annotations: NonNullable<HeatMapCommonProps<Datum>['annotations']>\n}\n\nexport const HeatMapCellAnnotations = <Datum extends HeatMapDatum>({\n    cells,\n    annotations,\n}: HeatMapCellAnnotationsProps<Datum>) => {\n    const boundAnnotations = useCellAnnotations<Datum>(cells, annotations)\n\n    return (\n        <>\n            {boundAnnotations.map((annotation, i) => (\n                <Annotation key={i} {...annotation} />\n            ))}\n        </>\n    )\n}\n","import { ReactNode, Fragment, createElement, useMemo, forwardRef, Ref, ReactElement } from 'react'\nimport { SvgWrapper, Container, useDimensions, WithChartRef } from '@nivo/core'\nimport { Axes, Grid } from '@nivo/axes'\nimport { AnchoredContinuousColorsLegendSvg } from '@nivo/legends'\nimport {\n    DefaultHeatMapDatum,\n    HeatMapDatum,\n    HeatMapCommonProps,\n    HeatMapSvgProps,\n    LayerId,\n    CustomLayerProps,\n} from './types'\nimport { useHeatMap } from './hooks'\nimport { svgDefaultProps } from './defaults'\nimport { HeatMapCells } from './HeatMapCells'\nimport { HeatMapCellAnnotations } from './HeatMapCellAnnotations'\n\ntype InnerHeatMapProps<Datum extends HeatMapDatum, ExtraProps extends object> = Omit<\n    HeatMapSvgProps<Datum, ExtraProps>,\n    'animate' | 'motionConfig' | 'renderWrapper' | 'theme'\n> & {\n    forwardedRef: Ref<SVGSVGElement>\n}\n\nconst InnerHeatMap = <Datum extends HeatMapDatum, ExtraProps extends object>({\n    data,\n    layers = svgDefaultProps.layers,\n    valueFormat,\n    width,\n    height,\n    margin: partialMargin,\n    forceSquare = svgDefaultProps.forceSquare,\n    xInnerPadding = svgDefaultProps.xInnerPadding,\n    xOuterPadding = svgDefaultProps.xOuterPadding,\n    yInnerPadding = svgDefaultProps.yInnerPadding,\n    yOuterPadding = svgDefaultProps.yOuterPadding,\n    sizeVariation = svgDefaultProps.sizeVariation,\n    cellComponent = svgDefaultProps.cellComponent as NonNullable<\n        HeatMapSvgProps<Datum, ExtraProps>['cellComponent']\n    >,\n    opacity = svgDefaultProps.opacity,\n    activeOpacity = svgDefaultProps.activeOpacity,\n    inactiveOpacity = svgDefaultProps.inactiveOpacity,\n    borderRadius = svgDefaultProps.borderRadius,\n    borderWidth = svgDefaultProps.borderWidth,\n    borderColor = svgDefaultProps.borderColor as HeatMapCommonProps<Datum>['borderColor'],\n    enableGridX = svgDefaultProps.enableGridX,\n    enableGridY = svgDefaultProps.enableGridY,\n    axisTop = svgDefaultProps.axisTop,\n    axisRight = svgDefaultProps.axisRight,\n    axisBottom = svgDefaultProps.axisBottom,\n    axisLeft = svgDefaultProps.axisLeft,\n    enableLabels = svgDefaultProps.enableLabels,\n    label = svgDefaultProps.label as HeatMapCommonProps<Datum>['label'],\n    labelTextColor = svgDefaultProps.labelTextColor as HeatMapCommonProps<Datum>['labelTextColor'],\n    colors = svgDefaultProps.colors as HeatMapCommonProps<Datum>['colors'],\n    emptyColor = svgDefaultProps.emptyColor,\n    legends = svgDefaultProps.legends,\n    annotations = svgDefaultProps.annotations as HeatMapCommonProps<Datum>['annotations'],\n    isInteractive = svgDefaultProps.isInteractive,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    onClick,\n    hoverTarget = svgDefaultProps.hoverTarget,\n    tooltip = svgDefaultProps.tooltip as HeatMapCommonProps<Datum>['tooltip'],\n    role,\n    ariaLabel,\n    ariaLabelledBy,\n    ariaDescribedBy,\n    forwardedRef,\n}: InnerHeatMapProps<Datum, ExtraProps>) => {\n    const {\n        margin: _margin,\n        innerWidth: _innerWidth,\n        innerHeight: _innerHeight,\n        outerWidth,\n        outerHeight,\n    } = useDimensions(width, height, partialMargin)\n\n    const {\n        width: innerWidth,\n        height: innerHeight,\n        offsetX,\n        offsetY,\n        xScale,\n        yScale,\n        cells,\n        colorScale,\n        activeCell,\n        setActiveCell,\n    } = useHeatMap<Datum, ExtraProps>({\n        data,\n        valueFormat,\n        width: _innerWidth,\n        height: _innerHeight,\n        forceSquare,\n        xInnerPadding,\n        xOuterPadding,\n        yInnerPadding,\n        yOuterPadding,\n        sizeVariation,\n        colors,\n        emptyColor,\n        opacity,\n        activeOpacity,\n        inactiveOpacity,\n        borderColor,\n        label,\n        labelTextColor,\n        hoverTarget,\n    })\n\n    const margin = useMemo(\n        () => ({\n            ..._margin,\n            top: _margin.top + offsetY,\n            left: _margin.left + offsetX,\n        }),\n        [_margin, offsetX, offsetY]\n    )\n\n    const layerById: Record<LayerId, ReactNode> = {\n        grid: null,\n        axes: null,\n        cells: null,\n        legends: null,\n        annotations: null,\n    }\n\n    if (layers.includes('grid')) {\n        layerById.grid = (\n            <Grid\n                key=\"grid\"\n                width={innerWidth} // - offsetX * 2\n                height={innerHeight} // - offsetY * 2\n                xScale={enableGridX ? xScale : null}\n                yScale={enableGridY ? yScale : null}\n            />\n        )\n    }\n\n    if (layers.includes('axes')) {\n        layerById.axes = (\n            <Axes\n                key=\"axes\"\n                xScale={xScale}\n                yScale={yScale}\n                width={innerWidth} // - offsetX * 2\n                height={innerHeight} // - offsetY * 2\n                top={axisTop}\n                right={axisRight}\n                bottom={axisBottom}\n                left={axisLeft}\n            />\n        )\n    }\n\n    if (layers.includes('cells')) {\n        layerById.cells = (\n            <Fragment key=\"cells\">\n                <HeatMapCells<Datum, ExtraProps>\n                    cells={cells}\n                    cellComponent={cellComponent}\n                    borderRadius={borderRadius}\n                    borderWidth={borderWidth}\n                    isInteractive={isInteractive}\n                    setActiveCell={setActiveCell}\n                    onMouseEnter={onMouseEnter}\n                    onMouseMove={onMouseMove}\n                    onMouseLeave={onMouseLeave}\n                    onClick={onClick}\n                    tooltip={tooltip}\n                    enableLabels={enableLabels}\n                />\n            </Fragment>\n        )\n    }\n\n    if (layers.includes('legends') && colorScale !== null) {\n        layerById.legends = (\n            <Fragment key=\"legends\">\n                {legends.map((legend, index) => (\n                    <AnchoredContinuousColorsLegendSvg\n                        {...legend}\n                        key={index}\n                        containerWidth={innerWidth}\n                        containerHeight={innerHeight}\n                        scale={colorScale}\n                    />\n                ))}\n            </Fragment>\n        )\n    }\n\n    if (layers.includes('annotations') && annotations.length > 0) {\n        layerById.annotations = (\n            <HeatMapCellAnnotations<Datum>\n                key=\"annotations\"\n                cells={cells}\n                annotations={annotations}\n            />\n        )\n    }\n\n    const customLayerProps: CustomLayerProps<Datum> = {\n        cells,\n        activeCell,\n        setActiveCell,\n    }\n\n    return (\n        <SvgWrapper\n            width={outerWidth}\n            height={outerHeight}\n            margin={Object.assign({}, margin, {\n                top: margin.top, //+ offsetY,\n                left: margin.left, // + offsetX,\n            })}\n            role={role}\n            ariaLabel={ariaLabel}\n            ariaLabelledBy={ariaLabelledBy}\n            ariaDescribedBy={ariaDescribedBy}\n            ref={forwardedRef}\n        >\n            {layers.map((layer, i) => {\n                if (typeof layer === 'function') {\n                    return <Fragment key={i}>{createElement(layer, customLayerProps)}</Fragment>\n                }\n\n                return layerById?.[layer] ?? null\n            })}\n        </SvgWrapper>\n    )\n}\n\nexport const HeatMap = forwardRef(\n    <\n        Datum extends HeatMapDatum = DefaultHeatMapDatum,\n        ExtraProps extends object = Record<string, never>,\n    >(\n        {\n            isInteractive = svgDefaultProps.isInteractive,\n            animate = svgDefaultProps.animate,\n            motionConfig = svgDefaultProps.motionConfig,\n            theme,\n            renderWrapper,\n            ...otherProps\n        }: HeatMapSvgProps<Datum, ExtraProps>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <Container\n            {...{\n                animate,\n                isInteractive,\n                motionConfig,\n                renderWrapper,\n                theme,\n            }}\n        >\n            <InnerHeatMap<Datum, ExtraProps>\n                isInteractive={isInteractive}\n                {...otherProps}\n                forwardedRef={ref}\n            />\n        </Container>\n    )\n) as <\n    Datum extends HeatMapDatum = DefaultHeatMapDatum,\n    ExtraProps extends object = Record<string, never>,\n>(\n    props: WithChartRef<HeatMapSvgProps<Datum, ExtraProps>, SVGSVGElement>\n) => ReactElement\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, WithChartRef, ResponsiveProps } from '@nivo/core'\nimport { DefaultHeatMapDatum, HeatMapDatum, HeatMapSvgProps } from './types'\nimport { HeatMap } from './HeatMap'\n\nexport const ResponsiveHeatMap = forwardRef(\n    <\n        Datum extends HeatMapDatum = DefaultHeatMapDatum,\n        ExtraProps extends object = Record<string, never>,\n    >(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<HeatMapSvgProps<Datum, ExtraProps>>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultHeight}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }) => (\n                <HeatMap<Datum, ExtraProps> width={width} height={height} {...props} ref={ref} />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <\n    Datum extends HeatMapDatum = DefaultHeatMapDatum,\n    ExtraProps extends object = Record<string, never>,\n>(\n    props: WithChartRef<ResponsiveProps<HeatMapSvgProps<Datum, ExtraProps>>, SVGSVGElement>\n) => ReactElement\n","import { setCanvasFont, drawCanvasText } from '@nivo/text'\nimport { CellCanvasRendererProps, HeatMapDatum } from './types'\n\nexport const renderRect = <Datum extends HeatMapDatum>(\n    ctx: CanvasRenderingContext2D,\n    {\n        cell: { x, y, width, height, color, borderColor, opacity, labelTextColor, label },\n        borderWidth,\n        enableLabels,\n        theme,\n    }: CellCanvasRendererProps<Datum>\n) => {\n    ctx.save()\n    ctx.globalAlpha = opacity\n\n    ctx.fillStyle = color\n    if (borderWidth > 0) {\n        ctx.strokeStyle = borderColor\n        ctx.lineWidth = borderWidth\n    }\n\n    ctx.fillRect(x - width / 2, y - height / 2, width, height)\n    if (borderWidth > 0) {\n        ctx.strokeRect(x - width / 2, y - height / 2, width, height)\n    }\n\n    if (enableLabels) {\n        setCanvasFont(ctx, theme.labels.text)\n        ctx.textAlign = 'center'\n        ctx.textBaseline = 'middle'\n        drawCanvasText(\n            ctx,\n            {\n                ...theme.labels.text,\n                fill: labelTextColor,\n            },\n            label,\n            x,\n            y\n        )\n    }\n\n    ctx.restore()\n}\n\nexport const renderCircle = <Datum extends HeatMapDatum>(\n    ctx: CanvasRenderingContext2D,\n    {\n        cell: { x, y, width, height, color, borderColor, opacity, labelTextColor, label },\n        borderWidth,\n        enableLabels,\n        theme,\n    }: CellCanvasRendererProps<Datum>\n) => {\n    ctx.save()\n    ctx.globalAlpha = opacity\n\n    const radius = Math.min(width, height) / 2\n\n    ctx.fillStyle = color\n    if (borderWidth > 0) {\n        ctx.strokeStyle = borderColor\n        ctx.lineWidth = borderWidth\n    }\n\n    ctx.beginPath()\n    ctx.arc(x, y, radius, 0, 2 * Math.PI)\n\n    ctx.fill()\n    if (borderWidth > 0) {\n        ctx.stroke()\n    }\n\n    if (enableLabels) {\n        setCanvasFont(ctx, theme.labels.text)\n        ctx.textAlign = 'center'\n        ctx.textBaseline = 'middle'\n        drawCanvasText(\n            ctx,\n            {\n                ...theme.labels.text,\n                fill: labelTextColor,\n            },\n            label,\n            x,\n            y\n        )\n    }\n\n    ctx.restore()\n}\n","import {\n    useEffect,\n    useRef,\n    useCallback,\n    createElement,\n    useMemo,\n    MouseEvent,\n    forwardRef,\n    Ref,\n    ReactElement,\n} from 'react'\nimport {\n    getRelativeCursor,\n    isCursorInRect,\n    useDimensions,\n    Container,\n    WithChartRef,\n    mergeRefs,\n} from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { renderAxesToCanvas, renderGridLinesToCanvas } from '@nivo/axes'\nimport { useTooltip } from '@nivo/tooltip'\nimport { renderContinuousColorLegendToCanvas } from '@nivo/legends'\nimport { renderAnnotationsToCanvas, useComputedAnnotations } from '@nivo/annotations'\nimport { useHeatMap, useCellAnnotations } from './hooks'\nimport { renderRect, renderCircle } from './canvas'\nimport { canvasDefaultProps } from './defaults'\nimport {\n    CellCanvasRenderer,\n    DefaultHeatMapDatum,\n    HeatMapCanvasProps,\n    HeatMapCommonProps,\n    HeatMapDatum,\n    CellShape,\n    CustomLayerProps,\n} from './types'\n\ntype InnerNetworkCanvasProps<Datum extends HeatMapDatum, ExtraProps extends object> = Omit<\n    HeatMapCanvasProps<Datum, ExtraProps>,\n    'renderWrapper' | 'theme'\n> & {\n    forwardedRef: Ref<HTMLCanvasElement>\n}\n\nconst InnerHeatMapCanvas = <Datum extends HeatMapDatum, ExtraProps extends object>({\n    data,\n    layers = canvasDefaultProps.layers,\n    valueFormat,\n    width,\n    height,\n    margin: partialMargin,\n    xInnerPadding = canvasDefaultProps.xInnerPadding,\n    xOuterPadding = canvasDefaultProps.xOuterPadding,\n    yInnerPadding = canvasDefaultProps.yInnerPadding,\n    yOuterPadding = canvasDefaultProps.yOuterPadding,\n    forceSquare = canvasDefaultProps.forceSquare,\n    sizeVariation = canvasDefaultProps.sizeVariation,\n    renderCell: _renderCell = canvasDefaultProps.renderCell as CellShape,\n    opacity = canvasDefaultProps.opacity,\n    activeOpacity = canvasDefaultProps.activeOpacity,\n    inactiveOpacity = canvasDefaultProps.inactiveOpacity,\n    borderWidth = canvasDefaultProps.borderWidth,\n    borderColor = canvasDefaultProps.borderColor as HeatMapCommonProps<Datum>['borderColor'],\n    enableGridX = canvasDefaultProps.enableGridX,\n    enableGridY = canvasDefaultProps.enableGridY,\n    axisTop = canvasDefaultProps.axisTop,\n    axisRight = canvasDefaultProps.axisRight,\n    axisBottom = canvasDefaultProps.axisBottom,\n    axisLeft = canvasDefaultProps.axisLeft,\n    enableLabels = canvasDefaultProps.enableLabels,\n    label = canvasDefaultProps.label as HeatMapCommonProps<Datum>['label'],\n    labelTextColor = canvasDefaultProps.labelTextColor as HeatMapCommonProps<Datum>['labelTextColor'],\n    colors = canvasDefaultProps.colors as HeatMapCommonProps<Datum>['colors'],\n    emptyColor = canvasDefaultProps.emptyColor,\n    legends = canvasDefaultProps.legends,\n    annotations = canvasDefaultProps.annotations as HeatMapCommonProps<Datum>['annotations'],\n    isInteractive = canvasDefaultProps.isInteractive,\n    onClick,\n    hoverTarget = canvasDefaultProps.hoverTarget,\n    tooltip = canvasDefaultProps.tooltip as HeatMapCommonProps<Datum>['tooltip'],\n    role,\n    ariaLabel,\n    ariaLabelledBy,\n    ariaDescribedBy,\n    pixelRatio = canvasDefaultProps.pixelRatio,\n    forwardedRef,\n}: InnerNetworkCanvasProps<Datum, ExtraProps>) => {\n    const canvasEl = useRef<HTMLCanvasElement | null>(null)\n\n    const {\n        margin: _margin,\n        innerWidth: _innerWidth,\n        innerHeight: _innerHeight,\n        outerWidth,\n        outerHeight,\n    } = useDimensions(width, height, partialMargin)\n\n    const {\n        width: innerWidth,\n        height: innerHeight,\n        offsetX,\n        offsetY,\n        xScale,\n        yScale,\n        cells,\n        colorScale,\n        activeCell,\n        setActiveCell,\n    } = useHeatMap<Datum, ExtraProps>({\n        data,\n        valueFormat,\n        width: _innerWidth,\n        height: _innerHeight,\n        xInnerPadding,\n        xOuterPadding,\n        yInnerPadding,\n        yOuterPadding,\n        forceSquare,\n        sizeVariation,\n        colors,\n        emptyColor,\n        opacity,\n        activeOpacity,\n        inactiveOpacity,\n        borderColor,\n        label,\n        labelTextColor,\n        hoverTarget,\n    })\n\n    const margin = useMemo(\n        () => ({\n            ..._margin,\n            top: _margin.top + offsetY,\n            left: _margin.left + offsetX,\n        }),\n        [_margin, offsetX, offsetY]\n    )\n\n    const boundAnnotations = useCellAnnotations(cells, annotations)\n    const computedAnnotations = useComputedAnnotations({\n        annotations: boundAnnotations,\n    })\n\n    let renderCell: CellCanvasRenderer<Datum>\n    if (typeof _renderCell === 'function') {\n        renderCell = _renderCell\n    } else if (_renderCell === 'circle') {\n        renderCell = renderCircle\n    } else {\n        renderCell = renderRect\n    }\n\n    const theme = useTheme()\n\n    const customLayerProps: CustomLayerProps<Datum> = useMemo(\n        () => ({\n            cells,\n            activeCell,\n            setActiveCell,\n        }),\n        [cells, activeCell, setActiveCell]\n    )\n\n    useEffect(() => {\n        if (canvasEl.current === null) return\n\n        const ctx = canvasEl.current.getContext('2d')\n        if (!ctx) return\n\n        canvasEl.current.width = outerWidth * pixelRatio\n        canvasEl.current.height = outerHeight * pixelRatio\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) // + offsetX, margin.top + offsetY)\n\n        layers.forEach(layer => {\n            if (layer === 'grid') {\n                ctx.lineWidth = theme.grid.line.strokeWidth as number\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,\n                        axis: 'x',\n                    })\n                }\n                if (enableGridY) {\n                    renderGridLinesToCanvas(ctx, {\n                        width: innerWidth,\n                        height: innerHeight,\n                        scale: yScale,\n                        axis: 'y',\n                    })\n                }\n            } else if (layer === 'axes') {\n                renderAxesToCanvas(ctx, {\n                    xScale,\n                    yScale,\n                    width: innerWidth, // - offsetX * 2,\n                    height: innerHeight, // - offsetY * 2,\n                    top: axisTop,\n                    right: axisRight,\n                    bottom: axisBottom,\n                    left: axisLeft,\n                    theme,\n                })\n            } else if (layer === 'cells') {\n                ctx.textAlign = 'center'\n                ctx.textBaseline = 'middle'\n\n                cells.forEach(cell => {\n                    renderCell(ctx, { cell, borderWidth, enableLabels, theme })\n                })\n            } else if (layer === 'legends' && colorScale !== null) {\n                legends.forEach(legend => {\n                    renderContinuousColorLegendToCanvas(ctx, {\n                        ...legend,\n                        containerWidth: innerWidth,\n                        containerHeight: innerHeight,\n                        scale: colorScale,\n                        theme,\n                    })\n                })\n            } else if (layer === 'annotations') {\n                renderAnnotationsToCanvas(ctx, {\n                    annotations: computedAnnotations,\n                    theme,\n                })\n            } else if (typeof layer === 'function') {\n                layer(ctx, customLayerProps)\n            }\n        })\n    }, [\n        canvasEl,\n        pixelRatio,\n        outerWidth,\n        outerHeight,\n        innerWidth,\n        innerHeight,\n        margin,\n        layers,\n        customLayerProps,\n        cells,\n        renderCell,\n        enableGridX,\n        enableGridY,\n        axisTop,\n        axisRight,\n        axisBottom,\n        axisLeft,\n        xScale,\n        yScale,\n        theme,\n        borderWidth,\n        enableLabels,\n        colorScale,\n        legends,\n        computedAnnotations,\n    ])\n\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleMouseHover = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (canvasEl.current === null) return\n\n            const [x, y] = getRelativeCursor(canvasEl.current, event)\n\n            const cell = cells.find(c =>\n                isCursorInRect(\n                    c.x + margin.left - c.width / 2, // + offsetX - c.width / 2,\n                    c.y + margin.top - c.height / 2, //+ offsetY - c.height / 2,\n                    c.width,\n                    c.height,\n                    x,\n                    y\n                )\n            )\n            if (cell !== undefined) {\n                setActiveCell(cell)\n                showTooltipFromEvent(createElement(tooltip, { cell }), event)\n            } else {\n                setActiveCell(null)\n                hideTooltip()\n            }\n        },\n        [\n            canvasEl,\n            cells,\n            margin,\n            // offsetX,\n            // offsetY,\n            setActiveCell,\n            showTooltipFromEvent,\n            hideTooltip,\n            tooltip,\n        ]\n    )\n\n    const handleMouseLeave = useCallback(() => {\n        setActiveCell(null)\n        hideTooltip()\n    }, [setActiveCell, hideTooltip])\n\n    const handleClick = useCallback(\n        (event: MouseEvent<HTMLCanvasElement>) => {\n            if (activeCell === null) return\n\n            onClick?.(activeCell, event)\n        },\n        [activeCell, onClick]\n    )\n\n    return (\n        <canvas\n            ref={mergeRefs(canvasEl, forwardedRef)}\n            width={outerWidth * pixelRatio}\n            height={outerHeight * pixelRatio}\n            style={{\n                width: outerWidth,\n                height: outerHeight,\n            }}\n            onMouseEnter={isInteractive ? handleMouseHover : undefined}\n            onMouseMove={isInteractive ? handleMouseHover : undefined}\n            onMouseLeave={isInteractive ? handleMouseLeave : undefined}\n            onClick={isInteractive ? handleClick : undefined}\n            role={role}\n            aria-label={ariaLabel}\n            aria-labelledby={ariaLabelledBy}\n            aria-describedby={ariaDescribedBy}\n        />\n    )\n}\n\nexport const HeatMapCanvas = forwardRef(\n    <\n        Datum extends HeatMapDatum = DefaultHeatMapDatum,\n        ExtraProps extends object = Record<string, never>,\n    >(\n        {\n            theme,\n            isInteractive = canvasDefaultProps.isInteractive,\n            animate = canvasDefaultProps.animate,\n            motionConfig = canvasDefaultProps.motionConfig,\n            renderWrapper,\n            ...otherProps\n        }: HeatMapCanvasProps<Datum, ExtraProps>,\n        ref: Ref<HTMLCanvasElement>\n    ) => (\n        <Container {...{ isInteractive, animate, motionConfig, theme, renderWrapper }}>\n            <InnerHeatMapCanvas<Datum, ExtraProps>\n                isInteractive={isInteractive}\n                {...otherProps}\n                forwardedRef={ref}\n            />\n        </Container>\n    )\n) as <\n    Datum extends HeatMapDatum = DefaultHeatMapDatum,\n    ExtraProps extends object = Record<string, never>,\n>(\n    props: WithChartRef<HeatMapCanvasProps<Datum, ExtraProps>, HTMLCanvasElement>\n) => ReactElement\n","import { forwardRef, ReactElement, Ref } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { DefaultHeatMapDatum, HeatMapCanvasProps, HeatMapDatum } from './types'\nimport { HeatMapCanvas } from './HeatMapCanvas'\n\nexport const ResponsiveHeatMapCanvas = forwardRef(\n    <\n        Datum extends HeatMapDatum = DefaultHeatMapDatum,\n        ExtraProps extends object = Record<string, never>,\n    >(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<HeatMapCanvasProps<Datum, ExtraProps>>,\n        ref: Ref<HTMLCanvasElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultHeight}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }) => (\n                <HeatMapCanvas<Datum, ExtraProps>\n                    width={width}\n                    height={height}\n                    {...props}\n                    ref={ref}\n                />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <\n    Datum extends HeatMapDatum = DefaultHeatMapDatum,\n    ExtraProps extends object = Record<string, never>,\n>(\n    props: WithChartRef<ResponsiveProps<HeatMapCanvasProps<Datum, ExtraProps>>, HTMLCanvasElement>\n) => ReactElement\n"],"names":["commonDefaultProps","layers","forceSquare","xInnerPadding","xOuterPadding","yInnerPadding","yOuterPadding","sizeVariation","opacity","activeOpacity","inactiveOpacity","borderWidth","borderColor","from","modifiers","enableGridX","enableGridY","enableLabels","label","labelTextColor","colors","type","scheme","emptyColor","legends","annotations","isInteractive","hoverTarget","tooltip","memo","_ref","cell","formattedValue","_jsx","BasicTooltip","id","serieId","data","x","value","enableChip","color","animate","motionConfig","svgDefaultProps","_extends","axisTop","axisRight","axisBottom","axisLeft","borderRadius","cellComponent","canvasDefaultProps","renderCell","pixelRatio","window","devicePixelRatio","computeLayout","_width","width","_height","height","rows","columns","offsetX","offsetY","cellWidth","Math","max","cellHeight","cellSize","min","computeCells","_ref2","xValuesSet","Set","serieIds","allValues","cells","forEach","serie","push","datum","add","undefined","y","xValues","Array","_computeLayout","length","xScale","castBandScale","scaleBand","domain","range","paddingOuter","paddingInner","yScale","bandwidth","cellsWithPosition","map","minValue","apply","maxValue","computeSizeScale","size","scale","scaleLinear","values","sizes","getCellAnnotationPosition","getCellAnnotationDimensions","useComputeCells","useMemo","isHoverTargetByType","current","row","column","rowColumn","useCellsStyle","valueFormat","activeIds","getSize","colorScale","getContinuousColorScale","getColor","useCallback","theme","useTheme","getBorderColor","useInheritedColor","getLabelTextColor","formatValue","useValueFormatter","getLabel","usePropertyAccessor","computedOpacity","includes","sizeMultiplier","computedCell","useHeatMap","_ref3","_ref3$xOuterPadding","_ref3$xInnerPadding","_ref3$yOuterPadding","_ref3$yInnerPadding","_ref3$forceSquare","_ref3$sizeVariation","_ref3$colors","_ref3$emptyColor","_ref3$opacity","_ref3$activeOpacity","_ref3$inactiveOpacity","_ref3$borderColor","_ref3$label","_ref3$labelTextColor","_ref3$hoverTarget","_useState","useState","activeCell","setActiveCell","_useComputeCells","isHoverTarget","filter","_useCellsStyle","useCellAnnotations","useAnnotations","getPosition","getDimensions","HeatMapCellRect","animatedProps","onMouseEnter","onMouseMove","onMouseLeave","onClick","handlers","_jsxs","animated","g","style","cursor","transform","to","children","rect","fill","stroke","strokeWidth","rx","ry","Text","textAnchor","dominantBaseline","labels","text","userSelect","HeatMapCellCircle","circle","r","fillOpacity","enterTransition","regularTransition","exitTransition","HeatMapCells","Cell","_useMotionConfig","useMotionConfig","springConfig","config","transition","useTransition","keys","initial","enter","update","leave","immediate","_useTooltip","useTooltip","showTooltipFromEvent","hideTooltip","handleMouseEnter","event","createElement","handleMouseMove","handleMouseLeave","handleClick","_Fragment","HeatMapCellAnnotations","boundAnnotations","annotation","i","Annotation","InnerHeatMap","_ref$layers","partialMargin","margin","_ref$forceSquare","_ref$xInnerPadding","_ref$xOuterPadding","_ref$yInnerPadding","_ref$yOuterPadding","_ref$sizeVariation","_ref$cellComponent","_ref$opacity","_ref$activeOpacity","_ref$inactiveOpacity","_ref$borderRadius","_ref$borderWidth","_ref$borderColor","_ref$enableGridX","_ref$enableGridY","_ref$axisTop","_ref$axisRight","_ref$axisBottom","_ref$axisLeft","_ref$enableLabels","_ref$label","_ref$labelTextColor","_ref$colors","_ref$emptyColor","_ref$legends","_ref$annotations","_ref$isInteractive","_ref$hoverTarget","_ref$tooltip","role","ariaLabel","ariaLabelledBy","ariaDescribedBy","forwardedRef","_useDimensions","useDimensions","_margin","_innerWidth","innerWidth","_innerHeight","innerHeight","outerWidth","outerHeight","_useHeatMap","top","left","layerById","grid","axes","Grid","Axes","right","bottom","Fragment","legend","index","_createElement","AnchoredContinuousColorsLegendSvg","key","containerWidth","containerHeight","customLayerProps","SvgWrapper","Object","assign","ref","layer","_layerById$layer","HeatMap","forwardRef","_ref2$isInteractive","_ref2$animate","_ref2$motionConfig","renderWrapper","otherProps","_objectWithoutPropertiesLoose","_excluded","Container","ResponsiveHeatMap","defaultWidth","defaultHeight","onResize","debounceResize","props","ResponsiveWrapper","renderRect","ctx","_ref$cell","save","globalAlpha","fillStyle","strokeStyle","lineWidth","fillRect","strokeRect","setCanvasFont","textAlign","textBaseline","drawCanvasText","restore","renderCircle","_ref2$cell","radius","beginPath","arc","PI","InnerHeatMapCanvas","_ref$renderCell","_renderCell","_ref$pixelRatio","canvasEl","useRef","computedAnnotations","useComputedAnnotations","useEffect","getContext","background","translate","line","renderGridLinesToCanvas","axis","renderAxesToCanvas","renderContinuousColorLegendToCanvas","renderAnnotationsToCanvas","handleMouseHover","_getRelativeCursor","getRelativeCursor","find","c","isCursorInRect","mergeRefs","HeatMapCanvas","ResponsiveHeatMapCanvas"],"mappings":"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"}