{"version":3,"file":"nivo-pie.mjs","sources":["../src/PieLegends.tsx","../src/props.ts","../src/PieTooltip.tsx","../src/hooks.ts","../src/Arcs.tsx","../src/Pie.tsx","../src/ResponsivePie.tsx","../src/PieCanvas.tsx","../src/ResponsivePieCanvas.tsx"],"sourcesContent":["import { BoxLegendSvg } from '@nivo/legends'\nimport { CompletePieSvgProps, DatumId, LegendDatum } from './types'\n\ninterface PieLegendsProps<RawDatum> {\n    width: number\n    height: number\n    legends: CompletePieSvgProps<RawDatum>['legends']\n    data: LegendDatum<RawDatum>[]\n    toggleSerie: (id: DatumId) => void\n}\n\nexport const PieLegends = <RawDatum,>({\n    width,\n    height,\n    legends,\n    data,\n    toggleSerie,\n}: PieLegendsProps<RawDatum>) => {\n    return (\n        <>\n            {legends.map((legend, i: number) => (\n                <BoxLegendSvg\n                    key={i}\n                    {...legend}\n                    containerWidth={width}\n                    containerHeight={height}\n                    data={legend.data ?? data}\n                    toggleSerie={legend.toggleSerie ? toggleSerie : undefined}\n                />\n            ))}\n        </>\n    )\n}\n","import { OrdinalColorScaleConfig } from '@nivo/colors'\nimport { ArcTransitionMode } from '@nivo/arcs'\nimport { PieTooltip } from './PieTooltip'\n\nexport const defaultProps = {\n    id: 'id',\n    value: 'value',\n    sortByValue: false,\n    innerRadius: 0,\n    padAngle: 0,\n    cornerRadius: 0,\n    layers: ['arcs', 'arcLinkLabels', 'arcLabels', 'legends'],\n    startAngle: 0,\n    endAngle: 360,\n    fit: true,\n    activeInnerRadiusOffset: 0,\n    activeOuterRadiusOffset: 0,\n    borderWidth: 0,\n    borderColor: {\n        from: 'color',\n        modifiers: [['darker', 1]],\n    },\n    enableArcLabels: true,\n    arcLabel: 'formattedValue',\n    arcLabelsSkipAngle: 0,\n    arcLabelsSkipRadius: 0,\n    arcLabelsRadiusOffset: 0.5,\n    arcLabelsTextColor: { theme: 'labels.text.fill' },\n    enableArcLinkLabels: true,\n    arcLinkLabel: 'id',\n    arcLinkLabelsSkipAngle: 0,\n    arcLinkLabelsOffset: 0,\n    arcLinkLabelsDiagonalLength: 16,\n    arcLinkLabelsStraightLength: 24,\n    arcLinkLabelsThickness: 1,\n    arcLinkLabelsTextOffset: 6,\n    arcLinkLabelsTextColor: { theme: 'labels.text.fill' },\n    arcLinkLabelsColor: { theme: 'axis.ticks.line.stroke' },\n    colors: { scheme: 'nivo' } as unknown as OrdinalColorScaleConfig,\n    defs: [],\n    fill: [],\n    isInteractive: true,\n    animate: true,\n    motionConfig: 'gentle',\n    transitionMode: 'innerRadius' as ArcTransitionMode,\n    tooltip: PieTooltip,\n    legends: [],\n    role: 'img',\n    pixelRatio: typeof window !== 'undefined' ? (window.devicePixelRatio ?? 1) : 1,\n}\n","import { BasicTooltip } from '@nivo/tooltip'\nimport { ComputedDatum } from './types'\n\nexport const PieTooltip = <RawDatum,>({ datum }: { datum: ComputedDatum<RawDatum> }) => (\n    <BasicTooltip\n        id={datum.id}\n        value={datum.formattedValue}\n        enableChip={true}\n        color={datum.color}\n    />\n)\n\nexport default PieTooltip\n","import { useCallback, useEffect, useMemo, useRef, useState } from 'react'\nimport { pie as d3Pie } from 'd3-shape'\nimport { useArcGenerator, computeArcBoundingBox } from '@nivo/arcs'\nimport {\n    degreesToRadians,\n    radiansToDegrees,\n    useValueFormatter,\n    usePropertyAccessor,\n} from '@nivo/core'\nimport { OrdinalColorScaleConfig, useOrdinalColorScale } from '@nivo/colors'\nimport { defaultProps } from './props'\nimport {\n    MayHaveLabel,\n    CompletePieSvgProps,\n    ComputedDatum,\n    DatumId,\n    PieArc,\n    PieCustomLayerProps,\n    LegendDatum,\n    CommonPieProps,\n} from './types'\n\n/**\n * Format data so that we get a consistent data structure.\n * It will also add the `formattedValue` and `color` property.\n */\nexport const useNormalizedData = <RawDatum extends MayHaveLabel>({\n    data,\n    id = defaultProps.id,\n    value = defaultProps.value,\n    valueFormat,\n    colors = defaultProps.colors as OrdinalColorScaleConfig<\n        Omit<ComputedDatum<RawDatum>, 'arc' | 'color' | 'fill'>\n    >,\n}: Pick<CompletePieSvgProps<RawDatum>, 'id' | 'value' | 'valueFormat' | 'colors'> & {\n    data: readonly RawDatum[]\n}): Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>[] => {\n    const getId = usePropertyAccessor<RawDatum, DatumId>(id)\n    const getValue = usePropertyAccessor<RawDatum, number>(value)\n    const formatValue = useValueFormatter<number>(valueFormat)\n\n    const getColor = useOrdinalColorScale<Omit<ComputedDatum<RawDatum>, 'arc' | 'color' | 'fill'>>(\n        colors,\n        'id'\n    )\n\n    return useMemo(\n        () =>\n            data.map(datum => {\n                const datumId = getId(datum)\n                const datumValue = getValue(datum)\n\n                const normalizedDatum: Omit<ComputedDatum<RawDatum>, 'arc' | 'color' | 'fill'> = {\n                    id: datumId,\n                    label: datum.label ?? datumId,\n                    hidden: false,\n                    value: datumValue,\n                    formattedValue: formatValue(datumValue),\n                    data: datum,\n                }\n\n                return {\n                    ...normalizedDatum,\n                    color: getColor(normalizedDatum),\n                }\n            }),\n        [data, getId, getValue, formatValue, getColor]\n    )\n}\n\n/**\n * Compute arcs, which don't depend yet on radius.\n */\nexport const usePieArcs = <RawDatum>({\n    data,\n    startAngle,\n    endAngle,\n    innerRadius,\n    outerRadius,\n    padAngle,\n    sortByValue,\n    activeId,\n    activeInnerRadiusOffset,\n    activeOuterRadiusOffset,\n    hiddenIds,\n    forwardLegendData,\n}: {\n    data: Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>[]\n    // in degrees\n    startAngle: number\n    // in degrees\n    endAngle: number\n    // in pixels\n    innerRadius: number\n    // in pixels\n    outerRadius: number\n    padAngle: number\n    sortByValue: boolean\n    activeId: null | DatumId\n    activeInnerRadiusOffset: number\n    activeOuterRadiusOffset: number\n    hiddenIds: DatumId[]\n    forwardLegendData?: CommonPieProps<RawDatum>['forwardLegendData']\n}): {\n    dataWithArc: Omit<ComputedDatum<RawDatum>, 'fill'>[]\n    legendData: LegendDatum<RawDatum>[]\n} => {\n    const pie = useMemo(() => {\n        const innerPie = d3Pie<Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>>()\n            .value(d => d.value)\n            .startAngle(degreesToRadians(startAngle))\n            .endAngle(degreesToRadians(endAngle))\n            .padAngle(degreesToRadians(padAngle))\n\n        if (!sortByValue) {\n            innerPie.sortValues(null)\n        }\n\n        return innerPie\n    }, [startAngle, endAngle, padAngle, sortByValue])\n\n    const result = useMemo(() => {\n        const hiddenData = data.filter(item => !hiddenIds.includes(item.id))\n        const dataWithArc = pie(hiddenData).map(\n            (\n                arc: Omit<\n                    PieArc,\n                    'angle' | 'angleDeg' | 'innerRadius' | 'outerRadius' | 'thickness'\n                > & {\n                    data: Omit<ComputedDatum<RawDatum>, 'arc' | 'fill'>\n                }\n            ) => {\n                const angle = Math.abs(arc.endAngle - arc.startAngle)\n\n                return {\n                    ...arc.data,\n                    arc: {\n                        index: arc.index,\n                        startAngle: arc.startAngle,\n                        endAngle: arc.endAngle,\n                        innerRadius:\n                            activeId === arc.data.id\n                                ? innerRadius - activeInnerRadiusOffset\n                                : innerRadius,\n                        outerRadius:\n                            activeId === arc.data.id\n                                ? outerRadius + activeOuterRadiusOffset\n                                : outerRadius,\n                        thickness: outerRadius - innerRadius,\n                        padAngle: arc.padAngle,\n                        angle,\n                        angleDeg: radiansToDegrees(angle),\n                    },\n                }\n            }\n        )\n        const legendData: LegendDatum<RawDatum>[] = data.map(item => ({\n            id: item.id,\n            label: item.label,\n            color: item.color,\n            hidden: hiddenIds.includes(item.id),\n            data: item,\n        }))\n\n        return { dataWithArc, legendData }\n    }, [\n        pie,\n        data,\n        hiddenIds,\n        activeId,\n        innerRadius,\n        activeInnerRadiusOffset,\n        outerRadius,\n        activeOuterRadiusOffset,\n    ])\n\n    // Forward the legends data if `forwardLegendData` is defined.\n    const legendData = result.legendData\n    const forwardLegendDataRef = useRef(forwardLegendData)\n    useEffect(() => {\n        if (typeof forwardLegendDataRef.current !== 'function') return\n        forwardLegendDataRef.current(legendData)\n    }, [forwardLegendDataRef, legendData])\n\n    return result\n}\n\n/**\n * Encapsulate the logic for defining/reading the active arc ID,\n * which can be either controlled (handled externally), or uncontrolled\n * (handled internally), we can optionally define a default value when\n * it's uncontrolled.\n */\nconst useActiveId = ({\n    activeId: activeIdFromProps,\n    onActiveIdChange,\n    defaultActiveId = null,\n}: {\n    activeId?: DatumId | null\n    onActiveIdChange?: (id: DatumId | null) => void\n    defaultActiveId?: DatumId | null\n}) => {\n    const isControlled = typeof activeIdFromProps != 'undefined'\n\n    const [internalActiveId, setInternalActiveId] = useState<DatumId | null>(\n        !isControlled ? defaultActiveId : null\n    )\n\n    const activeId = isControlled ? activeIdFromProps : internalActiveId\n\n    const setActiveId = useCallback(\n        (id: DatumId | null) => {\n            if (onActiveIdChange) {\n                onActiveIdChange(id)\n            }\n\n            if (!isControlled) {\n                setInternalActiveId(id)\n            }\n        },\n        [isControlled, onActiveIdChange, setInternalActiveId]\n    )\n\n    return { activeId, setActiveId }\n}\n\n/**\n * Compute pie layout using explicit radius/innerRadius,\n * expressed in pixels.\n */\nexport const usePie = <RawDatum>({\n    data,\n    radius,\n    innerRadius,\n    startAngle = defaultProps.startAngle,\n    endAngle = defaultProps.endAngle,\n    padAngle = defaultProps.padAngle,\n    sortByValue = defaultProps.sortByValue,\n    cornerRadius = defaultProps.cornerRadius,\n    activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n    activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n    activeId: activeIdFromProps,\n    onActiveIdChange,\n    defaultActiveId,\n    forwardLegendData,\n}: Pick<\n    Partial<CompletePieSvgProps<RawDatum>>,\n    | 'startAngle'\n    | 'endAngle'\n    | 'padAngle'\n    | 'sortByValue'\n    | 'cornerRadius'\n    | 'activeInnerRadiusOffset'\n    | 'activeOuterRadiusOffset'\n    | 'activeId'\n    | 'onActiveIdChange'\n    | 'defaultActiveId'\n    | 'forwardLegendData'\n> & {\n    data: Omit<ComputedDatum<RawDatum>, 'arc'>[]\n    radius: number\n    innerRadius: number\n}) => {\n    const { activeId, setActiveId } = useActiveId({\n        activeId: activeIdFromProps,\n        onActiveIdChange,\n        defaultActiveId,\n    })\n\n    const [hiddenIds, setHiddenIds] = useState<DatumId[]>([])\n    const pieArcs = usePieArcs({\n        data,\n        startAngle,\n        endAngle,\n        innerRadius,\n        outerRadius: radius,\n        padAngle,\n        sortByValue,\n        activeId,\n        activeInnerRadiusOffset,\n        activeOuterRadiusOffset,\n        hiddenIds,\n        forwardLegendData,\n    })\n\n    const toggleSerie = useCallback((id: DatumId) => {\n        setHiddenIds(state =>\n            state.indexOf(id) > -1 ? state.filter(item => item !== id) : [...state, id]\n        )\n    }, [])\n\n    const arcGenerator = useArcGenerator({ cornerRadius, padAngle: degreesToRadians(padAngle) })\n\n    return { ...pieArcs, arcGenerator, setActiveId, toggleSerie }\n}\n\n/**\n * Compute pie layout using a box to find radius/innerRadius,\n * expressed in ratio (0~1), can optionally use the `fit`\n * attribute to find the most space efficient layout.\n *\n * It also returns `centerX`/`centerY` as those can be altered\n * if `fit` is `true`.\n */\nexport const usePieFromBox = <RawDatum>({\n    data,\n    width,\n    height,\n    innerRadius: innerRadiusRatio = defaultProps.innerRadius,\n    startAngle = defaultProps.startAngle,\n    endAngle = defaultProps.endAngle,\n    padAngle = defaultProps.padAngle,\n    sortByValue = defaultProps.sortByValue,\n    cornerRadius = defaultProps.cornerRadius,\n    fit = defaultProps.fit,\n    activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n    activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n    activeId: activeIdFromProps,\n    onActiveIdChange,\n    defaultActiveId,\n    forwardLegendData,\n}: Pick<\n    CompletePieSvgProps<RawDatum>,\n    | 'width'\n    | 'height'\n    | 'innerRadius'\n    | 'startAngle'\n    | 'endAngle'\n    | 'padAngle'\n    | 'sortByValue'\n    | 'cornerRadius'\n    | 'fit'\n    | 'activeInnerRadiusOffset'\n    | 'activeOuterRadiusOffset'\n> &\n    Pick<\n        Partial<CompletePieSvgProps<RawDatum>>,\n        'activeId' | 'onActiveIdChange' | 'defaultActiveId' | 'forwardLegendData'\n    > & {\n        data: Omit<ComputedDatum<RawDatum>, 'arc'>[]\n    }) => {\n    const { activeId, setActiveId } = useActiveId({\n        activeId: activeIdFromProps,\n        onActiveIdChange,\n        defaultActiveId,\n    })\n\n    const [hiddenIds, setHiddenIds] = useState<DatumId[]>([])\n    const computedProps = useMemo(() => {\n        let radius = Math.min(width, height) / 2\n        let innerRadius = radius * Math.min(innerRadiusRatio, 1)\n\n        let centerX = width / 2\n        let centerY = height / 2\n\n        let boundingBox\n        if (fit) {\n            const { points, ...box } = computeArcBoundingBox(\n                centerX,\n                centerY,\n                radius,\n                startAngle - 90,\n                endAngle - 90\n            )\n            const ratio = Math.min(width / box.width, height / box.height)\n\n            const adjustedBox: {\n                width: number\n                height: number\n                x?: number\n                y?: number\n            } = {\n                width: box.width * ratio,\n                height: box.height * ratio,\n            }\n            adjustedBox.x = (width - adjustedBox.width) / 2\n            adjustedBox.y = (height - adjustedBox.height) / 2\n\n            centerX = ((centerX - box.x) / box.width) * box.width * ratio + adjustedBox.x\n            centerY = ((centerY - box.y) / box.height) * box.height * ratio + adjustedBox.y\n\n            boundingBox = { box, ratio, points }\n\n            radius = radius * ratio\n            innerRadius = innerRadius * ratio\n        }\n\n        return {\n            centerX,\n            centerY,\n            radius,\n            innerRadius,\n            debug: boundingBox,\n        }\n    }, [width, height, innerRadiusRatio, startAngle, endAngle, fit])\n\n    const pieArcs = usePieArcs({\n        data,\n        startAngle,\n        endAngle,\n        innerRadius: computedProps.innerRadius,\n        outerRadius: computedProps.radius,\n        padAngle,\n        sortByValue,\n        activeId,\n        activeInnerRadiusOffset,\n        activeOuterRadiusOffset,\n        hiddenIds,\n        forwardLegendData,\n    })\n\n    const toggleSerie = useCallback((id: DatumId) => {\n        setHiddenIds(state =>\n            state.indexOf(id) > -1 ? state.filter(item => item !== id) : [...state, id]\n        )\n    }, [])\n\n    const arcGenerator = useArcGenerator({\n        cornerRadius,\n        padAngle: degreesToRadians(padAngle),\n    })\n\n    return {\n        arcGenerator,\n        activeId,\n        setActiveId,\n        toggleSerie,\n        ...pieArcs,\n        ...computedProps,\n    }\n}\n\n/**\n * Memoize the context to pass to custom layers.\n */\nexport const usePieLayerContext = <RawDatum>({\n    dataWithArc,\n    arcGenerator,\n    centerX,\n    centerY,\n    radius,\n    innerRadius,\n}: PieCustomLayerProps<RawDatum>): PieCustomLayerProps<RawDatum> =>\n    useMemo(\n        () => ({\n            dataWithArc,\n            arcGenerator,\n            centerX,\n            centerY,\n            radius,\n            innerRadius,\n        }),\n        [dataWithArc, arcGenerator, centerX, centerY, radius, innerRadius]\n    )\n","import { createElement, useMemo } from 'react'\nimport * as React from 'react'\nimport { ArcGenerator, ArcsLayer } from '@nivo/arcs'\nimport { useTooltip } from '@nivo/tooltip'\nimport { ComputedDatum, CompletePieSvgProps } from './types'\n\ninterface ArcsProps<RawDatum> {\n    center: [number, number]\n    data: ComputedDatum<RawDatum>[]\n    arcGenerator: ArcGenerator\n    borderWidth: CompletePieSvgProps<RawDatum>['borderWidth']\n    borderColor: CompletePieSvgProps<RawDatum>['borderColor']\n    isInteractive: CompletePieSvgProps<RawDatum>['isInteractive']\n    onClick?: CompletePieSvgProps<RawDatum>['onClick']\n    onMouseEnter?: CompletePieSvgProps<RawDatum>['onMouseEnter']\n    onMouseMove?: CompletePieSvgProps<RawDatum>['onMouseMove']\n    onMouseLeave?: CompletePieSvgProps<RawDatum>['onMouseLeave']\n    setActiveId: (id: null | string | number) => void\n    tooltip: CompletePieSvgProps<RawDatum>['tooltip']\n    transitionMode: CompletePieSvgProps<RawDatum>['transitionMode']\n}\n\nexport const Arcs = <RawDatum,>({\n    center,\n    data,\n    arcGenerator,\n    borderWidth,\n    borderColor,\n    isInteractive,\n    onClick,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    setActiveId,\n    tooltip,\n    transitionMode,\n}: ArcsProps<RawDatum>) => {\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleClick = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n            onClick?.(datum, event)\n        }\n    }, [isInteractive, onClick])\n\n    const handleMouseEnter = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n            showTooltipFromEvent(createElement(tooltip, { datum }), event)\n            setActiveId(datum.id)\n            onMouseEnter?.(datum, event)\n        }\n    }, [isInteractive, showTooltipFromEvent, setActiveId, onMouseEnter, tooltip])\n\n    const handleMouseMove = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n            showTooltipFromEvent(createElement(tooltip, { datum }), event)\n            onMouseMove?.(datum, event)\n        }\n    }, [isInteractive, showTooltipFromEvent, onMouseMove, tooltip])\n\n    const handleMouseLeave = useMemo(() => {\n        if (!isInteractive) return undefined\n\n        return (datum: ComputedDatum<RawDatum>, event: React.MouseEvent<SVGPathElement>) => {\n            hideTooltip()\n            setActiveId(null)\n            onMouseLeave?.(datum, event)\n        }\n    }, [isInteractive, hideTooltip, setActiveId, onMouseLeave])\n\n    return (\n        <ArcsLayer<ComputedDatum<RawDatum>>\n            center={center}\n            data={data}\n            arcGenerator={arcGenerator}\n            borderWidth={borderWidth}\n            borderColor={borderColor}\n            transitionMode={transitionMode}\n            onClick={handleClick}\n            onMouseEnter={handleMouseEnter}\n            onMouseMove={handleMouseMove}\n            onMouseLeave={handleMouseLeave}\n        />\n    )\n}\n","import { ReactNode, Fragment, createElement, forwardRef, Ref, ReactElement } from 'react'\nimport {\n    // @ts-expect-error no types\n    bindDefs,\n    useDimensions,\n    Container,\n    SvgWrapper,\n    WithChartRef,\n} from '@nivo/core'\nimport { ArcLabelsLayer, ArcLinkLabelsLayer } from '@nivo/arcs'\nimport { InheritedColorConfig } from '@nivo/colors'\nimport { PieLegends } from './PieLegends'\nimport { useNormalizedData, usePieFromBox, usePieLayerContext } from './hooks'\nimport { ComputedDatum, PieLayer, PieSvgProps, PieLayerId, MayHaveLabel } from './types'\nimport { defaultProps } from './props'\nimport { Arcs } from './Arcs'\n\nconst InnerPie = <RawDatum extends MayHaveLabel>({\n    data,\n    id = defaultProps.id,\n    value = defaultProps.value,\n    valueFormat,\n    sortByValue = defaultProps.sortByValue,\n    layers = defaultProps.layers as PieLayer<RawDatum>[],\n    startAngle = defaultProps.startAngle,\n    endAngle = defaultProps.endAngle,\n    padAngle = defaultProps.padAngle,\n    fit = defaultProps.fit,\n    innerRadius: innerRadiusRatio = defaultProps.innerRadius,\n    cornerRadius = defaultProps.cornerRadius,\n    activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n    activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n    width,\n    height,\n    margin: partialMargin,\n    colors = defaultProps.colors,\n    borderWidth = defaultProps.borderWidth,\n    borderColor = defaultProps.borderColor as InheritedColorConfig<ComputedDatum<RawDatum>>,\n    enableArcLabels = defaultProps.enableArcLabels,\n    arcLabel = defaultProps.arcLabel,\n    arcLabelsSkipAngle = defaultProps.arcLabelsSkipAngle,\n    arcLabelsSkipRadius = defaultProps.arcLabelsSkipRadius,\n    arcLabelsTextColor = defaultProps.arcLabelsTextColor,\n    arcLabelsRadiusOffset = defaultProps.arcLabelsRadiusOffset,\n    arcLabelsComponent,\n    enableArcLinkLabels = defaultProps.enableArcLinkLabels,\n    arcLinkLabel = defaultProps.arcLinkLabel,\n    arcLinkLabelsSkipAngle = defaultProps.arcLinkLabelsSkipAngle,\n    arcLinkLabelsOffset = defaultProps.arcLinkLabelsOffset,\n    arcLinkLabelsDiagonalLength = defaultProps.arcLinkLabelsDiagonalLength,\n    arcLinkLabelsStraightLength = defaultProps.arcLinkLabelsStraightLength,\n    arcLinkLabelsThickness = defaultProps.arcLinkLabelsThickness,\n    arcLinkLabelsTextOffset = defaultProps.arcLinkLabelsTextOffset,\n    arcLinkLabelsTextColor = defaultProps.arcLinkLabelsTextColor,\n    arcLinkLabelsColor = defaultProps.arcLinkLabelsColor,\n    arcLinkLabelComponent,\n    defs = defaultProps.defs,\n    fill = defaultProps.fill,\n    isInteractive = defaultProps.isInteractive,\n    onClick,\n    onMouseEnter,\n    onMouseMove,\n    onMouseLeave,\n    tooltip = defaultProps.tooltip,\n    activeId: activeIdFromProps,\n    onActiveIdChange,\n    defaultActiveId,\n    transitionMode = defaultProps.transitionMode,\n    legends = defaultProps.legends,\n    forwardLegendData,\n    role = defaultProps.role,\n    forwardedRef,\n}: PieSvgProps<RawDatum> & {\n    forwardedRef: Ref<SVGSVGElement>\n}) => {\n    const { outerWidth, outerHeight, margin, innerWidth, innerHeight } = useDimensions(\n        width,\n        height,\n        partialMargin\n    )\n\n    const normalizedData = useNormalizedData<RawDatum>({\n        data,\n        id,\n        value,\n        valueFormat,\n        colors,\n    })\n\n    const {\n        dataWithArc,\n        legendData,\n        arcGenerator,\n        centerX,\n        centerY,\n        radius,\n        innerRadius,\n        setActiveId,\n        toggleSerie,\n    } = usePieFromBox<RawDatum>({\n        data: normalizedData,\n        width: innerWidth,\n        height: innerHeight,\n        fit,\n        innerRadius: innerRadiusRatio,\n        startAngle,\n        endAngle,\n        padAngle,\n        sortByValue,\n        cornerRadius,\n        activeInnerRadiusOffset,\n        activeOuterRadiusOffset,\n        activeId: activeIdFromProps,\n        onActiveIdChange,\n        defaultActiveId,\n        forwardLegendData,\n    })\n\n    const boundDefs = bindDefs(defs, dataWithArc, fill)\n\n    const layerById: Record<PieLayerId, ReactNode> = {\n        arcs: null,\n        arcLinkLabels: null,\n        arcLabels: null,\n        legends: null,\n    }\n\n    if (layers.includes('arcs')) {\n        layerById.arcs = (\n            <Arcs<RawDatum>\n                key=\"arcs\"\n                center={[centerX, centerY]}\n                data={dataWithArc}\n                arcGenerator={arcGenerator}\n                borderWidth={borderWidth}\n                borderColor={borderColor}\n                isInteractive={isInteractive}\n                onClick={onClick}\n                onMouseEnter={onMouseEnter}\n                onMouseMove={onMouseMove}\n                onMouseLeave={onMouseLeave}\n                setActiveId={setActiveId}\n                tooltip={tooltip}\n                transitionMode={transitionMode}\n            />\n        )\n    }\n\n    if (enableArcLinkLabels && layers.includes('arcLinkLabels')) {\n        layerById.arcLinkLabels = (\n            <ArcLinkLabelsLayer<ComputedDatum<RawDatum>>\n                key=\"arcLinkLabels\"\n                center={[centerX, centerY]}\n                data={dataWithArc}\n                label={arcLinkLabel}\n                skipAngle={arcLinkLabelsSkipAngle}\n                offset={arcLinkLabelsOffset}\n                diagonalLength={arcLinkLabelsDiagonalLength}\n                straightLength={arcLinkLabelsStraightLength}\n                strokeWidth={arcLinkLabelsThickness}\n                textOffset={arcLinkLabelsTextOffset}\n                textColor={arcLinkLabelsTextColor}\n                linkColor={arcLinkLabelsColor}\n                component={arcLinkLabelComponent}\n            />\n        )\n    }\n\n    if (enableArcLabels && layers.includes('arcLabels')) {\n        layerById.arcLabels = (\n            <ArcLabelsLayer<ComputedDatum<RawDatum>>\n                key=\"arcLabels\"\n                center={[centerX, centerY]}\n                data={dataWithArc}\n                label={arcLabel}\n                radiusOffset={arcLabelsRadiusOffset}\n                skipAngle={arcLabelsSkipAngle}\n                skipRadius={arcLabelsSkipRadius}\n                textColor={arcLabelsTextColor}\n                transitionMode={transitionMode}\n                component={arcLabelsComponent}\n            />\n        )\n    }\n\n    if (legends.length > 0 && layers.includes('legends')) {\n        layerById.legends = (\n            <PieLegends<RawDatum>\n                key=\"legends\"\n                width={innerWidth}\n                height={innerHeight}\n                data={legendData}\n                legends={legends}\n                toggleSerie={toggleSerie}\n            />\n        )\n    }\n\n    const layerContext = usePieLayerContext<RawDatum>({\n        dataWithArc,\n        arcGenerator,\n        centerX,\n        centerY,\n        radius,\n        innerRadius,\n    })\n\n    return (\n        <SvgWrapper\n            width={outerWidth}\n            height={outerHeight}\n            margin={margin}\n            defs={boundDefs}\n            role={role}\n            ref={forwardedRef}\n        >\n            {layers.map((layer, i) => {\n                if (layerById[layer as PieLayerId] !== undefined) {\n                    return layerById[layer as PieLayerId]\n                }\n\n                if (typeof layer === 'function') {\n                    return <Fragment key={i}>{createElement(layer, layerContext)}</Fragment>\n                }\n\n                return null\n            })}\n        </SvgWrapper>\n    )\n}\n\nexport const Pie = forwardRef(\n    <RawDatum extends MayHaveLabel>(\n        {\n            isInteractive = defaultProps.isInteractive,\n            animate = defaultProps.animate,\n            motionConfig = defaultProps.motionConfig,\n            theme,\n            renderWrapper,\n            ...otherProps\n        }: PieSvgProps<RawDatum>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <Container\n            animate={animate}\n            isInteractive={isInteractive}\n            motionConfig={motionConfig}\n            renderWrapper={renderWrapper}\n            theme={theme}\n        >\n            <InnerPie<RawDatum> isInteractive={isInteractive} {...otherProps} forwardedRef={ref} />\n        </Container>\n    )\n) as <RawDatum extends MayHaveLabel>(\n    props: WithChartRef<PieSvgProps<RawDatum>, SVGSVGElement>\n) => ReactElement\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { Pie } from './Pie'\nimport { PieSvgProps, MayHaveLabel } from './types'\n\nexport const ResponsivePie = forwardRef(\n    <RawDatum extends MayHaveLabel>(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<PieSvgProps<RawDatum>>,\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                <Pie<RawDatum> width={width} height={height} {...props} ref={ref} />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <RawDatum extends MayHaveLabel>(\n    props: WithChartRef<ResponsiveProps<PieSvgProps<RawDatum>>, SVGSVGElement>\n) => ReactElement\n","import {\n    createElement,\n    useEffect,\n    useMemo,\n    useRef,\n    MouseEvent,\n    forwardRef,\n    Ref,\n    ReactElement,\n} from 'react'\nimport { getRelativeCursor, useDimensions, Container, WithChartRef, mergeRefs } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { renderLegendToCanvas } from '@nivo/legends'\nimport { useInheritedColor, InheritedColorConfig } from '@nivo/colors'\nimport { useTooltip } from '@nivo/tooltip'\nimport {\n    Arc,\n    findArcUnderCursor,\n    useArcLabels,\n    drawCanvasArcLabels,\n    useArcLinkLabels,\n    drawCanvasArcLinkLabels,\n} from '@nivo/arcs'\nimport { useNormalizedData, usePieFromBox } from './hooks'\nimport { ComputedDatum, PieCanvasProps, MayHaveLabel } from './types'\nimport { defaultProps } from './props'\n\nconst InnerPieCanvas = <RawDatum extends MayHaveLabel>({\n    data,\n    id = defaultProps.id,\n    value = defaultProps.value,\n    valueFormat,\n    sortByValue = defaultProps.sortByValue,\n    startAngle = defaultProps.startAngle,\n    endAngle = defaultProps.endAngle,\n    padAngle = defaultProps.padAngle,\n    fit = defaultProps.fit,\n    innerRadius: innerRadiusRatio = defaultProps.innerRadius,\n    cornerRadius = defaultProps.cornerRadius,\n    activeInnerRadiusOffset = defaultProps.activeInnerRadiusOffset,\n    activeOuterRadiusOffset = defaultProps.activeOuterRadiusOffset,\n    width,\n    height,\n    margin: partialMargin,\n    pixelRatio = defaultProps.pixelRatio,\n    colors = defaultProps.colors,\n    borderWidth = defaultProps.borderWidth,\n    borderColor = defaultProps.borderColor as InheritedColorConfig<ComputedDatum<RawDatum>>,\n    enableArcLabels = defaultProps.enableArcLabels,\n    arcLabel = defaultProps.arcLabel,\n    arcLabelsSkipAngle = defaultProps.arcLabelsSkipAngle,\n    arcLabelsTextColor = defaultProps.arcLabelsTextColor,\n    arcLabelsRadiusOffset = defaultProps.arcLabelsRadiusOffset,\n    enableArcLinkLabels = defaultProps.enableArcLinkLabels,\n    arcLinkLabel = defaultProps.arcLinkLabel,\n    arcLinkLabelsSkipAngle = defaultProps.arcLinkLabelsSkipAngle,\n    arcLinkLabelsOffset = defaultProps.arcLinkLabelsOffset,\n    arcLinkLabelsDiagonalLength = defaultProps.arcLinkLabelsDiagonalLength,\n    arcLinkLabelsStraightLength = defaultProps.arcLinkLabelsStraightLength,\n    arcLinkLabelsThickness = defaultProps.arcLinkLabelsThickness,\n    arcLinkLabelsTextOffset = defaultProps.arcLinkLabelsTextOffset,\n    arcLinkLabelsTextColor = defaultProps.arcLinkLabelsTextColor,\n    arcLinkLabelsColor = defaultProps.arcLinkLabelsColor,\n    isInteractive = defaultProps.isInteractive,\n    onClick,\n    onMouseMove,\n    tooltip = defaultProps.tooltip,\n    activeId: activeIdFromProps,\n    onActiveIdChange,\n    defaultActiveId,\n    legends = defaultProps.legends,\n    forwardLegendData,\n    role,\n    forwardedRef,\n}: PieCanvasProps<RawDatum> & {\n    forwardedRef: Ref<HTMLCanvasElement>\n}) => {\n    const canvasEl = useRef<HTMLCanvasElement | null>(null)\n    const theme = useTheme()\n\n    const { margin, innerWidth, innerHeight, outerWidth, outerHeight } = useDimensions(\n        width,\n        height,\n        partialMargin\n    )\n\n    const normalizedData = useNormalizedData<RawDatum>({\n        data,\n        id,\n        value,\n        valueFormat,\n        colors,\n    })\n\n    const { dataWithArc, arcGenerator, centerX, centerY, radius, innerRadius, setActiveId } =\n        usePieFromBox<RawDatum>({\n            data: normalizedData,\n            width: innerWidth,\n            height: innerHeight,\n            fit,\n            innerRadius: innerRadiusRatio,\n            startAngle,\n            endAngle,\n            padAngle,\n            sortByValue,\n            cornerRadius,\n            activeInnerRadiusOffset,\n            activeOuterRadiusOffset,\n            activeId: activeIdFromProps,\n            onActiveIdChange,\n            defaultActiveId,\n            forwardLegendData,\n        })\n\n    const getBorderColor = useInheritedColor<ComputedDatum<RawDatum>>(borderColor, theme)\n\n    const arcLabels = useArcLabels<ComputedDatum<RawDatum>>({\n        data: dataWithArc,\n        label: arcLabel,\n        skipAngle: arcLabelsSkipAngle,\n        offset: arcLabelsRadiusOffset,\n        textColor: arcLabelsTextColor,\n    })\n\n    const arcLinkLabels = useArcLinkLabels<ComputedDatum<RawDatum>>({\n        data: dataWithArc,\n        skipAngle: arcLinkLabelsSkipAngle,\n        offset: arcLinkLabelsOffset,\n        diagonalLength: arcLinkLabelsDiagonalLength,\n        straightLength: arcLinkLabelsStraightLength,\n        label: arcLinkLabel,\n        linkColor: arcLinkLabelsColor,\n        textOffset: arcLinkLabelsTextOffset,\n        textColor: arcLinkLabelsTextColor,\n    })\n\n    useEffect(() => {\n        if (!canvasEl.current) 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\n        ctx.save()\n        ctx.translate(margin.left, margin.top)\n        arcGenerator.context(ctx)\n\n        ctx.save()\n        ctx.translate(centerX, centerY)\n\n        dataWithArc.forEach(arc => {\n            ctx.beginPath()\n            ctx.fillStyle = arc.color\n\n            ctx.strokeStyle = getBorderColor(arc)\n            ctx.lineWidth = borderWidth\n\n            arcGenerator(arc.arc)\n\n            ctx.fill()\n\n            if (borderWidth > 0) {\n                ctx.stroke()\n            }\n        })\n\n        if (enableArcLinkLabels === true) {\n            drawCanvasArcLinkLabels<ComputedDatum<RawDatum>>(\n                ctx,\n                arcLinkLabels,\n                theme,\n                arcLinkLabelsThickness\n            )\n        }\n\n        if (enableArcLabels === true) {\n            drawCanvasArcLabels<ComputedDatum<RawDatum>>(ctx, arcLabels, theme)\n        }\n\n        // legends assume a box rather than a center,\n        // that's why we restore previously saved position here.\n        ctx.restore()\n        legends.forEach(legend => {\n            renderLegendToCanvas(ctx, {\n                ...legend,\n                data: dataWithArc,\n                containerWidth: innerWidth,\n                containerHeight: innerHeight,\n                theme,\n            })\n        })\n    }, [\n        canvasEl,\n        innerWidth,\n        innerHeight,\n        outerWidth,\n        outerHeight,\n        margin.top,\n        margin.left,\n        pixelRatio,\n        centerX,\n        centerY,\n        arcGenerator,\n        dataWithArc,\n        borderWidth,\n        getBorderColor,\n        enableArcLabels,\n        arcLabels,\n        enableArcLinkLabels,\n        arcLinkLabels,\n        arcLinkLabelsThickness,\n        legends,\n        theme,\n    ])\n\n    const arcs = useMemo(\n        () =>\n            dataWithArc.map(datum => ({\n                id: datum.id,\n                ...datum.arc,\n            })),\n        [dataWithArc]\n    )\n\n    const getArcFromMouse = (event: MouseEvent<HTMLCanvasElement>) => {\n        if (!canvasEl.current) return null\n\n        const [x, y] = getRelativeCursor(canvasEl.current, event)\n\n        const hoveredArc = findArcUnderCursor<Arc & { id: string | number }>(\n            margin.left + centerX,\n            margin.top + centerY,\n            radius,\n            innerRadius,\n            arcs,\n            x,\n            y\n        )\n\n        if (!hoveredArc) return null\n\n        return dataWithArc.find(datum => datum.id === hoveredArc.id)\n    }\n\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleMouseHover = (event: MouseEvent<HTMLCanvasElement>) => {\n        const datum = getArcFromMouse(event)\n        if (datum) {\n            onMouseMove?.(datum, event)\n            setActiveId(datum.id)\n            showTooltipFromEvent(createElement(tooltip, { datum }), event)\n        } else {\n            setActiveId(null)\n            hideTooltip()\n        }\n    }\n\n    const handleMouseLeave = () => {\n        hideTooltip()\n    }\n\n    const handleClick = (event: MouseEvent<HTMLCanvasElement>) => {\n        if (!onClick) return\n\n        const arc = getArcFromMouse(event)\n        if (arc) {\n            onClick(arc, event)\n        }\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                cursor: isInteractive ? 'auto' : 'normal',\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        />\n    )\n}\n\nexport const PieCanvas = forwardRef(\n    <RawDatum extends MayHaveLabel>(\n        {\n            isInteractive = defaultProps.isInteractive,\n            theme,\n            renderWrapper,\n            ...otherProps\n        }: PieCanvasProps<RawDatum>,\n        ref: Ref<HTMLCanvasElement>\n    ) => (\n        <Container {...{ isInteractive, renderWrapper, theme }}>\n            <InnerPieCanvas<RawDatum>\n                isInteractive={isInteractive}\n                {...otherProps}\n                forwardedRef={ref}\n            />\n        </Container>\n    )\n) as <RawDatum extends MayHaveLabel>(\n    props: WithChartRef<PieCanvasProps<RawDatum>, HTMLCanvasElement>\n) => ReactElement\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { PieCanvas } from './PieCanvas'\nimport { PieCanvasProps, MayHaveLabel } from './types'\n\nexport const ResponsivePieCanvas = forwardRef(\n    <RawDatum extends MayHaveLabel>(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<PieCanvasProps<RawDatum>>,\n        ref: Ref<HTMLCanvasElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultHeight}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }: { width: number; height: number }) => (\n                <PieCanvas<RawDatum> width={width} height={height} {...props} ref={ref} />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <RawDatum extends MayHaveLabel>(\n    props: WithChartRef<ResponsiveProps<PieCanvasProps<RawDatum>>, HTMLCanvasElement>\n) => ReactElement\n"],"names":["PieLegends","_ref","width","height","legends","data","toggleSerie","_jsx","_Fragment","children","map","legend","i","_legend$data","BoxLegendSvg","_extends","containerWidth","containerHeight","undefined","defaultProps","id","value","sortByValue","innerRadius","padAngle","cornerRadius","layers","startAngle","endAngle","fit","activeInnerRadiusOffset","activeOuterRadiusOffset","borderWidth","borderColor","from","modifiers","enableArcLabels","arcLabel","arcLabelsSkipAngle","arcLabelsSkipRadius","arcLabelsRadiusOffset","arcLabelsTextColor","theme","enableArcLinkLabels","arcLinkLabel","arcLinkLabelsSkipAngle","arcLinkLabelsOffset","arcLinkLabelsDiagonalLength","arcLinkLabelsStraightLength","arcLinkLabelsThickness","arcLinkLabelsTextOffset","arcLinkLabelsTextColor","arcLinkLabelsColor","colors","scheme","defs","fill","isInteractive","animate","motionConfig","transitionMode","tooltip","datum","BasicTooltip","formattedValue","enableChip","color","role","pixelRatio","window","_window$devicePixelRa","devicePixelRatio","useNormalizedData","_ref$id","_ref$value","valueFormat","_ref$colors","getId","usePropertyAccessor","getValue","formatValue","useValueFormatter","getColor","useOrdinalColorScale","useMemo","_datum$label","datumId","datumValue","normalizedDatum","label","hidden","usePieArcs","_ref2","outerRadius","activeId","hiddenIds","forwardLegendData","pie","innerPie","d3Pie","d","degreesToRadians","sortValues","result","hiddenData","filter","item","includes","dataWithArc","arc","angle","Math","abs","index","thickness","angleDeg","radiansToDegrees","legendData","forwardLegendDataRef","useRef","useEffect","current","useActiveId","_ref3","activeIdFromProps","onActiveIdChange","_ref3$defaultActiveId","defaultActiveId","isControlled","_useState","useState","internalActiveId","setInternalActiveId","setActiveId","useCallback","usePie","_ref4","radius","_ref4$startAngle","_ref4$endAngle","_ref4$padAngle","_ref4$sortByValue","_ref4$cornerRadius","_ref4$activeInnerRadi","_ref4$activeOuterRadi","_useActiveId","_useState2","setHiddenIds","pieArcs","state","indexOf","concat","arcGenerator","useArcGenerator","usePieFromBox","_ref5","_ref5$innerRadius","innerRadiusRatio","_ref5$startAngle","_ref5$endAngle","_ref5$padAngle","_ref5$sortByValue","_ref5$cornerRadius","_ref5$fit","_ref5$activeInnerRadi","_ref5$activeOuterRadi","_useActiveId2","_useState3","computedProps","boundingBox","min","centerX","centerY","_computeArcBoundingBo","computeArcBoundingBox","points","box","_objectWithoutPropertiesLoose","_excluded","ratio","adjustedBox","x","y","debug","usePieLayerContext","_ref6","Arcs","center","onClick","onMouseEnter","onMouseMove","onMouseLeave","_useTooltip","useTooltip","showTooltipFromEvent","hideTooltip","handleClick","event","handleMouseEnter","createElement","handleMouseMove","handleMouseLeave","ArcsLayer","InnerPie","_ref$sortByValue","_ref$layers","_ref$startAngle","_ref$endAngle","_ref$padAngle","_ref$fit","_ref$innerRadius","_ref$cornerRadius","_ref$activeInnerRadiu","_ref$activeOuterRadiu","partialMargin","margin","_ref$borderWidth","_ref$borderColor","_ref$enableArcLabels","_ref$arcLabel","_ref$arcLabelsSkipAng","_ref$arcLabelsSkipRad","_ref$arcLabelsTextCol","_ref$arcLabelsRadiusO","arcLabelsComponent","_ref$enableArcLinkLab","_ref$arcLinkLabel","_ref$arcLinkLabelsSki","_ref$arcLinkLabelsOff","_ref$arcLinkLabelsDia","_ref$arcLinkLabelsStr","_ref$arcLinkLabelsThi","_ref$arcLinkLabelsTex","_ref$arcLinkLabelsTex2","_ref$arcLinkLabelsCol","arcLinkLabelComponent","_ref$defs","_ref$fill","_ref$isInteractive","_ref$tooltip","_ref$transitionMode","_ref$legends","_ref$role","forwardedRef","_useDimensions","useDimensions","outerWidth","outerHeight","innerWidth","innerHeight","normalizedData","_usePieFromBox","boundDefs","bindDefs","layerById","arcs","arcLinkLabels","arcLabels","ArcLinkLabelsLayer","skipAngle","offset","diagonalLength","straightLength","strokeWidth","textOffset","textColor","linkColor","component","ArcLabelsLayer","radiusOffset","skipRadius","length","layerContext","SvgWrapper","ref","layer","Fragment","Pie","forwardRef","_ref2$isInteractive","_ref2$animate","_ref2$motionConfig","renderWrapper","otherProps","Container","ResponsivePie","defaultWidth","defaultHeight","onResize","debounceResize","props","ResponsiveWrapper","InnerPieCanvas","_ref$pixelRatio","canvasEl","useTheme","getBorderColor","useInheritedColor","useArcLabels","useArcLinkLabels","ctx","getContext","scale","fillStyle","background","fillRect","save","translate","left","top","context","forEach","beginPath","strokeStyle","lineWidth","stroke","drawCanvasArcLinkLabels","drawCanvasArcLabels","restore","renderLegendToCanvas","getArcFromMouse","_getRelativeCursor","getRelativeCursor","hoveredArc","findArcUnderCursor","find","handleMouseHover","mergeRefs","style","cursor","PieCanvas","ResponsivePieCanvas"],"mappings":"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"}