{"version":3,"file":"nivo-core.mjs","sources":["../src/motion/context.js","../src/motion/hooks.js","../src/components/ConditionalWrapper.js","../src/components/Container.js","../src/lib/noop.js","../src/components/LegacyContainer.js","../src/components/ResponsiveWrapper.js","../src/components/defs/gradients/LinearGradient.js","../src/components/defs/gradients/index.js","../src/components/defs/patterns/PatternDots.js","../src/lib/polar/utils.js","../src/lib/bridge.js","../src/lib/polar/labels.js","../src/components/defs/patterns/PatternLines.js","../src/components/defs/patterns/PatternSquares.js","../src/components/defs/patterns/index.js","../src/components/defs/Defs.js","../src/components/SvgWrapper.js","../src/components/dots/DotsItemSymbol.js","../src/components/dots/DotsItem.js","../src/components/cartesian/markers/CartesianMarkersItem.js","../src/components/cartesian/markers/CartesianMarkers.js","../src/hocs/withContainer.js","../src/hooks/useAnimatedPath.js","../src/hooks/useChartContext.js","../src/props/curve.js","../src/props/stack.js","../src/props/index.js","../src/hooks/useCurveInterpolation.js","../src/lib/colors/quantize.js","../src/lib/colors/index.js","../src/defaults/index.js","../src/hooks/useDimensions.js","../src/hooks/useMeasure.js","../src/hooks/useValueFormatter.js","../src/lib/propertiesConverters.js","../src/lib/cartesian/utils.js","../src/lib/interactivity/detect.js","../src/lib/interactivity/index.js","../src/lib/defs.js","../src/lib/mergeRefs.js","../src/constants.js"],"sourcesContent":["import { createContext, useMemo } from 'react'\nimport isString from 'lodash/isString.js'\nimport { config as presets } from '@react-spring/web'\n\nexport const motionConfigContext = createContext()\n\nexport const motionDefaultProps = {\n    animate: true,\n    config: 'default',\n}\n\n/**\n * MotionConfigProvider.propTypes = {\n *     children: PropTypes.node.isRequired,\n *     animate: motionPropTypes.animate,\n *     config: motionPropTypes.motionConfig,\n * }\n */\nexport const MotionConfigProvider = props => {\n    const { children, animate = true, config = 'default' } = props\n\n    const value = useMemo(() => {\n        const reactSpringConfig = isString(config) ? presets[config] : config\n\n        return {\n            animate,\n            config: reactSpringConfig,\n        }\n    }, [animate, config])\n\n    return <motionConfigContext.Provider value={value}>{children}</motionConfigContext.Provider>\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { useContext } from 'react'\nimport { motionConfigContext } from './context'\n\nexport const useMotionConfig = () => useContext(motionConfigContext)\n","import { cloneElement } from 'react'\n\n// type ConditionalWrapperProps = {\n//     children: ReactNode\n//     condition: boolean\n//     wrapper: ReactElement\n// }\n\nexport const ConditionalWrapper = ({ children, condition, wrapper }) => {\n    if (!condition) return children\n\n    return cloneElement(wrapper, {}, children)\n}\n","import { useRef } from 'react'\nimport { TooltipProvider, Tooltip } from '@nivo/tooltip'\nimport { ThemeProvider } from '@nivo/theming'\nimport { MotionConfigProvider } from '../motion'\nimport { ConditionalWrapper } from './ConditionalWrapper'\n\nconst containerStyle = {\n    position: 'relative',\n}\n\nexport const Container = ({\n    children,\n    theme,\n    renderWrapper = true,\n    isInteractive = true,\n    animate,\n    motionConfig,\n}) => {\n    const container = useRef(null)\n\n    return (\n        <ThemeProvider theme={theme}>\n            <MotionConfigProvider animate={animate} config={motionConfig}>\n                <TooltipProvider container={container}>\n                    {/* we should not render the div element if using the HTTP API */}\n                    <ConditionalWrapper\n                        condition={renderWrapper}\n                        wrapper={<div style={containerStyle} ref={container} />}\n                    >\n                        {children}\n                        {isInteractive && <Tooltip />}\n                    </ConditionalWrapper>\n                </TooltipProvider>\n            </MotionConfigProvider>\n        </ThemeProvider>\n    )\n}\n\nexport default Container\n","// eslint-disable-next-line @typescript-eslint/no-empty-function\nexport default () => {}\n","import { useRef, useMemo, useCallback } from 'react'\nimport {\n    TooltipActionsContext,\n    TooltipStateContext,\n    useTooltipHandlers,\n    Tooltip,\n} from '@nivo/tooltip'\nimport { ThemeProvider } from '@nivo/theming'\nimport noop from '../lib/noop'\nimport { MotionConfigProvider } from '../motion'\nimport { ConditionalWrapper } from './ConditionalWrapper'\n\nconst containerStyle = {\n    position: 'relative',\n}\n\n/**\n * This component should only be used when relying on render props,\n * passing `showTooltip`, `hideTooltip`, but you should use the regular\n * `Container` component.\n *\n * @deprecated\n *\n * LegacyContainer.propTypes = {\n *     children: PropTypes.func.isRequired,\n *     isInteractive: PropTypes.bool,\n *     renderWrapper: PropTypes.bool,\n *     theme: PropTypes.object.isRequired,\n *     animate: PropTypes.bool.isRequired,\n *     motionConfig: PropTypes.oneOfType([PropTypes.string, motionPropTypes.motionConfig]),\n * }\n */\nexport const LegacyContainer = ({\n    children,\n    theme,\n    isInteractive = true,\n    renderWrapper = true,\n    animate,\n    motionConfig,\n}) => {\n    const container = useRef(null)\n    const { actions: tooltipActions, state: tooltipState } = useTooltipHandlers(container)\n\n    const showTooltip = useCallback(\n        (content, event) => tooltipActions.showTooltipFromEvent(content, event),\n        [tooltipActions]\n    )\n\n    const handlers = useMemo(\n        () => ({\n            showTooltip: isInteractive ? showTooltip : noop,\n            hideTooltip: isInteractive ? tooltipActions.hideTooltip : noop,\n        }),\n        [tooltipActions, isInteractive, showTooltip]\n    )\n\n    return (\n        <ThemeProvider theme={theme}>\n            <MotionConfigProvider animate={animate} config={motionConfig}>\n                <TooltipActionsContext.Provider value={tooltipActions}>\n                    <TooltipStateContext.Provider value={tooltipState}>\n                        {/* we should not render the div element if using the HTTP API */}\n                        <ConditionalWrapper\n                            condition={renderWrapper}\n                            wrapper={<div style={containerStyle} ref={container} />}\n                        >\n                            {children(handlers)}\n                            {isInteractive && <Tooltip />}\n                        </ConditionalWrapper>\n                    </TooltipStateContext.Provider>\n                </TooltipActionsContext.Provider>\n            </MotionConfigProvider>\n        </ThemeProvider>\n    )\n}\n","import AutoSizer from 'react-virtualized-auto-sizer'\nimport { useDebounce } from 'use-debounce'\nimport { useEffect } from 'react'\n\nconst dimensionsEqual = (a, b) => a.width === b.width && a.height === b.height\n\nconst InnerResponsiveWrapper = ({ children, width, height, onResize, debounceResize }) => {\n    const [dimensions] = useDebounce({ width, height }, debounceResize, {\n        equalityFn: dimensionsEqual,\n    })\n\n    useEffect(() => {\n        onResize?.(dimensions)\n    }, [dimensions, onResize])\n\n    return <>{children(dimensions)}</>\n}\n\nexport const ResponsiveWrapper = ({\n    children,\n    defaultWidth,\n    defaultHeight,\n    onResize,\n    debounceResize = 0,\n}) => (\n    <AutoSizer defaultWidth={defaultWidth} defaultHeight={defaultHeight}>\n        {({ width, height }) => (\n            <InnerResponsiveWrapper\n                width={width}\n                height={height}\n                onResize={onResize}\n                debounceResize={debounceResize}\n            >\n                {children}\n            </InnerResponsiveWrapper>\n        )}\n    </AutoSizer>\n)\n","export const LinearGradient = ({ id, colors, ...rest }) => (\n    <linearGradient id={id} x1={0} x2={0} y1={0} y2={1} {...rest}>\n        {colors.map(({ offset, color, opacity }) => (\n            <stop\n                key={offset}\n                offset={`${offset}%`}\n                stopColor={color}\n                stopOpacity={opacity !== undefined ? opacity : 1}\n            />\n        ))}\n    </linearGradient>\n)\n\nexport const linearGradientDef = (id, colors, options = {}) => ({\n    id,\n    type: 'linearGradient',\n    colors,\n    ...options,\n})\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { LinearGradient } from './LinearGradient'\n\nexport const gradientTypes = {\n    linearGradient: LinearGradient,\n}\n\nexport * from './LinearGradient'\n","import { memo } from 'react'\n\nexport const PatternDotsDefaultProps = {\n    color: '#000000',\n    background: '#ffffff',\n    size: 4,\n    padding: 4,\n    stagger: false,\n}\n\nexport const PatternDots = memo(props => {\n    const {\n        id,\n        background = PatternDotsDefaultProps.background,\n        color = PatternDotsDefaultProps.color,\n        size = PatternDotsDefaultProps.size,\n        padding = PatternDotsDefaultProps.padding,\n        stagger = PatternDotsDefaultProps.stagger,\n    } = props\n\n    let fullSize = size + padding\n    const radius = size / 2\n    const halfPadding = padding / 2\n    if (stagger === true) {\n        fullSize = size * 2 + padding * 2\n    }\n\n    return (\n        <pattern id={id} width={fullSize} height={fullSize} patternUnits=\"userSpaceOnUse\">\n            <rect width={fullSize} height={fullSize} fill={background} />\n            <circle cx={halfPadding + radius} cy={halfPadding + radius} r={radius} fill={color} />\n            {stagger && (\n                <circle\n                    cx={padding * 1.5 + size + radius}\n                    cy={padding * 1.5 + size + radius}\n                    r={radius}\n                    fill={color}\n                />\n            )}\n        </pattern>\n    )\n})\n\nexport const patternDotsDef = (id, options = {}) => ({\n    id,\n    type: 'patternDots',\n    ...options,\n})\n","export const TWO_PI = Math.PI * 2\n\nexport const degreesToRadians = degrees => (degrees * Math.PI) / 180\n\nexport const radiansToDegrees = radians => (180 * radians) / Math.PI\n\nexport const midAngle = arc => arc.startAngle + (arc.endAngle - arc.startAngle) / 2\n\nexport const positionFromAngle = (angle, distance) => ({\n    x: Math.cos(angle) * distance,\n    y: Math.sin(angle) * distance,\n})\n\n/**\n * Normalize given angle (degrees) in the 0~360 range.\n *\n * @param {number} angle\n * @return {number}\n */\nexport const normalizeAngleDegrees = angle => {\n    let absAngle = angle % 360\n    if (absAngle < 0) absAngle += 360\n\n    return absAngle\n}\n\n/**\n * Ensure the absolute difference between start and end angles\n * is at most given length.\n *\n * @param startAngle - in degrees\n * @param endAngle   - in degrees\n * @param length     - in degrees\n *\n * @returns {[number, number]}\n */\nexport const clampArc = (startAngle, endAngle, length = 360) => {\n    let clampedEndAngle = endAngle\n    if (Math.abs(endAngle - startAngle) > length) {\n        clampedEndAngle = startAngle + (endAngle > startAngle ? length : -length)\n    }\n\n    return [startAngle, clampedEndAngle]\n}\n","/**\n * @TODO: use @nivo/theming instead.\n */\nexport const textPropsByEngine = {\n    svg: {\n        align: {\n            left: 'start',\n            center: 'middle',\n            right: 'end',\n            start: 'start',\n            middle: 'middle',\n            end: 'end',\n        },\n        baseline: {\n            top: 'text-before-edge',\n            center: 'central',\n            bottom: 'alphabetic',\n        },\n    },\n    canvas: {\n        align: {\n            left: 'left',\n            center: 'center',\n            right: 'right',\n            start: 'left',\n            middle: 'center',\n            end: 'right',\n        },\n        baseline: {\n            top: 'top',\n            center: 'middle',\n            bottom: 'bottom',\n        },\n    },\n}\n","import { positionFromAngle, radiansToDegrees } from './utils'\nimport { textPropsByEngine } from '../bridge'\n\n/**\n * @param {number} radius\n * @param {number} angle          angle (radians)\n * @param {number} [rotation=0]   label rotation (degrees)\n * @param {string} [engine='svg'] one of: 'svg', 'canvas'\n * @return {{ x: number, y: number, rotate: number, align: string, baseline: string }}\n */\nexport const getPolarLabelProps = (radius, angle, rotation, engine = 'svg') => {\n    const textProps = textPropsByEngine[engine]\n\n    const { x, y } = positionFromAngle(angle - Math.PI / 2, radius)\n\n    let rotate = radiansToDegrees(angle)\n    let align = textProps.align.center\n    let baseline = textProps.baseline.bottom\n\n    if (rotation > 0) {\n        align = textProps.align.right\n        baseline = textProps.baseline.center\n    } else if (rotation < 0) {\n        align = textProps.align.left\n        baseline = textProps.baseline.center\n    }\n\n    // reverse labels after 180°\n    if (rotation !== 0 && rotate > 180) {\n        rotate -= 180\n        align = align === textProps.align.right ? textProps.align.left : textProps.align.right\n    }\n\n    rotate += rotation\n\n    return { x, y, rotate, align, baseline }\n}\n","import { memo } from 'react'\nimport { degreesToRadians } from '../../../lib/polar'\n\nexport const PatternLinesDefaultProps = {\n    spacing: 5,\n    rotation: 0,\n    background: '#000000',\n    color: '#ffffff',\n    lineWidth: 2,\n}\n\nexport const PatternLines = memo(\n    ({\n        id,\n        spacing: _spacing = PatternLinesDefaultProps.spacing,\n        rotation: _rotation = PatternLinesDefaultProps.rotation,\n        background = PatternLinesDefaultProps.background,\n        color = PatternLinesDefaultProps.color,\n        lineWidth = PatternLinesDefaultProps.lineWidth,\n    }) => {\n        let rotation = Math.round(_rotation) % 360\n        const spacing = Math.abs(_spacing)\n\n        if (rotation > 180) rotation = rotation - 360\n        else if (rotation > 90) rotation = rotation - 180\n        else if (rotation < -180) rotation = rotation + 360\n        else if (rotation < -90) rotation = rotation + 180\n\n        let width = spacing\n        let height = spacing\n        let path\n\n        if (rotation === 0) {\n            path = `\n                M 0 0 L ${width} 0\n                M 0 ${height} L ${width} ${height}\n            `\n        } else if (rotation === 90) {\n            path = `\n                M 0 0 L 0 ${height}\n                M ${width} 0 L ${width} ${height}\n            `\n        } else {\n            width = Math.abs(spacing / Math.sin(degreesToRadians(rotation)))\n            height = spacing / Math.sin(degreesToRadians(90 - rotation))\n\n            if (rotation > 0) {\n                path = `\n                    M 0 ${-height} L ${width * 2} ${height}\n                    M ${-width} ${-height} L ${width} ${height}\n                    M ${-width} 0 L ${width} ${height * 2}\n                `\n            } else {\n                path = `\n                    M ${-width} ${height} L ${width} ${-height}\n                    M ${-width} ${height * 2} L ${width * 2} ${-height}\n                    M 0 ${height * 2} L ${width * 2} 0\n                `\n            }\n        }\n\n        return (\n            <pattern id={id} width={width} height={height} patternUnits=\"userSpaceOnUse\">\n                <rect\n                    width={width}\n                    height={height}\n                    fill={background}\n                    stroke=\"rgba(255, 0, 0, 0.1)\"\n                    strokeWidth={0}\n                />\n                <path d={path} strokeWidth={lineWidth} stroke={color} strokeLinecap=\"square\" />\n            </pattern>\n        )\n    }\n)\n\nexport const patternLinesDef = (id, options = {}) => ({\n    id,\n    type: 'patternLines',\n    ...options,\n})\n","import { memo } from 'react'\n\nexport const PatternSquaresDefaultProps = {\n    color: '#000000',\n    background: '#ffffff',\n    size: 4,\n    padding: 4,\n    stagger: false,\n}\n\nexport const PatternSquares = memo(props => {\n    const {\n        id,\n        color = PatternSquaresDefaultProps.color,\n        background = PatternSquaresDefaultProps.background,\n        size = PatternSquaresDefaultProps.size,\n        padding = PatternSquaresDefaultProps.padding,\n        stagger = PatternSquaresDefaultProps.stagger,\n    } = props\n\n    let fullSize = size + padding\n    const halfPadding = padding / 2\n    if (stagger === true) {\n        fullSize = size * 2 + padding * 2\n    }\n\n    return (\n        <pattern id={id} width={fullSize} height={fullSize} patternUnits=\"userSpaceOnUse\">\n            <rect width={fullSize} height={fullSize} fill={background} />\n            <rect x={halfPadding} y={halfPadding} width={size} height={size} fill={color} />\n            {stagger && (\n                <rect\n                    x={padding * 1.5 + size}\n                    y={padding * 1.5 + size}\n                    width={size}\n                    height={size}\n                    fill={color}\n                />\n            )}\n        </pattern>\n    )\n})\n\nexport const patternSquaresDef = (id, options = {}) => ({\n    id,\n    type: 'patternSquares',\n    ...options,\n})\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { PatternDots } from './PatternDots'\nimport { PatternLines } from './PatternLines'\nimport { PatternSquares } from './PatternSquares'\n\nexport const patternTypes = {\n    patternDots: PatternDots,\n    patternLines: PatternLines,\n    patternSquares: PatternSquares,\n}\n\nexport * from './PatternDots'\nexport * from './PatternLines'\nexport * from './PatternSquares'\n","import { createElement, memo } from 'react'\nimport { gradientTypes } from './gradients'\nimport { patternTypes } from './patterns'\n\nexport const defsMapping = {\n    ...gradientTypes,\n    ...patternTypes,\n}\n\n/**\n * Defs.propTypes = {\n *     defs: PropTypes.arrayOf(\n *         PropTypes.shape({\n *             type: PropTypes.oneOf(Object.keys(defsMapping)).isRequired,\n *             id: PropTypes.string.isRequired,\n *         })\n *     ),\n * }\n */\nconst Defs = ({ defs: definitions }) => {\n    if (!definitions || definitions.length < 1) return null\n\n    return (\n        <defs aria-hidden={true}>\n            {definitions.map(({ type, ...def }) => {\n                if (defsMapping[type])\n                    return createElement(defsMapping[type], { key: def.id, ...def })\n\n                return null\n            })}\n        </defs>\n    )\n}\n\nexport default memo(Defs)\n","import { forwardRef } from 'react'\nimport { useTheme } from '@nivo/theming'\nimport { Defs } from './defs'\n\nconst SvgWrapper = forwardRef(\n    (\n        {\n            width,\n            height,\n            margin,\n            defs,\n            children,\n            role,\n            ariaLabel,\n            ariaLabelledBy,\n            ariaDescribedBy,\n            isFocusable,\n        },\n        ref\n    ) => {\n        const theme = useTheme()\n\n        return (\n            <svg\n                xmlns=\"http://www.w3.org/2000/svg\"\n                width={width}\n                height={height}\n                role={role}\n                aria-label={ariaLabel}\n                aria-labelledby={ariaLabelledBy}\n                aria-describedby={ariaDescribedBy}\n                focusable={isFocusable}\n                tabIndex={isFocusable ? 0 : undefined}\n                ref={ref}\n            >\n                <Defs defs={defs} />\n                <rect width={width} height={height} fill={theme.background} />\n                <g transform={`translate(${margin.left},${margin.top})`}>{children}</g>\n            </svg>\n        )\n    }\n)\n\nexport default SvgWrapper\n","import { memo } from 'react'\n\nconst DotsItemSymbol = ({ size, color, borderWidth, borderColor }) => (\n    <circle\n        r={size / 2}\n        fill={color}\n        stroke={borderColor}\n        strokeWidth={borderWidth}\n        style={{ pointerEvents: 'none' }}\n    />\n)\n\nexport default memo(DotsItemSymbol)\n","import { createElement, memo, useCallback } from 'react'\nimport { useSpring, animated } from '@react-spring/web'\nimport { useTheme, sanitizeSvgTextStyle } from '@nivo/theming'\nimport { useMotionConfig } from '../../motion'\nimport DotsItemSymbol from './DotsItemSymbol'\n\nconst DotsItem = ({\n    x,\n    y,\n    symbol = DotsItemSymbol,\n    size,\n    datum,\n    color,\n    borderWidth,\n    borderColor,\n    label,\n    labelTextAnchor = 'middle',\n    labelYOffset = -12,\n    ariaLabel,\n    ariaLabelledBy,\n    ariaDescribedBy,\n    ariaHidden,\n    ariaDisabled,\n    isFocusable = false,\n    tabIndex = 0,\n    onFocus,\n    onBlur,\n    testId,\n}) => {\n    const theme = useTheme()\n\n    const { animate, config: springConfig } = useMotionConfig()\n    const animatedProps = useSpring({\n        transform: `translate(${x}, ${y})`,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    const handleFocus = useCallback(\n        event => {\n            onFocus?.(datum, event)\n        },\n        [onFocus, datum]\n    )\n\n    const handleBlur = useCallback(\n        event => {\n            onBlur?.(datum, event)\n        },\n        [onBlur, datum]\n    )\n\n    return (\n        <animated.g\n            transform={animatedProps.transform}\n            style={{ pointerEvents: 'none' }}\n            focusable={isFocusable}\n            tabIndex={isFocusable ? tabIndex : undefined}\n            aria-label={ariaLabel}\n            aria-labelledby={ariaLabelledBy}\n            aria-describedby={ariaDescribedBy}\n            aria-disabled={ariaDisabled}\n            aria-hidden={ariaHidden}\n            onFocus={isFocusable && onFocus ? handleFocus : undefined}\n            onBlur={isFocusable && onBlur ? handleBlur : undefined}\n            data-testid={testId}\n        >\n            {createElement(symbol, {\n                size,\n                color,\n                datum,\n                borderWidth,\n                borderColor,\n            })}\n            {label && (\n                <text\n                    textAnchor={labelTextAnchor}\n                    y={labelYOffset}\n                    style={sanitizeSvgTextStyle(theme.dots.text)}\n                >\n                    {label}\n                </text>\n            )}\n        </animated.g>\n    )\n}\n\nexport default memo(DotsItem)\n","import { memo } from 'react'\nimport { useTheme } from '@nivo/theming'\n\n/**\n *\n * @param {string} axis\n * @param {number} width\n * @param {number} height\n * @param {string} position\n * @param {number} offsetX\n * @param {number} offsetY\n * @param {string} orientation\n * @return {{ x: number, y: number, textAnchor: string }}\n */\nconst computeLabel = ({ axis, width, height, position, offsetX, offsetY, orientation }) => {\n    let x = 0\n    let y = 0\n    const rotation = orientation === 'vertical' ? -90 : 0\n    let textAnchor = 'start'\n\n    if (axis === 'x') {\n        switch (position) {\n            case 'top-left':\n                x = -offsetX\n                y = offsetY\n                textAnchor = 'end'\n                break\n            case 'top':\n                y = -offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'middle'\n                } else {\n                    textAnchor = 'start'\n                }\n                break\n            case 'top-right':\n                x = offsetX\n                y = offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'start'\n                } else {\n                    textAnchor = 'end'\n                }\n                break\n            case 'right':\n                x = offsetX\n                y = height / 2\n                if (orientation === 'horizontal') {\n                    textAnchor = 'start'\n                } else {\n                    textAnchor = 'middle'\n                }\n                break\n            case 'bottom-right':\n                x = offsetX\n                y = height - offsetY\n                textAnchor = 'start'\n                break\n            case 'bottom':\n                y = height + offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'middle'\n                } else {\n                    textAnchor = 'end'\n                }\n                break\n            case 'bottom-left':\n                y = height - offsetY\n                x = -offsetX\n                if (orientation === 'horizontal') {\n                    textAnchor = 'end'\n                } else {\n                    textAnchor = 'start'\n                }\n                break\n            case 'left':\n                x = -offsetX\n                y = height / 2\n                if (orientation === 'horizontal') {\n                    textAnchor = 'end'\n                } else {\n                    textAnchor = 'middle'\n                }\n                break\n        }\n    } else {\n        switch (position) {\n            case 'top-left':\n                x = offsetX\n                y = -offsetY\n                textAnchor = 'start'\n                break\n            case 'top':\n                x = width / 2\n                y = -offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'middle'\n                } else {\n                    textAnchor = 'start'\n                }\n                break\n            case 'top-right':\n                x = width - offsetX\n                y = -offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'end'\n                } else {\n                    textAnchor = 'start'\n                }\n                break\n            case 'right':\n                x = width + offsetX\n                if (orientation === 'horizontal') {\n                    textAnchor = 'start'\n                } else {\n                    textAnchor = 'middle'\n                }\n                break\n            case 'bottom-right':\n                x = width - offsetX\n                y = offsetY\n                textAnchor = 'end'\n                break\n            case 'bottom':\n                x = width / 2\n                y = offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'middle'\n                } else {\n                    textAnchor = 'end'\n                }\n                break\n            case 'bottom-left':\n                x = offsetX\n                y = offsetY\n                if (orientation === 'horizontal') {\n                    textAnchor = 'start'\n                } else {\n                    textAnchor = 'end'\n                }\n                break\n            case 'left':\n                x = -offsetX\n                if (orientation === 'horizontal') {\n                    textAnchor = 'end'\n                } else {\n                    textAnchor = 'middle'\n                }\n                break\n        }\n    }\n\n    return { x, y, rotation, textAnchor }\n}\n\n/**\n * CartesianMarkersItem.propTypes = {\n *     width: PropTypes.number.isRequired,\n *     height: PropTypes.number.isRequired,\n *\n *     axis: PropTypes.oneOf(['x', 'y']).isRequired,\n *     scale: PropTypes.func.isRequired,\n *     value: PropTypes.oneOfType([PropTypes.number, PropTypes.string, PropTypes.instanceOf(Date)])\n *         .isRequired,\n *     lineStyle: PropTypes.object,\n *     textStyle: PropTypes.object,\n *\n *     legend: PropTypes.string,\n *     legendPosition: PropTypes.oneOf([\n *         'top-left',\n *         'top',\n *         'top-right',\n *         'right',\n *         'bottom-right',\n *         'bottom',\n *         'bottom-left',\n *         'left',\n *     ]),\n *     legendOffsetX: PropTypes.number.isRequired,\n *     legendOffsetY: PropTypes.number.isRequired,\n *     legendOrientation: PropTypes.oneOf(['horizontal', 'vertical']).isRequired,\n * }\n */\nconst CartesianMarkersItem = ({\n    width,\n    height,\n    axis,\n    scale,\n    value,\n    lineStyle,\n    textStyle,\n    legend,\n    legendNode,\n    legendPosition = 'top-right',\n    legendOffsetX = 14,\n    legendOffsetY = 14,\n    legendOrientation = 'horizontal',\n}) => {\n    const theme = useTheme()\n\n    let x = 0\n    let x2 = 0\n    let y = 0\n    let y2 = 0\n\n    if (axis === 'y') {\n        y = scale(value)\n        x2 = width\n    } else {\n        x = scale(value)\n        y2 = height\n    }\n\n    if (legend && !legendNode) {\n        const legendProps = computeLabel({\n            axis,\n            width,\n            height,\n            position: legendPosition,\n            offsetX: legendOffsetX,\n            offsetY: legendOffsetY,\n            orientation: legendOrientation,\n        })\n        legendNode = (\n            <text\n                transform={`translate(${legendProps.x}, ${legendProps.y}) rotate(${legendProps.rotation})`}\n                textAnchor={legendProps.textAnchor}\n                dominantBaseline=\"central\"\n                style={textStyle}\n            >\n                {legend}\n            </text>\n        )\n    }\n\n    return (\n        <g transform={`translate(${x}, ${y})`}>\n            <line\n                x1={0}\n                x2={x2}\n                y1={0}\n                y2={y2}\n                stroke={theme.markers.lineColor}\n                strokeWidth={theme.markers.lineStrokeWidth}\n                style={lineStyle}\n            />\n            {legendNode}\n        </g>\n    )\n}\n\nexport default memo(CartesianMarkersItem)\n","import { memo } from 'react'\nimport CartesianMarkersItem from './CartesianMarkersItem'\n\nconst CartesianMarkers = ({ markers, width, height, xScale, yScale }) => {\n    if (!markers || markers.length === 0) return null\n\n    return markers.map((marker, i) => (\n        <CartesianMarkersItem\n            key={i}\n            {...marker}\n            width={width}\n            height={height}\n            scale={marker.axis === 'y' ? yScale : xScale}\n        />\n    ))\n}\n\nexport default memo(CartesianMarkers)\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport { Component } from 'react'\nimport { Container } from '../components/Container'\n\nexport const withContainer = WrappedComponent => {\n    return class extends Component {\n        render() {\n            const { theme, renderWrapper, animate, motionConfig, ...childProps } = this.props\n\n            return (\n                <Container\n                    theme={theme}\n                    renderWrapper={renderWrapper}\n                    isInteractive={childProps.isInteractive}\n                    animate={animate}\n                    motionConfig={motionConfig}\n                >\n                    <WrappedComponent {...childProps} />\n                </Container>\n            )\n        }\n    }\n}\n","import { interpolateString } from 'd3-interpolate'\nimport { useEffect, useMemo, useRef } from 'react'\nimport { useSpring, to } from '@react-spring/web'\nimport { useMotionConfig } from '../motion'\n\nconst usePrevious = value => {\n    const ref = useRef()\n\n    useEffect(() => {\n        ref.current = value\n    }, [value])\n\n    return ref.current\n}\n\nexport const useAnimatedPath = path => {\n    const { animate, config: springConfig } = useMotionConfig()\n\n    const previousPath = usePrevious(path)\n    const interpolator = useMemo(() => interpolateString(previousPath, path), [previousPath, path])\n\n    const { value } = useSpring({\n        from: { value: 0 },\n        to: { value: 1 },\n        reset: true,\n        config: springConfig,\n        immediate: !animate,\n    })\n\n    return to(value, interpolator)\n}\n","import { createContext } from 'react'\n\nexport const ChartContext = createContext(undefined)\n","import without from 'lodash/without.js'\nimport {\n    curveBasis,\n    curveBasisClosed,\n    curveBasisOpen,\n    curveBundle,\n    curveCardinal,\n    curveCardinalClosed,\n    curveCardinalOpen,\n    curveCatmullRom,\n    curveCatmullRomClosed,\n    curveCatmullRomOpen,\n    curveLinear,\n    curveLinearClosed,\n    curveMonotoneX,\n    curveMonotoneY,\n    curveNatural,\n    curveStep,\n    curveStepAfter,\n    curveStepBefore,\n} from 'd3-shape'\n\nexport const curvePropMapping = {\n    basis: curveBasis,\n    basisClosed: curveBasisClosed,\n    basisOpen: curveBasisOpen,\n    bundle: curveBundle,\n    cardinal: curveCardinal,\n    cardinalClosed: curveCardinalClosed,\n    cardinalOpen: curveCardinalOpen,\n    catmullRom: curveCatmullRom,\n    catmullRomClosed: curveCatmullRomClosed,\n    catmullRomOpen: curveCatmullRomOpen,\n    linear: curveLinear,\n    linearClosed: curveLinearClosed,\n    monotoneX: curveMonotoneX,\n    monotoneY: curveMonotoneY,\n    natural: curveNatural,\n    step: curveStep,\n    stepAfter: curveStepAfter,\n    stepBefore: curveStepBefore,\n}\n\nexport const curvePropKeys = Object.keys(curvePropMapping)\n\nexport const closedCurvePropKeys = curvePropKeys.filter(c => c.endsWith('Closed'))\n\n// Safe curves to be used with d3 area shape generator\nexport const areaCurvePropKeys = without(\n    curvePropKeys,\n    'bundle',\n    'basisClosed',\n    'basisOpen',\n    'cardinalClosed',\n    'cardinalOpen',\n    'catmullRomClosed',\n    'catmullRomOpen',\n    'linearClosed'\n)\n\n// Safe curves to be used with d3 line shape generator\nexport const lineCurvePropKeys = without(\n    curvePropKeys,\n    'bundle',\n    'basisClosed',\n    'basisOpen',\n    'cardinalClosed',\n    'cardinalOpen',\n    'catmullRomClosed',\n    'catmullRomOpen',\n    'linearClosed'\n)\n\n/**\n * Returns curve interpolator from given identifier.\n *\n * @param {string} id - Curve interpolator identifier\n * @return {Function}\n */\nexport const curveFromProp = id => {\n    const curveInterpolator = curvePropMapping[id]\n    if (!curveInterpolator) {\n        throw new TypeError(`'${id}', is not a valid curve interpolator identifier.`)\n    }\n\n    return curvePropMapping[id]\n}\n","import {\n    // order\n    stackOrderAscending,\n    stackOrderDescending,\n    stackOrderInsideOut,\n    stackOrderNone,\n    stackOrderReverse,\n    // offset\n    stackOffsetExpand,\n    stackOffsetDiverging,\n    stackOffsetNone,\n    stackOffsetSilhouette,\n    stackOffsetWiggle,\n} from 'd3-shape'\n\nexport const stackOrderPropMapping = {\n    ascending: stackOrderAscending,\n    descending: stackOrderDescending,\n    insideOut: stackOrderInsideOut,\n    none: stackOrderNone,\n    reverse: stackOrderReverse,\n}\n\nexport const stackOrderPropKeys = Object.keys(stackOrderPropMapping)\n\nexport const stackOrderFromProp = prop => stackOrderPropMapping[prop]\n\nexport const stackOffsetPropMapping = {\n    expand: stackOffsetExpand,\n    diverging: stackOffsetDiverging,\n    none: stackOffsetNone,\n    silhouette: stackOffsetSilhouette,\n    wiggle: stackOffsetWiggle,\n}\n\nexport const stackOffsetPropKeys = Object.keys(stackOffsetPropMapping)\n\nexport const stackOffsetFromProp = prop => stackOffsetPropMapping[prop]\n","export const blendModes = [\n    'normal',\n    'multiply',\n    'screen',\n    'overlay',\n    'darken',\n    'lighten',\n    'color-dodge',\n    'color-burn',\n    'hard-light',\n    'soft-light',\n    'difference',\n    'exclusion',\n    'hue',\n    'saturation',\n    'color',\n    'luminosity',\n]\n\nexport * from './curve'\nexport * from './stack'\n","import { useMemo } from 'react'\nimport { curveFromProp } from '../props'\n\n/**\n * Transform d3 curve interpolation identifier\n * to its corresponding interpolator.\n */\nexport const useCurveInterpolation = interpolation =>\n    useMemo(() => curveFromProp(interpolation), [interpolation])\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport last from 'lodash/last.js'\nimport isArray from 'lodash/isArray.js'\nimport isFunction from 'lodash/isFunction.js'\nimport { scaleQuantize } from 'd3-scale'\nimport {\n    // Diverging\n    schemeBrBG,\n    schemePRGn,\n    schemePiYG,\n    schemePuOr,\n    schemeRdBu,\n    schemeRdGy,\n    schemeRdYlBu,\n    schemeRdYlGn,\n    schemeSpectral,\n\n    // Sequential (Single Hue)\n    schemeBlues,\n    schemeGreens,\n    schemeGreys,\n    schemeOranges,\n    schemePurples,\n    schemeReds,\n\n    // Sequential (Multi-Hue)\n    schemeBuGn,\n    schemeBuPu,\n    schemeGnBu,\n    schemeOrRd,\n    schemePuBuGn,\n    schemePuBu,\n    schemePuRd,\n    schemeRdPu,\n    schemeYlGnBu,\n    schemeYlGn,\n    schemeYlOrBr,\n    schemeYlOrRd,\n} from 'd3-scale-chromatic'\n\nexport const quantizeColorScales = {\n    nivo: ['#d76445', '#f47560', '#e8c1a0', '#97e3d5', '#61cdbb', '#00b0a7'],\n\n    // Diverging\n    BrBG: last(schemeBrBG),\n    PRGn: last(schemePRGn),\n    PiYG: last(schemePiYG),\n    PuOr: last(schemePuOr),\n    RdBu: last(schemeRdBu),\n    RdGy: last(schemeRdGy),\n    RdYlBu: last(schemeRdYlBu),\n    RdYlGn: last(schemeRdYlGn),\n    spectral: last(schemeSpectral),\n\n    // Sequential (Single Hue)\n    blues: last(schemeBlues),\n    greens: last(schemeGreens),\n    greys: last(schemeGreys),\n    oranges: last(schemeOranges),\n    purples: last(schemePurples),\n    reds: last(schemeReds),\n\n    // Sequential (Multi-Hue)\n    BuGn: last(schemeBuGn),\n    BuPu: last(schemeBuPu),\n    GnBu: last(schemeGnBu),\n    OrRd: last(schemeOrRd),\n    PuBuGn: last(schemePuBuGn),\n    PuBu: last(schemePuBu),\n    PuRd: last(schemePuRd),\n    RdPu: last(schemeRdPu),\n    YlGnBu: last(schemeYlGnBu),\n    YlGn: last(schemeYlGn),\n    YlOrBr: last(schemeYlOrBr),\n    YlOrRd: last(schemeYlOrRd),\n}\n\nexport const quantizeColorScalesKeys = Object.keys(quantizeColorScales)\n\nexport const guessQuantizeColorScale = colors => {\n    // colors is already a valid scale\n    if (isFunction(colors)) {\n        if (!isFunction(colors.domain)) {\n            throw new Error(\n                `Provided colors should be a valid quantize scale providing a 'domain()' function`\n            )\n        }\n\n        return colors\n    }\n\n    if (quantizeColorScales[colors]) {\n        // use predefined d3 quantize color scale\n        return scaleQuantize().range(quantizeColorScales[colors])\n    }\n\n    // user defined colors\n    if (isArray(colors)) return scaleQuantize().range(colors)\n\n    throw new Error(\n        `Unable to guess quantize color scale from '${colors}',\\nmust be a function or one of:\\n'${quantizeColorScalesKeys.join(\n            `', '`\n        )}'`\n    )\n}\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\nimport last from 'lodash/last.js'\nimport isArray from 'lodash/isArray.js'\nimport isString from 'lodash/isString.js'\nimport { scaleOrdinal, scaleSequential } from 'd3-scale'\nimport {\n    // categorical\n    schemeCategory10,\n    schemeAccent,\n    schemeDark2,\n    schemePaired,\n    schemePastel1,\n    schemePastel2,\n    schemeSet1,\n    schemeSet2,\n    schemeSet3,\n    // diverging\n    interpolateBrBG,\n    schemeBrBG,\n    interpolatePRGn,\n    schemePRGn,\n    interpolatePiYG,\n    schemePiYG,\n    interpolatePuOr,\n    schemePuOr,\n    interpolateRdBu,\n    schemeRdBu,\n    interpolateRdGy,\n    schemeRdGy,\n    interpolateRdYlBu,\n    schemeRdYlBu,\n    interpolateRdYlGn,\n    schemeRdYlGn,\n    interpolateSpectral,\n    schemeSpectral,\n    // sequential single hue\n    interpolateBlues,\n    schemeBlues,\n    interpolateGreens,\n    schemeGreens,\n    interpolateGreys,\n    schemeGreys,\n    interpolateOranges,\n    schemeOranges,\n    interpolatePurples,\n    schemePurples,\n    interpolateReds,\n    schemeReds,\n    // sequential multi hue\n    interpolateViridis,\n    interpolateInferno,\n    interpolateMagma,\n    interpolatePlasma,\n    interpolateWarm,\n    interpolateCool,\n    interpolateCubehelixDefault,\n    interpolateBuGn,\n    schemeBuGn,\n    interpolateBuPu,\n    schemeBuPu,\n    interpolateGnBu,\n    schemeGnBu,\n    interpolateOrRd,\n    schemeOrRd,\n    interpolatePuBuGn,\n    schemePuBuGn,\n    interpolatePuBu,\n    schemePuBu,\n    interpolatePuRd,\n    schemePuRd,\n    interpolateRdPu,\n    schemeRdPu,\n    interpolateYlGnBu,\n    schemeYlGnBu,\n    interpolateYlGn,\n    schemeYlGn,\n    interpolateYlOrBr,\n    schemeYlOrBr,\n    interpolateYlOrRd,\n    schemeYlOrRd,\n    // cyclical\n    interpolateRainbow,\n    interpolateSinebow,\n} from 'd3-scale-chromatic'\n\n// used for ordinal color scales\nconst colorSchemes = {\n    nivo: ['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'],\n    // categorical\n    category10: schemeCategory10,\n    accent: schemeAccent,\n    dark2: schemeDark2,\n    paired: schemePaired,\n    pastel1: schemePastel1,\n    pastel2: schemePastel2,\n    set1: schemeSet1,\n    set2: schemeSet2,\n    set3: schemeSet3,\n    // diverging\n    brown_blueGreen: last(schemeBrBG),\n    purpleRed_green: last(schemePRGn),\n    pink_yellowGreen: last(schemePiYG),\n    purple_orange: last(schemePuOr),\n    red_blue: last(schemeRdBu),\n    red_grey: last(schemeRdGy),\n    red_yellow_blue: last(schemeRdYlBu),\n    red_yellow_green: last(schemeRdYlGn),\n    spectral: last(schemeSpectral),\n    // sequential single hue\n    blues: last(schemeBlues),\n    greens: last(schemeGreens),\n    greys: last(schemeGreys),\n    oranges: last(schemeOranges),\n    purples: last(schemePurples),\n    reds: last(schemeReds),\n    // sequential multi hue\n    blue_green: last(schemeBuGn),\n    blue_purple: last(schemeBuPu),\n    green_blue: last(schemeGnBu),\n    orange_red: last(schemeOrRd),\n    purple_blue_green: last(schemePuBuGn),\n    purple_blue: last(schemePuBu),\n    purple_red: last(schemePuRd),\n    red_purple: last(schemeRdPu),\n    yellow_green_blue: last(schemeYlGnBu),\n    yellow_green: last(schemeYlGn),\n    yellow_orange_brown: last(schemeYlOrBr),\n    yellow_orange_red: last(schemeYlOrRd),\n}\n\nexport const colorSchemeIds = [\n    'nivo',\n    // categorical\n    'category10',\n    'accent',\n    'dark2',\n    'paired',\n    'pastel1',\n    'pastel2',\n    'set1',\n    'set2',\n    'set3',\n    // diverging\n    'brown_blueGreen',\n    'purpleRed_green',\n    'pink_yellowGreen',\n    'purple_orange',\n    'red_blue',\n    'red_grey',\n    'red_yellow_blue',\n    'red_yellow_green',\n    'spectral',\n    // sequential single hue\n    'blues',\n    'greens',\n    'greys',\n    'oranges',\n    'purples',\n    'reds',\n    // sequential multi hue\n    'blue_green',\n    'blue_purple',\n    'green_blue',\n    'orange_red',\n    'purple_blue_green',\n    'purple_blue',\n    'purple_red',\n    'red_purple',\n    'yellow_green_blue',\n    'yellow_green',\n    'yellow_orange_brown',\n    'yellow_orange_red',\n]\n\n// used for sequential color scales\nexport const colorInterpolators = {\n    // diverging\n    brown_blueGreen: interpolateBrBG,\n    purpleRed_green: interpolatePRGn,\n    pink_yellowGreen: interpolatePiYG,\n    purple_orange: interpolatePuOr,\n    red_blue: interpolateRdBu,\n    red_grey: interpolateRdGy,\n    red_yellow_blue: interpolateRdYlBu,\n    red_yellow_green: interpolateRdYlGn,\n    spectral: interpolateSpectral,\n    // sequential single hue\n    blues: interpolateBlues,\n    greens: interpolateGreens,\n    greys: interpolateGreys,\n    oranges: interpolateOranges,\n    purples: interpolatePurples,\n    reds: interpolateReds,\n    // sequential multi hue\n    viridis: interpolateViridis,\n    inferno: interpolateInferno,\n    magma: interpolateMagma,\n    plasma: interpolatePlasma,\n    warm: interpolateWarm,\n    cool: interpolateCool,\n    cubehelixDefault: interpolateCubehelixDefault,\n    blue_green: interpolateBuGn,\n    blue_purple: interpolateBuPu,\n    green_blue: interpolateGnBu,\n    orange_red: interpolateOrRd,\n    purple_blue_green: interpolatePuBuGn,\n    purple_blue: interpolatePuBu,\n    purple_red: interpolatePuRd,\n    red_purple: interpolateRdPu,\n    yellow_green_blue: interpolateYlGnBu,\n    yellow_green: interpolateYlGn,\n    yellow_orange_brown: interpolateYlOrBr,\n    yellow_orange_red: interpolateYlOrRd,\n    // cyclical\n    rainbow: interpolateRainbow,\n    sinebow: interpolateSinebow,\n}\n\nexport const colorInterpolatorIds = [\n    // diverging\n    'brown_blueGreen',\n    'purpleRed_green',\n    'pink_yellowGreen',\n    'purple_orange',\n    'red_blue',\n    'red_grey',\n    'red_yellow_blue',\n    'red_yellow_green',\n    'spectral',\n    // sequential single hue\n    'blues',\n    'greens',\n    'greys',\n    'oranges',\n    'purples',\n    'reds',\n    // sequential multi hue\n    'viridis',\n    'inferno',\n    'magma',\n    'plasma',\n    'warm',\n    'cool',\n    'cubehelixDefault',\n    'blue_green',\n    'blue_purple',\n    'green_blue',\n    'orange_red',\n    'purple_blue_green',\n    'purple_blue',\n    'purple_red',\n    'red_purple',\n    'yellow_green_blue',\n    'yellow_green',\n    'yellow_orange_brown',\n    'yellow_orange_red',\n    // cyclical\n    'rainbow',\n    'sinebow',\n]\n\nexport const nivoCategoricalColors = () =>\n    scaleOrdinal(['#e8c1a0', '#f47560', '#f1e15b', '#e8a838', '#61cdbb', '#97e3d5'])\n\nexport const getColorScale = (colors, dataScale) => {\n    if (isString(colors)) {\n        const scheme = colorSchemes[colors]\n        if (scheme !== undefined) {\n            const scale = scaleOrdinal(scheme)\n            scale.type = 'ordinal'\n\n            return scale\n        }\n\n        if (dataScale !== undefined && colors.indexOf('seq:') === 0) {\n            const interpolator = colorInterpolators[colors.slice(4)]\n            if (interpolator !== undefined) {\n                const scale = scaleSequential(interpolator).domain(dataScale.domain())\n                scale.type = 'sequential'\n\n                return scale\n            }\n        }\n    }\n\n    if (isArray(colors)) {\n        const scale = scaleOrdinal(colors)\n        scale.type = 'ordinal'\n\n        return scale\n    }\n\n    // just use provided value,\n    // all elements will have identical color\n    return () => colors\n}\n\nexport * from './quantize'\n","import { scaleOrdinal } from 'd3-scale'\nimport { schemeSet3 } from 'd3-scale-chromatic'\nimport { nivoCategoricalColors } from '../lib/colors'\n\n// motion\nexport const defaultAnimate = true\n\n// colors\nexport const defaultCategoricalColors = nivoCategoricalColors\nexport const defaultColorRange = scaleOrdinal(schemeSet3)\n\n// margin\nexport const defaultMargin = {\n    top: 0,\n    right: 0,\n    bottom: 0,\n    left: 0,\n}\n","import { useMemo } from 'react'\nimport { defaultMargin } from '../defaults'\n\nexport const useDimensions = (width, height, partialMargin = {}) =>\n    useMemo(() => {\n        const margin = {\n            ...defaultMargin,\n            ...partialMargin,\n        }\n\n        return {\n            margin,\n            innerWidth: width - margin.left - margin.right,\n            innerHeight: height - margin.top - margin.bottom,\n            outerWidth: width,\n            outerHeight: height,\n        }\n    }, [width, height, partialMargin])\n","import { useRef, useState, useEffect } from 'react'\n\nexport const useMeasure = () => {\n    const measureRef = useRef(null)\n\n    const [bounds, setBounds] = useState({\n        left: 0,\n        top: 0,\n        width: 0,\n        height: 0,\n    })\n\n    const [observer] = useState(() => {\n        // Check if ResizeObserver is defined in current env (could be browser, node.js, jsdom etc.).\n        if (typeof ResizeObserver === 'undefined') return null\n\n        return new ResizeObserver(([entry]) => setBounds(entry.contentRect))\n    })\n\n    useEffect(() => {\n        if (measureRef.current && observer !== null) {\n            observer.observe(measureRef.current)\n        }\n\n        return () => {\n            if (observer !== null) observer.disconnect()\n        }\n    }, [observer])\n\n    return [measureRef, bounds]\n}\n","import { useMemo } from 'react'\nimport { format as d3Format } from 'd3-format'\nimport { timeFormat as d3TimeFormat } from 'd3-time-format'\n\nexport const getValueFormatter = format => {\n    // user defined function\n    if (typeof format === 'function') return format\n\n    if (typeof format === 'string') {\n        // time format specifier\n        if (format.indexOf('time:') === 0) {\n            return d3TimeFormat(format.slice('5'))\n        }\n\n        // standard format specifier\n        return d3Format(format)\n    }\n\n    // no formatting\n    return value => `${value}`\n}\n\nexport const useValueFormatter = format => useMemo(() => getValueFormatter(format), [format])\n","import isFunction from 'lodash/isFunction.js'\nimport get from 'lodash/get.js'\nimport { format } from 'd3-format'\nimport { useMemo } from 'react'\n\nexport const getLabelGenerator = (_label, labelFormat) => {\n    const getRawLabel = isFunction(_label) ? _label : d => get(d, _label)\n    let formatter\n    if (labelFormat) {\n        formatter = isFunction(labelFormat) ? labelFormat : format(labelFormat)\n    }\n\n    if (formatter) return d => formatter(getRawLabel(d))\n    return getRawLabel\n}\n\nexport const getPropertyAccessor = accessor =>\n    isFunction(accessor) ? accessor : d => get(d, accessor)\n\nexport const usePropertyAccessor = accessor =>\n    useMemo(() => getPropertyAccessor(accessor), [accessor])\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport const boxAlignments = [\n    'center',\n    'top-left',\n    'top',\n    'top-right',\n    'right',\n    'bottom-right',\n    'bottom',\n    'bottom-left',\n    'left',\n]\n\n/**\n * Align a box inside another containing box and returns x, y positions.\n *\n * @param {{ x: number, y: number, width: number, height: number }} box\n * @param {{ x: number, y: number, width: number, height: number }} container\n * @param {'center'|'top-left'|'top'|'top-right'|'right'|'bottom-right'|'bottom'|'bottom-left'|'left'} alignment\n * @return {[number, number]}\n */\nexport const alignBox = (box, container, alignment) => {\n    const deltaX = container.width - box.width\n    const deltaY = container.height - box.height\n\n    let x = 0\n    let y = 0\n    if (alignment === 'center') {\n        x = deltaX / 2\n        y = deltaY / 2\n    }\n    if (alignment === 'top') {\n        x = deltaX / 2\n    }\n    if (alignment === 'top-right') {\n        x = deltaX\n    }\n    if (alignment === 'right') {\n        x = deltaX\n        y = deltaY / 2\n    }\n    if (alignment === 'bottom-right') {\n        x = deltaX\n        y = deltaY\n    }\n    if (alignment === 'bottom') {\n        x = deltaX / 2\n        y = deltaY\n    }\n    if (alignment === 'bottom-left') {\n        y = deltaY\n    }\n    if (alignment === 'left') {\n        y = deltaY / 2\n    }\n\n    return [x, y]\n}\n","/**\n * Computes distance between two points.\n *\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {number}\n */\nexport const getDistance = (x1, y1, x2, y2) => Math.sqrt((x2 - x1) ** 2 + (y2 - y1) ** 2)\n\n/**\n * Computes angle (radians) between two points.\n *\n * @param {number} x1\n * @param {number} y1\n * @param {number} x2\n * @param {number} y2\n * @return {number}\n */\nexport const getAngle = (x1, y1, x2, y2) => {\n    const angle = Math.atan2(y2 - y1, x2 - x1) - Math.PI / 2\n\n    return angle > 0 ? angle : Math.PI * 2 + angle\n}\n\n/**\n * Check if cursor is in given rectangle.\n *\n * @param {number} x\n * @param {number} y\n * @param {number} width\n * @param {number} height\n * @param {number} cursorX\n * @param {number} cursorY\n * @return {boolean}\n */\nexport const isCursorInRect = (x, y, width, height, cursorX, cursorY) =>\n    x <= cursorX && cursorX <= x + width && y <= cursorY && cursorY <= y + height\n","/*\n * This file is part of the nivo project.\n *\n * Copyright 2016-present, Raphaël Benitte.\n *\n * For the full copyright and license information, please view the LICENSE\n * file that was distributed with this source code.\n */\n\nexport * from './detect'\n\n/**\n * Get the position of the cursor (from `event`) relative\n * to its container (`el`).\n *\n * In a normal situation mouse enter/leave events\n * capture the position ok. But when the chart is inside a scaled\n * element with a CSS transform like: `transform: scale(2);`\n * tooltip are not positioned ok.\n *\n * Comparing original width `box.width` against the scaled width\n * give us the scaling factor to calculate the proper mouse position.\n */\nexport const getRelativeCursor = (el, event) => {\n    const { clientX, clientY } = 'touches' in event ? event.touches[0] : event\n\n    // Get the dimensions of the element, in case it has\n    // been scaled using a transform for example, we get\n    // the scaled dimensions, not the original ones.\n    const currentBox = el.getBoundingClientRect()\n\n    // Original dimensions, necessary to compute `scaleFactor`.\n    let originalBox\n    if (el.getBBox !== undefined) {\n        // For SVG elements.\n        originalBox = el.getBBox()\n    } else {\n        // Other elements.\n        originalBox = {\n            // These should be here, except when we are running in jsdom.\n            // https://github.com/jsdom/jsdom/issues/135\n            width: el.offsetWidth || 0,\n            height: el.offsetHeight || 0,\n        }\n    }\n\n    const scaleFactor =\n        originalBox.width === currentBox.width ? 1 : originalBox.width / currentBox.width\n    return [(clientX - currentBox.left) * scaleFactor, (clientY - currentBox.top) * scaleFactor]\n}\n","import isFunction from 'lodash/isFunction.js'\nimport isPlainObject from 'lodash/isPlainObject.js'\nimport pick from 'lodash/pick.js'\nimport isEqual from 'lodash/isEqual.js'\nimport get from 'lodash/get.js'\nimport set from 'lodash/set.js'\nimport { gradientTypes, patternTypes } from '../components/defs'\n\nconst gradientKeys = Object.keys(gradientTypes)\nconst patternKeys = Object.keys(patternTypes)\n\n/**\n * Check a node matches given def predicate.\n *\n * @param {string|Function|Object} predicate\n * @param {Object}                 node\n * @param {string}                 [dataKey] - Optional path to access node data\n * @returns {boolean}\n */\nexport const isMatchingDef = (predicate, node, dataKey) => {\n    if (predicate === '*') {\n        return true\n    } else if (isFunction(predicate)) {\n        return predicate(node)\n    } else if (isPlainObject(predicate)) {\n        const data = dataKey ? get(node, dataKey) : node\n        return isEqual(pick(data, Object.keys(predicate)), predicate)\n    }\n\n    return false\n}\n\n/**\n * Compute SVG defs.\n *\n * @param {Array.<Object>} defs               - Base SVG defs configs\n * @param {Array.<Object>} nodes              - Data nodes to apply defs on\n * @param {Array.<Object>} rules              - Rules used to conditionally apply defs on data nodes\n * @param {string}         [dataKey]          - Path to node data, used for rule object query based predicate\n * @param {string}         [colorKey='color'] - Node color path, required when inheritance is involved\n * @param {string}         [targetKey='fill'] - Node target property to apply def ID on\n * @returns {Array}\n */\nexport const bindDefs = (\n    defs,\n    nodes,\n    rules,\n    { dataKey, colorKey = 'color', targetKey = 'fill' } = {}\n) => {\n    let boundDefs = []\n\n    // will hold generated variation ids,\n    // to avoid generating multiple identical defs\n    const generatedIds = {}\n\n    if (defs.length && nodes.length) {\n        // first, add base defs\n        boundDefs = [...defs]\n\n        nodes.forEach(node => {\n            for (const rule of rules) {\n                const { id, match } = rule\n                if (isMatchingDef(match, node, dataKey)) {\n                    const def = defs.find(({ id: defId }) => defId === id)\n                    if (def) {\n                        if (patternKeys.includes(def.type)) {\n                            if (def.background === 'inherit' || def.color === 'inherit') {\n                                const nodeColor = get(node, colorKey)\n                                let background = def.background\n                                let color = def.color\n\n                                let inheritedId = id\n                                if (def.background === 'inherit') {\n                                    inheritedId = `${inheritedId}.bg.${nodeColor}`\n                                    background = nodeColor\n                                }\n                                if (def.color === 'inherit') {\n                                    inheritedId = `${inheritedId}.fg.${nodeColor}`\n                                    color = nodeColor\n                                }\n\n                                set(node, targetKey, `url(#${inheritedId})`)\n                                if (!generatedIds[inheritedId]) {\n                                    boundDefs.push({\n                                        ...def,\n                                        id: inheritedId,\n                                        background,\n                                        color,\n                                    })\n                                    generatedIds[inheritedId] = 1\n                                }\n                            } else {\n                                // do not generate new def as there's no inheritance involved\n                                set(node, targetKey, `url(#${id})`)\n                            }\n                        } else if (gradientKeys.includes(def.type)) {\n                            const allColors = def.colors.map(({ color }) => color)\n\n                            if (allColors.includes('inherit')) {\n                                const nodeColor = get(node, colorKey)\n\n                                let inheritedId = id\n                                const inheritedDef = {\n                                    ...def,\n                                    colors: def.colors.map((colorStop, i) => {\n                                        if (colorStop.color !== 'inherit') return colorStop\n\n                                        inheritedId = `${inheritedId}.${i}.${nodeColor}`\n\n                                        return {\n                                            ...colorStop,\n                                            color:\n                                                colorStop.color === 'inherit'\n                                                    ? nodeColor\n                                                    : colorStop.color,\n                                        }\n                                    }),\n                                }\n                                inheritedDef.id = inheritedId\n\n                                set(node, targetKey, `url(#${inheritedId})`)\n                                if (!generatedIds[inheritedId]) {\n                                    boundDefs.push(inheritedDef)\n                                    generatedIds[inheritedId] = 1\n                                }\n                            } else {\n                                // do not generate new def as there's no inheritance involved\n                                set(node, targetKey, `url(#${id})`)\n                            }\n                        }\n                    }\n\n                    // break loop on first match\n                    break\n                }\n            }\n        })\n    }\n\n    return boundDefs\n}\n","export function mergeRefs(...refs) {\n    return value => {\n        for (const ref of refs) {\n            if (typeof ref === 'function') {\n                ref(value)\n            } else if (ref != null) {\n                ref.current = value\n            }\n        }\n    }\n}\n","export const BOX_ANCHORS = [\n    'center',\n    'top-left',\n    'top',\n    'top-right',\n    'right',\n    'bottom-right',\n    'bottom',\n    'bottom-left',\n    'left',\n]\n"],"names":["motionConfigContext","createContext","motionDefaultProps","animate","config","MotionConfigProvider","props","children","_props$animate","_props$config","value","useMemo","reactSpringConfig","isString","presets","_jsx","Provider","useMotionConfig","useContext","ConditionalWrapper","_ref","condition","wrapper","cloneElement","containerStyle","position","Container","theme","_ref$renderWrapper","renderWrapper","_ref$isInteractive","isInteractive","motionConfig","container","useRef","ThemeProvider","TooltipProvider","_jsxs","style","ref","Tooltip","noop","LegacyContainer","_useTooltipHandlers","useTooltipHandlers","tooltipActions","actions","tooltipState","state","showTooltip","useCallback","content","event","showTooltipFromEvent","handlers","hideTooltip","TooltipActionsContext","TooltipStateContext","dimensionsEqual","a","b","width","height","InnerResponsiveWrapper","onResize","debounceResize","dimensions","useDebounce","equalityFn","useEffect","_Fragment","ResponsiveWrapper","_ref2","defaultWidth","defaultHeight","_ref2$debounceResize","AutoSizer","_ref3","LinearGradient","id","colors","rest","_objectWithoutPropertiesLoose","_excluded","_extends","x1","x2","y1","y2","map","offset","color","opacity","stopColor","stopOpacity","undefined","linearGradientDef","options","type","gradientTypes","linearGradient","PatternDotsDefaultProps","background","size","padding","stagger","PatternDots","memo","_props$background","_props$color","_props$size","_props$padding","_props$stagger","fullSize","radius","halfPadding","patternUnits","fill","cx","cy","r","patternDotsDef","TWO_PI","Math","PI","degreesToRadians","degrees","radiansToDegrees","radians","midAngle","arc","startAngle","endAngle","positionFromAngle","angle","distance","x","cos","y","sin","normalizeAngleDegrees","absAngle","clampArc","length","clampedEndAngle","abs","textPropsByEngine","svg","align","left","center","right","start","middle","end","baseline","top","bottom","canvas","getPolarLabelProps","rotation","engine","textProps","_positionFromAngle","rotate","PatternLinesDefaultProps","spacing","lineWidth","PatternLines","_ref$spacing","_spacing","_ref$rotation","_rotation","_ref$background","_ref$color","_ref$lineWidth","round","path","stroke","strokeWidth","d","strokeLinecap","patternLinesDef","PatternSquaresDefaultProps","PatternSquares","patternSquaresDef","patternTypes","patternDots","patternLines","patternSquares","defsMapping","definitions","defs","def","createElement","key","SvgWrapper","forwardRef","margin","role","ariaLabel","ariaLabelledBy","ariaDescribedBy","isFocusable","useTheme","xmlns","focusable","tabIndex","Defs","transform","borderWidth","borderColor","pointerEvents","_ref$symbol","symbol","DotsItemSymbol","datum","label","_ref$labelTextAnchor","labelTextAnchor","_ref$labelYOffset","labelYOffset","ariaHidden","ariaDisabled","_ref$isFocusable","_ref$tabIndex","onFocus","onBlur","testId","_useMotionConfig","springConfig","animatedProps","useSpring","immediate","handleFocus","handleBlur","animated","g","textAnchor","sanitizeSvgTextStyle","dots","text","axis","scale","lineStyle","textStyle","legend","legendNode","_ref2$legendPosition","legendPosition","_ref2$legendOffsetX","legendOffsetX","_ref2$legendOffsetY","legendOffsetY","_ref2$legendOrientati","legendOrientation","legendProps","offsetX","offsetY","orientation","computeLabel","dominantBaseline","markers","lineColor","lineStrokeWidth","xScale","yScale","marker","i","CartesianMarkersItem","withContainer","WrappedComponent","_Component","_class","apply","this","arguments","prototype","render","_this$props","childProps","Component","useAnimatedPath","previousPath","current","usePrevious","interpolator","interpolateString","from","to","reset","ChartContext","curvePropMapping","basis","curveBasis","basisClosed","curveBasisClosed","basisOpen","curveBasisOpen","bundle","curveBundle","cardinal","curveCardinal","cardinalClosed","curveCardinalClosed","cardinalOpen","curveCardinalOpen","catmullRom","curveCatmullRom","catmullRomClosed","curveCatmullRomClosed","catmullRomOpen","curveCatmullRomOpen","linear","curveLinear","linearClosed","curveLinearClosed","monotoneX","curveMonotoneX","monotoneY","curveMonotoneY","natural","curveNatural","step","curveStep","stepAfter","curveStepAfter","stepBefore","curveStepBefore","curvePropKeys","Object","keys","closedCurvePropKeys","filter","c","endsWith","areaCurvePropKeys","without","lineCurvePropKeys","curveFromProp","TypeError","stackOrderPropMapping","ascending","stackOrderAscending","descending","stackOrderDescending","insideOut","stackOrderInsideOut","none","stackOrderNone","reverse","stackOrderReverse","stackOrderPropKeys","stackOrderFromProp","prop","stackOffsetPropMapping","expand","stackOffsetExpand","diverging","stackOffsetDiverging","stackOffsetNone","silhouette","stackOffsetSilhouette","wiggle","stackOffsetWiggle","stackOffsetPropKeys","stackOffsetFromProp","blendModes","useCurveInterpolation","interpolation","quantizeColorScales","nivo","BrBG","last","schemeBrBG","PRGn","schemePRGn","PiYG","schemePiYG","PuOr","schemePuOr","RdBu","schemeRdBu","RdGy","schemeRdGy","RdYlBu","schemeRdYlBu","RdYlGn","schemeRdYlGn","spectral","schemeSpectral","blues","schemeBlues","greens","schemeGreens","greys","schemeGreys","oranges","schemeOranges","purples","schemePurples","reds","schemeReds","BuGn","schemeBuGn","BuPu","schemeBuPu","GnBu","schemeGnBu","OrRd","schemeOrRd","PuBuGn","schemePuBuGn","PuBu","schemePuBu","PuRd","schemePuRd","RdPu","schemeRdPu","YlGnBu","schemeYlGnBu","YlGn","schemeYlGn","YlOrBr","schemeYlOrBr","YlOrRd","schemeYlOrRd","quantizeColorScalesKeys","guessQuantizeColorScale","isFunction","domain","Error","scaleQuantize","range","isArray","join","colorSchemes","category10","schemeCategory10","accent","schemeAccent","dark2","schemeDark2","paired","schemePaired","pastel1","schemePastel1","pastel2","schemePastel2","set1","schemeSet1","set2","schemeSet2","set3","schemeSet3","brown_blueGreen","purpleRed_green","pink_yellowGreen","purple_orange","red_blue","red_grey","red_yellow_blue","red_yellow_green","blue_green","blue_purple","green_blue","orange_red","purple_blue_green","purple_blue","purple_red","red_purple","yellow_green_blue","yellow_green","yellow_orange_brown","yellow_orange_red","colorSchemeIds","colorInterpolators","interpolateBrBG","interpolatePRGn","interpolatePiYG","interpolatePuOr","interpolateRdBu","interpolateRdGy","interpolateRdYlBu","interpolateRdYlGn","interpolateSpectral","interpolateBlues","interpolateGreens","interpolateGreys","interpolateOranges","interpolatePurples","interpolateReds","viridis","interpolateViridis","inferno","interpolateInferno","magma","interpolateMagma","plasma","interpolatePlasma","warm","interpolateWarm","cool","interpolateCool","cubehelixDefault","interpolateCubehelixDefault","interpolateBuGn","interpolateBuPu","interpolateGnBu","interpolateOrRd","interpolatePuBuGn","interpolatePuBu","interpolatePuRd","interpolateRdPu","interpolateYlGnBu","interpolateYlGn","interpolateYlOrBr","interpolateYlOrRd","rainbow","interpolateRainbow","sinebow","interpolateSinebow","colorInterpolatorIds","nivoCategoricalColors","scaleOrdinal","getColorScale","dataScale","scheme","indexOf","slice","scaleSequential","defaultAnimate","defaultCategoricalColors","defaultColorRange","defaultMargin","useDimensions","partialMargin","innerWidth","innerHeight","outerWidth","outerHeight","useMeasure","measureRef","_useState","useState","bounds","setBounds","observer","ResizeObserver","entry","contentRect","observe","disconnect","getValueFormatter","format","d3TimeFormat","d3Format","useValueFormatter","getLabelGenerator","_label","labelFormat","formatter","getRawLabel","get","getPropertyAccessor","accessor","usePropertyAccessor","boxAlignments","alignBox","box","alignment","deltaX","deltaY","getDistance","sqrt","pow","getAngle","atan2","isCursorInRect","cursorX","cursorY","getRelativeCursor","el","originalBox","touches","clientX","clientY","currentBox","getBoundingClientRect","scaleFactor","getBBox","offsetWidth","offsetHeight","gradientKeys","patternKeys","isMatchingDef","predicate","node","dataKey","isPlainObject","data","isEqual","pick","bindDefs","nodes","rules","_temp","_ref$colorKey","colorKey","_ref$targetKey","targetKey","boundDefs","generatedIds","concat","forEach","_step","_loop","rule","match","find","includes","nodeColor","inheritedId","set","push","inheritedDef","colorStop","_iterator","_createForOfIteratorHelperLoose","done","mergeRefs","_len","refs","Array","_key","_i","_refs","BOX_ANCHORS"],"mappings":"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"}