@fluentui/react-charts 9.0.5 → 9.0.6
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/CHANGELOG.md +23 -7
- package/dist/index.d.ts +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +3 -0
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/ChartPopover.js +10 -10
- package/lib/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +7 -2
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +7 -4
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/Arc/Arc.js +2 -2
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +2 -2
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +9 -9
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +2 -2
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +3 -2
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js +8 -8
- package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +2 -2
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +2 -2
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/utilities/utilities.js +232 -53
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +3 -0
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/ChartPopover.js +10 -10
- package/lib-commonjs/components/CommonComponents/ChartPopover.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js +6 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +6 -3
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +2 -2
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +8 -8
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js +2 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +7 -7
- package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +236 -61
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +9 -9
- package/lib/utilities/locale-util.js +0 -15
- package/lib/utilities/locale-util.js.map +0 -1
- package/lib-commonjs/utilities/locale-util.js +0 -25
- package/lib-commonjs/utilities/locale-util.js.map +0 -1
|
@@ -6,7 +6,7 @@ import { scaleLinear as d3ScaleLinear, scaleBand as d3ScaleBand, scaleUtc as d3S
|
|
|
6
6
|
import { useId } from '@fluentui/react-utilities';
|
|
7
7
|
import { tokens } from '@fluentui/react-theme';
|
|
8
8
|
import { CartesianChart, ChartPopover, Legends } from '../../index';
|
|
9
|
-
import { ChartTypes, getAccessibleDataObject, XAxisTypes, getTypeOfAxis, tooltipOfXAxislabels,
|
|
9
|
+
import { ChartTypes, getAccessibleDataObject, XAxisTypes, getTypeOfAxis, tooltipOfXAxislabels, formatScientificLimitWidth, getBarWidth, getScalePadding, isScalePaddingDefined, calculateAppropriateBarWidth, formatDate, areArraysEqual, calculateLongestLabelWidth, useRtl, DataVizPalette, getColorFromToken } from '../../utilities/index';
|
|
10
10
|
const barGapMultiplier = 0.2;
|
|
11
11
|
const barGapMin = 1;
|
|
12
12
|
const MIN_DOMAIN_MARGIN = 8;
|
|
@@ -814,7 +814,7 @@ export const VerticalStackedBarChart = (props)=>{
|
|
|
814
814
|
"aria-label": `Total: ${barLabel}`,
|
|
815
815
|
role: "img",
|
|
816
816
|
transform: `translate(${xScaleBandwidthTranslate}, 0)`
|
|
817
|
-
},
|
|
817
|
+
}, formatScientificLimitWidth(barLabel)));
|
|
818
818
|
});
|
|
819
819
|
if (!props.showXAxisLablesTooltip) {
|
|
820
820
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["VerticalStackedBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { useVerticalStackedBarChartStyles } from './useVerticalStackedBarChartStyles.styles';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n scaleTime as d3ScaleTime,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n VerticalStackedBarDataPoint,\n Margins,\n VerticalStackedBarChartProps,\n VerticalStackedChartProps,\n VSChartDataPoint,\n LineDataInVerticalStackedBarChart,\n ModifiedCartesianChartProps,\n Legend,\n ChartPopover,\n Legends,\n Chart,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n formatValueWithSIPrefix,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n formatDate,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\ntype NumericScale = D3ScaleLinear<number, number>;\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\nconst MIN_DOMAIN_MARGIN = 8;\n\ninterface RefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = LineDataInVerticalStackedBarChart & { index: number; xItem: VerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\ntype CalloutAnchorPointData = {\n xAxisDataPoint: string;\n chartDataPoint: VSChartDataPoint;\n};\n\nexport const VerticalStackedBarChart: React.FunctionComponent<VerticalStackedBarChartProps> = props => {\n const _isRtl: boolean = useRtl();\n const _createLegendsForLine: (data: VerticalStackedChartProps[]) => LineLegends[] = (\n data: VerticalStackedChartProps[],\n ) => _getLineLegends(data);\n const _tooltipId: string = useId('VSBCTooltipId_');\n const _emptyChartId: string = useId('_VSBC_empty');\n let _points: VerticalStackedChartProps[] = [];\n let _dataset: VerticalStackedBarDataPoint[];\n let _xAxisLabels: string[] = [];\n let _bars: JSX.Element[];\n let _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data[0]!.xAxisPoint, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _barWidth: number = 0;\n let _colors: string[];\n let _margins: Margins;\n let _lineObject: LineObject;\n let _yMax: number;\n let _calloutAnchorPoint: CalloutAnchorPointData | null;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [selectedLegends, setSelectedLegends] = React.useState(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [dataForHoverCard, setDataForHoverCard] = React.useState(0);\n const [color, setColor] = React.useState('');\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [YValueHover, setYValueHover] = React.useState<(LineDataInVerticalStackedBarChart | VSChartDataPoint)[]>([]);\n const [xCalloutValue, setXCalloutValue] = React.useState('');\n const [yCalloutValue, setYCalloutValue] = React.useState('');\n const [activeXAxisDataPoint, setActiveXAxisDataPoint] = React.useState<number | string | Date>('');\n const [calloutLegend, setCalloutLegend] = React.useState('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<VerticalStackedChartProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VSChartDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<VerticalStackedBarChartProps | null>(null);\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n if (prevProps.height !== props.height || prevProps.width !== props.width || prevProps.data !== props.data) {\n _adjustProps();\n _dataset = _createDataSetLayer();\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n function _getLegendData(data: VerticalStackedChartProps[], lineLegends: LineLegends[]): JSX.Element {\n if (props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n const actions: Legend[] = [];\n const { allowHoverOnLegend = true } = props;\n\n data.forEach((singleChartData: VerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: VSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: Legend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: Legend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.title);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: Legend[] = legendsOfLine.concat(actions);\n return (\n <Legends\n legends={totalLegends}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _lineHoverOut() {\n setPopoverOpen(false);\n setXCalloutValue('');\n setYCalloutValue('');\n setActiveXAxisDataPoint('');\n setColor('');\n }\n\n function _lineHoverFocus(lineData: LinePoint) {\n setPopoverOpen(true);\n setXCalloutValue(`${lineData.xItem.xAxisPoint}`);\n setYCalloutValue(`${lineData.yAxisCalloutData || lineData.data || lineData.y}`);\n setActiveXAxisDataPoint(lineData.xItem.xAxisPoint);\n setColor(lineData.color);\n }\n\n function _onStackHoverFocus(\n stack: VerticalStackedChartProps,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (!_noLegendHighlighted()) {\n stack = {\n ...stack,\n chartData: stack.chartData.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n lineData: stack.lineData?.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n };\n }\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: LineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n _updatePosition(clientX, clientY);\n setPopoverOpen(stack.chartData.length > 0 || (stack.lineData?.length ?? 0) > 0);\n setYValueHover(\n isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n );\n setHoverXValue(stack.xAxisPoint instanceof Date ? formatDate(stack.xAxisPoint, props.useUTC) : stack.xAxisPoint);\n setStackCalloutProps(stack);\n setActiveXAxisDataPoint(stack.xAxisPoint);\n setCallOutAccessibilityData(stack.stackCallOutAccessibilityData);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXAxisDataPoint('');\n }\n\n const _onClick = (\n data: VerticalStackedChartProps | VSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n props.onBarClick?.(mouseEvent, data);\n props.href ? (window.location.href = props.href) : '';\n };\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n _colors = defaultColors;\n _xAxisType = getTypeOfAxis(props.data[0].xAxisPoint, true) as XAxisTypes;\n _lineObject = _getFormattedLineData(props.data);\n _xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n }\n\n function _createDataSetLayer(): VerticalStackedBarDataPoint[] {\n const tempArr: string[] = [];\n const dataset: VerticalStackedBarDataPoint[] = _points.map(singlePointData => {\n let total: number = 0;\n singlePointData.chartData!.forEach((point: VSChartDataPoint) => {\n total = total + point.data;\n });\n tempArr.push(singlePointData.xAxisPoint as string);\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n _xAxisLabels = tempArr;\n return dataset;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _onLegendSelectionChange(\n _selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _getGraphData(\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n return (_bars = _createBar(xBarScale, yBarScale, containerHeight, xElement!));\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _isLegendHighlighted(legendTitle: string) {\n return _getHighlightedLegend().includes(legendTitle);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(singleChartData: VerticalStackedChartProps, point?: VSChartDataPoint): string {\n if (!point) {\n /** if shouldFocusWholeStack is true */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const pointValues = singleChartData.chartData\n .map(pt => {\n const legend = pt.legend;\n const yValue = pt.yAxisCalloutData || pt.data;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n const lineValues = singleChartData.lineData\n ?.map(ln => {\n const legend = ln.legend;\n const yValue = ln.yAxisCalloutData || ln.data || ln.y;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n return (\n singleChartData.stackCallOutAccessibilityData?.ariaLabel ||\n `${xValue}. ${pointValues}` + (lineValues ? ` ${lineValues}` : '')\n );\n }\n /** if shouldFocusWholeStack is false */\n const xValue =\n singleChartData.xAxisCalloutData ||\n point.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _getCustomizedCallout() {\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _toFocusWholeStack(_isHavingLines: boolean): boolean {\n const { isCalloutForStack = false } = props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (_getHighlightedLegend().length === 1) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n }\n\n function _getFormattedLineData(data: VerticalStackedChartProps[]): LineObject {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: VerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n item.lineData.forEach((line: any) => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n }\n\n function _getLineLegends(data: VerticalStackedChartProps[]): LineLegends[] {\n const lineObject: LineObject = _lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n }\n\n function _createLines(\n xScale: any,\n yScale: NumericScale,\n containerHeight: number,\n containerWidth: number,\n secondaryYScale?: NumericScale,\n ): JSX.Element {\n const lineObject: LineObject = _getFormattedLineData(props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n //const { theme } = props;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n const xScaleBandwidthTranslate = _xAxisType !== XAxisTypes.StringAxis ? 0 : xScale.bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = _isLegendHighlighted(item) || _noLegendHighlighted();\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);\n const useSecondaryYScale =\n lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && secondaryYScale;\n const y1 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i - 1].y) : yScale(lineObject[item][i - 1].y);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i].y) : yScale(lineObject[item][i].y);\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={tokens.colorNeutralBackground1}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={lineObject[item][0].lineOptions?.strokeWidth ?? 3}\n strokeLinecap={lineObject[item][0].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={lineObject[item][0].lineOptions?.strokeDasharray}\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...(_isLegendHighlighted(item) && {\n onMouseOver: _lineHover.bind(lineObject[item][i - 1]),\n onMouseLeave: _lineHoverOut,\n })}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && secondaryYScale ? secondaryYScale(circlePoint.y) : yScale(circlePoint.y)\n }\n onMouseOver={\n _isLegendHighlighted(item)\n ? (event: React.MouseEvent<SVGElement, MouseEvent>) => _lineHover(circlePoint, event)\n : (event: React.MouseEvent<SVGElement, MouseEvent>) => _onStackHover(circlePoint.xItem, event)\n }\n {...(_isLegendHighlighted(item) && {\n onMouseLeave: _lineHoverOut,\n })}\n r={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n visibility={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n data-is-focusable={_isLegendHighlighted(item)}\n ref={e => (circleRef.refElement = e)}\n onFocus={_lineFocus.bind(circlePoint, circleRef)}\n onBlur={_lineHoverOut}\n tabIndex={circlePoint.legend !== '' ? 0 : undefined}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n }\n\n function _getCircleVisibilityAndRadius(\n xAxisPoint: string | number | Date,\n legend: string,\n ): { visibility: CircleVisbility; radius: number } {\n if (!_noLegendHighlighted()) {\n if (xAxisPoint === activeXAxisDataPoint && _isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (_isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXAxisDataPoint === xAxisPoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n }\n\n function _renderCallout(props?: VSChartDataPoint): JSX.Element | null {\n return props ? (\n <ChartPopover\n culture={props.culture ?? 'en-us'}\n XValue={props.xAxisCalloutData}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n />\n ) : null;\n }\n\n function _onRectHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n _onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n function _onRectFocusHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ) {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_calloutAnchorPoint?.chartDataPoint !== point || _calloutAnchorPoint?.xAxisDataPoint !== xAxisPoint) {\n _calloutAnchorPoint = {\n chartDataPoint: point,\n xAxisDataPoint: `${xAxisPoint}`,\n };\n _updatePosition(clientX, clientY);\n setPopoverOpen(_noLegendHighlighted() || _isLegendHighlighted(point.legend));\n setCalloutLegend(point.legend);\n setDataForHoverCard(point.data);\n setColor(color);\n setXCalloutValue(point.xAxisCalloutData ? point.xAxisCalloutData : `${xAxisPoint}`);\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _lineHover(lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(lineData);\n }\n\n function _lineFocus(lineData: LinePoint, ref: { refElement: SVGCircleElement | null }) {\n if (ref.refElement) {\n _lineHoverFocus(lineData);\n }\n }\n\n function _onStackHover(stack: VerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n _onStackHoverFocus(stack, mouseEvent);\n }\n\n function _onRectFocus(point: VSChartDataPoint, xAxisPoint: string, color: string, ref: RefArrayData): void {\n if (ref.refElement) {\n _onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n function _onStackFocus(stack: VerticalStackedChartProps, groupRef: RefArrayData): void {\n if (groupRef.refElement) {\n _onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n function _handleMouseOut(): void {\n setPopoverOpen(false);\n }\n\n function _getBarGapAndScale(\n bars: VSChartDataPoint[],\n yBarScale: NumericScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n readonly adjustedTotalHeight: number;\n } {\n const { barGapMax = 0 } = props;\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n const totalData = bars.reduce((iter, value) => iter + Math.abs(value.data), 0);\n const totalHeight = defaultTotalHeight ?? yBarScale(totalData);\n let sumOfPercent = 0;\n bars.forEach(point => {\n let value = (Math.abs(point.data) / totalData) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n });\n const scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale = (totalHeight - gapHeight * gaps) / (totalData * scalingRatio);\n return {\n gapHeight,\n heightValueScale,\n adjustedTotalHeight: sumOfPercent,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yMax = _yMax;\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([0, containerHeight - _margins.bottom! - _margins.top!]);\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n const xMin = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const lDate = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const xBarScale = props.useUTC ? d3ScaleUtc() : d3ScaleTime();\n xBarScale\n .domain(_isRtl ? [lDate, sDate] : [sDate, lDate])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n const xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _isRtl\n ? [containerWidth - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n\n return { xBarScale, yBarScale };\n }\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.some(item => item.chartData.length > 0 || (item.lineData && item.lineData.length > 0))\n );\n };\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getDomainMargins(containerWidth: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the bars changes wrt the bar width */\n const barGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding, props.xAxisPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first bar and after the last bar.\n _domainMargin = 0;\n } else if (props.barWidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n /** Total width required to render the bars. Directly proportional to bar width */\n const reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * _barWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (props.mode === 'plotly' && _xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering bars at their maximum allowable width\n const bandwidth = totalWidth / (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);\n let reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * barWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(_xAxisLabels) + 20;\n reqWidth = (_xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n } else {\n const data = (props.data?.map(point => point.xAxisPoint) as number[] | Date[] | undefined) || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, calculateAppropriateBarWidth(data, totalWidth));\n _domainMargin = MIN_DOMAIN_MARGIN + _barWidth / 2;\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n const numLines = Object.keys(_lineObject).length;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${data?.length || 0} stacked bars` +\n (numLines > 0 ? ` and ${numLines} lines` : '') +\n '. '\n );\n }\n\n const classes = useVerticalStackedBarChartStyles(props);\n function _createBar(\n xBarScale: any,\n yBarScale: NumericScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element[] {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = props;\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n }\n\n const bars = _points.map((singleChartData: VerticalStackedChartProps, indexNumber: number) => {\n let yPoint = containerHeight - _margins.bottom!;\n const xPoint = xBarScale(\n _xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : _xAxisType === XAxisTypes.DateAxis\n ? (singleChartData.xAxisPoint as Date)\n : (singleChartData.xAxisPoint as string),\n );\n const xScaleBandwidthTranslate =\n _xAxisType !== XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;\n\n let barTotalValue = 0;\n\n const barsToDisplay = singleChartData.chartData.filter(point => point.data > 0);\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale, adjustedTotalHeight } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const singleBar = barsToDisplay.map((point: VSChartDataPoint, index: number) => {\n const startColor = point.color ? point.color : _colors[index];\n const ref: RefArrayData = {};\n const shouldHighlight = _isLegendHighlighted(point.legend) || _noLegendHighlighted() ? true : false;\n const rectFocusProps = !shouldFocusWholeStack && {\n 'data-is-focusable': !props.hideTooltip && shouldHighlight,\n 'aria-label': _getAriaLabel(singleChartData, point),\n onMouseOver: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseMove: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onRectFocus(point, singleChartData.xAxisPoint as string, startColor, ref),\n onBlur: _handleMouseOut,\n onClick: (event: React.MouseEvent<SVGElement, MouseEvent>) => _onClick(point, event),\n role: 'img',\n };\n\n let barHeight = heightValueScale * point.data;\n if (barHeight < Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight)) {\n barHeight = Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight);\n }\n yPoint = yPoint - barHeight - (index ? gapHeight : 0);\n barTotalValue += point.data;\n\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <React.Fragment key={index + indexNumber + `${shouldFocusWholeStack}`}>\n <path\n className={classes.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${_barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-_barWidth}\n z\n `}\n fill={startColor}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n cursor={props.href ? 'pointer' : 'default'}\n {...rectFocusProps}\n />\n </React.Fragment>\n );\n }\n if (barHeight < 0) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <React.Fragment key={index + indexNumber}>\n <rect\n className={classes.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={_barWidth}\n height={barHeight}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n cursor={props.href ? 'pointer' : 'default'}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n {...rectFocusProps}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n </React.Fragment>\n );\n });\n const groupRef: RefArrayData = {};\n const stackFocusProps = shouldFocusWholeStack && {\n 'data-is-focusable': !props.hideTooltip,\n 'aria-label': _getAriaLabel(singleChartData),\n onMouseOver: (event: any) => _onStackHover(singleChartData, event),\n onMouseMove: (event: any) => _onStackHover(singleChartData, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onStackFocus(singleChartData, groupRef),\n onBlur: _handleMouseOut,\n onClick: (event: any) => _onClick(singleChartData, event),\n role: 'img',\n };\n let showLabel = false;\n let barLabel = 0;\n if (!props.hideLabels) {\n if (_noLegendHighlighted()) {\n showLabel = true;\n barLabel = barTotalValue;\n } else {\n barsToDisplay.forEach(point => {\n if (_isLegendHighlighted(point.legend)) {\n showLabel = true;\n barLabel += point.data;\n }\n });\n }\n }\n return (\n <g key={indexNumber + `${shouldFocusWholeStack}`}>\n <g\n id={`${indexNumber}-singleBar`}\n ref={e => (groupRef.refElement = e)}\n {...stackFocusProps}\n tabIndex={!props.hideTooltip ? 0 : undefined}\n >\n {singleBar}\n </g>\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n >\n {formatValueWithSIPrefix(barLabel)}\n </text>\n )}\n </g>\n );\n });\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n _dataset = _createDataSetLayer();\n const legendBars: JSX.Element = _getLegendData(_points, _createLegendsForLine(props.data));\n const calloutProps: ModifiedCartesianChartProps['calloutProps'] = {\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue!,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack:\n props.isCalloutForStack || (_isHavingLines && (_noLegendHighlighted() || _getHighlightedLegend().length > 1)),\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={_xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n barwidth={_barWidth}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n <g>\n {_isHavingLines &&\n _createLines(\n props.xScale!,\n props.yScale!,\n props.containerHeight!,\n props.containerWidth!,\n props.yScaleSecondary,\n )}\n </g>\n </>\n );\n }}\n />\n );\n }\n return <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />;\n};\nVerticalStackedBarChart.displayName = 'VerticalStackedBarChart';\n"],"names":["React","max","d3Max","min","d3Min","select","d3Select","useVerticalStackedBarChartStyles","scaleLinear","d3ScaleLinear","scaleBand","d3ScaleBand","scaleUtc","d3ScaleUtc","scaleTime","d3ScaleTime","useId","tokens","CartesianChart","ChartPopover","Legends","ChartTypes","getAccessibleDataObject","XAxisTypes","getTypeOfAxis","tooltipOfXAxislabels","formatValueWithSIPrefix","getBarWidth","getScalePadding","isScalePaddingDefined","calculateAppropriateBarWidth","formatDate","areArraysEqual","calculateLongestLabelWidth","useRtl","DataVizPalette","getColorFromToken","barGapMultiplier","barGapMin","MIN_DOMAIN_MARGIN","CircleVisbility","VerticalStackedBarChart","props","_isRtl","_createLegendsForLine","data","_getLineLegends","_tooltipId","_emptyChartId","_points","_dataset","_xAxisLabels","_bars","_xAxisType","length","xAxisPoint","StringAxis","_barWidth","_colors","_margins","_lineObject","_yMax","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","dataForHoverCard","setDataForHoverCard","color","setColor","hoverXValue","setHoverXValue","YValueHover","setYValueHover","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXAxisDataPoint","setActiveXAxisDataPoint","calloutLegend","setCalloutLegend","stackCalloutProps","setStackCalloutProps","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","height","width","_adjustProps","_createDataSetLayer","useImperativeHandle","componentRef","chartContainer","_getLegendData","lineLegends","hideLegend","defaultPalette","color6","color1","color5","color7","color10","actions","allowHoverOnLegend","forEach","singleChartData","chartData","point","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","push","legendsOfLine","isLineLegendInBarChart","totalLegends","concat","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","_lineHoverOut","_lineHoverFocus","lineData","xItem","yAxisCalloutData","_onStackHoverFocus","stack","mouseEvent","clientX","clientY","boundingRect","getBoundingClientRect","left","top","_noLegendHighlighted","dataPoint","_isLegendHighlighted","isLinesPresent","item","shouldDrawBorderBottom","_updatePosition","sort","a","b","slice","reverse","Date","useUTC","stackCallOutAccessibilityData","_onClick","onBarClick","href","window","location","barWidth","maxBarWidth","defaultColors","_getFormattedLineData","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","tempArr","dataset","map","singlePointData","total","legendTitle","_selectedLegends","event","currentLegend","canSelectMultipleLegends","_getMargins","margins","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xBarScale","yBarScale","_getScales","_createBar","_getAxisData","yAxisData","yAxisDomainValues","domainValue","yMaxValue","includes","_getAriaLabel","xValue","xAxisCalloutData","pointValues","pt","yValue","join","lineValues","ln","ariaLabel","_getCustomizedCallout","_isHavingLines","some","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_renderCallout","_toFocusWholeStack","isCalloutForStack","shouldFocusStackOnly","linesData","formattedLineData","index","line","lineObject","Object","keys","_createLines","secondaryYScale","lines","borderForLines","dots","lineBorderWidth","lineOptions","Number","parseFloat","toString","xScaleBandwidthTranslate","bandwidth","shouldHighlight","i","x1","useSecondaryYScale","y1","x2","y2","key","opacity","strokeWidth","fill","strokeLinecap","stroke","colorNeutralBackground1","transform","strokeDasharray","onMouseOver","_lineHover","bind","onMouseLeave","circlePoint","subIndex","circleRef","refElement","circle","cx","cy","_onStackHover","r","_getCircleVisibilityAndRadius","radius","visibility","data-is-focusable","ref","e","onFocus","_lineFocus","onBlur","tabIndex","culture","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onRectFocus","_onStackFocus","groupRef","_handleMouseOut","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","reduce","iter","value","abs","totalHeight","sumOfPercent","scalingRatio","gaps","gapHeight","heightValueScale","adjustedTotalHeight","yMax","domain","range","bottom","NumericAxis","xMax","xMin","nice","right","DateAxis","sDate","lDate","paddingInner","paddingOuter","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainMargins","totalWidth","barGapRate","reqWidth","mode","margin1","step","margin2","_getChartTitle","chartTitle","numLines","classes","barCornerRadius","barMinimumHeight","shouldFocusWholeStack","indexNumber","yPoint","xPoint","barTotalValue","barsToDisplay","singleBar","startColor","rectFocusProps","hideTooltip","onMouseMove","onClick","role","barHeight","Fragment","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","stackFocusProps","showLabel","barLabel","hideLabels","g","id","text","textAnchor","aria-label","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","xAxis","bar","legendBars","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","points","chartType","xAxisType","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","yScaleSecondary","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|
|
1
|
+
{"version":3,"sources":["VerticalStackedBarChart.tsx"],"sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { useVerticalStackedBarChartStyles } from './useVerticalStackedBarChartStyles.styles';\nimport {\n scaleLinear as d3ScaleLinear,\n ScaleLinear as D3ScaleLinear,\n scaleBand as d3ScaleBand,\n scaleUtc as d3ScaleUtc,\n scaleTime as d3ScaleTime,\n} from 'd3-scale';\nimport { useId } from '@fluentui/react-utilities';\nimport { tokens } from '@fluentui/react-theme';\nimport {\n AccessibilityProps,\n CartesianChart,\n ChildProps,\n VerticalStackedBarDataPoint,\n Margins,\n VerticalStackedBarChartProps,\n VerticalStackedChartProps,\n VSChartDataPoint,\n LineDataInVerticalStackedBarChart,\n ModifiedCartesianChartProps,\n Legend,\n ChartPopover,\n Legends,\n Chart,\n} from '../../index';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n formatScientificLimitWidth,\n getBarWidth,\n getScalePadding,\n isScalePaddingDefined,\n calculateAppropriateBarWidth,\n formatDate,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n DataVizPalette,\n getColorFromToken,\n} from '../../utilities/index';\n\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\ntype NumericScale = D3ScaleLinear<number, number>;\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\nconst MIN_DOMAIN_MARGIN = 8;\n\ninterface RefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = LineDataInVerticalStackedBarChart & { index: number; xItem: VerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\ntype CalloutAnchorPointData = {\n xAxisDataPoint: string;\n chartDataPoint: VSChartDataPoint;\n};\n\nexport const VerticalStackedBarChart: React.FunctionComponent<VerticalStackedBarChartProps> = props => {\n const _isRtl: boolean = useRtl();\n const _createLegendsForLine: (data: VerticalStackedChartProps[]) => LineLegends[] = (\n data: VerticalStackedChartProps[],\n ) => _getLineLegends(data);\n const _tooltipId: string = useId('VSBCTooltipId_');\n const _emptyChartId: string = useId('_VSBC_empty');\n let _points: VerticalStackedChartProps[] = [];\n let _dataset: VerticalStackedBarDataPoint[];\n let _xAxisLabels: string[] = [];\n let _bars: JSX.Element[];\n let _xAxisType: XAxisTypes =\n props.data! && props.data!.length > 0\n ? (getTypeOfAxis(props.data[0]!.xAxisPoint, true) as XAxisTypes)\n : XAxisTypes.StringAxis;\n let _barWidth: number = 0;\n let _colors: string[];\n let _margins: Margins;\n let _lineObject: LineObject;\n let _yMax: number;\n let _calloutAnchorPoint: CalloutAnchorPointData | null;\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n const cartesianChartRef = React.useRef<Chart>(null);\n\n const [selectedLegends, setSelectedLegends] = React.useState(props.legendProps?.selectedLegends || []);\n const [activeLegend, setActiveLegend] = React.useState<string | undefined>(undefined);\n const [dataForHoverCard, setDataForHoverCard] = React.useState(0);\n const [color, setColor] = React.useState('');\n const [hoverXValue, setHoverXValue] = React.useState<string | number>('');\n const [YValueHover, setYValueHover] = React.useState<(LineDataInVerticalStackedBarChart | VSChartDataPoint)[]>([]);\n const [xCalloutValue, setXCalloutValue] = React.useState('');\n const [yCalloutValue, setYCalloutValue] = React.useState('');\n const [activeXAxisDataPoint, setActiveXAxisDataPoint] = React.useState<number | string | Date>('');\n const [calloutLegend, setCalloutLegend] = React.useState('');\n const [stackCalloutProps, setStackCalloutProps] = React.useState<VerticalStackedChartProps>();\n const [dataPointCalloutProps, setDataPointCalloutProps] = React.useState<VSChartDataPoint>();\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps>();\n const [clickPosition, setClickPosition] = React.useState({ x: 0, y: 0 });\n const [isPopoverOpen, setPopoverOpen] = React.useState(false);\n const prevPropsRef = React.useRef<VerticalStackedBarChartProps | null>(null);\n React.useEffect(() => {\n if (prevPropsRef.current) {\n const prevProps = prevPropsRef.current;\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, props.legendProps?.selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n if (prevProps.height !== props.height || prevProps.width !== props.width || prevProps.data !== props.data) {\n _adjustProps();\n _dataset = _createDataSetLayer();\n }\n }\n prevPropsRef.current = props;\n }, [props]);\n\n React.useImperativeHandle(\n props.componentRef,\n () => ({\n chartContainer: cartesianChartRef.current?.chartContainer ?? null,\n }),\n [],\n );\n\n function _getLegendData(data: VerticalStackedChartProps[], lineLegends: LineLegends[]): JSX.Element {\n if (props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n const actions: Legend[] = [];\n const { allowHoverOnLegend = true } = props;\n\n data.forEach((singleChartData: VerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: VSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: Legend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: Legend = {\n title: point.legend,\n color,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.legend);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: Legend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: Legend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n hoverAction: allowHoverOnLegend\n ? () => {\n _handleChartMouseLeave();\n _onLegendHover(point.title);\n }\n : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => _onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: Legend[] = legendsOfLine.concat(actions);\n return (\n <Legends\n legends={totalLegends}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={_onLegendSelectionChange}\n />\n );\n }\n\n function _getHighlightedLegend() {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n }\n\n function _lineHoverOut() {\n setPopoverOpen(false);\n setXCalloutValue('');\n setYCalloutValue('');\n setActiveXAxisDataPoint('');\n setColor('');\n }\n\n function _lineHoverFocus(lineData: LinePoint) {\n setPopoverOpen(true);\n setXCalloutValue(`${lineData.xItem.xAxisPoint}`);\n setYCalloutValue(`${lineData.yAxisCalloutData || lineData.data || lineData.y}`);\n setActiveXAxisDataPoint(lineData.xItem.xAxisPoint);\n setColor(lineData.color);\n }\n\n function _onStackHoverFocus(\n stack: VerticalStackedChartProps,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (!_noLegendHighlighted()) {\n stack = {\n ...stack,\n chartData: stack.chartData.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n lineData: stack.lineData?.filter((dataPoint: { legend: any }) => _isLegendHighlighted(dataPoint.legend)),\n };\n }\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: LineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n _updatePosition(clientX, clientY);\n setPopoverOpen(stack.chartData.length > 0 || (stack.lineData?.length ?? 0) > 0);\n setYValueHover(\n isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n );\n setHoverXValue(stack.xAxisPoint instanceof Date ? formatDate(stack.xAxisPoint, props.useUTC) : stack.xAxisPoint);\n setStackCalloutProps(stack);\n setActiveXAxisDataPoint(stack.xAxisPoint);\n setCallOutAccessibilityData(stack.stackCallOutAccessibilityData);\n }\n\n function _handleChartMouseLeave(): void {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n setActiveXAxisDataPoint('');\n }\n\n const _onClick = (\n data: VerticalStackedChartProps | VSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n props.onBarClick?.(mouseEvent, data);\n props.href ? (window.location.href = props.href) : '';\n };\n\n function _adjustProps(): void {\n _points = props.data || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n const defaultColors: string[] = [\n getColorFromToken(DataVizPalette.color6),\n getColorFromToken(DataVizPalette.color1),\n getColorFromToken(DataVizPalette.color5),\n getColorFromToken(DataVizPalette.color7),\n getColorFromToken(DataVizPalette.color10),\n ];\n _colors = defaultColors;\n _xAxisType = getTypeOfAxis(props.data[0].xAxisPoint, true) as XAxisTypes;\n _lineObject = _getFormattedLineData(props.data);\n _xAxisInnerPadding = getScalePadding(props.xAxisInnerPadding, props.xAxisPadding, 2 / 3);\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding, props.xAxisPadding, 0);\n }\n\n function _createDataSetLayer(): VerticalStackedBarDataPoint[] {\n const tempArr: string[] = [];\n const dataset: VerticalStackedBarDataPoint[] = _points.map(singlePointData => {\n let total: number = 0;\n singlePointData.chartData!.forEach((point: VSChartDataPoint) => {\n total = total + point.data;\n });\n tempArr.push(singlePointData.xAxisPoint as string);\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n _xAxisLabels = tempArr;\n return dataset;\n }\n\n function _onLegendHover(legendTitle: string): void {\n setActiveLegend(legendTitle);\n }\n\n function _onLegendLeave(): void {\n setActiveLegend(undefined);\n }\n\n function _onLegendSelectionChange(\n _selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: Legend,\n ): void {\n if (props.legendProps?.canSelectMultipleLegends) {\n setSelectedLegends(_selectedLegends);\n } else {\n setSelectedLegends(_selectedLegends.slice(-1));\n }\n if (props.legendProps?.onChange) {\n props.legendProps.onChange(_selectedLegends, event, currentLegend);\n }\n }\n\n function _getMargins(margins: Margins) {\n _margins = margins;\n }\n\n function _getGraphData(\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) {\n const { xBarScale, yBarScale } = _getScales(containerHeight, containerWidth);\n return (_bars = _createBar(xBarScale, yBarScale, containerHeight, xElement!));\n }\n\n function _getAxisData(yAxisData: IAxisData) {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n _yMax = Math.max(domainValue[domainValue.length - 1], props.yMaxValue || 0);\n }\n }\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n function _isLegendHighlighted(legendTitle: string) {\n return _getHighlightedLegend().includes(legendTitle);\n }\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n function _noLegendHighlighted() {\n return _getHighlightedLegend().length === 0;\n }\n\n function _getAriaLabel(singleChartData: VerticalStackedChartProps, point?: VSChartDataPoint): string {\n if (!point) {\n /** if shouldFocusWholeStack is true */\n const xValue =\n singleChartData.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const pointValues = singleChartData.chartData\n .map(pt => {\n const legend = pt.legend;\n const yValue = pt.yAxisCalloutData || pt.data;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n const lineValues = singleChartData.lineData\n ?.map(ln => {\n const legend = ln.legend;\n const yValue = ln.yAxisCalloutData || ln.data || ln.y;\n return `${legend}, ${yValue}.`;\n })\n .join(' ');\n return (\n singleChartData.stackCallOutAccessibilityData?.ariaLabel ||\n `${xValue}. ${pointValues}` + (lineValues ? ` ${lineValues}` : '')\n );\n }\n /** if shouldFocusWholeStack is false */\n const xValue =\n singleChartData.xAxisCalloutData ||\n point.xAxisCalloutData ||\n (singleChartData.xAxisPoint instanceof Date\n ? formatDate(singleChartData.xAxisPoint)\n : singleChartData.xAxisPoint);\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n }\n\n function _getCustomizedCallout() {\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return props.onRenderCalloutPerStack\n ? props.onRenderCalloutPerStack(stackCalloutProps)\n : props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? props.onRenderCalloutPerDataPoint(dataPointCalloutProps, _renderCallout)\n : null;\n }\n\n function _toFocusWholeStack(_isHavingLines: boolean): boolean {\n const { isCalloutForStack = false } = props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (_getHighlightedLegend().length === 1) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n }\n\n function _getFormattedLineData(data: VerticalStackedChartProps[]): LineObject {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: VerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n item.lineData.forEach((line: any) => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n }\n\n function _getLineLegends(data: VerticalStackedChartProps[]): LineLegends[] {\n const lineObject: LineObject = _lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n }\n\n function _createLines(\n xScale: any,\n yScale: NumericScale,\n containerHeight: number,\n containerWidth: number,\n secondaryYScale?: NumericScale,\n ): JSX.Element {\n const lineObject: LineObject = _getFormattedLineData(props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n //const { theme } = props;\n const lineBorderWidth = props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n const xScaleBandwidthTranslate = _xAxisType !== XAxisTypes.StringAxis ? 0 : xScale.bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = _isLegendHighlighted(item) || _noLegendHighlighted();\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = xScale(lineObject[item][i - 1].xItem.xAxisPoint);\n const useSecondaryYScale =\n lineObject[item][i - 1].useSecondaryYScale && lineObject[item][i].useSecondaryYScale && secondaryYScale;\n const y1 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i - 1].y) : yScale(lineObject[item][i - 1].y);\n const x2 = xScale(lineObject[item][i].xItem.xAxisPoint);\n const y2 = useSecondaryYScale ? secondaryYScale!(lineObject[item][i].y) : yScale(lineObject[item][i].y);\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={tokens.colorNeutralBackground1}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={lineObject[item][0].lineOptions?.strokeWidth ?? 3}\n strokeLinecap={lineObject[item][0].lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={lineObject[item][0].lineOptions?.strokeDasharray}\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...(_isLegendHighlighted(item) && {\n onMouseOver: _lineHover.bind(lineObject[item][i - 1]),\n onMouseLeave: _lineHoverOut,\n })}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n const circleRef: { refElement: SVGCircleElement | null } = { refElement: null };\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={xScale(circlePoint.xItem.xAxisPoint)}\n cy={\n circlePoint.useSecondaryYScale && secondaryYScale ? secondaryYScale(circlePoint.y) : yScale(circlePoint.y)\n }\n onMouseOver={\n _isLegendHighlighted(item)\n ? (event: React.MouseEvent<SVGElement, MouseEvent>) => _lineHover(circlePoint, event)\n : (event: React.MouseEvent<SVGElement, MouseEvent>) => _onStackHover(circlePoint.xItem, event)\n }\n {...(_isLegendHighlighted(item) && {\n onMouseLeave: _lineHoverOut,\n })}\n r={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={tokens.colorNeutralBackground1}\n strokeWidth={3}\n visibility={_getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n data-is-focusable={_isLegendHighlighted(item)}\n ref={e => (circleRef.refElement = e)}\n onFocus={_lineFocus.bind(circlePoint, circleRef)}\n onBlur={_lineHoverOut}\n tabIndex={circlePoint.legend !== '' ? 0 : undefined}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n }\n\n function _getCircleVisibilityAndRadius(\n xAxisPoint: string | number | Date,\n legend: string,\n ): { visibility: CircleVisbility; radius: number } {\n if (!_noLegendHighlighted()) {\n if (xAxisPoint === activeXAxisDataPoint && _isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (_isLegendHighlighted(legend)) {\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXAxisDataPoint === xAxisPoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n }\n\n function _renderCallout(props?: VSChartDataPoint): JSX.Element | null {\n return props ? (\n <ChartPopover\n culture={props.culture ?? 'en-us'}\n XValue={props.xAxisCalloutData}\n xCalloutValue={xCalloutValue}\n yCalloutValue={yCalloutValue}\n clickPosition={clickPosition}\n isPopoverOpen={isPopoverOpen}\n legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n />\n ) : null;\n }\n\n function _onRectHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n _onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n function _onRectFocusHover(\n xAxisPoint: string | number | Date,\n point: VSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement> | SVGGElement,\n ) {\n let clientX = 0;\n let clientY = 0;\n if ('clientX' in mouseEvent) {\n clientX = mouseEvent.clientX;\n clientY = mouseEvent.clientY;\n } else {\n // Handle case where mouseEvent is an SVGGElement\n const boundingRect = mouseEvent.getBoundingClientRect();\n clientX = boundingRect.left + boundingRect.width / 2;\n clientY = boundingRect.top + boundingRect.height / 2;\n }\n if (_calloutAnchorPoint?.chartDataPoint !== point || _calloutAnchorPoint?.xAxisDataPoint !== xAxisPoint) {\n _calloutAnchorPoint = {\n chartDataPoint: point,\n xAxisDataPoint: `${xAxisPoint}`,\n };\n _updatePosition(clientX, clientY);\n setPopoverOpen(_noLegendHighlighted() || _isLegendHighlighted(point.legend));\n setCalloutLegend(point.legend);\n setDataForHoverCard(point.data);\n setColor(color);\n setXCalloutValue(point.xAxisCalloutData ? point.xAxisCalloutData : `${xAxisPoint}`);\n setYCalloutValue(point.yAxisCalloutData!);\n setDataPointCalloutProps(point);\n setCallOutAccessibilityData(point.callOutAccessibilityData);\n }\n }\n\n function _lineHover(lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) {\n mouseEvent.persist();\n _lineHoverFocus(lineData);\n }\n\n function _lineFocus(lineData: LinePoint, ref: { refElement: SVGCircleElement | null }) {\n if (ref.refElement) {\n _lineHoverFocus(lineData);\n }\n }\n\n function _onStackHover(stack: VerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n _onStackHoverFocus(stack, mouseEvent);\n }\n\n function _onRectFocus(point: VSChartDataPoint, xAxisPoint: string, color: string, ref: RefArrayData): void {\n if (ref.refElement) {\n _onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n function _onStackFocus(stack: VerticalStackedChartProps, groupRef: RefArrayData): void {\n if (groupRef.refElement) {\n _onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n function _handleMouseOut(): void {\n setPopoverOpen(false);\n }\n\n function _getBarGapAndScale(\n bars: VSChartDataPoint[],\n yBarScale: NumericScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n readonly adjustedTotalHeight: number;\n } {\n const { barGapMax = 0 } = props;\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n const totalData = bars.reduce((iter, value) => iter + Math.abs(value.data), 0);\n const totalHeight = defaultTotalHeight ?? yBarScale(totalData);\n let sumOfPercent = 0;\n bars.forEach(point => {\n let value = (Math.abs(point.data) / totalData) * 100;\n if (value < 1 && value !== 0) {\n value = 1;\n }\n sumOfPercent += value;\n });\n const scalingRatio = sumOfPercent !== 0 ? sumOfPercent / 100 : 1;\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale = (totalHeight - gapHeight * gaps) / (totalData * scalingRatio);\n return {\n gapHeight,\n heightValueScale,\n adjustedTotalHeight: sumOfPercent,\n } as const;\n }\n\n function _getScales(containerHeight: number, containerWidth: number) {\n const yMax = _yMax;\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([0, containerHeight - _margins.bottom! - _margins.top!]);\n if (_xAxisType === XAxisTypes.NumericAxis) {\n const xMax = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n const xMin = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(_isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n if (_xAxisType === XAxisTypes.DateAxis) {\n const sDate = d3Min(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const lDate = d3Max(_dataset, (point: VerticalStackedBarDataPoint) => {\n return point.x as Date;\n })!;\n const xBarScale = props.useUTC ? d3ScaleUtc() : d3ScaleTime();\n xBarScale\n .domain(_isRtl ? [lDate, sDate] : [sDate, lDate])\n .range([_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin]);\n\n return { xBarScale, yBarScale };\n }\n const xBarScale = d3ScaleBand()\n .domain(_xAxisLabels)\n .range(\n _isRtl\n ? [containerWidth - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n\n return { xBarScale, yBarScale };\n }\n\n const _isChartEmpty = (): boolean => {\n return !(\n props.data &&\n props.data.length > 0 &&\n props.data.some(item => item.chartData.length > 0 || (item.lineData && item.lineData.length > 0))\n );\n };\n\n function _updatePosition(newX: number, newY: number) {\n const threshold = 1; // Set a threshold for movement\n const { x, y } = clickPosition;\n // Calculate the distance moved\n const distance = Math.sqrt(Math.pow(newX - x, 2) + Math.pow(newY - y, 2));\n // Update the position only if the distance moved is greater than the threshold\n if (distance > threshold) {\n setClickPosition({ x: newX, y: newY });\n setPopoverOpen(true);\n }\n }\n\n function _getDomainMargins(containerWidth: number): Margins {\n _domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth = containerWidth - (_margins.left! + MIN_DOMAIN_MARGIN) - (_margins.right! + MIN_DOMAIN_MARGIN);\n /** Rate at which the space between the bars changes wrt the bar width */\n const barGapRate = _xAxisInnerPadding / (1 - _xAxisInnerPadding);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding, props.xAxisPadding)) {\n // Setting the domain margin for string x-axis to 0 because the xAxisOuterPadding prop is now available\n // to adjust the space before the first bar and after the last bar.\n _domainMargin = 0;\n } else if (props.barWidth !== 'auto') {\n // Update the bar width so that when CartesianChart rerenders,\n // the following calculations don't use the previous bar width.\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n /** Total width required to render the bars. Directly proportional to bar width */\n const reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * _barWidth;\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n _domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (props.mode === 'plotly' && _xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering bars at their maximum allowable width\n const bandwidth = totalWidth / (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, bandwidth);\n let reqWidth = (_xAxisLabels.length + (_xAxisLabels.length - 1) * barGapRate) * barWidth;\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(_xAxisLabels) + 20;\n reqWidth = (_xAxisLabels.length - _xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n } else {\n const data = (props.data?.map(point => point.xAxisPoint) as number[] | Date[] | undefined) || [];\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, calculateAppropriateBarWidth(data, totalWidth));\n _domainMargin = MIN_DOMAIN_MARGIN + _barWidth / 2;\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n }\n\n function _getChartTitle(): string {\n const { chartTitle, data } = props;\n const numLines = Object.keys(_lineObject).length;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${data?.length || 0} stacked bars` +\n (numLines > 0 ? ` and ${numLines} lines` : '') +\n '. '\n );\n }\n\n const classes = useVerticalStackedBarChartStyles(props);\n function _createBar(\n xBarScale: any,\n yBarScale: NumericScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element[] {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = props;\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth, xBarScale.bandwidth());\n }\n\n const bars = _points.map((singleChartData: VerticalStackedChartProps, indexNumber: number) => {\n let yPoint = containerHeight - _margins.bottom!;\n const xPoint = xBarScale(\n _xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : _xAxisType === XAxisTypes.DateAxis\n ? (singleChartData.xAxisPoint as Date)\n : (singleChartData.xAxisPoint as string),\n );\n const xScaleBandwidthTranslate =\n _xAxisType !== XAxisTypes.StringAxis ? -_barWidth / 2 : (xBarScale.bandwidth() - _barWidth) / 2;\n\n let barTotalValue = 0;\n\n const barsToDisplay = singleChartData.chartData.filter(point => point.data > 0);\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale, adjustedTotalHeight } = _getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const singleBar = barsToDisplay.map((point: VSChartDataPoint, index: number) => {\n const startColor = point.color ? point.color : _colors[index];\n const ref: RefArrayData = {};\n const shouldHighlight = _isLegendHighlighted(point.legend) || _noLegendHighlighted() ? true : false;\n const rectFocusProps = !shouldFocusWholeStack && {\n 'data-is-focusable': !props.hideTooltip && shouldHighlight,\n 'aria-label': _getAriaLabel(singleChartData, point),\n onMouseOver: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseMove: (event: React.MouseEvent<SVGElement, MouseEvent>) =>\n _onRectHover(singleChartData.xAxisPoint, point, startColor, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onRectFocus(point, singleChartData.xAxisPoint as string, startColor, ref),\n onBlur: _handleMouseOut,\n onClick: (event: React.MouseEvent<SVGElement, MouseEvent>) => _onClick(point, event),\n role: 'img',\n };\n\n let barHeight = heightValueScale * point.data;\n if (barHeight < Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight)) {\n barHeight = Math.max((heightValueScale * adjustedTotalHeight) / 100.0, barMinimumHeight);\n }\n yPoint = yPoint - barHeight - (index ? gapHeight : 0);\n barTotalValue += point.data;\n\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <React.Fragment key={index + indexNumber + `${shouldFocusWholeStack}`}>\n <path\n className={classes.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${_barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-_barWidth}\n z\n `}\n fill={startColor}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n cursor={props.href ? 'pointer' : 'default'}\n {...rectFocusProps}\n />\n </React.Fragment>\n );\n }\n if (barHeight < 0) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <React.Fragment key={index + indexNumber}>\n <rect\n className={classes.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={_barWidth}\n height={barHeight}\n fill={startColor}\n opacity={shouldHighlight ? 1 : 0.1}\n cursor={props.href ? 'pointer' : 'default'}\n rx={props.roundCorners ? 3 : 0}\n ref={e => (ref.refElement = e)}\n {...rectFocusProps}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n </React.Fragment>\n );\n });\n const groupRef: RefArrayData = {};\n const stackFocusProps = shouldFocusWholeStack && {\n 'data-is-focusable': !props.hideTooltip,\n 'aria-label': _getAriaLabel(singleChartData),\n onMouseOver: (event: any) => _onStackHover(singleChartData, event),\n onMouseMove: (event: any) => _onStackHover(singleChartData, event),\n onMouseLeave: _handleMouseOut,\n onFocus: () => _onStackFocus(singleChartData, groupRef),\n onBlur: _handleMouseOut,\n onClick: (event: any) => _onClick(singleChartData, event),\n role: 'img',\n };\n let showLabel = false;\n let barLabel = 0;\n if (!props.hideLabels) {\n if (_noLegendHighlighted()) {\n showLabel = true;\n barLabel = barTotalValue;\n } else {\n barsToDisplay.forEach(point => {\n if (_isLegendHighlighted(point.legend)) {\n showLabel = true;\n barLabel += point.data;\n }\n });\n }\n }\n return (\n <g key={indexNumber + `${shouldFocusWholeStack}`}>\n <g\n id={`${indexNumber}-singleBar`}\n ref={e => (groupRef.refElement = e)}\n {...stackFocusProps}\n tabIndex={!props.hideTooltip ? 0 : undefined}\n >\n {singleBar}\n </g>\n {!props.hideLabels && _barWidth >= 16 && showLabel && (\n <text\n x={xPoint + _barWidth / 2}\n y={yPoint - 6}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-label={`Total: ${barLabel}`}\n role=\"img\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n >\n {formatScientificLimitWidth(barLabel)}\n </text>\n )}\n </g>\n );\n });\n if (!props.showXAxisLablesTooltip) {\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\n }\n\n if (!_isChartEmpty()) {\n _adjustProps();\n const _isHavingLines = props.data.some(\n (item: VerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = _toFocusWholeStack(_isHavingLines);\n _dataset = _createDataSetLayer();\n const legendBars: JSX.Element = _getLegendData(_points, _createLegendsForLine(props.data));\n const calloutProps: ModifiedCartesianChartProps['calloutProps'] = {\n color: color,\n legend: calloutLegend,\n XValue: xCalloutValue!,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: YValueHover,\n hoverXValue: hoverXValue,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData),\n clickPosition: clickPosition,\n isPopoverOpen: isPopoverOpen,\n isCalloutForStack:\n props.isCalloutForStack || (_isHavingLines && (_noLegendHighlighted() || _getHighlightedLegend().length > 1)),\n isCartesian: true,\n customCallout: {\n customizedCallout: _getCustomizedCallout() !== null ? _getCustomizedCallout()! : undefined,\n customCalloutProps: props.calloutPropsPerDataPoint\n ? props.calloutPropsPerDataPoint(dataPointCalloutProps!)\n : undefined,\n },\n };\n const tickParams = {\n tickValues: props.tickValues,\n tickFormat: props.tickFormat,\n };\n return (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={_xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={_xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n barwidth={_barWidth}\n getmargins={_getMargins}\n getGraphData={_getGraphData}\n getAxisData={_getAxisData}\n onChartMouseLeave={_handleChartMouseLeave}\n getDomainMargins={_getDomainMargins}\n {...(_xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: _xAxisInnerPadding,\n xAxisOuterPadding: _xAxisOuterPadding,\n })}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(props: ChildProps) => {\n return (\n <>\n <g>{_bars}</g>\n <g>\n {_isHavingLines &&\n _createLines(\n props.xScale!,\n props.yScale!,\n props.containerHeight!,\n props.containerWidth!,\n props.yScaleSecondary,\n )}\n </g>\n </>\n );\n }}\n />\n );\n }\n return <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />;\n};\nVerticalStackedBarChart.displayName = 'VerticalStackedBarChart';\n"],"names":["React","max","d3Max","min","d3Min","select","d3Select","useVerticalStackedBarChartStyles","scaleLinear","d3ScaleLinear","scaleBand","d3ScaleBand","scaleUtc","d3ScaleUtc","scaleTime","d3ScaleTime","useId","tokens","CartesianChart","ChartPopover","Legends","ChartTypes","getAccessibleDataObject","XAxisTypes","getTypeOfAxis","tooltipOfXAxislabels","formatScientificLimitWidth","getBarWidth","getScalePadding","isScalePaddingDefined","calculateAppropriateBarWidth","formatDate","areArraysEqual","calculateLongestLabelWidth","useRtl","DataVizPalette","getColorFromToken","barGapMultiplier","barGapMin","MIN_DOMAIN_MARGIN","CircleVisbility","VerticalStackedBarChart","props","_isRtl","_createLegendsForLine","data","_getLineLegends","_tooltipId","_emptyChartId","_points","_dataset","_xAxisLabels","_bars","_xAxisType","length","xAxisPoint","StringAxis","_barWidth","_colors","_margins","_lineObject","_yMax","_calloutAnchorPoint","_domainMargin","_xAxisInnerPadding","_xAxisOuterPadding","cartesianChartRef","useRef","selectedLegends","setSelectedLegends","useState","legendProps","activeLegend","setActiveLegend","undefined","dataForHoverCard","setDataForHoverCard","color","setColor","hoverXValue","setHoverXValue","YValueHover","setYValueHover","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","activeXAxisDataPoint","setActiveXAxisDataPoint","calloutLegend","setCalloutLegend","stackCalloutProps","setStackCalloutProps","dataPointCalloutProps","setDataPointCalloutProps","callOutAccessibilityData","setCallOutAccessibilityData","clickPosition","setClickPosition","x","y","isPopoverOpen","setPopoverOpen","prevPropsRef","useEffect","current","prevProps","height","width","_adjustProps","_createDataSetLayer","useImperativeHandle","componentRef","chartContainer","_getLegendData","lineLegends","hideLegend","defaultPalette","color6","color1","color5","color7","color10","actions","allowHoverOnLegend","forEach","singleChartData","chartData","point","Math","floor","random","checkSimilarLegends","filter","leg","title","legend","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","push","legendsOfLine","isLineLegendInBarChart","totalLegends","concat","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","onChange","_onLegendSelectionChange","_getHighlightedLegend","_lineHoverOut","_lineHoverFocus","lineData","xItem","yAxisCalloutData","_onStackHoverFocus","stack","mouseEvent","clientX","clientY","boundingRect","getBoundingClientRect","left","top","_noLegendHighlighted","dataPoint","_isLegendHighlighted","isLinesPresent","item","shouldDrawBorderBottom","_updatePosition","sort","a","b","slice","reverse","Date","useUTC","stackCallOutAccessibilityData","_onClick","onBarClick","href","window","location","barWidth","maxBarWidth","defaultColors","_getFormattedLineData","xAxisInnerPadding","xAxisPadding","xAxisOuterPadding","tempArr","dataset","map","singlePointData","total","legendTitle","_selectedLegends","event","currentLegend","canSelectMultipleLegends","_getMargins","margins","_getGraphData","xScale","yScale","containerHeight","containerWidth","xElement","xBarScale","yBarScale","_getScales","_createBar","_getAxisData","yAxisData","yAxisDomainValues","domainValue","yMaxValue","includes","_getAriaLabel","xValue","xAxisCalloutData","pointValues","pt","yValue","join","lineValues","ln","ariaLabel","_getCustomizedCallout","_isHavingLines","some","onRenderCalloutPerStack","onRenderCalloutPerDataPoint","_renderCallout","_toFocusWholeStack","isCalloutForStack","shouldFocusStackOnly","linesData","formattedLineData","index","line","lineObject","Object","keys","_createLines","secondaryYScale","lines","borderForLines","dots","lineBorderWidth","lineOptions","Number","parseFloat","toString","xScaleBandwidthTranslate","bandwidth","shouldHighlight","i","x1","useSecondaryYScale","y1","x2","y2","key","opacity","strokeWidth","fill","strokeLinecap","stroke","colorNeutralBackground1","transform","strokeDasharray","onMouseOver","_lineHover","bind","onMouseLeave","circlePoint","subIndex","circleRef","refElement","circle","cx","cy","_onStackHover","r","_getCircleVisibilityAndRadius","radius","visibility","data-is-focusable","ref","e","onFocus","_lineFocus","onBlur","tabIndex","culture","XValue","YValue","_onRectHover","persist","_onRectFocusHover","chartDataPoint","xAxisDataPoint","_onRectFocus","_onStackFocus","groupRef","_handleMouseOut","_getBarGapAndScale","bars","defaultTotalHeight","barGapMax","totalData","reduce","iter","value","abs","totalHeight","sumOfPercent","scalingRatio","gaps","gapHeight","heightValueScale","adjustedTotalHeight","yMax","domain","range","bottom","NumericAxis","xMax","xMin","nice","right","DateAxis","sDate","lDate","paddingInner","paddingOuter","_isChartEmpty","newX","newY","threshold","distance","sqrt","pow","_getDomainMargins","totalWidth","barGapRate","reqWidth","mode","margin1","step","margin2","_getChartTitle","chartTitle","numLines","classes","barCornerRadius","barMinimumHeight","shouldFocusWholeStack","indexNumber","yPoint","xPoint","barTotalValue","barsToDisplay","singleBar","startColor","rectFocusProps","hideTooltip","onMouseMove","onClick","role","barHeight","Fragment","path","className","opacityChangeOnHover","d","rx","roundCorners","cursor","rect","stackFocusProps","showLabel","barLabel","hideLabels","g","id","text","textAnchor","aria-label","showXAxisLablesTooltip","document","getElementById","remove","wrapXAxisLables","xAxisElement","call","tooltipProps","tooltipCls","tooltip","xAxis","bar","legendBars","calloutProps","isCartesian","customCallout","customizedCallout","customCalloutProps","calloutPropsPerDataPoint","tickParams","tickValues","tickFormat","points","chartType","xAxisType","datasetForXAxisDomain","barwidth","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","children","yScaleSecondary","div","style","displayName"],"rangeMappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;","mappings":"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"}
|