@evergis/charts 3.0.25 → 3.0.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +20 -20
- package/README.md +15 -15
- package/dist/charts.cjs.development.js +4 -3
- package/dist/charts.cjs.development.js.map +1 -1
- package/dist/charts.cjs.production.min.js +1 -1
- package/dist/charts.cjs.production.min.js.map +1 -1
- package/dist/charts.esm.js +4 -3
- package/dist/charts.esm.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"charts.cjs.development.js","sources":["../src/common/components/Wrapper.ts","../src/hooks/useNode.ts","../src/helpers/throttle.ts","../src/hooks/useResize.ts","../src/helpers/appendSvg.ts","../src/common/components/SwipeScroll/styled.ts","../src/common/components/SwipeScroll/animate.ts","../src/common/components/SwipeScroll/hooks/useSwipe.ts","../src/common/components/SwipeScroll/index.tsx","../src/charts/RadarChart/helpers.ts","../src/charts/RadarChart/drawRadialLabels/styled.ts","../src/charts/RadarChart/drawRadialLabels/index.tsx","../src/common/components/labels/index.ts","../src/charts/RadarChart/styled.ts","../src/charts/RadarChart/draw.tsx","../src/charts/RadarChart/index.tsx","../src/helpers/math.ts","../src/charts/PieChart/styled.ts","../src/charts/PieChart/drawRadialLabels/helpers.ts","../src/charts/PieChart/drawRadialLabels/index.tsx","../src/common/components/tooltips/index.ts","../src/charts/PieChart/drawTooltips/index.tsx","../src/charts/PieChart/draw.tsx","../src/charts/PieChart/index.tsx","../src/helpers/getLegend/index.ts","../src/charts/CalendarChart/styled.ts","../src/charts/CalendarChart/draw.ts","../src/charts/CalendarChart/index.tsx","../src/helpers/computeDimensions.ts","../src/helpers/common.ts","../src/helpers/stackedData.ts","../src/charts/LineChart/styled.ts","../src/charts/LineChart/drawGrid/index.ts","../src/charts/LineChart/drawLabel/styled.ts","../src/charts/LineChart/drawLabel/index.tsx","../src/charts/LineChart/drawTooltip/index.tsx","../src/charts/LineChart/draw.ts","../src/charts/LineChart/index.tsx","../src/charts/BarChart/drawLines/index.ts","../src/charts/BarChart/styled.ts","../src/charts/BarChart/hooks/useSelection.ts","../src/charts/BarChart/drawGrid/index.ts","../src/charts/BarChart/getDomain.ts","../src/charts/BarChart/marshaling.ts","../src/charts/BarChart/drawTooltip/getLabelY.ts","../src/charts/BarChart/drawTooltip/getLabel.tsx","../src/charts/BarChart/drawTooltip/index.tsx","../src/charts/BarChart/resizeBarWidth/index.ts","../src/charts/BarChart/getBars/index.ts","../src/charts/BarChart/draw.ts","../src/charts/BarChart/index.tsx","../src/charts/HorizontalBarChart/hooks/useMarshaling.ts","../src/charts/HorizontalBarChart/styled.ts","../src/charts/HorizontalBarChart/Tooltip/index.tsx","../src/charts/HorizontalBarChart/hooks/useTooltip/index.tsx","../src/charts/HorizontalBarChart/hooks/useStackWrapper.tsx","../src/charts/HorizontalBarChart/Bar/styled.ts","../src/charts/HorizontalBarChart/Bar/index.tsx","../src/charts/HorizontalBarChart/XScale/hooks/useScale.ts","../src/charts/HorizontalBarChart/XScale/styled.ts","../src/charts/HorizontalBarChart/XScale/index.tsx","../src/charts/HorizontalBarChart/index.tsx","../src/charts/BubbleChart/bubbleChartDefaultProps.ts","../src/charts/BubbleChart/styled.ts","../src/charts/BubbleChart/drawGrid/index.ts","../src/charts/BubbleChart/drawTooltip/styled.ts","../src/charts/BubbleChart/drawTooltip/index.tsx","../src/charts/BubbleChart/draw.ts","../src/charts/BubbleChart/unmount.ts","../src/charts/BubbleChart/index.tsx"],"sourcesContent":["import styled from 'styled-components';\r\n\r\nexport const Wrapper = styled.div`\r\n position: relative;\r\n width: 100%;\r\n box-sizing: border-box;\r\n`;\r\n","import { PropsWithRef, useCallback, useState } from 'react';\r\n\r\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\r\n const [node, onSetNode] = useState<HTMLElement | null>(null);\r\n\r\n const ref = useCallback(onSetNode, [onSetNode]);\r\n\r\n return [ref, node];\r\n}\r\n","export function throttle(fn: Function, wait: number) {\r\n let isCalled = false;\r\n\r\n return function(...args: any) {\r\n if (!isCalled) {\r\n fn(...args);\r\n isCalled = true;\r\n setTimeout(function() {\r\n isCalled = false;\r\n }, wait);\r\n }\r\n };\r\n}\r\n","import { useEffect, useMemo } from 'react';\r\n\r\nimport { throttle } from '../helpers/throttle';\r\n\r\nconst THROTTLE_DELAY = 44;\r\n\r\nexport const useResize = (\r\n width?: number,\r\n callback?: (...args: any) => any,\r\n delay?: number\r\n) => {\r\n const throttledCallback: VoidFunction | undefined = useMemo(() => {\r\n return callback ? throttle(callback, delay || THROTTLE_DELAY) : undefined;\r\n }, [callback, delay]);\r\n\r\n useEffect(() => {\r\n throttledCallback &&\r\n typeof width !== 'number' &&\r\n window.addEventListener('resize', throttledCallback);\r\n\r\n return () =>\r\n throttledCallback &&\r\n window.removeEventListener('resize', throttledCallback);\r\n }, [width, throttledCallback]);\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nexport const appendSvg = (node: HTMLElement, width: number, height: number) => {\r\n d3.select(node)\r\n .select('svg')\r\n .remove();\r\n\r\n const svg = d3\r\n .select(node)\r\n .append('svg')\r\n .attr('width', width)\r\n .attr('height', height);\r\n\r\n return svg;\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const SwipeScrollContainer = styled.div`\r\n width: 100%;\r\n overflow: hidden;\r\n user-select: none;\r\n`;\r\n","export function animate({\r\n duration,\r\n timing,\r\n draw,\r\n}: {\r\n duration: number;\r\n timing: (n: number) => number;\r\n draw: (progress: number, requestId: number) => void;\r\n}): void {\r\n const start = performance.now();\r\n let requestId: number;\r\n\r\n requestAnimationFrame(function requestAnimate(time) {\r\n let timeFraction = (time - start) / duration;\r\n\r\n if (timeFraction < 1) {\r\n requestId = requestAnimationFrame(requestAnimate);\r\n }\r\n\r\n if (timeFraction > 1) cancelAnimationFrame(requestId);\r\n const progress = timing(timeFraction);\r\n\r\n draw(progress, requestId);\r\n });\r\n}\r\n\r\nexport const easeOutQuad = (time: number): number => time * (2 - time);\r\n","import { useEffect, useRef, useCallback } from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport { animate, easeOutQuad } from '../animate';\r\n\r\nimport { SwipeScrollProps } from '../types';\r\n\r\nconst range = (num: number, min: number, max: number) =>\r\n Math.min(Math.max(num, min), max);\r\n\r\nconst defaultRefs = {\r\n animation: 0,\r\n speed: 0,\r\n timestamp: 0,\r\n startX: 0,\r\n currentX: 0,\r\n};\r\n\r\nexport const useSwipe = (\r\n node: HTMLElement | null,\r\n { width, duration, animationFunc, onSwipe }: SwipeScrollProps\r\n) => {\r\n const container = d3.select(node);\r\n const body = d3.select('body');\r\n const documentSelect = d3.select(document);\r\n const refs = useRef(defaultRefs);\r\n\r\n useEffect(() => {\r\n if (width && refs.current.animation) {\r\n cancelAnimationFrame(refs.current.animation);\r\n refs.current = defaultRefs;\r\n }\r\n }, [width]);\r\n\r\n const onMove = useCallback(\r\n event => {\r\n const { width: nodeWidth } = node\r\n ? node.getBoundingClientRect()\r\n : { width: 0 };\r\n const [x] = d3.pointer(\r\n event.type.includes('touch') ? event.touches[0] : event\r\n );\r\n const newX = x - refs.current.startX;\r\n const maxX = width - nodeWidth;\r\n const translateX = range(newX, -maxX, 0);\r\n\r\n container.style('transform', `translateX(${translateX}px)`);\r\n\r\n if (refs.current.currentX) {\r\n const hundred = 100;\r\n const now = Date.now();\r\n const dt = now - refs.current.timestamp;\r\n const dx = translateX - refs.current.currentX;\r\n const speedX = Math.round((dx / dt) * hundred);\r\n\r\n refs.current.speed = speedX;\r\n refs.current.timestamp = now;\r\n }\r\n\r\n refs.current.currentX = translateX;\r\n\r\n onSwipe && onSwipe(translateX, container);\r\n },\r\n [onSwipe, width, node, container]\r\n );\r\n\r\n const onEnd = useCallback(() => {\r\n const { width: nodeWidth } = node\r\n ? node.getBoundingClientRect()\r\n : { width: 0 };\r\n\r\n documentSelect.on(\r\n 'mousemove.swipe touchmove.swipe mouseup.swipe touchend.swipe',\r\n null\r\n );\r\n body.style('cursor', null);\r\n if (width > nodeWidth) {\r\n container.style('cursor', 'grab');\r\n } else {\r\n container.style('cursor', null);\r\n }\r\n\r\n const dt = Date.now() - refs.current.timestamp;\r\n const dtEnd = 44;\r\n\r\n if (dt < dtEnd) {\r\n animate({\r\n duration: duration as number,\r\n timing: animationFunc || easeOutQuad,\r\n draw: (progress, requestId) => {\r\n refs.current.animation = requestId;\r\n const px = Math.round(refs.current.speed * 2 * progress);\r\n const currX = refs.current.currentX + px;\r\n const maxX = width - nodeWidth;\r\n const translateX = range(currX, -maxX, 0);\r\n\r\n const transX = Math.max(Math.min(currX, maxX), 0);\r\n\r\n if (refs.current.currentX !== transX) {\r\n container.style('transform', `translateX(${translateX}px)`);\r\n\r\n onSwipe && onSwipe(translateX, container);\r\n }\r\n },\r\n });\r\n }\r\n }, [\r\n body,\r\n animationFunc,\r\n onSwipe,\r\n container,\r\n duration,\r\n node,\r\n width,\r\n documentSelect,\r\n ]);\r\n\r\n const onStart = useCallback(\r\n event => {\r\n const isTouch = event.type.includes('touch');\r\n const [x] = d3.pointer(isTouch ? event.touches[0] : event, node);\r\n\r\n const { left } =\r\n node && node.parentElement\r\n ? node.parentElement.getBoundingClientRect()\r\n : { left: 0 };\r\n body.style('cursor', 'grabbing');\r\n container.style('cursor', 'grabbing');\r\n\r\n if (refs.current.animation) {\r\n cancelAnimationFrame(refs.current.animation);\r\n refs.current = defaultRefs;\r\n }\r\n\r\n refs.current.startX = Math.max(x + left, 0);\r\n documentSelect.on('mousemove.swipe touchmove.swipe', onMove);\r\n documentSelect.on('mouseup.swipe touchend.swipe', onEnd);\r\n },\r\n [container, body, node, onEnd, onMove, documentSelect]\r\n );\r\n\r\n useEffect(() => {\r\n if (node) {\r\n const { width: nodeWidth } = node.getBoundingClientRect();\r\n\r\n if (width > nodeWidth) {\r\n container.style('cursor', 'grab');\r\n container.on('mousedown.swipe touchstart.swipe', onStart);\r\n }\r\n }\r\n }, [container, onStart, node, width]);\r\n};\r\n","import React from 'react';\r\n\r\nimport { SwipeScrollContainer } from './styled';\r\n\r\nimport { useNode } from '../../../hooks';\r\nimport { useSwipe } from './hooks/useSwipe';\r\n\r\nimport { SwipeScrollProps } from './types';\r\n\r\nexport const SwipeScroll: React.FC<SwipeScrollProps> = ({\r\n children,\r\n width,\r\n onSwipe,\r\n ...props\r\n}): React.ReactElement => {\r\n const [ref, draggingNode] = useNode();\r\n\r\n useSwipe(draggingNode, { width, onSwipe, ...props });\r\n\r\n return (\r\n <SwipeScrollContainer {...props}>\r\n <div ref={ref}>{children}</div>\r\n </SwipeScrollContainer>\r\n );\r\n};\r\n\r\nSwipeScroll.defaultProps = {\r\n duration: 1400,\r\n};\r\n","const degByIndex = (index: number, count: number): number => {\r\n const degs = 360;\r\n const deg = (degs / count) * index;\r\n\r\n return deg;\r\n};\r\n\r\nexport const getTextAnchor = (\r\n index: number,\r\n length: number\r\n): 'start' | 'middle' | 'end' => {\r\n const deg = degByIndex(index, length);\r\n const halfAngle = 180;\r\n\r\n if ([0, halfAngle].includes(deg)) {\r\n return 'middle';\r\n }\r\n if (deg < halfAngle) {\r\n return 'start';\r\n }\r\n\r\n return 'end';\r\n};\r\n\r\nexport const getMaxWidth = (elements: SVGElement[]) => {\r\n let maxWidth = 0;\r\n\r\n for (let i = 0; i < elements.length; i++) {\r\n const element = elements[i];\r\n\r\n if (element && 'getBoundingClientRect' in element) {\r\n maxWidth = Math.max(maxWidth, element.getBoundingClientRect().width);\r\n }\r\n }\r\n\r\n return maxWidth;\r\n};\r\n","import styled from 'styled-components';\r\n\r\nimport { LabelContainerProps } from './types';\r\n\r\nconst getTranslate = ({\r\n anchor,\r\n index,\r\n translateX,\r\n translateY,\r\n}: LabelContainerProps) => {\r\n if (index === 0 && anchor === 'middle') {\r\n return `translate(calc(-50% + ${translateX}px), calc(-100% + ${translateY}px))`;\r\n } else if (anchor === 'middle') {\r\n return `translate(calc(-50% + ${translateX}px), calc(${translateY}px))`;\r\n } else if (anchor === 'start') {\r\n return `translate(calc(${translateX}px), calc(-50% + ${translateY}px))`;\r\n } else if (anchor === 'end') {\r\n return `translate(calc(-100% + ${translateX}px), calc(-50% + ${translateY}px))`;\r\n }\r\n return `translate(${translateX}px, ${translateY}px)`;\r\n};\r\n\r\nexport const LabelContainer = styled.div.attrs<LabelContainerProps>(props => ({\r\n style: {\r\n transform: getTranslate(props),\r\n },\r\n}))<LabelContainerProps>`\r\n position: absolute;\r\n`;\r\n","import * as d3 from 'd3';\r\nimport ReactDOMServer from 'react-dom/server';\r\nimport React from 'react';\r\n\r\nimport { DrawRadialLabels } from './types';\r\n\r\nimport { getTextAnchor } from '../helpers';\r\nimport { LabelContainer } from './styled';\r\n\r\nconst labelClassName = 'd3-chart-label';\r\n\r\nexport const drawRadialLabels = ({\r\n node,\r\n dataLength,\r\n radiusScale,\r\n maxValue,\r\n angleSlice,\r\n radius,\r\n xOffset,\r\n yOffset,\r\n translateX,\r\n translateY,\r\n renderLabel,\r\n selectLabel,\r\n}: DrawRadialLabels) => {\r\n const d3container = d3.select(node);\r\n d3container.selectAll(`.${labelClassName}`).remove();\r\n\r\n const pxToValue = (value: number) => (maxValue / radius) * value;\r\n const axisX = (i: number) =>\r\n (radiusScale(maxValue + pxToValue(xOffset || 0)) as number) *\r\n Math.cos(angleSlice * i - Math.PI / 2);\r\n\r\n const axisY = (i: number) =>\r\n radiusScale(\r\n (maxValue + pxToValue(yOffset || 0)) *\r\n Math.sin(angleSlice * i - Math.PI / 2)\r\n ) as number;\r\n\r\n const labels = Array.from({ length: dataLength }, (_, index) => ({\r\n x: Math.ceil(axisX(index)),\r\n y: Math.ceil(axisY(index)),\r\n }));\r\n\r\n labels.forEach(({ x, y }: { x: number; y: number }, index: number) => {\r\n const anchor = getTextAnchor(index, dataLength);\r\n const html = ReactDOMServer.renderToString(\r\n <LabelContainer\r\n anchor={anchor}\r\n translateX={translateX || 0}\r\n translateY={translateY || 0}\r\n index={index}\r\n style={{\r\n left: x,\r\n top: y,\r\n }}\r\n >\r\n {typeof renderLabel === 'function'\r\n ? renderLabel(anchor, index)\r\n : renderLabel}\r\n </LabelContainer>\r\n );\r\n\r\n const label = d3container\r\n .append('div')\r\n .attr('class', labelClassName)\r\n .html(html);\r\n\r\n selectLabel(label, anchor, index);\r\n });\r\n};\r\n","import styled, { css } from 'styled-components';\r\n\r\nimport { LabelContainerProps } from './types';\r\n\r\nexport const getTranslate = ({\r\n anchor,\r\n index,\r\n translateX,\r\n translateY,\r\n}: LabelContainerProps) => {\r\n if (index === 0 && anchor === 'middle') {\r\n return `translate(calc(-50% + ${translateX}px), calc(-100% + ${translateY}px))`;\r\n } else if (anchor === 'middle') {\r\n return `translate(calc(-50% + ${translateX}px), calc(${translateY}px))`;\r\n } else if (anchor === 'start') {\r\n return `translate(calc(${translateX}px), calc(-50% + ${translateY}px))`;\r\n } else if (anchor === 'end') {\r\n return `translate(calc(-100% + ${translateX}px), calc(-50% + ${translateY}px))`;\r\n }\r\n return `translate(${translateX}px, ${translateY}px)`;\r\n};\r\n\r\nexport const Label = styled.div`\r\n display: flex;\r\n align-items: center;\r\n font-size: 12px;\r\n`;\r\n\r\nexport const Name = styled.div`\r\n text-align: center;\r\n max-width: 120px;\r\n`;\r\n\r\nconst middleBadgeStyles = css`\r\n position: absolute;\r\n top: 50%;\r\n right: 0;\r\n transform: translate(calc(100% + 6px), -50%);\r\n`;\r\n\r\nexport const DefaultBadge = styled.div`\r\n display: flex;\r\n align-items: center;\r\n padding: 2px 4px;\r\n border-radius: 4px;\r\n color: rgb(255, 255, 255);\r\n background-color: rgb(144, 197, 61);\r\n margin-left: 8px;\r\n`;\r\n\r\nexport const MiddleBadge = styled(DefaultBadge)`\r\n ${middleBadgeStyles}\r\n`;\r\n\r\nexport const BadgePrefix = styled.div`\r\n margin-left: 4px;\r\n font-size: 10px;\r\n color: rgba(255, 255, 255, 0.54);\r\n`;\r\n","import styled from 'styled-components';\r\n\r\nimport { Wrapper } from '../../common/components/Wrapper';\r\n\r\nexport const radarChartclassNames = {\r\n radar: 'radar',\r\n radarAxis: 'radarAxis',\r\n radarAxisTextGlobal: 'radarAxisTextGlobal',\r\n radarAxisText: 'radarAxisText',\r\n radarPolygon: 'radarPolygon',\r\n radarLabel: 'radarLabel',\r\n radarLabelName: 'radarLabelName',\r\n radarLabelBadge: 'radarLabelBadge',\r\n radarLabelBadgePrefix: 'radarLabelBadgePrefix',\r\n radarCircle: 'radarCircle',\r\n};\r\n\r\nexport const SvgWrapper = styled(Wrapper)`\r\n .${radarChartclassNames.radarAxis} {\r\n path,\r\n line,\r\n circle {\r\n fill: none;\r\n stroke-width: 1px;\r\n stroke: rgba(149, 149, 149, 0.18);\r\n }\r\n }\r\n .${radarChartclassNames.radarAxisText} {\r\n font-size: 12px;\r\n fill-opacity: 0.56;\r\n }\r\n .${radarChartclassNames.radarPolygon} {\r\n fill-opacity: 0.06;\r\n stroke-width: 2px;\r\n fill: rgb(144, 197, 61);\r\n stroke: rgb(144, 197, 61);\r\n }\r\n .${radarChartclassNames.radarCircle} {\r\n fill: rgb(144, 197, 61);\r\n }\r\n`;\r\n","import React from 'react';\r\nimport ReactDOMServer from 'react-dom/server';\r\nimport * as d3 from 'd3';\r\n\r\nimport { RadarChartProps } from './types';\r\n\r\nimport { appendSvg } from '../../helpers';\r\nimport { drawRadialLabels } from './drawRadialLabels';\r\n\r\nimport {\r\n Label,\r\n MiddleBadge,\r\n DefaultBadge,\r\n Name,\r\n BadgePrefix,\r\n} from '../../common/components/labels';\r\nimport { radarChartclassNames } from './styled';\r\n\r\nexport const draw = (\r\n node: HTMLElement | null,\r\n props: RadarChartProps\r\n): void => {\r\n const {\r\n data,\r\n curve,\r\n polar,\r\n formatValue,\r\n badgePrefix,\r\n labelOffset,\r\n circleRadius,\r\n svgElements,\r\n renderLabel,\r\n customize,\r\n formatAxisValue,\r\n radarStyles,\r\n labelIndex,\r\n selectLabel,\r\n } = props;\r\n\r\n if (node !== null && data.length) {\r\n const defaultBleedLength = 10;\r\n const bleedLength =\r\n typeof props.bleedLength === 'number'\r\n ? props.bleedLength\r\n : defaultBleedLength;\r\n\r\n const { width: nodeWidth } = node.getBoundingClientRect();\r\n const width = props.width || nodeWidth;\r\n const defaultHeight = 400;\r\n const height = props.height || defaultHeight;\r\n\r\n const minValue =\r\n props.minValue ||\r\n Math.min(\r\n 0,\r\n d3.min(data, i => d3.min(i.map(({ value }) => value))) as number\r\n );\r\n const maxValue =\r\n (props.maxValue ||\r\n Math.max(\r\n 0,\r\n d3.max(data, i => d3.max(i.map(({ value }) => value))) as number\r\n )) - minValue;\r\n const paddingX = props.paddingX || 0;\r\n const paddingY = props.paddingY || 0;\r\n const radius = Math.min(\r\n (width - paddingX * 2 - bleedLength * 2) / 2,\r\n (height - paddingY * 2 - bleedLength * 2) / 2\r\n );\r\n\r\n const defaultLevels = 4;\r\n const ticks = d3\r\n .scaleLinear()\r\n .domain([0, maxValue || 1])\r\n .range([])\r\n .ticks(props.levels || defaultLevels);\r\n const lastTick = ticks[ticks.length - 1];\r\n const newLastTick = lastTick + (ticks[1] - ticks[0]);\r\n\r\n if (lastTick < maxValue) {\r\n ticks.push(newLastTick);\r\n }\r\n\r\n const levels = props.levels || ticks.length - 1;\r\n const newMaxValue = ticks[ticks.length - 1];\r\n const angleSlice = (Math.PI * 2) / data[0].length;\r\n\r\n const radiusScale = d3\r\n .scaleLinear()\r\n .range([0, radius])\r\n .domain([0, newMaxValue]);\r\n\r\n const radarLine = d3\r\n .lineRadial()\r\n .curve(d3.curveLinearClosed)\r\n // @ts-ignore\r\n .radius(({ value }) => radiusScale(value) as number)\r\n .angle((_, i) => i * angleSlice);\r\n const radarValue = d3\r\n .lineRadial()\r\n .curve(curve || d3.curveLinearClosed)\r\n // @ts-ignore\r\n .radius(({ value }) => radiusScale(value) as number)\r\n .angle((_, i) => i * angleSlice);\r\n\r\n const svg = appendSvg(node, width, height);\r\n const globalCenter = svg.append('g');\r\n\r\n const levelsGrid = d3.range(1, levels + 1).reverse();\r\n const axisGridY = (value: number) => (-value * radius) / levels;\r\n const getAxisValue = (value: number) => (newMaxValue * value) / levels;\r\n\r\n const gridGlobal = globalCenter\r\n .append('g')\r\n .attr('class', radarChartclassNames.radarAxis)\r\n .selectAll()\r\n .data([data[0]])\r\n .enter();\r\n\r\n const radarGlobal = globalCenter\r\n .append('g')\r\n .attr('class', radarChartclassNames.radar);\r\n\r\n const axis = gridGlobal\r\n .selectAll()\r\n .data(data[0].map(({ name }) => name))\r\n .enter();\r\n\r\n let maxGridHeight = 0;\r\n\r\n if (polar) {\r\n levelsGrid.forEach(value => {\r\n const path = gridGlobal\r\n .append('circle')\r\n .attr('cx', 0)\r\n .attr('cy', 0)\r\n .attr('r', () => (radius / levels) * value);\r\n\r\n const circleNode = path.node() as SVGCircleElement;\r\n const circleHeight = circleNode.getBoundingClientRect().height;\r\n maxGridHeight = Math.max(maxGridHeight, circleHeight);\r\n });\r\n } else {\r\n levelsGrid.map(getAxisValue).forEach(value => {\r\n const path = gridGlobal.append('path').attr('d', () =>\r\n // @ts-ignore\r\n radarLine(Array.from({ length: data[0].length }, () => ({ value })))\r\n );\r\n const pathNode = path.node() as SVGPathElement;\r\n const pathHeight = pathNode.getBoundingClientRect().height;\r\n maxGridHeight = Math.max(maxGridHeight, pathHeight);\r\n });\r\n }\r\n\r\n const radiusByMaxValue = (radiusScale(newMaxValue) as number) + bleedLength;\r\n\r\n axis\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('y1', 0)\r\n .attr('x2', (_, i) =>\r\n Math.round(radiusByMaxValue * Math.cos(angleSlice * i - Math.PI / 2))\r\n )\r\n .attr('y2', (_, i) =>\r\n Math.round(radiusByMaxValue * Math.sin(angleSlice * i - Math.PI / 2))\r\n );\r\n\r\n radarGlobal\r\n .selectAll('path')\r\n .data(data)\r\n .join('path')\r\n .attr('class', radarChartclassNames.radarPolygon)\r\n .attr('style', (_, index) => radarStyles?.[index] || '')\r\n .attr('d', d =>\r\n radarValue(\r\n // @ts-ignore\r\n d.map(dataItem => ({\r\n ...dataItem,\r\n value: dataItem.value - minValue,\r\n }))\r\n )\r\n );\r\n\r\n const format = d3.format(',');\r\n const axisTextGlobal = globalCenter\r\n .append('g')\r\n .attr('class', radarChartclassNames.radarAxisTextGlobal);\r\n axisTextGlobal\r\n .selectAll('text')\r\n .data(levelsGrid)\r\n .enter()\r\n .append('text')\r\n .attr('class', radarChartclassNames.radarAxisText)\r\n .attr('x', '4')\r\n .attr('y', axisGridY)\r\n .attr('dy', 0)\r\n .attr('dominant-baseline', 'central')\r\n .text((value, index) => {\r\n const axisValue = getAxisValue(value) + minValue;\r\n\r\n return formatAxisValue\r\n ? formatAxisValue(axisValue, index)\r\n : format(axisValue);\r\n });\r\n\r\n circleRadius &&\r\n data.forEach(item => {\r\n const circleGlobal = globalCenter\r\n .append('g')\r\n .attr('class', radarChartclassNames.radarCircle);\r\n\r\n item.forEach(({ value }, i) => {\r\n circleGlobal\r\n .append('circle')\r\n .attr(\r\n 'cx',\r\n Math.round(\r\n (radiusScale(value) as number) *\r\n Math.cos(angleSlice * i - Math.PI / 2)\r\n )\r\n )\r\n .attr(\r\n 'cy',\r\n Math.round(\r\n radiusScale(\r\n value * Math.sin(angleSlice * i - Math.PI / 2)\r\n ) as number\r\n )\r\n )\r\n .attr('r', circleRadius);\r\n });\r\n });\r\n\r\n const defaultLabelOffset = 8;\r\n const heightInner = height - bleedLength - paddingY;\r\n const translateX = width / 2;\r\n const translateY = heightInner / 2 + (heightInner - maxGridHeight) / 2;\r\n const offset = bleedLength + (labelOffset || defaultLabelOffset);\r\n\r\n globalCenter.attr('transform', `translate(${translateX},${translateY})`);\r\n\r\n drawRadialLabels({\r\n node,\r\n maxValue: newMaxValue,\r\n translateX,\r\n translateY,\r\n dataLength: data[labelIndex || 0].length,\r\n angleSlice,\r\n radius,\r\n radiusScale,\r\n xOffset: offset,\r\n yOffset: offset,\r\n renderLabel: (anchor, index) => {\r\n const items = data.map(item => item[index]);\r\n const Badge = anchor === 'middle' ? MiddleBadge : DefaultBadge;\r\n const item = data[labelIndex || 0][index];\r\n const { name, value } = item;\r\n\r\n return renderLabel ? (\r\n renderLabel({ item, items, anchor, index })\r\n ) : (\r\n <Label className={radarChartclassNames.radarLabel}>\r\n <Name className={radarChartclassNames.radarLabelName}>{name}</Name>\r\n <Badge className={radarChartclassNames.radarLabelBadge}>\r\n {formatValue ? formatValue(value, index) : format(value)}\r\n {badgePrefix && (\r\n <BadgePrefix\r\n className={radarChartclassNames.radarLabelBadgePrefix}\r\n >\r\n {badgePrefix}\r\n </BadgePrefix>\r\n )}\r\n </Badge>\r\n </Label>\r\n );\r\n },\r\n selectLabel: (label, anchor, index) => {\r\n if (selectLabel) {\r\n const items = data.map(item => item[index]);\r\n const item = data[labelIndex || 0][index];\r\n\r\n selectLabel(label, { index, item, items, anchor });\r\n }\r\n },\r\n });\r\n\r\n if (svgElements) {\r\n const html = ReactDOMServer.renderToString(svgElements);\r\n\r\n svg.append('g').html(html);\r\n }\r\n\r\n customize && customize(svg);\r\n }\r\n};\r\n","import React, { useEffect } from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport { RadarChartProps } from './types';\r\n\r\nimport { useNode } from '../../hooks';\r\nimport { useResize } from '../../hooks';\r\n\r\nimport { draw } from './draw';\r\n\r\nimport { SvgWrapper } from './styled';\r\n\r\nexport const RadarChart: React.FC<RadarChartProps> = (\r\n props\r\n): React.ReactElement => {\r\n const { className, style } = props;\r\n const [ref, node] = useNode();\r\n\r\n useEffect(() => {\r\n node && draw(node, props);\r\n }, [node, props]);\r\n\r\n const onDraw = () => draw(node, props);\r\n\r\n useResize(props.width, onDraw);\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <SvgWrapper ref={ref} />\r\n </div>\r\n );\r\n};\r\n\r\nRadarChart.defaultProps = {\r\n height: 400,\r\n data: [],\r\n curve: d3.curveLinearClosed,\r\n};\r\n","export function radiansToDegrees(radians: number): number {\r\n const flatAngle = 180;\r\n\r\n return (radians * flatAngle) / Math.PI;\r\n}\r\n\r\nexport function degreesToRadians(degrees: number): number {\r\n const flatAngle = 180;\r\n\r\n return degrees * (Math.PI / flatAngle);\r\n}\r\n","import styled from 'styled-components';\r\n\r\nimport { Wrapper } from '../../common/components/Wrapper';\r\n\r\nexport const pieChartclassNames = {\r\n pieGlobal: 'pieGlobal',\r\n pieSlice: 'pieSlice',\r\n pieSliceLabel: 'pieSliceLabel',\r\n pieSliceLabelValue: 'pieSliceLabelValue',\r\n pieSliceLabelName: 'pieSliceLabelName',\r\n pieRadialLabel: 'pieRadialLabel',\r\n pieRadialLink: 'pieRadialLink',\r\n pieTooltipContainer: 'pieTooltipContainer',\r\n pieTooltipFlex: 'pieTooltipFlex',\r\n pieTooltip: 'pieTooltip',\r\n pieTooltipItem: 'pieTooltipItem',\r\n pieTooltipName: 'pieTooltipName',\r\n pieTooltipValue: 'pieTooltipValue',\r\n pieTooltipColorBox: 'pieTooltipColorBox',\r\n pieFullChartTooltipCircle: 'pieFullChartTooltipCircle',\r\n};\r\n\r\nexport const SvgWrapper = styled(Wrapper)`\r\n .${pieChartclassNames.pieSliceLabel} {\r\n fill: #4a4a4a;\r\n }\r\n .${pieChartclassNames.pieRadialLabel} {\r\n position: absolute;\r\n max-width: 128px;\r\n }\r\n .${pieChartclassNames.pieRadialLink} {\r\n stroke: #000;\r\n }\r\n .${pieChartclassNames.pieFullChartTooltipCircle} {\r\n fill: transparent;\r\n cursor: pointer;\r\n }\r\n`;\r\n","import { PieChartDatum } from '../types';\r\n\r\nexport const getMidFactor = (d: PieChartDatum) =>\r\n d.startAngle + (d.endAngle - d.startAngle) / 2 < Math.PI ? 1 : -1;\r\n\r\nexport const getAlign = (d: PieChartDatum): 'start' | 'end' => {\r\n const midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n\r\n return midangle < Math.PI ? 'start' : 'end';\r\n};\r\n","import * as d3 from 'd3';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nimport { DrawRadialLabels } from './types';\r\nimport { PieChartDatum } from '../types';\r\n\r\nimport { pieChartclassNames } from '../styled';\r\nimport { getMidFactor, getAlign } from './helpers';\r\nimport { getTranslate } from '../../../common/components/labels';\r\n\r\nexport const drawRadialLabels = ({\r\n arc,\r\n enableRadialLabels,\r\n global,\r\n node,\r\n radius,\r\n dataReady,\r\n radialLabelsLinkHorizontalLength,\r\n formatRadialLabel,\r\n radialLabelsTextXOffset,\r\n translateX,\r\n translateY,\r\n radialLabelYOffset,\r\n radialAngleXOffset,\r\n}: DrawRadialLabels): void => {\r\n const d3container = d3.select(node);\r\n d3container.selectAll(`.${pieChartclassNames.pieRadialLabel}`).remove();\r\n\r\n if (enableRadialLabels) {\r\n const defaultRadialLabelsLinkHorizontalLength = 4;\r\n const outerArc = d3\r\n .arc()\r\n .innerRadius(radius)\r\n .outerRadius(radius);\r\n\r\n global\r\n .selectAll('allPolylines')\r\n .data(dataReady)\r\n .enter()\r\n .append('polyline')\r\n .attr('class', pieChartclassNames.pieRadialLink)\r\n .style('fill', 'none')\r\n .attr('points', (d: PieChartDatum) => {\r\n const midFactor = getMidFactor(d);\r\n const posA = arc.centroid(d);\r\n const posB = outerArc.centroid(d);\r\n const posC = outerArc.centroid(d);\r\n const posCPi = [\r\n (radius +\r\n (radialLabelsLinkHorizontalLength ||\r\n defaultRadialLabelsLinkHorizontalLength)) *\r\n midFactor,\r\n posC[1],\r\n ];\r\n return [\r\n [posA[0], posA[1]],\r\n [\r\n posB[0] + (radialAngleXOffset || 0) * midFactor,\r\n posB[1] - (radialLabelYOffset || 0) * d.index,\r\n ],\r\n [posCPi[0], posCPi[1] - (radialLabelYOffset || 0) * d.index],\r\n ];\r\n });\r\n\r\n const getPosition = (d: PieChartDatum): [number, number] => {\r\n const pos = outerArc.centroid(d);\r\n return [\r\n (radius +\r\n (radialLabelsLinkHorizontalLength ||\r\n defaultRadialLabelsLinkHorizontalLength)) *\r\n getMidFactor(d),\r\n pos[1],\r\n ];\r\n };\r\n\r\n const defaultRadialLabelsTextXOffset = 4;\r\n d3container\r\n .selectAll('allLabels')\r\n .data(dataReady)\r\n .enter()\r\n .append('div')\r\n // @ts-ignore\r\n .html((d: PieChartDatum) => {\r\n const html = ReactDOMServer.renderToString(\r\n // @ts-ignore\r\n formatRadialLabel ? formatRadialLabel(d) : d.data.name\r\n );\r\n\r\n return html;\r\n })\r\n .attr('class', pieChartclassNames.pieRadialLabel)\r\n // @ts-ignore\r\n .style('transform', (d: PieChartDatum) =>\r\n getTranslate({\r\n anchor: getAlign(d),\r\n index: d.index,\r\n translateX,\r\n translateY: translateY - (radialLabelYOffset || 0) * d.index,\r\n })\r\n )\r\n // @ts-ignore\r\n .style(\r\n 'left',\r\n // @ts-ignore\r\n (d: PieChartDatum) =>\r\n `${getPosition(d)[0] -\r\n (getAlign(d) === 'start'\r\n ? -(radialLabelsTextXOffset || defaultRadialLabelsTextXOffset)\r\n : radialLabelsTextXOffset || defaultRadialLabelsTextXOffset)}px`\r\n )\r\n // @ts-ignore\r\n .style('top', (d: PieChartDatum) => `${getPosition(d)[1]}px`)\r\n // @ts-ignore\r\n .style('text-align', getAlign);\r\n }\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const TooltipFlex = styled.div`\r\n width: 0;\r\n height: 0;\r\n display: flex;\r\n align-items: flex-end;\r\n justify-content: center;\r\n pointer-events: none;\r\n white-space: nowrap;\r\n`;\r\n\r\nexport const LabelFlex = styled(TooltipFlex)``;\r\n\r\nexport const LabelFlexCenter = styled(LabelFlex)`\r\n align-items: center;\r\n`;\r\n\r\nexport const TooltipContainer = styled.div`\r\n position: relative;\r\n font-size: 11px;\r\n color: #fff;\r\n margin-bottom: 8px;\r\n padding: 4px 6px;\r\n background-color: rgba(48, 69, 79, 1);\r\n border-radius: 4px;\r\n box-shadow: 0 0.1875rem 0.5rem rgba(48, 69, 79, 0.06);\r\n :before {\r\n content: '';\r\n position: absolute;\r\n bottom: 0;\r\n left: 50%;\r\n transform: translate(-50%, 100%);\r\n width: 0;\r\n height: 0;\r\n border-style: solid;\r\n border-width: 4px 3px 0 3px;\r\n border-color: rgba(48, 69, 79, 1) transparent transparent transparent;\r\n }\r\n`;\r\n\r\nexport const TooltipGroupName = styled.div`\r\n font-size: 14px;\r\n margin-bottom: 6px;\r\n`;\r\n\r\nexport const TooltipItem = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin-bottom: 0.25rem;\r\n &:last-of-type {\r\n margin-bottom: 0;\r\n }\r\n`;\r\n\r\nexport const ColFlex = styled.div`\r\n display: flex;\r\n align-items: center;\r\n margin-right: 4px;\r\n`;\r\n\r\nexport const ColorBox = styled.div`\r\n margin-right: 4px;\r\n width: 10px;\r\n height: 10px;\r\n border-radius: 2px;\r\n`;\r\n\r\nexport const ColorLine = styled(ColorBox)`\r\n height: 2px;\r\n border-radius: 0;\r\n`;\r\n\r\nexport const Name = styled.div`\r\n margin-right: 4px;\r\n`;\r\n\r\nexport const Value = styled.div`\r\n text-align: right;\r\n flex-shrink: 0;\r\n flex-grow: 1;\r\n`;\r\n\r\nexport const Label = styled.div`\r\n position: relative;\r\n font-size: 11px;\r\n color: #fff;\r\n font-weight: bold;\r\n letter-spacing: 0.52px;\r\n`;\r\n\r\nexport const LabelTop = styled(Label)`\r\n top: 6px;\r\n`;\r\n\r\nexport const LabelBottom = styled(Label)`\r\n bottom: 6px;\r\n`;\r\n","import React from 'react';\r\nimport ReactDOMServer from 'react-dom/server';\r\nimport * as d3 from 'd3';\r\n\r\nimport { pieChartclassNames as classNames } from '../styled';\r\n\r\nimport { DrawTooltipProps } from './types';\r\n\r\nimport {\r\n TooltipContainer,\r\n TooltipFlex,\r\n TooltipItem,\r\n Value,\r\n Name,\r\n ColorBox,\r\n} from '../../../common/components/tooltips';\r\nimport { PieChartData, PieChartDatum } from '../types';\r\n\r\nexport const drawTooltip = ({\r\n fullChartTooltip,\r\n global,\r\n tooltipRoot,\r\n data,\r\n tooltipClassName,\r\n tooltipBind,\r\n renderTooltip,\r\n arc,\r\n allSlices,\r\n tooltipStyle,\r\n width,\r\n height,\r\n radius,\r\n}: DrawTooltipProps) => {\r\n const container: Element | null =\r\n tooltipRoot || document.querySelector('body');\r\n const format = d3.format(',');\r\n const pieTooltipContainer: d3.Selection<\r\n HTMLDivElement,\r\n unknown,\r\n null,\r\n undefined\r\n > = d3.select(container).select(`.${classNames.pieTooltipContainer}`);\r\n const isEmpty = pieTooltipContainer.empty();\r\n\r\n const tooltipContainer = isEmpty\r\n ? d3\r\n .select(container)\r\n .append('div')\r\n .attr(\r\n 'class',\r\n `${classNames.pieTooltipContainer} ${tooltipClassName || ''}`\r\n )\r\n .style('position', 'absolute')\r\n .style('opacity', '0')\r\n .style('z-index', '103')\r\n : pieTooltipContainer;\r\n\r\n if (tooltipStyle) {\r\n Object.entries(tooltipStyle).forEach(([prop, val]) =>\r\n tooltipContainer.style(prop, val)\r\n );\r\n }\r\n\r\n tooltipContainer.html('');\r\n let isVisible = false;\r\n\r\n const setVisible = (visible?: boolean) => {\r\n isVisible = Boolean(visible);\r\n const opacity = isVisible ? '1' : '0';\r\n tooltipContainer.style('opacity', opacity);\r\n };\r\n\r\n const setPosition = (event: any, pieChartDatum?: PieChartDatum) => {\r\n let [x, y] = d3.pointer(event, document);\r\n\r\n if (!tooltipBind && fullChartTooltip) {\r\n const [itemX, itemY] = d3.pointer(event, event.target);\r\n\r\n x = x - itemX;\r\n y = y - itemY;\r\n } else if (!tooltipBind) {\r\n const globalNode = global.node();\r\n const {\r\n x: itemX,\r\n y: itemY,\r\n width: itemWidth,\r\n height: itemHeight,\r\n } = globalNode\r\n ? globalNode.getBoundingClientRect()\r\n : { x: 0, y: 0, width: 0, height: 0 };\r\n const [arcX, arcY] = arc.centroid(pieChartDatum as d3.DefaultArcObject);\r\n x = itemX + itemWidth / 2 + arcX;\r\n y = itemY + itemHeight / 2 + arcY;\r\n }\r\n\r\n tooltipContainer.style('left', x + 'px').style('top', y + 'px');\r\n };\r\n\r\n const setTooltip = (event: any, pieChartDatum?: PieChartDatum) => {\r\n setVisible(true);\r\n setPosition(event, pieChartDatum);\r\n const pieChartData = pieChartDatum ? [pieChartDatum.data] : data;\r\n\r\n tooltipContainer.html(() => {\r\n const html = ReactDOMServer.renderToString(\r\n <TooltipFlex className={classNames.pieTooltipFlex}>\r\n <TooltipContainer className={classNames.pieTooltip}>\r\n {renderTooltip ? (\r\n renderTooltip(pieChartData)\r\n ) : (\r\n <>\r\n {pieChartData.map(\r\n ({ color, name, value }: PieChartData, index: number) => (\r\n <TooltipItem\r\n key={`${name}-${index}`}\r\n className={classNames.pieTooltipItem}\r\n >\r\n {color && (\r\n <ColorBox\r\n className={classNames.pieTooltipColorBox}\r\n style={{ backgroundColor: color }}\r\n />\r\n )}\r\n {name && (\r\n <Name className={classNames.pieTooltipName}>\r\n {name}\r\n </Name>\r\n )}\r\n <Value className={classNames.pieTooltipValue}>\r\n {format(value)}\r\n </Value>\r\n </TooltipItem>\r\n )\r\n )}\r\n </>\r\n )}\r\n </TooltipContainer>\r\n </TooltipFlex>\r\n );\r\n\r\n return html;\r\n });\r\n };\r\n\r\n if (fullChartTooltip) {\r\n global.on('mouseover.fulltooltip', event => setTooltip(event));\r\n global.on('mouseout.fulltooltip', () => {\r\n tooltipContainer.html('');\r\n setVisible();\r\n });\r\n\r\n if (width && height) {\r\n global\r\n .append('circle')\r\n .attr('class', classNames.pieFullChartTooltipCircle)\r\n .attr('r', radius)\r\n .attr('cx', 0)\r\n .attr('cy', 0);\r\n }\r\n\r\n if (!tooltipBind) {\r\n global.on('touchmove.tooltipBind mousemove.tooltipBind', event =>\r\n setPosition(event)\r\n );\r\n }\r\n } else {\r\n allSlices.on('mouseover.slice', setTooltip);\r\n if (!tooltipBind) {\r\n allSlices.on('touchmove.slice mousemove.slice', setPosition);\r\n }\r\n allSlices.on('mouseout.slice', () => {\r\n tooltipContainer.html('');\r\n setVisible();\r\n });\r\n }\r\n};\r\n","import * as d3 from 'd3';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nimport { PieChartProps, PieChartDatum } from './types';\r\n\r\nimport { appendSvg } from '../../helpers';\r\nimport { degreesToRadians, radiansToDegrees } from '../../helpers/math';\r\nimport { drawRadialLabels } from './drawRadialLabels';\r\nimport { drawTooltip } from './drawTooltips';\r\n\r\nimport { pieChartclassNames } from './styled';\r\n\r\nexport const draw = (node: HTMLElement | null, props: PieChartProps): void => {\r\n const {\r\n data,\r\n padAngle,\r\n onClick,\r\n outerRadius,\r\n startAngle,\r\n endAngle,\r\n cornerRadius,\r\n margin,\r\n enableSlicesLabels,\r\n formatSliceLabel,\r\n slicesLabelsSkipAngle,\r\n enableSlicesLabelsName,\r\n formatSliceLabelName,\r\n borderWidth,\r\n borderColor,\r\n enableRadialLabels,\r\n backgroundColor,\r\n radialLabelsLinkHorizontalLength,\r\n radialLabelsTextXOffset,\r\n formatRadialLabel,\r\n radialLabelYOffset,\r\n svgElements,\r\n formatSliceTitle,\r\n radialAngleXOffset,\r\n withTooltip,\r\n fullChartTooltip,\r\n tooltipClassName,\r\n tooltipBind,\r\n renderTooltip,\r\n tooltipStyle,\r\n } = props;\r\n\r\n if (node !== null && data.length) {\r\n const marginTop = margin ? margin.top : 0;\r\n const marginRight = margin ? margin.right : 0;\r\n const marginBottom = margin ? margin.bottom : 0;\r\n const marginLeft = margin ? margin.left : 0;\r\n const { width: nodeWidth } = node.getBoundingClientRect();\r\n const width = props.width || nodeWidth;\r\n const defaultHeight = 240;\r\n const height = props.height || defaultHeight;\r\n const radius =\r\n (Math.min(width, height) -\r\n (borderWidth || 0) * 2 -\r\n (width > height\r\n ? marginTop + marginBottom\r\n : marginRight + marginLeft)) /\r\n 2;\r\n\r\n const svg = appendSvg(node, width, height);\r\n const global = svg\r\n .append('g')\r\n .attr('class', pieChartclassNames.pieGlobal)\r\n .attr(\r\n 'transform',\r\n `translate(${(width - (marginLeft + marginRight)) / 2 +\r\n marginLeft},${(height - (marginBottom + marginTop)) / 2 + marginTop})`\r\n );\r\n\r\n const maxPadAngle = 45;\r\n const dividerPadAngle = 100;\r\n const fullAngle = 360;\r\n\r\n const pie = d3\r\n .pie()\r\n .startAngle(-degreesToRadians(startAngle || 0))\r\n .endAngle(degreesToRadians(endAngle || fullAngle))\r\n .padAngle(\r\n padAngle\r\n ? Math.max(Math.min(padAngle / dividerPadAngle, maxPadAngle), 0)\r\n : 0\r\n )\r\n .sort(null)\r\n // @ts-ignore\r\n .value(({ value }) => value);\r\n\r\n // @ts-ignore\r\n const dataReady = pie(data) as PieChartDatum[];\r\n\r\n const maxOuterRadius = 0.95;\r\n const arc = d3\r\n .arc()\r\n .cornerRadius(cornerRadius || 0)\r\n .innerRadius(radius)\r\n .outerRadius(\r\n radius * Math.min(Math.max(outerRadius || 0, 0), maxOuterRadius)\r\n );\r\n\r\n if (typeof backgroundColor === 'string') {\r\n global\r\n .append('path')\r\n .attr('fill', backgroundColor)\r\n .attr('d', () =>\r\n // @ts-ignore\r\n arc({\r\n startAngle: degreesToRadians(0),\r\n endAngle: degreesToRadians(fullAngle),\r\n })\r\n );\r\n }\r\n\r\n const format = d3.format(',');\r\n const allSlices = global\r\n .selectAll('allSlices')\r\n .data(dataReady)\r\n .enter()\r\n .append('path')\r\n // @ts-ignore\r\n .attr('d', arc);\r\n\r\n allSlices\r\n .attr('class', pieChartclassNames.pieSlice)\r\n .attr('fill', ({ index }) => data[index].color || '')\r\n .attr('stroke', borderColor || '')\r\n .attr('stroke-width', borderWidth || 0)\r\n .attr('style', onClick ? 'cursor: pointer' : '')\r\n .on(\r\n 'click',\r\n // @ts-ignore\r\n (_, d) => onClick && onClick(data[d.index])\r\n )\r\n .append('svg:title')\r\n .text(d =>\r\n formatSliceTitle\r\n ? // @ts-ignore\r\n formatSliceTitle(d)\r\n : fullChartTooltip || withTooltip\r\n ? ''\r\n : `${data[d.index].name || ''} (${format(data[d.index].value)})`\r\n );\r\n\r\n if (enableSlicesLabels) {\r\n const text = global\r\n .selectAll('allSlices')\r\n .data(dataReady)\r\n .enter()\r\n .append('text')\r\n .attr('class', pieChartclassNames.pieSliceLabel)\r\n .attr('text-anchor', 'middle')\r\n .attr('dominant-baseline', 'central')\r\n .attr(\r\n 'transform',\r\n // @ts-ignore\r\n (d: PieChartDatum) => 'translate(' + arc.centroid(d) + ')'\r\n );\r\n\r\n text\r\n .append('tspan')\r\n .attr('class', pieChartclassNames.pieSliceLabelValue)\r\n // @ts-ignore\r\n .text((d: PieChartDatum) => {\r\n const deg = radiansToDegrees(d.endAngle - d.startAngle);\r\n\r\n if (!slicesLabelsSkipAngle || deg > slicesLabelsSkipAngle) {\r\n return formatSliceLabel ? formatSliceLabel(d) : d.value;\r\n }\r\n });\r\n\r\n if (enableSlicesLabelsName) {\r\n text\r\n .append('tspan')\r\n .attr('class', pieChartclassNames.pieSliceLabelName)\r\n // @ts-ignore\r\n .text((d: PieChartDatum) =>\r\n formatSliceLabelName ? formatSliceLabelName(d) : d.data.name\r\n )\r\n .attr('x', '0')\r\n .attr('dy', '1.2em');\r\n }\r\n }\r\n\r\n drawRadialLabels({\r\n arc,\r\n enableRadialLabels,\r\n global,\r\n radius,\r\n node,\r\n dataReady,\r\n translateX: (width - (marginLeft - marginRight)) / 2,\r\n translateY: (height + (marginTop - marginBottom)) / 2,\r\n radialLabelsLinkHorizontalLength,\r\n radialLabelsTextXOffset,\r\n formatRadialLabel,\r\n radialLabelYOffset,\r\n radialAngleXOffset,\r\n });\r\n\r\n if (withTooltip || fullChartTooltip) {\r\n drawTooltip({\r\n fullChartTooltip,\r\n global,\r\n data,\r\n tooltipClassName,\r\n tooltipBind,\r\n renderTooltip,\r\n allSlices,\r\n arc,\r\n tooltipStyle,\r\n width,\r\n height,\r\n radius,\r\n });\r\n }\r\n\r\n if (svgElements) {\r\n const html = ReactDOMServer.renderToString(svgElements);\r\n\r\n svg.append('g').html(html);\r\n }\r\n }\r\n};\r\n","import React, { useEffect } from 'react';\r\n\r\nimport { PieChartProps } from './types';\r\n\r\nimport { useNode } from '../../hooks';\r\nimport { useResize } from '../../hooks';\r\n\r\nimport { draw } from './draw';\r\n\r\nimport { SvgWrapper } from './styled';\r\n\r\nexport const PieChart: React.FC<PieChartProps> = (\r\n props\r\n): React.ReactElement => {\r\n const { className, style, children } = props;\r\n const [ref, node] = useNode();\r\n\r\n useEffect(() => {\r\n node && draw(node, props);\r\n }, [node, props]);\r\n\r\n const onDraw = () => draw(node, props);\r\n\r\n useResize(props.width, onDraw);\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <SvgWrapper ref={ref}>{children}</SvgWrapper>\r\n </div>\r\n );\r\n};\r\n\r\nPieChart.defaultProps = {\r\n data: [],\r\n startAngle: 0,\r\n endAngle: 360,\r\n slicesLabelsSkipAngle: 0,\r\n radialLabelYOffset: 16,\r\n radialAngleXOffset: 8,\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nimport { Interpolator } from '../../common/types/interpolator';\r\nimport { GetLegendProps } from './types';\r\n\r\nconst defaultN = 256;\r\n\r\nexport const legendClassNames = {\r\n legendContainer: 'd3-legend-container',\r\n legendTitle: 'd3-legend-title',\r\n legendTick: 'd3-legend-tick',\r\n legendTickLine: 'd3-legend-tick-line',\r\n legendTickText: 'd3-legend-tick-text',\r\n};\r\n\r\nfunction ramp(color: Interpolator, n: number = defaultN) {\r\n const canvas = document.createElement('canvas');\r\n canvas.width = n;\r\n canvas.height = 1;\r\n const context = canvas.getContext('2d') as CanvasRenderingContext2D;\r\n\r\n for (let i = 0; i < n; ++i) {\r\n context.fillStyle = color(i / (n - 1));\r\n context.fillRect(i, 0, 1, 1);\r\n }\r\n\r\n return canvas;\r\n}\r\n\r\nexport const legendDefaultParams = {\r\n tickSize: 6,\r\n height: 44,\r\n width: 320,\r\n marginTop: 18,\r\n marginBottom: 16,\r\n ticksDivier: 64,\r\n titleMarginBottom: 6,\r\n};\r\n\r\nexport const getLegend = ({\r\n color,\r\n title,\r\n tickSize = legendDefaultParams.tickSize,\r\n width = legendDefaultParams.width,\r\n height = legendDefaultParams.height + tickSize,\r\n marginTop = legendDefaultParams.marginTop,\r\n marginRight = 0,\r\n marginBottom = legendDefaultParams.marginBottom + tickSize,\r\n marginLeft = 0,\r\n ticks = legendDefaultParams.width / legendDefaultParams.ticksDivier,\r\n tickFormat,\r\n tickValues,\r\n titleMarginBottom,\r\n}: GetLegendProps) => {\r\n const svg = d3\r\n .create('svg')\r\n .attr('width', width)\r\n .attr('height', height)\r\n // @ts-ignore\r\n .attr('viewBox', [0, 0, width, height])\r\n .style('overflow', 'visible')\r\n .style('display', 'block');\r\n\r\n let tickAdjust = (g: d3.Selection<SVGGElement, any, any, any>) => {\r\n const tick = g.selectAll('.tick');\r\n\r\n tick\r\n .selectAll('.tick line')\r\n .attr('y1', marginTop + marginBottom - height)\r\n .attr('class', legendClassNames.legendTickLine);\r\n tick.selectAll('.tick text').attr('class', legendClassNames.legendTickText);\r\n tick.attr('class', legendClassNames.legendTick);\r\n\r\n return tick;\r\n };\r\n let x: any;\r\n\r\n // Continuous\r\n if (color.interpolate) {\r\n const n = Math.min(color.domain().length, color.range().length);\r\n\r\n x = color\r\n .copy()\r\n .rangeRound(\r\n d3.quantize(d3.interpolate(marginLeft, width - marginRight), n)\r\n );\r\n\r\n svg\r\n .append('image')\r\n .attr('x', marginLeft)\r\n .attr('y', marginTop)\r\n .attr('class', legendClassNames.legendContainer)\r\n .attr('width', width - marginLeft - marginRight)\r\n .attr('height', height - marginTop - marginBottom)\r\n .attr('preserveAspectRatio', 'none')\r\n .attr(\r\n 'xlink:href',\r\n ramp(\r\n color.copy().domain(d3.quantize(d3.interpolate(0, 1), n))\r\n ).toDataURL()\r\n );\r\n }\r\n\r\n // Sequential\r\n else if (color.interpolator) {\r\n x = Object.assign(\r\n color\r\n .copy()\r\n .interpolator(d3.interpolateRound(marginLeft, width - marginRight)),\r\n {\r\n range() {\r\n return [marginLeft, width - marginRight];\r\n },\r\n }\r\n );\r\n\r\n svg\r\n .append('image')\r\n .attr('x', marginLeft)\r\n .attr('y', marginTop)\r\n .attr('width', width - marginLeft - marginRight)\r\n .attr('height', height - marginTop - marginBottom)\r\n .attr('preserveAspectRatio', 'none')\r\n .attr('xlink:href', ramp(color.interpolator()).toDataURL());\r\n\r\n // scaleSequentialQuantile doesn’t implement ticks or tickFormat.\r\n if (!x.ticks) {\r\n if (tickValues === undefined) {\r\n const n = Math.round(ticks + 1);\r\n tickValues = d3\r\n .range(n)\r\n .map(i => d3.quantile(color.domain(), i / (n - 1)));\r\n }\r\n if (typeof tickFormat !== 'function') {\r\n tickFormat = d3.format(tickFormat === undefined ? ',f' : tickFormat);\r\n }\r\n }\r\n }\r\n\r\n svg\r\n .append('g')\r\n .attr('transform', `translate(0,${height - marginBottom})`)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .ticks(ticks, typeof tickFormat === 'string' ? tickFormat : undefined)\r\n // @ts-ignore\r\n .tickFormat(typeof tickFormat === 'function' ? tickFormat : undefined)\r\n .tickSize(tickSize)\r\n // @ts-ignore\r\n .tickValues(tickValues)\r\n )\r\n .call(tickAdjust)\r\n .call(g => g.select('.domain').remove())\r\n .call(g =>\r\n g\r\n .append('text')\r\n .attr('x', marginLeft)\r\n .attr('class', legendClassNames.legendTitle)\r\n .attr(\r\n 'y',\r\n marginTop +\r\n marginBottom -\r\n height -\r\n (titleMarginBottom || legendDefaultParams.titleMarginBottom)\r\n )\r\n .attr('fill', 'currentColor')\r\n .attr('text-anchor', 'start')\r\n .attr('font-weight', 'bold')\r\n .text(title as string)\r\n );\r\n\r\n return svg;\r\n};\r\n","import styled from 'styled-components';\r\n\r\nimport { Wrapper } from '../../common/components/Wrapper';\r\nimport { legendClassNames } from '../../helpers/getLegend';\r\n\r\nexport const calendarChartClassNames = {\r\n calendarChart: 'calendarChart',\r\n calendarYear: 'calendarYear',\r\n calendarAxis: 'calendarAxis',\r\n calendarBody: 'calendarBody',\r\n calendarHeader: 'calendarHeader',\r\n calendarYearTitle: 'calendarYearTitle',\r\n calendarWeekDay: 'calendarWeekDay',\r\n calendarMonth: 'calendarMonth',\r\n calendarDays: 'calendarDays',\r\n calendarDay: 'calendarDay',\r\n ...legendClassNames,\r\n};\r\n\r\nconst headerHeight = '20px';\r\n\r\nexport const SvgWrapper = styled(Wrapper)`\r\n .${calendarChartClassNames.calendarYear} {\r\n display: flex;\r\n margin-bottom: 16px;\r\n }\r\n .${calendarChartClassNames.calendarYearTitle} {\r\n display: inline-flex;\r\n align-items: flex-end;\r\n height: ${headerHeight};\r\n margin-bottom: 4px;\r\n font-weight: bold;\r\n }\r\n .${calendarChartClassNames.calendarHeader} {\r\n height: ${headerHeight};\r\n margin-bottom: 4px;\r\n position: relative;\r\n display: flex;\r\n }\r\n .${calendarChartClassNames.calendarMonth} {\r\n font-size: 14px;\r\n bottom: 0;\r\n position: absolute;\r\n }\r\n .${calendarChartClassNames.calendarAxis} {\r\n display: flex;\r\n flex-direction: column;\r\n margin-right: 10px;\r\n }\r\n .${calendarChartClassNames.calendarWeekDay} {\r\n font-size: 12px;\r\n display: inline-flex;\r\n align-items: center;\r\n justify-content: flex-end;\r\n }\r\n .${calendarChartClassNames.calendarDays} {\r\n position: relative;\r\n }\r\n .${calendarChartClassNames.calendarDay} {\r\n position: absolute;\r\n }\r\n`;\r\n","import * as d3 from 'd3';\r\n\r\nimport { Interpolator } from '../../common/types/interpolator';\r\nimport { CalendarChartProps, CalendarChartData } from './types';\r\n\r\nimport { getLegend } from '../../helpers/getLegend';\r\n\r\nimport { calendarChartClassNames } from './styled';\r\n\r\nexport const draw = (\r\n node: HTMLElement | null,\r\n props: CalendarChartProps\r\n): void => {\r\n const {\r\n data,\r\n startSunday,\r\n weekdays,\r\n interpolator,\r\n monthSpacing,\r\n onEachDay,\r\n colorRange,\r\n legendProps,\r\n } = props;\r\n\r\n if (node !== null && data.length) {\r\n const years: Map<number, CalendarChartData[]> = d3.group(data, d =>\r\n d.date.getUTCFullYear()\r\n );\r\n const cellOffset =\r\n typeof props.cellOffset === 'number' ? props.cellOffset : 0;\r\n const weekDays = 7;\r\n const defaultCellSize = 18;\r\n const cellSize = props.cellSize || defaultCellSize;\r\n const countDay = (i: number) =>\r\n startSunday ? i : (i + (weekDays - 1)) % weekDays;\r\n const days = weekdays || ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];\r\n const sundayIndex = 6;\r\n const formatDay = (i: number) =>\r\n startSunday ? days[i] : i === sundayIndex ? days[0] : days[i + 1];\r\n const formatDate = d3.utcFormat('%x');\r\n const timeWeek = startSunday ? d3.utcSunday : d3.utcMonday;\r\n const getTimeWeekCount = (from: Date, to: Date) =>\r\n timeWeek.count(d3.utcYear(from), to);\r\n const getMonthSpacing = (date: Date) =>\r\n date.getUTCMonth() * (monthSpacing || 0);\r\n const formatMonth = d3.utcFormat('%b');\r\n const max = d3.max(data.map(({ value }) => value)) as number;\r\n const min = d3.min(data.map(({ value }) => value)) as number;\r\n\r\n const color = colorRange\r\n ? d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n // @ts-ignore\r\n .range(colorRange)\r\n : d3\r\n .scaleSequential(interpolator || d3.interpolateGreens)\r\n .domain([min, +max]);\r\n\r\n let chartWidth = 0;\r\n\r\n years.forEach((values, year) => {\r\n const min = new Date(year, 1);\r\n const max = d3.max(values.map(d => d.date)) as Date;\r\n const months = max.getUTCMonth() - min.getUTCMonth();\r\n const weekCount = getTimeWeekCount(min, max) + 1;\r\n const width =\r\n weekCount * (cellSize + cellOffset) + (monthSpacing || 0) * months;\r\n\r\n chartWidth = Math.max(chartWidth, width);\r\n });\r\n\r\n d3.select(node)\r\n .select(`.${calendarChartClassNames.calendarChart}`)\r\n .remove();\r\n\r\n const container = d3\r\n .select(node)\r\n .append('div')\r\n .attr('class', calendarChartClassNames.calendarChart);\r\n\r\n const year = container\r\n .selectAll('div')\r\n // @ts-ignore\r\n .data(years)\r\n .join('div')\r\n .attr('class', calendarChartClassNames.calendarYear);\r\n\r\n const calendarWeekdays = year\r\n .append('div')\r\n .attr('class', calendarChartClassNames.calendarAxis);\r\n\r\n calendarWeekdays\r\n .append('div')\r\n .attr('class', calendarChartClassNames.calendarYearTitle)\r\n // @ts-ignore\r\n .text(([key]) => key);\r\n\r\n calendarWeekdays\r\n .selectAll('span')\r\n .data(d3.range(weekDays))\r\n .join('div')\r\n .attr('class', calendarChartClassNames.calendarWeekDay)\r\n .style('height', cellSize + 'px')\r\n .style('margin-bottom', cellOffset + 'px')\r\n .text(formatDay);\r\n\r\n const body = year\r\n .append('div')\r\n .attr('class', calendarChartClassNames.calendarBody);\r\n\r\n const header = body\r\n .append('div')\r\n .attr('class', calendarChartClassNames.calendarHeader);\r\n\r\n header\r\n .selectAll('div')\r\n // @ts-ignore\r\n .data(([_, values]) => {\r\n const fullYearlastMonth = 12;\r\n const fullYearlastDate = 31;\r\n\r\n return d3.utcMonths(\r\n d3.utcMonth(new Date(values[0].date.getUTCFullYear(), 1, 1)),\r\n d3.utcMonth(\r\n new Date(\r\n values[0].date.getUTCFullYear(),\r\n fullYearlastMonth,\r\n fullYearlastDate\r\n )\r\n )\r\n );\r\n })\r\n .join('div')\r\n .attr('class', calendarChartClassNames.calendarMonth)\r\n .style(\r\n 'left',\r\n (d: any) =>\r\n getTimeWeekCount(d, timeWeek.ceil(d)) * (cellSize + cellOffset) +\r\n getMonthSpacing(d) +\r\n 'px'\r\n )\r\n // @ts-ignore\r\n .text(formatMonth);\r\n\r\n // @ts-ignore\r\n body\r\n .append('div')\r\n .attr('class', calendarChartClassNames.calendarDays)\r\n .style('height', (cellSize + cellOffset) * weekDays + 'px')\r\n .style('width', chartWidth + 'px')\r\n .selectAll('div')\r\n // @ts-ignore\r\n .data(([, values]) => values)\r\n .join('div')\r\n // @ts-ignore\r\n .each((data: CalendarChartData, index, elements) => {\r\n if (onEachDay) {\r\n const element = elements[index] as HTMLDivElement;\r\n const currColor = color(data.value) as string;\r\n\r\n onEachDay(data, element, currColor);\r\n }\r\n })\r\n .attr('class', calendarChartClassNames.calendarDay)\r\n .style('width', cellSize + 'px')\r\n .style('height', cellSize + 'px')\r\n // @ts-ignore\r\n .style(\r\n 'left',\r\n (d: any) =>\r\n getTimeWeekCount(d.date, d.date) * (cellSize + cellOffset) +\r\n getMonthSpacing(d.date) +\r\n 'px'\r\n )\r\n .style(\r\n 'top',\r\n // @ts-ignore\r\n d => countDay(d.date.getUTCDay()) * (cellSize + cellOffset) + 'px'\r\n )\r\n // @ts-ignore\r\n .style('background-color', d => color(d.value))\r\n // @ts-ignore\r\n .attr('title', d => `${formatDate(d.date)} - ${d.value}`);\r\n\r\n if (typeof legendProps === 'object') {\r\n const legend = getLegend({\r\n color: color as Interpolator,\r\n ...legendProps,\r\n });\r\n\r\n const containerNode = container.node() as HTMLDivElement;\r\n const legendSvg = legend.node() as SVGElement;\r\n\r\n containerNode.appendChild(legendSvg);\r\n }\r\n }\r\n};\r\n","import React, { useEffect } from 'react';\r\n\r\nimport { CalendarChartProps } from './types';\r\n\r\nimport { useNode } from '../../hooks';\r\n\r\nimport { draw } from './draw';\r\n\r\nimport { SvgWrapper } from './styled';\r\n\r\nexport const CalendarChart: React.FC<CalendarChartProps> = (\r\n props\r\n): React.ReactElement => {\r\n const {\r\n className,\r\n style,\r\n children,\r\n data,\r\n startSunday,\r\n weekdays,\r\n cellOffset,\r\n cellSize,\r\n interpolator,\r\n monthSpacing,\r\n colorRange,\r\n legendProps,\r\n } = props;\r\n const [ref, node] = useNode();\r\n\r\n useEffect(() => {\r\n node && draw(node, props);\r\n // eslint-disable-next-line\r\n }, [\r\n node,\r\n data,\r\n startSunday,\r\n weekdays,\r\n cellOffset,\r\n cellSize,\r\n interpolator,\r\n monthSpacing,\r\n colorRange,\r\n legendProps,\r\n ]);\r\n\r\n return (\r\n <SvgWrapper ref={ref} className={className} style={style}>\r\n {children}\r\n </SvgWrapper>\r\n );\r\n};\r\n\r\nCalendarChart.defaultProps = {\r\n data: [],\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nexport function computeDimensions(\r\n selection: d3.Selection<any, any, any, any>\r\n): SVGRect | DOMRect {\r\n let dimensions;\r\n const node = selection.node();\r\n\r\n if (node instanceof SVGGraphicsElement) {\r\n // check if node is svg element\r\n dimensions = node.getBBox();\r\n } else {\r\n // else is html element\r\n dimensions = node.getBoundingClientRect();\r\n }\r\n\r\n return dimensions;\r\n}\r\n","export function none() {\r\n return;\r\n}\r\n\r\nexport function isVoid(value: any) {\r\n return value === undefined || value === null || Number.isNaN(value);\r\n}\r\n","import { LineChartData } from '../charts/LineChart/types';\r\n\r\nexport const stackedData = (data: LineChartData[]) => {\r\n const stacks: { [key: string]: { [key: string]: number } } = {};\r\n\r\n return data.map((item, index) => {\r\n stacks[index] = {};\r\n\r\n if (index > 0) {\r\n return {\r\n ...item,\r\n values: item.values.map((value, valuesIndex) => {\r\n const prevValue = stacks[index - 1][valuesIndex];\r\n stacks[index][valuesIndex] = Number(\r\n (typeof prevValue !== 'number' ? 0 : Math.abs(prevValue)) +\r\n (typeof value !== 'number' ? 0 : Math.abs(value))\r\n );\r\n\r\n return stacks[index][valuesIndex];\r\n }),\r\n };\r\n } else {\r\n item.values.forEach((value, valuesIndex) => {\r\n stacks[index][valuesIndex] = Number(value);\r\n });\r\n }\r\n\r\n return item;\r\n });\r\n};\r\n","import styled, { createGlobalStyle } from 'styled-components';\r\n\r\nimport { Wrapper } from '../../common/components/Wrapper';\r\n\r\nexport const lineChartClassNames = {\r\n lineChartYScaleGlobal: 'lineChartYScaleGlobal',\r\n lineChartYScaleRight: 'lineChartYScaleRight',\r\n lineChartXScaleGlobal: 'lineChartXScaleGlobal',\r\n lineChartLinesGlobal: 'lineChartLinesGlobal',\r\n lineChartLine: 'lineChartLine',\r\n lineChartAreasGlobal: 'lineChartAreasGlobal',\r\n lineChartArea: 'lineChartArea',\r\n lineChartDotsGlobalContainer: 'lineChartDotsGlobalContainer',\r\n lineChartDotsGlobal: 'lineChartDotsGlobal',\r\n lineChartDot: 'lineChartDot',\r\n lineChartGridGlobal: 'lineChartGridGlobal',\r\n lineChartGridLineX: 'lineChartGridLineX',\r\n lineChartGridLineY: 'lineChartGridLineY',\r\n lineChartLabelContainer: 'lineChartLabelContainer',\r\n lineChartLabelFlex: 'lineChartLabelFlex',\r\n lineChartLabel: 'lineChartLabel',\r\n lineChartMouseGlobal: 'lineChartMouseGlobal',\r\n lineChartMouseLine: 'lineChartMouseLine',\r\n lineChartMouseRect: 'lineChartMouseRect',\r\n lineChartMouseCircle: 'lineChartMouseCircle',\r\n lineChartMouseLabelContainer: 'lineChartMouseLabelContainer',\r\n lineChartMouseLabel: 'lineChartMouseLabel',\r\n};\r\n\r\nexport const SvgWrapper = styled(Wrapper)`\r\n .${lineChartClassNames.lineChartYScaleGlobal},\r\n .${lineChartClassNames.lineChartXScaleGlobal},\r\n .${lineChartClassNames.lineChartGridGlobal} {\r\n shape-rendering: crispEdges;\r\n }\r\n .${lineChartClassNames.lineChartLinesGlobal} {\r\n fill: none;\r\n stroke: steelblue;\r\n stroke-width: 1.5px;\r\n stroke-linejoin: round;\r\n stroke-linecap: round;\r\n }\r\n .${lineChartClassNames.lineChartArea} {\r\n fill-opacity: 0.24;\r\n }\r\n .${lineChartClassNames.lineChartGridLineX},\r\n .${lineChartClassNames.lineChartGridLineY},\r\n .${lineChartClassNames.lineChartMouseLine} {\r\n stroke: rgba(149, 149, 149, 0.24);\r\n }\r\n .${lineChartClassNames.lineChartMouseLine},\r\n .${lineChartClassNames.lineChartMouseCircle} {\r\n transition: opacity linear 200ms;\r\n pointer-events: none;\r\n stroke-width: 1px;\r\n }\r\n .${lineChartClassNames.lineChartDot} {\r\n stroke: #fff;\r\n stroke-width: 2px;\r\n }\r\n .${lineChartClassNames.lineChartMouseLine} {\r\n shape-rendering: crispEdges;\r\n }\r\n .${lineChartClassNames.lineChartMouseRect} {\r\n fill: none;\r\n pointer-events: all;\r\n }\r\n`;\r\n\r\nexport const TooltipStyles = createGlobalStyle`\r\n .${lineChartClassNames.lineChartMouseLabel} {\r\n transition: opacity linear 200ms;\r\n z-index: 100;\r\n .${lineChartClassNames.lineChartLabelFlex} {\r\n justify-content: flex-start;\r\n align-items: center;\r\n pointer-events: none;\r\n }\r\n .${lineChartClassNames.lineChartLabel} {\r\n margin: 0 0 0 10px;\r\n }\r\n }\r\n`;\r\n","import { DrawGridProps } from './types';\r\n\r\nimport { lineChartClassNames } from '../styled';\r\n\r\nexport const drawGrid = ({\r\n svg,\r\n yScale,\r\n xScale,\r\n yTicksCount,\r\n lastIndex,\r\n drawGridX,\r\n drawGridY,\r\n}: DrawGridProps) => {\r\n if (!drawGridY && !drawGridX) return;\r\n\r\n const global = svg\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartGridGlobal);\r\n\r\n const yTicks = yScale.ticks(yTicksCount);\r\n\r\n if (drawGridX) {\r\n global\r\n .append('g')\r\n .selectAll('line')\r\n .data(yTicks)\r\n .join('line')\r\n .attr('class', lineChartClassNames.lineChartGridLineX)\r\n .attr('x1', () => xScale(0))\r\n .attr('x2', () => xScale(lastIndex))\r\n .attr('y1', (d: number) => Math.round(yScale(d)))\r\n .attr('y2', (d: number) => Math.round(yScale(d)));\r\n }\r\n\r\n if (drawGridY) {\r\n global\r\n .append('g')\r\n .selectAll('line')\r\n .data(Array.from({ length: lastIndex + 1 }, (_, index) => index))\r\n .join('line')\r\n .attr('class', lineChartClassNames.lineChartGridLineY)\r\n .attr('x1', (_, index: number) => Math.round(xScale(index) as number))\r\n .attr('x2', (_, index: number) => Math.round(xScale(index) as number))\r\n .attr('y1', () => Math.round(yScale(yTicks[0]) as number))\r\n .attr('y2', () =>\r\n Math.round(yScale(yTicks[yTicks.length - 1]) as number)\r\n );\r\n }\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const LabelContainer = styled.div`\r\n width: 0;\r\n height: 0;\r\n display: flex;\r\n align-items: flex-end;\r\n justify-content: center;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n`;\r\n\r\nexport const Label = styled.div`\r\n margin-bottom: 4px;\r\n`;\r\n","import React from 'react';\r\nimport * as d3 from 'd3';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nimport { DrawLabelProps } from './types';\r\n\r\nimport { none } from '../../../helpers/common';\r\n\r\nimport { lineChartClassNames } from '../styled';\r\nimport { LabelContainer, Label } from './styled';\r\n\r\nexport const labelClassName = 'd3-chart-label';\r\n\r\nexport const drawLabel = ({\r\n node,\r\n data,\r\n yScale,\r\n xScale,\r\n formatLabel,\r\n eachLabel,\r\n}: DrawLabelProps) => {\r\n const labelsDiv = d3\r\n .select(node)\r\n .append('div')\r\n .attr('class', labelClassName);\r\n const format = d3.format(',');\r\n\r\n // @ts-ignore\r\n data.forEach(({ values }: { values: number[] }) => {\r\n labelsDiv\r\n .append('div')\r\n .selectAll('div')\r\n .data(values)\r\n .join('div')\r\n .attr('class', lineChartClassNames.lineChartLabelContainer)\r\n .style('position', 'absolute')\r\n .style('left', (_, index) => xScale(index) + 'px')\r\n .style('top', d => yScale(d) + 'px')\r\n .html((d: number, index, elements: any) => {\r\n const html = ReactDOMServer.renderToString(\r\n <LabelContainer className={lineChartClassNames.lineChartLabelFlex}>\r\n <Label className={lineChartClassNames.lineChartLabel}>\r\n {formatLabel ? formatLabel(d, index, elements) : format(d)}\r\n </Label>\r\n </LabelContainer>\r\n );\r\n\r\n return html;\r\n })\r\n // @ts-ignore\r\n .each(eachLabel ? eachLabel : none);\r\n });\r\n};\r\n","import React from 'react';\r\nimport * as d3 from 'd3';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nimport { DrawTooltipProps } from './types';\r\n\r\nimport { isVoid } from '../../../helpers/common';\r\n\r\nimport { lineChartClassNames } from '../styled';\r\nimport { Label, LabelContainer } from '../drawLabel/styled';\r\n\r\nexport const drawTooltip = ({\r\n svg,\r\n node,\r\n data: argData,\r\n xScale,\r\n yScale,\r\n dynamicCircleRadius,\r\n formatDynamicTooltip,\r\n renderTooltip,\r\n stackedTooltipIndex,\r\n stackedTooltip,\r\n tooltipLineTop,\r\n tooltipRoot,\r\n tooltipClassName,\r\n dotSnapping,\r\n lastIndex,\r\n}: DrawTooltipProps) => {\r\n const container: Element | null =\r\n tooltipRoot || document.querySelector('body');\r\n const format = d3.format(',');\r\n const chartData = argData.filter(({ tooltipOff }) => !tooltipOff);\r\n\r\n const data =\r\n typeof stackedTooltipIndex === 'number'\r\n ? [chartData[stackedTooltipIndex]]\r\n : stackedTooltip\r\n ? [chartData[0]]\r\n : chartData;\r\n\r\n const [x1, x2] = xScale.range();\r\n const [y1, y2] = yScale.range();\r\n\r\n const mouseGlobal = svg\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartMouseGlobal);\r\n\r\n const mouseRect = mouseGlobal\r\n .append('rect')\r\n .attr('width', x2 - x1)\r\n .attr('height', Math.abs(y1 - y2))\r\n .attr('class', lineChartClassNames.lineChartMouseRect)\r\n .attr('transform', `translate(${x1}, ${y2})`);\r\n\r\n const mouseLine = mouseGlobal\r\n .append('path')\r\n .attr('class', lineChartClassNames.lineChartMouseLine)\r\n .style('opacity', '0');\r\n\r\n const lines = svg\r\n .selectAll(`.${lineChartClassNames.lineChartLine}`)\r\n .nodes() as SVGPathElement[];\r\n\r\n const circles = mouseGlobal\r\n .selectAll('circle')\r\n .data(chartData.filter(({ dynamicDotOff }) => !dynamicDotOff))\r\n .join('circle')\r\n .attr('class', lineChartClassNames.lineChartMouseCircle)\r\n .attr('r', dynamicCircleRadius as number)\r\n .attr('fill', ({ stroke }) => stroke || 'none')\r\n .attr('stroke', ({ stroke }) => stroke || 'none')\r\n .style('opacity', '0');\r\n\r\n let labelContainer: d3.Selection<any, unknown, any, any> = d3.select(\r\n `.${lineChartClassNames.lineChartMouseLabelContainer}`\r\n );\r\n\r\n if (labelContainer.size() === 0) {\r\n labelContainer = d3\r\n .select(container)\r\n .append('div')\r\n .attr('class', lineChartClassNames.lineChartMouseLabelContainer);\r\n }\r\n\r\n let labels: d3.Selection<any, any, any, any> | null = null;\r\n\r\n let isVisible = false;\r\n\r\n const setVisible = (visible?: boolean) => {\r\n isVisible = Boolean(visible);\r\n const opacity = isVisible ? '1' : '0';\r\n mouseLine.style('opacity', opacity);\r\n circles.style('opacity', opacity);\r\n labels && labels.style('opacity', opacity);\r\n };\r\n\r\n const mouseMove = (event: MouseEvent | TouchEvent) => {\r\n const [docX, docY] = d3.pointer(event, document);\r\n const [rectrX] = d3.pointer(event, mouseRect);\r\n const [nodeX, nodeY] = d3.pointer(event, node);\r\n const x = rectrX - (rectrX - nodeX);\r\n const left = nodeX + (docX - nodeX);\r\n const currIndex = Math.abs(xScale.invert(x));\r\n const positions: { [key: string]: { x: number; y: number } } = {};\r\n\r\n const getValue = (values: (number | null)[]) => {\r\n // The returning result is fixed for the task: https://jr.everpoint.ru/browse/PUB-5648\r\n // Before the task it was like this (and I don't know why):\r\n /* return !isVoid(values[Math.floor(currIndex + 1)])\r\n ? values[Math.floor(currIndex)]\r\n : null;*/\r\n\r\n return values[Math.floor(currIndex)];\r\n }\r\n\r\n lines.forEach((line, index) => {\r\n let pos = {\r\n x: 0,\r\n y: 0,\r\n };\r\n\r\n if (!line.hasAttribute('d') || argData[index].tooltipOff) {\r\n positions[index] = pos;\r\n return;\r\n }\r\n\r\n if (!dotSnapping) {\r\n let beginning = 0;\r\n let end = line.getTotalLength();\r\n let target = null;\r\n\r\n while (true) {\r\n target = Math.floor((beginning + end) / 2);\r\n pos = line.getPointAtLength(target);\r\n\r\n if ((target === end || target === beginning) && pos.x !== x) {\r\n break;\r\n }\r\n\r\n if (pos.x > x) {\r\n end = target;\r\n } else if (pos.x < x) {\r\n beginning = target;\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n positions[index] = pos;\r\n } else {\r\n const [x1, x2] = xScale.range();\r\n const chartWidth = x2 - x1;\r\n const step = chartWidth / lastIndex;\r\n\r\n positions[index] = {\r\n x: x1 + Math.round(currIndex) * step,\r\n y: typeof argData[index].values[Math.round(currIndex)] === \"number\"\r\n ? yScale(argData[index].values[Math.round(currIndex)] as number)\r\n : 0,\r\n };\r\n }\r\n });\r\n\r\n circles\r\n .attr('transform', (lineChartData, index) => {\r\n const value = getValue(lineChartData.values);\r\n\r\n return positions[index] && value\r\n ? 'translate(' + (!dotSnapping ? x : positions[index].x) + ',' + positions[index].y + ')'\r\n : 'translate(-9999, -9999)';\r\n })\r\n .attr('style', ({ dynamicDotStyle }) => dynamicDotStyle || '');\r\n\r\n const datas = chartData.map(({ values, ...rest }, i) => ({\r\n ...rest,\r\n value: getValue(values),\r\n invertValue: positions[i] ? yScale.invert(positions[i].y) : 0,\r\n }));\r\n\r\n const noHasData = datas.every(({ value }) => isVoid(value));\r\n\r\n if (noHasData && isVisible) {\r\n setVisible();\r\n } else if (!isVisible && !noHasData) {\r\n setVisible(true);\r\n }\r\n\r\n const topIndex = Object.keys(positions).reduce((acc, key, index) => {\r\n const prevValue = datas[Number(acc)]?.value;\r\n const value = datas[Number(key)]?.value;\r\n const dynamicDotOff = argData?.[index].dynamicDotOff;\r\n\r\n return index === 0 || isVoid(value) || dynamicDotOff\r\n ? acc\r\n : isVoid(prevValue) || positions[acc].y > positions[key].y\r\n ? key\r\n : acc;\r\n }, '0');\r\n\r\n const labelTexts =\r\n labels &&\r\n labels\r\n .style('left', (_, i) => {\r\n return !dotSnapping ? `${left}px` : `${positions[i]?.x ?? 0}px`;\r\n })\r\n .style('top', (_, i) => {\r\n const index =\r\n typeof stackedTooltipIndex === 'number'\r\n ? stackedTooltipIndex\r\n : stackedTooltip\r\n ? topIndex\r\n : i;\r\n\r\n return `${(positions[index]?.y ?? 0) + (docY - nodeY)}px`;\r\n })\r\n .select(`.${lineChartClassNames.lineChartLabel}`);\r\n\r\n if (renderTooltip && labels) {\r\n labels.html((_, index) => {\r\n return ReactDOMServer.renderToString(\r\n <LabelContainer className={lineChartClassNames.lineChartLabelFlex}>\r\n {renderTooltip(datas, {\r\n indexX: Math.round(currIndex),\r\n indexY: index,\r\n svg,\r\n event,\r\n })}\r\n </LabelContainer>\r\n );\r\n });\r\n } else {\r\n labelTexts &&\r\n labelTexts.text((_, i) => {\r\n const value = datas[i].value;\r\n const invertValue = datas[i].invertValue;\r\n\r\n return formatDynamicTooltip\r\n ? formatDynamicTooltip(invertValue, value)\r\n : format(invertValue);\r\n });\r\n }\r\n\r\n mouseLine.attr('d', () => {\r\n let d = 'M' + x + ',' + y1;\r\n d += ' ' + x + ',' + (tooltipLineTop ? y2 : positions[topIndex]?.y || 0);\r\n return d;\r\n });\r\n };\r\n\r\n mouseRect.on('mouseover.tooltip', event => {\r\n labels = labelContainer\r\n .selectAll('div')\r\n .data(data)\r\n .join('div')\r\n .attr(\r\n 'class',\r\n `${lineChartClassNames.lineChartMouseLabel} ${tooltipClassName || ''}`\r\n )\r\n .style('opacity', '0')\r\n .style('position', 'absolute')\r\n .html(() => {\r\n const html = ReactDOMServer.renderToString(\r\n <LabelContainer className={lineChartClassNames.lineChartLabelFlex}>\r\n <Label className={lineChartClassNames.lineChartLabel} />\r\n </LabelContainer>\r\n );\r\n\r\n return html;\r\n });\r\n\r\n mouseMove(event);\r\n });\r\n\r\n mouseRect.on('mouseout.tooltip', () => {\r\n d3.select(`.${lineChartClassNames.lineChartMouseLabelContainer}`)\r\n .selectAll('*')\r\n .remove();\r\n setVisible();\r\n });\r\n\r\n mouseRect.on('touchmove.tooltip mousemove.tooltip', mouseMove);\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nimport { LineChartProps, LineChartData, LineChartDot } from './types';\r\n\r\nimport { computeDimensions } from '../../helpers/computeDimensions';\r\nimport { appendSvg } from '../../helpers';\r\nimport { none } from '../../helpers/common';\r\nimport { stackedData } from '../../helpers/stackedData';\r\nimport { drawGrid } from './drawGrid';\r\nimport { drawLabel, labelClassName } from './drawLabel';\r\nimport { drawTooltip } from './drawTooltip';\r\n\r\nimport { lineChartClassNames } from './styled';\r\n\r\nexport const draw = (node: HTMLElement | null, props: LineChartProps): void => {\r\n const {\r\n data: chartData,\r\n labels,\r\n margin,\r\n customYAxisSelection,\r\n customXAxisSelection,\r\n customYAxis,\r\n customXAxis,\r\n curve,\r\n yAxisPadding,\r\n xAxisPadding,\r\n drawGridY,\r\n drawGridX,\r\n withLabels,\r\n formatLabel,\r\n eachLabel,\r\n stacked,\r\n dynamicTooltipEnable,\r\n dynamicCircleRadius,\r\n formatDynamicTooltip,\r\n renderTooltip,\r\n stackedTooltip,\r\n stackedTooltipIndex,\r\n tooltipLineTop,\r\n customize,\r\n customYScale,\r\n customLine,\r\n tooltipClassName,\r\n xScaleItemWidth,\r\n areaCurve,\r\n dotSnapping,\r\n rightAxis,\r\n } = props;\r\n\r\n if (node !== null && chartData.length) {\r\n const data = stacked ? stackedData(chartData) : chartData;\r\n const marginTop = margin ? margin.top : 0;\r\n const marginRight = margin ? margin.right : 0;\r\n const marginBottom = margin ? margin.bottom : 0;\r\n const marginLeft = margin ? margin.left : 0;\r\n const { width: nodeWidth } = node.getBoundingClientRect();\r\n const width = props.width || nodeWidth;\r\n const height = props.height || 0;\r\n const min =\r\n typeof props.min === 'number'\r\n ? props.min\r\n : d3.min(data, ({ values }) => d3.min(values as number[]));\r\n const max =\r\n typeof props.max === 'number'\r\n ? props.max\r\n : d3.max(data, ({ values }) => d3.max(values as number[]));\r\n\r\n const svg = appendSvg(node, width, height || 0);\r\n\r\n const yRange = [\r\n height - marginTop - marginBottom - (xAxisPadding || 0),\r\n marginTop,\r\n ];\r\n const yScale = d3\r\n .scaleLinear()\r\n .domain([min || 0, max || 0])\r\n .range(yRange)\r\n .nice();\r\n\r\n customYScale && customYScale(yScale);\r\n\r\n const yTicksCountDefault = 8;\r\n const yAxisLeft = d3.axisLeft(yScale).ticks(yTicksCountDefault);\r\n\r\n customYAxis && customYAxis(yAxisLeft);\r\n\r\n const yTicksCount = yAxisLeft.tickArguments()[0];\r\n\r\n const yAxis = svg\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartYScaleGlobal)\r\n .call(yAxisLeft)\r\n .call(customYAxisSelection ? customYAxisSelection : none);\r\n const { width: yAxisWidth } = computeDimensions(yAxis);\r\n\r\n yAxis.attr('transform', `translate(${marginLeft + yAxisWidth}, 0)`);\r\n\r\n let yAxisRightWidth = 0;\r\n\r\n if (rightAxis) {\r\n const rightAxisMin = d3.min(rightAxis);\r\n const rightAxisMax = d3.max(rightAxis);\r\n const yRightScale = d3\r\n .scaleLinear()\r\n .domain([rightAxisMin || 0, rightAxisMax || 0])\r\n .range(yRange)\r\n .nice();\r\n\r\n const yAxisRightTicks = d3.axisRight(yRightScale).ticks(yTicksCountDefault);\r\n const yAxisRight = svg\r\n .append('g')\r\n .attr('class', `${lineChartClassNames.lineChartYScaleGlobal} ${lineChartClassNames.lineChartYScaleRight}`)\r\n .call(yAxisRightTicks)\r\n .call(customYAxisSelection ? customYAxisSelection : none);\r\n\r\n ({ width: yAxisRightWidth } = computeDimensions(yAxisRight));\r\n\r\n yAxisRight.attr('transform', `translate(${width - yAxisRightWidth}, 0)`);\r\n }\r\n\r\n /** xScale **/\r\n const lastIndex =\r\n labels && labels.length\r\n ? labels.length - 1\r\n : data.reduce((acc, { values }) => Math.max(acc, values.length), 0) - 1;\r\n\r\n const xScale = d3\r\n .scaleLinear()\r\n .domain([0, lastIndex])\r\n .range([\r\n marginLeft + yAxisWidth + (yAxisPadding || 0),\r\n width - yAxisRightWidth - marginRight,\r\n ]);\r\n\r\n const xAxisBottom = d3\r\n .axisBottom(xScale)\r\n .tickFormat((value: d3.NumberValue) =>\r\n // @ts-ignore\r\n labels && labels.length > 0 ? labels[value] : 0\r\n )\r\n .ticks(lastIndex);\r\n\r\n if (typeof xScaleItemWidth === 'number') {\r\n const [x1, x2] = xScale.range();\r\n const chartWidth = x2 - x1;\r\n\r\n xAxisBottom\r\n .ticks(Math.round(chartWidth / xScaleItemWidth))\r\n .tickSizeOuter(0);\r\n }\r\n\r\n customXAxis && customXAxis(xAxisBottom);\r\n\r\n drawGrid({\r\n svg,\r\n yScale,\r\n xScale,\r\n yTicksCount,\r\n lastIndex,\r\n drawGridY,\r\n drawGridX,\r\n });\r\n\r\n if (Array.isArray(labels) && labels.length > 0) {\r\n const xAxis = svg\r\n .append('g')\r\n .call(customXAxisSelection ? customXAxisSelection : none)\r\n .attr('class', lineChartClassNames.lineChartXScaleGlobal)\r\n .call(xAxisBottom);\r\n\r\n const { height: xAxisHeight } = computeDimensions(xAxis);\r\n\r\n xAxis.attr(\r\n 'transform',\r\n `translate(0, ${height - Math.ceil(xAxisHeight) - marginBottom})`\r\n );\r\n }\r\n\r\n const line = d3\r\n .line()\r\n .defined(d => d !== null)\r\n .x((_, index) => xScale(index))\r\n .y((d: unknown) => yScale(d as d3.NumberValue))\r\n .curve(curve || d3.curveLinear);\r\n\r\n customLine && customLine(line);\r\n\r\n const withAreas = data.some(({ fill }) => fill);\r\n\r\n if (withAreas) {\r\n let dataIndex = -2;\r\n\r\n const getArea = (d: LineChartData): d3.Area<[number, number]> => {\r\n const { minAreaValues } = d;\r\n const minTick = yScale.ticks()[0];\r\n\r\n return d3\r\n .area()\r\n .defined(d => d !== null)\r\n .x((_, index) => xScale(index))\r\n .y0((value: unknown, index) => {\r\n if (index === 0) {\r\n dataIndex = dataIndex + 1;\r\n }\r\n\r\n let minValue: number = minTick;\r\n\r\n if (minAreaValues && typeof minAreaValues[index] === 'number') {\r\n minValue = minAreaValues[index] || minValue;\r\n } else if (minAreaValues) {\r\n minValue = yScale(\r\n (minValue - (value as number)) as d3.NumberValue\r\n );\r\n }\r\n\r\n const currData = data[dataIndex];\r\n\r\n return stacked\r\n ? dataIndex > -1\r\n ? yScale(\r\n typeof currData.values[index] !== 'number'\r\n ? 0\r\n : (currData.values[index] as number)\r\n )\r\n : yScale(minValue)\r\n : yScale(minValue);\r\n })\r\n .y1((d: unknown) => yScale(d as d3.NumberValue))\r\n .curve(areaCurve || curve || d3.curveLinear);\r\n };\r\n\r\n svg\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartAreasGlobal)\r\n .selectAll('path')\r\n .data(data.filter(({ fill }) => Boolean(fill)))\r\n .join('path')\r\n .attr('class', lineChartClassNames.lineChartArea)\r\n .attr('d', (d: LineChartData) => {\r\n const area = getArea(d);\r\n\r\n return area((d.values as unknown) as [number, number][]);\r\n })\r\n .attr('fill', ({ fill }) => fill || 'none')\r\n .attr('style', ({ areaStyle }) => areaStyle || '');\r\n }\r\n\r\n svg\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartLinesGlobal)\r\n .selectAll('path')\r\n .data(data)\r\n .join('path')\r\n .attr('class', lineChartClassNames.lineChartLine)\r\n .attr('d', (d: LineChartData | any) => line(d.values))\r\n .attr('stroke', ({ stroke }) => stroke || 'steelblue')\r\n .attr('style', ({ style }) => style || '');\r\n\r\n const dots = data.filter(({ dot }) => dot) as (Omit<\r\n LineChartData,\r\n 'dot'\r\n > & {\r\n dot: LineChartDot;\r\n })[];\r\n\r\n if (dots.length > 0) {\r\n const dotsGlobal = svg\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartDotsGlobalContainer);\r\n\r\n dots.forEach(item => {\r\n const { values, dot } = item;\r\n const { radius, style, filter } = dot;\r\n\r\n const dotsGroup = dotsGlobal\r\n .append('g')\r\n .attr('class', lineChartClassNames.lineChartDotsGlobal);\r\n\r\n dotsGroup\r\n .selectAll('circle')\r\n .data(values)\r\n .join('circle')\r\n .attr('cx', (_, index) => xScale(index))\r\n .attr('class', lineChartClassNames.lineChartDot)\r\n .attr('cy', d => yScale(d as d3.NumberValue))\r\n .attr('r', radius || 0)\r\n .attr('style', style || '');\r\n\r\n if (filter) {\r\n dotsGroup\r\n .selectAll('circle')\r\n .select((_, i, g) => (filter(item, i, g) ? g[i] : null))\r\n .remove();\r\n }\r\n });\r\n }\r\n\r\n d3.select(node)\r\n .select(`.${labelClassName}`)\r\n .remove();\r\n withLabels &&\r\n drawLabel({ node, eachLabel, data, yScale, xScale, formatLabel });\r\n\r\n if (dynamicTooltipEnable) {\r\n drawTooltip({\r\n tooltipLineTop,\r\n stackedTooltip,\r\n renderTooltip,\r\n stackedTooltipIndex,\r\n formatDynamicTooltip,\r\n node,\r\n svg,\r\n data,\r\n xScale,\r\n yScale,\r\n dynamicCircleRadius,\r\n tooltipClassName,\r\n dotSnapping,\r\n lastIndex,\r\n });\r\n }\r\n\r\n customize && customize({ svg, yScale, xScale });\r\n }\r\n};\r\n","import React, { useEffect } from 'react';\r\n\r\nimport { LineChartProps } from './types';\r\n\r\nimport { useNode } from '../../hooks';\r\nimport { useResize } from '../../hooks';\r\n\r\nimport { draw } from './draw';\r\n\r\nimport { SvgWrapper, TooltipStyles } from './styled';\r\n\r\nexport const LineChart: React.FC<LineChartProps> = (\r\n props\r\n): React.ReactElement => {\r\n const { className, style, children } = props;\r\n const [ref, node] = useNode();\r\n\r\n useEffect(() => {\r\n node && draw(node, props);\r\n }, [node, props]);\r\n\r\n const onDraw = () => draw(node, props);\r\n\r\n useResize(props.width, onDraw);\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <TooltipStyles />\r\n <SvgWrapper ref={ref}>{children}</SvgWrapper>\r\n </div>\r\n );\r\n};\r\n\r\nLineChart.defaultProps = {\r\n data: [],\r\n labels: [],\r\n height: 240,\r\n yAxisPadding: 10,\r\n xAxisPadding: 20,\r\n margin: {\r\n top: 10,\r\n right: 10,\r\n bottom: 10,\r\n left: 0,\r\n },\r\n dynamicCircleRadius: 4,\r\n stackedTooltip: false,\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nimport { BarChartLineData } from '../types';\r\nimport { DrawLinesProps } from './types';\r\n\r\nexport const barChartLinesClassNames = {\r\n barChartLinesGlobal: 'barChartLinesGlobal',\r\n barChartLine: 'barChartLine',\r\n barChartAreasGlobal: 'barChartAreasGlobal',\r\n barChartArea: 'barChartArea',\r\n};\r\n\r\nexport const drawLines = ({\r\n svg,\r\n lineData,\r\n min,\r\n yScale,\r\n xScale,\r\n curve,\r\n stackedLine,\r\n}: DrawLinesProps) => {\r\n let linesSelection = null;\r\n let areasSelection = null;\r\n let area: d3.Area<[number, number]> | null = null;\r\n\r\n const line = d3\r\n .line()\r\n .defined(d => d !== null)\r\n .x(\r\n (_, index) =>\r\n (xScale((index as unknown) as string) as number) + bandwidth / 2\r\n )\r\n // @ts-ignore\r\n .y((d: number) => yScale(d))\r\n .curve(curve || d3.curveLinear);\r\n const bandwidth = xScale.bandwidth();\r\n\r\n const linesData = lineData.filter(({ lineType }) => lineType === 'line');\r\n const areasData = lineData.filter(({ lineType }) => lineType === 'area');\r\n\r\n if (linesData.length > 0) {\r\n linesSelection = svg\r\n .append('g')\r\n .attr('class', barChartLinesClassNames.barChartLinesGlobal)\r\n .selectAll('path')\r\n .data(linesData)\r\n .join('path')\r\n .attr('class', barChartLinesClassNames.barChartLine)\r\n .attr('d', (d: BarChartLineData) =>\r\n line(d.values as Iterable<[number, number]>)\r\n )\r\n .attr('stroke', ({ stroke }) => stroke || '')\r\n .attr('fill', ({ fill }) => fill || 'none');\r\n }\r\n\r\n if (areasData.length > 0) {\r\n let dataIndex = -2;\r\n\r\n area = d3\r\n .area()\r\n .x(\r\n (_, index) =>\r\n (xScale((index as unknown) as string) as number) + bandwidth / 2\r\n )\r\n .y0((_, index) => {\r\n if (index === 0) {\r\n dataIndex = dataIndex + 1;\r\n }\r\n\r\n return stackedLine\r\n ? dataIndex > -1\r\n ? yScale(\r\n typeof lineData[dataIndex].values[index] !== 'number'\r\n ? 0\r\n : (lineData[dataIndex].values[index] as number)\r\n )\r\n : yScale(min as number)\r\n : yScale(min as number);\r\n })\r\n // @ts-ignore\r\n .y1(d => yScale(d))\r\n .curve(curve || d3.curveLinear);\r\n\r\n areasSelection = svg\r\n .append('g')\r\n .attr('class', barChartLinesClassNames.barChartAreasGlobal)\r\n .selectAll('path')\r\n .data(areasData)\r\n .join('path')\r\n .attr('class', barChartLinesClassNames.barChartArea)\r\n .attr('d', (d: BarChartLineData | any) => area && area(d.values))\r\n .attr('fill', ({ fill }) => fill || 'none');\r\n }\r\n\r\n return {\r\n areasSelection,\r\n linesSelection,\r\n area,\r\n };\r\n};\r\n","import styled, { createGlobalStyle } from 'styled-components';\r\n\r\nimport { Wrapper } from '../../common/components/Wrapper';\r\nimport { barChartLinesClassNames } from './drawLines';\r\n\r\nconst tooltipClassnames = {\r\n barChartMouseRect: 'barChartMouseRect',\r\n barChartMouseContainer: 'barChartMouseContainer',\r\n barChartTooltipFlex: 'barChartTooltipFlex',\r\n barChartMouseTooltip: 'barChartMouseTooltip',\r\n barChartTooltip: 'barChartTooltip',\r\n barChartTooltipItem: 'barChartTooltipItem',\r\n barChartTooltipColFlex: 'barChartTooltipColFlex',\r\n barChartTooltipGroupName: 'barChartTooltipGroupName',\r\n barChartColorBox: 'barChartColorBox',\r\n barChartColorLine: 'barChartColorLine',\r\n barChartTooltipName: 'barChartTooltipName',\r\n barChartTooltipValue: 'barChartTooltipValue',\r\n};\r\n\r\nconst labelClassnames = {\r\n barChartLabelContainer: 'barChartLabelContainer',\r\n barChartLabelFlex: 'barChartLabelFlex',\r\n barChartLabel: 'barChartLabel',\r\n};\r\n\r\nexport const barChartClassNames = {\r\n barChartBarGlobal: 'barChartBarGlobal',\r\n barChartYScaleGlobal: 'barChartYScaleGlobal',\r\n barChartYAxis: 'barChartYAxis',\r\n barChartXAxis: 'barChartXAxis',\r\n barChartYAxisZeroTick: 'barChartYAxisZeroTick',\r\n barChartGridGlobal: 'barChartGridGlobal',\r\n barChartGridLineX: 'barChartGridLineX',\r\n barChartGridLineXZero: 'barChartGridLineXZero',\r\n barChartGridLineYZero: 'barChartGridLineYZero',\r\n barChartGridLineY: 'barChartGridLineY',\r\n barChartSelection: 'barChartSelection',\r\n ...tooltipClassnames,\r\n ...labelClassnames,\r\n ...barChartLinesClassNames,\r\n};\r\n\r\nexport const SvgWrapper = styled(Wrapper)<{ selectable?: boolean }>`\r\n display: ${({ selectable }) => selectable && \"inline-block\"};\r\n user-select: ${({ selectable }) => selectable && \"none\"};\r\n width: ${({ selectable }) => selectable && \"auto\"};\r\n\r\n line {\r\n stroke-width: 1px;\r\n shape-rendering: crispEdges;\r\n }\r\n\r\n .${barChartClassNames.barChartGridLineX},\r\n .${barChartClassNames.barChartGridLineY} {\r\n stroke: rgba(48, 69, 79, 0.06);\r\n }\r\n\r\n .${barChartClassNames.barChartMouseRect} {\r\n }\r\n\r\n .${barChartClassNames.barChartMouseRect} {\r\n fill: none;\r\n pointer-events: all;\r\n }\r\n\r\n .${barChartClassNames.barChartLinesGlobal} {\r\n stroke-width: 1.5px;\r\n stroke-linejoin: round;\r\n stroke-linecap: round;\r\n }\r\n\r\n .${barChartClassNames.barChartLine} {\r\n shape-rendering: auto;\r\n }\r\n\r\n .${barChartClassNames.barChartArea} {\r\n fill-opacity: 0.24;\r\n }\r\n\r\n .${barChartClassNames.barChartSelection} {\r\n position: absolute;\r\n top: 0;\r\n width: 0;\r\n background: rgba(0, 170, 255, 0.06);\r\n box-shadow: 1px 0 0 #00AAFF, -1px 0 0 #00AAFF;\r\n pointer-events: none;\r\n }\r\n`;\r\n\r\nexport const TooltipStyles = createGlobalStyle`\r\n .${barChartClassNames.barChartMouseTooltip} {\r\n z-index: 100;\r\n transition: all linear 144ms;\r\n\r\n .${barChartClassNames.barChartTooltipItem} {\r\n margin-bottom: 4px;\r\n :last-of-type {\r\n margin-bottom: 0;\r\n }\r\n }\r\n }\r\n`;\r\n","import { useCallback, useEffect, useRef } from \"react\";\r\n\r\nimport { barChartClassNames } from \"../styled\";\r\n\r\nimport { BarChartProps } from \"../types\";\r\n\r\nexport const useSelection = (node: HTMLElement | null, props: BarChartProps) => {\r\n const drawing = useRef<boolean>(false);\r\n const startX = useRef<number>(0);\r\n const selection = useRef<HTMLDivElement | undefined>();\r\n\r\n const clearSelection = useCallback(() => {\r\n if (node && selection.current) {\r\n drawing.current = false;\r\n\r\n node.removeChild(selection.current);\r\n\r\n selection.current = undefined;\r\n }\r\n }, [node]);\r\n\r\n const onStartDrawing = useCallback((e) => {\r\n const isTouch = Boolean(e.touches);\r\n\r\n e.stopPropagation();\r\n\r\n if (node && e.which !== 3) {\r\n clearSelection();\r\n\r\n selection.current = document.createElement(\"div\");\r\n selection.current.setAttribute(\"class\", barChartClassNames.barChartSelection);\r\n selection.current.setAttribute(\"style\", `height: calc(100% - ${props.margin?.bottom ?? 0}px)`);\r\n\r\n node.appendChild(selection.current);\r\n\r\n drawing.current = true;\r\n startX.current = isTouch\r\n ? (e.touches[0]?.pageX - (node.firstChild as HTMLElement).getBoundingClientRect().left)\r\n : e.offsetX;\r\n selection.current.style.display = \"block\";\r\n selection.current.style.width = \"0px\";\r\n selection.current.style.left = `${startX.current}px`;\r\n }\r\n }, [node]);\r\n\r\n const onDraw = useCallback((e) => {\r\n const isTouch = Boolean(e.touches);\r\n\r\n e.stopPropagation();\r\n\r\n if (node && drawing.current && selection.current) {\r\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\r\n const offsetX = isTouch\r\n ? (e.touches[0]?.pageX - (node.firstChild as HTMLElement).getBoundingClientRect().left)\r\n : e.offsetX;\r\n const newWidth = offsetX - startX.current;\r\n\r\n if (offsetX >= 0) {\r\n if (newWidth > 0) {\r\n selection.current.style.marginLeft = \"0px\";\r\n selection.current.style.width = offsetX <= nodeWidth ? `${newWidth}px` : `${nodeWidth - startX.current}px`;\r\n } else {\r\n selection.current.style.right = `${nodeWidth - startX.current}px`;\r\n selection.current.style.width = `${Math.abs(newWidth)}px`;\r\n selection.current.style.marginLeft = `${newWidth}px`;\r\n }\r\n }\r\n\r\n if (isTouch) {\r\n if (node.offsetLeft > e.touches[0].pageX) {\r\n selection.current.style.right = `${nodeWidth - startX.current}px`;\r\n selection.current.style.width = `${startX.current}px`;\r\n selection.current.style.marginLeft = `-${startX.current}px`;\r\n }\r\n }\r\n }\r\n }, [node]);\r\n\r\n const onMouseLeave = useCallback((e) => {\r\n if (drawing.current && node && selection.current) {\r\n if (node.offsetLeft > e.pageX) {\r\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\r\n\r\n selection.current.style.right = `${nodeWidth - startX.current}px`;\r\n selection.current.style.width = `${startX.current}px`;\r\n selection.current.style.marginLeft = `-${startX.current}px`;\r\n }\r\n\r\n if (node.offsetLeft + node.offsetWidth < e.pageX) {\r\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\r\n\r\n selection.current.style.left = `${startX.current}px`;\r\n selection.current.style.width = `${nodeWidth - startX.current}px`;\r\n selection.current.style.marginLeft = \"0px\";\r\n }\r\n }\r\n }, [node]);\r\n\r\n const onStopDrawing = useCallback(() => {\r\n if (node && selection.current) {\r\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\r\n const selectionMinX = selection.current.offsetLeft >= 0\r\n ? selection.current.offsetLeft <= nodeWidth ? selection.current.offsetLeft : nodeWidth\r\n : 0;\r\n const selectionWidth = selection.current.getBoundingClientRect().right - selection.current.getBoundingClientRect().left;\r\n const selectionMaxX = selection.current.offsetLeft + selectionWidth <= nodeWidth\r\n ? selection.current.offsetLeft + selectionWidth >= 0 ? selection.current.offsetLeft + selectionWidth : 0\r\n : nodeWidth;\r\n const min = Math.round(selectionMinX);\r\n const max = Math.round(selectionMaxX);\r\n\r\n if (max - min > 0 && props.onSelect) {\r\n props.onSelect([min, max]);\r\n }\r\n }\r\n\r\n clearSelection();\r\n }, [node, clearSelection]);\r\n\r\n useEffect(() => {\r\n if (node) {\r\n node.childNodes.forEach((child) => {\r\n (child as HTMLElement).style.userSelect = \"none\";\r\n });\r\n\r\n node.addEventListener(\"mousedown\", onStartDrawing);\r\n node.addEventListener(\"touchstart\", onStartDrawing);\r\n node.addEventListener(\"mousemove\", onDraw);\r\n node.addEventListener(\"touchmove\", onDraw);\r\n node.addEventListener(\"mouseleave\", onMouseLeave);\r\n node.addEventListener(\"mouseup\", onStopDrawing);\r\n node.addEventListener(\"touchend\", onStopDrawing);\r\n document.addEventListener(\"mouseup\", onStopDrawing);\r\n }\r\n\r\n return () => {\r\n node?.removeEventListener(\"mousedown\", onStartDrawing);\r\n node?.removeEventListener(\"touchstart\", onStartDrawing);\r\n node?.removeEventListener(\"mousemove\", onDraw);\r\n node?.removeEventListener(\"touchmove\", onDraw);\r\n node?.removeEventListener(\"mouseleave\", onMouseLeave);\r\n node?.removeEventListener(\"mouseup\", onStopDrawing);\r\n node?.removeEventListener(\"touchend\", onStopDrawing);\r\n document.removeEventListener(\"mouseup\", onStopDrawing);\r\n };\r\n }, [node]);\r\n};\r\n","import { BarChartData } from '../types';\r\nimport { DrawGridProps } from './types';\r\n\r\nimport { barChartClassNames } from '../styled';\r\n\r\nexport const drawGrid = ({\r\n svg,\r\n yScale,\r\n xScale,\r\n yTicksCount,\r\n drawGridX,\r\n drawGridY,\r\n}: DrawGridProps) => {\r\n if (!drawGridY && !drawGridX) return;\r\n\r\n const global = svg\r\n .append('g')\r\n .attr('class', barChartClassNames.barChartGridGlobal);\r\n\r\n const yTicks = yScale.ticks(yTicksCount);\r\n const range = xScale.range();\r\n const domain = xScale.domain();\r\n\r\n if (drawGridX) {\r\n global\r\n .append('g')\r\n .selectAll('line')\r\n .data(yTicks)\r\n .join('line')\r\n .attr('class', d =>\r\n d === 0\r\n ? `${barChartClassNames.barChartGridLineX} ${barChartClassNames.barChartGridLineXZero}`\r\n : barChartClassNames.barChartGridLineX\r\n )\r\n .attr('x1', () => range[0])\r\n .attr('x2', () => range[1])\r\n .attr('y1', (d: BarChartData | any) => Math.round(yScale(d) as number))\r\n .attr('y2', (d: BarChartData | any) => Math.round(yScale(d) as number));\r\n }\r\n\r\n if (drawGridY) {\r\n const getX = (index: number) =>\r\n domain[index] !== void 0\r\n ? index === 0\r\n ? range[0]\r\n : Math.round(\r\n xScale.step() * index +\r\n range[0] -\r\n (xScale.step() / 2) * xScale.padding()\r\n )\r\n : range[1];\r\n\r\n global\r\n .append('g')\r\n .selectAll('line')\r\n .data(Array.from({ length: domain.length + 1 }, (_, index) => index))\r\n .join('line')\r\n .attr('class', d =>\r\n d === 0\r\n ? `${barChartClassNames.barChartGridLineY} ${barChartClassNames.barChartGridLineYZero}`\r\n : barChartClassNames.barChartGridLineY\r\n )\r\n .attr('x1', getX)\r\n .attr('x2', getX)\r\n .attr('y1', () => Math.round(yScale(yTicks[0]) as number))\r\n .attr('y2', () =>\r\n Math.round(yScale(yTicks[yTicks.length - 1]) as number)\r\n );\r\n }\r\n};\r\n","import { BarChartProps } from './types';\r\n\r\nexport const getDomain = ({\r\n data,\r\n minDomainValue,\r\n maxDomainValue,\r\n}: Pick<BarChartProps, 'data' | 'minDomainValue' | 'maxDomainValue'>) => {\r\n let MIN = Number.POSITIVE_INFINITY;\r\n let MAX = Number.NEGATIVE_INFINITY;\r\n\r\n data.forEach(({ groupName, ...groups }) => {\r\n let groupMax = 0;\r\n let groupMin = 0;\r\n\r\n Object.keys(groups).forEach(key => {\r\n const group = groups[key as never];\r\n\r\n let stackMax = 0;\r\n let stackMin = 0;\r\n\r\n Object.keys(group).forEach(groupKey => {\r\n const value = group[groupKey];\r\n\r\n if (value > 0) {\r\n stackMax += value;\r\n } else {\r\n stackMin += value;\r\n }\r\n });\r\n\r\n groupMax = Math.min(groupMax, stackMin);\r\n groupMin = Math.max(groupMin, stackMax);\r\n });\r\n\r\n MIN = Math.min(MIN, groupMax);\r\n MAX = Math.max(MAX, groupMin);\r\n });\r\n\r\n if (MIN === 0 && MAX === 0) {\r\n return {\r\n min: typeof minDomainValue === 'number' ? minDomainValue : 0,\r\n max: typeof maxDomainValue === 'number' ? maxDomainValue : 1,\r\n };\r\n }\r\n\r\n return {\r\n min: typeof minDomainValue === 'number' ? minDomainValue : MIN,\r\n max: typeof maxDomainValue === 'number' ? maxDomainValue : MAX,\r\n };\r\n};\r\n","import { BarChartMarshalledGroup, BarChartMarshaling } from './types';\r\n\r\nexport const marshaling = ({\r\n data,\r\n yScale,\r\n xScale,\r\n barWidth,\r\n barPadding,\r\n colors,\r\n marginTop,\r\n}: BarChartMarshaling): BarChartMarshalledGroup[][] =>\r\n data.map(({ groupName, ...groups }, groupIndex) => {\r\n const marshalledGroup: BarChartMarshalledGroup[] = [];\r\n const hundred = 100;\r\n const bandwidth = xScale.bandwidth();\r\n const groupsKeys = Object.keys(groups);\r\n\r\n groupsKeys.forEach((key: string, stackIndex: number) => {\r\n const group = groups[key as never];\r\n const groupKeys = Object.keys(group);\r\n const barGroupWidth =\r\n ((barWidth as number) + (barPadding as number)) * groupsKeys.length -\r\n (groupKeys.length > 1 ? (barPadding as number) : 0);\r\n\r\n let stackMax = 0;\r\n let stackMin = 0;\r\n\r\n groupKeys.forEach(groupKey => {\r\n const value = group[groupKey];\r\n const color = colors[groupKey];\r\n const x =\r\n ((barWidth as number) + (barPadding as number)) * stackIndex +\r\n bandwidth / 2 -\r\n barGroupWidth / 2;\r\n const isPositiveValue = value > 0;\r\n const height = isPositiveValue\r\n ? Math.abs(\r\n ((yScale(stackMax - value) - yScale(stackMax) + Number.EPSILON) *\r\n hundred) /\r\n hundred\r\n )\r\n : Math.abs(\r\n ((yScale(stackMin - value) - yScale(stackMin) + Number.EPSILON) *\r\n hundred) /\r\n hundred\r\n );\r\n\r\n if (isPositiveValue) {\r\n stackMax += value;\r\n }\r\n\r\n const y = isPositiveValue\r\n ? ((yScale(stackMax) + Number.EPSILON) * hundred) / hundred\r\n : yScale(stackMin) - yScale(0) + yScale(0);\r\n\r\n marshalledGroup.push({\r\n x,\r\n y: y + (marginTop || 0),\r\n height,\r\n color,\r\n value,\r\n groupName: groupName as string,\r\n name: groupKey,\r\n stackIndex,\r\n groupIndex,\r\n });\r\n\r\n if (!isPositiveValue) {\r\n stackMin += value;\r\n }\r\n });\r\n });\r\n\r\n return marshalledGroup;\r\n });\r\n","import { BarChartLabelPosition, BarChartMarshalledGroup } from '../types';\r\n\r\nexport const getLabelY = (\r\n labelPosition: BarChartLabelPosition,\r\n y2: number,\r\n item: BarChartMarshalledGroup\r\n): number => {\r\n switch (labelPosition) {\r\n case 'center':\r\n return item.y + item.height / 2 - y2;\r\n case 'bottom':\r\n return item.y + item.height - y2;\r\n default:\r\n return item.y;\r\n }\r\n};\r\n","import { BarChartLabelPosition } from '../types';\r\n\r\nimport {\r\n Label as LabelUI,\r\n LabelTop,\r\n LabelBottom,\r\n} from '../../../common/components/tooltips';\r\n\r\nexport const getLabel = (labelPosition: BarChartLabelPosition) => {\r\n switch (labelPosition) {\r\n case 'top':\r\n return LabelTop;\r\n case 'bottom':\r\n return LabelBottom;\r\n default:\r\n return LabelUI;\r\n }\r\n};\r\n","import React from 'react';\r\nimport * as d3 from 'd3';\r\nimport ReactDOMServer from 'react-dom/server';\r\n\r\nimport { DrawTooltipProps } from './types';\r\nimport {\r\n BarChartMarshalledGroup,\r\n BarChartLineData,\r\n BarChartMergedData,\r\n} from '../types';\r\n\r\nimport { getLabelY } from './getLabelY';\r\nimport { getLabel } from './getLabel';\r\nimport { barChartClassNames } from '../styled';\r\nimport {\r\n TooltipFlex,\r\n TooltipGroupName,\r\n LabelFlex,\r\n LabelFlexCenter,\r\n TooltipContainer,\r\n TooltipItem,\r\n ColFlex,\r\n ColorBox,\r\n ColorLine,\r\n Name,\r\n Value,\r\n} from '../../../common/components/tooltips';\r\n\r\nexport const drawTooltip = ({\r\n svg,\r\n node,\r\n data,\r\n marshalledData,\r\n xScale,\r\n yScale,\r\n renderTooltip,\r\n labelPosition,\r\n marginTop,\r\n renderLabel,\r\n barWidth,\r\n barPadding,\r\n dynamicTooltipEnable,\r\n hideTooltipGroupName,\r\n tooltipY,\r\n tooltipBind,\r\n lineData,\r\n formatTooltipValue,\r\n formatTooltipName,\r\n tooltipYDomain,\r\n setTooltipPosition,\r\n onLabelItem,\r\n isBarTooltip,\r\n bars,\r\n tooltipRoot,\r\n tooltipClassName,\r\n onBarClick,\r\n onBarHover,\r\n}: DrawTooltipProps) => {\r\n d3.select(node)\r\n .select(`.${barChartClassNames.barChartMouseContainer}`)\r\n .remove();\r\n\r\n const xScaleBandDomain = xScale.domain();\r\n const [x1, x2] = xScale.range();\r\n const [y1, y2] = yScale.range();\r\n const bandwidth = xScale.bandwidth();\r\n const format = d3.format(',');\r\n\r\n const getX = (index: number): number =>\r\n xScaleBandDomain[index] !== void 0\r\n ? index === 0\r\n ? x1\r\n : Math.round(\r\n xScale.step() * index + x1 - (xScale.step() / 2) * xScale.padding()\r\n )\r\n : x2;\r\n const groups = xScaleBandDomain.map(value => getX(Number(value) + 1));\r\n\r\n const topYDomain = tooltipYDomain\r\n ? tooltipYDomain({ data: marshalledData, lineData, yScale })\r\n : marshalledData.reduce((acc, curr, index) => {\r\n const lineMin =\r\n d3.min(lineData as BarChartLineData[], ({ values }) =>\r\n typeof values[index] === 'number'\r\n ? yScale((values[index] || 0) - y2)\r\n : Number.POSITIVE_INFINITY\r\n ) || Number.POSITIVE_INFINITY;\r\n\r\n acc.push(\r\n curr.reduce(\r\n (acc, { y }) => Math.min(acc, y, lineMin as number),\r\n Number.POSITIVE_INFINITY\r\n ) as any\r\n );\r\n return acc;\r\n }, []);\r\n\r\n const mouseGlobal = svg.append('g').attr('class', 'lineChartMouseGlobal');\r\n const mouseRect = mouseGlobal\r\n .append('rect')\r\n .attr('width', x2 - x1)\r\n .attr('height', Math.abs(y1 - y2))\r\n .attr('class', barChartClassNames.barChartMouseRect)\r\n .attr('transform', `translate(${x1}, ${y2})`);\r\n\r\n if (dynamicTooltipEnable) {\r\n const tooltipContainer: Element | null =\r\n tooltipRoot || document.querySelector('body');\r\n let tooltip: d3.Selection<any, unknown, any, any> = d3.select(\r\n `.${barChartClassNames.barChartMouseTooltip}`\r\n );\r\n\r\n if (tooltip.size() === 0) {\r\n tooltip = d3\r\n .select(tooltipContainer)\r\n .append('div')\r\n .attr('class', barChartClassNames.barChartMouseTooltip)\r\n .style('opacity', '0')\r\n .style('position', 'absolute')\r\n .html(() => {\r\n const html = ReactDOMServer.renderToString(\r\n <TooltipFlex className={barChartClassNames.barChartTooltipFlex} />\r\n );\r\n\r\n return html;\r\n });\r\n }\r\n\r\n const barChartTootipFlex = tooltip.select(\r\n `.${barChartClassNames.barChartTooltipFlex}`\r\n );\r\n\r\n let isVisible = false;\r\n let flagCurrIndex: number | null = null;\r\n\r\n const setVisible = (visible?: boolean) => {\r\n isVisible = Boolean(visible);\r\n\r\n const opacity = isVisible ? '1' : '0';\r\n tooltip.style('opacity', opacity);\r\n\r\n if (!isVisible) {\r\n tooltip.attr('class', barChartClassNames.barChartMouseTooltip);\r\n flagCurrIndex = null;\r\n tooltip.style('transition', 'none');\r\n tooltip.style('top', null);\r\n tooltip.style('left', null);\r\n } else {\r\n tooltip.attr(\r\n 'class',\r\n `${barChartClassNames.barChartMouseTooltip} ${tooltipClassName || ''}`\r\n );\r\n tooltip.style('transition', null);\r\n }\r\n };\r\n\r\n mouseRect.on('mouseout.tooltip', () => setVisible());\r\n mouseRect.on('touchmove.tooltip mousemove.tooltip', event => {\r\n const [docX, docY] = d3.pointer(event, document);\r\n const [rectrX] = d3.pointer(event, mouseRect);\r\n const [nodeX, nodeY] = d3.pointer(event, node);\r\n const x = rectrX - (rectrX - nodeX);\r\n const offsetX = docX - nodeX;\r\n const offsetY = docY - nodeY;\r\n\r\n const currIndex = groups.findIndex(value => x <= value);\r\n\r\n if (isBarTooltip) {\r\n const containts = document.elementsFromPoint(\r\n event.clientX,\r\n event.clientY\r\n );\r\n const currBars = d3\r\n .select(bars.nodes()[currIndex])\r\n .selectAll('rect')\r\n .nodes();\r\n const isContains = containts.some(item => currBars.includes(item));\r\n\r\n if (!isContains) {\r\n if (isVisible) {\r\n setVisible(false);\r\n }\r\n mouseRect.style('cursor', 'default');\r\n return;\r\n } else {\r\n mouseRect.style('cursor', 'pointer');\r\n }\r\n }\r\n\r\n const top =\r\n (typeof tooltipY === 'number'\r\n ? tooltipY\r\n : ((topYDomain[currIndex] as unknown) as number) - y2) + offsetY;\r\n const left =\r\n (tooltipBind\r\n ? (xScale((currIndex as unknown) as string) || 0) + bandwidth / 2\r\n : x) + offsetX;\r\n\r\n if (tooltipBind && flagCurrIndex === currIndex) {\r\n return;\r\n }\r\n\r\n let currData = marshalledData[currIndex] as BarChartMergedData;\r\n if (Array.isArray(currData) && currData.length === 0) {\r\n return;\r\n }\r\n\r\n if (lineData) {\r\n const currLineData = lineData.map(({ values, ...rest }) => ({\r\n ...rest,\r\n value: values[currIndex],\r\n groupName: data[currIndex] && data[currIndex].groupName,\r\n }));\r\n\r\n if (Array.isArray(currLineData) && Array.isArray(currData)) {\r\n currData = currData.concat(currLineData as BarChartMergedData);\r\n }\r\n }\r\n\r\n const svgWidth = (svg.node() as SVGElement).getBoundingClientRect()\r\n .width as number;\r\n\r\n if (typeof setTooltipPosition === 'function') {\r\n setTooltipPosition({\r\n left,\r\n top,\r\n tooltip,\r\n svgWidth,\r\n });\r\n } else if (!setTooltipPosition) {\r\n tooltip.style('left', `${left}px`).style('top', `${top}px`);\r\n }\r\n\r\n if (renderTooltip) {\r\n barChartTootipFlex.html(() => {\r\n const html = ReactDOMServer.renderToString(\r\n <>\r\n {renderTooltip(\r\n currData,\r\n setTooltipPosition\r\n ? {\r\n left,\r\n top,\r\n tooltip,\r\n svgWidth,\r\n }\r\n : undefined,\r\n barWidth\r\n )}\r\n </>\r\n );\r\n\r\n return html;\r\n });\r\n } else {\r\n if (!isVisible) {\r\n setVisible(true);\r\n }\r\n\r\n barChartTootipFlex.html(() => {\r\n const html = ReactDOMServer.renderToString(\r\n <TooltipContainer className={barChartClassNames.barChartTooltip}>\r\n {currData && currData[0] && !hideTooltipGroupName && (\r\n <TooltipGroupName\r\n className={barChartClassNames.barChartTooltipGroupName}\r\n >\r\n {currData[0].groupName}\r\n </TooltipGroupName>\r\n )}\r\n {currData &&\r\n currData.map(\r\n ({ name, value, stroke, fill, color, lineType }) => (\r\n <TooltipItem\r\n key={name}\r\n className={barChartClassNames.barChartTooltipItem}\r\n >\r\n <ColFlex\r\n className={barChartClassNames.barChartTooltipColFlex}\r\n >\r\n {lineType ? (\r\n <ColorLine\r\n className={barChartClassNames.barChartColorLine}\r\n style={{ backgroundColor: stroke || fill }}\r\n />\r\n ) : (\r\n <ColorBox\r\n className={barChartClassNames.barChartColorBox}\r\n style={{ backgroundColor: color }}\r\n />\r\n )}\r\n <Name\r\n className={barChartClassNames.barChartTooltipName}\r\n >\r\n {formatTooltipName ? formatTooltipName(name) : name}\r\n </Name>\r\n </ColFlex>\r\n <Value\r\n className={barChartClassNames.barChartTooltipValue}\r\n >\r\n {formatTooltipValue\r\n ? formatTooltipValue(value, name)\r\n : format(value)}\r\n </Value>\r\n </TooltipItem>\r\n )\r\n )}\r\n </TooltipContainer>\r\n );\r\n\r\n return html;\r\n });\r\n }\r\n\r\n flagCurrIndex = currIndex;\r\n if (!isVisible) {\r\n setVisible(true);\r\n }\r\n });\r\n }\r\n\r\n const container = d3\r\n .select(node)\r\n .append('div')\r\n .attr('class', barChartClassNames.barChartMouseContainer);\r\n\r\n const labelContainer = container\r\n .append('div')\r\n .attr('class', barChartClassNames.barChartLabelContainer)\r\n .style('position', 'absolute')\r\n .style('top', `${y2}px`);\r\n\r\n const isMouseWithin = (e: MouseEvent, callback: (group: BarChartMarshalledGroup) => void) => {\r\n const [rectrX, rectrY] = d3.pointer(e, mouseRect);\r\n const [nodeX, nodeY] = d3.pointer(e, node);\r\n const x = rectrX - (rectrX - nodeX);\r\n const y = rectrY - nodeY;\r\n\r\n const currIndex = groups.findIndex(value => x <= value);\r\n const dataItem = marshalledData[currIndex][0];\r\n\r\n if (dataItem.height >= y1 - y) {\r\n callback(dataItem);\r\n }\r\n };\r\n\r\n mouseGlobal\r\n .on(\"click\", e => isMouseWithin(e, (dataItem) => onBarClick && onBarClick(dataItem)))\r\n .on(\"mousemove\", e => isMouseWithin(e, (dataItem) => onBarHover && onBarHover(dataItem)))\r\n .on(\"mouseleave\", () => onBarHover && onBarHover(undefined));\r\n\r\n if (labelPosition) {\r\n const concatedData: BarChartMarshalledGroup[][] = lineData\r\n ? marshalledData.map((stack, index) =>\r\n stack.concat(\r\n lineData.map(({ values, name, stroke }) => {\r\n const { stacksCount } = stack.reduce(\r\n (acc, { stackIndex }) => {\r\n const { indexFlag, stacksCount } = acc;\r\n if (stackIndex !== indexFlag) {\r\n return {\r\n indexFlag: stackIndex,\r\n stacksCount: stacksCount + 1,\r\n };\r\n }\r\n return acc;\r\n },\r\n {\r\n indexFlag: -1,\r\n stacksCount: 0,\r\n }\r\n );\r\n const barsWidth =\r\n (barWidth * stacksCount +\r\n (barPadding || 0) * (stacksCount - 1)) /\r\n 2;\r\n\r\n return {\r\n x: stack[0].x - barWidth / 2 + barsWidth,\r\n y: yScale(values[index] as number) + marginTop,\r\n height: 0,\r\n color: stroke,\r\n value: values[index],\r\n groupName: stack[0].groupName,\r\n name,\r\n stackIndex: 0,\r\n groupIndex: index,\r\n };\r\n }) as BarChartMarshalledGroup[]\r\n )\r\n )\r\n : marshalledData;\r\n\r\n const groups = labelContainer\r\n .selectAll('div')\r\n .data(concatedData)\r\n .enter()\r\n .append('div')\r\n .style('position', 'absolute')\r\n .style(\r\n 'transform',\r\n (_: BarChartMarshalledGroup[], index) =>\r\n `translate(${Math.round(\r\n xScale((index as unknown) as string) as number\r\n )}px,${-(marginTop || 0)}px)`\r\n );\r\n\r\n const LabelFlexStyled =\r\n labelPosition === 'center' ? LabelFlexCenter : LabelFlex;\r\n\r\n const LabelStyle = getLabel(labelPosition);\r\n\r\n groups\r\n .selectAll('span')\r\n .data((item: BarChartMarshalledGroup[]) =>\r\n onLabelItem ? onLabelItem(item) : item\r\n )\r\n .join('div')\r\n .style('left', item => `${Math.round(item.x + barWidth / 2)}px`)\r\n .style(\r\n 'top',\r\n (item: BarChartMarshalledGroup) =>\r\n `${getLabelY(labelPosition, y2, item)}px`\r\n )\r\n .style('position', 'absolute')\r\n .html((item: BarChartMarshalledGroup) =>\r\n ReactDOMServer.renderToString(\r\n <LabelFlexStyled className={barChartClassNames.barChartLabelFlex}>\r\n {renderLabel ? (\r\n renderLabel({ ...item, barWidth })\r\n ) : (\r\n <LabelStyle className={barChartClassNames.barChartLabel}>\r\n {format(item.value)}\r\n </LabelStyle>\r\n )}\r\n </LabelFlexStyled>\r\n )\r\n );\r\n }\r\n};\r\n","import { ResizeBarWidthProps } from './types';\r\n\r\nexport const resizeBarWidth = ({\r\n data,\r\n range,\r\n barWidth,\r\n barPadding,\r\n sectionPadding,\r\n}: ResizeBarWidthProps): number => {\r\n const groupPadding = typeof sectionPadding === 'number' ? sectionPadding : 0;\r\n const chartWidth = range[1] - range[0];\r\n const barsWidth = data.reduce((acc, { groupName, ...curr }) => {\r\n return (\r\n acc +\r\n Object.keys(curr).reduce(\r\n (acc, _key, index) =>\r\n index > 0\r\n ? acc + (barWidth || 0) + (barPadding || 0)\r\n : acc + barWidth,\r\n 0\r\n ) +\r\n groupPadding\r\n );\r\n }, groupPadding);\r\n\r\n if (chartWidth < barsWidth) {\r\n return Math.floor(barWidth * (chartWidth / barsWidth));\r\n }\r\n\r\n return barWidth;\r\n};\r\n","import { BarChartMarshalledGroup } from '../types';\r\nimport { GetBarsProps } from './types';\r\n\r\nexport const getBars = ({ groups, barWidth }: GetBarsProps) => {\r\n return groups\r\n .selectAll('rect')\r\n .data((item: BarChartMarshalledGroup[]) => item)\r\n .join('rect')\r\n .attr('x', (item: BarChartMarshalledGroup) => item.x)\r\n .attr('y', (item: BarChartMarshalledGroup) => item.y)\r\n .attr('width', barWidth)\r\n .attr('height', (item: BarChartMarshalledGroup) => item.height)\r\n .style('fill', (item: BarChartMarshalledGroup) => item.color);\r\n};\r\n","import * as d3 from 'd3';\r\nimport { uniqueId } from 'lodash';\r\n\r\nimport { barChartClassNames as classNames } from './styled';\r\nimport { drawGrid } from './drawGrid';\r\nimport { appendSvg } from '../../helpers';\r\nimport { computeDimensions } from '../../helpers/computeDimensions';\r\nimport { getDomain } from './getDomain';\r\nimport { marshaling } from './marshaling';\r\nimport { drawTooltip } from './drawTooltip';\r\nimport { resizeBarWidth } from './resizeBarWidth';\r\nimport { drawLines } from './drawLines';\r\nimport { getBars } from './getBars';\r\nimport { BarChartProps, BarChartData, BarChartMarshalledGroup } from './types';\r\n\r\nconst MIN_BAR_HEIGHT = 2;\r\n\r\nexport const draw = (node: HTMLElement | null, props: BarChartProps): void => {\r\n const {\r\n data,\r\n lineData = [],\r\n markers = [],\r\n barWidth: barWidthProp,\r\n barPadding,\r\n colors,\r\n margin,\r\n xAxisPadding,\r\n yAxisPadding,\r\n drawGridY,\r\n drawGridX,\r\n customYScale,\r\n customXScale,\r\n customYAxisLeft,\r\n customXAxisBottom,\r\n customYAxis,\r\n customXAxis,\r\n customBars,\r\n customize,\r\n dynamicTooltipEnable,\r\n hideTooltipGroupName,\r\n renderTooltip,\r\n labelPosition,\r\n renderLabel,\r\n tooltipY,\r\n tooltipBind,\r\n stackedLine,\r\n curve,\r\n formatTooltipValue,\r\n formatTooltipName,\r\n sectionPadding,\r\n minValuesLine,\r\n tooltipYDomain,\r\n marshalledMap,\r\n minValue,\r\n maxValue,\r\n minDomainValue,\r\n maxDomainValue,\r\n drawBars,\r\n setTooltipPosition,\r\n onLabelItem,\r\n isBarTooltip,\r\n xScaleItemWidth,\r\n tooltipRoot,\r\n tooltipClassName,\r\n onBarClick,\r\n onBarHover,\r\n } = props;\r\n\r\n if (node !== null && data.length) {\r\n const marginTop = margin ? margin.top : 0;\r\n const marginRight = margin ? margin.right : 0;\r\n const marginBottom = margin ? margin.bottom : 0;\r\n const marginLeft = margin ? margin.left : 0;\r\n const defaultBarWidth = 12;\r\n const { width: nodeWidth } = node.getBoundingClientRect();\r\n const width = props.width || nodeWidth;\r\n const height = props.height || 0;\r\n const barDomain = getDomain({\r\n data,\r\n minDomainValue,\r\n maxDomainValue,\r\n });\r\n\r\n const min =\r\n typeof minValue === 'number'\r\n ? minValue\r\n : Math.min(\r\n d3.min(lineData, ({ values }) => d3.min(values as number[])) ||\r\n Number.POSITIVE_INFINITY,\r\n barDomain.min || 0\r\n );\r\n const max =\r\n typeof maxValue === 'number'\r\n ? maxValue\r\n : Math.max(\r\n d3.max(lineData, ({ values }) => d3.max(values as number[])) ||\r\n Number.NEGATIVE_INFINITY,\r\n barDomain.max\r\n );\r\n const svg = appendSvg(node, width, height || 0);\r\n const yTicksCountDefault = 6;\r\n const labels = data.map((item: BarChartData) => item.groupName as string);\r\n let barWidth = barWidthProp || defaultBarWidth;\r\n\r\n const yScale = d3\r\n .scaleLinear()\r\n .domain([min, max])\r\n .range([\r\n height - marginTop - marginBottom - (xAxisPadding || 0),\r\n marginTop,\r\n ])\r\n .nice();\r\n\r\n customYScale && customYScale(yScale);\r\n\r\n const yTicks = yScale.ticks();\r\n const yAxisLeft = d3.axisLeft(yScale).ticks(yTicksCountDefault);\r\n\r\n customYAxisLeft && customYAxisLeft(yAxisLeft);\r\n\r\n const yTicksCount = yAxisLeft.tickArguments()[0];\r\n\r\n const yAxis = svg\r\n .append('g')\r\n .attr('class', classNames.barChartYAxis)\r\n .call(yAxisLeft);\r\n\r\n yAxis.selectAll('.tick').attr('class', value => {\r\n return value === 0 ? `tick ${classNames.barChartYAxisZeroTick}` : 'tick';\r\n });\r\n\r\n customYAxis && customYAxis(yAxis);\r\n\r\n const { width: yAxisWidth } = computeDimensions(yAxis);\r\n const range = [\r\n marginLeft + yAxisWidth + (yAxisPadding || 0),\r\n width - marginRight,\r\n ];\r\n\r\n const xScale = d3\r\n .scaleBand()\r\n .domain(d3.range(data.length) as [])\r\n .range(range);\r\n\r\n barWidth = resizeBarWidth({\r\n data,\r\n sectionPadding,\r\n range,\r\n barWidth,\r\n barPadding,\r\n });\r\n\r\n customXScale && customXScale(xScale);\r\n\r\n const [x1, x2] = xScale.range();\r\n\r\n const xAxisBottom = d3\r\n .axisBottom(xScale)\r\n .tickFormat(value => labels[Number(value)]);\r\n\r\n if (typeof xScaleItemWidth === 'number') {\r\n xAxisBottom\r\n .tickValues(\r\n xScale.domain().filter((_, i, array) => {\r\n const chartWidth = x2 - x1;\r\n const ticks = Math.round(chartWidth / xScaleItemWidth);\r\n const length = array.length;\r\n const divider = Math.round(length / ticks);\r\n\r\n return !(i % divider);\r\n })\r\n )\r\n .tickSizeOuter(0);\r\n }\r\n\r\n customXAxisBottom && customXAxisBottom(xAxisBottom, { node, labels });\r\n\r\n const xAxis = svg\r\n .append('g')\r\n .call(xAxisBottom)\r\n .attr('class', classNames.barChartXAxis);\r\n\r\n customXAxis && customXAxis(xAxis);\r\n\r\n const marshalled = marshaling({\r\n data,\r\n yScale,\r\n xScale,\r\n barWidth,\r\n barPadding: typeof barPadding === 'number' ? barPadding : 0,\r\n colors,\r\n marginTop,\r\n });\r\n\r\n const marshalledData = marshalledMap\r\n ? marshalledMap(marshalled)\r\n : marshalled;\r\n\r\n yAxis.attr('transform', `translate( ${marginLeft + yAxisWidth}, 0)`);\r\n\r\n drawGrid({\r\n svg,\r\n yScale,\r\n xScale,\r\n yTicksCount,\r\n drawGridY,\r\n drawGridX,\r\n });\r\n\r\n xAxis.attr(\r\n 'transform',\r\n `translate(0, ${yScale(yTicks[0]) + (xAxisPadding || 0)})`\r\n );\r\n\r\n const maskId = `height-limit-mask-${uniqueId()}`;\r\n\r\n svg.append('defs')\r\n .append('mask')\r\n .attr('id', maskId)\r\n .append('rect')\r\n .attr('width', '100%')\r\n .attr('height', height - marginBottom + MIN_BAR_HEIGHT)\r\n .attr('fill', 'white');\r\n\r\n const gSvg = svg.append('g')\r\n .attr('class', classNames.barChartBarGlobal)\r\n .attr('mask', `url(#${maskId})`);\r\n\r\n const groups = gSvg\r\n .selectAll('g')\r\n .data(marshalledData)\r\n .enter()\r\n .append('g')\r\n .attr(\r\n 'transform',\r\n (_: BarChartMarshalledGroup[], i) =>\r\n `translate(${Math.round(\r\n xScale((i as unknown) as string) as number\r\n )},${-(marginTop || 0)})`\r\n );\r\n\r\n const bars = drawBars\r\n ? drawBars({ groups, yScale, marshalledData, barWidth })\r\n : getBars({ groups, barWidth });\r\n\r\n markers.forEach((marker) => {\r\n if (!marker) {\r\n return;\r\n }\r\n\r\n if (marker.horizontal) {\r\n if (marker.line) {\r\n svg.append('line')\r\n .style(\"stroke\", marker.lineColor || marker.color || \"inherit\")\r\n .style(\"stroke-width\", 1)\r\n .style(\"stroke-dasharray\", (\"5, 3\"))\r\n .attr(\"x1\", marginLeft + yAxisWidth)\r\n .attr(\"y1\", yScale(marker.value) + 1)\r\n .attr(\"x2\", width)\r\n .attr(\"y2\", yScale(marker.value) + 1);\r\n }\r\n\r\n svg.append(\"text\")\r\n .attr(\"y\", yScale(marker.value) + 1)\r\n .attr(\"x\", marginLeft + yAxisWidth)\r\n .attr('text-anchor', 'middle')\r\n .attr(\"class\", [\"marker\", marker.className].filter(Boolean).join(\" \"))\r\n .style(\"fill\", marker?.color || \"inherit\")\r\n .text(marker.label);\r\n\r\n return;\r\n }\r\n\r\n if (marker.line) {\r\n svg.append('line')\r\n .style(\"stroke\", marker.lineColor || marker.color || \"inherit\")\r\n .style(\"stroke-width\", 1)\r\n .style(\"stroke-dasharray\", (\"5, 3\"))\r\n .attr(\"x1\", width / data.length * marker.value + 1)\r\n .attr(\"y1\", 0)\r\n .attr(\"x2\", width / data.length * marker.value + 1)\r\n .attr(\"y2\", (height - marginTop - marginBottom + 8));\r\n }\r\n\r\n svg.append(\"text\")\r\n .attr(\"y\", height - 2)\r\n .attr(\"x\", width / data.length * marker.value + 1)\r\n .attr('text-anchor', marker.align === 'right' ? 'end' : marker.align === 'left' ? 'start' : 'middle')\r\n .attr(\"class\", [\"marker\", marker.className].filter(Boolean).join(\" \"))\r\n .style(\"fill\", marker?.color || \"inherit\")\r\n .text(marker.label);\r\n });\r\n\r\n let lines = null;\r\n\r\n if (Array.isArray(lineData) && lineData.length > 0) {\r\n lines = drawLines({\r\n svg,\r\n lineData,\r\n xScale,\r\n yScale,\r\n min: typeof minValuesLine === 'number' ? minValuesLine : min,\r\n stackedLine,\r\n curve,\r\n });\r\n }\r\n\r\n customBars && customBars({ bars, yScale, lines, marshalledData, lineData });\r\n\r\n if (dynamicTooltipEnable || labelPosition) {\r\n drawTooltip({\r\n svg,\r\n node,\r\n xScale,\r\n yScale,\r\n marshalledData,\r\n data,\r\n lineData,\r\n renderTooltip,\r\n labelPosition,\r\n marginTop,\r\n renderLabel,\r\n barWidth,\r\n barPadding,\r\n dynamicTooltipEnable,\r\n hideTooltipGroupName,\r\n tooltipY,\r\n tooltipBind,\r\n formatTooltipValue,\r\n formatTooltipName,\r\n tooltipYDomain,\r\n setTooltipPosition,\r\n onLabelItem,\r\n isBarTooltip,\r\n bars: groups,\r\n tooltipRoot,\r\n tooltipClassName,\r\n onBarClick,\r\n onBarHover,\r\n });\r\n }\r\n\r\n customize && customize({ svg, marshalledData, yScale, xScale, lineData });\r\n }\r\n};\r\n","import React, { FC, useEffect } from 'react';\r\n\r\nimport { SvgWrapper, TooltipStyles } from './styled';\r\n\r\nimport { useNode } from '../../hooks';\r\nimport { useResize } from '../../hooks';\r\nimport { useSelection } from \"./hooks/useSelection\";\r\n\r\nimport { draw } from './draw';\r\n\r\nimport { BarChartProps } from './types';\r\n\r\nexport const BarChart: FC<BarChartProps> = (props) => {\r\n const { className, style, children, selectable } = props;\r\n const [ref, node] = useNode();\r\n\r\n useEffect(() => {\r\n node && draw(node, props);\r\n }, [node, props]);\r\n\r\n const onDraw = () => draw(node, props);\r\n\r\n useResize(props.width, onDraw);\r\n useSelection(selectable ? node : null, props);\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <TooltipStyles />\r\n <SvgWrapper ref={ref} selectable={selectable}>{children}</SvgWrapper>\r\n </div>\r\n );\r\n};\r\n\r\nBarChart.defaultProps = {\r\n data: [],\r\n colors: {},\r\n margin: {\r\n top: 10,\r\n right: 10,\r\n bottom: 10,\r\n left: 0,\r\n },\r\n barWidth: 12,\r\n barPadding: 0,\r\n height: 320,\r\n yAxisPadding: 0,\r\n xAxisPadding: 0,\r\n tooltipBind: true,\r\n sectionPadding: 1,\r\n};\r\n","import { useMemo } from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport {\r\n HorizontalBarChartProps,\r\n HorizontalBarChartData,\r\n HorizontalBarChartMarshalingData,\r\n} from '../types';\r\n\r\nconst hundred = 100;\r\n\r\nexport const useMarshaling = ({\r\n data,\r\n fullExtent,\r\n maxValue,\r\n labels,\r\n}: Pick<\r\n HorizontalBarChartProps,\r\n 'data' | 'fullExtent' | 'maxValue' | 'labels'\r\n>): {\r\n fullMax: number;\r\n data: HorizontalBarChartMarshalingData[][];\r\n} => {\r\n return useMemo(() => {\r\n const fullMax = d3.max(data, item =>\r\n d3.sum(item, ({ value }) => value)\r\n ) as number;\r\n const scaleLinear = d3\r\n .scaleLinear()\r\n .domain([\r\n 0,\r\n typeof maxValue === 'number' ? maxValue : fullMax,\r\n ] as Iterable<d3.NumberValue>)\r\n .range([0, hundred]);\r\n\r\n return {\r\n fullMax,\r\n data: data.map((item: HorizontalBarChartData[], index) => {\r\n if (!fullExtent) {\r\n scaleLinear.domain([\r\n 0,\r\n typeof maxValue === 'number'\r\n ? maxValue\r\n : d3.sum(item, ({ value }) => value),\r\n ] as Iterable<d3.NumberValue>);\r\n }\r\n\r\n return item.map(({ value, ...rest }) => ({\r\n ...rest,\r\n value,\r\n width: scaleLinear(value),\r\n groupName: labels ? labels[index] : '',\r\n }));\r\n }),\r\n };\r\n }, [data, fullExtent, maxValue, labels]);\r\n};\r\n","import styled from 'styled-components';\r\n\r\nimport { TooltipFlex as TooltipFlexUI } from '../../common/components/tooltips';\r\n\r\nexport const horizontalBarChartClassNames = {\r\n horizontalBarChartButtonTd: 'horizontalBarChartButtonTd',\r\n horizontalBarChartLabelTd: 'horizontalBarChartLabelTd',\r\n horizontalBarChartLabelCell: 'horizontalBarChartLabelCell',\r\n horizontalBarChartBarTd: 'horizontalBarChartBarTd',\r\n horizontalBarChartBarFlex: 'horizontalBarChartBarFlex',\r\n horizontalBarChartBar: 'horizontalBarChartBar',\r\n horizontalBarChartBarFirst: 'horizontalBarChartBarFirst',\r\n horizontalBarChartBarLast: 'horizontalBarChartBarLast',\r\n horizontalBarChartBarOnly: 'horizontalBarChartBarOnly',\r\n horizontalBarChartTooltipFlex: 'horizontalBarChartTooltipFlex',\r\n horizontalBarChartStackWrapper: 'horizontalBarChartStackWrapper',\r\n horizontalBarChartTooltipContainer: 'horizontalBarChartTooltipContainer',\r\n horizontalBarChartStackSumContainer: 'horizontalBarChartStackSumContainer',\r\n horizontalBarChartStackSum: 'horizontalBarChartStackSum',\r\n horizontalBarChartXScaleTd: 'horizontalBarChartXScaleTd',\r\n horizontalBarChartXScaleTicks: 'horizontalBarChartXScaleTicks',\r\n horizontalBarChartXScaleTick: 'horizontalBarChartXScaleTick',\r\n horizontalBarChartTooltipItem: 'horizontalBarChartTooltipItem',\r\n horizontalBarChartTooltipName: 'horizontalBarChartTooltipName',\r\n horizontalBarChartTooltipValue: 'horizontalBarChartTooltipValue',\r\n};\r\n\r\nexport const Table = styled.table`\r\n width: 100%;\r\n`;\r\n\r\nexport const LabelCell = styled.div`\r\n text-align: right;\r\n`;\r\n\r\nexport const BarFlex = styled.div`\r\n width: 100%;\r\n display: flex;\r\n height: 1rem;\r\n`;\r\n\r\nexport const BarsTd = styled.td`\r\n width: 100%;\r\n position: relative;\r\n vertical-align: middle;\r\n`;\r\n\r\nexport const TooltipFlex = styled(TooltipFlexUI)`\r\n position: absolute;\r\n top: 0;\r\n left: 50%;\r\n transform: translate(-50%, -50%);\r\n will-change: left, top;\r\n`;\r\n\r\nexport const StackSumContainer = styled.div`\r\n position: relative;\r\n`;\r\n\r\nexport const StackSum = styled.div`\r\n white-space: nowrap;\r\n position: absolute;\r\n top: 50%;\r\n left: 50%;\r\n transform: translate(0, -50%);\r\n`;\r\n\r\nexport const StackWrapper = styled.div`\r\n position: absolute;\r\n top: 0;\r\n display: flex;\r\n justify-content: flex-start;\r\n height: 100%;\r\n`;\r\n","import React from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport {\r\n horizontalBarChartClassNames as classNames,\r\n TooltipFlex,\r\n} from '../styled';\r\nimport {\r\n TooltipContainer,\r\n TooltipItem,\r\n Name,\r\n Value,\r\n ColorBox,\r\n} from '../../../common/components/tooltips';\r\n\r\nimport { TooltipProps } from './types';\r\n\r\nexport const Tooltip: React.FC<TooltipProps> = ({\r\n renderTooltip,\r\n bars,\r\n style,\r\n className,\r\n}): React.ReactElement => {\r\n const format = d3.format(',');\r\n\r\n return (\r\n <TooltipFlex\r\n className={`${classNames.horizontalBarChartTooltipFlex} ${className ||\r\n ''}`}\r\n style={style}\r\n >\r\n <TooltipContainer\r\n className={classNames.horizontalBarChartTooltipContainer}\r\n >\r\n {renderTooltip\r\n ? renderTooltip(bars)\r\n : bars.map(({ color, name, value, groupName }, index) => (\r\n <TooltipItem\r\n key={`${name || ''}-${index}-${groupName}`}\r\n className={classNames.horizontalBarChartTooltipItem}\r\n >\r\n {color && <ColorBox style={{ backgroundColor: color }} />}\r\n {name && (\r\n <Name className={classNames.horizontalBarChartTooltipName}>\r\n {name}\r\n </Name>\r\n )}\r\n <Value className={classNames.horizontalBarChartTooltipValue}>\r\n {format(value)}\r\n </Value>\r\n </TooltipItem>\r\n ))}\r\n </TooltipContainer>\r\n </TooltipFlex>\r\n );\r\n};\r\n","import React, { useCallback, useEffect } from 'react';\r\nimport * as d3 from 'd3';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\n\r\nimport {\r\n HorizontalBarChartMarshalingData,\r\n HorizontalBarChartProps,\r\n} from '../../types';\r\nimport { UseTooltip } from './types';\r\n\r\nimport { Tooltip } from '../../Tooltip';\r\n\r\nconst rootElement: HTMLDivElement = document.createElement('div');\r\n\r\nexport const useTooltip = ({\r\n renderTooltip,\r\n tooltipBind,\r\n tooltipStyle,\r\n tooltipRoot,\r\n tooltipClassName,\r\n hideTooltip,\r\n}: Pick<\r\n HorizontalBarChartProps,\r\n | 'renderTooltip'\r\n | 'tooltipBind'\r\n | 'tooltipStyle'\r\n | 'tooltipRoot'\r\n | 'tooltipClassName'\r\n | 'hideTooltip'\r\n>): UseTooltip => {\r\n useEffect(() => {\r\n const container: Element | null =\r\n tooltipRoot || document.querySelector('body');\r\n\r\n container && container.appendChild(rootElement);\r\n return () => {\r\n unmountComponentAtNode(rootElement);\r\n };\r\n }, [tooltipRoot]);\r\n\r\n const onMouseMove = useCallback(\r\n (event: React.MouseEvent, bars: HorizontalBarChartMarshalingData[]) => {\r\n let [x, y] = d3.pointer(event, document);\r\n\r\n if (!tooltipBind && 'getBoundingClientRect' in event.target) {\r\n const {\r\n width,\r\n height,\r\n }: DOMRect = (event.target as HTMLDivElement).getBoundingClientRect();\r\n const [barX, barY] = d3.pointer(event, event.target);\r\n\r\n x = x - barX + width / 2;\r\n y = y - barY + height / 2;\r\n }\r\n\r\n if (rootElement) {\r\n rootElement.style.visibility = 'visible';\r\n }\r\n\r\n render(\r\n <Tooltip\r\n style={{\r\n left: x,\r\n top: y,\r\n ...tooltipStyle,\r\n }}\r\n bars={bars}\r\n renderTooltip={renderTooltip}\r\n className={tooltipClassName}\r\n />,\r\n rootElement\r\n );\r\n },\r\n [tooltipClassName, tooltipStyle, renderTooltip, tooltipBind]\r\n );\r\n\r\n const onMouseLeave = useCallback(() => {\r\n if (rootElement) {\r\n rootElement.style.visibility = 'hidden';\r\n hideTooltip && hideTooltip();\r\n }\r\n }, [hideTooltip]);\r\n\r\n return [onMouseMove, onMouseLeave];\r\n};\r\n","import React, { Fragment, useMemo, CSSProperties, ReactNode } from 'react';\r\n\r\nimport {\r\n horizontalBarChartClassNames as classNames,\r\n StackWrapper,\r\n} from '../styled';\r\n\r\nimport { UseTooltip } from './useTooltip/types';\r\nimport {\r\n HorizontalBarChartMarshalingData,\r\n HorizontalBarChartProps,\r\n} from '../types';\r\n\r\nexport const useStackWrapper = (stackedTooltip?: boolean) => {\r\n return useMemo(\r\n () =>\r\n stackedTooltip\r\n ? ({\r\n item,\r\n mouseMove,\r\n mouseLeave,\r\n tooltipBind,\r\n ...props\r\n }: {\r\n style?: CSSProperties;\r\n item: HorizontalBarChartMarshalingData[];\r\n tooltipBind: HorizontalBarChartProps['tooltipBind'];\r\n mouseMove: UseTooltip[0];\r\n mouseLeave: UseTooltip[1];\r\n }) => (\r\n <StackWrapper\r\n className={classNames.horizontalBarChartStackWrapper}\r\n onMouseOver={event => mouseMove(event, item)}\r\n onMouseMove={\r\n tooltipBind ? event => mouseMove(event, item) : void 0\r\n }\r\n onMouseOut={mouseLeave}\r\n {...props}\r\n />\r\n )\r\n : ({ children }: { children?: ReactNode }) => (\r\n <Fragment>{children}</Fragment>\r\n ),\r\n [stackedTooltip]\r\n );\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const BarStyled = styled.div`\r\n position: relative;\r\n display: inline-flex;\r\n height: 100%;\r\n`;\r\n","import React from 'react';\r\n\r\nimport { BarProps } from './types';\r\n\r\nimport { horizontalBarChartClassNames as classNames } from '../styled';\r\nimport { BarStyled } from './styled';\r\n\r\nexport const Bar: React.FC<BarProps> = ({\r\n withTooltip,\r\n bar,\r\n formatNativeTitle,\r\n tooltipBind,\r\n mouseMove,\r\n mouseLeave,\r\n pointerEventsNone,\r\n isFirstChild,\r\n isLastChild,\r\n isOnlyChild,\r\n}): React.ReactElement => {\r\n const { color, width } = bar;\r\n const ceiledWidth = Math.abs(width);\r\n const onMouseMove = withTooltip\r\n ? (event: React.MouseEvent) => mouseMove(event, [bar])\r\n : void 0;\r\n const onMouseLeave = withTooltip ? () => mouseLeave() : void 0;\r\n\r\n return (\r\n <BarStyled\r\n className={`${classNames.horizontalBarChartBar} ${\r\n isFirstChild ? classNames.horizontalBarChartBarFirst : ''\r\n } ${isLastChild ? classNames.horizontalBarChartBarLast : ''} ${\r\n isOnlyChild ? classNames.horizontalBarChartBarOnly : ''\r\n }`}\r\n style={{\r\n width: `${ceiledWidth}%`,\r\n backgroundColor: color,\r\n pointerEvents: pointerEventsNone ? 'none' : 'auto',\r\n }}\r\n title={formatNativeTitle ? formatNativeTitle(bar) : ''}\r\n onMouseOver={onMouseMove}\r\n onMouseMove={tooltipBind ? onMouseMove : void 0}\r\n onMouseOut={onMouseLeave}\r\n />\r\n );\r\n};\r\n","import { useMemo } from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport {\r\n HorizontalBarChartProps,\r\n HorizontalBarChartScaleItem,\r\n} from '../../types';\r\n\r\nconst hundred = 100;\r\n\r\nexport const useScale = ({\r\n maxValue,\r\n scaleTicks,\r\n scaleDomain,\r\n}: Pick<\r\n HorizontalBarChartProps,\r\n 'maxValue' | 'scaleTicks' | 'scaleDomain'\r\n>): HorizontalBarChartScaleItem[] => {\r\n return useMemo(() => {\r\n const scaleLinear = d3\r\n .scaleLinear()\r\n .domain([0, maxValue] as Iterable<d3.NumberValue>)\r\n .range([0, hundred]);\r\n\r\n const ticks = scaleLinear.ticks(scaleTicks);\r\n\r\n return (scaleDomain || ticks).map((value: number) => ({\r\n value,\r\n x: scaleLinear(value),\r\n }));\r\n }, [maxValue, scaleTicks, scaleDomain]);\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const TickTd = styled.td`\r\n position: relative;\r\n`;\r\n\r\nexport const Ticks = styled.div`\r\n position: relative;\r\n height: 1rem;\r\n`;\r\n\r\nexport const Tick = styled.div`\r\n white-space: nowrap;\r\n width: 0;\r\n height: 0;\r\n position: absolute;\r\n top: 50%;\r\n transform: translateY(-50%);\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n`;\r\n","import React from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport { HorizontalBarChartProps } from '../types';\r\n\r\nimport { useScale } from './hooks/useScale';\r\n\r\nimport { TickTd, Ticks, Tick } from './styled';\r\nimport { horizontalBarChartClassNames as classNames } from '../styled';\r\n\r\nexport const XScale: React.FC<Pick<\r\n HorizontalBarChartProps,\r\n 'maxValue' | 'scaleTicks' | 'renderTicks' | 'scaleDomain'\r\n>> = ({\r\n maxValue,\r\n scaleTicks,\r\n renderTicks,\r\n scaleDomain,\r\n}): React.ReactElement => {\r\n const range = useScale({ maxValue, scaleTicks, scaleDomain });\r\n const format = d3.format(',');\r\n\r\n return (\r\n <tr>\r\n <td />\r\n <TickTd className={classNames.horizontalBarChartXScaleTd}>\r\n <Ticks className={classNames.horizontalBarChartXScaleTicks}>\r\n {range.map((tick, index, ticks) => {\r\n const { value, x } = tick;\r\n\r\n return (\r\n <Tick\r\n key={value}\r\n className={classNames.horizontalBarChartXScaleTick}\r\n style={{\r\n left: `${x}%`,\r\n justifyContent:\r\n index === 0\r\n ? 'flex-start'\r\n : index === ticks.length - 1\r\n ? 'flex-end'\r\n : '',\r\n }}\r\n >\r\n {renderTicks ? renderTicks(tick) : format(value)}\r\n </Tick>\r\n );\r\n })}\r\n </Ticks>\r\n </TickTd>\r\n </tr>\r\n );\r\n};\r\n","import React from 'react';\r\nimport * as d3 from 'd3';\r\n\r\nimport { HorizontalBarChartProps } from './types';\r\n\r\nimport { useMarshaling } from './hooks/useMarshaling';\r\nimport { useTooltip } from './hooks/useTooltip';\r\nimport { useStackWrapper } from './hooks/useStackWrapper';\r\n\r\nimport { Bar } from './Bar';\r\nimport { XScale } from './XScale';\r\nimport {\r\n Table,\r\n LabelCell,\r\n horizontalBarChartClassNames as classNames,\r\n BarFlex,\r\n BarsTd,\r\n StackSumContainer,\r\n StackSum,\r\n} from './styled';\r\n\r\nexport const HorizontalBarChart: React.FC<HorizontalBarChartProps> = ({\r\n data,\r\n className,\r\n style,\r\n children,\r\n labels,\r\n fullExtent,\r\n maxValue,\r\n formatNativeTitle,\r\n renderTooltip,\r\n withTooltip,\r\n withStackSum,\r\n tooltipBind,\r\n scaleTicks,\r\n renderTicks,\r\n renderButton,\r\n tooltipStyle,\r\n tooltipClassName,\r\n scaleDomain,\r\n renderDataTable,\r\n thead,\r\n withoutXScale,\r\n stackedTooltip,\r\n fullChartTooltip,\r\n hideTooltip,\r\n}): React.ReactElement => {\r\n const { fullMax, data: marshalingData } = useMarshaling({\r\n data,\r\n fullExtent,\r\n maxValue,\r\n labels,\r\n });\r\n const [mouseMove, mouseLeave] = useTooltip({\r\n renderTooltip,\r\n tooltipBind,\r\n tooltipStyle,\r\n tooltipClassName,\r\n hideTooltip,\r\n });\r\n const Stack = useStackWrapper(stackedTooltip);\r\n\r\n return (\r\n <Table\r\n className={className}\r\n style={style}\r\n onMouseOver={\r\n fullChartTooltip\r\n ? event => mouseMove(event, marshalingData.flat())\r\n : void 0\r\n }\r\n onMouseMove={\r\n fullChartTooltip\r\n ? event => mouseMove(event, marshalingData.flat())\r\n : void 0\r\n }\r\n onMouseOut={fullChartTooltip ? mouseLeave : void 0}\r\n >\r\n {thead}\r\n <tbody>\r\n {marshalingData.map((item, rowIndex) => {\r\n const stackSum =\r\n (withStackSum || renderDataTable) &&\r\n d3.sum(item, ({ value }) => value);\r\n const sumWidth = d3.sum(item, ({ width }) => width);\r\n\r\n return (\r\n <tr key={`row-${rowIndex}`}>\r\n {typeof renderButton === 'function' && (\r\n <td className={classNames.horizontalBarChartButtonTd}>\r\n {renderButton(item, rowIndex)}\r\n </td>\r\n )}\r\n <td className={classNames.horizontalBarChartLabelTd}>\r\n {labels && labels[rowIndex] && (\r\n <LabelCell className={classNames.horizontalBarChartLabelCell}>\r\n {labels[rowIndex]}\r\n </LabelCell>\r\n )}\r\n </td>\r\n <BarsTd\r\n className={classNames.horizontalBarChartBarTd}\r\n style={{ pointerEvents: fullChartTooltip ? 'none' : 'auto' }}\r\n >\r\n <BarFlex\r\n className={classNames.horizontalBarChartBarFlex}\r\n style={{ pointerEvents: fullChartTooltip ? 'none' : 'auto' }}\r\n >\r\n <Stack\r\n style={stackedTooltip ? { width: `${sumWidth}%` } : void 0}\r\n item={item}\r\n tooltipBind={tooltipBind}\r\n mouseMove={mouseMove}\r\n mouseLeave={mouseLeave}\r\n />\r\n {item.map(\r\n (bar, barIndex, array) =>\r\n bar.value !== 0 && (\r\n <Bar\r\n key={`bar-${bar.name || ''}-${barIndex}`}\r\n formatNativeTitle={formatNativeTitle}\r\n bar={bar}\r\n tooltipBind={tooltipBind}\r\n pointerEventsNone={stackedTooltip || fullChartTooltip}\r\n withTooltip={withTooltip && !stackedTooltip}\r\n mouseMove={mouseMove}\r\n mouseLeave={mouseLeave}\r\n isOnlyChild={array.length === 1}\r\n isFirstChild={barIndex === 0 && array.length > 1}\r\n isLastChild={\r\n array.length - 1 === barIndex && array.length > 1\r\n }\r\n />\r\n )\r\n )}\r\n {withStackSum && (\r\n <StackSumContainer\r\n className={classNames.horizontalBarChartStackSumContainer}\r\n >\r\n <StackSum\r\n className={classNames.horizontalBarChartStackSum}\r\n >\r\n {stackSum}\r\n </StackSum>\r\n </StackSumContainer>\r\n )}\r\n </BarFlex>\r\n </BarsTd>\r\n {renderDataTable &&\r\n renderDataTable(item, stackSum as number, rowIndex)}\r\n </tr>\r\n );\r\n })}\r\n {!withoutXScale && (\r\n <XScale\r\n maxValue={typeof maxValue === 'number' ? maxValue : fullMax}\r\n scaleTicks={scaleTicks}\r\n renderTicks={renderTicks}\r\n scaleDomain={scaleDomain}\r\n />\r\n )}\r\n {children}\r\n </tbody>\r\n </Table>\r\n );\r\n};\r\n\r\nHorizontalBarChart.defaultProps = {\r\n fullExtent: true,\r\n withTooltip: false,\r\n withStackSum: false,\r\n tooltipBind: false,\r\n scaleTicks: 4,\r\n withoutXScale: false,\r\n};\r\n","export const bubbleChartDefaultProps = {\r\n height: 280,\r\n minSize: 6,\r\n maxSize: 30,\r\n margin: {\r\n top: 10,\r\n right: 15,\r\n bottom: 10,\r\n left: 0,\r\n },\r\n yAxisPadding: 10,\r\n xAxisPadding: 10,\r\n yScaleLabelPadding: 10,\r\n};\r\n","import styled, { createGlobalStyle } from 'styled-components';\r\n\r\nimport { Wrapper } from '../../common/components/Wrapper';\r\n\r\nexport const bubbleChartClassNames = {\r\n bubbleChartYAxis: 'bubbleChartYAxis',\r\n bubbleChartYAxisZeroTick: 'bubbleChartYAxisZeroTick',\r\n bubbleChartXAxis: 'bubbleChartXAxis',\r\n bubbleChartGridGlobal: 'bubbleChartGridGlobal',\r\n bubbleChartGridLineX: 'bubbleChartGridLineX',\r\n bubbleChartGridLineY: 'bubbleChartGridLineY',\r\n bubbleChartCircle: 'bubbleChartCircle',\r\n bubbleChartYScaleLabel: 'bubbleChartYScaleLabel',\r\n bubbleChartTooltip: 'bubbleChartTooltip',\r\n bubbleChartTooltipContainer: 'bubbleChartTooltipContainer',\r\n bubbleChartTooltipFlex: 'bubbleChartTooltipFlex',\r\n bubbleChartTip: 'bubbleChartTip',\r\n};\r\n\r\nexport const SvgWrapper = styled(Wrapper)`\r\n .${bubbleChartClassNames.bubbleChartYAxis},\r\n .${bubbleChartClassNames.bubbleChartXAxis},\r\n .${bubbleChartClassNames.bubbleChartGridGlobal} {\r\n shape-rendering: crispEdges;\r\n }\r\n\r\n .${bubbleChartClassNames.bubbleChartGridLineX},\r\n .${bubbleChartClassNames.bubbleChartGridLineY} {\r\n stroke: rgba(149, 149, 149, 0.24);\r\n }\r\n\r\n .${bubbleChartClassNames.bubbleChartYScaleLabel} {\r\n font-size: 10px;\r\n }\r\n`;\r\n\r\nexport const TooltipStyles = createGlobalStyle`\r\n .${bubbleChartClassNames.bubbleChartTooltipContainer} {\r\n position: absolute;\r\n transition: opacity 150ms cubic-bezier(0.2, 1, 0.6, 1);\r\n pointer-events: none;\r\n z-index: 1;\r\n }\r\n`;\r\n","import { DrawGridProps } from './types';\r\n\r\nimport { bubbleChartClassNames } from '../styled';\r\n\r\nexport const drawGrid = ({\r\n svg,\r\n yScale,\r\n xScale,\r\n yTicksCount,\r\n drawGridX,\r\n drawGridY,\r\n}: DrawGridProps) => {\r\n if (!drawGridY && !drawGridX) return;\r\n const [min, max] = xScale.domain();\r\n\r\n const global = svg\r\n .append('g')\r\n .attr('class', bubbleChartClassNames.bubbleChartGridGlobal);\r\n\r\n const yTicks = yScale.ticks(yTicksCount);\r\n\r\n if (drawGridX) {\r\n global\r\n .append('g')\r\n .selectAll('line')\r\n .data(yTicks)\r\n .join('line')\r\n .attr('class', bubbleChartClassNames.bubbleChartGridLineX)\r\n .attr('x1', () => xScale(min))\r\n .attr('x2', () => xScale(max))\r\n .attr('y1', (d: number) => Math.round(yScale(d)))\r\n .attr('y2', (d: number) => Math.round(yScale(d)));\r\n }\r\n\r\n if (drawGridY) {\r\n global\r\n .append('g')\r\n .selectAll('line')\r\n .data(xScale.ticks(yTicksCount))\r\n .join('line')\r\n .attr('class', bubbleChartClassNames.bubbleChartGridLineY)\r\n .attr('x1', (d: number) => Math.round(xScale(d)))\r\n .attr('x2', (d: number) => Math.round(xScale(d)))\r\n .attr('y1', () => Math.round(yScale(yTicks[0])))\r\n .attr('y2', () => Math.round(yScale(yTicks[yTicks.length - 1])));\r\n }\r\n};\r\n","import styled from 'styled-components';\r\n\r\nexport const Tooltip = styled.div`\r\n width: 0;\r\n height: 0;\r\n display: flex;\r\n align-items: flex-end;\r\n justify-content: center;\r\n font-size: 12px;\r\n white-space: nowrap;\r\n`;\r\n","import React from 'react';\r\nimport ReactDOMServer from 'react-dom/server';\r\nimport * as d3 from 'd3';\r\n\r\nimport { Tooltip } from './styled';\r\nimport { bubbleChartClassNames as classNames } from '../styled';\r\nimport { TooltipContainer } from '../../../common/components/tooltips';\r\nimport { DrawTooltipProps } from './types';\r\n\r\nexport const drawTooltip = ({\r\n bubbles,\r\n tooltipRoot,\r\n tooltipClassName,\r\n renderTooltip,\r\n}: DrawTooltipProps) => {\r\n const root: Element | null = tooltipRoot || document.querySelector('body');\r\n const format = d3.format(',');\r\n\r\n let container: d3.Selection<any, unknown, any, any> = d3\r\n .select(root)\r\n .select(`.${classNames.bubbleChartTooltip}`);\r\n\r\n if (container.node() === null) {\r\n container = d3\r\n .select(root)\r\n .append('div')\r\n .attr('class', classNames.bubbleChartTooltip);\r\n }\r\n\r\n let tooltip: d3.Selection<\r\n HTMLDivElement,\r\n unknown,\r\n d3.BaseType,\r\n any\r\n > = container\r\n .append('div')\r\n .attr(\r\n 'class',\r\n `${classNames.bubbleChartTooltipContainer} ${tooltipClassName || ''}`\r\n )\r\n .style('opacity', '0');\r\n\r\n bubbles.on('mouseover.tooltip', (event, data) => {\r\n const { sizeValue } = data;\r\n const circle = event.currentTarget as SVGCircleElement;\r\n const { x, y, width } = circle.getBoundingClientRect();\r\n const left = window.pageXOffset + x + width / 2;\r\n const top = window.pageYOffset + y;\r\n\r\n tooltip\r\n .style('left', `${left}px`)\r\n .style('top', `${top}px`)\r\n .html(() => {\r\n const html = ReactDOMServer.renderToString(\r\n <Tooltip className={classNames.bubbleChartTooltipFlex}>\r\n <TooltipContainer className={classNames.bubbleChartTip}>\r\n {format(sizeValue)}\r\n </TooltipContainer>\r\n </Tooltip>\r\n );\r\n\r\n return html;\r\n });\r\n\r\n renderTooltip && renderTooltip({ tooltip, data, circle });\r\n\r\n tooltip.style('opacity', '1');\r\n });\r\n\r\n bubbles.on('mouseout.tooltip', () => {\r\n tooltip.style('opacity', '0');\r\n });\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nimport { BubbleChartProps } from './types';\r\n\r\nimport { appendSvg } from '../../helpers';\r\nimport { computeDimensions } from '../../helpers/computeDimensions';\r\n\r\nimport { bubbleChartDefaultProps } from './bubbleChartDefaultProps';\r\nimport { drawGrid } from './drawGrid';\r\nimport { drawTooltip } from './drawTooltip';\r\n\r\nimport { bubbleChartClassNames as classNames } from './styled';\r\n\r\nexport const draw = (\r\n node: HTMLElement | null,\r\n props: BubbleChartProps\r\n): void => {\r\n const {\r\n data,\r\n margin,\r\n xAxisPadding,\r\n yAxisPadding,\r\n customYScale,\r\n customYAxis,\r\n customXScale,\r\n customXAxis,\r\n minSize,\r\n maxSize,\r\n minYValue,\r\n maxYValue,\r\n drawGridY,\r\n drawGridX,\r\n scaleLog,\r\n xScaleItemWidth,\r\n bubbleStyle,\r\n customize,\r\n yScaleLabel,\r\n yScaleLabelPadding,\r\n enableTooltip,\r\n tooltipRoot,\r\n tooltipClassName,\r\n renderTooltip,\r\n } = props;\r\n\r\n if (node !== null && data.length) {\r\n const marginTop = margin ? margin.top : 0;\r\n const marginRight = margin ? margin.right : 0;\r\n const marginBottom = margin ? margin.bottom : 0;\r\n const marginLeft = margin ? margin.left : 0;\r\n const { width: nodeWidth } = node.getBoundingClientRect();\r\n const width = props.width || nodeWidth;\r\n const height = props.height || 0;\r\n const yTicksCountDefault = 6;\r\n\r\n const minY =\r\n typeof minYValue === 'number'\r\n ? minYValue\r\n : (d3.min(data, ({ yValue }) => yValue) as number);\r\n const maxY =\r\n typeof maxYValue === 'number'\r\n ? maxYValue\r\n : (d3.max(data, ({ yValue }) => yValue) as number);\r\n\r\n const svg = appendSvg(node, width, height || 0);\r\n\r\n const sizeScale = scaleLog\r\n ? d3\r\n .scaleLog()\r\n .domain([\r\n d3.min(data, ({ sizeValue }) => sizeValue) as number || 0.1,\r\n d3.max(data, ({ sizeValue }) => sizeValue) as number || 0.1,\r\n ])\r\n .range([\r\n minSize || bubbleChartDefaultProps.minSize || 0.1,\r\n maxSize || bubbleChartDefaultProps.maxSize || 0.1,\r\n ])\r\n : d3\r\n .scaleLinear()\r\n .domain([\r\n d3.min(data, ({ sizeValue }) => sizeValue) as number,\r\n d3.max(data, ({ sizeValue }) => sizeValue) as number,\r\n ])\r\n .range([\r\n minSize || bubbleChartDefaultProps.minSize,\r\n maxSize || bubbleChartDefaultProps.maxSize,\r\n ]);\r\n\r\n const yRange1 = height - marginTop - marginBottom - (xAxisPadding || 0);\r\n\r\n const yScale = scaleLog\r\n ? d3\r\n .scaleLog()\r\n .domain([minY || 0.1, maxY || 0.1])\r\n .range([yRange1 || 0.1, marginTop || 0.1])\r\n .nice()\r\n : d3\r\n .scaleLinear()\r\n .domain([minY, maxY])\r\n .range([yRange1, marginTop])\r\n .nice();\r\n\r\n customYScale && customYScale(yScale);\r\n\r\n const yTicks = yScale.ticks();\r\n const yAxisLeft = d3.axisLeft(yScale).ticks(yTicksCountDefault);\r\n\r\n const yTicksCount = yAxisLeft.tickArguments()[0];\r\n\r\n const yAxis = svg\r\n .append('g')\r\n .attr('class', classNames.bubbleChartYAxis)\r\n .call(yAxisLeft);\r\n\r\n let yScaleLabelHeight = yScaleLabelPadding || 0;\r\n\r\n if (yScaleLabel) {\r\n const label = svg\r\n .append('text')\r\n .text(yScaleLabel)\r\n .attr('class', classNames.bubbleChartYScaleLabel);\r\n\r\n const { width, height } = computeDimensions(label);\r\n\r\n yScaleLabelHeight = yScaleLabelHeight + height;\r\n\r\n label.attr(\r\n 'transform',\r\n `rotate(-90) translate(-${(yRange1 + marginBottom + width) /\r\n 2}, ${height})`\r\n );\r\n }\r\n\r\n yAxis.selectAll('.tick').attr('class', value => {\r\n return value === 0\r\n ? `tick ${classNames.bubbleChartYAxisZeroTick}`\r\n : 'tick';\r\n });\r\n\r\n customYAxis && customYAxis(yAxis);\r\n\r\n const { width: yAxisWidth } = computeDimensions(yAxis);\r\n\r\n const xScale = scaleLog\r\n ? d3\r\n .scaleLog()\r\n .domain([\r\n d3.min(data, ({ xValue }) => xValue) as number || 0.1,\r\n d3.max(data, ({ xValue }) => xValue) as number || 0.1,\r\n ])\r\n .range([\r\n (marginLeft + yAxisWidth + (yAxisPadding || 0) + yScaleLabelHeight) || 0.1,\r\n (width - marginRight) || 0.1,\r\n ])\r\n : d3\r\n .scaleLinear()\r\n .domain([\r\n d3.min(data, ({ xValue }) => xValue) as number,\r\n d3.max(data, ({ xValue }) => xValue) as number,\r\n ])\r\n .range([\r\n marginLeft + yAxisWidth + (yAxisPadding || 0) + yScaleLabelHeight,\r\n width - marginRight,\r\n ]);\r\n\r\n customXScale && customXScale(xScale);\r\n\r\n const xAxisBottom = d3.axisBottom(xScale);\r\n\r\n if (typeof xScaleItemWidth === 'number') {\r\n const [x1, x2] = xScale.range();\r\n const chartWidth = x2 - x1;\r\n\r\n xAxisBottom\r\n .ticks(Math.round(chartWidth / xScaleItemWidth))\r\n .tickSizeOuter(0);\r\n }\r\n\r\n const xAxis = svg\r\n .append('g')\r\n .call(xAxisBottom)\r\n .attr('class', classNames.bubbleChartXAxis);\r\n\r\n customXAxis && customXAxis(xAxis);\r\n\r\n yAxis.attr(\r\n 'transform',\r\n `translate(${marginLeft + yAxisWidth + yScaleLabelHeight}, 0)`\r\n );\r\n\r\n drawGrid({\r\n svg,\r\n yScale,\r\n xScale,\r\n yTicksCount,\r\n drawGridY,\r\n drawGridX,\r\n });\r\n\r\n xAxis.attr(\r\n 'transform',\r\n `translate(0, ${yScale(yTicks[0]) + (xAxisPadding || 0)})`\r\n );\r\n\r\n const bubbles = svg\r\n .append('g')\r\n .selectAll('dot')\r\n .data(data)\r\n .enter()\r\n .append('circle')\r\n .attr('class', classNames.bubbleChartCircle)\r\n .attr('cx', ({ xValue }) => xScale(xValue))\r\n .attr('cy', ({ yValue }) => yScale(yValue))\r\n .attr('r', ({ sizeValue }) => sizeScale(sizeValue) / 2)\r\n .attr('fill', ({ color }) => color || 'rgba(0, 176, 113, 0.6)')\r\n .attr('stroke', ({ stroke }) => stroke || 'transparent')\r\n .attr('style', ({ style }) => style || bubbleStyle || '');\r\n\r\n if (enableTooltip) {\r\n drawTooltip({ bubbles, tooltipRoot, tooltipClassName, renderTooltip });\r\n }\r\n\r\n customize && customize({ svg, bubbles, yScale, xScale, sizeScale });\r\n }\r\n};\r\n","import * as d3 from 'd3';\r\n\r\nimport { bubbleChartClassNames as classNames } from './styled';\r\n\r\nexport const unmount = (tooltipRoot?: Element) => {\r\n const root: Element | null = tooltipRoot || document.querySelector('body');\r\n\r\n d3.select(root)\r\n .select(`.${classNames.bubbleChartTooltip}`)\r\n .remove();\r\n};\r\n","import React, { useEffect } from 'react';\r\n\r\nimport { BubbleChartProps } from './types';\r\n\r\nimport { useNode } from '../../hooks';\r\nimport { useResize } from '../../hooks';\r\n\r\nimport { draw } from './draw';\r\nimport { unmount } from './unmount';\r\nimport { bubbleChartDefaultProps } from './bubbleChartDefaultProps';\r\n\r\nimport { SvgWrapper, TooltipStyles } from './styled';\r\n\r\nexport const BubbleChart: React.FC<BubbleChartProps> = (\r\n props\r\n): React.ReactElement => {\r\n const { className, style, children, tooltipRoot } = props;\r\n const [ref, node] = useNode();\r\n\r\n useEffect(() => {\r\n node && draw(node, props);\r\n }, [node, props]);\r\n\r\n useEffect(() => {\r\n return () => unmount(tooltipRoot);\r\n }, [tooltipRoot]);\r\n\r\n const onDraw = () => draw(node, props);\r\n\r\n useResize(props.width, onDraw);\r\n\r\n return (\r\n <div className={className} style={style}>\r\n <TooltipStyles />\r\n <SvgWrapper ref={ref}>{children}</SvgWrapper>\r\n </div>\r\n );\r\n};\r\n\r\nBubbleChart.defaultProps = bubbleChartDefaultProps;\r\n"],"names":["Wrapper","styled","div","useNode","node","onSetNode","useState","ref","useCallback","throttle","fn","wait","isCalled","setTimeout","THROTTLE_DELAY","useResize","width","callback","delay","throttledCallback","useMemo","undefined","useEffect","window","addEventListener","removeEventListener","appendSvg","height","d3","select","remove","svg","append","attr","SwipeScrollContainer","animate","duration","timing","draw","start","performance","now","requestId","requestAnimationFrame","requestAnimate","time","timeFraction","cancelAnimationFrame","progress","easeOutQuad","range","num","min","max","Math","defaultRefs","animation","speed","timestamp","startX","currentX","useSwipe","animationFunc","onSwipe","container","body","documentSelect","document","refs","useRef","current","onMove","event","nodeWidth","getBoundingClientRect","x","type","includes","touches","newX","maxX","translateX","style","hundred","Date","dt","dx","speedX","round","onEnd","on","dtEnd","px","currX","transX","onStart","isTouch","left","parentElement","SwipeScroll","children","props","draggingNode","React","defaultProps","degByIndex","index","count","degs","deg","getTextAnchor","length","halfAngle","getTranslate","anchor","translateY","LabelContainer","attrs","transform","labelClassName","drawRadialLabels","dataLength","radiusScale","maxValue","angleSlice","radius","xOffset","yOffset","renderLabel","selectLabel","d3container","selectAll","pxToValue","value","axisX","i","cos","PI","axisY","sin","labels","Array","from","_","ceil","y","forEach","html","ReactDOMServer","renderToString","top","label","Label","Name","middleBadgeStyles","css","DefaultBadge","MiddleBadge","BadgePrefix","radarChartclassNames","radar","radarAxis","radarAxisTextGlobal","radarAxisText","radarPolygon","radarLabel","radarLabelName","radarLabelBadge","radarLabelBadgePrefix","radarCircle","SvgWrapper","data","curve","polar","formatValue","badgePrefix","labelOffset","circleRadius","svgElements","customize","formatAxisValue","radarStyles","labelIndex","defaultBleedLength","bleedLength","defaultHeight","minValue","map","paddingX","paddingY","defaultLevels","ticks","domain","levels","lastTick","newLastTick","push","newMaxValue","radarLine","angle","radarValue","globalCenter","levelsGrid","reverse","axisGridY","getAxisValue","gridGlobal","enter","radarGlobal","axis","name","maxGridHeight","path","circleNode","circleHeight","pathNode","pathHeight","radiusByMaxValue","join","d","dataItem","format","axisTextGlobal","text","axisValue","item","circleGlobal","defaultLabelOffset","heightInner","offset","items","Badge","className","RadarChart","onDraw","radiansToDegrees","radians","flatAngle","degreesToRadians","degrees","pieChartclassNames","pieGlobal","pieSlice","pieSliceLabel","pieSliceLabelValue","pieSliceLabelName","pieRadialLabel","pieRadialLink","pieTooltipContainer","pieTooltipFlex","pieTooltip","pieTooltipItem","pieTooltipName","pieTooltipValue","pieTooltipColorBox","pieFullChartTooltipCircle","getMidFactor","startAngle","endAngle","getAlign","midangle","arc","enableRadialLabels","global","dataReady","radialLabelsLinkHorizontalLength","formatRadialLabel","radialLabelsTextXOffset","radialLabelYOffset","radialAngleXOffset","defaultRadialLabelsLinkHorizontalLength","outerArc","innerRadius","outerRadius","midFactor","posA","centroid","posB","posC","posCPi","getPosition","pos","defaultRadialLabelsTextXOffset","TooltipFlex","LabelFlex","LabelFlexCenter","TooltipContainer","TooltipGroupName","TooltipItem","ColFlex","ColorBox","ColorLine","Value","LabelTop","LabelBottom","drawTooltip","fullChartTooltip","tooltipRoot","tooltipClassName","tooltipBind","renderTooltip","allSlices","tooltipStyle","querySelector","classNames","isEmpty","empty","tooltipContainer","Object","entries","prop","val","isVisible","setVisible","visible","Boolean","opacity","setPosition","pieChartDatum","itemX","itemY","target","globalNode","itemWidth","itemHeight","arcX","arcY","setTooltip","pieChartData","color","key","backgroundColor","padAngle","onClick","cornerRadius","margin","enableSlicesLabels","formatSliceLabel","slicesLabelsSkipAngle","enableSlicesLabelsName","formatSliceLabelName","borderWidth","borderColor","formatSliceTitle","withTooltip","marginTop","marginRight","right","marginBottom","bottom","marginLeft","maxPadAngle","dividerPadAngle","fullAngle","pie","sort","maxOuterRadius","PieChart","defaultN","legendClassNames","legendContainer","legendTitle","legendTick","legendTickLine","legendTickText","ramp","n","canvas","createElement","context","getContext","fillStyle","fillRect","legendDefaultParams","tickSize","ticksDivier","titleMarginBottom","getLegend","title","tickFormat","tickValues","tickAdjust","g","tick","interpolate","copy","rangeRound","toDataURL","interpolator","assign","call","calendarChartClassNames","calendarChart","calendarYear","calendarAxis","calendarBody","calendarHeader","calendarYearTitle","calendarWeekDay","calendarMonth","calendarDays","calendarDay","headerHeight","startSunday","weekdays","monthSpacing","onEachDay","colorRange","legendProps","years","date","getUTCFullYear","cellOffset","weekDays","defaultCellSize","cellSize","countDay","days","sundayIndex","formatDay","formatDate","timeWeek","getTimeWeekCount","to","getMonthSpacing","getUTCMonth","formatMonth","chartWidth","values","year","months","weekCount","calendarWeekdays","header","fullYearlastMonth","fullYearlastDate","each","elements","element","currColor","getUTCDay","legend","containerNode","legendSvg","appendChild","CalendarChart","computeDimensions","selection","dimensions","SVGGraphicsElement","getBBox","none","isVoid","Number","isNaN","stackedData","stacks","valuesIndex","prevValue","abs","lineChartClassNames","lineChartYScaleGlobal","lineChartYScaleRight","lineChartXScaleGlobal","lineChartLinesGlobal","lineChartLine","lineChartAreasGlobal","lineChartArea","lineChartDotsGlobalContainer","lineChartDotsGlobal","lineChartDot","lineChartGridGlobal","lineChartGridLineX","lineChartGridLineY","lineChartLabelContainer","lineChartLabelFlex","lineChartLabel","lineChartMouseGlobal","lineChartMouseLine","lineChartMouseRect","lineChartMouseCircle","lineChartMouseLabelContainer","lineChartMouseLabel","TooltipStyles","createGlobalStyle","drawGrid","yScale","xScale","yTicksCount","lastIndex","drawGridX","drawGridY","yTicks","drawLabel","formatLabel","eachLabel","labelsDiv","argData","dynamicCircleRadius","formatDynamicTooltip","stackedTooltipIndex","stackedTooltip","tooltipLineTop","dotSnapping","chartData","filter","tooltipOff","x1","x2","y1","y2","mouseGlobal","mouseRect","mouseLine","lines","nodes","circles","dynamicDotOff","stroke","labelContainer","size","mouseMove","docX","docY","rectrX","nodeX","nodeY","currIndex","invert","positions","getValue","floor","line","hasAttribute","beginning","end","getTotalLength","getPointAtLength","step","lineChartData","dynamicDotStyle","datas","rest","invertValue","noHasData","every","topIndex","keys","reduce","acc","labelTexts","indexX","indexY","customYAxisSelection","customXAxisSelection","customYAxis","customXAxis","yAxisPadding","xAxisPadding","withLabels","stacked","dynamicTooltipEnable","customYScale","customLine","xScaleItemWidth","areaCurve","rightAxis","yRange","nice","yTicksCountDefault","yAxisLeft","tickArguments","yAxis","yAxisWidth","yAxisRightWidth","rightAxisMin","rightAxisMax","yRightScale","yAxisRightTicks","yAxisRight","xAxisBottom","tickSizeOuter","isArray","xAxis","xAxisHeight","defined","withAreas","some","fill","dataIndex","getArea","minAreaValues","minTick","y0","currData","area","areaStyle","dots","dot","dotsGlobal","dotsGroup","LineChart","barChartLinesClassNames","barChartLinesGlobal","barChartLine","barChartAreasGlobal","barChartArea","drawLines","lineData","stackedLine","linesSelection","areasSelection","bandwidth","linesData","lineType","areasData","tooltipClassnames","barChartMouseRect","barChartMouseContainer","barChartTooltipFlex","barChartMouseTooltip","barChartTooltip","barChartTooltipItem","barChartTooltipColFlex","barChartTooltipGroupName","barChartColorBox","barChartColorLine","barChartTooltipName","barChartTooltipValue","labelClassnames","barChartLabelContainer","barChartLabelFlex","barChartLabel","barChartClassNames","barChartBarGlobal","barChartYScaleGlobal","barChartYAxis","barChartXAxis","barChartYAxisZeroTick","barChartGridGlobal","barChartGridLineX","barChartGridLineXZero","barChartGridLineYZero","barChartGridLineY","barChartSelection","selectable","useSelection","drawing","clearSelection","removeChild","onStartDrawing","e","stopPropagation","which","setAttribute","pageX","firstChild","offsetX","display","newWidth","offsetLeft","onMouseLeave","offsetWidth","onStopDrawing","selectionMinX","selectionWidth","selectionMaxX","onSelect","childNodes","child","userSelect","getX","padding","getDomain","minDomainValue","maxDomainValue","MIN","POSITIVE_INFINITY","MAX","NEGATIVE_INFINITY","groups","groupMax","groupMin","group","stackMax","stackMin","groupKey","marshaling","barWidth","barPadding","colors","groupIndex","groupName","marshalledGroup","groupsKeys","stackIndex","groupKeys","barGroupWidth","isPositiveValue","EPSILON","getLabelY","labelPosition","getLabel","LabelUI","marshalledData","hideTooltipGroupName","tooltipY","formatTooltipValue","formatTooltipName","tooltipYDomain","setTooltipPosition","onLabelItem","isBarTooltip","bars","onBarClick","onBarHover","xScaleBandDomain","topYDomain","curr","lineMin","tooltip","barChartTootipFlex","flagCurrIndex","offsetY","findIndex","containts","elementsFromPoint","clientX","clientY","currBars","isContains","currLineData","concat","svgWidth","isMouseWithin","rectrY","concatedData","stack","stacksCount","indexFlag","barsWidth","LabelFlexStyled","LabelStyle","resizeBarWidth","sectionPadding","groupPadding","_key","getBars","MIN_BAR_HEIGHT","markers","barWidthProp","customXScale","customYAxisLeft","customXAxisBottom","customBars","minValuesLine","marshalledMap","drawBars","defaultBarWidth","barDomain","array","divider","marshalled","maskId","uniqueId","gSvg","marker","horizontal","lineColor","align","BarChart","useMarshaling","fullExtent","fullMax","scaleLinear","horizontalBarChartClassNames","horizontalBarChartButtonTd","horizontalBarChartLabelTd","horizontalBarChartLabelCell","horizontalBarChartBarTd","horizontalBarChartBarFlex","horizontalBarChartBar","horizontalBarChartBarFirst","horizontalBarChartBarLast","horizontalBarChartBarOnly","horizontalBarChartTooltipFlex","horizontalBarChartStackWrapper","horizontalBarChartTooltipContainer","horizontalBarChartStackSumContainer","horizontalBarChartStackSum","horizontalBarChartXScaleTd","horizontalBarChartXScaleTicks","horizontalBarChartXScaleTick","horizontalBarChartTooltipItem","horizontalBarChartTooltipName","horizontalBarChartTooltipValue","Table","table","LabelCell","BarFlex","BarsTd","td","TooltipFlexUI","StackSumContainer","StackSum","StackWrapper","Tooltip","rootElement","useTooltip","hideTooltip","unmountComponentAtNode","onMouseMove","barX","barY","visibility","render","useStackWrapper","mouseLeave","onMouseOver","onMouseOut","Fragment","BarStyled","Bar","bar","formatNativeTitle","pointerEventsNone","isFirstChild","isLastChild","isOnlyChild","ceiledWidth","pointerEvents","useScale","scaleTicks","scaleDomain","TickTd","Ticks","Tick","XScale","renderTicks","justifyContent","HorizontalBarChart","withStackSum","renderButton","renderDataTable","thead","withoutXScale","marshalingData","Stack","flat","rowIndex","stackSum","sumWidth","barIndex","bubbleChartDefaultProps","minSize","maxSize","yScaleLabelPadding","bubbleChartClassNames","bubbleChartYAxis","bubbleChartYAxisZeroTick","bubbleChartXAxis","bubbleChartGridGlobal","bubbleChartGridLineX","bubbleChartGridLineY","bubbleChartCircle","bubbleChartYScaleLabel","bubbleChartTooltip","bubbleChartTooltipContainer","bubbleChartTooltipFlex","bubbleChartTip","bubbles","root","sizeValue","circle","currentTarget","pageXOffset","pageYOffset","minYValue","maxYValue","scaleLog","bubbleStyle","yScaleLabel","enableTooltip","minY","yValue","maxY","sizeScale","yRange1","yScaleLabelHeight","xValue","unmount","BubbleChart"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"charts.cjs.development.js","sources":["../src/common/components/Wrapper.ts","../src/hooks/useNode.ts","../src/helpers/throttle.ts","../src/hooks/useResize.ts","../src/helpers/appendSvg.ts","../src/common/components/SwipeScroll/styled.ts","../src/common/components/SwipeScroll/animate.ts","../src/common/components/SwipeScroll/hooks/useSwipe.ts","../src/common/components/SwipeScroll/index.tsx","../src/charts/RadarChart/helpers.ts","../src/charts/RadarChart/drawRadialLabels/styled.ts","../src/charts/RadarChart/drawRadialLabels/index.tsx","../src/common/components/labels/index.ts","../src/charts/RadarChart/styled.ts","../src/charts/RadarChart/draw.tsx","../src/charts/RadarChart/index.tsx","../src/helpers/math.ts","../src/charts/PieChart/styled.ts","../src/charts/PieChart/drawRadialLabels/helpers.ts","../src/charts/PieChart/drawRadialLabels/index.tsx","../src/common/components/tooltips/index.ts","../src/charts/PieChart/drawTooltips/index.tsx","../src/charts/PieChart/draw.tsx","../src/charts/PieChart/index.tsx","../src/helpers/getLegend/index.ts","../src/charts/CalendarChart/styled.ts","../src/charts/CalendarChart/draw.ts","../src/charts/CalendarChart/index.tsx","../src/helpers/computeDimensions.ts","../src/helpers/common.ts","../src/helpers/stackedData.ts","../src/charts/LineChart/styled.ts","../src/charts/LineChart/drawGrid/index.ts","../src/charts/LineChart/drawLabel/styled.ts","../src/charts/LineChart/drawLabel/index.tsx","../src/charts/LineChart/drawTooltip/index.tsx","../src/charts/LineChart/draw.ts","../src/charts/LineChart/index.tsx","../src/charts/BarChart/drawLines/index.ts","../src/charts/BarChart/styled.ts","../src/charts/BarChart/hooks/useSelection.ts","../src/charts/BarChart/drawGrid/index.ts","../src/charts/BarChart/getDomain.ts","../src/charts/BarChart/marshaling.ts","../src/charts/BarChart/drawTooltip/getLabelY.ts","../src/charts/BarChart/drawTooltip/getLabel.tsx","../src/charts/BarChart/drawTooltip/index.tsx","../src/charts/BarChart/resizeBarWidth/index.ts","../src/charts/BarChart/getBars/index.ts","../src/charts/BarChart/draw.ts","../src/charts/BarChart/index.tsx","../src/charts/HorizontalBarChart/hooks/useMarshaling.ts","../src/charts/HorizontalBarChart/styled.ts","../src/charts/HorizontalBarChart/Tooltip/index.tsx","../src/charts/HorizontalBarChart/hooks/useTooltip/index.tsx","../src/charts/HorizontalBarChart/hooks/useStackWrapper.tsx","../src/charts/HorizontalBarChart/Bar/styled.ts","../src/charts/HorizontalBarChart/Bar/index.tsx","../src/charts/HorizontalBarChart/XScale/hooks/useScale.ts","../src/charts/HorizontalBarChart/XScale/styled.ts","../src/charts/HorizontalBarChart/XScale/index.tsx","../src/charts/HorizontalBarChart/index.tsx","../src/charts/BubbleChart/bubbleChartDefaultProps.ts","../src/charts/BubbleChart/styled.ts","../src/charts/BubbleChart/drawGrid/index.ts","../src/charts/BubbleChart/drawTooltip/styled.ts","../src/charts/BubbleChart/drawTooltip/index.tsx","../src/charts/BubbleChart/draw.ts","../src/charts/BubbleChart/unmount.ts","../src/charts/BubbleChart/index.tsx"],"sourcesContent":["import styled from 'styled-components';\n\nexport const Wrapper = styled.div`\n position: relative;\n width: 100%;\n box-sizing: border-box;\n`;\n","import { PropsWithRef, useCallback, useState } from 'react';\n\nexport function useNode(): [PropsWithRef<any>, HTMLElement | null] {\n const [node, onSetNode] = useState<HTMLElement | null>(null);\n\n const ref = useCallback(onSetNode, [onSetNode]);\n\n return [ref, node];\n}\n","export function throttle(fn: Function, wait: number) {\n let isCalled = false;\n\n return function(...args: any) {\n if (!isCalled) {\n fn(...args);\n isCalled = true;\n setTimeout(function() {\n isCalled = false;\n }, wait);\n }\n };\n}\n","import { useEffect, useMemo } from 'react';\n\nimport { throttle } from '../helpers/throttle';\n\nconst THROTTLE_DELAY = 44;\n\nexport const useResize = (\n width?: number,\n callback?: (...args: any) => any,\n delay?: number\n) => {\n const throttledCallback: VoidFunction | undefined = useMemo(() => {\n return callback ? throttle(callback, delay || THROTTLE_DELAY) : undefined;\n }, [callback, delay]);\n\n useEffect(() => {\n throttledCallback &&\n typeof width !== 'number' &&\n window.addEventListener('resize', throttledCallback);\n\n return () =>\n throttledCallback &&\n window.removeEventListener('resize', throttledCallback);\n }, [width, throttledCallback]);\n};\n","import * as d3 from 'd3';\n\nexport const appendSvg = (node: HTMLElement, width: number, height: number) => {\n d3.select(node)\n .select('svg')\n .remove();\n\n const svg = d3\n .select(node)\n .append('svg')\n .attr('width', width)\n .attr('height', height);\n\n return svg;\n};\n","import styled from 'styled-components';\n\nexport const SwipeScrollContainer = styled.div`\n width: 100%;\n overflow: hidden;\n user-select: none;\n`;\n","export function animate({\n duration,\n timing,\n draw,\n}: {\n duration: number;\n timing: (n: number) => number;\n draw: (progress: number, requestId: number) => void;\n}): void {\n const start = performance.now();\n let requestId: number;\n\n requestAnimationFrame(function requestAnimate(time) {\n let timeFraction = (time - start) / duration;\n\n if (timeFraction < 1) {\n requestId = requestAnimationFrame(requestAnimate);\n }\n\n if (timeFraction > 1) cancelAnimationFrame(requestId);\n const progress = timing(timeFraction);\n\n draw(progress, requestId);\n });\n}\n\nexport const easeOutQuad = (time: number): number => time * (2 - time);\n","import { useEffect, useRef, useCallback } from 'react';\nimport * as d3 from 'd3';\n\nimport { animate, easeOutQuad } from '../animate';\n\nimport { SwipeScrollProps } from '../types';\n\nconst range = (num: number, min: number, max: number) =>\n Math.min(Math.max(num, min), max);\n\nconst defaultRefs = {\n animation: 0,\n speed: 0,\n timestamp: 0,\n startX: 0,\n currentX: 0,\n};\n\nexport const useSwipe = (\n node: HTMLElement | null,\n { width, duration, animationFunc, onSwipe }: SwipeScrollProps\n) => {\n const container = d3.select(node);\n const body = d3.select('body');\n const documentSelect = d3.select(document);\n const refs = useRef(defaultRefs);\n\n useEffect(() => {\n if (width && refs.current.animation) {\n cancelAnimationFrame(refs.current.animation);\n refs.current = defaultRefs;\n }\n }, [width]);\n\n const onMove = useCallback(\n event => {\n const { width: nodeWidth } = node\n ? node.getBoundingClientRect()\n : { width: 0 };\n const [x] = d3.pointer(\n event.type.includes('touch') ? event.touches[0] : event\n );\n const newX = x - refs.current.startX;\n const maxX = width - nodeWidth;\n const translateX = range(newX, -maxX, 0);\n\n container.style('transform', `translateX(${translateX}px)`);\n\n if (refs.current.currentX) {\n const hundred = 100;\n const now = Date.now();\n const dt = now - refs.current.timestamp;\n const dx = translateX - refs.current.currentX;\n const speedX = Math.round((dx / dt) * hundred);\n\n refs.current.speed = speedX;\n refs.current.timestamp = now;\n }\n\n refs.current.currentX = translateX;\n\n onSwipe && onSwipe(translateX, container);\n },\n [onSwipe, width, node, container]\n );\n\n const onEnd = useCallback(() => {\n const { width: nodeWidth } = node\n ? node.getBoundingClientRect()\n : { width: 0 };\n\n documentSelect.on(\n 'mousemove.swipe touchmove.swipe mouseup.swipe touchend.swipe',\n null\n );\n body.style('cursor', null);\n if (width > nodeWidth) {\n container.style('cursor', 'grab');\n } else {\n container.style('cursor', null);\n }\n\n const dt = Date.now() - refs.current.timestamp;\n const dtEnd = 44;\n\n if (dt < dtEnd) {\n animate({\n duration: duration as number,\n timing: animationFunc || easeOutQuad,\n draw: (progress, requestId) => {\n refs.current.animation = requestId;\n const px = Math.round(refs.current.speed * 2 * progress);\n const currX = refs.current.currentX + px;\n const maxX = width - nodeWidth;\n const translateX = range(currX, -maxX, 0);\n\n const transX = Math.max(Math.min(currX, maxX), 0);\n\n if (refs.current.currentX !== transX) {\n container.style('transform', `translateX(${translateX}px)`);\n\n onSwipe && onSwipe(translateX, container);\n }\n },\n });\n }\n }, [\n body,\n animationFunc,\n onSwipe,\n container,\n duration,\n node,\n width,\n documentSelect,\n ]);\n\n const onStart = useCallback(\n event => {\n const isTouch = event.type.includes('touch');\n const [x] = d3.pointer(isTouch ? event.touches[0] : event, node);\n\n const { left } =\n node && node.parentElement\n ? node.parentElement.getBoundingClientRect()\n : { left: 0 };\n body.style('cursor', 'grabbing');\n container.style('cursor', 'grabbing');\n\n if (refs.current.animation) {\n cancelAnimationFrame(refs.current.animation);\n refs.current = defaultRefs;\n }\n\n refs.current.startX = Math.max(x + left, 0);\n documentSelect.on('mousemove.swipe touchmove.swipe', onMove);\n documentSelect.on('mouseup.swipe touchend.swipe', onEnd);\n },\n [container, body, node, onEnd, onMove, documentSelect]\n );\n\n useEffect(() => {\n if (node) {\n const { width: nodeWidth } = node.getBoundingClientRect();\n\n if (width > nodeWidth) {\n container.style('cursor', 'grab');\n container.on('mousedown.swipe touchstart.swipe', onStart);\n }\n }\n }, [container, onStart, node, width]);\n};\n","import React from 'react';\n\nimport { SwipeScrollContainer } from './styled';\n\nimport { useNode } from '../../../hooks';\nimport { useSwipe } from './hooks/useSwipe';\n\nimport { SwipeScrollProps } from './types';\n\nexport const SwipeScroll: React.FC<SwipeScrollProps> = ({\n children,\n width,\n onSwipe,\n ...props\n}): React.ReactElement => {\n const [ref, draggingNode] = useNode();\n\n useSwipe(draggingNode, { width, onSwipe, ...props });\n\n return (\n <SwipeScrollContainer {...props}>\n <div ref={ref}>{children}</div>\n </SwipeScrollContainer>\n );\n};\n\nSwipeScroll.defaultProps = {\n duration: 1400,\n};\n","const degByIndex = (index: number, count: number): number => {\n const degs = 360;\n const deg = (degs / count) * index;\n\n return deg;\n};\n\nexport const getTextAnchor = (\n index: number,\n length: number\n): 'start' | 'middle' | 'end' => {\n const deg = degByIndex(index, length);\n const halfAngle = 180;\n\n if ([0, halfAngle].includes(deg)) {\n return 'middle';\n }\n if (deg < halfAngle) {\n return 'start';\n }\n\n return 'end';\n};\n\nexport const getMaxWidth = (elements: SVGElement[]) => {\n let maxWidth = 0;\n\n for (let i = 0; i < elements.length; i++) {\n const element = elements[i];\n\n if (element && 'getBoundingClientRect' in element) {\n maxWidth = Math.max(maxWidth, element.getBoundingClientRect().width);\n }\n }\n\n return maxWidth;\n};\n","import styled from 'styled-components';\n\nimport { LabelContainerProps } from './types';\n\nconst getTranslate = ({\n anchor,\n index,\n translateX,\n translateY,\n}: LabelContainerProps) => {\n if (index === 0 && anchor === 'middle') {\n return `translate(calc(-50% + ${translateX}px), calc(-100% + ${translateY}px))`;\n } else if (anchor === 'middle') {\n return `translate(calc(-50% + ${translateX}px), calc(${translateY}px))`;\n } else if (anchor === 'start') {\n return `translate(calc(${translateX}px), calc(-50% + ${translateY}px))`;\n } else if (anchor === 'end') {\n return `translate(calc(-100% + ${translateX}px), calc(-50% + ${translateY}px))`;\n }\n return `translate(${translateX}px, ${translateY}px)`;\n};\n\nexport const LabelContainer = styled.div.attrs<LabelContainerProps>(props => ({\n style: {\n transform: getTranslate(props),\n },\n}))<LabelContainerProps>`\n position: absolute;\n`;\n","import * as d3 from 'd3';\nimport ReactDOMServer from 'react-dom/server';\nimport React from 'react';\n\nimport { DrawRadialLabels } from './types';\n\nimport { getTextAnchor } from '../helpers';\nimport { LabelContainer } from './styled';\n\nconst labelClassName = 'd3-chart-label';\n\nexport const drawRadialLabels = ({\n node,\n dataLength,\n radiusScale,\n maxValue,\n angleSlice,\n radius,\n xOffset,\n yOffset,\n translateX,\n translateY,\n renderLabel,\n selectLabel,\n}: DrawRadialLabels) => {\n const d3container = d3.select(node);\n d3container.selectAll(`.${labelClassName}`).remove();\n\n const pxToValue = (value: number) => (maxValue / radius) * value;\n const axisX = (i: number) =>\n (radiusScale(maxValue + pxToValue(xOffset || 0)) as number) *\n Math.cos(angleSlice * i - Math.PI / 2);\n\n const axisY = (i: number) =>\n radiusScale(\n (maxValue + pxToValue(yOffset || 0)) *\n Math.sin(angleSlice * i - Math.PI / 2)\n ) as number;\n\n const labels = Array.from({ length: dataLength }, (_, index) => ({\n x: Math.ceil(axisX(index)),\n y: Math.ceil(axisY(index)),\n }));\n\n labels.forEach(({ x, y }: { x: number; y: number }, index: number) => {\n const anchor = getTextAnchor(index, dataLength);\n const html = ReactDOMServer.renderToString(\n <LabelContainer\n anchor={anchor}\n translateX={translateX || 0}\n translateY={translateY || 0}\n index={index}\n style={{\n left: x,\n top: y,\n }}\n >\n {typeof renderLabel === 'function'\n ? renderLabel(anchor, index)\n : renderLabel}\n </LabelContainer>\n );\n\n const label = d3container\n .append('div')\n .attr('class', labelClassName)\n .html(html);\n\n selectLabel(label, anchor, index);\n });\n};\n","import styled, { css } from 'styled-components';\n\nimport { LabelContainerProps } from './types';\n\nexport const getTranslate = ({\n anchor,\n index,\n translateX,\n translateY,\n}: LabelContainerProps) => {\n if (index === 0 && anchor === 'middle') {\n return `translate(calc(-50% + ${translateX}px), calc(-100% + ${translateY}px))`;\n } else if (anchor === 'middle') {\n return `translate(calc(-50% + ${translateX}px), calc(${translateY}px))`;\n } else if (anchor === 'start') {\n return `translate(calc(${translateX}px), calc(-50% + ${translateY}px))`;\n } else if (anchor === 'end') {\n return `translate(calc(-100% + ${translateX}px), calc(-50% + ${translateY}px))`;\n }\n return `translate(${translateX}px, ${translateY}px)`;\n};\n\nexport const Label = styled.div`\n display: flex;\n align-items: center;\n font-size: 12px;\n`;\n\nexport const Name = styled.div`\n text-align: center;\n max-width: 120px;\n`;\n\nconst middleBadgeStyles = css`\n position: absolute;\n top: 50%;\n right: 0;\n transform: translate(calc(100% + 6px), -50%);\n`;\n\nexport const DefaultBadge = styled.div`\n display: flex;\n align-items: center;\n padding: 2px 4px;\n border-radius: 4px;\n color: rgb(255, 255, 255);\n background-color: rgb(144, 197, 61);\n margin-left: 8px;\n`;\n\nexport const MiddleBadge = styled(DefaultBadge)`\n ${middleBadgeStyles}\n`;\n\nexport const BadgePrefix = styled.div`\n margin-left: 4px;\n font-size: 10px;\n color: rgba(255, 255, 255, 0.54);\n`;\n","import styled from 'styled-components';\n\nimport { Wrapper } from '../../common/components/Wrapper';\n\nexport const radarChartclassNames = {\n radar: 'radar',\n radarAxis: 'radarAxis',\n radarAxisTextGlobal: 'radarAxisTextGlobal',\n radarAxisText: 'radarAxisText',\n radarPolygon: 'radarPolygon',\n radarLabel: 'radarLabel',\n radarLabelName: 'radarLabelName',\n radarLabelBadge: 'radarLabelBadge',\n radarLabelBadgePrefix: 'radarLabelBadgePrefix',\n radarCircle: 'radarCircle',\n};\n\nexport const SvgWrapper = styled(Wrapper)`\n .${radarChartclassNames.radarAxis} {\n path,\n line,\n circle {\n fill: none;\n stroke-width: 1px;\n stroke: rgba(149, 149, 149, 0.18);\n }\n }\n .${radarChartclassNames.radarAxisText} {\n font-size: 12px;\n fill-opacity: 0.56;\n }\n .${radarChartclassNames.radarPolygon} {\n fill-opacity: 0.06;\n stroke-width: 2px;\n fill: rgb(144, 197, 61);\n stroke: rgb(144, 197, 61);\n }\n .${radarChartclassNames.radarCircle} {\n fill: rgb(144, 197, 61);\n }\n`;\n","import React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport * as d3 from 'd3';\n\nimport { RadarChartProps } from './types';\n\nimport { appendSvg } from '../../helpers';\nimport { drawRadialLabels } from './drawRadialLabels';\n\nimport {\n Label,\n MiddleBadge,\n DefaultBadge,\n Name,\n BadgePrefix,\n} from '../../common/components/labels';\nimport { radarChartclassNames } from './styled';\n\nexport const draw = (\n node: HTMLElement | null,\n props: RadarChartProps\n): void => {\n const {\n data,\n curve,\n polar,\n formatValue,\n badgePrefix,\n labelOffset,\n circleRadius,\n svgElements,\n renderLabel,\n customize,\n formatAxisValue,\n radarStyles,\n labelIndex,\n selectLabel,\n } = props;\n\n if (node !== null && data.length) {\n const defaultBleedLength = 10;\n const bleedLength =\n typeof props.bleedLength === 'number'\n ? props.bleedLength\n : defaultBleedLength;\n\n const { width: nodeWidth } = node.getBoundingClientRect();\n const width = props.width || nodeWidth;\n const defaultHeight = 400;\n const height = props.height || defaultHeight;\n\n const minValue =\n props.minValue ||\n Math.min(\n 0,\n d3.min(data, i => d3.min(i.map(({ value }) => value))) as number\n );\n const maxValue =\n (props.maxValue ||\n Math.max(\n 0,\n d3.max(data, i => d3.max(i.map(({ value }) => value))) as number\n )) - minValue;\n const paddingX = props.paddingX || 0;\n const paddingY = props.paddingY || 0;\n const radius = Math.min(\n (width - paddingX * 2 - bleedLength * 2) / 2,\n (height - paddingY * 2 - bleedLength * 2) / 2\n );\n\n const defaultLevels = 4;\n const ticks = d3\n .scaleLinear()\n .domain([0, maxValue || 1])\n .range([])\n .ticks(props.levels || defaultLevels);\n const lastTick = ticks[ticks.length - 1];\n const newLastTick = lastTick + (ticks[1] - ticks[0]);\n\n if (lastTick < maxValue) {\n ticks.push(newLastTick);\n }\n\n const levels = props.levels || ticks.length - 1;\n const newMaxValue = ticks[ticks.length - 1];\n const angleSlice = (Math.PI * 2) / data[0].length;\n\n const radiusScale = d3\n .scaleLinear()\n .range([0, radius])\n .domain([0, newMaxValue]);\n\n const radarLine = d3\n .lineRadial()\n .curve(d3.curveLinearClosed)\n // @ts-ignore\n .radius(({ value }) => radiusScale(value) as number)\n .angle((_, i) => i * angleSlice);\n const radarValue = d3\n .lineRadial()\n .curve(curve || d3.curveLinearClosed)\n // @ts-ignore\n .radius(({ value }) => radiusScale(value) as number)\n .angle((_, i) => i * angleSlice);\n\n const svg = appendSvg(node, width, height);\n const globalCenter = svg.append('g');\n\n const levelsGrid = d3.range(1, levels + 1).reverse();\n const axisGridY = (value: number) => (-value * radius) / levels;\n const getAxisValue = (value: number) => (newMaxValue * value) / levels;\n\n const gridGlobal = globalCenter\n .append('g')\n .attr('class', radarChartclassNames.radarAxis)\n .selectAll()\n .data([data[0]])\n .enter();\n\n const radarGlobal = globalCenter\n .append('g')\n .attr('class', radarChartclassNames.radar);\n\n const axis = gridGlobal\n .selectAll()\n .data(data[0].map(({ name }) => name))\n .enter();\n\n let maxGridHeight = 0;\n\n if (polar) {\n levelsGrid.forEach(value => {\n const path = gridGlobal\n .append('circle')\n .attr('cx', 0)\n .attr('cy', 0)\n .attr('r', () => (radius / levels) * value);\n\n const circleNode = path.node() as SVGCircleElement;\n const circleHeight = circleNode.getBoundingClientRect().height;\n maxGridHeight = Math.max(maxGridHeight, circleHeight);\n });\n } else {\n levelsGrid.map(getAxisValue).forEach(value => {\n const path = gridGlobal.append('path').attr('d', () =>\n // @ts-ignore\n radarLine(Array.from({ length: data[0].length }, () => ({ value })))\n );\n const pathNode = path.node() as SVGPathElement;\n const pathHeight = pathNode.getBoundingClientRect().height;\n maxGridHeight = Math.max(maxGridHeight, pathHeight);\n });\n }\n\n const radiusByMaxValue = (radiusScale(newMaxValue) as number) + bleedLength;\n\n axis\n .append('line')\n .attr('x1', 0)\n .attr('y1', 0)\n .attr('x2', (_, i) =>\n Math.round(radiusByMaxValue * Math.cos(angleSlice * i - Math.PI / 2))\n )\n .attr('y2', (_, i) =>\n Math.round(radiusByMaxValue * Math.sin(angleSlice * i - Math.PI / 2))\n );\n\n radarGlobal\n .selectAll('path')\n .data(data)\n .join('path')\n .attr('class', radarChartclassNames.radarPolygon)\n .attr('style', (_, index) => radarStyles?.[index] || '')\n .attr('d', d =>\n radarValue(\n // @ts-ignore\n d.map(dataItem => ({\n ...dataItem,\n value: dataItem.value - minValue,\n }))\n )\n );\n\n const format = d3.format(',');\n const axisTextGlobal = globalCenter\n .append('g')\n .attr('class', radarChartclassNames.radarAxisTextGlobal);\n axisTextGlobal\n .selectAll('text')\n .data(levelsGrid)\n .enter()\n .append('text')\n .attr('class', radarChartclassNames.radarAxisText)\n .attr('x', '4')\n .attr('y', axisGridY)\n .attr('dy', 0)\n .attr('dominant-baseline', 'central')\n .text((value, index) => {\n const axisValue = getAxisValue(value) + minValue;\n\n return formatAxisValue\n ? formatAxisValue(axisValue, index)\n : format(axisValue);\n });\n\n circleRadius &&\n data.forEach(item => {\n const circleGlobal = globalCenter\n .append('g')\n .attr('class', radarChartclassNames.radarCircle);\n\n item.forEach(({ value }, i) => {\n circleGlobal\n .append('circle')\n .attr(\n 'cx',\n Math.round(\n (radiusScale(value) as number) *\n Math.cos(angleSlice * i - Math.PI / 2)\n )\n )\n .attr(\n 'cy',\n Math.round(\n radiusScale(\n value * Math.sin(angleSlice * i - Math.PI / 2)\n ) as number\n )\n )\n .attr('r', circleRadius);\n });\n });\n\n const defaultLabelOffset = 8;\n const heightInner = height - bleedLength - paddingY;\n const translateX = width / 2;\n const translateY = heightInner / 2 + (heightInner - maxGridHeight) / 2;\n const offset = bleedLength + (labelOffset || defaultLabelOffset);\n\n globalCenter.attr('transform', `translate(${translateX},${translateY})`);\n\n drawRadialLabels({\n node,\n maxValue: newMaxValue,\n translateX,\n translateY,\n dataLength: data[labelIndex || 0].length,\n angleSlice,\n radius,\n radiusScale,\n xOffset: offset,\n yOffset: offset,\n renderLabel: (anchor, index) => {\n const items = data.map(item => item[index]);\n const Badge = anchor === 'middle' ? MiddleBadge : DefaultBadge;\n const item = data[labelIndex || 0][index];\n const { name, value } = item;\n\n return renderLabel ? (\n renderLabel({ item, items, anchor, index })\n ) : (\n <Label className={radarChartclassNames.radarLabel}>\n <Name className={radarChartclassNames.radarLabelName}>{name}</Name>\n <Badge className={radarChartclassNames.radarLabelBadge}>\n {formatValue ? formatValue(value, index) : format(value)}\n {badgePrefix && (\n <BadgePrefix\n className={radarChartclassNames.radarLabelBadgePrefix}\n >\n {badgePrefix}\n </BadgePrefix>\n )}\n </Badge>\n </Label>\n );\n },\n selectLabel: (label, anchor, index) => {\n if (selectLabel) {\n const items = data.map(item => item[index]);\n const item = data[labelIndex || 0][index];\n\n selectLabel(label, { index, item, items, anchor });\n }\n },\n });\n\n if (svgElements) {\n const html = ReactDOMServer.renderToString(svgElements);\n\n svg.append('g').html(html);\n }\n\n customize && customize(svg);\n }\n};\n","import React, { useEffect } from 'react';\nimport * as d3 from 'd3';\n\nimport { RadarChartProps } from './types';\n\nimport { useNode } from '../../hooks';\nimport { useResize } from '../../hooks';\n\nimport { draw } from './draw';\n\nimport { SvgWrapper } from './styled';\n\nexport const RadarChart: React.FC<RadarChartProps> = (\n props\n): React.ReactElement => {\n const { className, style } = props;\n const [ref, node] = useNode();\n\n useEffect(() => {\n node && draw(node, props);\n }, [node, props]);\n\n const onDraw = () => draw(node, props);\n\n useResize(props.width, onDraw);\n\n return (\n <div className={className} style={style}>\n <SvgWrapper ref={ref} />\n </div>\n );\n};\n\nRadarChart.defaultProps = {\n height: 400,\n data: [],\n curve: d3.curveLinearClosed,\n};\n","export function radiansToDegrees(radians: number): number {\n const flatAngle = 180;\n\n return (radians * flatAngle) / Math.PI;\n}\n\nexport function degreesToRadians(degrees: number): number {\n const flatAngle = 180;\n\n return degrees * (Math.PI / flatAngle);\n}\n","import styled from 'styled-components';\n\nimport { Wrapper } from '../../common/components/Wrapper';\n\nexport const pieChartclassNames = {\n pieGlobal: 'pieGlobal',\n pieSlice: 'pieSlice',\n pieSliceLabel: 'pieSliceLabel',\n pieSliceLabelValue: 'pieSliceLabelValue',\n pieSliceLabelName: 'pieSliceLabelName',\n pieRadialLabel: 'pieRadialLabel',\n pieRadialLink: 'pieRadialLink',\n pieTooltipContainer: 'pieTooltipContainer',\n pieTooltipFlex: 'pieTooltipFlex',\n pieTooltip: 'pieTooltip',\n pieTooltipItem: 'pieTooltipItem',\n pieTooltipName: 'pieTooltipName',\n pieTooltipValue: 'pieTooltipValue',\n pieTooltipColorBox: 'pieTooltipColorBox',\n pieFullChartTooltipCircle: 'pieFullChartTooltipCircle',\n};\n\nexport const SvgWrapper = styled(Wrapper)`\n .${pieChartclassNames.pieSliceLabel} {\n fill: #4a4a4a;\n }\n .${pieChartclassNames.pieRadialLabel} {\n position: absolute;\n max-width: 128px;\n }\n .${pieChartclassNames.pieRadialLink} {\n stroke: #000;\n }\n .${pieChartclassNames.pieFullChartTooltipCircle} {\n fill: transparent;\n cursor: pointer;\n }\n`;\n","import { PieChartDatum } from '../types';\n\nexport const getMidFactor = (d: PieChartDatum) =>\n d.startAngle + (d.endAngle - d.startAngle) / 2 < Math.PI ? 1 : -1;\n\nexport const getAlign = (d: PieChartDatum): 'start' | 'end' => {\n const midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\n\n return midangle < Math.PI ? 'start' : 'end';\n};\n","import * as d3 from 'd3';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { DrawRadialLabels } from './types';\nimport { PieChartDatum } from '../types';\n\nimport { pieChartclassNames } from '../styled';\nimport { getMidFactor, getAlign } from './helpers';\nimport { getTranslate } from '../../../common/components/labels';\n\nexport const drawRadialLabels = ({\n arc,\n enableRadialLabels,\n global,\n node,\n radius,\n dataReady,\n radialLabelsLinkHorizontalLength,\n formatRadialLabel,\n radialLabelsTextXOffset,\n translateX,\n translateY,\n radialLabelYOffset,\n radialAngleXOffset,\n}: DrawRadialLabels): void => {\n const d3container = d3.select(node);\n d3container.selectAll(`.${pieChartclassNames.pieRadialLabel}`).remove();\n\n if (enableRadialLabels) {\n const defaultRadialLabelsLinkHorizontalLength = 4;\n const outerArc = d3\n .arc()\n .innerRadius(radius)\n .outerRadius(radius);\n\n global\n .selectAll('allPolylines')\n .data(dataReady)\n .enter()\n .append('polyline')\n .attr('class', pieChartclassNames.pieRadialLink)\n .style('fill', 'none')\n .attr('points', (d: PieChartDatum) => {\n const midFactor = getMidFactor(d);\n const posA = arc.centroid(d);\n const posB = outerArc.centroid(d);\n const posC = outerArc.centroid(d);\n const posCPi = [\n (radius +\n (radialLabelsLinkHorizontalLength ||\n defaultRadialLabelsLinkHorizontalLength)) *\n midFactor,\n posC[1],\n ];\n return [\n [posA[0], posA[1]],\n [\n posB[0] + (radialAngleXOffset || 0) * midFactor,\n posB[1] - (radialLabelYOffset || 0) * d.index,\n ],\n [posCPi[0], posCPi[1] - (radialLabelYOffset || 0) * d.index],\n ];\n });\n\n const getPosition = (d: PieChartDatum): [number, number] => {\n const pos = outerArc.centroid(d);\n return [\n (radius +\n (radialLabelsLinkHorizontalLength ||\n defaultRadialLabelsLinkHorizontalLength)) *\n getMidFactor(d),\n pos[1],\n ];\n };\n\n const defaultRadialLabelsTextXOffset = 4;\n d3container\n .selectAll('allLabels')\n .data(dataReady)\n .enter()\n .append('div')\n // @ts-ignore\n .html((d: PieChartDatum) => {\n const html = ReactDOMServer.renderToString(\n // @ts-ignore\n formatRadialLabel ? formatRadialLabel(d) : d.data.name\n );\n\n return html;\n })\n .attr('class', pieChartclassNames.pieRadialLabel)\n // @ts-ignore\n .style('transform', (d: PieChartDatum) =>\n getTranslate({\n anchor: getAlign(d),\n index: d.index,\n translateX,\n translateY: translateY - (radialLabelYOffset || 0) * d.index,\n })\n )\n // @ts-ignore\n .style(\n 'left',\n // @ts-ignore\n (d: PieChartDatum) =>\n `${getPosition(d)[0] -\n (getAlign(d) === 'start'\n ? -(radialLabelsTextXOffset || defaultRadialLabelsTextXOffset)\n : radialLabelsTextXOffset || defaultRadialLabelsTextXOffset)}px`\n )\n // @ts-ignore\n .style('top', (d: PieChartDatum) => `${getPosition(d)[1]}px`)\n // @ts-ignore\n .style('text-align', getAlign);\n }\n};\n","import styled from 'styled-components';\n\nexport const TooltipFlex = styled.div`\n width: 0;\n height: 0;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n pointer-events: none;\n white-space: nowrap;\n`;\n\nexport const LabelFlex = styled(TooltipFlex)``;\n\nexport const LabelFlexCenter = styled(LabelFlex)`\n align-items: center;\n`;\n\nexport const TooltipContainer = styled.div`\n position: relative;\n font-size: 11px;\n color: #fff;\n margin-bottom: 8px;\n padding: 4px 6px;\n background-color: rgba(48, 69, 79, 1);\n border-radius: 4px;\n box-shadow: 0 0.1875rem 0.5rem rgba(48, 69, 79, 0.06);\n :before {\n content: '';\n position: absolute;\n bottom: 0;\n left: 50%;\n transform: translate(-50%, 100%);\n width: 0;\n height: 0;\n border-style: solid;\n border-width: 4px 3px 0 3px;\n border-color: rgba(48, 69, 79, 1) transparent transparent transparent;\n }\n`;\n\nexport const TooltipGroupName = styled.div`\n font-size: 14px;\n margin-bottom: 6px;\n`;\n\nexport const TooltipItem = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 0.25rem;\n &:last-of-type {\n margin-bottom: 0;\n }\n`;\n\nexport const ColFlex = styled.div`\n display: flex;\n align-items: center;\n margin-right: 4px;\n`;\n\nexport const ColorBox = styled.div`\n margin-right: 4px;\n width: 10px;\n height: 10px;\n border-radius: 2px;\n`;\n\nexport const ColorLine = styled(ColorBox)`\n height: 2px;\n border-radius: 0;\n`;\n\nexport const Name = styled.div`\n margin-right: 4px;\n`;\n\nexport const Value = styled.div`\n text-align: right;\n flex-shrink: 0;\n flex-grow: 1;\n`;\n\nexport const Label = styled.div`\n position: relative;\n font-size: 11px;\n color: #fff;\n font-weight: bold;\n letter-spacing: 0.52px;\n`;\n\nexport const LabelTop = styled(Label)`\n top: 6px;\n`;\n\nexport const LabelBottom = styled(Label)`\n bottom: 6px;\n`;\n","import React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport * as d3 from 'd3';\n\nimport { pieChartclassNames as classNames } from '../styled';\n\nimport { DrawTooltipProps } from './types';\n\nimport {\n TooltipContainer,\n TooltipFlex,\n TooltipItem,\n Value,\n Name,\n ColorBox,\n} from '../../../common/components/tooltips';\nimport { PieChartData, PieChartDatum } from '../types';\n\nexport const drawTooltip = ({\n fullChartTooltip,\n global,\n tooltipRoot,\n data,\n tooltipClassName,\n tooltipBind,\n renderTooltip,\n arc,\n allSlices,\n tooltipStyle,\n width,\n height,\n radius,\n}: DrawTooltipProps) => {\n const container: Element | null =\n tooltipRoot || document.querySelector('body');\n const format = d3.format(',');\n const pieTooltipContainer: d3.Selection<\n HTMLDivElement,\n unknown,\n null,\n undefined\n > = d3.select(container).select(`.${classNames.pieTooltipContainer}`);\n const isEmpty = pieTooltipContainer.empty();\n\n const tooltipContainer = isEmpty\n ? d3\n .select(container)\n .append('div')\n .attr(\n 'class',\n `${classNames.pieTooltipContainer} ${tooltipClassName || ''}`\n )\n .style('position', 'absolute')\n .style('opacity', '0')\n .style('z-index', '103')\n : pieTooltipContainer;\n\n if (tooltipStyle) {\n Object.entries(tooltipStyle).forEach(([prop, val]) =>\n tooltipContainer.style(prop, val)\n );\n }\n\n tooltipContainer.html('');\n let isVisible = false;\n\n const setVisible = (visible?: boolean) => {\n isVisible = Boolean(visible);\n const opacity = isVisible ? '1' : '0';\n tooltipContainer.style('opacity', opacity);\n };\n\n const setPosition = (event: any, pieChartDatum?: PieChartDatum) => {\n let [x, y] = d3.pointer(event, document);\n\n if (!tooltipBind && fullChartTooltip) {\n const [itemX, itemY] = d3.pointer(event, event.target);\n\n x = x - itemX;\n y = y - itemY;\n } else if (!tooltipBind) {\n const globalNode = global.node();\n const {\n x: itemX,\n y: itemY,\n width: itemWidth,\n height: itemHeight,\n } = globalNode\n ? globalNode.getBoundingClientRect()\n : { x: 0, y: 0, width: 0, height: 0 };\n const [arcX, arcY] = arc.centroid(pieChartDatum as d3.DefaultArcObject);\n x = itemX + itemWidth / 2 + arcX;\n y = itemY + itemHeight / 2 + arcY;\n }\n\n tooltipContainer.style('left', x + 'px').style('top', y + 'px');\n };\n\n const setTooltip = (event: any, pieChartDatum?: PieChartDatum) => {\n setVisible(true);\n setPosition(event, pieChartDatum);\n const pieChartData = pieChartDatum ? [pieChartDatum.data] : data;\n\n tooltipContainer.html(() => {\n const html = ReactDOMServer.renderToString(\n <TooltipFlex className={classNames.pieTooltipFlex}>\n <TooltipContainer className={classNames.pieTooltip}>\n {renderTooltip ? (\n renderTooltip(pieChartData)\n ) : (\n <>\n {pieChartData.map(\n ({ color, name, value }: PieChartData, index: number) => (\n <TooltipItem\n key={`${name}-${index}`}\n className={classNames.pieTooltipItem}\n >\n {color && (\n <ColorBox\n className={classNames.pieTooltipColorBox}\n style={{ backgroundColor: color }}\n />\n )}\n {name && (\n <Name className={classNames.pieTooltipName}>\n {name}\n </Name>\n )}\n <Value className={classNames.pieTooltipValue}>\n {format(value)}\n </Value>\n </TooltipItem>\n )\n )}\n </>\n )}\n </TooltipContainer>\n </TooltipFlex>\n );\n\n return html;\n });\n };\n\n if (fullChartTooltip) {\n global.on('mouseover.fulltooltip', event => setTooltip(event));\n global.on('mouseout.fulltooltip', () => {\n tooltipContainer.html('');\n setVisible();\n });\n\n if (width && height) {\n global\n .append('circle')\n .attr('class', classNames.pieFullChartTooltipCircle)\n .attr('r', radius)\n .attr('cx', 0)\n .attr('cy', 0);\n }\n\n if (!tooltipBind) {\n global.on('touchmove.tooltipBind mousemove.tooltipBind', event =>\n setPosition(event)\n );\n }\n } else {\n allSlices.on('mouseover.slice', setTooltip);\n if (!tooltipBind) {\n allSlices.on('touchmove.slice mousemove.slice', setPosition);\n }\n allSlices.on('mouseout.slice', () => {\n tooltipContainer.html('');\n setVisible();\n });\n }\n};\n","import * as d3 from 'd3';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { PieChartProps, PieChartDatum } from './types';\n\nimport { appendSvg } from '../../helpers';\nimport { degreesToRadians, radiansToDegrees } from '../../helpers/math';\nimport { drawRadialLabels } from './drawRadialLabels';\nimport { drawTooltip } from './drawTooltips';\n\nimport { pieChartclassNames } from './styled';\n\nexport const draw = (node: HTMLElement | null, props: PieChartProps): void => {\n const {\n data,\n padAngle,\n onClick,\n outerRadius,\n startAngle,\n endAngle,\n cornerRadius,\n margin,\n enableSlicesLabels,\n formatSliceLabel,\n slicesLabelsSkipAngle,\n enableSlicesLabelsName,\n formatSliceLabelName,\n borderWidth,\n borderColor,\n enableRadialLabels,\n backgroundColor,\n radialLabelsLinkHorizontalLength,\n radialLabelsTextXOffset,\n formatRadialLabel,\n radialLabelYOffset,\n svgElements,\n formatSliceTitle,\n radialAngleXOffset,\n withTooltip,\n fullChartTooltip,\n tooltipClassName,\n tooltipBind,\n renderTooltip,\n tooltipStyle,\n } = props;\n\n if (node !== null && data.length) {\n const marginTop = margin ? margin.top : 0;\n const marginRight = margin ? margin.right : 0;\n const marginBottom = margin ? margin.bottom : 0;\n const marginLeft = margin ? margin.left : 0;\n const { width: nodeWidth } = node.getBoundingClientRect();\n const width = props.width || nodeWidth;\n const defaultHeight = 240;\n const height = props.height || defaultHeight;\n const radius =\n (Math.min(width, height) -\n (borderWidth || 0) * 2 -\n (width > height\n ? marginTop + marginBottom\n : marginRight + marginLeft)) /\n 2;\n\n const svg = appendSvg(node, width, height);\n const global = svg\n .append('g')\n .attr('class', pieChartclassNames.pieGlobal)\n .attr(\n 'transform',\n `translate(${(width - (marginLeft + marginRight)) / 2 +\n marginLeft},${(height - (marginBottom + marginTop)) / 2 + marginTop})`\n );\n\n const maxPadAngle = 45;\n const dividerPadAngle = 100;\n const fullAngle = 360;\n\n const pie = d3\n .pie()\n .startAngle(-degreesToRadians(startAngle || 0))\n .endAngle(degreesToRadians(endAngle || fullAngle))\n .padAngle(\n padAngle\n ? Math.max(Math.min(padAngle / dividerPadAngle, maxPadAngle), 0)\n : 0\n )\n .sort(null)\n // @ts-ignore\n .value(({ value }) => value);\n\n // @ts-ignore\n const dataReady = pie(data) as PieChartDatum[];\n\n const maxOuterRadius = 0.95;\n const arc = d3\n .arc()\n .cornerRadius(cornerRadius || 0)\n .innerRadius(radius)\n .outerRadius(\n radius * Math.min(Math.max(outerRadius || 0, 0), maxOuterRadius)\n );\n\n if (typeof backgroundColor === 'string') {\n global\n .append('path')\n .attr('fill', backgroundColor)\n .attr('d', () =>\n // @ts-ignore\n arc({\n startAngle: degreesToRadians(0),\n endAngle: degreesToRadians(fullAngle),\n })\n );\n }\n\n const format = d3.format(',');\n const allSlices = global\n .selectAll('allSlices')\n .data(dataReady)\n .enter()\n .append('path')\n // @ts-ignore\n .attr('d', arc);\n\n allSlices\n .attr('class', pieChartclassNames.pieSlice)\n .attr('fill', ({ index }) => data[index].color || '')\n .attr('stroke', borderColor || '')\n .attr('stroke-width', borderWidth || 0)\n .attr('style', onClick ? 'cursor: pointer' : '')\n .on(\n 'click',\n // @ts-ignore\n (_, d) => onClick && onClick(data[d.index])\n )\n .append('svg:title')\n .text(d =>\n formatSliceTitle\n ? // @ts-ignore\n formatSliceTitle(d)\n : fullChartTooltip || withTooltip\n ? ''\n : `${data[d.index].name || ''} (${format(data[d.index].value)})`\n );\n\n if (enableSlicesLabels) {\n const text = global\n .selectAll('allSlices')\n .data(dataReady)\n .enter()\n .append('text')\n .attr('class', pieChartclassNames.pieSliceLabel)\n .attr('text-anchor', 'middle')\n .attr('dominant-baseline', 'central')\n .attr(\n 'transform',\n // @ts-ignore\n (d: PieChartDatum) => 'translate(' + arc.centroid(d) + ')'\n );\n\n text\n .append('tspan')\n .attr('class', pieChartclassNames.pieSliceLabelValue)\n // @ts-ignore\n .text((d: PieChartDatum) => {\n const deg = radiansToDegrees(d.endAngle - d.startAngle);\n\n if (!slicesLabelsSkipAngle || deg > slicesLabelsSkipAngle) {\n return formatSliceLabel ? formatSliceLabel(d) : d.value;\n }\n });\n\n if (enableSlicesLabelsName) {\n text\n .append('tspan')\n .attr('class', pieChartclassNames.pieSliceLabelName)\n // @ts-ignore\n .text((d: PieChartDatum) =>\n formatSliceLabelName ? formatSliceLabelName(d) : d.data.name\n )\n .attr('x', '0')\n .attr('dy', '1.2em');\n }\n }\n\n drawRadialLabels({\n arc,\n enableRadialLabels,\n global,\n radius,\n node,\n dataReady,\n translateX: (width - (marginLeft - marginRight)) / 2,\n translateY: (height + (marginTop - marginBottom)) / 2,\n radialLabelsLinkHorizontalLength,\n radialLabelsTextXOffset,\n formatRadialLabel,\n radialLabelYOffset,\n radialAngleXOffset,\n });\n\n if (withTooltip || fullChartTooltip) {\n drawTooltip({\n fullChartTooltip,\n global,\n data,\n tooltipClassName,\n tooltipBind,\n renderTooltip,\n allSlices,\n arc,\n tooltipStyle,\n width,\n height,\n radius,\n });\n }\n\n if (svgElements) {\n const html = ReactDOMServer.renderToString(svgElements);\n\n svg.append('g').html(html);\n }\n }\n};\n","import React, { useEffect } from 'react';\n\nimport { PieChartProps } from './types';\n\nimport { useNode } from '../../hooks';\nimport { useResize } from '../../hooks';\n\nimport { draw } from './draw';\n\nimport { SvgWrapper } from './styled';\n\nexport const PieChart: React.FC<PieChartProps> = (\n props\n): React.ReactElement => {\n const { className, style, children } = props;\n const [ref, node] = useNode();\n\n useEffect(() => {\n node && draw(node, props);\n }, [node, props]);\n\n const onDraw = () => draw(node, props);\n\n useResize(props.width, onDraw);\n\n return (\n <div className={className} style={style}>\n <SvgWrapper ref={ref}>{children}</SvgWrapper>\n </div>\n );\n};\n\nPieChart.defaultProps = {\n data: [],\n startAngle: 0,\n endAngle: 360,\n slicesLabelsSkipAngle: 0,\n radialLabelYOffset: 16,\n radialAngleXOffset: 8,\n};\n","import * as d3 from 'd3';\n\nimport { Interpolator } from '../../common/types/interpolator';\nimport { GetLegendProps } from './types';\n\nconst defaultN = 256;\n\nexport const legendClassNames = {\n legendContainer: 'd3-legend-container',\n legendTitle: 'd3-legend-title',\n legendTick: 'd3-legend-tick',\n legendTickLine: 'd3-legend-tick-line',\n legendTickText: 'd3-legend-tick-text',\n};\n\nfunction ramp(color: Interpolator, n: number = defaultN) {\n const canvas = document.createElement('canvas');\n canvas.width = n;\n canvas.height = 1;\n const context = canvas.getContext('2d') as CanvasRenderingContext2D;\n\n for (let i = 0; i < n; ++i) {\n context.fillStyle = color(i / (n - 1));\n context.fillRect(i, 0, 1, 1);\n }\n\n return canvas;\n}\n\nexport const legendDefaultParams = {\n tickSize: 6,\n height: 44,\n width: 320,\n marginTop: 18,\n marginBottom: 16,\n ticksDivier: 64,\n titleMarginBottom: 6,\n};\n\nexport const getLegend = ({\n color,\n title,\n tickSize = legendDefaultParams.tickSize,\n width = legendDefaultParams.width,\n height = legendDefaultParams.height + tickSize,\n marginTop = legendDefaultParams.marginTop,\n marginRight = 0,\n marginBottom = legendDefaultParams.marginBottom + tickSize,\n marginLeft = 0,\n ticks = legendDefaultParams.width / legendDefaultParams.ticksDivier,\n tickFormat,\n tickValues,\n titleMarginBottom,\n}: GetLegendProps) => {\n const svg = d3\n .create('svg')\n .attr('width', width)\n .attr('height', height)\n // @ts-ignore\n .attr('viewBox', [0, 0, width, height])\n .style('overflow', 'visible')\n .style('display', 'block');\n\n let tickAdjust = (g: d3.Selection<SVGGElement, any, any, any>) => {\n const tick = g.selectAll('.tick');\n\n tick\n .selectAll('.tick line')\n .attr('y1', marginTop + marginBottom - height)\n .attr('class', legendClassNames.legendTickLine);\n tick.selectAll('.tick text').attr('class', legendClassNames.legendTickText);\n tick.attr('class', legendClassNames.legendTick);\n\n return tick;\n };\n let x: any;\n\n // Continuous\n if (color.interpolate) {\n const n = Math.min(color.domain().length, color.range().length);\n\n x = color\n .copy()\n .rangeRound(\n d3.quantize(d3.interpolate(marginLeft, width - marginRight), n)\n );\n\n svg\n .append('image')\n .attr('x', marginLeft)\n .attr('y', marginTop)\n .attr('class', legendClassNames.legendContainer)\n .attr('width', width - marginLeft - marginRight)\n .attr('height', height - marginTop - marginBottom)\n .attr('preserveAspectRatio', 'none')\n .attr(\n 'xlink:href',\n ramp(\n color.copy().domain(d3.quantize(d3.interpolate(0, 1), n))\n ).toDataURL()\n );\n }\n\n // Sequential\n else if (color.interpolator) {\n x = Object.assign(\n color\n .copy()\n .interpolator(d3.interpolateRound(marginLeft, width - marginRight)),\n {\n range() {\n return [marginLeft, width - marginRight];\n },\n }\n );\n\n svg\n .append('image')\n .attr('x', marginLeft)\n .attr('y', marginTop)\n .attr('width', width - marginLeft - marginRight)\n .attr('height', height - marginTop - marginBottom)\n .attr('preserveAspectRatio', 'none')\n .attr('xlink:href', ramp(color.interpolator()).toDataURL());\n\n // scaleSequentialQuantile doesn’t implement ticks or tickFormat.\n if (!x.ticks) {\n if (tickValues === undefined) {\n const n = Math.round(ticks + 1);\n tickValues = d3\n .range(n)\n .map(i => d3.quantile(color.domain(), i / (n - 1)));\n }\n if (typeof tickFormat !== 'function') {\n tickFormat = d3.format(tickFormat === undefined ? ',f' : tickFormat);\n }\n }\n }\n\n svg\n .append('g')\n .attr('transform', `translate(0,${height - marginBottom})`)\n .call(\n d3\n .axisBottom(x)\n .ticks(ticks, typeof tickFormat === 'string' ? tickFormat : undefined)\n // @ts-ignore\n .tickFormat(typeof tickFormat === 'function' ? tickFormat : undefined)\n .tickSize(tickSize)\n // @ts-ignore\n .tickValues(tickValues)\n )\n .call(tickAdjust)\n .call(g => g.select('.domain').remove())\n .call(g =>\n g\n .append('text')\n .attr('x', marginLeft)\n .attr('class', legendClassNames.legendTitle)\n .attr(\n 'y',\n marginTop +\n marginBottom -\n height -\n (titleMarginBottom || legendDefaultParams.titleMarginBottom)\n )\n .attr('fill', 'currentColor')\n .attr('text-anchor', 'start')\n .attr('font-weight', 'bold')\n .text(title as string)\n );\n\n return svg;\n};\n","import styled from 'styled-components';\n\nimport { Wrapper } from '../../common/components/Wrapper';\nimport { legendClassNames } from '../../helpers/getLegend';\n\nexport const calendarChartClassNames = {\n calendarChart: 'calendarChart',\n calendarYear: 'calendarYear',\n calendarAxis: 'calendarAxis',\n calendarBody: 'calendarBody',\n calendarHeader: 'calendarHeader',\n calendarYearTitle: 'calendarYearTitle',\n calendarWeekDay: 'calendarWeekDay',\n calendarMonth: 'calendarMonth',\n calendarDays: 'calendarDays',\n calendarDay: 'calendarDay',\n ...legendClassNames,\n};\n\nconst headerHeight = '20px';\n\nexport const SvgWrapper = styled(Wrapper)`\n .${calendarChartClassNames.calendarYear} {\n display: flex;\n margin-bottom: 16px;\n }\n .${calendarChartClassNames.calendarYearTitle} {\n display: inline-flex;\n align-items: flex-end;\n height: ${headerHeight};\n margin-bottom: 4px;\n font-weight: bold;\n }\n .${calendarChartClassNames.calendarHeader} {\n height: ${headerHeight};\n margin-bottom: 4px;\n position: relative;\n display: flex;\n }\n .${calendarChartClassNames.calendarMonth} {\n font-size: 14px;\n bottom: 0;\n position: absolute;\n }\n .${calendarChartClassNames.calendarAxis} {\n display: flex;\n flex-direction: column;\n margin-right: 10px;\n }\n .${calendarChartClassNames.calendarWeekDay} {\n font-size: 12px;\n display: inline-flex;\n align-items: center;\n justify-content: flex-end;\n }\n .${calendarChartClassNames.calendarDays} {\n position: relative;\n }\n .${calendarChartClassNames.calendarDay} {\n position: absolute;\n }\n`;\n","import * as d3 from 'd3';\n\nimport { Interpolator } from '../../common/types/interpolator';\nimport { CalendarChartProps, CalendarChartData } from './types';\n\nimport { getLegend } from '../../helpers/getLegend';\n\nimport { calendarChartClassNames } from './styled';\n\nexport const draw = (\n node: HTMLElement | null,\n props: CalendarChartProps\n): void => {\n const {\n data,\n startSunday,\n weekdays,\n interpolator,\n monthSpacing,\n onEachDay,\n colorRange,\n legendProps,\n } = props;\n\n if (node !== null && data.length) {\n const years: Map<number, CalendarChartData[]> = d3.group(data, d =>\n d.date.getUTCFullYear()\n );\n const cellOffset =\n typeof props.cellOffset === 'number' ? props.cellOffset : 0;\n const weekDays = 7;\n const defaultCellSize = 18;\n const cellSize = props.cellSize || defaultCellSize;\n const countDay = (i: number) =>\n startSunday ? i : (i + (weekDays - 1)) % weekDays;\n const days = weekdays || ['вс', 'пн', 'вт', 'ср', 'чт', 'пт', 'сб'];\n const sundayIndex = 6;\n const formatDay = (i: number) =>\n startSunday ? days[i] : i === sundayIndex ? days[0] : days[i + 1];\n const formatDate = d3.utcFormat('%x');\n const timeWeek = startSunday ? d3.utcSunday : d3.utcMonday;\n const getTimeWeekCount = (from: Date, to: Date) =>\n timeWeek.count(d3.utcYear(from), to);\n const getMonthSpacing = (date: Date) =>\n date.getUTCMonth() * (monthSpacing || 0);\n const formatMonth = d3.utcFormat('%b');\n const max = d3.max(data.map(({ value }) => value)) as number;\n const min = d3.min(data.map(({ value }) => value)) as number;\n\n const color = colorRange\n ? d3\n .scaleLinear()\n .domain([min, max])\n // @ts-ignore\n .range(colorRange)\n : d3\n .scaleSequential(interpolator || d3.interpolateGreens)\n .domain([min, +max]);\n\n let chartWidth = 0;\n\n years.forEach((values, year) => {\n const min = new Date(year, 1);\n const max = d3.max(values.map(d => d.date)) as Date;\n const months = max.getUTCMonth() - min.getUTCMonth();\n const weekCount = getTimeWeekCount(min, max) + 1;\n const width =\n weekCount * (cellSize + cellOffset) + (monthSpacing || 0) * months;\n\n chartWidth = Math.max(chartWidth, width);\n });\n\n d3.select(node)\n .select(`.${calendarChartClassNames.calendarChart}`)\n .remove();\n\n const container = d3\n .select(node)\n .append('div')\n .attr('class', calendarChartClassNames.calendarChart);\n\n const year = container\n .selectAll('div')\n // @ts-ignore\n .data(years)\n .join('div')\n .attr('class', calendarChartClassNames.calendarYear);\n\n const calendarWeekdays = year\n .append('div')\n .attr('class', calendarChartClassNames.calendarAxis);\n\n calendarWeekdays\n .append('div')\n .attr('class', calendarChartClassNames.calendarYearTitle)\n // @ts-ignore\n .text(([key]) => key);\n\n calendarWeekdays\n .selectAll('span')\n .data(d3.range(weekDays))\n .join('div')\n .attr('class', calendarChartClassNames.calendarWeekDay)\n .style('height', cellSize + 'px')\n .style('margin-bottom', cellOffset + 'px')\n .text(formatDay);\n\n const body = year\n .append('div')\n .attr('class', calendarChartClassNames.calendarBody);\n\n const header = body\n .append('div')\n .attr('class', calendarChartClassNames.calendarHeader);\n\n header\n .selectAll('div')\n // @ts-ignore\n .data(([_, values]) => {\n const fullYearlastMonth = 12;\n const fullYearlastDate = 31;\n\n return d3.utcMonths(\n d3.utcMonth(new Date(values[0].date.getUTCFullYear(), 1, 1)),\n d3.utcMonth(\n new Date(\n values[0].date.getUTCFullYear(),\n fullYearlastMonth,\n fullYearlastDate\n )\n )\n );\n })\n .join('div')\n .attr('class', calendarChartClassNames.calendarMonth)\n .style(\n 'left',\n (d: any) =>\n getTimeWeekCount(d, timeWeek.ceil(d)) * (cellSize + cellOffset) +\n getMonthSpacing(d) +\n 'px'\n )\n // @ts-ignore\n .text(formatMonth);\n\n // @ts-ignore\n body\n .append('div')\n .attr('class', calendarChartClassNames.calendarDays)\n .style('height', (cellSize + cellOffset) * weekDays + 'px')\n .style('width', chartWidth + 'px')\n .selectAll('div')\n // @ts-ignore\n .data(([, values]) => values)\n .join('div')\n // @ts-ignore\n .each((data: CalendarChartData, index, elements) => {\n if (onEachDay) {\n const element = elements[index] as HTMLDivElement;\n const currColor = color(data.value) as string;\n\n onEachDay(data, element, currColor);\n }\n })\n .attr('class', calendarChartClassNames.calendarDay)\n .style('width', cellSize + 'px')\n .style('height', cellSize + 'px')\n // @ts-ignore\n .style(\n 'left',\n (d: any) =>\n getTimeWeekCount(d.date, d.date) * (cellSize + cellOffset) +\n getMonthSpacing(d.date) +\n 'px'\n )\n .style(\n 'top',\n // @ts-ignore\n d => countDay(d.date.getUTCDay()) * (cellSize + cellOffset) + 'px'\n )\n // @ts-ignore\n .style('background-color', d => color(d.value))\n // @ts-ignore\n .attr('title', d => `${formatDate(d.date)} - ${d.value}`);\n\n if (typeof legendProps === 'object') {\n const legend = getLegend({\n color: color as Interpolator,\n ...legendProps,\n });\n\n const containerNode = container.node() as HTMLDivElement;\n const legendSvg = legend.node() as SVGElement;\n\n containerNode.appendChild(legendSvg);\n }\n }\n};\n","import React, { useEffect } from 'react';\n\nimport { CalendarChartProps } from './types';\n\nimport { useNode } from '../../hooks';\n\nimport { draw } from './draw';\n\nimport { SvgWrapper } from './styled';\n\nexport const CalendarChart: React.FC<CalendarChartProps> = (\n props\n): React.ReactElement => {\n const {\n className,\n style,\n children,\n data,\n startSunday,\n weekdays,\n cellOffset,\n cellSize,\n interpolator,\n monthSpacing,\n colorRange,\n legendProps,\n } = props;\n const [ref, node] = useNode();\n\n useEffect(() => {\n node && draw(node, props);\n // eslint-disable-next-line\n }, [\n node,\n data,\n startSunday,\n weekdays,\n cellOffset,\n cellSize,\n interpolator,\n monthSpacing,\n colorRange,\n legendProps,\n ]);\n\n return (\n <SvgWrapper ref={ref} className={className} style={style}>\n {children}\n </SvgWrapper>\n );\n};\n\nCalendarChart.defaultProps = {\n data: [],\n};\n","import * as d3 from 'd3';\n\nexport function computeDimensions(\n selection: d3.Selection<any, any, any, any>\n): SVGRect | DOMRect {\n let dimensions;\n const node = selection.node();\n\n if (node instanceof SVGGraphicsElement) {\n // check if node is svg element\n dimensions = node.getBBox();\n } else {\n // else is html element\n dimensions = node.getBoundingClientRect();\n }\n\n return dimensions;\n}\n","export function none() {\n return;\n}\n\nexport function isVoid(value: any) {\n return value === undefined || value === null || Number.isNaN(value);\n}\n","import { LineChartData } from '../charts/LineChart/types';\n\nexport const stackedData = (data: LineChartData[]) => {\n const stacks: { [key: string]: { [key: string]: number } } = {};\n\n return data.map((item, index) => {\n stacks[index] = {};\n\n if (index > 0) {\n return {\n ...item,\n values: item.values.map((value, valuesIndex) => {\n const prevValue = stacks[index - 1][valuesIndex];\n stacks[index][valuesIndex] = Number(\n (typeof prevValue !== 'number' ? 0 : Math.abs(prevValue)) +\n (typeof value !== 'number' ? 0 : Math.abs(value))\n );\n\n return stacks[index][valuesIndex];\n }),\n };\n } else {\n item.values.forEach((value, valuesIndex) => {\n stacks[index][valuesIndex] = Number(value);\n });\n }\n\n return item;\n });\n};\n","import styled, { createGlobalStyle } from 'styled-components';\n\nimport { Wrapper } from '../../common/components/Wrapper';\n\nexport const lineChartClassNames = {\n lineChartYScaleGlobal: 'lineChartYScaleGlobal',\n lineChartYScaleRight: 'lineChartYScaleRight',\n lineChartXScaleGlobal: 'lineChartXScaleGlobal',\n lineChartLinesGlobal: 'lineChartLinesGlobal',\n lineChartLine: 'lineChartLine',\n lineChartAreasGlobal: 'lineChartAreasGlobal',\n lineChartArea: 'lineChartArea',\n lineChartDotsGlobalContainer: 'lineChartDotsGlobalContainer',\n lineChartDotsGlobal: 'lineChartDotsGlobal',\n lineChartDot: 'lineChartDot',\n lineChartGridGlobal: 'lineChartGridGlobal',\n lineChartGridLineX: 'lineChartGridLineX',\n lineChartGridLineY: 'lineChartGridLineY',\n lineChartLabelContainer: 'lineChartLabelContainer',\n lineChartLabelFlex: 'lineChartLabelFlex',\n lineChartLabel: 'lineChartLabel',\n lineChartMouseGlobal: 'lineChartMouseGlobal',\n lineChartMouseLine: 'lineChartMouseLine',\n lineChartMouseRect: 'lineChartMouseRect',\n lineChartMouseCircle: 'lineChartMouseCircle',\n lineChartMouseLabelContainer: 'lineChartMouseLabelContainer',\n lineChartMouseLabel: 'lineChartMouseLabel',\n};\n\nexport const SvgWrapper = styled(Wrapper)`\n .${lineChartClassNames.lineChartYScaleGlobal},\n .${lineChartClassNames.lineChartXScaleGlobal},\n .${lineChartClassNames.lineChartGridGlobal} {\n shape-rendering: crispEdges;\n }\n .${lineChartClassNames.lineChartLinesGlobal} {\n fill: none;\n stroke: steelblue;\n stroke-width: 1.5px;\n stroke-linejoin: round;\n stroke-linecap: round;\n }\n .${lineChartClassNames.lineChartArea} {\n fill-opacity: 0.24;\n }\n .${lineChartClassNames.lineChartGridLineX},\n .${lineChartClassNames.lineChartGridLineY},\n .${lineChartClassNames.lineChartMouseLine} {\n stroke: rgba(149, 149, 149, 0.24);\n }\n .${lineChartClassNames.lineChartMouseLine},\n .${lineChartClassNames.lineChartMouseCircle} {\n transition: opacity linear 200ms;\n pointer-events: none;\n stroke-width: 1px;\n }\n .${lineChartClassNames.lineChartDot} {\n stroke: #fff;\n stroke-width: 2px;\n }\n .${lineChartClassNames.lineChartMouseLine} {\n shape-rendering: crispEdges;\n }\n .${lineChartClassNames.lineChartMouseRect} {\n fill: none;\n pointer-events: all;\n }\n`;\n\nexport const TooltipStyles = createGlobalStyle`\n .${lineChartClassNames.lineChartMouseLabel} {\n transition: opacity linear 200ms;\n z-index: 100;\n .${lineChartClassNames.lineChartLabelFlex} {\n justify-content: flex-start;\n align-items: center;\n pointer-events: none;\n }\n .${lineChartClassNames.lineChartLabel} {\n margin: 0 0 0 10px;\n }\n }\n`;\n","import { DrawGridProps } from './types';\n\nimport { lineChartClassNames } from '../styled';\n\nexport const drawGrid = ({\n svg,\n yScale,\n xScale,\n yTicksCount,\n lastIndex,\n drawGridX,\n drawGridY,\n}: DrawGridProps) => {\n if (!drawGridY && !drawGridX) return;\n\n const global = svg\n .append('g')\n .attr('class', lineChartClassNames.lineChartGridGlobal);\n\n const yTicks = yScale.ticks(yTicksCount);\n\n if (drawGridX) {\n global\n .append('g')\n .selectAll('line')\n .data(yTicks)\n .join('line')\n .attr('class', lineChartClassNames.lineChartGridLineX)\n .attr('x1', () => xScale(0))\n .attr('x2', () => xScale(lastIndex))\n .attr('y1', (d: number) => Math.round(yScale(d)))\n .attr('y2', (d: number) => Math.round(yScale(d)));\n }\n\n if (drawGridY) {\n global\n .append('g')\n .selectAll('line')\n .data(Array.from({ length: lastIndex + 1 }, (_, index) => index))\n .join('line')\n .attr('class', lineChartClassNames.lineChartGridLineY)\n .attr('x1', (_, index: number) => Math.round(xScale(index) as number))\n .attr('x2', (_, index: number) => Math.round(xScale(index) as number))\n .attr('y1', () => Math.round(yScale(yTicks[0]) as number))\n .attr('y2', () =>\n Math.round(yScale(yTicks[yTicks.length - 1]) as number)\n );\n }\n};\n","import styled from 'styled-components';\n\nexport const LabelContainer = styled.div`\n width: 0;\n height: 0;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n font-size: 12px;\n white-space: nowrap;\n`;\n\nexport const Label = styled.div`\n margin-bottom: 4px;\n`;\n","import React from 'react';\nimport * as d3 from 'd3';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { DrawLabelProps } from './types';\n\nimport { none } from '../../../helpers/common';\n\nimport { lineChartClassNames } from '../styled';\nimport { LabelContainer, Label } from './styled';\n\nexport const labelClassName = 'd3-chart-label';\n\nexport const drawLabel = ({\n node,\n data,\n yScale,\n xScale,\n formatLabel,\n eachLabel,\n}: DrawLabelProps) => {\n const labelsDiv = d3\n .select(node)\n .append('div')\n .attr('class', labelClassName);\n const format = d3.format(',');\n\n // @ts-ignore\n data.forEach(({ values }: { values: number[] }) => {\n labelsDiv\n .append('div')\n .selectAll('div')\n .data(values)\n .join('div')\n .attr('class', lineChartClassNames.lineChartLabelContainer)\n .style('position', 'absolute')\n .style('left', (_, index) => xScale(index) + 'px')\n .style('top', d => yScale(d) + 'px')\n .html((d: number, index, elements: any) => {\n const html = ReactDOMServer.renderToString(\n <LabelContainer className={lineChartClassNames.lineChartLabelFlex}>\n <Label className={lineChartClassNames.lineChartLabel}>\n {formatLabel ? formatLabel(d, index, elements) : format(d)}\n </Label>\n </LabelContainer>\n );\n\n return html;\n })\n // @ts-ignore\n .each(eachLabel ? eachLabel : none);\n });\n};\n","import React from 'react';\nimport * as d3 from 'd3';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { DrawTooltipProps } from './types';\n\nimport { isVoid } from '../../../helpers/common';\n\nimport { lineChartClassNames } from '../styled';\nimport { Label, LabelContainer } from '../drawLabel/styled';\n\nexport const drawTooltip = ({\n svg,\n node,\n data: argData,\n xScale,\n yScale,\n dynamicCircleRadius,\n formatDynamicTooltip,\n renderTooltip,\n stackedTooltipIndex,\n stackedTooltip,\n tooltipLineTop,\n tooltipRoot,\n tooltipClassName,\n dotSnapping,\n lastIndex,\n}: DrawTooltipProps) => {\n const container: Element | null =\n tooltipRoot || document.querySelector('body');\n const format = d3.format(',');\n const chartData = argData.filter(({ tooltipOff }) => !tooltipOff);\n\n const data =\n typeof stackedTooltipIndex === 'number'\n ? [chartData[stackedTooltipIndex]]\n : stackedTooltip\n ? [chartData[0]]\n : chartData;\n\n const [x1, x2] = xScale.range();\n const [y1, y2] = yScale.range();\n\n const mouseGlobal = svg\n .append('g')\n .attr('class', lineChartClassNames.lineChartMouseGlobal);\n\n const mouseRect = mouseGlobal\n .append('rect')\n .attr('width', x2 - x1)\n .attr('height', Math.abs(y1 - y2))\n .attr('class', lineChartClassNames.lineChartMouseRect)\n .attr('transform', `translate(${x1}, ${y2})`);\n\n const mouseLine = mouseGlobal\n .append('path')\n .attr('class', lineChartClassNames.lineChartMouseLine)\n .style('opacity', '0');\n\n const lines = svg\n .selectAll(`.${lineChartClassNames.lineChartLine}`)\n .nodes() as SVGPathElement[];\n\n const circles = mouseGlobal\n .selectAll('circle')\n .data(chartData.filter(({ dynamicDotOff }) => !dynamicDotOff))\n .join('circle')\n .attr('class', lineChartClassNames.lineChartMouseCircle)\n .attr('r', dynamicCircleRadius as number)\n .attr('fill', ({ stroke }) => stroke || 'none')\n .attr('stroke', ({ stroke }) => stroke || 'none')\n .style('opacity', '0');\n\n let labelContainer: d3.Selection<any, unknown, any, any> = d3.select(\n `.${lineChartClassNames.lineChartMouseLabelContainer}`\n );\n\n if (labelContainer.size() === 0) {\n labelContainer = d3\n .select(container)\n .append('div')\n .attr('class', lineChartClassNames.lineChartMouseLabelContainer);\n }\n\n let labels: d3.Selection<any, any, any, any> | null = null;\n\n let isVisible = false;\n\n const setVisible = (visible?: boolean) => {\n isVisible = Boolean(visible);\n const opacity = isVisible ? '1' : '0';\n mouseLine.style('opacity', opacity);\n circles.style('opacity', opacity);\n labels && labels.style('opacity', opacity);\n };\n\n const mouseMove = (event: MouseEvent | TouchEvent) => {\n const [docX, docY] = d3.pointer(event, document);\n const [rectrX] = d3.pointer(event, mouseRect);\n const [nodeX, nodeY] = d3.pointer(event, node);\n const x = rectrX - (rectrX - nodeX);\n const left = nodeX + (docX - nodeX);\n const currIndex = Math.abs(xScale.invert(x));\n const positions: { [key: string]: { x: number; y: number } } = {};\n\n const getValue = (values: (number | null)[]) => {\n // The returning result is fixed for the task: https://jr.everpoint.ru/browse/PUB-5648\n // Before the task it was like this (and I don't know why):\n /* return !isVoid(values[Math.floor(currIndex + 1)])\n ? values[Math.floor(currIndex)]\n : null;*/\n\n return values[Math.floor(currIndex)];\n }\n\n lines.forEach((line, index) => {\n let pos = {\n x: 0,\n y: 0,\n };\n\n if (!line.hasAttribute('d') || argData[index].tooltipOff) {\n positions[index] = pos;\n return;\n }\n\n if (!dotSnapping) {\n let beginning = 0;\n let end = line.getTotalLength();\n let target = null;\n\n while (true) {\n target = Math.floor((beginning + end) / 2);\n pos = line.getPointAtLength(target);\n\n if ((target === end || target === beginning) && pos.x !== x) {\n break;\n }\n\n if (pos.x > x) {\n end = target;\n } else if (pos.x < x) {\n beginning = target;\n } else {\n break;\n }\n }\n\n positions[index] = pos;\n } else {\n const [x1, x2] = xScale.range();\n const chartWidth = x2 - x1;\n const step = chartWidth / lastIndex;\n\n positions[index] = {\n x: x1 + Math.round(currIndex) * step,\n y: typeof argData[index].values[Math.round(currIndex)] === \"number\"\n ? yScale(argData[index].values[Math.round(currIndex)] as number)\n : 0,\n };\n }\n });\n\n circles\n .attr('transform', (lineChartData, index) => {\n const value = getValue(lineChartData.values);\n\n return positions[index] && value\n ? 'translate(' + (!dotSnapping ? x : positions[index].x) + ',' + positions[index].y + ')'\n : 'translate(-9999, -9999)';\n })\n .attr('style', ({ dynamicDotStyle }) => dynamicDotStyle || '');\n\n const datas = chartData.map(({ values, ...rest }, i) => ({\n ...rest,\n value: getValue(values),\n invertValue: positions[i] ? yScale.invert(positions[i].y) : 0,\n }));\n\n const noHasData = datas.every(({ value }) => isVoid(value));\n\n if (noHasData && isVisible) {\n setVisible();\n } else if (!isVisible && !noHasData) {\n setVisible(true);\n }\n\n const topIndex = Object.keys(positions).reduce((acc, key, index) => {\n const prevValue = datas[Number(acc)]?.value;\n const value = datas[Number(key)]?.value;\n const dynamicDotOff = argData?.[index].dynamicDotOff;\n\n return index === 0 || isVoid(value) || dynamicDotOff\n ? acc\n : isVoid(prevValue) || positions[acc].y > positions[key].y\n ? key\n : acc;\n }, '0');\n\n const labelTexts =\n labels &&\n labels\n .style('left', (_, i) => {\n return !dotSnapping ? `${left}px` : `${positions[i]?.x ?? 0}px`;\n })\n .style('top', (_, i) => {\n const index =\n typeof stackedTooltipIndex === 'number'\n ? stackedTooltipIndex\n : stackedTooltip\n ? topIndex\n : i;\n\n return `${(positions[index]?.y ?? 0) + (docY - nodeY)}px`;\n })\n .select(`.${lineChartClassNames.lineChartLabel}`);\n\n if (renderTooltip && labels) {\n labels.html((_, index) => {\n return ReactDOMServer.renderToString(\n <LabelContainer className={lineChartClassNames.lineChartLabelFlex}>\n {renderTooltip(datas, {\n indexX: Math.round(currIndex),\n indexY: index,\n svg,\n event,\n })}\n </LabelContainer>\n );\n });\n } else {\n labelTexts &&\n labelTexts.text((_, i) => {\n const value = datas[i].value;\n const invertValue = datas[i].invertValue;\n\n return formatDynamicTooltip\n ? formatDynamicTooltip(invertValue, value)\n : format(invertValue);\n });\n }\n\n mouseLine.attr('d', () => {\n let d = 'M' + x + ',' + y1;\n d += ' ' + x + ',' + (tooltipLineTop ? y2 : positions[topIndex]?.y || 0);\n return d;\n });\n };\n\n mouseRect.on('mouseover.tooltip', event => {\n labels = labelContainer\n .selectAll('div')\n .data(data)\n .join('div')\n .attr(\n 'class',\n `${lineChartClassNames.lineChartMouseLabel} ${tooltipClassName || ''}`\n )\n .style('opacity', '0')\n .style('position', 'absolute')\n .html(() => {\n const html = ReactDOMServer.renderToString(\n <LabelContainer className={lineChartClassNames.lineChartLabelFlex}>\n <Label className={lineChartClassNames.lineChartLabel} />\n </LabelContainer>\n );\n\n return html;\n });\n\n mouseMove(event);\n });\n\n mouseRect.on('mouseout.tooltip', () => {\n d3.select(`.${lineChartClassNames.lineChartMouseLabelContainer}`)\n .selectAll('*')\n .remove();\n setVisible();\n });\n\n mouseRect.on('touchmove.tooltip mousemove.tooltip', mouseMove);\n};\n","import * as d3 from 'd3';\n\nimport { LineChartProps, LineChartData, LineChartDot } from './types';\n\nimport { computeDimensions } from '../../helpers/computeDimensions';\nimport { appendSvg } from '../../helpers';\nimport { none } from '../../helpers/common';\nimport { stackedData } from '../../helpers/stackedData';\nimport { drawGrid } from './drawGrid';\nimport { drawLabel, labelClassName } from './drawLabel';\nimport { drawTooltip } from './drawTooltip';\n\nimport { lineChartClassNames } from './styled';\n\nexport const draw = (node: HTMLElement | null, props: LineChartProps): void => {\n const {\n data: chartData,\n labels,\n margin,\n customYAxisSelection,\n customXAxisSelection,\n customYAxis,\n customXAxis,\n curve,\n yAxisPadding,\n xAxisPadding,\n drawGridY,\n drawGridX,\n withLabels,\n formatLabel,\n eachLabel,\n stacked,\n dynamicTooltipEnable,\n dynamicCircleRadius,\n formatDynamicTooltip,\n renderTooltip,\n stackedTooltip,\n stackedTooltipIndex,\n tooltipLineTop,\n customize,\n customYScale,\n customLine,\n tooltipClassName,\n xScaleItemWidth,\n areaCurve,\n dotSnapping,\n rightAxis,\n } = props;\n\n if (node !== null && chartData.length) {\n const data = stacked ? stackedData(chartData) : chartData;\n const marginTop = margin ? margin.top : 0;\n const marginRight = margin ? margin.right : 0;\n const marginBottom = margin ? margin.bottom : 0;\n const marginLeft = margin ? margin.left : 0;\n const { width: nodeWidth } = node.getBoundingClientRect();\n const width = props.width || nodeWidth;\n const height = props.height || 0;\n const min =\n typeof props.min === 'number'\n ? props.min\n : d3.min(data, ({ values }) => d3.min(values as number[]));\n const max =\n typeof props.max === 'number'\n ? props.max\n : d3.max(data, ({ values }) => d3.max(values as number[]));\n\n const svg = appendSvg(node, width, height || 0);\n\n const yRange = [\n height - marginTop - marginBottom - (xAxisPadding || 0),\n marginTop,\n ];\n const yScale = d3\n .scaleLinear()\n .domain([min || 0, max || 0])\n .range(yRange)\n .nice();\n\n customYScale && customYScale(yScale);\n\n const yTicksCountDefault = 8;\n const yAxisLeft = d3.axisLeft(yScale).ticks(yTicksCountDefault);\n\n customYAxis && customYAxis(yAxisLeft);\n\n const yTicksCount = yAxisLeft.tickArguments()[0];\n\n const yAxis = svg\n .append('g')\n .attr('class', lineChartClassNames.lineChartYScaleGlobal)\n .call(yAxisLeft)\n .call(customYAxisSelection ? customYAxisSelection : none);\n const { width: yAxisWidth } = computeDimensions(yAxis);\n\n yAxis.attr('transform', `translate(${marginLeft + yAxisWidth}, 0)`);\n\n let yAxisRightWidth = 0;\n\n if (rightAxis) {\n const rightAxisMin = d3.min(rightAxis);\n const rightAxisMax = d3.max(rightAxis);\n const yRightScale = d3\n .scaleLinear()\n .domain([rightAxisMin || 0, rightAxisMax || 0])\n .range(yRange)\n .nice();\n\n const yAxisRightTicks = d3.axisRight(yRightScale).ticks(yTicksCountDefault);\n const yAxisRight = svg\n .append('g')\n .attr('class', `${lineChartClassNames.lineChartYScaleGlobal} ${lineChartClassNames.lineChartYScaleRight}`)\n .call(yAxisRightTicks)\n .call(customYAxisSelection ? customYAxisSelection : none);\n\n ({ width: yAxisRightWidth } = computeDimensions(yAxisRight));\n\n yAxisRight.attr('transform', `translate(${width - yAxisRightWidth}, 0)`);\n }\n\n /** xScale **/\n const lastIndex =\n labels && labels.length\n ? labels.length - 1\n : data.reduce((acc, { values }) => Math.max(acc, values.length), 0) - 1;\n\n const xScale = d3\n .scaleLinear()\n .domain([0, lastIndex])\n .range([\n marginLeft + yAxisWidth + (yAxisPadding || 0),\n width - yAxisRightWidth - marginRight,\n ]);\n\n const xAxisBottom = d3\n .axisBottom(xScale)\n .tickFormat((value: d3.NumberValue) =>\n // @ts-ignore\n labels && labels.length > 0 ? labels[value] : 0\n )\n .ticks(lastIndex);\n\n if (typeof xScaleItemWidth === 'number') {\n const [x1, x2] = xScale.range();\n const chartWidth = x2 - x1;\n\n xAxisBottom\n .ticks(Math.round(chartWidth / xScaleItemWidth))\n .tickSizeOuter(0);\n }\n\n customXAxis && customXAxis(xAxisBottom);\n\n drawGrid({\n svg,\n yScale,\n xScale,\n yTicksCount,\n lastIndex,\n drawGridY,\n drawGridX,\n });\n\n if (Array.isArray(labels) && labels.length > 0) {\n const xAxis = svg\n .append('g')\n .call(customXAxisSelection ? customXAxisSelection : none)\n .attr('class', lineChartClassNames.lineChartXScaleGlobal)\n .call(xAxisBottom);\n\n const { height: xAxisHeight } = computeDimensions(xAxis);\n\n xAxis.attr(\n 'transform',\n `translate(0, ${height - Math.ceil(xAxisHeight) - marginBottom})`\n );\n }\n\n const line = d3\n .line()\n .defined(d => d !== null)\n .x((_, index) => xScale(index))\n .y((d: unknown) => yScale(d as d3.NumberValue))\n .curve(curve || d3.curveLinear);\n\n customLine && customLine(line);\n\n const withAreas = data.some(({ fill }) => fill);\n\n if (withAreas) {\n let dataIndex = -2;\n\n const getArea = (d: LineChartData): d3.Area<[number, number]> => {\n const { minAreaValues } = d;\n const minTick = yScale.ticks()[0];\n\n return d3\n .area()\n .defined(d => d !== null)\n .x((_, index) => xScale(index))\n .y0((value: unknown, index) => {\n if (index === 0) {\n dataIndex = dataIndex + 1;\n }\n\n let minValue: number = minTick;\n\n if (minAreaValues && typeof minAreaValues[index] === 'number') {\n minValue = minAreaValues[index] || minValue;\n } else if (minAreaValues) {\n minValue = yScale(\n (minValue - (value as number)) as d3.NumberValue\n );\n }\n\n const currData = data[dataIndex];\n\n return stacked\n ? dataIndex > -1\n ? yScale(\n typeof currData.values[index] !== 'number'\n ? 0\n : (currData.values[index] as number)\n )\n : yScale(minValue)\n : yScale(minValue);\n })\n .y1((d: unknown) => yScale(d as d3.NumberValue))\n .curve(areaCurve || curve || d3.curveLinear);\n };\n\n svg\n .append('g')\n .attr('class', lineChartClassNames.lineChartAreasGlobal)\n .selectAll('path')\n .data(data.filter(({ fill }) => Boolean(fill)))\n .join('path')\n .attr('class', lineChartClassNames.lineChartArea)\n .attr('d', (d: LineChartData) => {\n const area = getArea(d);\n\n return area((d.values as unknown) as [number, number][]);\n })\n .attr('fill', ({ fill }) => fill || 'none')\n .attr('style', ({ areaStyle }) => areaStyle || '');\n }\n\n svg\n .append('g')\n .attr('class', lineChartClassNames.lineChartLinesGlobal)\n .selectAll('path')\n .data(data)\n .join('path')\n .attr('class', lineChartClassNames.lineChartLine)\n .attr('d', (d: LineChartData | any) => line(d.values))\n .attr('stroke', ({ stroke }) => stroke || 'steelblue')\n .attr('style', ({ style }) => style || '');\n\n const dots = data.filter(({ dot }) => dot) as (Omit<\n LineChartData,\n 'dot'\n > & {\n dot: LineChartDot;\n })[];\n\n if (dots.length > 0) {\n const dotsGlobal = svg\n .append('g')\n .attr('class', lineChartClassNames.lineChartDotsGlobalContainer);\n\n dots.forEach(item => {\n const { values, dot } = item;\n const { radius, style, filter } = dot;\n\n const dotsGroup = dotsGlobal\n .append('g')\n .attr('class', lineChartClassNames.lineChartDotsGlobal);\n\n dotsGroup\n .selectAll('circle')\n .data(values)\n .join('circle')\n .attr('cx', (_, index) => xScale(index))\n .attr('class', lineChartClassNames.lineChartDot)\n .attr('cy', d => yScale(d as d3.NumberValue))\n .attr('r', radius || 0)\n .attr('style', style || '');\n\n if (filter) {\n dotsGroup\n .selectAll('circle')\n .select((_, i, g) => (filter(item, i, g) ? g[i] : null))\n .remove();\n }\n });\n }\n\n d3.select(node)\n .select(`.${labelClassName}`)\n .remove();\n withLabels &&\n drawLabel({ node, eachLabel, data, yScale, xScale, formatLabel });\n\n if (dynamicTooltipEnable) {\n drawTooltip({\n tooltipLineTop,\n stackedTooltip,\n renderTooltip,\n stackedTooltipIndex,\n formatDynamicTooltip,\n node,\n svg,\n data,\n xScale,\n yScale,\n dynamicCircleRadius,\n tooltipClassName,\n dotSnapping,\n lastIndex,\n });\n }\n\n customize && customize({ svg, yScale, xScale });\n }\n};\n","import React, { useEffect } from 'react';\n\nimport { LineChartProps } from './types';\n\nimport { useNode } from '../../hooks';\nimport { useResize } from '../../hooks';\n\nimport { draw } from './draw';\n\nimport { SvgWrapper, TooltipStyles } from './styled';\n\nexport const LineChart: React.FC<LineChartProps> = (\n props\n): React.ReactElement => {\n const { className, style, children } = props;\n const [ref, node] = useNode();\n\n useEffect(() => {\n node && draw(node, props);\n }, [node, props]);\n\n const onDraw = () => draw(node, props);\n\n useResize(props.width, onDraw);\n\n return (\n <div className={className} style={style}>\n <TooltipStyles />\n <SvgWrapper ref={ref}>{children}</SvgWrapper>\n </div>\n );\n};\n\nLineChart.defaultProps = {\n data: [],\n labels: [],\n height: 240,\n yAxisPadding: 10,\n xAxisPadding: 20,\n margin: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 0,\n },\n dynamicCircleRadius: 4,\n stackedTooltip: false,\n};\n","import * as d3 from 'd3';\n\nimport { BarChartLineData } from '../types';\nimport { DrawLinesProps } from './types';\n\nexport const barChartLinesClassNames = {\n barChartLinesGlobal: 'barChartLinesGlobal',\n barChartLine: 'barChartLine',\n barChartAreasGlobal: 'barChartAreasGlobal',\n barChartArea: 'barChartArea',\n};\n\nexport const drawLines = ({\n svg,\n lineData,\n min,\n yScale,\n xScale,\n curve,\n stackedLine,\n}: DrawLinesProps) => {\n let linesSelection = null;\n let areasSelection = null;\n let area: d3.Area<[number, number]> | null = null;\n\n const line = d3\n .line()\n .defined(d => d !== null)\n .x(\n (_, index) =>\n (xScale((index as unknown) as string) as number) + bandwidth / 2\n )\n // @ts-ignore\n .y((d: number) => yScale(d))\n .curve(curve || d3.curveLinear);\n const bandwidth = xScale.bandwidth();\n\n const linesData = lineData.filter(({ lineType }) => lineType === 'line');\n const areasData = lineData.filter(({ lineType }) => lineType === 'area');\n\n if (linesData.length > 0) {\n linesSelection = svg\n .append('g')\n .attr('class', barChartLinesClassNames.barChartLinesGlobal)\n .selectAll('path')\n .data(linesData)\n .join('path')\n .attr('class', barChartLinesClassNames.barChartLine)\n .attr('d', (d: BarChartLineData) =>\n line(d.values as Iterable<[number, number]>)\n )\n .attr('stroke', ({ stroke }) => stroke || '')\n .attr('fill', ({ fill }) => fill || 'none');\n }\n\n if (areasData.length > 0) {\n let dataIndex = -2;\n\n area = d3\n .area()\n .x(\n (_, index) =>\n (xScale((index as unknown) as string) as number) + bandwidth / 2\n )\n .y0((_, index) => {\n if (index === 0) {\n dataIndex = dataIndex + 1;\n }\n\n return stackedLine\n ? dataIndex > -1\n ? yScale(\n typeof lineData[dataIndex].values[index] !== 'number'\n ? 0\n : (lineData[dataIndex].values[index] as number)\n )\n : yScale(min as number)\n : yScale(min as number);\n })\n // @ts-ignore\n .y1(d => yScale(d))\n .curve(curve || d3.curveLinear);\n\n areasSelection = svg\n .append('g')\n .attr('class', barChartLinesClassNames.barChartAreasGlobal)\n .selectAll('path')\n .data(areasData)\n .join('path')\n .attr('class', barChartLinesClassNames.barChartArea)\n .attr('d', (d: BarChartLineData | any) => area && area(d.values))\n .attr('fill', ({ fill }) => fill || 'none');\n }\n\n return {\n areasSelection,\n linesSelection,\n area,\n };\n};\n","import styled, { createGlobalStyle } from 'styled-components';\n\nimport { Wrapper } from '../../common/components/Wrapper';\nimport { barChartLinesClassNames } from './drawLines';\n\nconst tooltipClassnames = {\n barChartMouseRect: 'barChartMouseRect',\n barChartMouseContainer: 'barChartMouseContainer',\n barChartTooltipFlex: 'barChartTooltipFlex',\n barChartMouseTooltip: 'barChartMouseTooltip',\n barChartTooltip: 'barChartTooltip',\n barChartTooltipItem: 'barChartTooltipItem',\n barChartTooltipColFlex: 'barChartTooltipColFlex',\n barChartTooltipGroupName: 'barChartTooltipGroupName',\n barChartColorBox: 'barChartColorBox',\n barChartColorLine: 'barChartColorLine',\n barChartTooltipName: 'barChartTooltipName',\n barChartTooltipValue: 'barChartTooltipValue',\n};\n\nconst labelClassnames = {\n barChartLabelContainer: 'barChartLabelContainer',\n barChartLabelFlex: 'barChartLabelFlex',\n barChartLabel: 'barChartLabel',\n};\n\nexport const barChartClassNames = {\n barChartBarGlobal: 'barChartBarGlobal',\n barChartYScaleGlobal: 'barChartYScaleGlobal',\n barChartYAxis: 'barChartYAxis',\n barChartXAxis: 'barChartXAxis',\n barChartYAxisZeroTick: 'barChartYAxisZeroTick',\n barChartGridGlobal: 'barChartGridGlobal',\n barChartGridLineX: 'barChartGridLineX',\n barChartGridLineXZero: 'barChartGridLineXZero',\n barChartGridLineYZero: 'barChartGridLineYZero',\n barChartGridLineY: 'barChartGridLineY',\n barChartSelection: 'barChartSelection',\n ...tooltipClassnames,\n ...labelClassnames,\n ...barChartLinesClassNames,\n};\n\nexport const SvgWrapper = styled(Wrapper)<{ selectable?: boolean }>`\n display: ${({ selectable }) => selectable && \"inline-block\"};\n user-select: ${({ selectable }) => selectable && \"none\"};\n width: ${({ selectable }) => selectable && \"auto\"};\n\n line {\n stroke-width: 1px;\n shape-rendering: crispEdges;\n }\n\n .${barChartClassNames.barChartGridLineX},\n .${barChartClassNames.barChartGridLineY} {\n stroke: rgba(48, 69, 79, 0.06);\n }\n\n .${barChartClassNames.barChartMouseRect} {\n }\n\n .${barChartClassNames.barChartMouseRect} {\n fill: none;\n pointer-events: all;\n }\n\n .${barChartClassNames.barChartLinesGlobal} {\n stroke-width: 1.5px;\n stroke-linejoin: round;\n stroke-linecap: round;\n }\n\n .${barChartClassNames.barChartLine} {\n shape-rendering: auto;\n }\n\n .${barChartClassNames.barChartArea} {\n fill-opacity: 0.24;\n }\n\n .${barChartClassNames.barChartSelection} {\n position: absolute;\n top: 0;\n width: 0;\n background: rgba(0, 170, 255, 0.06);\n box-shadow: 1px 0 0 #00AAFF, -1px 0 0 #00AAFF;\n pointer-events: none;\n }\n`;\n\nexport const TooltipStyles = createGlobalStyle`\n .${barChartClassNames.barChartMouseTooltip} {\n z-index: 100;\n transition: all linear 144ms;\n\n .${barChartClassNames.barChartTooltipItem} {\n margin-bottom: 4px;\n :last-of-type {\n margin-bottom: 0;\n }\n }\n }\n`;\n","import { useCallback, useEffect, useRef } from \"react\";\n\nimport { barChartClassNames } from \"../styled\";\n\nimport { BarChartProps } from \"../types\";\n\nexport const useSelection = (node: HTMLElement | null, props: BarChartProps) => {\n const drawing = useRef<boolean>(false);\n const startX = useRef<number>(0);\n const selection = useRef<HTMLDivElement | undefined>();\n\n const clearSelection = useCallback(() => {\n if (node && selection.current) {\n drawing.current = false;\n\n node.removeChild(selection.current);\n\n selection.current = undefined;\n }\n }, [node]);\n\n const onStartDrawing = useCallback((e) => {\n const isTouch = Boolean(e.touches);\n\n e.stopPropagation();\n\n if (node && e.which !== 3) {\n clearSelection();\n\n selection.current = document.createElement(\"div\");\n selection.current.setAttribute(\"class\", barChartClassNames.barChartSelection);\n selection.current.setAttribute(\"style\", `height: calc(100% - ${props.margin?.bottom ?? 0}px)`);\n\n node.appendChild(selection.current);\n\n drawing.current = true;\n startX.current = isTouch\n ? (e.touches[0]?.pageX - (node.firstChild as HTMLElement).getBoundingClientRect().left)\n : e.offsetX;\n selection.current.style.display = \"block\";\n selection.current.style.width = \"0px\";\n selection.current.style.left = `${startX.current}px`;\n }\n }, [node]);\n\n const onDraw = useCallback((e) => {\n const isTouch = Boolean(e.touches);\n\n e.stopPropagation();\n\n if (node && drawing.current && selection.current) {\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\n const offsetX = isTouch\n ? (e.touches[0]?.pageX - (node.firstChild as HTMLElement).getBoundingClientRect().left)\n : e.offsetX;\n const newWidth = offsetX - startX.current;\n\n if (offsetX >= 0) {\n if (newWidth > 0) {\n selection.current.style.marginLeft = \"0px\";\n selection.current.style.width = offsetX <= nodeWidth ? `${newWidth}px` : `${nodeWidth - startX.current}px`;\n } else {\n selection.current.style.right = `${nodeWidth - startX.current}px`;\n selection.current.style.width = `${Math.abs(newWidth)}px`;\n selection.current.style.marginLeft = `${newWidth}px`;\n }\n }\n\n if (isTouch) {\n if (node.offsetLeft > e.touches[0].pageX) {\n selection.current.style.right = `${nodeWidth - startX.current}px`;\n selection.current.style.width = `${startX.current}px`;\n selection.current.style.marginLeft = `-${startX.current}px`;\n }\n }\n }\n }, [node]);\n\n const onMouseLeave = useCallback((e) => {\n if (drawing.current && node && selection.current) {\n if (node.offsetLeft > e.pageX) {\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\n\n selection.current.style.right = `${nodeWidth - startX.current}px`;\n selection.current.style.width = `${startX.current}px`;\n selection.current.style.marginLeft = `-${startX.current}px`;\n }\n\n if (node.offsetLeft + node.offsetWidth < e.pageX) {\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\n\n selection.current.style.left = `${startX.current}px`;\n selection.current.style.width = `${nodeWidth - startX.current}px`;\n selection.current.style.marginLeft = \"0px\";\n }\n }\n }, [node]);\n\n const onStopDrawing = useCallback(() => {\n if (node && selection.current) {\n const nodeWidth = (node.firstChild as HTMLElement).getBoundingClientRect().width;\n const selectionMinX = selection.current.offsetLeft >= 0\n ? selection.current.offsetLeft <= nodeWidth ? selection.current.offsetLeft : nodeWidth\n : 0;\n const selectionWidth = selection.current.getBoundingClientRect().right - selection.current.getBoundingClientRect().left;\n const selectionMaxX = selection.current.offsetLeft + selectionWidth <= nodeWidth\n ? selection.current.offsetLeft + selectionWidth >= 0 ? selection.current.offsetLeft + selectionWidth : 0\n : nodeWidth;\n const min = Math.round(selectionMinX);\n const max = Math.round(selectionMaxX);\n\n if (max - min > 0 && props.onSelect) {\n props.onSelect([min, max]);\n }\n }\n\n clearSelection();\n }, [node, clearSelection]);\n\n useEffect(() => {\n if (node) {\n node.childNodes.forEach((child) => {\n (child as HTMLElement).style.userSelect = \"none\";\n });\n\n node.addEventListener(\"mousedown\", onStartDrawing);\n node.addEventListener(\"touchstart\", onStartDrawing);\n node.addEventListener(\"mousemove\", onDraw);\n node.addEventListener(\"touchmove\", onDraw);\n node.addEventListener(\"mouseleave\", onMouseLeave);\n node.addEventListener(\"mouseup\", onStopDrawing);\n node.addEventListener(\"touchend\", onStopDrawing);\n document.addEventListener(\"mouseup\", onStopDrawing);\n }\n\n return () => {\n node?.removeEventListener(\"mousedown\", onStartDrawing);\n node?.removeEventListener(\"touchstart\", onStartDrawing);\n node?.removeEventListener(\"mousemove\", onDraw);\n node?.removeEventListener(\"touchmove\", onDraw);\n node?.removeEventListener(\"mouseleave\", onMouseLeave);\n node?.removeEventListener(\"mouseup\", onStopDrawing);\n node?.removeEventListener(\"touchend\", onStopDrawing);\n document.removeEventListener(\"mouseup\", onStopDrawing);\n };\n }, [node]);\n};\n","import { BarChartData } from '../types';\nimport { DrawGridProps } from './types';\n\nimport { barChartClassNames } from '../styled';\n\nexport const drawGrid = ({\n svg,\n yScale,\n xScale,\n yTicksCount,\n drawGridX,\n drawGridY,\n}: DrawGridProps) => {\n if (!drawGridY && !drawGridX) return;\n\n const global = svg\n .append('g')\n .attr('class', barChartClassNames.barChartGridGlobal);\n\n const yTicks = yScale.ticks(yTicksCount);\n const range = xScale.range();\n const domain = xScale.domain();\n\n if (drawGridX) {\n global\n .append('g')\n .selectAll('line')\n .data(yTicks)\n .join('line')\n .attr('class', d =>\n d === 0\n ? `${barChartClassNames.barChartGridLineX} ${barChartClassNames.barChartGridLineXZero}`\n : barChartClassNames.barChartGridLineX\n )\n .attr('x1', () => range[0])\n .attr('x2', () => range[1])\n .attr('y1', (d: BarChartData | any) => Math.round(yScale(d) as number))\n .attr('y2', (d: BarChartData | any) => Math.round(yScale(d) as number));\n }\n\n if (drawGridY) {\n const getX = (index: number) =>\n domain[index] !== void 0\n ? index === 0\n ? range[0]\n : Math.round(\n xScale.step() * index +\n range[0] -\n (xScale.step() / 2) * xScale.padding()\n )\n : range[1];\n\n global\n .append('g')\n .selectAll('line')\n .data(Array.from({ length: domain.length + 1 }, (_, index) => index))\n .join('line')\n .attr('class', d =>\n d === 0\n ? `${barChartClassNames.barChartGridLineY} ${barChartClassNames.barChartGridLineYZero}`\n : barChartClassNames.barChartGridLineY\n )\n .attr('x1', getX)\n .attr('x2', getX)\n .attr('y1', () => Math.round(yScale(yTicks[0]) as number))\n .attr('y2', () =>\n Math.round(yScale(yTicks[yTicks.length - 1]) as number)\n );\n }\n};\n","import { BarChartProps } from './types';\n\nexport const getDomain = ({\n data,\n minDomainValue,\n maxDomainValue,\n}: Pick<BarChartProps, 'data' | 'minDomainValue' | 'maxDomainValue'>) => {\n let MIN = Number.POSITIVE_INFINITY;\n let MAX = Number.NEGATIVE_INFINITY;\n\n data.forEach(({ groupName, ...groups }) => {\n let groupMax = 0;\n let groupMin = 0;\n\n Object.keys(groups).forEach(key => {\n const group = groups[key as never];\n\n let stackMax = 0;\n let stackMin = 0;\n\n Object.keys(group).forEach(groupKey => {\n const value = group[groupKey];\n\n if (value > 0) {\n stackMax += value;\n } else {\n stackMin += value;\n }\n });\n\n groupMax = Math.min(groupMax, stackMin);\n groupMin = Math.max(groupMin, stackMax);\n });\n\n MIN = Math.min(MIN, groupMax);\n MAX = Math.max(MAX, groupMin);\n });\n\n if (MIN === 0 && MAX === 0) {\n return {\n min: typeof minDomainValue === 'number' ? minDomainValue : 0,\n max: typeof maxDomainValue === 'number' ? maxDomainValue : 1,\n };\n }\n\n return {\n min: typeof minDomainValue === 'number' ? minDomainValue : MIN,\n max: typeof maxDomainValue === 'number' ? maxDomainValue : MAX,\n };\n};\n","import { BarChartMarshalledGroup, BarChartMarshaling } from './types';\n\nexport const marshaling = ({\n data,\n yScale,\n xScale,\n barWidth,\n barPadding,\n colors,\n marginTop,\n}: BarChartMarshaling): BarChartMarshalledGroup[][] =>\n data.map(({ groupName, ...groups }, groupIndex) => {\n const marshalledGroup: BarChartMarshalledGroup[] = [];\n const hundred = 100;\n const bandwidth = xScale.bandwidth();\n const groupsKeys = Object.keys(groups);\n\n groupsKeys.forEach((key: string, stackIndex: number) => {\n const group = groups[key as never];\n const groupKeys = Object.keys(group);\n const barGroupWidth =\n ((barWidth as number) + (barPadding as number)) * groupsKeys.length -\n (groupKeys.length > 1 ? (barPadding as number) : 0);\n\n let stackMax = 0;\n let stackMin = 0;\n\n groupKeys.forEach(groupKey => {\n const value = group[groupKey];\n const color = colors[groupKey];\n const x =\n ((barWidth as number) + (barPadding as number)) * stackIndex +\n bandwidth / 2 -\n barGroupWidth / 2;\n const isPositiveValue = value > 0;\n const height = isPositiveValue\n ? Math.abs(\n ((yScale(stackMax - value) - yScale(stackMax) + Number.EPSILON) *\n hundred) /\n hundred\n )\n : Math.abs(\n ((yScale(stackMin - value) - yScale(stackMin) + Number.EPSILON) *\n hundred) /\n hundred\n );\n\n if (isPositiveValue) {\n stackMax += value;\n }\n\n const y = isPositiveValue\n ? ((yScale(stackMax) + Number.EPSILON) * hundred) / hundred\n : yScale(stackMin) - yScale(0) + yScale(0);\n\n marshalledGroup.push({\n x,\n y: y + (marginTop || 0),\n height,\n color,\n value,\n groupName: groupName as string,\n name: groupKey,\n stackIndex,\n groupIndex,\n });\n\n if (!isPositiveValue) {\n stackMin += value;\n }\n });\n });\n\n return marshalledGroup;\n });\n","import { BarChartLabelPosition, BarChartMarshalledGroup } from '../types';\n\nexport const getLabelY = (\n labelPosition: BarChartLabelPosition,\n y2: number,\n item: BarChartMarshalledGroup\n): number => {\n switch (labelPosition) {\n case 'center':\n return item.y + item.height / 2 - y2;\n case 'bottom':\n return item.y + item.height - y2;\n default:\n return item.y;\n }\n};\n","import { BarChartLabelPosition } from '../types';\n\nimport {\n Label as LabelUI,\n LabelTop,\n LabelBottom,\n} from '../../../common/components/tooltips';\n\nexport const getLabel = (labelPosition: BarChartLabelPosition) => {\n switch (labelPosition) {\n case 'top':\n return LabelTop;\n case 'bottom':\n return LabelBottom;\n default:\n return LabelUI;\n }\n};\n","import React from 'react';\nimport * as d3 from 'd3';\nimport ReactDOMServer from 'react-dom/server';\n\nimport { DrawTooltipProps } from './types';\nimport {\n BarChartMarshalledGroup,\n BarChartLineData,\n BarChartMergedData,\n} from '../types';\n\nimport { getLabelY } from './getLabelY';\nimport { getLabel } from './getLabel';\nimport { barChartClassNames } from '../styled';\nimport {\n TooltipFlex,\n TooltipGroupName,\n LabelFlex,\n LabelFlexCenter,\n TooltipContainer,\n TooltipItem,\n ColFlex,\n ColorBox,\n ColorLine,\n Name,\n Value,\n} from '../../../common/components/tooltips';\n\nexport const drawTooltip = ({\n svg,\n node,\n data,\n marshalledData,\n xScale,\n yScale,\n renderTooltip,\n labelPosition,\n marginTop,\n renderLabel,\n barWidth,\n barPadding,\n dynamicTooltipEnable,\n hideTooltipGroupName,\n tooltipY,\n tooltipBind,\n lineData,\n formatTooltipValue,\n formatTooltipName,\n tooltipYDomain,\n setTooltipPosition,\n onLabelItem,\n isBarTooltip,\n bars,\n tooltipRoot,\n tooltipClassName,\n onBarClick,\n onBarHover,\n}: DrawTooltipProps) => {\n d3.select(node)\n .select(`.${barChartClassNames.barChartMouseContainer}`)\n .remove();\n\n const xScaleBandDomain = xScale.domain();\n const [x1, x2] = xScale.range();\n const [y1, y2] = yScale.range();\n const bandwidth = xScale.bandwidth();\n const format = d3.format(',');\n\n const getX = (index: number): number =>\n xScaleBandDomain[index] !== void 0\n ? index === 0\n ? x1\n : Math.round(\n xScale.step() * index + x1 - (xScale.step() / 2) * xScale.padding()\n )\n : x2;\n const groups = xScaleBandDomain.map(value => getX(Number(value) + 1));\n\n const topYDomain = tooltipYDomain\n ? tooltipYDomain({ data: marshalledData, lineData, yScale })\n : marshalledData.reduce((acc, curr, index) => {\n const lineMin =\n d3.min(lineData as BarChartLineData[], ({ values }) =>\n typeof values[index] === 'number'\n ? yScale((values[index] || 0) - y2)\n : Number.POSITIVE_INFINITY\n ) || Number.POSITIVE_INFINITY;\n\n acc.push(\n curr.reduce(\n (acc, { y }) => Math.min(acc, y, lineMin as number),\n Number.POSITIVE_INFINITY\n ) as any\n );\n return acc;\n }, []);\n\n const mouseGlobal = svg.append('g').attr('class', 'lineChartMouseGlobal');\n const mouseRect = mouseGlobal\n .append('rect')\n .attr('width', x2 - x1)\n .attr('height', Math.abs(y1 - y2))\n .attr('class', barChartClassNames.barChartMouseRect)\n .attr('transform', `translate(${x1}, ${y2})`);\n\n if (dynamicTooltipEnable) {\n const tooltipContainer: Element | null =\n tooltipRoot || document.querySelector('body');\n let tooltip: d3.Selection<any, unknown, any, any> = d3.select(\n `.${barChartClassNames.barChartMouseTooltip}`\n );\n\n if (tooltip.size() === 0) {\n tooltip = d3\n .select(tooltipContainer)\n .append('div')\n .attr('class', barChartClassNames.barChartMouseTooltip)\n .style('opacity', '0')\n .style('position', 'absolute')\n .html(() => {\n const html = ReactDOMServer.renderToString(\n <TooltipFlex className={barChartClassNames.barChartTooltipFlex} />\n );\n\n return html;\n });\n }\n\n const barChartTootipFlex = tooltip.select(\n `.${barChartClassNames.barChartTooltipFlex}`\n );\n\n let isVisible = false;\n let flagCurrIndex: number | null = null;\n\n const setVisible = (visible?: boolean) => {\n isVisible = Boolean(visible);\n\n const opacity = isVisible ? '1' : '0';\n tooltip.style('opacity', opacity);\n\n if (!isVisible) {\n tooltip.attr('class', barChartClassNames.barChartMouseTooltip);\n flagCurrIndex = null;\n tooltip.style('transition', 'none');\n tooltip.style('top', null);\n tooltip.style('left', null);\n } else {\n tooltip.attr(\n 'class',\n `${barChartClassNames.barChartMouseTooltip} ${tooltipClassName || ''}`\n );\n tooltip.style('transition', null);\n }\n };\n\n mouseRect.on('mouseout.tooltip', () => setVisible());\n mouseRect.on('touchmove.tooltip mousemove.tooltip', event => {\n const [docX, docY] = d3.pointer(event, document);\n const [rectrX] = d3.pointer(event, mouseRect);\n const [nodeX, nodeY] = d3.pointer(event, node);\n const x = rectrX - (rectrX - nodeX);\n const offsetX = docX - nodeX;\n const offsetY = docY - nodeY;\n\n const currIndex = groups.findIndex(value => x <= value);\n\n if (isBarTooltip) {\n const containts = document.elementsFromPoint(\n event.clientX,\n event.clientY\n );\n const currBars = d3\n .select(bars.nodes()[currIndex])\n .selectAll('rect')\n .nodes();\n const isContains = containts.some(item => currBars.includes(item));\n\n if (!isContains) {\n if (isVisible) {\n setVisible(false);\n }\n mouseRect.style('cursor', 'default');\n return;\n } else {\n mouseRect.style('cursor', 'pointer');\n }\n }\n\n const top =\n (typeof tooltipY === 'number'\n ? tooltipY\n : ((topYDomain[currIndex] as unknown) as number) - y2) + offsetY;\n const left =\n (tooltipBind\n ? (xScale((currIndex as unknown) as string) || 0) + bandwidth / 2\n : x) + offsetX;\n\n if (tooltipBind && flagCurrIndex === currIndex) {\n return;\n }\n\n let currData = marshalledData[currIndex] as BarChartMergedData;\n if (Array.isArray(currData) && currData.length === 0) {\n return;\n }\n\n if (lineData) {\n const currLineData = lineData.map(({ values, ...rest }) => ({\n ...rest,\n value: values[currIndex],\n groupName: data[currIndex] && data[currIndex].groupName,\n }));\n\n if (Array.isArray(currLineData) && Array.isArray(currData)) {\n currData = currData.concat(currLineData as BarChartMergedData);\n }\n }\n\n const svgWidth = (svg.node() as SVGElement).getBoundingClientRect()\n .width as number;\n\n if (typeof setTooltipPosition === 'function') {\n setTooltipPosition({\n left,\n top,\n tooltip,\n svgWidth,\n });\n } else if (!setTooltipPosition) {\n tooltip.style('left', `${left}px`).style('top', `${top}px`);\n }\n\n if (renderTooltip) {\n barChartTootipFlex.html(() => {\n const html = ReactDOMServer.renderToString(\n <>\n {renderTooltip(\n currData,\n setTooltipPosition\n ? {\n left,\n top,\n tooltip,\n svgWidth,\n }\n : undefined,\n barWidth\n )}\n </>\n );\n\n return html;\n });\n } else {\n if (!isVisible) {\n setVisible(true);\n }\n\n barChartTootipFlex.html(() => {\n const html = ReactDOMServer.renderToString(\n <TooltipContainer className={barChartClassNames.barChartTooltip}>\n {currData && currData[0] && !hideTooltipGroupName && (\n <TooltipGroupName\n className={barChartClassNames.barChartTooltipGroupName}\n >\n {currData[0].groupName}\n </TooltipGroupName>\n )}\n {currData &&\n currData.map(\n ({ name, value, stroke, fill, color, lineType }) => (\n <TooltipItem\n key={name}\n className={barChartClassNames.barChartTooltipItem}\n >\n <ColFlex\n className={barChartClassNames.barChartTooltipColFlex}\n >\n {lineType ? (\n <ColorLine\n className={barChartClassNames.barChartColorLine}\n style={{ backgroundColor: stroke || fill }}\n />\n ) : (\n <ColorBox\n className={barChartClassNames.barChartColorBox}\n style={{ backgroundColor: color }}\n />\n )}\n <Name\n className={barChartClassNames.barChartTooltipName}\n >\n {formatTooltipName ? formatTooltipName(name) : name}\n </Name>\n </ColFlex>\n <Value\n className={barChartClassNames.barChartTooltipValue}\n >\n {formatTooltipValue\n ? formatTooltipValue(value, name)\n : format(value)}\n </Value>\n </TooltipItem>\n )\n )}\n </TooltipContainer>\n );\n\n return html;\n });\n }\n\n flagCurrIndex = currIndex;\n if (!isVisible) {\n setVisible(true);\n }\n });\n }\n\n const container = d3\n .select(node)\n .append('div')\n .attr('class', barChartClassNames.barChartMouseContainer);\n\n const labelContainer = container\n .append('div')\n .attr('class', barChartClassNames.barChartLabelContainer)\n .style('position', 'absolute')\n .style('top', `${y2}px`);\n\n const isMouseWithin = (e: MouseEvent, callback: (group: BarChartMarshalledGroup) => void) => {\n const [rectrX, rectrY] = d3.pointer(e, mouseRect);\n const [nodeX, nodeY] = d3.pointer(e, node);\n const x = rectrX - (rectrX - nodeX);\n const y = rectrY - nodeY;\n\n const currIndex = groups.findIndex(value => x <= value);\n const dataItem = marshalledData[currIndex][0];\n\n if (dataItem.height >= y1 - y) {\n callback(dataItem);\n }\n };\n\n mouseGlobal\n .on(\"click\", e => isMouseWithin(e, (dataItem) => onBarClick && onBarClick(dataItem)))\n .on(\"mousemove\", e => isMouseWithin(e, (dataItem) => onBarHover && onBarHover(dataItem)))\n .on(\"mouseleave\", () => onBarHover && onBarHover(undefined));\n\n if (labelPosition) {\n const concatedData: BarChartMarshalledGroup[][] = lineData\n ? marshalledData.map((stack, index) =>\n stack.concat(\n lineData.map(({ values, name, stroke }) => {\n const { stacksCount } = stack.reduce(\n (acc, { stackIndex }) => {\n const { indexFlag, stacksCount } = acc;\n if (stackIndex !== indexFlag) {\n return {\n indexFlag: stackIndex,\n stacksCount: stacksCount + 1,\n };\n }\n return acc;\n },\n {\n indexFlag: -1,\n stacksCount: 0,\n }\n );\n const barsWidth =\n (barWidth * stacksCount +\n (barPadding || 0) * (stacksCount - 1)) /\n 2;\n\n return {\n x: stack[0].x - barWidth / 2 + barsWidth,\n y: yScale(values[index] as number) + marginTop,\n height: 0,\n color: stroke,\n value: values[index],\n groupName: stack[0].groupName,\n name,\n stackIndex: 0,\n groupIndex: index,\n };\n }) as BarChartMarshalledGroup[]\n )\n )\n : marshalledData;\n\n const groups = labelContainer\n .selectAll('div')\n .data(concatedData)\n .enter()\n .append('div')\n .style('position', 'absolute')\n .style(\n 'transform',\n (_: BarChartMarshalledGroup[], index) =>\n `translate(${Math.round(\n xScale((index as unknown) as string) as number\n )}px,${-(marginTop || 0)}px)`\n );\n\n const LabelFlexStyled =\n labelPosition === 'center' ? LabelFlexCenter : LabelFlex;\n\n const LabelStyle = getLabel(labelPosition);\n\n groups\n .selectAll('span')\n .data((item: BarChartMarshalledGroup[]) =>\n onLabelItem ? onLabelItem(item) : item\n )\n .join('div')\n .style('left', item => `${Math.round(item.x + barWidth / 2)}px`)\n .style(\n 'top',\n (item: BarChartMarshalledGroup) =>\n `${getLabelY(labelPosition, y2, item)}px`\n )\n .style('position', 'absolute')\n .html((item: BarChartMarshalledGroup) =>\n ReactDOMServer.renderToString(\n <LabelFlexStyled className={barChartClassNames.barChartLabelFlex}>\n {renderLabel ? (\n renderLabel({ ...item, barWidth })\n ) : (\n <LabelStyle className={barChartClassNames.barChartLabel}>\n {format(item.value)}\n </LabelStyle>\n )}\n </LabelFlexStyled>\n )\n );\n }\n};\n","import { ResizeBarWidthProps } from './types';\n\nexport const resizeBarWidth = ({\n data,\n range,\n barWidth,\n barPadding,\n sectionPadding,\n}: ResizeBarWidthProps): number => {\n const groupPadding = typeof sectionPadding === 'number' ? sectionPadding : 0;\n const chartWidth = range[1] - range[0];\n const barsWidth = data.reduce((acc, { groupName, ...curr }) => {\n return (\n acc +\n Object.keys(curr).reduce(\n (acc, _key, index) =>\n index > 0\n ? acc + (barWidth || 0) + (barPadding || 0)\n : acc + barWidth,\n 0\n ) +\n groupPadding\n );\n }, groupPadding);\n\n if (chartWidth < barsWidth) {\n return Math.floor(barWidth * (chartWidth / barsWidth));\n }\n\n return barWidth;\n};\n","import { BarChartMarshalledGroup } from '../types';\nimport { GetBarsProps } from './types';\n\nconst MIN_BAR_HEIGHT = 2;\n\nexport const getBars = ({ groups, barWidth }: GetBarsProps) => {\n return groups\n .selectAll('rect')\n .data((item: BarChartMarshalledGroup[]) => item)\n .join('rect')\n .attr('x', (item: BarChartMarshalledGroup) => item.x)\n .attr('y', (item: BarChartMarshalledGroup) => item.y)\n .attr('width', barWidth)\n .attr('height', (item: BarChartMarshalledGroup) =>\n item.value === null ? 0 : Math.max(item.height, MIN_BAR_HEIGHT))\n .style('fill', (item: BarChartMarshalledGroup) => item.color);\n};\n","import * as d3 from 'd3';\nimport { uniqueId } from 'lodash';\n\nimport { barChartClassNames as classNames } from './styled';\nimport { drawGrid } from './drawGrid';\nimport { appendSvg } from '../../helpers';\nimport { computeDimensions } from '../../helpers/computeDimensions';\nimport { getDomain } from './getDomain';\nimport { marshaling } from './marshaling';\nimport { drawTooltip } from './drawTooltip';\nimport { resizeBarWidth } from './resizeBarWidth';\nimport { drawLines } from './drawLines';\nimport { getBars } from './getBars';\nimport { BarChartProps, BarChartData, BarChartMarshalledGroup } from './types';\n\nconst MIN_BAR_HEIGHT = 2;\n\nexport const draw = (node: HTMLElement | null, props: BarChartProps): void => {\n const {\n data,\n lineData = [],\n markers = [],\n barWidth: barWidthProp,\n barPadding,\n colors,\n margin,\n xAxisPadding,\n yAxisPadding,\n drawGridY,\n drawGridX,\n customYScale,\n customXScale,\n customYAxisLeft,\n customXAxisBottom,\n customYAxis,\n customXAxis,\n customBars,\n customize,\n dynamicTooltipEnable,\n hideTooltipGroupName,\n renderTooltip,\n labelPosition,\n renderLabel,\n tooltipY,\n tooltipBind,\n stackedLine,\n curve,\n formatTooltipValue,\n formatTooltipName,\n sectionPadding,\n minValuesLine,\n tooltipYDomain,\n marshalledMap,\n minValue,\n maxValue,\n minDomainValue,\n maxDomainValue,\n drawBars,\n setTooltipPosition,\n onLabelItem,\n isBarTooltip,\n xScaleItemWidth,\n tooltipRoot,\n tooltipClassName,\n onBarClick,\n onBarHover,\n } = props;\n\n if (node !== null && data.length) {\n const marginTop = margin ? margin.top : 0;\n const marginRight = margin ? margin.right : 0;\n const marginBottom = margin ? margin.bottom : 0;\n const marginLeft = margin ? margin.left : 0;\n const defaultBarWidth = 12;\n const { width: nodeWidth } = node.getBoundingClientRect();\n const width = props.width || nodeWidth;\n const height = props.height || 0;\n const barDomain = getDomain({\n data,\n minDomainValue,\n maxDomainValue,\n });\n\n const min =\n typeof minValue === 'number'\n ? minValue\n : Math.min(\n d3.min(lineData, ({ values }) => d3.min(values as number[])) ||\n Number.POSITIVE_INFINITY,\n barDomain.min || 0\n );\n const max =\n typeof maxValue === 'number'\n ? maxValue\n : Math.max(\n d3.max(lineData, ({ values }) => d3.max(values as number[])) ||\n Number.NEGATIVE_INFINITY,\n barDomain.max\n );\n const svg = appendSvg(node, width, height || 0);\n const yTicksCountDefault = 6;\n const labels = data.map((item: BarChartData) => item.groupName as string);\n let barWidth = barWidthProp || defaultBarWidth;\n\n const yScale = d3\n .scaleLinear()\n .domain([min, max])\n .range([\n height - marginTop - marginBottom - (xAxisPadding || 0),\n marginTop,\n ])\n .nice();\n\n customYScale && customYScale(yScale);\n\n const yTicks = yScale.ticks();\n const yAxisLeft = d3.axisLeft(yScale).ticks(yTicksCountDefault);\n\n customYAxisLeft && customYAxisLeft(yAxisLeft);\n\n const yTicksCount = yAxisLeft.tickArguments()[0];\n\n const yAxis = svg\n .append('g')\n .attr('class', classNames.barChartYAxis)\n .call(yAxisLeft);\n\n yAxis.selectAll('.tick').attr('class', value => {\n return value === 0 ? `tick ${classNames.barChartYAxisZeroTick}` : 'tick';\n });\n\n customYAxis && customYAxis(yAxis);\n\n const { width: yAxisWidth } = computeDimensions(yAxis);\n const range = [\n marginLeft + yAxisWidth + (yAxisPadding || 0),\n width - marginRight,\n ];\n\n const xScale = d3\n .scaleBand()\n .domain(d3.range(data.length) as [])\n .range(range);\n\n barWidth = resizeBarWidth({\n data,\n sectionPadding,\n range,\n barWidth,\n barPadding,\n });\n\n customXScale && customXScale(xScale);\n\n const [x1, x2] = xScale.range();\n\n const xAxisBottom = d3\n .axisBottom(xScale)\n .tickFormat(value => labels[Number(value)]);\n\n if (typeof xScaleItemWidth === 'number') {\n xAxisBottom\n .tickValues(\n xScale.domain().filter((_, i, array) => {\n const chartWidth = x2 - x1;\n const ticks = Math.round(chartWidth / xScaleItemWidth);\n const length = array.length;\n const divider = Math.round(length / ticks);\n\n return !(i % divider);\n })\n )\n .tickSizeOuter(0);\n }\n\n customXAxisBottom && customXAxisBottom(xAxisBottom, { node, labels });\n\n const xAxis = svg\n .append('g')\n .call(xAxisBottom)\n .attr('class', classNames.barChartXAxis);\n\n customXAxis && customXAxis(xAxis);\n\n const marshalled = marshaling({\n data,\n yScale,\n xScale,\n barWidth,\n barPadding: typeof barPadding === 'number' ? barPadding : 0,\n colors,\n marginTop,\n });\n\n const marshalledData = marshalledMap\n ? marshalledMap(marshalled)\n : marshalled;\n\n yAxis.attr('transform', `translate( ${marginLeft + yAxisWidth}, 0)`);\n\n drawGrid({\n svg,\n yScale,\n xScale,\n yTicksCount,\n drawGridY,\n drawGridX,\n });\n\n xAxis.attr(\n 'transform',\n `translate(0, ${yScale(yTicks[0]) + (xAxisPadding || 0)})`\n );\n\n const maskId = `height-limit-mask-${uniqueId()}`;\n\n svg.append('defs')\n .append('mask')\n .attr('id', maskId)\n .append('rect')\n .attr('width', '100%')\n .attr('height', height - marginBottom + MIN_BAR_HEIGHT)\n .attr('fill', 'white');\n\n const gSvg = svg.append('g')\n .attr('class', classNames.barChartBarGlobal)\n .attr('mask', `url(#${maskId})`);\n\n const groups = gSvg\n .selectAll('g')\n .data(marshalledData)\n .enter()\n .append('g')\n .attr(\n 'transform',\n (_: BarChartMarshalledGroup[], i) =>\n `translate(${Math.round(\n xScale((i as unknown) as string) as number\n )},${-(marginTop || 0)})`\n );\n\n const bars = drawBars\n ? drawBars({ groups, yScale, marshalledData, barWidth })\n : getBars({ groups, barWidth });\n\n markers.forEach((marker) => {\n if (!marker) {\n return;\n }\n\n if (marker.horizontal) {\n if (marker.line) {\n svg.append('line')\n .style(\"stroke\", marker.lineColor || marker.color || \"inherit\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", (\"5, 3\"))\n .attr(\"x1\", marginLeft + yAxisWidth)\n .attr(\"y1\", yScale(marker.value) + 1)\n .attr(\"x2\", width)\n .attr(\"y2\", yScale(marker.value) + 1);\n }\n\n svg.append(\"text\")\n .attr(\"y\", yScale(marker.value) + 1)\n .attr(\"x\", marginLeft + yAxisWidth)\n .attr('text-anchor', 'middle')\n .attr(\"class\", [\"marker\", marker.className].filter(Boolean).join(\" \"))\n .style(\"fill\", marker?.color || \"inherit\")\n .text(marker.label);\n\n return;\n }\n\n if (marker.line) {\n svg.append('line')\n .style(\"stroke\", marker.lineColor || marker.color || \"inherit\")\n .style(\"stroke-width\", 1)\n .style(\"stroke-dasharray\", (\"5, 3\"))\n .attr(\"x1\", width / data.length * marker.value + 1)\n .attr(\"y1\", 0)\n .attr(\"x2\", width / data.length * marker.value + 1)\n .attr(\"y2\", (height - marginTop - marginBottom + 8));\n }\n\n svg.append(\"text\")\n .attr(\"y\", height - 2)\n .attr(\"x\", width / data.length * marker.value + 1)\n .attr('text-anchor', marker.align === 'right' ? 'end' : marker.align === 'left' ? 'start' : 'middle')\n .attr(\"class\", [\"marker\", marker.className].filter(Boolean).join(\" \"))\n .style(\"fill\", marker?.color || \"inherit\")\n .text(marker.label);\n });\n\n let lines = null;\n\n if (Array.isArray(lineData) && lineData.length > 0) {\n lines = drawLines({\n svg,\n lineData,\n xScale,\n yScale,\n min: typeof minValuesLine === 'number' ? minValuesLine : min,\n stackedLine,\n curve,\n });\n }\n\n customBars && customBars({ bars, yScale, lines, marshalledData, lineData });\n\n if (dynamicTooltipEnable || labelPosition) {\n drawTooltip({\n svg,\n node,\n xScale,\n yScale,\n marshalledData,\n data,\n lineData,\n renderTooltip,\n labelPosition,\n marginTop,\n renderLabel,\n barWidth,\n barPadding,\n dynamicTooltipEnable,\n hideTooltipGroupName,\n tooltipY,\n tooltipBind,\n formatTooltipValue,\n formatTooltipName,\n tooltipYDomain,\n setTooltipPosition,\n onLabelItem,\n isBarTooltip,\n bars: groups,\n tooltipRoot,\n tooltipClassName,\n onBarClick,\n onBarHover,\n });\n }\n\n customize && customize({ svg, marshalledData, yScale, xScale, lineData });\n }\n};\n","import React, { FC, useEffect } from 'react';\n\nimport { SvgWrapper, TooltipStyles } from './styled';\n\nimport { useNode } from '../../hooks';\nimport { useResize } from '../../hooks';\nimport { useSelection } from \"./hooks/useSelection\";\n\nimport { draw } from './draw';\n\nimport { BarChartProps } from './types';\n\nexport const BarChart: FC<BarChartProps> = (props) => {\n const { className, style, children, selectable } = props;\n const [ref, node] = useNode();\n\n useEffect(() => {\n node && draw(node, props);\n }, [node, props]);\n\n const onDraw = () => draw(node, props);\n\n useResize(props.width, onDraw);\n useSelection(selectable ? node : null, props);\n\n return (\n <div className={className} style={style}>\n <TooltipStyles />\n <SvgWrapper ref={ref} selectable={selectable}>{children}</SvgWrapper>\n </div>\n );\n};\n\nBarChart.defaultProps = {\n data: [],\n colors: {},\n margin: {\n top: 10,\n right: 10,\n bottom: 10,\n left: 0,\n },\n barWidth: 12,\n barPadding: 0,\n height: 320,\n yAxisPadding: 0,\n xAxisPadding: 0,\n tooltipBind: true,\n sectionPadding: 1,\n};\n","import { useMemo } from 'react';\nimport * as d3 from 'd3';\n\nimport {\n HorizontalBarChartProps,\n HorizontalBarChartData,\n HorizontalBarChartMarshalingData,\n} from '../types';\n\nconst hundred = 100;\n\nexport const useMarshaling = ({\n data,\n fullExtent,\n maxValue,\n labels,\n}: Pick<\n HorizontalBarChartProps,\n 'data' | 'fullExtent' | 'maxValue' | 'labels'\n>): {\n fullMax: number;\n data: HorizontalBarChartMarshalingData[][];\n} => {\n return useMemo(() => {\n const fullMax = d3.max(data, item =>\n d3.sum(item, ({ value }) => value)\n ) as number;\n const scaleLinear = d3\n .scaleLinear()\n .domain([\n 0,\n typeof maxValue === 'number' ? maxValue : fullMax,\n ] as Iterable<d3.NumberValue>)\n .range([0, hundred]);\n\n return {\n fullMax,\n data: data.map((item: HorizontalBarChartData[], index) => {\n if (!fullExtent) {\n scaleLinear.domain([\n 0,\n typeof maxValue === 'number'\n ? maxValue\n : d3.sum(item, ({ value }) => value),\n ] as Iterable<d3.NumberValue>);\n }\n\n return item.map(({ value, ...rest }) => ({\n ...rest,\n value,\n width: scaleLinear(value),\n groupName: labels ? labels[index] : '',\n }));\n }),\n };\n }, [data, fullExtent, maxValue, labels]);\n};\n","import styled from 'styled-components';\n\nimport { TooltipFlex as TooltipFlexUI } from '../../common/components/tooltips';\n\nexport const horizontalBarChartClassNames = {\n horizontalBarChartButtonTd: 'horizontalBarChartButtonTd',\n horizontalBarChartLabelTd: 'horizontalBarChartLabelTd',\n horizontalBarChartLabelCell: 'horizontalBarChartLabelCell',\n horizontalBarChartBarTd: 'horizontalBarChartBarTd',\n horizontalBarChartBarFlex: 'horizontalBarChartBarFlex',\n horizontalBarChartBar: 'horizontalBarChartBar',\n horizontalBarChartBarFirst: 'horizontalBarChartBarFirst',\n horizontalBarChartBarLast: 'horizontalBarChartBarLast',\n horizontalBarChartBarOnly: 'horizontalBarChartBarOnly',\n horizontalBarChartTooltipFlex: 'horizontalBarChartTooltipFlex',\n horizontalBarChartStackWrapper: 'horizontalBarChartStackWrapper',\n horizontalBarChartTooltipContainer: 'horizontalBarChartTooltipContainer',\n horizontalBarChartStackSumContainer: 'horizontalBarChartStackSumContainer',\n horizontalBarChartStackSum: 'horizontalBarChartStackSum',\n horizontalBarChartXScaleTd: 'horizontalBarChartXScaleTd',\n horizontalBarChartXScaleTicks: 'horizontalBarChartXScaleTicks',\n horizontalBarChartXScaleTick: 'horizontalBarChartXScaleTick',\n horizontalBarChartTooltipItem: 'horizontalBarChartTooltipItem',\n horizontalBarChartTooltipName: 'horizontalBarChartTooltipName',\n horizontalBarChartTooltipValue: 'horizontalBarChartTooltipValue',\n};\n\nexport const Table = styled.table`\n width: 100%;\n`;\n\nexport const LabelCell = styled.div`\n text-align: right;\n`;\n\nexport const BarFlex = styled.div`\n width: 100%;\n display: flex;\n height: 1rem;\n`;\n\nexport const BarsTd = styled.td`\n width: 100%;\n position: relative;\n vertical-align: middle;\n`;\n\nexport const TooltipFlex = styled(TooltipFlexUI)`\n position: absolute;\n top: 0;\n left: 50%;\n transform: translate(-50%, -50%);\n will-change: left, top;\n`;\n\nexport const StackSumContainer = styled.div`\n position: relative;\n`;\n\nexport const StackSum = styled.div`\n white-space: nowrap;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(0, -50%);\n`;\n\nexport const StackWrapper = styled.div`\n position: absolute;\n top: 0;\n display: flex;\n justify-content: flex-start;\n height: 100%;\n`;\n","import React from 'react';\nimport * as d3 from 'd3';\n\nimport {\n horizontalBarChartClassNames as classNames,\n TooltipFlex,\n} from '../styled';\nimport {\n TooltipContainer,\n TooltipItem,\n Name,\n Value,\n ColorBox,\n} from '../../../common/components/tooltips';\n\nimport { TooltipProps } from './types';\n\nexport const Tooltip: React.FC<TooltipProps> = ({\n renderTooltip,\n bars,\n style,\n className,\n}): React.ReactElement => {\n const format = d3.format(',');\n\n return (\n <TooltipFlex\n className={`${classNames.horizontalBarChartTooltipFlex} ${className ||\n ''}`}\n style={style}\n >\n <TooltipContainer\n className={classNames.horizontalBarChartTooltipContainer}\n >\n {renderTooltip\n ? renderTooltip(bars)\n : bars.map(({ color, name, value, groupName }, index) => (\n <TooltipItem\n key={`${name || ''}-${index}-${groupName}`}\n className={classNames.horizontalBarChartTooltipItem}\n >\n {color && <ColorBox style={{ backgroundColor: color }} />}\n {name && (\n <Name className={classNames.horizontalBarChartTooltipName}>\n {name}\n </Name>\n )}\n <Value className={classNames.horizontalBarChartTooltipValue}>\n {format(value)}\n </Value>\n </TooltipItem>\n ))}\n </TooltipContainer>\n </TooltipFlex>\n );\n};\n","import React, { useCallback, useEffect } from 'react';\nimport * as d3 from 'd3';\nimport { render, unmountComponentAtNode } from 'react-dom';\n\nimport {\n HorizontalBarChartMarshalingData,\n HorizontalBarChartProps,\n} from '../../types';\nimport { UseTooltip } from './types';\n\nimport { Tooltip } from '../../Tooltip';\n\nconst rootElement: HTMLDivElement = document.createElement('div');\n\nexport const useTooltip = ({\n renderTooltip,\n tooltipBind,\n tooltipStyle,\n tooltipRoot,\n tooltipClassName,\n hideTooltip,\n}: Pick<\n HorizontalBarChartProps,\n | 'renderTooltip'\n | 'tooltipBind'\n | 'tooltipStyle'\n | 'tooltipRoot'\n | 'tooltipClassName'\n | 'hideTooltip'\n>): UseTooltip => {\n useEffect(() => {\n const container: Element | null =\n tooltipRoot || document.querySelector('body');\n\n container && container.appendChild(rootElement);\n return () => {\n unmountComponentAtNode(rootElement);\n };\n }, [tooltipRoot]);\n\n const onMouseMove = useCallback(\n (event: React.MouseEvent, bars: HorizontalBarChartMarshalingData[]) => {\n let [x, y] = d3.pointer(event, document);\n\n if (!tooltipBind && 'getBoundingClientRect' in event.target) {\n const {\n width,\n height,\n }: DOMRect = (event.target as HTMLDivElement).getBoundingClientRect();\n const [barX, barY] = d3.pointer(event, event.target);\n\n x = x - barX + width / 2;\n y = y - barY + height / 2;\n }\n\n if (rootElement) {\n rootElement.style.visibility = 'visible';\n }\n\n render(\n <Tooltip\n style={{\n left: x,\n top: y,\n ...tooltipStyle,\n }}\n bars={bars}\n renderTooltip={renderTooltip}\n className={tooltipClassName}\n />,\n rootElement\n );\n },\n [tooltipClassName, tooltipStyle, renderTooltip, tooltipBind]\n );\n\n const onMouseLeave = useCallback(() => {\n if (rootElement) {\n rootElement.style.visibility = 'hidden';\n hideTooltip && hideTooltip();\n }\n }, [hideTooltip]);\n\n return [onMouseMove, onMouseLeave];\n};\n","import React, { Fragment, useMemo, CSSProperties, ReactNode } from 'react';\n\nimport {\n horizontalBarChartClassNames as classNames,\n StackWrapper,\n} from '../styled';\n\nimport { UseTooltip } from './useTooltip/types';\nimport {\n HorizontalBarChartMarshalingData,\n HorizontalBarChartProps,\n} from '../types';\n\nexport const useStackWrapper = (stackedTooltip?: boolean) => {\n return useMemo(\n () =>\n stackedTooltip\n ? ({\n item,\n mouseMove,\n mouseLeave,\n tooltipBind,\n ...props\n }: {\n style?: CSSProperties;\n item: HorizontalBarChartMarshalingData[];\n tooltipBind: HorizontalBarChartProps['tooltipBind'];\n mouseMove: UseTooltip[0];\n mouseLeave: UseTooltip[1];\n }) => (\n <StackWrapper\n className={classNames.horizontalBarChartStackWrapper}\n onMouseOver={event => mouseMove(event, item)}\n onMouseMove={\n tooltipBind ? event => mouseMove(event, item) : void 0\n }\n onMouseOut={mouseLeave}\n {...props}\n />\n )\n : ({ children }: { children?: ReactNode }) => (\n <Fragment>{children}</Fragment>\n ),\n [stackedTooltip]\n );\n};\n","import styled from 'styled-components';\n\nexport const BarStyled = styled.div`\n position: relative;\n display: inline-flex;\n height: 100%;\n`;\n","import React from 'react';\n\nimport { BarProps } from './types';\n\nimport { horizontalBarChartClassNames as classNames } from '../styled';\nimport { BarStyled } from './styled';\n\nexport const Bar: React.FC<BarProps> = ({\n withTooltip,\n bar,\n formatNativeTitle,\n tooltipBind,\n mouseMove,\n mouseLeave,\n pointerEventsNone,\n isFirstChild,\n isLastChild,\n isOnlyChild,\n}): React.ReactElement => {\n const { color, width } = bar;\n const ceiledWidth = Math.abs(width);\n const onMouseMove = withTooltip\n ? (event: React.MouseEvent) => mouseMove(event, [bar])\n : void 0;\n const onMouseLeave = withTooltip ? () => mouseLeave() : void 0;\n\n return (\n <BarStyled\n className={`${classNames.horizontalBarChartBar} ${\n isFirstChild ? classNames.horizontalBarChartBarFirst : ''\n } ${isLastChild ? classNames.horizontalBarChartBarLast : ''} ${\n isOnlyChild ? classNames.horizontalBarChartBarOnly : ''\n }`}\n style={{\n width: `${ceiledWidth}%`,\n backgroundColor: color,\n pointerEvents: pointerEventsNone ? 'none' : 'auto',\n }}\n title={formatNativeTitle ? formatNativeTitle(bar) : ''}\n onMouseOver={onMouseMove}\n onMouseMove={tooltipBind ? onMouseMove : void 0}\n onMouseOut={onMouseLeave}\n />\n );\n};\n","import { useMemo } from 'react';\nimport * as d3 from 'd3';\n\nimport {\n HorizontalBarChartProps,\n HorizontalBarChartScaleItem,\n} from '../../types';\n\nconst hundred = 100;\n\nexport const useScale = ({\n maxValue,\n scaleTicks,\n scaleDomain,\n}: Pick<\n HorizontalBarChartProps,\n 'maxValue' | 'scaleTicks' | 'scaleDomain'\n>): HorizontalBarChartScaleItem[] => {\n return useMemo(() => {\n const scaleLinear = d3\n .scaleLinear()\n .domain([0, maxValue] as Iterable<d3.NumberValue>)\n .range([0, hundred]);\n\n const ticks = scaleLinear.ticks(scaleTicks);\n\n return (scaleDomain || ticks).map((value: number) => ({\n value,\n x: scaleLinear(value),\n }));\n }, [maxValue, scaleTicks, scaleDomain]);\n};\n","import styled from 'styled-components';\n\nexport const TickTd = styled.td`\n position: relative;\n`;\n\nexport const Ticks = styled.div`\n position: relative;\n height: 1rem;\n`;\n\nexport const Tick = styled.div`\n white-space: nowrap;\n width: 0;\n height: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n","import React from 'react';\nimport * as d3 from 'd3';\n\nimport { HorizontalBarChartProps } from '../types';\n\nimport { useScale } from './hooks/useScale';\n\nimport { TickTd, Ticks, Tick } from './styled';\nimport { horizontalBarChartClassNames as classNames } from '../styled';\n\nexport const XScale: React.FC<Pick<\n HorizontalBarChartProps,\n 'maxValue' | 'scaleTicks' | 'renderTicks' | 'scaleDomain'\n>> = ({\n maxValue,\n scaleTicks,\n renderTicks,\n scaleDomain,\n}): React.ReactElement => {\n const range = useScale({ maxValue, scaleTicks, scaleDomain });\n const format = d3.format(',');\n\n return (\n <tr>\n <td />\n <TickTd className={classNames.horizontalBarChartXScaleTd}>\n <Ticks className={classNames.horizontalBarChartXScaleTicks}>\n {range.map((tick, index, ticks) => {\n const { value, x } = tick;\n\n return (\n <Tick\n key={value}\n className={classNames.horizontalBarChartXScaleTick}\n style={{\n left: `${x}%`,\n justifyContent:\n index === 0\n ? 'flex-start'\n : index === ticks.length - 1\n ? 'flex-end'\n : '',\n }}\n >\n {renderTicks ? renderTicks(tick) : format(value)}\n </Tick>\n );\n })}\n </Ticks>\n </TickTd>\n </tr>\n );\n};\n","import React from 'react';\nimport * as d3 from 'd3';\n\nimport { HorizontalBarChartProps } from './types';\n\nimport { useMarshaling } from './hooks/useMarshaling';\nimport { useTooltip } from './hooks/useTooltip';\nimport { useStackWrapper } from './hooks/useStackWrapper';\n\nimport { Bar } from './Bar';\nimport { XScale } from './XScale';\nimport {\n Table,\n LabelCell,\n horizontalBarChartClassNames as classNames,\n BarFlex,\n BarsTd,\n StackSumContainer,\n StackSum,\n} from './styled';\n\nexport const HorizontalBarChart: React.FC<HorizontalBarChartProps> = ({\n data,\n className,\n style,\n children,\n labels,\n fullExtent,\n maxValue,\n formatNativeTitle,\n renderTooltip,\n withTooltip,\n withStackSum,\n tooltipBind,\n scaleTicks,\n renderTicks,\n renderButton,\n tooltipStyle,\n tooltipClassName,\n scaleDomain,\n renderDataTable,\n thead,\n withoutXScale,\n stackedTooltip,\n fullChartTooltip,\n hideTooltip,\n}): React.ReactElement => {\n const { fullMax, data: marshalingData } = useMarshaling({\n data,\n fullExtent,\n maxValue,\n labels,\n });\n const [mouseMove, mouseLeave] = useTooltip({\n renderTooltip,\n tooltipBind,\n tooltipStyle,\n tooltipClassName,\n hideTooltip,\n });\n const Stack = useStackWrapper(stackedTooltip);\n\n return (\n <Table\n className={className}\n style={style}\n onMouseOver={\n fullChartTooltip\n ? event => mouseMove(event, marshalingData.flat())\n : void 0\n }\n onMouseMove={\n fullChartTooltip\n ? event => mouseMove(event, marshalingData.flat())\n : void 0\n }\n onMouseOut={fullChartTooltip ? mouseLeave : void 0}\n >\n {thead}\n <tbody>\n {marshalingData.map((item, rowIndex) => {\n const stackSum =\n (withStackSum || renderDataTable) &&\n d3.sum(item, ({ value }) => value);\n const sumWidth = d3.sum(item, ({ width }) => width);\n\n return (\n <tr key={`row-${rowIndex}`}>\n {typeof renderButton === 'function' && (\n <td className={classNames.horizontalBarChartButtonTd}>\n {renderButton(item, rowIndex)}\n </td>\n )}\n <td className={classNames.horizontalBarChartLabelTd}>\n {labels && labels[rowIndex] && (\n <LabelCell className={classNames.horizontalBarChartLabelCell}>\n {labels[rowIndex]}\n </LabelCell>\n )}\n </td>\n <BarsTd\n className={classNames.horizontalBarChartBarTd}\n style={{ pointerEvents: fullChartTooltip ? 'none' : 'auto' }}\n >\n <BarFlex\n className={classNames.horizontalBarChartBarFlex}\n style={{ pointerEvents: fullChartTooltip ? 'none' : 'auto' }}\n >\n <Stack\n style={stackedTooltip ? { width: `${sumWidth}%` } : void 0}\n item={item}\n tooltipBind={tooltipBind}\n mouseMove={mouseMove}\n mouseLeave={mouseLeave}\n />\n {item.map(\n (bar, barIndex, array) =>\n bar.value !== 0 && (\n <Bar\n key={`bar-${bar.name || ''}-${barIndex}`}\n formatNativeTitle={formatNativeTitle}\n bar={bar}\n tooltipBind={tooltipBind}\n pointerEventsNone={stackedTooltip || fullChartTooltip}\n withTooltip={withTooltip && !stackedTooltip}\n mouseMove={mouseMove}\n mouseLeave={mouseLeave}\n isOnlyChild={array.length === 1}\n isFirstChild={barIndex === 0 && array.length > 1}\n isLastChild={\n array.length - 1 === barIndex && array.length > 1\n }\n />\n )\n )}\n {withStackSum && (\n <StackSumContainer\n className={classNames.horizontalBarChartStackSumContainer}\n >\n <StackSum\n className={classNames.horizontalBarChartStackSum}\n >\n {stackSum}\n </StackSum>\n </StackSumContainer>\n )}\n </BarFlex>\n </BarsTd>\n {renderDataTable &&\n renderDataTable(item, stackSum as number, rowIndex)}\n </tr>\n );\n })}\n {!withoutXScale && (\n <XScale\n maxValue={typeof maxValue === 'number' ? maxValue : fullMax}\n scaleTicks={scaleTicks}\n renderTicks={renderTicks}\n scaleDomain={scaleDomain}\n />\n )}\n {children}\n </tbody>\n </Table>\n );\n};\n\nHorizontalBarChart.defaultProps = {\n fullExtent: true,\n withTooltip: false,\n withStackSum: false,\n tooltipBind: false,\n scaleTicks: 4,\n withoutXScale: false,\n};\n","export const bubbleChartDefaultProps = {\n height: 280,\n minSize: 6,\n maxSize: 30,\n margin: {\n top: 10,\n right: 15,\n bottom: 10,\n left: 0,\n },\n yAxisPadding: 10,\n xAxisPadding: 10,\n yScaleLabelPadding: 10,\n};\n","import styled, { createGlobalStyle } from 'styled-components';\n\nimport { Wrapper } from '../../common/components/Wrapper';\n\nexport const bubbleChartClassNames = {\n bubbleChartYAxis: 'bubbleChartYAxis',\n bubbleChartYAxisZeroTick: 'bubbleChartYAxisZeroTick',\n bubbleChartXAxis: 'bubbleChartXAxis',\n bubbleChartGridGlobal: 'bubbleChartGridGlobal',\n bubbleChartGridLineX: 'bubbleChartGridLineX',\n bubbleChartGridLineY: 'bubbleChartGridLineY',\n bubbleChartCircle: 'bubbleChartCircle',\n bubbleChartYScaleLabel: 'bubbleChartYScaleLabel',\n bubbleChartTooltip: 'bubbleChartTooltip',\n bubbleChartTooltipContainer: 'bubbleChartTooltipContainer',\n bubbleChartTooltipFlex: 'bubbleChartTooltipFlex',\n bubbleChartTip: 'bubbleChartTip',\n};\n\nexport const SvgWrapper = styled(Wrapper)`\n .${bubbleChartClassNames.bubbleChartYAxis},\n .${bubbleChartClassNames.bubbleChartXAxis},\n .${bubbleChartClassNames.bubbleChartGridGlobal} {\n shape-rendering: crispEdges;\n }\n\n .${bubbleChartClassNames.bubbleChartGridLineX},\n .${bubbleChartClassNames.bubbleChartGridLineY} {\n stroke: rgba(149, 149, 149, 0.24);\n }\n\n .${bubbleChartClassNames.bubbleChartYScaleLabel} {\n font-size: 10px;\n }\n`;\n\nexport const TooltipStyles = createGlobalStyle`\n .${bubbleChartClassNames.bubbleChartTooltipContainer} {\n position: absolute;\n transition: opacity 150ms cubic-bezier(0.2, 1, 0.6, 1);\n pointer-events: none;\n z-index: 1;\n }\n`;\n","import { DrawGridProps } from './types';\n\nimport { bubbleChartClassNames } from '../styled';\n\nexport const drawGrid = ({\n svg,\n yScale,\n xScale,\n yTicksCount,\n drawGridX,\n drawGridY,\n}: DrawGridProps) => {\n if (!drawGridY && !drawGridX) return;\n const [min, max] = xScale.domain();\n\n const global = svg\n .append('g')\n .attr('class', bubbleChartClassNames.bubbleChartGridGlobal);\n\n const yTicks = yScale.ticks(yTicksCount);\n\n if (drawGridX) {\n global\n .append('g')\n .selectAll('line')\n .data(yTicks)\n .join('line')\n .attr('class', bubbleChartClassNames.bubbleChartGridLineX)\n .attr('x1', () => xScale(min))\n .attr('x2', () => xScale(max))\n .attr('y1', (d: number) => Math.round(yScale(d)))\n .attr('y2', (d: number) => Math.round(yScale(d)));\n }\n\n if (drawGridY) {\n global\n .append('g')\n .selectAll('line')\n .data(xScale.ticks(yTicksCount))\n .join('line')\n .attr('class', bubbleChartClassNames.bubbleChartGridLineY)\n .attr('x1', (d: number) => Math.round(xScale(d)))\n .attr('x2', (d: number) => Math.round(xScale(d)))\n .attr('y1', () => Math.round(yScale(yTicks[0])))\n .attr('y2', () => Math.round(yScale(yTicks[yTicks.length - 1])));\n }\n};\n","import styled from 'styled-components';\n\nexport const Tooltip = styled.div`\n width: 0;\n height: 0;\n display: flex;\n align-items: flex-end;\n justify-content: center;\n font-size: 12px;\n white-space: nowrap;\n`;\n","import React from 'react';\nimport ReactDOMServer from 'react-dom/server';\nimport * as d3 from 'd3';\n\nimport { Tooltip } from './styled';\nimport { bubbleChartClassNames as classNames } from '../styled';\nimport { TooltipContainer } from '../../../common/components/tooltips';\nimport { DrawTooltipProps } from './types';\n\nexport const drawTooltip = ({\n bubbles,\n tooltipRoot,\n tooltipClassName,\n renderTooltip,\n}: DrawTooltipProps) => {\n const root: Element | null = tooltipRoot || document.querySelector('body');\n const format = d3.format(',');\n\n let container: d3.Selection<any, unknown, any, any> = d3\n .select(root)\n .select(`.${classNames.bubbleChartTooltip}`);\n\n if (container.node() === null) {\n container = d3\n .select(root)\n .append('div')\n .attr('class', classNames.bubbleChartTooltip);\n }\n\n let tooltip: d3.Selection<\n HTMLDivElement,\n unknown,\n d3.BaseType,\n any\n > = container\n .append('div')\n .attr(\n 'class',\n `${classNames.bubbleChartTooltipContainer} ${tooltipClassName || ''}`\n )\n .style('opacity', '0');\n\n bubbles.on('mouseover.tooltip', (event, data) => {\n const { sizeValue } = data;\n const circle = event.currentTarget as SVGCircleElement;\n const { x, y, width } = circle.getBoundingClientRect();\n const left = window.pageXOffset + x + width / 2;\n const top = window.pageYOffset + y;\n\n tooltip\n .style('left', `${left}px`)\n .style('top', `${top}px`)\n .html(() => {\n const html = ReactDOMServer.renderToString(\n <Tooltip className={classNames.bubbleChartTooltipFlex}>\n <TooltipContainer className={classNames.bubbleChartTip}>\n {format(sizeValue)}\n </TooltipContainer>\n </Tooltip>\n );\n\n return html;\n });\n\n renderTooltip && renderTooltip({ tooltip, data, circle });\n\n tooltip.style('opacity', '1');\n });\n\n bubbles.on('mouseout.tooltip', () => {\n tooltip.style('opacity', '0');\n });\n};\n","import * as d3 from 'd3';\n\nimport { BubbleChartProps } from './types';\n\nimport { appendSvg } from '../../helpers';\nimport { computeDimensions } from '../../helpers/computeDimensions';\n\nimport { bubbleChartDefaultProps } from './bubbleChartDefaultProps';\nimport { drawGrid } from './drawGrid';\nimport { drawTooltip } from './drawTooltip';\n\nimport { bubbleChartClassNames as classNames } from './styled';\n\nexport const draw = (\n node: HTMLElement | null,\n props: BubbleChartProps\n): void => {\n const {\n data,\n margin,\n xAxisPadding,\n yAxisPadding,\n customYScale,\n customYAxis,\n customXScale,\n customXAxis,\n minSize,\n maxSize,\n minYValue,\n maxYValue,\n drawGridY,\n drawGridX,\n scaleLog,\n xScaleItemWidth,\n bubbleStyle,\n customize,\n yScaleLabel,\n yScaleLabelPadding,\n enableTooltip,\n tooltipRoot,\n tooltipClassName,\n renderTooltip,\n } = props;\n\n if (node !== null && data.length) {\n const marginTop = margin ? margin.top : 0;\n const marginRight = margin ? margin.right : 0;\n const marginBottom = margin ? margin.bottom : 0;\n const marginLeft = margin ? margin.left : 0;\n const { width: nodeWidth } = node.getBoundingClientRect();\n const width = props.width || nodeWidth;\n const height = props.height || 0;\n const yTicksCountDefault = 6;\n\n const minY =\n typeof minYValue === 'number'\n ? minYValue\n : (d3.min(data, ({ yValue }) => yValue) as number);\n const maxY =\n typeof maxYValue === 'number'\n ? maxYValue\n : (d3.max(data, ({ yValue }) => yValue) as number);\n\n const svg = appendSvg(node, width, height || 0);\n\n const sizeScale = scaleLog\n ? d3\n .scaleLog()\n .domain([\n d3.min(data, ({ sizeValue }) => sizeValue) as number || 0.1,\n d3.max(data, ({ sizeValue }) => sizeValue) as number || 0.1,\n ])\n .range([\n minSize || bubbleChartDefaultProps.minSize || 0.1,\n maxSize || bubbleChartDefaultProps.maxSize || 0.1,\n ])\n : d3\n .scaleLinear()\n .domain([\n d3.min(data, ({ sizeValue }) => sizeValue) as number,\n d3.max(data, ({ sizeValue }) => sizeValue) as number,\n ])\n .range([\n minSize || bubbleChartDefaultProps.minSize,\n maxSize || bubbleChartDefaultProps.maxSize,\n ]);\n\n const yRange1 = height - marginTop - marginBottom - (xAxisPadding || 0);\n\n const yScale = scaleLog\n ? d3\n .scaleLog()\n .domain([minY || 0.1, maxY || 0.1])\n .range([yRange1 || 0.1, marginTop || 0.1])\n .nice()\n : d3\n .scaleLinear()\n .domain([minY, maxY])\n .range([yRange1, marginTop])\n .nice();\n\n customYScale && customYScale(yScale);\n\n const yTicks = yScale.ticks();\n const yAxisLeft = d3.axisLeft(yScale).ticks(yTicksCountDefault);\n\n const yTicksCount = yAxisLeft.tickArguments()[0];\n\n const yAxis = svg\n .append('g')\n .attr('class', classNames.bubbleChartYAxis)\n .call(yAxisLeft);\n\n let yScaleLabelHeight = yScaleLabelPadding || 0;\n\n if (yScaleLabel) {\n const label = svg\n .append('text')\n .text(yScaleLabel)\n .attr('class', classNames.bubbleChartYScaleLabel);\n\n const { width, height } = computeDimensions(label);\n\n yScaleLabelHeight = yScaleLabelHeight + height;\n\n label.attr(\n 'transform',\n `rotate(-90) translate(-${(yRange1 + marginBottom + width) /\n 2}, ${height})`\n );\n }\n\n yAxis.selectAll('.tick').attr('class', value => {\n return value === 0\n ? `tick ${classNames.bubbleChartYAxisZeroTick}`\n : 'tick';\n });\n\n customYAxis && customYAxis(yAxis);\n\n const { width: yAxisWidth } = computeDimensions(yAxis);\n\n const xScale = scaleLog\n ? d3\n .scaleLog()\n .domain([\n d3.min(data, ({ xValue }) => xValue) as number || 0.1,\n d3.max(data, ({ xValue }) => xValue) as number || 0.1,\n ])\n .range([\n (marginLeft + yAxisWidth + (yAxisPadding || 0) + yScaleLabelHeight) || 0.1,\n (width - marginRight) || 0.1,\n ])\n : d3\n .scaleLinear()\n .domain([\n d3.min(data, ({ xValue }) => xValue) as number,\n d3.max(data, ({ xValue }) => xValue) as number,\n ])\n .range([\n marginLeft + yAxisWidth + (yAxisPadding || 0) + yScaleLabelHeight,\n width - marginRight,\n ]);\n\n customXScale && customXScale(xScale);\n\n const xAxisBottom = d3.axisBottom(xScale);\n\n if (typeof xScaleItemWidth === 'number') {\n const [x1, x2] = xScale.range();\n const chartWidth = x2 - x1;\n\n xAxisBottom\n .ticks(Math.round(chartWidth / xScaleItemWidth))\n .tickSizeOuter(0);\n }\n\n const xAxis = svg\n .append('g')\n .call(xAxisBottom)\n .attr('class', classNames.bubbleChartXAxis);\n\n customXAxis && customXAxis(xAxis);\n\n yAxis.attr(\n 'transform',\n `translate(${marginLeft + yAxisWidth + yScaleLabelHeight}, 0)`\n );\n\n drawGrid({\n svg,\n yScale,\n xScale,\n yTicksCount,\n drawGridY,\n drawGridX,\n });\n\n xAxis.attr(\n 'transform',\n `translate(0, ${yScale(yTicks[0]) + (xAxisPadding || 0)})`\n );\n\n const bubbles = svg\n .append('g')\n .selectAll('dot')\n .data(data)\n .enter()\n .append('circle')\n .attr('class', classNames.bubbleChartCircle)\n .attr('cx', ({ xValue }) => xScale(xValue))\n .attr('cy', ({ yValue }) => yScale(yValue))\n .attr('r', ({ sizeValue }) => sizeScale(sizeValue) / 2)\n .attr('fill', ({ color }) => color || 'rgba(0, 176, 113, 0.6)')\n .attr('stroke', ({ stroke }) => stroke || 'transparent')\n .attr('style', ({ style }) => style || bubbleStyle || '');\n\n if (enableTooltip) {\n drawTooltip({ bubbles, tooltipRoot, tooltipClassName, renderTooltip });\n }\n\n customize && customize({ svg, bubbles, yScale, xScale, sizeScale });\n }\n};\n","import * as d3 from 'd3';\n\nimport { bubbleChartClassNames as classNames } from './styled';\n\nexport const unmount = (tooltipRoot?: Element) => {\n const root: Element | null = tooltipRoot || document.querySelector('body');\n\n d3.select(root)\n .select(`.${classNames.bubbleChartTooltip}`)\n .remove();\n};\n","import React, { useEffect } from 'react';\n\nimport { BubbleChartProps } from './types';\n\nimport { useNode } from '../../hooks';\nimport { useResize } from '../../hooks';\n\nimport { draw } from './draw';\nimport { unmount } from './unmount';\nimport { bubbleChartDefaultProps } from './bubbleChartDefaultProps';\n\nimport { SvgWrapper, TooltipStyles } from './styled';\n\nexport const BubbleChart: React.FC<BubbleChartProps> = (\n props\n): React.ReactElement => {\n const { className, style, children, tooltipRoot } = props;\n const [ref, node] = useNode();\n\n useEffect(() => {\n node && draw(node, props);\n }, [node, props]);\n\n useEffect(() => {\n return () => unmount(tooltipRoot);\n }, [tooltipRoot]);\n\n const onDraw = () => draw(node, props);\n\n useResize(props.width, onDraw);\n\n return (\n <div className={className} style={style}>\n <TooltipStyles />\n <SvgWrapper ref={ref}>{children}</SvgWrapper>\n </div>\n );\n};\n\nBubbleChart.defaultProps = bubbleChartDefaultProps;\n"],"names":["Wrapper","styled","div","useNode","node","onSetNode","useState","ref","useCallback","throttle","fn","wait","isCalled","setTimeout","THROTTLE_DELAY","useResize","width","callback","delay","throttledCallback","useMemo","undefined","useEffect","window","addEventListener","removeEventListener","appendSvg","height","d3","select","remove","svg","append","attr","SwipeScrollContainer","animate","duration","timing","draw","start","performance","now","requestId","requestAnimationFrame","requestAnimate","time","timeFraction","cancelAnimationFrame","progress","easeOutQuad","range","num","min","max","Math","defaultRefs","animation","speed","timestamp","startX","currentX","useSwipe","animationFunc","onSwipe","container","body","documentSelect","document","refs","useRef","current","onMove","event","nodeWidth","getBoundingClientRect","x","type","includes","touches","newX","maxX","translateX","style","hundred","Date","dt","dx","speedX","round","onEnd","on","dtEnd","px","currX","transX","onStart","isTouch","left","parentElement","SwipeScroll","children","props","draggingNode","React","defaultProps","degByIndex","index","count","degs","deg","getTextAnchor","length","halfAngle","getTranslate","anchor","translateY","LabelContainer","attrs","transform","labelClassName","drawRadialLabels","dataLength","radiusScale","maxValue","angleSlice","radius","xOffset","yOffset","renderLabel","selectLabel","d3container","selectAll","pxToValue","value","axisX","i","cos","PI","axisY","sin","labels","Array","from","_","ceil","y","forEach","html","ReactDOMServer","renderToString","top","label","Label","Name","middleBadgeStyles","css","DefaultBadge","MiddleBadge","BadgePrefix","radarChartclassNames","radar","radarAxis","radarAxisTextGlobal","radarAxisText","radarPolygon","radarLabel","radarLabelName","radarLabelBadge","radarLabelBadgePrefix","radarCircle","SvgWrapper","data","curve","polar","formatValue","badgePrefix","labelOffset","circleRadius","svgElements","customize","formatAxisValue","radarStyles","labelIndex","defaultBleedLength","bleedLength","defaultHeight","minValue","map","paddingX","paddingY","defaultLevels","ticks","domain","levels","lastTick","newLastTick","push","newMaxValue","radarLine","angle","radarValue","globalCenter","levelsGrid","reverse","axisGridY","getAxisValue","gridGlobal","enter","radarGlobal","axis","name","maxGridHeight","path","circleNode","circleHeight","pathNode","pathHeight","radiusByMaxValue","join","d","dataItem","format","axisTextGlobal","text","axisValue","item","circleGlobal","defaultLabelOffset","heightInner","offset","items","Badge","className","RadarChart","onDraw","radiansToDegrees","radians","flatAngle","degreesToRadians","degrees","pieChartclassNames","pieGlobal","pieSlice","pieSliceLabel","pieSliceLabelValue","pieSliceLabelName","pieRadialLabel","pieRadialLink","pieTooltipContainer","pieTooltipFlex","pieTooltip","pieTooltipItem","pieTooltipName","pieTooltipValue","pieTooltipColorBox","pieFullChartTooltipCircle","getMidFactor","startAngle","endAngle","getAlign","midangle","arc","enableRadialLabels","global","dataReady","radialLabelsLinkHorizontalLength","formatRadialLabel","radialLabelsTextXOffset","radialLabelYOffset","radialAngleXOffset","defaultRadialLabelsLinkHorizontalLength","outerArc","innerRadius","outerRadius","midFactor","posA","centroid","posB","posC","posCPi","getPosition","pos","defaultRadialLabelsTextXOffset","TooltipFlex","LabelFlex","LabelFlexCenter","TooltipContainer","TooltipGroupName","TooltipItem","ColFlex","ColorBox","ColorLine","Value","LabelTop","LabelBottom","drawTooltip","fullChartTooltip","tooltipRoot","tooltipClassName","tooltipBind","renderTooltip","allSlices","tooltipStyle","querySelector","classNames","isEmpty","empty","tooltipContainer","Object","entries","prop","val","isVisible","setVisible","visible","Boolean","opacity","setPosition","pieChartDatum","itemX","itemY","target","globalNode","itemWidth","itemHeight","arcX","arcY","setTooltip","pieChartData","color","key","backgroundColor","padAngle","onClick","cornerRadius","margin","enableSlicesLabels","formatSliceLabel","slicesLabelsSkipAngle","enableSlicesLabelsName","formatSliceLabelName","borderWidth","borderColor","formatSliceTitle","withTooltip","marginTop","marginRight","right","marginBottom","bottom","marginLeft","maxPadAngle","dividerPadAngle","fullAngle","pie","sort","maxOuterRadius","PieChart","defaultN","legendClassNames","legendContainer","legendTitle","legendTick","legendTickLine","legendTickText","ramp","n","canvas","createElement","context","getContext","fillStyle","fillRect","legendDefaultParams","tickSize","ticksDivier","titleMarginBottom","getLegend","title","tickFormat","tickValues","tickAdjust","g","tick","interpolate","copy","rangeRound","toDataURL","interpolator","assign","call","calendarChartClassNames","calendarChart","calendarYear","calendarAxis","calendarBody","calendarHeader","calendarYearTitle","calendarWeekDay","calendarMonth","calendarDays","calendarDay","headerHeight","startSunday","weekdays","monthSpacing","onEachDay","colorRange","legendProps","years","date","getUTCFullYear","cellOffset","weekDays","defaultCellSize","cellSize","countDay","days","sundayIndex","formatDay","formatDate","timeWeek","getTimeWeekCount","to","getMonthSpacing","getUTCMonth","formatMonth","chartWidth","values","year","months","weekCount","calendarWeekdays","header","fullYearlastMonth","fullYearlastDate","each","elements","element","currColor","getUTCDay","legend","containerNode","legendSvg","appendChild","CalendarChart","computeDimensions","selection","dimensions","SVGGraphicsElement","getBBox","none","isVoid","Number","isNaN","stackedData","stacks","valuesIndex","prevValue","abs","lineChartClassNames","lineChartYScaleGlobal","lineChartYScaleRight","lineChartXScaleGlobal","lineChartLinesGlobal","lineChartLine","lineChartAreasGlobal","lineChartArea","lineChartDotsGlobalContainer","lineChartDotsGlobal","lineChartDot","lineChartGridGlobal","lineChartGridLineX","lineChartGridLineY","lineChartLabelContainer","lineChartLabelFlex","lineChartLabel","lineChartMouseGlobal","lineChartMouseLine","lineChartMouseRect","lineChartMouseCircle","lineChartMouseLabelContainer","lineChartMouseLabel","TooltipStyles","createGlobalStyle","drawGrid","yScale","xScale","yTicksCount","lastIndex","drawGridX","drawGridY","yTicks","drawLabel","formatLabel","eachLabel","labelsDiv","argData","dynamicCircleRadius","formatDynamicTooltip","stackedTooltipIndex","stackedTooltip","tooltipLineTop","dotSnapping","chartData","filter","tooltipOff","x1","x2","y1","y2","mouseGlobal","mouseRect","mouseLine","lines","nodes","circles","dynamicDotOff","stroke","labelContainer","size","mouseMove","docX","docY","rectrX","nodeX","nodeY","currIndex","invert","positions","getValue","floor","line","hasAttribute","beginning","end","getTotalLength","getPointAtLength","step","lineChartData","dynamicDotStyle","datas","rest","invertValue","noHasData","every","topIndex","keys","reduce","acc","labelTexts","indexX","indexY","customYAxisSelection","customXAxisSelection","customYAxis","customXAxis","yAxisPadding","xAxisPadding","withLabels","stacked","dynamicTooltipEnable","customYScale","customLine","xScaleItemWidth","areaCurve","rightAxis","yRange","nice","yTicksCountDefault","yAxisLeft","tickArguments","yAxis","yAxisWidth","yAxisRightWidth","rightAxisMin","rightAxisMax","yRightScale","yAxisRightTicks","yAxisRight","xAxisBottom","tickSizeOuter","isArray","xAxis","xAxisHeight","defined","withAreas","some","fill","dataIndex","getArea","minAreaValues","minTick","y0","currData","area","areaStyle","dots","dot","dotsGlobal","dotsGroup","LineChart","barChartLinesClassNames","barChartLinesGlobal","barChartLine","barChartAreasGlobal","barChartArea","drawLines","lineData","stackedLine","linesSelection","areasSelection","bandwidth","linesData","lineType","areasData","tooltipClassnames","barChartMouseRect","barChartMouseContainer","barChartTooltipFlex","barChartMouseTooltip","barChartTooltip","barChartTooltipItem","barChartTooltipColFlex","barChartTooltipGroupName","barChartColorBox","barChartColorLine","barChartTooltipName","barChartTooltipValue","labelClassnames","barChartLabelContainer","barChartLabelFlex","barChartLabel","barChartClassNames","barChartBarGlobal","barChartYScaleGlobal","barChartYAxis","barChartXAxis","barChartYAxisZeroTick","barChartGridGlobal","barChartGridLineX","barChartGridLineXZero","barChartGridLineYZero","barChartGridLineY","barChartSelection","selectable","useSelection","drawing","clearSelection","removeChild","onStartDrawing","e","stopPropagation","which","setAttribute","pageX","firstChild","offsetX","display","newWidth","offsetLeft","onMouseLeave","offsetWidth","onStopDrawing","selectionMinX","selectionWidth","selectionMaxX","onSelect","childNodes","child","userSelect","getX","padding","getDomain","minDomainValue","maxDomainValue","MIN","POSITIVE_INFINITY","MAX","NEGATIVE_INFINITY","groups","groupMax","groupMin","group","stackMax","stackMin","groupKey","marshaling","barWidth","barPadding","colors","groupIndex","groupName","marshalledGroup","groupsKeys","stackIndex","groupKeys","barGroupWidth","isPositiveValue","EPSILON","getLabelY","labelPosition","getLabel","LabelUI","marshalledData","hideTooltipGroupName","tooltipY","formatTooltipValue","formatTooltipName","tooltipYDomain","setTooltipPosition","onLabelItem","isBarTooltip","bars","onBarClick","onBarHover","xScaleBandDomain","topYDomain","curr","lineMin","tooltip","barChartTootipFlex","flagCurrIndex","offsetY","findIndex","containts","elementsFromPoint","clientX","clientY","currBars","isContains","currLineData","concat","svgWidth","isMouseWithin","rectrY","concatedData","stack","stacksCount","indexFlag","barsWidth","LabelFlexStyled","LabelStyle","resizeBarWidth","sectionPadding","groupPadding","_key","MIN_BAR_HEIGHT","getBars","markers","barWidthProp","customXScale","customYAxisLeft","customXAxisBottom","customBars","minValuesLine","marshalledMap","drawBars","defaultBarWidth","barDomain","array","divider","marshalled","maskId","uniqueId","gSvg","marker","horizontal","lineColor","align","BarChart","useMarshaling","fullExtent","fullMax","scaleLinear","horizontalBarChartClassNames","horizontalBarChartButtonTd","horizontalBarChartLabelTd","horizontalBarChartLabelCell","horizontalBarChartBarTd","horizontalBarChartBarFlex","horizontalBarChartBar","horizontalBarChartBarFirst","horizontalBarChartBarLast","horizontalBarChartBarOnly","horizontalBarChartTooltipFlex","horizontalBarChartStackWrapper","horizontalBarChartTooltipContainer","horizontalBarChartStackSumContainer","horizontalBarChartStackSum","horizontalBarChartXScaleTd","horizontalBarChartXScaleTicks","horizontalBarChartXScaleTick","horizontalBarChartTooltipItem","horizontalBarChartTooltipName","horizontalBarChartTooltipValue","Table","table","LabelCell","BarFlex","BarsTd","td","TooltipFlexUI","StackSumContainer","StackSum","StackWrapper","Tooltip","rootElement","useTooltip","hideTooltip","unmountComponentAtNode","onMouseMove","barX","barY","visibility","render","useStackWrapper","mouseLeave","onMouseOver","onMouseOut","Fragment","BarStyled","Bar","bar","formatNativeTitle","pointerEventsNone","isFirstChild","isLastChild","isOnlyChild","ceiledWidth","pointerEvents","useScale","scaleTicks","scaleDomain","TickTd","Ticks","Tick","XScale","renderTicks","justifyContent","HorizontalBarChart","withStackSum","renderButton","renderDataTable","thead","withoutXScale","marshalingData","Stack","flat","rowIndex","stackSum","sumWidth","barIndex","bubbleChartDefaultProps","minSize","maxSize","yScaleLabelPadding","bubbleChartClassNames","bubbleChartYAxis","bubbleChartYAxisZeroTick","bubbleChartXAxis","bubbleChartGridGlobal","bubbleChartGridLineX","bubbleChartGridLineY","bubbleChartCircle","bubbleChartYScaleLabel","bubbleChartTooltip","bubbleChartTooltipContainer","bubbleChartTooltipFlex","bubbleChartTip","bubbles","root","sizeValue","circle","currentTarget","pageXOffset","pageYOffset","minYValue","maxYValue","scaleLog","bubbleStyle","yScaleLabel","enableTooltip","minY","yValue","maxY","sizeScale","yRange1","yScaleLabelHeight","xValue","unmount","BubbleChart"],"mappings":"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"}
|