{"version":3,"file":"nivo-stream.mjs","sources":["../src/StreamLayer.tsx","../src/StreamLayers.tsx","../src/StreamDots.tsx","../src/StreamSlicesItem.tsx","../src/StreamSlices.tsx","../src/props.ts","../src/StreamDotsItem.tsx","../src/LayerTooltip.tsx","../src/StackTooltip.tsx","../src/Stream.tsx","../src/hooks.ts","../src/ResponsiveStream.tsx"],"sourcesContent":["import { useCallback, createElement, MouseEvent } from 'react'\nimport { useSpring, animated } from '@react-spring/web'\nimport { useAnimatedPath, useMotionConfig } from '@nivo/core'\nimport { InheritedColorConfigCustomFunction } from '@nivo/colors'\nimport { useTooltip } from '@nivo/tooltip'\nimport { StreamCommonProps, StreamDatum, StreamLayerData } from './types'\n\ninterface StreamLayerProps<RawDatum extends StreamDatum> {\n    layer: StreamLayerData\n    fillOpacity: number\n    borderWidth: number\n    getBorderColor: InheritedColorConfigCustomFunction<StreamLayerData>\n    isInteractive: boolean\n    tooltip: StreamCommonProps<RawDatum>['tooltip']\n}\n\nexport const StreamLayer = <RawDatum extends StreamDatum>({\n    layer,\n    fillOpacity,\n    borderWidth,\n    getBorderColor,\n    isInteractive,\n    tooltip,\n}: StreamLayerProps<RawDatum>) => {\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n    const handleMouseHover = useCallback(\n        (event: MouseEvent<SVGPathElement>) => {\n            showTooltipFromEvent(createElement(tooltip, { layer }), event, 'left')\n        },\n        [showTooltipFromEvent, tooltip, layer]\n    )\n\n    const { animate, config: springConfig } = useMotionConfig()\n    const animatedPath = useAnimatedPath(layer.path)\n    const animatedProps = useSpring({\n        color: layer.color,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    return (\n        <animated.path\n            d={animatedPath}\n            fill={layer.fill ? layer.fill : animatedProps.color}\n            fillOpacity={fillOpacity}\n            stroke={getBorderColor(layer)}\n            strokeWidth={borderWidth}\n            onMouseMove={isInteractive ? handleMouseHover : undefined}\n            onMouseEnter={isInteractive ? handleMouseHover : undefined}\n            onMouseLeave={isInteractive ? hideTooltip : undefined}\n        />\n    )\n}\n","import { InheritedColorConfigCustomFunction } from '@nivo/colors'\nimport { StreamLayer } from './StreamLayer'\nimport { StreamCommonProps, StreamLayerData, StreamDatum } from './types'\n\ninterface StreamLayersProps<RawDatum extends StreamDatum> {\n    layers: StreamLayerData[]\n    fillOpacity: number\n    borderWidth: number\n    getBorderColor: InheritedColorConfigCustomFunction<StreamLayerData>\n    isInteractive: boolean\n    tooltip: StreamCommonProps<RawDatum>['tooltip']\n}\n\nexport const StreamLayers = <RawDatum extends StreamDatum>({\n    layers,\n    fillOpacity,\n    borderWidth,\n    getBorderColor,\n    isInteractive,\n    tooltip,\n}: StreamLayersProps<RawDatum>) => (\n    <g>\n        {layers.map((layer, i) => (\n            <StreamLayer<RawDatum>\n                key={i}\n                layer={layer}\n                getBorderColor={getBorderColor}\n                borderWidth={borderWidth}\n                fillOpacity={fillOpacity}\n                isInteractive={isInteractive}\n                tooltip={tooltip}\n            />\n        ))}\n    </g>\n)\n","import { createElement } from 'react'\nimport { StreamSvgProps, StreamLayerDatum, StreamDatum } from './types'\n\ninterface StreamDotsProps<RawDatum extends StreamDatum> {\n    id: string | number\n    color: string\n    data: StreamLayerDatum[]\n    dotComponent: Exclude<StreamSvgProps<RawDatum>['dotComponent'], undefined>\n    position: 'start' | 'center' | 'end'\n    getSize: (datum: StreamLayerDatum) => number\n    getColor: (datum: StreamLayerDatum) => string\n    getBorderWidth: (datum: StreamLayerDatum) => number\n    getBorderColor: (datum: StreamLayerDatum) => string\n}\n\nconst getDotY = <RawDatum extends StreamDatum>(\n    datum: StreamLayerDatum,\n    position: StreamDotsProps<RawDatum>['position']\n) => {\n    let y = datum.y2\n    if (position === 'center') {\n        y = datum.y1 + (datum.y2 - datum.y1) / 2\n    } else if (position === 'start') {\n        y = datum.y1\n    }\n\n    return y\n}\n\nexport const StreamDots = <RawDatum extends StreamDatum>({\n    data,\n    dotComponent,\n    position,\n    getSize,\n    getColor,\n    getBorderWidth,\n    getBorderColor,\n}: StreamDotsProps<RawDatum>) => (\n    <>\n        {data.map((datum, i) => {\n            return createElement(dotComponent, {\n                key: i,\n                datum,\n                x: datum.x,\n                y: getDotY<RawDatum>(datum, position),\n                size: getSize(datum),\n                color: getColor(datum),\n                borderWidth: getBorderWidth(datum),\n                borderColor: getBorderColor(datum),\n            })\n        })}\n    </>\n)\n","import { createElement, useCallback, useState, MouseEvent } from 'react'\nimport { useTooltip } from '@nivo/tooltip'\nimport { StreamCommonProps, StreamDatum, StreamSliceData } from './types'\n\ninterface StreamSlicesItemProps<RawDatum extends StreamDatum> {\n    slice: StreamSliceData\n    height: number\n    tooltip: StreamCommonProps<RawDatum>['stackTooltip']\n}\n\nexport const StreamSlicesItem = <RawDatum extends StreamDatum>({\n    slice,\n    height,\n    tooltip,\n}: StreamSlicesItemProps<RawDatum>) => {\n    const [isHover, setIsHover] = useState(false)\n    const { showTooltipFromEvent, hideTooltip } = useTooltip()\n\n    const handleMouseHover = useCallback(\n        (event: MouseEvent<SVGRectElement>) => {\n            setIsHover(true)\n            showTooltipFromEvent(createElement(tooltip, { slice }), event, 'left')\n        },\n        [setIsHover, showTooltipFromEvent, tooltip, slice]\n    )\n\n    const handleMouseLeave = useCallback(() => {\n        setIsHover(false)\n        hideTooltip()\n    }, [setIsHover, hideTooltip])\n\n    return (\n        <g transform={`translate(${slice.x}, 0)`}>\n            {isHover && (\n                <line\n                    x1={0}\n                    x2={0}\n                    y1={0}\n                    y2={height}\n                    stroke=\"#000\"\n                    strokeOpacity={0.35}\n                    strokeWidth={1}\n                />\n            )}\n            <rect\n                x={-20}\n                width={40}\n                height={height}\n                fill=\"#000\"\n                fillOpacity={0}\n                onMouseEnter={handleMouseHover}\n                onMouseMove={handleMouseHover}\n                onMouseLeave={handleMouseLeave}\n            />\n        </g>\n    )\n}\n","import { StreamSliceData, StreamDatum, StreamCommonProps } from './types'\nimport { StreamSlicesItem } from './StreamSlicesItem'\n\ninterface StreamSlicesProps<RawDatum extends StreamDatum> {\n    slices: StreamSliceData[]\n    height: number\n    tooltip: StreamCommonProps<RawDatum>['stackTooltip']\n}\n\nexport const StreamSlices = <RawDatum extends StreamDatum>({\n    slices,\n    height,\n    tooltip,\n}: StreamSlicesProps<RawDatum>) => (\n    <g>\n        {slices.map(slice => (\n            <StreamSlicesItem<RawDatum>\n                key={slice.index}\n                slice={slice}\n                height={height}\n                tooltip={tooltip}\n            />\n        ))}\n    </g>\n)\n","import { StackOrder, StackOffset, AreaCurve } from '@nivo/core'\nimport { StreamCommonProps, StreamLayerId } from './types'\nimport { StreamDotsItem } from './StreamDotsItem'\nimport { LayerTooltip } from './LayerTooltip'\nimport { StackTooltip } from './StackTooltip'\n\nexport const defaultProps = {\n    label: 'id',\n    order: 'none' as StackOrder,\n    offsetType: 'wiggle' as StackOffset,\n    curve: 'catmullRom' as AreaCurve,\n    axisTop: null,\n    axisRight: null,\n    axisBottom: {},\n    axisLeft: {},\n    enableGridX: false,\n    enableGridY: true,\n    colors: { scheme: 'nivo' } as StreamCommonProps<any>['colors'],\n    fillOpacity: 1,\n    borderWidth: 0,\n    borderColor: {\n        from: 'color',\n        modifiers: [['darker', 1]],\n    } as StreamCommonProps<any>['borderColor'],\n    enableDots: false,\n    dotPosition: 'center' as StreamCommonProps<any>['dotPosition'],\n    dotComponent: StreamDotsItem,\n    dotSize: 6,\n    dotColor: { from: 'color' },\n    dotBorderWidth: 0,\n    dotBorderColor: { from: 'color' },\n    isInteractive: true,\n    tooltip: LayerTooltip,\n    enableStackTooltip: true,\n    stackTooltip: StackTooltip,\n    legends: [],\n    legendLabel: 'id',\n    role: 'application',\n}\n\nexport const svgDefaultProps = {\n    ...defaultProps,\n    layers: ['grid', 'axes', 'layers', 'dots', 'slices', 'legends'] as StreamLayerId[],\n    defs: [],\n    fill: [],\n    animate: true,\n    motionConfig: 'default',\n    role: 'img',\n    isFocusable: false,\n}\n","import { useSpring, animated } from '@react-spring/web'\nimport { useMotionConfig } from '@nivo/core'\n\nexport interface StreamDotsItemProps {\n    x: number\n    y: number\n    size: number\n    color: string\n    borderWidth: number\n    borderColor: string\n}\n\nexport const StreamDotsItem = ({\n    x,\n    y,\n    size,\n    color,\n    borderWidth,\n    borderColor,\n}: StreamDotsItemProps) => {\n    const { animate, config: springConfig } = useMotionConfig()\n    const animatedProps = useSpring({\n        x,\n        y,\n        radius: size * 0.5,\n        color,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    return (\n        <animated.circle\n            cx={animatedProps.x}\n            cy={animatedProps.y}\n            r={animatedProps.radius}\n            fill={animatedProps.color}\n            strokeWidth={borderWidth}\n            stroke={borderColor}\n        />\n    )\n}\n","import { BasicTooltip } from '@nivo/tooltip'\nimport { TooltipProps } from './types'\n\nexport const LayerTooltip = ({ layer }: TooltipProps) => (\n    <BasicTooltip id={layer.label} enableChip={true} color={layer.color} />\n)\n","import { useMemo } from 'react'\nimport { TableTooltip, Chip } from '@nivo/tooltip'\nimport { StackTooltipProps } from './types'\n\nexport const StackTooltip = ({ slice }: StackTooltipProps) => {\n    const rows = useMemo(\n        () =>\n            slice.stack.map(p => [\n                <Chip key={p.layerId} color={p.color} />,\n                p.layerLabel,\n                p.formattedValue,\n            ]),\n        [slice]\n    )\n\n    return <TableTooltip rows={rows} />\n}\n","import { createElement, Fragment, ReactNode, forwardRef, Ref, ReactElement } from 'react'\nimport {\n    Container,\n    SvgWrapper,\n    useDimensions,\n    // @ts-expect-error no types\n    bindDefs,\n    WithChartRef,\n} from '@nivo/core'\nimport { Axes, Grid } from '@nivo/axes'\nimport { BoxLegendSvg } from '@nivo/legends'\nimport { StreamLayers } from './StreamLayers'\nimport { StreamDots } from './StreamDots'\nimport { StreamSlices } from './StreamSlices'\nimport { useStream } from './hooks'\nimport { svgDefaultProps } from './props'\nimport { StreamDatum, StreamLayerId, StreamSvgProps } from './types'\n\ntype InnerStreamProps<RawDatum extends StreamDatum> = Omit<\n    StreamSvgProps<RawDatum>,\n    'animate' | 'motionConfig' | 'renderWrapper' | 'theme'\n> & {\n    forwardedRef: Ref<SVGSVGElement>\n}\n\nconst InnerStream = <RawDatum extends StreamDatum>({\n    data,\n    keys,\n    label,\n    valueFormat,\n    offsetType,\n    order,\n    curve,\n    layers: chartLayers = svgDefaultProps.layers,\n    width,\n    height,\n    margin: partialMargin,\n    axisTop,\n    axisRight,\n    axisBottom = svgDefaultProps.axisBottom,\n    axisLeft = svgDefaultProps.axisLeft,\n    enableGridX = svgDefaultProps.enableGridX,\n    enableGridY = svgDefaultProps.enableGridY,\n    colors,\n    fillOpacity = svgDefaultProps.fillOpacity,\n    borderWidth = svgDefaultProps.borderWidth,\n    borderColor,\n    defs = svgDefaultProps.defs,\n    fill = svgDefaultProps.fill,\n    enableDots = svgDefaultProps.enableDots,\n    dotPosition = svgDefaultProps.dotPosition,\n    dotComponent = svgDefaultProps.dotComponent,\n    dotSize,\n    dotColor,\n    dotBorderWidth,\n    dotBorderColor,\n    isInteractive = svgDefaultProps.isInteractive,\n    tooltip = svgDefaultProps.tooltip,\n    enableStackTooltip = svgDefaultProps.enableStackTooltip,\n    stackTooltip = svgDefaultProps.stackTooltip,\n    legends = svgDefaultProps.legends,\n    role,\n    ariaLabel,\n    ariaLabelledBy,\n    ariaDescribedBy,\n    forwardedRef,\n}: InnerStreamProps<RawDatum>) => {\n    const { margin, innerWidth, innerHeight, outerWidth, outerHeight } = useDimensions(\n        width,\n        height,\n        partialMargin\n    )\n\n    const {\n        xScale,\n        yScale,\n        layers,\n        slices,\n        getBorderColor,\n        getDotSize,\n        getDotColor,\n        getDotBorderWidth,\n        getDotBorderColor,\n        layerContext,\n    } = useStream<RawDatum>({\n        width: innerWidth,\n        height: innerHeight,\n        data,\n        keys,\n        label,\n        valueFormat,\n        offsetType,\n        order,\n        curve,\n        colors,\n        borderColor,\n        dotSize,\n        dotColor,\n        dotBorderWidth,\n        dotBorderColor,\n    })\n\n    const boundDefs = bindDefs(defs, layers, fill)\n\n    const layerById: Record<StreamLayerId, ReactNode> = {\n        grid: null,\n        axes: null,\n        layers: null,\n        dots: null,\n        slices: null,\n        legends: null,\n    }\n\n    if (chartLayers.includes('grid')) {\n        layerById.grid = (\n            <Grid\n                key=\"grid\"\n                width={innerWidth}\n                height={innerHeight}\n                xScale={enableGridX ? xScale : null}\n                yScale={enableGridY ? yScale : null}\n            />\n        )\n    }\n\n    if (chartLayers.includes('axes')) {\n        layerById.axes = (\n            <Axes\n                key=\"axes\"\n                xScale={xScale}\n                yScale={yScale}\n                width={innerWidth}\n                height={innerHeight}\n                top={axisTop}\n                right={axisRight}\n                bottom={axisBottom}\n                left={axisLeft}\n            />\n        )\n    }\n\n    if (chartLayers.includes('layers')) {\n        layerById.layers = (\n            <StreamLayers<RawDatum>\n                key=\"layers\"\n                layers={layers}\n                fillOpacity={fillOpacity}\n                borderWidth={borderWidth}\n                getBorderColor={getBorderColor}\n                isInteractive={isInteractive}\n                tooltip={tooltip}\n            />\n        )\n    }\n\n    if (chartLayers.includes('dots') && enableDots) {\n        layerById.dots = (\n            <Fragment key=\"dots\">\n                {layers.map(layer => (\n                    <StreamDots\n                        key={layer.id}\n                        id={layer.id}\n                        color={layer.color}\n                        data={layer.data}\n                        dotComponent={dotComponent}\n                        position={dotPosition}\n                        getSize={getDotSize}\n                        getColor={getDotColor}\n                        getBorderWidth={getDotBorderWidth}\n                        getBorderColor={getDotBorderColor}\n                    />\n                ))}\n            </Fragment>\n        )\n    }\n\n    if (chartLayers.includes('slices') && isInteractive && enableStackTooltip) {\n        layerById.slices = (\n            <StreamSlices<RawDatum>\n                key=\"slices\"\n                slices={slices}\n                height={innerHeight}\n                tooltip={stackTooltip}\n            />\n        )\n    }\n\n    if (chartLayers.includes('legends')) {\n        layerById.legends = (\n            <Fragment key=\"legends\">\n                {legends.map((legend, i) => {\n                    const legendData = layers\n                        .map(layer => ({\n                            id: layer.id,\n                            label: layer.label,\n                            color: layer.color,\n                            fill: layer.fill,\n                        }))\n                        .reverse()\n\n                    return (\n                        <BoxLegendSvg\n                            key={i}\n                            {...legend}\n                            containerWidth={innerWidth}\n                            containerHeight={innerHeight}\n                            data={legendData}\n                        />\n                    )\n                })}\n            </Fragment>\n        )\n    }\n\n    return (\n        <SvgWrapper\n            width={outerWidth}\n            height={outerHeight}\n            margin={margin}\n            defs={boundDefs}\n            role={role}\n            ariaLabel={ariaLabel}\n            ariaLabelledBy={ariaLabelledBy}\n            ariaDescribedBy={ariaDescribedBy}\n            ref={forwardedRef}\n        >\n            {chartLayers.map((layer, i) => {\n                if (typeof layer === 'function') {\n                    return <Fragment key={i}>{createElement(layer, layerContext)}</Fragment>\n                }\n\n                return layerById?.[layer] ?? null\n            })}\n        </SvgWrapper>\n    )\n}\n\nexport const Stream = forwardRef(\n    <RawDatum extends StreamDatum>(\n        {\n            isInteractive = svgDefaultProps.isInteractive,\n            animate = svgDefaultProps.animate,\n            motionConfig = svgDefaultProps.motionConfig,\n            theme,\n            renderWrapper,\n            ...props\n        }: StreamSvgProps<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            <InnerStream<RawDatum> {...props} isInteractive={isInteractive} forwardedRef={ref} />\n        </Container>\n    )\n) as <RawDatum extends StreamDatum>(\n    props: WithChartRef<StreamSvgProps<RawDatum>, SVGSVGElement>\n) => ReactElement\n","import { useMemo } from 'react'\nimport { area, stack as d3Stack } from 'd3-shape'\nimport {\n    usePropertyAccessor,\n    useValueFormatter,\n    useCurveInterpolation,\n    // @ts-expect-error no types\n    stackOrderFromProp,\n    // @ts-expect-error no types\n    stackOffsetFromProp,\n} from '@nivo/core'\nimport { useTheme } from '@nivo/theming'\nimport { useInheritedColor, useOrdinalColorScale } from '@nivo/colors'\nimport {\n    StreamCommonProps,\n    StreamCustomLayerProps,\n    StreamDataProps,\n    StreamDatum,\n    StreamLayerData,\n    StreamLayerDatum,\n    StreamSliceData,\n} from './types'\nimport { defaultProps } from './props'\nimport { createLinearScale, createPointScale } from '@nivo/scales'\n\nexport const useStream = <RawDatum extends StreamDatum>({\n    width,\n    height,\n    data,\n    keys,\n    label = defaultProps.label,\n    valueFormat,\n    offsetType = defaultProps.offsetType,\n    order = defaultProps.order,\n    curve = defaultProps.curve,\n    colors = defaultProps.colors,\n    borderColor = defaultProps.borderColor,\n    dotSize = defaultProps.dotSize,\n    dotColor = defaultProps.dotColor,\n    dotBorderWidth = defaultProps.dotBorderWidth,\n    dotBorderColor = defaultProps.dotBorderColor,\n}: {\n    width: number\n    height: number\n    data: StreamDataProps<RawDatum>['data']\n    keys: StreamDataProps<RawDatum>['keys']\n    label?: StreamCommonProps<RawDatum>['label']\n    valueFormat?: StreamCommonProps<RawDatum>['valueFormat']\n    offsetType?: StreamCommonProps<RawDatum>['offsetType']\n    order?: StreamCommonProps<RawDatum>['order']\n    curve?: StreamCommonProps<RawDatum>['curve']\n    colors?: StreamCommonProps<RawDatum>['colors']\n    dotSize?: StreamCommonProps<RawDatum>['dotSize']\n    dotColor?: StreamCommonProps<RawDatum>['dotColor']\n    dotBorderWidth?: StreamCommonProps<RawDatum>['dotBorderWidth']\n    dotBorderColor?: StreamCommonProps<RawDatum>['dotBorderColor']\n    borderColor?: StreamCommonProps<RawDatum>['borderColor']\n}) => {\n    const areaCurveFactory = useCurveInterpolation(curve)\n    const areaGenerator = useMemo(\n        () =>\n            area<StreamLayerDatum>()\n                .x(({ x }) => x)\n                .y0(({ y1 }) => y1)\n                .y1(({ y2 }) => y2)\n                .curve(areaCurveFactory),\n        [areaCurveFactory]\n    )\n\n    const stack = useMemo(\n        () =>\n            d3Stack<RawDatum, string | number>()\n                .keys(keys)\n                .offset(stackOffsetFromProp(offsetType))\n                .order(stackOrderFromProp(order)),\n        [keys, offsetType, order]\n    )\n\n    const [layers, xScale, yScale] = useMemo(() => {\n        const allMin: number[] = []\n        const allMax: number[] = []\n\n        const layers = stack(data).map(layer => {\n            return layer.map(point => {\n                allMin.push(point[0])\n                allMax.push(point[1])\n\n                return {\n                    ...point,\n                    value: point.data[layer.key] as number,\n                }\n            })\n        })\n\n        const minValue = Math.min(...allMin)\n        const maxValue = Math.max(...allMax)\n\n        const xScale = createPointScale(\n            { type: 'point' },\n            { all: Array.from({ length: data.length }, (_, i) => i), min: 0, max: data.length },\n            width\n        )\n        const yScale = createLinearScale(\n            { type: 'linear', min: minValue },\n            { all: [minValue, maxValue], min: minValue, max: maxValue },\n            height,\n            'y'\n        )\n        return [layers, xScale, yScale]\n    }, [stack, data, width, height])\n\n    const theme = useTheme()\n    const getColor = useOrdinalColorScale<Omit<StreamLayerData, 'label' | 'color' | 'data'>>(\n        colors,\n        'id'\n    )\n    const getBorderColor = useInheritedColor<StreamLayerData>(borderColor, theme)\n\n    const getDotSize = useMemo(\n        () => (typeof dotSize === 'function' ? dotSize : () => dotSize),\n        [dotSize]\n    )\n    const getDotColor = useInheritedColor(dotColor, theme)\n    const getDotBorderWidth = useMemo(\n        () => (typeof dotBorderWidth === 'function' ? dotBorderWidth : () => dotBorderWidth),\n        [dotBorderWidth]\n    )\n    const getDotBorderColor = useInheritedColor(dotBorderColor, theme)\n\n    const getLabel = usePropertyAccessor<\n        Omit<StreamLayerData, 'label' | 'color' | 'data'>,\n        string | number\n    >(label)\n    const formatValue = useValueFormatter(valueFormat)\n\n    const enhancedLayers: StreamLayerData[] = useMemo(\n        () =>\n            layers.map((points, layerIndex) => {\n                const computedPoints: StreamLayerDatum[] = points.map((point, i) => ({\n                    layerId: keys[layerIndex],\n                    layerLabel: '',\n                    index: i,\n                    color: '',\n                    x: xScale(i) as number,\n                    value: point.value,\n                    formattedValue: formatValue(point.value),\n                    y1: yScale(point[0]),\n                    y2: yScale(point[1]),\n                }))\n\n                const layer: Omit<StreamLayerData, 'label' | 'color' | 'data'> = {\n                    id: keys[layerIndex] as string,\n                    path: areaGenerator(computedPoints) as string,\n                }\n\n                const layerWithComputedProperties: Omit<StreamLayerData, 'data'> = {\n                    ...layer,\n                    label: getLabel(layer),\n                    color: getColor(layer),\n                }\n\n                return {\n                    ...layerWithComputedProperties,\n                    data: computedPoints.map(point => {\n                        point.layerLabel = layerWithComputedProperties.label\n                        point.color = layerWithComputedProperties.color\n\n                        return point\n                    }),\n                }\n            }),\n        [layers, keys, getLabel, areaGenerator, getColor, xScale, yScale, formatValue]\n    )\n\n    const slices: StreamSliceData[] = useMemo(\n        () =>\n            Array.from({ length: data.length }, (_, i) => {\n                const sliceStack = enhancedLayers\n                    .map(layer => layer.data[i])\n                    .sort((a, b) => a.y2 - b.y2)\n\n                return {\n                    index: i,\n                    x: enhancedLayers[0].data[i].x,\n                    stack: sliceStack,\n                }\n            }),\n        [data.length, enhancedLayers]\n    )\n\n    const layerContext: StreamCustomLayerProps = useMemo(\n        () => ({\n            xScale,\n            yScale,\n            layers: enhancedLayers,\n            slices,\n        }),\n        [xScale, yScale, enhancedLayers, slices]\n    )\n\n    return {\n        xScale,\n        yScale,\n        layers: enhancedLayers,\n        slices,\n        getBorderColor,\n        getDotSize,\n        getDotColor,\n        getDotBorderWidth,\n        getDotBorderColor,\n        layerContext,\n    }\n}\n","import { forwardRef, Ref, ReactElement } from 'react'\nimport { ResponsiveWrapper, ResponsiveProps, WithChartRef } from '@nivo/core'\nimport { StreamDatum, StreamSvgProps } from './types'\nimport { Stream } from './Stream'\n\nexport const ResponsiveStream = forwardRef(\n    <RawDatum extends StreamDatum>(\n        {\n            defaultWidth,\n            defaultHeight,\n            onResize,\n            debounceResize,\n            ...props\n        }: ResponsiveProps<StreamSvgProps<RawDatum>>,\n        ref: Ref<SVGSVGElement>\n    ) => (\n        <ResponsiveWrapper\n            defaultWidth={defaultWidth}\n            defaultHeight={defaultHeight}\n            onResize={onResize}\n            debounceResize={debounceResize}\n        >\n            {({ width, height }) => (\n                <Stream<RawDatum> {...props} width={width} height={height} ref={ref} />\n            )}\n        </ResponsiveWrapper>\n    )\n) as <RawDatum extends StreamDatum>(\n    props: WithChartRef<ResponsiveProps<StreamSvgProps<RawDatum>>, SVGSVGElement>\n) => ReactElement\n"],"names":["StreamLayer","_ref","layer","fillOpacity","borderWidth","getBorderColor","isInteractive","tooltip","_useTooltip","useTooltip","showTooltipFromEvent","hideTooltip","handleMouseHover","useCallback","event","createElement","_useMotionConfig","useMotionConfig","animate","springConfig","config","animatedPath","useAnimatedPath","path","animatedProps","useSpring","color","immediate","_jsx","animated","d","fill","stroke","strokeWidth","onMouseMove","undefined","onMouseEnter","onMouseLeave","StreamLayers","layers","children","map","i","getDotY","datum","position","y","y2","y1","StreamDots","data","dotComponent","getSize","getColor","getBorderWidth","_Fragment","key","x","size","borderColor","StreamSlicesItem","slice","height","_useState","useState","isHover","setIsHover","handleMouseLeave","_jsxs","transform","x1","x2","strokeOpacity","width","StreamSlices","slices","index","defaultProps","label","order","offsetType","curve","axisTop","axisRight","axisBottom","axisLeft","enableGridX","enableGridY","colors","scheme","from","modifiers","enableDots","dotPosition","radius","circle","cx","cy","r","dotSize","dotColor","dotBorderWidth","dotBorderColor","BasicTooltip","id","enableChip","enableStackTooltip","stackTooltip","rows","useMemo","stack","p","Chip","layerId","layerLabel","formattedValue","TableTooltip","legends","legendLabel","role","svgDefaultProps","_extends","defs","motionConfig","isFocusable","InnerStream","keys","valueFormat","_ref$layers","chartLayers","partialMargin","margin","_ref$axisBottom","_ref$axisLeft","_ref$enableGridX","_ref$enableGridY","_ref$fillOpacity","_ref$borderWidth","_ref$defs","_ref$fill","_ref$enableDots","_ref$dotPosition","_ref$dotComponent","_ref$isInteractive","_ref$tooltip","_ref$enableStackToolt","_ref$stackTooltip","_ref$legends","ariaLabel","ariaLabelledBy","ariaDescribedBy","forwardedRef","_useDimensions","useDimensions","innerWidth","innerHeight","outerWidth","outerHeight","_useStream","_ref$label","_ref$offsetType","_ref$order","_ref$curve","_ref$colors","_ref$borderColor","_ref$dotSize","_ref$dotColor","_ref$dotBorderWidth","_ref$dotBorderColor","areaCurveFactory","useCurveInterpolation","areaGenerator","area","_ref2","y0","_ref3","_ref4","d3Stack","offset","stackOffsetFromProp","stackOrderFromProp","_useMemo","allMin","allMax","point","push","value","minValue","Math","min","apply","maxValue","max","createPointScale","type","all","Array","length","_","createLinearScale","xScale","yScale","theme","useTheme","useOrdinalColorScale","useInheritedColor","getDotSize","getDotColor","getDotBorderWidth","getDotBorderColor","getLabel","usePropertyAccessor","formatValue","useValueFormatter","enhancedLayers","points","layerIndex","computedPoints","layerWithComputedProperties","sliceStack","sort","a","b","layerContext","useStream","boundDefs","bindDefs","layerById","grid","axes","dots","includes","Grid","Axes","top","right","bottom","left","Fragment","legend","legendData","reverse","BoxLegendSvg","containerWidth","containerHeight","SvgWrapper","ref","_layerById$layer","Stream","forwardRef","_ref2$isInteractive","_ref2$animate","_ref2$motionConfig","renderWrapper","props","_objectWithoutPropertiesLoose","_excluded","Container","ResponsiveStream","defaultWidth","defaultHeight","onResize","debounceResize","ResponsiveWrapper"],"mappings":"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"}