{"version":3,"file":"nivo-radar.mjs","sources":["../src/RadarLayer.tsx","../src/RadarGridLabels.tsx","../src/RadarGridLevels.tsx","../src/RadarGrid.tsx","../src/RadarSlice.tsx","../src/RadarSlices.tsx","../src/RadarDots.tsx","../src/defaults.ts","../src/RadarGridLabel.tsx","../src/RadarSliceTooltip.tsx","../src/Radar.tsx","../src/hooks.ts","../src/ResponsiveRadar.tsx"],"sourcesContent":["import { useMemo } from 'react'\nimport { useSpring, animated } from '@react-spring/web'\nimport { lineRadial, CurveFactory } from 'd3-shape'\nimport { ScaleLinear } from 'd3-scale'\nimport { useMotionConfig, useAnimatedPath } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { useInheritedColor } from '@nivo/colors'\nimport { RadarCommonProps, RadarSvgProps } from './types'\n\ninterface RadarLayerProps<D extends Record<string, unknown>> {\n    data: readonly D[]\n    item: string\n    colorByKey: Record<string | number, string>\n    fillByKey: Record<string, string | null>\n    radiusScale: ScaleLinear<number, number>\n    rotation: number\n    angleStep: number\n    curveFactory: CurveFactory\n    borderWidth: RadarCommonProps<D>['borderWidth']\n    borderColor: RadarCommonProps<D>['borderColor']\n    fillOpacity: RadarCommonProps<D>['fillOpacity']\n    blendMode: RadarCommonProps<D>['blendMode']\n    onClick?: RadarSvgProps<D>['onClick']\n}\n\nexport const RadarLayer = <D extends Record<string, unknown>>({\n    data,\n    item: key,\n    colorByKey,\n    fillByKey,\n    radiusScale,\n    rotation,\n    angleStep,\n    curveFactory,\n    borderWidth,\n    borderColor,\n    fillOpacity,\n    blendMode,\n}: RadarLayerProps<D>) => {\n    const theme = useTheme()\n    const getBorderColor = useInheritedColor(borderColor, theme)\n\n    const lineGenerator = useMemo(() => {\n        return lineRadial<number>()\n            .radius(d => radiusScale(d))\n            .angle((_, i) => rotation + i * angleStep)\n            .curve(curveFactory)\n    }, [radiusScale, rotation, angleStep, curveFactory])\n\n    const { animate, config: springConfig } = useMotionConfig()\n    const animatedPath = useAnimatedPath(lineGenerator(data.map(d => d[key] as number)) as string)\n    const animatedProps = useSpring<{ fill: string; stroke: string }>({\n        fill: colorByKey[key],\n        stroke: getBorderColor({ key, color: colorByKey[key] }),\n        config: springConfig,\n        immediate: !animate,\n    })\n    const fill = fillByKey[key] ?? animatedProps.fill\n\n    return (\n        <animated.path\n            key={key}\n            d={animatedPath}\n            fill={fill}\n            fillOpacity={fillOpacity}\n            stroke={animatedProps.stroke}\n            strokeWidth={borderWidth}\n            style={{ mixBlendMode: blendMode }}\n        />\n    )\n}\n","import { createElement } from 'react'\nimport { useSprings } from '@react-spring/web'\nimport { useMotionConfig, positionFromAngle, radiansToDegrees } from '@nivo/core'\nimport { GridLabelComponent } from './types'\n\nconst textAnchorFromAngle = (_angle: number) => {\n    const angle = radiansToDegrees(_angle) + 90\n\n    if (angle <= 10 || angle >= 350 || (angle >= 170 && angle <= 190)) return 'middle' as const\n    if (angle > 180) return 'end' as const\n    return 'start' as const\n}\n\ninterface RadarGridLabelsProps {\n    radius: number\n    angles: number[]\n    indices: string[]\n    label: GridLabelComponent\n    labelOffset: number\n}\n\nexport const RadarGridLabels = ({\n    radius,\n    angles,\n    indices,\n    label: labelComponent,\n    labelOffset,\n}: RadarGridLabelsProps) => {\n    const { animate, config: springConfig } = useMotionConfig()\n\n    const labels = indices.map((index, i) => {\n        const position = positionFromAngle(angles[i], radius + labelOffset)\n        const textAnchor = textAnchorFromAngle(angles[i])\n\n        return {\n            id: index,\n            angle: radiansToDegrees(angles[i]),\n            anchor: textAnchor,\n            ...position,\n        }\n    })\n\n    const springs = useSprings(\n        labels.length,\n        labels.map(label => ({\n            transform: `translate(${label.x}, ${label.y})`,\n            config: springConfig,\n            immediate: !animate,\n        }))\n    )\n\n    return (\n        <>\n            {springs.map((animatedProps, index) => {\n                const label = labels[index]\n\n                return createElement(labelComponent, {\n                    key: label.id,\n                    id: label.id,\n                    anchor: label.anchor,\n                    angle: label.angle,\n                    x: label.x,\n                    y: label.y,\n                    animated: animatedProps,\n                })\n            })}\n        </>\n    )\n}\n","import { memo, SVGProps, useMemo } from 'react'\nimport { lineRadial, curveLinearClosed } from 'd3-shape'\nimport { animated, useSpring, to } from '@react-spring/web'\nimport { useAnimatedPath, useMotionConfig } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { RadarCommonProps } from './types'\n\ninterface RadarGridLevelCircularProps {\n    radius: number\n}\n\nconst RadarGridLevelCircular = memo(({ radius }: RadarGridLevelCircularProps) => {\n    const theme = useTheme()\n    const { animate, config: springConfig } = useMotionConfig()\n\n    const animatedProps = useSpring({\n        radius,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    return (\n        <animated.circle\n            fill=\"none\"\n            r={to(animatedProps.radius, value => Math.max(value, 0))}\n            {...(theme.grid.line as Omit<SVGProps<SVGCircleElement>, 'ref'>)}\n        />\n    )\n})\n\ninterface RadarGridLevelLinearProps {\n    radius: number\n    rotation: number\n    angleStep: number\n    dataLength: number\n}\n\nconst RadarGridLevelLinear = ({\n    radius,\n    rotation,\n    angleStep,\n    dataLength,\n}: RadarGridLevelLinearProps) => {\n    const theme = useTheme()\n\n    const radarLineGenerator = useMemo(\n        () =>\n            lineRadial<number>()\n                .angle(i => rotation + i * angleStep)\n                .radius(radius)\n                .curve(curveLinearClosed),\n        [rotation, angleStep, radius]\n    )\n\n    const points = Array.from({ length: dataLength }, (_, i) => i)\n    const animatedPath = useAnimatedPath(radarLineGenerator(points) as string)\n\n    return (\n        <animated.path\n            fill=\"none\"\n            d={animatedPath}\n            {...(theme.grid.line as Omit<SVGProps<SVGPathElement>, 'ref'>)}\n        />\n    )\n}\n\ninterface RadarGridLevelsProps<D extends Record<string, unknown>> {\n    shape: RadarCommonProps<D>['gridShape']\n    radius: number\n    rotation: number\n    angleStep: number\n    dataLength: number\n}\n\nexport const RadarGridLevels = <D extends Record<string, unknown>>({\n    shape,\n    ...props\n}: RadarGridLevelsProps<D>) => {\n    return shape === 'circular' ? (\n        <RadarGridLevelCircular radius={props.radius} />\n    ) : (\n        <RadarGridLevelLinear {...props} />\n    )\n}\n","import { SVGProps, useMemo } from 'react'\nimport { positionFromAngle } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { RadarGridLabels } from './RadarGridLabels'\nimport { RadarGridLevels } from './RadarGridLevels'\nimport { GridLabelComponent, RadarCommonProps } from './types'\n\ninterface RadarGridProps<D extends Record<string, unknown>> {\n    indices: string[]\n    shape: RadarCommonProps<D>['gridShape']\n    radius: number\n    levels: number\n    rotation: number\n    angleStep: number\n    label: GridLabelComponent\n    labelOffset: number\n}\n\nexport const RadarGrid = <D extends Record<string, unknown>>({\n    indices,\n    levels,\n    shape,\n    radius,\n    rotation,\n    angleStep,\n    label,\n    labelOffset,\n}: RadarGridProps<D>) => {\n    const theme = useTheme()\n    const { radii, angles } = useMemo(() => {\n        return {\n            radii: Array.from({ length: levels })\n                .map((_, i) => (radius / levels) * (i + 1))\n                .reverse(),\n            angles: Array.from({ length: indices.length }).map(\n                (_, i) => rotation + i * angleStep - Math.PI / 2\n            ),\n        }\n    }, [indices, levels, radius, rotation, angleStep])\n\n    return (\n        <>\n            {angles.map((angle, i) => {\n                const position = positionFromAngle(angle, radius)\n                return (\n                    <line\n                        key={`axis.${i}`}\n                        x1={0}\n                        y1={0}\n                        x2={position.x}\n                        y2={position.y}\n                        {...(theme.grid.line as SVGProps<SVGLineElement>)}\n                    />\n                )\n            })}\n            {radii.map((radius, i) => (\n                <RadarGridLevels<D>\n                    key={`level.${i}`}\n                    shape={shape}\n                    radius={radius}\n                    rotation={rotation}\n                    angleStep={angleStep}\n                    dataLength={indices.length}\n                />\n            ))}\n            <RadarGridLabels\n                radius={radius}\n                angles={angles}\n                indices={indices}\n                labelOffset={labelOffset}\n                label={label}\n            />\n        </>\n    )\n}\n","import { useMemo, useState, useCallback, createElement, MouseEvent } from 'react'\nimport { Arc } from 'd3-shape'\nimport { positionFromAngle } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { useTooltip } from '@nivo/tooltip'\nimport { RadarCommonProps, RadarDataProps, RadarSliceTooltipDatum, RadarSvgProps } from './types'\n\ninterface RadarSliceProps<D extends Record<string, unknown>> {\n    datum: D\n    keys: RadarDataProps<D>['keys']\n    index: string | number\n    formatValue: (value: number, context: string) => string\n    colorByKey: Record<string, string>\n    startAngle: number\n    endAngle: number\n    radius: number\n    arcGenerator: Arc<void, { startAngle: number; endAngle: number }>\n    tooltip: RadarCommonProps<D>['sliceTooltip']\n    onClick?: RadarSvgProps<D>['onClick']\n}\n\nexport const RadarSlice = <D extends Record<string, unknown>>({\n    datum,\n    keys,\n    index,\n    formatValue,\n    colorByKey,\n    radius,\n    startAngle,\n    endAngle,\n    arcGenerator,\n    tooltip,\n    onClick,\n}: RadarSliceProps<D>) => {\n    const [isHover, setIsHover] = useState(false)\n    const theme = useTheme()\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleClick = useCallback(\n        (event: MouseEvent<SVGPathElement>) => onClick?.(datum, event),\n        [onClick, datum]\n    )\n\n    const tooltipData = useMemo(() => {\n        const data: RadarSliceTooltipDatum[] = keys.map(key => ({\n            color: colorByKey[key],\n            id: key,\n            value: datum[key] as number,\n            formattedValue: formatValue(datum[key] as number, key),\n        }))\n        data.sort((a, b) => a.value - b.value)\n        data.reverse()\n\n        return data\n    }, [datum, keys, formatValue, colorByKey])\n\n    const showItemTooltip = useCallback(\n        (event: MouseEvent<SVGPathElement>) => {\n            setIsHover(true)\n            showTooltipFromEvent(\n                createElement(tooltip, {\n                    index,\n                    data: tooltipData,\n                }),\n                event\n            )\n        },\n        [showTooltipFromEvent, tooltip, index, tooltipData]\n    )\n\n    const hideItemTooltip = useCallback(() => {\n        setIsHover(false)\n        hideTooltip()\n    }, [hideTooltip, setIsHover])\n\n    const { path, tipX, tipY } = useMemo(() => {\n        const position = positionFromAngle(\n            startAngle + (endAngle - startAngle) * 0.5 - Math.PI / 2,\n            radius\n        )\n\n        return {\n            path: arcGenerator({ startAngle, endAngle }) as string,\n            tipX: position.x,\n            tipY: position.y,\n        }\n    }, [startAngle, endAngle, radius, arcGenerator])\n\n    return (\n        <>\n            {isHover && <line x1={0} y1={0} x2={tipX} y2={tipY} style={theme.crosshair.line} />}\n            <path\n                d={path}\n                fill=\"#F00\"\n                fillOpacity={0}\n                onMouseEnter={showItemTooltip}\n                onMouseMove={showItemTooltip}\n                onMouseLeave={hideItemTooltip}\n                onClick={handleClick}\n            />\n        </>\n    )\n}\n","import { arc as d3Arc } from 'd3-shape'\nimport { RadarSlice } from './RadarSlice'\nimport { RadarColorMapping, RadarCommonProps, RadarDataProps, RadarSvgProps } from './types'\n\ninterface RadarSlicesProps<D extends Record<string, unknown>> {\n    data: RadarDataProps<D>['data']\n    keys: RadarDataProps<D>['keys']\n    getIndex: (d: D) => string | number\n    formatValue: (value: number, context: string) => string\n    colorByKey: RadarColorMapping\n    radius: number\n    rotation: number\n    angleStep: number\n    tooltip: RadarCommonProps<D>['sliceTooltip']\n    onClick?: RadarSvgProps<D>['onClick']\n}\n\nexport const RadarSlices = <D extends Record<string, unknown>>({\n    data,\n    keys,\n    getIndex,\n    formatValue,\n    colorByKey,\n    radius,\n    rotation,\n    angleStep,\n    tooltip,\n    onClick,\n}: RadarSlicesProps<D>) => {\n    const arc = d3Arc<{ startAngle: number; endAngle: number }>().outerRadius(radius).innerRadius(0)\n\n    const halfAngleStep = angleStep * 0.5\n    let rootStartAngle = rotation - halfAngleStep\n\n    return (\n        <>\n            {data.map(d => {\n                const index = getIndex(d)\n                const startAngle = rootStartAngle\n                const endAngle = startAngle + angleStep\n\n                rootStartAngle += angleStep\n\n                return (\n                    <RadarSlice\n                        key={index}\n                        datum={d}\n                        keys={keys}\n                        index={index}\n                        formatValue={formatValue}\n                        colorByKey={colorByKey}\n                        startAngle={startAngle}\n                        endAngle={endAngle}\n                        radius={radius}\n                        arcGenerator={arc}\n                        tooltip={tooltip}\n                        onClick={onClick}\n                    />\n                )\n            })}\n        </>\n    )\n}\n","import { useMemo } from 'react'\nimport { ScaleLinear } from 'd3-scale'\nimport { positionFromAngle, DotsItem, usePropertyAccessor } from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { getInheritedColorGenerator } from '@nivo/colors'\nimport { RadarCommonProps, RadarDataProps, PointProps, PointData, RadarColorMapping } from './types'\n\ninterface RadarDotsProps<D extends Record<string, unknown>> {\n    data: RadarDataProps<D>['data']\n    keys: RadarDataProps<D>['keys']\n    radiusScale: ScaleLinear<number, number>\n    getIndex: (d: D) => string\n    colorByKey: RadarColorMapping\n    rotation: number\n    angleStep: number\n    symbol?: RadarCommonProps<D>['dotSymbol']\n    size: number\n    color: RadarCommonProps<D>['dotColor']\n    borderWidth: number\n    borderColor: RadarCommonProps<D>['dotBorderColor']\n    enableLabel: boolean\n    label: RadarCommonProps<D>['dotLabel']\n    formatValue: (value: number, context: string) => string\n    labelYOffset: number\n}\n\nexport const RadarDots = <D extends Record<string, unknown>>({\n    data,\n    keys,\n    getIndex,\n    colorByKey,\n    radiusScale,\n    rotation,\n    angleStep,\n    symbol,\n    size = 6,\n    color = { from: 'color' },\n    borderWidth = 0,\n    borderColor = { from: 'color' },\n    enableLabel = false,\n    label = 'value',\n    formatValue,\n    labelYOffset,\n}: RadarDotsProps<D>) => {\n    const theme = useTheme()\n    const fillColor = getInheritedColorGenerator(color, theme)\n    const strokeColor = getInheritedColorGenerator(borderColor, theme)\n    const getLabel = usePropertyAccessor<PointData, string | number>(label)\n\n    const points: PointProps[] = useMemo(\n        () =>\n            data.reduce((acc, datum, i) => {\n                const index = getIndex(datum)\n                keys.forEach(key => {\n                    const value = datum[key] as number\n\n                    const pointData: PointData = {\n                        index,\n                        key,\n                        value,\n                        formattedValue: formatValue(value, key),\n                        color: colorByKey[key],\n                    }\n\n                    acc.push({\n                        key: `${key}.${index}`,\n                        label: enableLabel ? getLabel(pointData) : undefined,\n                        style: {\n                            fill: fillColor(pointData),\n                            stroke: strokeColor(pointData),\n                            ...positionFromAngle(\n                                rotation + angleStep * i - Math.PI / 2,\n                                radiusScale(datum[key] as number)\n                            ),\n                        },\n                        data: pointData,\n                    })\n                })\n\n                return acc\n            }, [] as PointProps[]),\n        [\n            data,\n            keys,\n            getIndex,\n            colorByKey,\n            enableLabel,\n            getLabel,\n            formatValue,\n            fillColor,\n            strokeColor,\n            rotation,\n            angleStep,\n            radiusScale,\n        ]\n    )\n\n    return (\n        <>\n            {points.map(point => (\n                <DotsItem\n                    key={point.key}\n                    x={point.style.x}\n                    y={point.style.y}\n                    symbol={symbol}\n                    size={size}\n                    color={point.style.fill}\n                    borderWidth={borderWidth}\n                    borderColor={point.style.stroke}\n                    label={point.label}\n                    labelYOffset={labelYOffset}\n                    datum={point.data}\n                />\n            ))}\n        </>\n    )\n}\n","import { RadarGridLabel } from './RadarGridLabel'\nimport { RadarSliceTooltip } from './RadarSliceTooltip'\nimport { RadarLayerId } from './types'\n\nexport const svgDefaultProps = {\n    layers: ['grid', 'layers', 'slices', 'dots', 'legends'] as RadarLayerId[],\n\n    maxValue: 'auto' as const,\n\n    rotation: 0,\n\n    curve: 'linearClosed' as const,\n\n    borderWidth: 2,\n    borderColor: { from: 'color' },\n\n    gridLevels: 5,\n    gridShape: 'circular' as const,\n    gridLabelOffset: 16,\n    gridLabel: RadarGridLabel,\n\n    enableDots: true,\n    dotSize: 6,\n    dotColor: { from: 'color' },\n    dotBorderWidth: 0,\n    dotBorderColor: { from: 'color' },\n    enableDotLabel: false,\n    dotLabel: 'formattedValue',\n    dotLabelYOffset: -12,\n\n    colors: { scheme: 'nivo' as const },\n    fillOpacity: 0.25,\n    blendMode: 'normal' as const,\n\n    isInteractive: true,\n    sliceTooltip: RadarSliceTooltip,\n\n    legends: [],\n    role: 'img',\n\n    animate: true,\n    motionConfig: 'gentle' as const,\n\n    defs: [],\n    fill: [],\n}\n","import { animated } from '@react-spring/web'\nimport { useTheme } from '@nivo/theming'\nimport { Text } from '@nivo/text'\nimport { GridLabelProps } from './types'\n\nexport const RadarGridLabel = ({ id, anchor, animated: animatedProps }: GridLabelProps) => {\n    const theme = useTheme()\n\n    return (\n        <animated.g transform={animatedProps.transform}>\n            <Text style={theme.axis.ticks.text} dominantBaseline=\"central\" textAnchor={anchor}>\n                {id}\n            </Text>\n        </animated.g>\n    )\n}\n","import { useMemo } from 'react'\nimport { TableTooltip, Chip } from '@nivo/tooltip'\nimport { RadarSliceTooltipProps } from './types'\n\nexport const RadarSliceTooltip = ({ index, data }: RadarSliceTooltipProps) => {\n    const rows = useMemo(\n        () =>\n            data.map(datum => [\n                <Chip key={datum.id} color={datum.color} />,\n                datum.id,\n                datum.formattedValue,\n            ]),\n        [data]\n    )\n\n    return <TableTooltip title={<strong>{index}</strong>} rows={rows} />\n}\n","import { ReactNode, Fragment, createElement, forwardRef, Ref, ReactElement } from 'react'\nimport { Container, useDimensions, SvgWrapper, WithChartRef } from '@nivo/core'\nimport { BoxLegendSvg } from '@nivo/legends'\nimport { RadarLayer } from './RadarLayer'\nimport { RadarGrid } from './RadarGrid'\nimport { RadarSlices } from './RadarSlices'\nimport { RadarDots } from './RadarDots'\nimport { svgDefaultProps } from './defaults'\nimport { RadarLayerId, RadarSvgProps } from './types'\nimport { useRadar } from './hooks'\n\ntype InnerRadarProps<D extends Record<string, unknown>> = Omit<\n    RadarSvgProps<D>,\n    'animate' | 'motionConfig' | 'renderWrapper' | 'theme'\n> & {\n    forwardedRef: Ref<SVGSVGElement>\n}\n\nconst InnerRadar = <D extends Record<string, unknown>>({\n    data,\n    keys,\n    indexBy,\n    layers = svgDefaultProps.layers,\n    rotation: rotationDegrees = svgDefaultProps.rotation,\n    maxValue = svgDefaultProps.maxValue,\n    valueFormat,\n    curve = svgDefaultProps.curve,\n    margin: partialMargin,\n    width,\n    height,\n    borderWidth = svgDefaultProps.borderWidth,\n    borderColor = svgDefaultProps.borderColor,\n    gridLevels = svgDefaultProps.gridLevels,\n    gridShape = svgDefaultProps.gridShape,\n    gridLabel = svgDefaultProps.gridLabel,\n    gridLabelOffset = svgDefaultProps.gridLabelOffset,\n    enableDots = svgDefaultProps.enableDots,\n    dotSymbol,\n    dotSize = svgDefaultProps.dotSize,\n    dotColor = svgDefaultProps.dotColor,\n    dotBorderWidth = svgDefaultProps.dotBorderWidth,\n    dotBorderColor = svgDefaultProps.dotBorderColor,\n    enableDotLabel = svgDefaultProps.enableDotLabel,\n    dotLabel = svgDefaultProps.dotLabel,\n    dotLabelYOffset = svgDefaultProps.dotLabelYOffset,\n    colors = svgDefaultProps.colors,\n    fillOpacity = svgDefaultProps.fillOpacity,\n    blendMode = svgDefaultProps.blendMode,\n    isInteractive = svgDefaultProps.isInteractive,\n    sliceTooltip = svgDefaultProps.sliceTooltip,\n    legends = svgDefaultProps.legends,\n    role,\n    ariaLabel,\n    ariaLabelledBy,\n    ariaDescribedBy,\n    defs = svgDefaultProps.defs,\n    fill = svgDefaultProps.fill,\n    onClick,\n    forwardedRef,\n}: InnerRadarProps<D>) => {\n    const { margin, innerWidth, innerHeight, outerWidth, outerHeight } = useDimensions(\n        width,\n        height,\n        partialMargin\n    )\n\n    const {\n        getIndex,\n        indices,\n        formatValue,\n        colorByKey,\n        fillByKey,\n        boundDefs,\n        rotation,\n        radius,\n        radiusScale,\n        centerX,\n        centerY,\n        angleStep,\n        curveFactory,\n        boundLegends,\n        customLayerProps,\n    } = useRadar<D>({\n        data,\n        keys,\n        indexBy,\n        rotationDegrees,\n        maxValue,\n        valueFormat,\n        curve,\n        width: innerWidth,\n        height: innerHeight,\n        colors,\n        legends,\n        defs,\n        fill,\n    })\n\n    const layerById: Record<RadarLayerId, ReactNode> = {\n        grid: null,\n        layers: null,\n        slices: null,\n        dots: null,\n        legends: null,\n    }\n\n    if (layers.includes('grid')) {\n        layerById.grid = (\n            <g key=\"grid\" transform={`translate(${centerX}, ${centerY})`}>\n                <RadarGrid<D>\n                    levels={gridLevels}\n                    shape={gridShape}\n                    radius={radius}\n                    rotation={rotation}\n                    angleStep={angleStep}\n                    indices={indices}\n                    label={gridLabel}\n                    labelOffset={gridLabelOffset}\n                />\n            </g>\n        )\n    }\n\n    if (layers.includes('layers')) {\n        layerById.layers = (\n            <g key=\"layers\" transform={`translate(${centerX}, ${centerY})`}>\n                {keys.map(key => (\n                    <RadarLayer<D>\n                        key={key}\n                        data={data}\n                        item={key}\n                        colorByKey={colorByKey}\n                        fillByKey={fillByKey}\n                        radiusScale={radiusScale}\n                        rotation={rotation}\n                        angleStep={angleStep}\n                        curveFactory={curveFactory}\n                        borderWidth={borderWidth}\n                        borderColor={borderColor}\n                        fillOpacity={fillOpacity}\n                        blendMode={blendMode}\n                    />\n                ))}\n            </g>\n        )\n    }\n\n    if (layers.includes('slices') && isInteractive) {\n        layerById.slices = (\n            <g key=\"slices\" transform={`translate(${centerX}, ${centerY})`}>\n                <RadarSlices<D>\n                    data={data}\n                    keys={keys}\n                    getIndex={getIndex}\n                    formatValue={formatValue}\n                    colorByKey={colorByKey}\n                    radius={radius}\n                    rotation={rotation}\n                    angleStep={angleStep}\n                    tooltip={sliceTooltip}\n                    onClick={onClick}\n                />\n            </g>\n        )\n    }\n\n    if (layers.includes('dots') && enableDots) {\n        layerById.dots = (\n            <g key=\"dots\" transform={`translate(${centerX}, ${centerY})`}>\n                <RadarDots<D>\n                    data={data}\n                    keys={keys}\n                    getIndex={getIndex}\n                    radiusScale={radiusScale}\n                    rotation={rotation}\n                    angleStep={angleStep}\n                    symbol={dotSymbol}\n                    size={dotSize}\n                    colorByKey={colorByKey}\n                    color={dotColor}\n                    borderWidth={dotBorderWidth}\n                    borderColor={dotBorderColor}\n                    enableLabel={enableDotLabel}\n                    label={dotLabel}\n                    formatValue={formatValue}\n                    labelYOffset={dotLabelYOffset}\n                />\n            </g>\n        )\n    }\n\n    if (layers.includes('legends')) {\n        layerById.legends = (\n            <Fragment key=\"legends\">\n                {boundLegends.map((legend, i) => (\n                    <BoxLegendSvg\n                        key={i}\n                        {...legend}\n                        containerWidth={width}\n                        containerHeight={height}\n                    />\n                ))}\n            </Fragment>\n        )\n    }\n\n    return (\n        <SvgWrapper\n            defs={boundDefs}\n            width={outerWidth}\n            height={outerHeight}\n            margin={margin}\n            role={role}\n            ariaLabel={ariaLabel}\n            ariaLabelledBy={ariaLabelledBy}\n            ariaDescribedBy={ariaDescribedBy}\n            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 Radar = forwardRef(\n    <D extends Record<string, unknown>>(\n        {\n            isInteractive = svgDefaultProps.isInteractive,\n            animate = svgDefaultProps.animate,\n            motionConfig = svgDefaultProps.motionConfig,\n            theme,\n            renderWrapper,\n            ...props\n        }: RadarSvgProps<D>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <Container\n            animate={animate}\n            isInteractive={isInteractive}\n            motionConfig={motionConfig}\n            renderWrapper={renderWrapper}\n            theme={theme}\n        >\n            <InnerRadar<D> isInteractive={isInteractive} {...props} forwardedRef={ref} />\n        </Container>\n    )\n) as <D extends Record<string, unknown>>(\n    props: WithChartRef<RadarSvgProps<D>, SVGSVGElement>\n) => ReactElement\n","import { useMemo } from 'react'\nimport { scaleLinear } from 'd3-scale'\nimport {\n    // @ts-expect-error no types\n    bindDefs,\n    useCurveInterpolation,\n    usePropertyAccessor,\n    useValueFormatter,\n} from '@nivo/core'\nimport { degreesToRadians } from '@nivo/core'\nimport { useOrdinalColorScale } from '@nivo/colors'\nimport { svgDefaultProps } from './defaults'\nimport {\n    RadarColorMapping,\n    RadarCommonProps,\n    RadarDataProps,\n    RadarCustomLayerProps,\n    RadarSvgProps,\n    BoundLegendProps,\n} from './types'\n\nexport const useRadar = <D extends Record<string, unknown>>({\n    data,\n    keys,\n    indexBy,\n    rotationDegrees,\n    maxValue,\n    valueFormat,\n    curve,\n    width,\n    height,\n    colors = svgDefaultProps.colors,\n    legends,\n    defs,\n    fill,\n}: {\n    data: RadarDataProps<D>['data']\n    keys: RadarDataProps<D>['keys']\n    indexBy: RadarDataProps<D>['indexBy']\n    rotationDegrees: RadarCommonProps<D>['rotation']\n    maxValue: RadarCommonProps<D>['maxValue']\n    valueFormat?: RadarCommonProps<D>['valueFormat']\n    curve: RadarCommonProps<D>['curve']\n    width: number\n    height: number\n    colors: RadarCommonProps<D>['colors']\n    legends: RadarCommonProps<D>['legends']\n    defs: RadarSvgProps<D>['defs']\n    fill: RadarSvgProps<D>['fill']\n}) => {\n    const getIndex = usePropertyAccessor<D, string>(indexBy)\n    const indices = useMemo(() => data.map(getIndex), [data, getIndex])\n    const formatValue = useValueFormatter<number, string>(valueFormat)\n    const rotation = degreesToRadians(rotationDegrees)\n\n    const getColor = useOrdinalColorScale<{ key: string; index: number }>(colors, 'key')\n    const colorByKey: RadarColorMapping = useMemo(\n        () =>\n            keys.reduce<RadarColorMapping>((mapping, key, index) => {\n                mapping[key] = getColor({ key, index })\n                return mapping\n            }, {}),\n        [keys, getColor]\n    )\n\n    const { boundDefs, fillByKey } = useMemo(() => {\n        // expand keys into structure expected by bindDefs\n        const keyData = keys.map(k => ({ key: k, color: colorByKey[k], data, fill: null }))\n        const boundDefs = bindDefs(defs, keyData, fill)\n        const fillByKey = keyData.reduce<Record<string, string | null>>((mapping, keyDatum) => {\n            const { key: keyName, fill } = keyDatum\n            mapping[keyName] = fill\n            return mapping\n        }, {})\n\n        return { boundDefs, fillByKey }\n    }, [keys, data, defs, fill, colorByKey])\n\n    const { radius, radiusScale, centerX, centerY, angleStep } = useMemo(() => {\n        const allValues: number[] = data.reduce(\n            (acc: number[], d) => [...acc, ...keys.map(key => d[key] as number)],\n            [] as number[]\n        )\n        const computedMaxValue = maxValue !== 'auto' ? maxValue : Math.max(...allValues)\n\n        const radius = Math.min(width, height) / 2\n        const radiusScale = scaleLinear<number, number>()\n            .range([0, radius])\n            .domain([0, computedMaxValue])\n\n        return {\n            radius,\n            radiusScale,\n            centerX: width / 2,\n            centerY: height / 2,\n            angleStep: (Math.PI * 2) / data.length,\n        }\n    }, [keys, data, maxValue, width, height])\n\n    const curveFactory = useCurveInterpolation(curve)\n\n    const customLayerProps: RadarCustomLayerProps<D> = useMemo(\n        () => ({\n            data,\n            keys,\n            indices,\n            colorByKey,\n            centerX,\n            centerY,\n            radiusScale,\n            angleStep,\n        }),\n        [data, keys, indices, colorByKey, centerX, centerY, radiusScale, angleStep]\n    )\n\n    const legendData = useMemo(\n        () => keys.map(key => ({ id: key, label: key, color: colorByKey[key] })),\n        [keys, colorByKey]\n    )\n\n    const boundLegends: BoundLegendProps[] = useMemo(\n        () =>\n            legends.map(({ data: customData, ...legend }) => {\n                const boundData = customData?.map(cd => {\n                    const findData = legendData.find(ld => ld.id === cd.id) || {}\n                    return { ...findData, ...cd }\n                })\n                return { ...legend, data: boundData || legendData }\n            }),\n        [legends, legendData]\n    )\n\n    return {\n        getIndex,\n        indices,\n        formatValue,\n        colorByKey,\n        fillByKey,\n        boundDefs,\n        rotation,\n        radius,\n        radiusScale,\n        centerX,\n        centerY,\n        angleStep,\n        curveFactory,\n        legendData,\n        boundLegends,\n        customLayerProps,\n    }\n}\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { RadarSvgProps } from './types'\nimport { Radar } from './Radar'\n\nexport const ResponsiveRadar = forwardRef(\n    <D extends Record<string, unknown>>(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<RadarSvgProps<D>>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultHeight}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }) => <Radar<D> {...props} width={width} height={height} ref={ref} />}\n        </ResponsiveWrapper>\n    )\n) as <D extends Record<string, unknown>>(\n    props: WithChartRef<ResponsiveProps<RadarSvgProps<D>>, SVGSVGElement>\n) => ReactElement\n"],"names":["RadarLayer","_ref","_fillByKey$key","data","key","item","colorByKey","fillByKey","radiusScale","rotation","angleStep","curveFactory","borderWidth","borderColor","fillOpacity","blendMode","theme","useTheme","getBorderColor","useInheritedColor","lineGenerator","useMemo","lineRadial","radius","d","angle","_","i","curve","_useMotionConfig","useMotionConfig","animate","springConfig","config","animatedPath","useAnimatedPath","map","animatedProps","useSpring","fill","stroke","color","immediate","_jsx","animated","path","strokeWidth","style","mixBlendMode","RadarGridLabels","angles","indices","labelComponent","label","labelOffset","labels","index","_angle","position","positionFromAngle","textAnchor","radiansToDegrees","_extends","id","anchor","springs","useSprings","length","transform","x","y","_Fragment","children","createElement","RadarGridLevelCircular","memo","circle","r","to","value","Math","max","grid","line","RadarGridLevelLinear","_ref2","dataLength","radarLineGenerator","curveLinearClosed","points","Array","from","RadarGridLevels","_ref3","shape","props","_objectWithoutPropertiesLoose","_excluded","RadarGrid","levels","_useMemo","radii","reverse","PI","_jsxs","x1","y1","x2","y2","RadarSlice","datum","keys","formatValue","startAngle","endAngle","arcGenerator","tooltip","onClick","_useState","useState","isHover","setIsHover","_useTooltip","useTooltip","showTooltipFromEvent","hideTooltip","handleClick","useCallback","event","tooltipData","formattedValue","sort","a","b","showItemTooltip","hideItemTooltip","tipX","tipY","crosshair","onMouseEnter","onMouseMove","onMouseLeave","RadarSlices","getIndex","arc","d3Arc","outerRadius","innerRadius","rootStartAngle","RadarDots","symbol","_ref$size","size","_ref$color","_ref$borderWidth","_ref$borderColor","_ref$enableLabel","enableLabel","_ref$label","labelYOffset","fillColor","getInheritedColorGenerator","strokeColor","getLabel","usePropertyAccessor","reduce","acc","forEach","pointData","push","undefined","point","DotsItem","svgDefaultProps","layers","maxValue","gridLevels","gridShape","gridLabelOffset","gridLabel","g","Text","axis","ticks","text","dominantBaseline","enableDots","dotSize","dotColor","dotBorderWidth","dotBorderColor","enableDotLabel","dotLabel","dotLabelYOffset","colors","scheme","isInteractive","sliceTooltip","rows","Chip","TableTooltip","title","legends","role","motionConfig","defs","InnerRadar","indexBy","_ref$layers","_ref$rotation","rotationDegrees","_ref$maxValue","valueFormat","_ref$curve","partialMargin","margin","width","height","_ref$gridLevels","_ref$gridShape","_ref$gridLabel","_ref$gridLabelOffset","_ref$enableDots","dotSymbol","_ref$dotSize","_ref$dotColor","_ref$dotBorderWidth","_ref$dotBorderColor","_ref$enableDotLabel","_ref$dotLabel","_ref$dotLabelYOffset","_ref$colors","_ref$fillOpacity","_ref$blendMode","_ref$isInteractive","_ref$sliceTooltip","_ref$legends","ariaLabel","ariaLabelledBy","ariaDescribedBy","_ref$defs","_ref$fill","forwardedRef","_useDimensions","useDimensions","innerWidth","innerHeight","outerWidth","outerHeight","_useRadar","useValueFormatter","degreesToRadians","getColor","useOrdinalColorScale","mapping","keyData","k","boundDefs","bindDefs","keyDatum","keyName","_useMemo2","allValues","concat","computedMaxValue","apply","min","scaleLinear","range","domain","centerX","centerY","useCurveInterpolation","customLayerProps","legendData","boundLegends","customData","legend","boundData","cd","find","ld","useRadar","layerById","slices","dots","includes","Fragment","BoxLegendSvg","containerWidth","containerHeight","SvgWrapper","ref","layer","_layerById$layer","Radar","forwardRef","_ref2$isInteractive","_ref2$animate","_ref2$motionConfig","renderWrapper","Container","ResponsiveRadar","defaultWidth","defaultHeight","onResize","debounceResize","ResponsiveWrapper"],"mappings":"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"}