@fluentui/react-charts 9.3.21 → 9.3.22

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.
Files changed (22) hide show
  1. package/CHANGELOG.md +12 -2
  2. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +9 -3
  3. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  4. package/lib/components/HorizontalBarChart/HorizontalBarChart.js +8 -5
  5. package/lib/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  6. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +15 -3
  7. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  8. package/lib/components/VerticalBarChart/VerticalBarChart.js +13 -4
  9. package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  10. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +16 -10
  11. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  12. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +9 -3
  13. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
  14. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js +8 -5
  15. package/lib-commonjs/components/HorizontalBarChart/HorizontalBarChart.js.map +1 -1
  16. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +15 -3
  17. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
  18. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +13 -4
  19. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
  20. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +16 -10
  21. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
  22. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,12 +1,22 @@
1
1
  # Change Log - @fluentui/react-charts
2
2
 
3
- This log was last generated on Mon, 29 Jun 2026 15:14:11 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 15 Jul 2026 14:10:08 GMT and should not be manually modified.
4
4
 
5
5
  <!-- Start content -->
6
6
 
7
+ ## [9.3.22](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.3.22)
8
+
9
+ Wed, 15 Jul 2026 14:10:08 GMT
10
+ [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.3.21..@fluentui/react-charts_v9.3.22)
11
+
12
+ ### Patches
13
+
14
+ - Accessibility bug fixes ([PR #36292](https://github.com/microsoft/fluentui/pull/36292) by 132879294+v-baambati@users.noreply.github.com)
15
+ - Bump @fluentui/react-overflow to v9.9.1 ([PR #36401](https://github.com/microsoft/fluentui/pull/36401) by beachball)
16
+
7
17
  ## [9.3.21](https://github.com/microsoft/fluentui/tree/@fluentui/react-charts_v9.3.21)
8
18
 
9
- Mon, 29 Jun 2026 15:14:11 GMT
19
+ Mon, 29 Jun 2026 15:15:07 GMT
10
20
  [Compare changes](https://github.com/microsoft/fluentui/compare/@fluentui/react-charts_v9.3.20..@fluentui/react-charts_v9.3.21)
11
21
 
12
22
  ### Patches
@@ -473,7 +473,7 @@ export const GroupedVerticalBarChart = /*#__PURE__*/ React.forwardRef((_props, f
473
473
  onClick: pointData.onClick,
474
474
  "aria-label": getAriaLabel(pointData, singleSet.xAxisPoint),
475
475
  tabIndex: _legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined,
476
- role: "img"
476
+ role: "option"
477
477
  }));
478
478
  // Render individual bar label if provided
479
479
  if (pointData.barLabel && isLegendActive) {
@@ -508,7 +508,10 @@ export const GroupedVerticalBarChart = /*#__PURE__*/ React.forwardRef((_props, f
508
508
  }
509
509
  }
510
510
  });
511
+ const categoryGroupAriaLabel = `${singleSet.xAxisPoint}, category ${singleSet.indexNum + 1} of ${_datasetForBars.length}, with ${presentLegends.length} bars`;
511
512
  return /*#__PURE__*/ React.createElement("g", {
513
+ role: "listbox",
514
+ "aria-label": categoryGroupAriaLabel,
512
515
  key: singleSet.indexNum,
513
516
  transform: `translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`
514
517
  }, singleGroup, barLabelsForGroup);
@@ -693,7 +696,7 @@ export const GroupedVerticalBarChart = /*#__PURE__*/ React.forwardRef((_props, f
693
696
  tabIndex: shouldHighlight ? 0 : undefined,
694
697
  onFocus: (e)=>_onLineFocus(e, series, seriesIdx, pointIdx),
695
698
  onBlur: _onBarLeave,
696
- role: "img",
699
+ role: "option",
697
700
  "aria-label": getAriaLabel({
698
701
  xAxisCalloutData: point.xAxisCalloutData,
699
702
  legend: series.legend,
@@ -703,6 +706,7 @@ export const GroupedVerticalBarChart = /*#__PURE__*/ React.forwardRef((_props, f
703
706
  }, point.x)
704
707
  }));
705
708
  });
709
+ const dotGroupAriaLabel = `${series.legend || `Line ${seriesIdx + 1}`}, line with ${series.data.length} data points`;
706
710
  lineBorders.push(/*#__PURE__*/ React.createElement("g", {
707
711
  key: `lineBorderGroup-${seriesIdx}`
708
712
  }, lineBorderGroup));
@@ -710,7 +714,9 @@ export const GroupedVerticalBarChart = /*#__PURE__*/ React.forwardRef((_props, f
710
714
  key: `lineGroup-${seriesIdx}`
711
715
  }, lineGroup));
712
716
  dots.push(/*#__PURE__*/ React.createElement("g", {
713
- key: `dotGroup-${seriesIdx}`
717
+ role: "listbox",
718
+ key: `dotGroup-${seriesIdx}`,
719
+ "aria-label": dotGroupAriaLabel
714
720
  }, dotGroup));
715
721
  });
716
722
  return dots.length > 0 ? /*#__PURE__*/ React.createElement("g", null, lineBorders.length > 0 ? /*#__PURE__*/ React.createElement("g", null, lineBorders) : null, lines.length > 0 ? /*#__PURE__*/ React.createElement("g", null, lines) : null, /*#__PURE__*/ React.createElement("g", null, dots)) : null;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/components/GroupedVerticalBarChart/GroupedVerticalBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { pointer as d3Pointer } from 'd3-selection';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport type { ScaleBand, ScaleLinear } from 'd3-scale';\nimport { scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { useId } from '@fluentui/react-utilities';\nimport type { IAxisData, IDomainNRange, YAxisType } from '../../utilities/index';\nimport {\n ChartTypes,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n calcRequiredWidth,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n sortAxisCategories,\n} from '../../utilities/index';\n\nimport type {\n AccessibilityProps,\n Margins,\n Legend,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n YValueHover,\n ChartPopoverProps,\n LineSeries,\n BarSeries,\n ChildProps,\n} from '../../index';\nimport { CartesianChart, Legends, getColorFromToken } from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport { useImageExport } from '../../utilities/hooks';\nimport { isInvalidValue } from '@fluentui/chart-utilities';\n\ntype NumericScale = ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\nconst VERTICAL_BAR_GAP = 1;\nconst MIN_BAR_HEIGHT = 1;\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface GVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface GVSingleDataPoint {\n [key: string]: GVDataPoint;\n}\n\ntype GVBCLineSeries = LineSeries<string, number>;\n\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((_props, forwardedRef) => {\n const props: GroupedVerticalBarChartProps = {\n xAxisCategoryOrder: 'default',\n maxBarWidth: 24,\n ..._props,\n };\n const _emptyChartId: string = useId('_GVBC_empty');\n const _useRtl: boolean = useRtl();\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSXElement[] = [];\n let _yMax: number = 0;\n let _calloutAnchorPoint: GVBarChartSeriesPoint | null = null;\n let _barWidth: number = 0;\n let _groupWidth: number = 0;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n let _barLegends: string[] = [];\n let _lineLegends: string[] = [];\n let _legendColorMap: Record<string, [string, string]> = {};\n const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);\n const Y_ORIGIN: number = 0;\n const _rectRef = React.useRef<SVGRectElement>(null);\n const _uniqDotId = useId('gvbc_dot_');\n\n const [color, setColor] = React.useState<string | undefined>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [yValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [hoverXValue, setHoverXValue] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps | undefined>(\n undefined,\n );\n const [popoverTarget, setPopoverTarget] = React.useState<SVGElement | null>(null);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [activeLinePoint, setActiveLinePoint] = React.useState<string>('');\n const classes = useGroupedVerticalBarChartStyles_unstable(props);\n\n React.useEffect(() => {\n if (!areArraysEqual(props.legendProps?.selectedLegends, selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }, [props.legendProps?.selectedLegends]);\n\n const _adjustProps = () => {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = _barLegends.length * bar_width + (_barLegends.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + calcTotalBandUnits(_barLegends.length, X1_INNER_PADDING)),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n const linePointsByX: Record<string, YValueHover[]> = {};\n const visitedX = new Set<string>();\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!linePointsByX[point.x]) {\n linePointsByX[point.x] = [];\n }\n linePointsByX[point.x].push({\n ...point,\n legend: series.legend,\n color: series.color,\n data: point.y,\n useSecondaryYScale: series.useSecondaryYScale,\n } as YValueHover);\n });\n });\n\n barData.forEach((point: GroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, GVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n if (!singleDatasetPointForBars[seriesPoint.legend]) {\n singleDatasetPointForBars[seriesPoint.legend] = [{ ...seriesPoint }];\n legendToBarPoint[seriesPoint.legend] = { ...seriesPoint };\n } else {\n singleDatasetPointForBars[seriesPoint.legend].push({ ...seriesPoint });\n legendToBarPoint[seriesPoint.legend].data += seriesPoint.data;\n }\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = [\n ...Object.values(legendToBarPoint),\n ...(linePointsByX[point.name] ?? []),\n ];\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n visitedX.add(point.name);\n });\n\n Object.keys(linePointsByX).forEach(xPoint => {\n if (!visitedX.has(xPoint)) {\n datasetForBars.push({\n xAxisPoint: xPoint,\n groupSeries: linePointsByX[xPoint],\n });\n }\n });\n\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const barLegends = new Set<string>();\n barData.forEach((point: GroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n barLegends.add(seriesPoint.legend);\n });\n });\n const lineLegends = new Set<string>(lineData.map(series => series.legend));\n const xAxisLabels: string[] = _getOrderedXAxisLabels(barData, lineData);\n const datasetForBars = _createDataset(barData, lineData);\n return {\n barLegends: Array.from(barLegends),\n lineLegends: Array.from(lineLegends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n const 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 const _getLegendData = (): JSXElement => {\n const actions: Legend[] = [];\n\n const addLegendButton = (legendTitle: string, isLineLegendInBarChart?: boolean) => {\n const legend: Legend = {\n title: legendTitle,\n color: _legendColorMap[legendTitle][0],\n isLineLegendInBarChart,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n };\n\n _lineLegends.forEach(legendTitle => addLegendButton(legendTitle, true));\n _barLegends.forEach(legendTitle => addLegendButton(legendTitle));\n\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n };\n\n const _processDataV2 = (dataV2: (BarSeries<string, number> | LineSeries<string, number>)[]) => {\n const barPointsByX: Record<string, GroupedVerticalBarChartData> = {};\n const lineData: GVBCLineSeries[] = [];\n\n dataV2.forEach(series => {\n if (series.type === 'bar') {\n series.data.forEach(point => {\n if (!barPointsByX[point.x]) {\n barPointsByX[point.x] = { name: point.x, series: [] };\n }\n\n barPointsByX[point.x].series.push({\n key: series.key ?? series.legend,\n data: point.y,\n color: point.color ?? series.color,\n // gradient: series.gradient,\n legend: series.legend,\n xAxisCalloutData: point.xAxisCalloutData,\n yAxisCalloutData: point.yAxisCalloutData,\n onClick: point.onClick,\n useSecondaryYScale: series.useSecondaryYScale,\n });\n });\n } else if (series.type === 'line') {\n lineData!.push(series);\n }\n });\n\n return { barData: Object.values(barPointsByX), lineData };\n };\n\n const _prepareChartData = () => {\n let barData = props.data;\n let lineData: GVBCLineSeries[] | undefined;\n\n if (Array.isArray(props.dataV2) && props.dataV2.length > 0) {\n ({ barData, lineData } = _processDataV2(props.dataV2));\n }\n\n _legendColorMap = {};\n let colorIndex = 0;\n\n return {\n barData:\n barData?.map(point => {\n return {\n ...point,\n series:\n point.series?.map(seriesPoint => {\n // TODO: Add support for gradient colors\n const startColor = seriesPoint.color ? seriesPoint.color : getNextColor(colorIndex, 0);\n const endColor = startColor;\n if (!_legendColorMap[seriesPoint.legend]) {\n _legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? _legendColorMap[seriesPoint.legend][0],\n };\n }) ?? [],\n };\n }) ?? [],\n\n lineData:\n lineData?.map(series => {\n let lineColor: string;\n if (typeof series.color === 'undefined') {\n lineColor = getNextColor(colorIndex, 0);\n } else {\n lineColor = getColorFromToken(series.color);\n }\n\n if (!_legendColorMap[series.legend]) {\n _legendColorMap[series.legend] = [lineColor, lineColor];\n }\n colorIndex += 1;\n\n return {\n ...series,\n color: _legendColorMap[series.legend][0],\n };\n }) ?? [],\n };\n };\n\n const _getOrderedXAxisLabels = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n if (_xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(barData, lineData), props.xAxisCategoryOrder);\n };\n\n const _mapCategoryToValues = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const categoryToValues: Record<string, number[]> = {};\n barData.forEach(point => {\n if (!categoryToValues[point.name]) {\n categoryToValues[point.name] = [];\n }\n point.series.forEach(seriesPoint => {\n categoryToValues[point.name].push(seriesPoint.data);\n });\n });\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!categoryToValues[point.x]) {\n categoryToValues[point.x] = [];\n }\n categoryToValues[point.x].push(point.y);\n });\n });\n return categoryToValues;\n };\n\n const { barData, lineData } = _prepareChartData();\n const firstXValue = barData[0]?.name ?? lineData[0]?.data[0]?.x;\n const _xAxisType: XAxisTypes = isInvalidValue(firstXValue)\n ? XAxisTypes.StringAxis\n : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n const { barLegends, lineLegends, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(barData, lineData);\n _barLegends = barLegends;\n _lineLegends = lineLegends;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const legendBars: JSXElement = _getLegendData();\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Add commentMore actions\n function _getMinMaxOfYAxis(datasetForBars: any, yAxisType?: YAxisType, useSecondaryYScale?: boolean) {\n const values: number[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n datasetForBars.forEach((data: any) => {\n data.groupSeries.forEach((point: GVBarChartSeriesPoint) => {\n if (!useSecondaryYScale === !point.useSecondaryYScale) {\n values.push(point.data);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n function _getDomainNRangeValues(\n points: GroupedVerticalBarChartData[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n\n const yMax = _getMinMaxOfYAxis(_datasetForBars).endValue;\n _yMax = Math.max(yMax, props.yMaxValue || 0);\n\n const calloutProps: ChartPopoverProps = {\n positioning: { target: popoverTarget },\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: yValueHover,\n hoverXValue,\n culture: props.culture,\n isCartesian: true,\n isCalloutForStack: props.isCalloutForStack,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: props.tickValues!,\n tickFormat: props.tickFormat!,\n };\n\n const _getGraphData = (\n xScale: StringScale | NumericScale,\n yScalePrimary: ScaleLinear<number, number>,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) => {\n const xScale0 = _createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n calcBandwidth(xScale0.bandwidth(), _barLegends.length, X1_INNER_PADDING),\n );\n _groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSXElement[] = [];\n _datasetForBars.forEach((singleSet: GVSingleDataPoint) => {\n allGroupsBars.push(\n _buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n _groupedVerticalBarGraph = allGroupsBars;\n };\n\n const _getMargins = (margins: Margins) => {\n _margins = margins;\n };\n\n const onBarHover = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint !== pointData) {\n _calloutAnchorPoint = pointData;\n _showCallout(mouseEvent.currentTarget, pointData, groupData);\n }\n };\n\n const _onBarLeave = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n };\n\n const onBarFocus = (\n focusEvent: React.FocusEvent<SVGRectElement, Element>,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n ): void => {\n _showCallout(focusEvent.currentTarget, pointData, groupData);\n };\n\n const _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n containerHeight: number,\n xElement: SVGElement,\n ): JSXElement => {\n const singleGroup: JSXElement[] = [];\n const barLabelsForGroup: JSXElement[] = [];\n\n // Get the actual legends present at this x-axis point\n const presentLegends = _barLegends.filter(key => key in singleSet);\n const effectiveGroupWidth = calcRequiredWidth(_barWidth, presentLegends.length, X1_INNER_PADDING);\n\n // For stacked bars, center the single bar group in the available space\n // Instead of using the global legend position, use the local position within present legends\n const localScale = d3ScaleBand()\n .domain(presentLegends)\n .range(_useRtl ? [effectiveGroupWidth, 0] : [0, effectiveGroupWidth])\n .paddingInner(X1_INNER_PADDING);\n _barLegends.forEach((legendTitle: string, legendIndex: number) => {\n const barPoints = singleSet[legendTitle];\n if (barPoints) {\n const yBarScale = barPoints[0].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n const xPoint = (localScale(legendTitle) ?? 0) + (localScale.bandwidth() - _barWidth) / 2;\n const isLegendActive = _legendHighlighted(legendTitle) || _noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = Y_ORIGIN;\n\n barPoints.forEach((pointData: GVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\n const pointColor = pointData.color; // Use the color of the current point\n\n if (pointData.data >= Y_ORIGIN) {\n yPositiveStart -= height + barGap;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + barGap;\n yNegativeStart = yPoint + height;\n }\n\n singleGroup.push(\n <rect\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}`}\n className={classes.opacityChangeOnHover}\n height={height}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n opacity={barOpacity}\n fill={pointColor}\n rx={props.roundCorners ? 3 : 0}\n onMouseOver={event => onBarHover(pointData, singleSet, event)}\n onMouseMove={event => onBarHover(pointData, singleSet, event)}\n onMouseOut={_onBarLeave}\n onFocus={event => onBarFocus(event, pointData, singleSet)}\n onBlur={_onBarLeave}\n onClick={pointData.onClick}\n aria-label={getAriaLabel(pointData, singleSet.xAxisPoint)}\n tabIndex={_legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined}\n role=\"img\"\n />,\n );\n\n // Render individual bar label if provided\n if (pointData.barLabel && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}-label`}\n x={xPoint + _barWidth / 2}\n y={pointData.data >= Y_ORIGIN ? yPoint - 6 : yPoint + height + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {pointData.barLabel}\n </text>,\n );\n }\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !props.hideLabels && Math.ceil(_barWidth) >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + _barWidth / 2}\n y={barTotalValue >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barTotalValue)\n : formatScientificLimitWidth(barTotalValue)}\n </text>,\n );\n }\n }\n });\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n const _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(xAxisLabels)\n .range(\n _useRtl\n ? [containerWidth! - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth! - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(_barLegends)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(_useRtl ? [_groupWidth, 0] : [0, _groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n\n const _getAxisData = React.useCallback(\n (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 [props.yMaxValue],\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 const _legendHighlighted = (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 const _noLegendHighlighted = () => {\n return _getHighlightedLegend().length === 0;\n };\n\n const _getHighlightedLegend = () => {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n };\n\n const getAriaLabel = (point: GVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n const _getDomainMargins = (containerWidth: number): Margins => {\n /** Total width available to render the bars */\n const totalWidth = calcTotalWidth(containerWidth, _margins, MIN_DOMAIN_MARGIN);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding)) {\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 group and after the last group.\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 const groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = calcRequiredWidth(groupWidth, _xAxisLabels.length, _xAxisInnerPadding);\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 groups at their maximum allowable width\n const groupBandwidth = calcBandwidth(totalWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const barBandwidth = calcBandwidth(groupBandwidth, _barLegends.length, X1_INNER_PADDING);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = calcRequiredWidth(barWidth, _barLegends.length, X1_INNER_PADDING);\n let reqWidth = calcRequiredWidth(groupWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const margin1 = (totalWidth - reqWidth) / 2;\n\n let margin2 = Number.POSITIVE_INFINITY;\n if (!props.hideTickOverlap) {\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 margin2 = (totalWidth - reqWidth) / 2;\n }\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (_barData: GroupedVerticalBarChartData[], _lineData: GVBCLineSeries[]): boolean => {\n return !(\n (_barData &&\n _barData.length > 0 &&\n _barData.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0) ||\n (_lineData && _lineData.length > 0 && _lineData.some(series => series.data.length > 0))\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_barLegends.length} grouped bar series` +\n (_lineLegends.length > 0 ? ` and ${_lineLegends.length} line series. ` : '. ')\n );\n };\n\n const _createLines = (\n _lineData: GVBCLineSeries[],\n xScale: StringScale,\n yScalePrimary: NumericScale,\n yScaleSecondary?: NumericScale,\n ): React.ReactNode => {\n const lineBorders: React.ReactNode[] = [];\n const lines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n\n const scaleLineX = (x: string) => xScale(x)! + xScale.bandwidth() / 2;\n\n _lineData.forEach((series, seriesIdx) => {\n const lineBorderGroup: React.ReactNode[] = [];\n const lineGroup: React.ReactNode[] = [];\n const dotGroup: React.ReactNode[] = [];\n const lineBorderWidth = series.lineOptions?.lineBorderWidth\n ? Number.parseFloat(series.lineOptions.lineBorderWidth.toString())\n : 0;\n const yScale = series.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const shouldHighlight = _legendHighlighted(series.legend) || _noLegendHighlighted();\n\n series.data.forEach((point, pointIdx) => {\n const x2 = scaleLineX(point.x);\n const y2 = yScale(point.y);\n\n if (pointIdx > 0) {\n const x1 = scaleLineX(series.data[pointIdx - 1].x);\n const y1 = yScale(series.data[pointIdx - 1].y);\n\n if (lineBorderWidth > 0) {\n lineBorderGroup.push(\n <line\n key={`lineBorder-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n fill=\"transparent\"\n stroke={series.lineOptions?.lineBorderColor ?? tokens.colorNeutralBackground1}\n strokeWidth={3 + lineBorderWidth * 2}\n strokeLinecap=\"round\"\n opacity={shouldHighlight ? 1 : 0.1}\n />,\n );\n }\n\n lineGroup.push(\n <line\n key={`line-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke={series.color}\n strokeWidth={series.lineOptions?.strokeWidth ?? 3}\n strokeLinecap={series.lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={series.lineOptions?.strokeDasharray}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n />,\n );\n }\n\n const dotId = _getDotId(seriesIdx, pointIdx);\n const isLinePointActive = activeLinePoint === point.x || activeLinePoint === dotId;\n\n dotGroup.push(\n <circle\n key={dotId}\n id={dotId}\n cx={x2}\n cy={y2}\n r={shouldHighlight && isLinePointActive ? 8 : 0.3}\n fill={tokens.colorNeutralBackground1}\n stroke={series.color}\n strokeWidth={3}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n tabIndex={shouldHighlight ? 0 : undefined}\n onFocus={e => _onLineFocus(e, series, seriesIdx, pointIdx)}\n onBlur={_onBarLeave}\n role=\"img\"\n aria-label={getAriaLabel(\n {\n xAxisCalloutData: point.xAxisCalloutData,\n legend: series.legend,\n yAxisCalloutData: point.yAxisCalloutData,\n data: point.y,\n callOutAccessibilityData: point.callOutAccessibilityData,\n } as GVBarChartSeriesPoint,\n point.x,\n )}\n />,\n );\n });\n\n lineBorders.push(<g key={`lineBorderGroup-${seriesIdx}`}>{lineBorderGroup}</g>);\n lines.push(<g key={`lineGroup-${seriesIdx}`}>{lineGroup}</g>);\n dots.push(<g key={`dotGroup-${seriesIdx}`}>{dotGroup}</g>);\n });\n\n return dots.length > 0 ? (\n <g>\n {lineBorders.length > 0 ? <g>{lineBorders}</g> : null}\n {lines.length > 0 ? <g>{lines}</g> : null}\n <g>{dots}</g>\n </g>\n ) : null;\n };\n\n const _onLineHover = (\n event: React.MouseEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n scaleLineX: (x: string) => number,\n ) => {\n const pointerX = d3Pointer(event, _rectRef.current)[0];\n\n let closestPointIdx = pointIdx;\n if (pointIdx > 0) {\n const currPointPos = scaleLineX(series.data[pointIdx].x);\n const prevPointPos = scaleLineX(series.data[pointIdx - 1].x);\n\n if (Math.abs(prevPointPos - pointerX) < Math.abs(currPointPos - pointerX)) {\n closestPointIdx = pointIdx - 1;\n }\n }\n\n event.persist();\n _showCalloutForLines(event.currentTarget, series, seriesIdx, closestPointIdx);\n };\n\n const _onLineFocus = (\n event: React.FocusEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\n _showCalloutForLines(event.currentTarget, series, seriesIdx, pointIdx);\n };\n\n const _showCalloutForLines = (target: SVGElement, series: GVBCLineSeries, seriesIdx: number, pointIdx: number) => {\n const point = series.data[pointIdx];\n const pointData = {\n ...point,\n legend: series.legend,\n color: series.color!,\n key: series.legend,\n data: point.y,\n yAxisCalloutData: point.yAxisCalloutData as string | undefined,\n };\n const groupData = _datasetForBars.find((singleSet: { xAxisPoint: string }) => singleSet.xAxisPoint === point.x);\n\n _showCallout(target, pointData, groupData, _getDotId(seriesIdx, pointIdx));\n };\n\n const _showCallout = (\n target: SVGElement,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n _activeLinePoint = '',\n ) => {\n setPopoverTarget(target);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setYCalloutValue(pointData.yAxisCalloutData);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(\n groupData.groupSeries.filter((item: YValueHover) => _noLegendHighlighted() || _legendHighlighted(item.legend!)),\n );\n setHoverXValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setActiveLinePoint(props.isCalloutForStack ? groupData.xAxisPoint : _activeLinePoint);\n };\n\n const _getDotId = (seriesIdx: number, pointIdx: number) => {\n return _uniqDotId + `-${seriesIdx}-${pointIdx}`;\n };\n\n return !_isChartEmpty(barData, lineData) ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n getDomainNRangeValues={_getDomainNRangeValues}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={_xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={_xAxisLabels}\n tickParams={tickParams}\n tickPadding={props.tickPadding || 5}\n maxOfYVal={_yMax}\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 barwidth={_barWidth}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(childProps: ChildProps) => {\n return (\n <>\n <rect ref={_rectRef} width=\"100%\" height=\"100%\" fill=\"transparent\" style={{ pointerEvents: 'none' }} />\n <g>{_groupedVerticalBarGraph}</g>\n {_createLines(lineData, childProps.xScale, childProps.yScalePrimary, childProps.yScaleSecondary)}\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nGroupedVerticalBarChart.displayName = 'GroupedVerticalBarChart';\n"],"names":["React","useGroupedVerticalBarChartStyles_unstable","pointer","d3Pointer","max","d3Max","min","d3Min","scaleBand","d3ScaleBand","useId","ChartTypes","getAccessibleDataObject","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getScalePadding","getBarWidth","isScalePaddingDefined","createNumericYAxis","domainRangeOfXStringAxis","createStringYAxis","getNextColor","areArraysEqual","calculateLongestLabelWidth","useRtl","calcRequiredWidth","calcTotalWidth","calcBandwidth","calcTotalBandUnits","sortAxisCategories","CartesianChart","Legends","getColorFromToken","tokens","useImageExport","isInvalidValue","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","VERTICAL_BAR_GAP","MIN_BAR_HEIGHT","GroupedVerticalBarChart","forwardRef","_props","forwardedRef","props","barData","lineData","xAxisCategoryOrder","maxBarWidth","_emptyChartId","_useRtl","_domainMargin","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","_barLegends","_lineLegends","_legendColorMap","cartesianChartRef","legendsRef","_legendsRef","componentRef","hideLegend","Y_ORIGIN","_rectRef","useRef","_uniqDotId","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","yValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","popoverTarget","setPopoverTarget","isPopoverOpen","setPopoverOpen","activeLinePoint","setActiveLinePoint","classes","useEffect","_adjustProps","barWidth","xAxisInnerPadding","length","xAxisOuterPadding","_createDataset","datasetForBars","linePointsByX","visitedX","Set","forEach","series","data","point","x","push","legend","y","useSecondaryYScale","index","singleDatasetPointForBars","legendToBarPoint","seriesPoint","xAxisPoint","name","indexNum","groupSeries","Object","values","stackCallOutAccessibilityData","add","keys","xPoint","has","_createDataSetOfGVBC","barLegends","lineLegends","map","xAxisLabels","_getOrderedXAxisLabels","Array","from","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","actions","addLegendButton","legendTitle","isLineLegendInBarChart","title","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","legendRef","_processDataV2","dataV2","barPointsByX","type","key","xAxisCalloutData","yAxisCalloutData","onClick","_prepareChartData","isArray","colorIndex","startColor","endColor","lineColor","_xAxisType","StringAxis","_mapCategoryToValues","categoryToValues","firstXValue","legendBars","_getMinMaxOfYAxis","yAxisType","startValue","endValue","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","tickValues","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","yMax","Math","yMaxValue","calloutProps","positioning","target","XValue","YValue","YValueHover","culture","isCartesian","isCalloutForStack","tickParams","tickFormat","_getGraphData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","onBarHover","pointData","groupData","mouseEvent","persist","_showCallout","currentTarget","_onBarLeave","onBarFocus","focusEvent","singleGroup","barLabelsForGroup","presentLegends","filter","effectiveGroupWidth","localScale","domain","range","paddingInner","legendIndex","barPoints","yBarScale","isLegendActive","_legendHighlighted","_noLegendHighlighted","barOpacity","barTotalValue","yBaseline","yPositiveStart","yNegativeStart","yPoint","pointIndex","barGap","height","abs","pointColor","rect","className","opacityChangeOnHover","opacity","fill","rx","roundCorners","onMouseOver","onMouseMove","onMouseOut","onFocus","onBlur","aria-label","getAriaLabel","tabIndex","role","barLabel","text","textAnchor","aria-hidden","style","direction","unicodeBidi","hideLabels","ceil","yAxisTickFormat","g","transform","x0Axis","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","margin2","Number","POSITIVE_INFINITY","hideTickOverlap","step","_isChartEmpty","_barData","_lineData","item","some","_getChartTitle","chartTitle","_createLines","lineBorders","lines","dots","scaleLineX","seriesIdx","lineBorderGroup","lineGroup","dotGroup","lineBorderWidth","lineOptions","parseFloat","toString","yScale","shouldHighlight","pointIdx","x2","y2","x1","y1","line","stroke","lineBorderColor","colorNeutralBackground1","strokeWidth","strokeLinecap","strokeDasharray","e","_onLineHover","onMouseLeave","dotId","_getDotId","isLinePointActive","circle","id","cx","cy","r","_onLineFocus","pointerX","current","closestPointIdx","currPointPos","prevPointPos","_showCalloutForLines","find","_activeLinePoint","getDomainNRangeValues","getMinMaxOfYAxis","createYAxis","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","childProps","ref","pointerEvents","div","displayName"],"mappings":"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"}
1
+ {"version":3,"sources":["../src/components/GroupedVerticalBarChart/GroupedVerticalBarChart.tsx"],"sourcesContent":["'use client';\n\nimport * as React from 'react';\nimport { useGroupedVerticalBarChartStyles_unstable } from './useGroupedVerticalBarChartStyles.styles';\nimport { pointer as d3Pointer } from 'd3-selection';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport type { ScaleBand, ScaleLinear } from 'd3-scale';\nimport { scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport type { JSXElement } from '@fluentui/react-utilities';\nimport { useId } from '@fluentui/react-utilities';\nimport type { IAxisData, IDomainNRange, YAxisType } from '../../utilities/index';\nimport {\n ChartTypes,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n calcRequiredWidth,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n sortAxisCategories,\n} from '../../utilities/index';\n\nimport type {\n AccessibilityProps,\n Margins,\n Legend,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n YValueHover,\n ChartPopoverProps,\n LineSeries,\n BarSeries,\n ChildProps,\n} from '../../index';\nimport { CartesianChart, Legends, getColorFromToken } from '../../index';\nimport { tokens } from '@fluentui/react-theme';\nimport { useImageExport } from '../../utilities/hooks';\nimport { isInvalidValue } from '@fluentui/chart-utilities';\n\ntype NumericScale = ScaleLinear<number, number>;\ntype StringScale = ScaleBand<string>;\n\nconst MIN_DOMAIN_MARGIN = 8;\nconst X1_INNER_PADDING = 0.1;\nconst VERTICAL_BAR_GAP = 1;\nconst MIN_BAR_HEIGHT = 1;\n\n// This interface used for - While forming datapoints from given prop \"data\" in code\ninterface GVDataPoint {\n [key: string]: number | string;\n}\n\n// While forming datapoints from given prop \"data\" in code. These datapoints are used for to draw graph easily.\ninterface GVSingleDataPoint {\n [key: string]: GVDataPoint;\n}\n\ntype GVBCLineSeries = LineSeries<string, number>;\n\nexport const GroupedVerticalBarChart: React.FC<GroupedVerticalBarChartProps> = React.forwardRef<\n HTMLDivElement,\n GroupedVerticalBarChartProps\n>((_props, forwardedRef) => {\n const props: GroupedVerticalBarChartProps = {\n xAxisCategoryOrder: 'default',\n maxBarWidth: 24,\n ..._props,\n };\n const _emptyChartId: string = useId('_GVBC_empty');\n const _useRtl: boolean = useRtl();\n let _domainMargin: number = MIN_DOMAIN_MARGIN;\n let _xAxisLabels: string[] = [];\n let _datasetForBars: any[] = [];\n let _margins: Margins = { top: 0, right: 0, bottom: 0, left: 0 };\n let _groupedVerticalBarGraph: JSXElement[] = [];\n let _yMax: number = 0;\n let _calloutAnchorPoint: GVBarChartSeriesPoint | null = null;\n let _barWidth: number = 0;\n let _groupWidth: number = 0;\n let _xAxisInnerPadding: number = 0;\n let _xAxisOuterPadding: number = 0;\n let _barLegends: string[] = [];\n let _lineLegends: string[] = [];\n let _legendColorMap: Record<string, [string, string]> = {};\n const { cartesianChartRef, legendsRef: _legendsRef } = useImageExport(props.componentRef, props.hideLegend);\n const Y_ORIGIN: number = 0;\n const _rectRef = React.useRef<SVGRectElement>(null);\n const _uniqDotId = useId('gvbc_dot_');\n\n const [color, setColor] = React.useState<string | undefined>('');\n const [dataForHoverCard, setDataForHoverCard] = React.useState<number>(0);\n const [selectedLegends, setSelectedLegends] = React.useState<string[]>(props.legendProps?.selectedLegends || []);\n const [xCalloutValue, setXCalloutValue] = React.useState<string>('');\n const [yCalloutValue, setYCalloutValue] = React.useState<string | undefined>('');\n const [yValueHover, setYValueHover] = React.useState<YValueHover[]>([]);\n const [hoverXValue, setHoverXValue] = React.useState<string>('');\n const [calloutLegend, setCalloutLegend] = React.useState<string>('');\n const [activeLegend, setActiveLegend] = React.useState<string>('');\n const [callOutAccessibilityData, setCallOutAccessibilityData] = React.useState<AccessibilityProps | undefined>(\n undefined,\n );\n const [popoverTarget, setPopoverTarget] = React.useState<SVGElement | null>(null);\n const [isPopoverOpen, setPopoverOpen] = React.useState<boolean>(false);\n const [activeLinePoint, setActiveLinePoint] = React.useState<string>('');\n const classes = useGroupedVerticalBarChartStyles_unstable(props);\n\n React.useEffect(() => {\n if (!areArraysEqual(props.legendProps?.selectedLegends, selectedLegends)) {\n setSelectedLegends(props.legendProps?.selectedLegends || []);\n }\n }, [props.legendProps?.selectedLegends]);\n\n const _adjustProps = () => {\n _barWidth = getBarWidth(props.barWidth, props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = _barLegends.length * bar_width + (_barLegends.length - 1) * space_between_bars\n _xAxisInnerPadding = getScalePadding(\n props.xAxisInnerPadding,\n undefined,\n 2 / (2 + calcTotalBandUnits(_barLegends.length, X1_INNER_PADDING)),\n );\n _xAxisOuterPadding = getScalePadding(props.xAxisOuterPadding);\n };\n\n const _createDataset = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n const linePointsByX: Record<string, YValueHover[]> = {};\n const visitedX = new Set<string>();\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!linePointsByX[point.x]) {\n linePointsByX[point.x] = [];\n }\n linePointsByX[point.x].push({\n ...point,\n legend: series.legend,\n color: series.color,\n data: point.y,\n useSecondaryYScale: series.useSecondaryYScale,\n } as YValueHover);\n });\n });\n\n barData.forEach((point: GroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, GVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n if (!singleDatasetPointForBars[seriesPoint.legend]) {\n singleDatasetPointForBars[seriesPoint.legend] = [{ ...seriesPoint }];\n legendToBarPoint[seriesPoint.legend] = { ...seriesPoint };\n } else {\n singleDatasetPointForBars[seriesPoint.legend].push({ ...seriesPoint });\n legendToBarPoint[seriesPoint.legend].data += seriesPoint.data;\n }\n });\n\n singleDatasetPointForBars.xAxisPoint = point.name;\n singleDatasetPointForBars.indexNum = index;\n singleDatasetPointForBars.groupSeries = [\n ...Object.values(legendToBarPoint),\n ...(linePointsByX[point.name] ?? []),\n ];\n singleDatasetPointForBars.stackCallOutAccessibilityData = point.stackCallOutAccessibilityData;\n datasetForBars.push(singleDatasetPointForBars);\n visitedX.add(point.name);\n });\n\n Object.keys(linePointsByX).forEach(xPoint => {\n if (!visitedX.has(xPoint)) {\n datasetForBars.push({\n xAxisPoint: xPoint,\n groupSeries: linePointsByX[xPoint],\n });\n }\n });\n\n return datasetForBars;\n };\n\n const _createDataSetOfGVBC = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const barLegends = new Set<string>();\n barData.forEach((point: GroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: GVBarChartSeriesPoint) => {\n barLegends.add(seriesPoint.legend);\n });\n });\n const lineLegends = new Set<string>(lineData.map(series => series.legend));\n const xAxisLabels: string[] = _getOrderedXAxisLabels(barData, lineData);\n const datasetForBars = _createDataset(barData, lineData);\n return {\n barLegends: Array.from(barLegends),\n lineLegends: Array.from(lineLegends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n const 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 const _getLegendData = (): JSXElement => {\n const actions: Legend[] = [];\n\n const addLegendButton = (legendTitle: string, isLineLegendInBarChart?: boolean) => {\n const legend: Legend = {\n title: legendTitle,\n color: _legendColorMap[legendTitle][0],\n isLineLegendInBarChart,\n hoverAction: () => {\n _handleChartMouseLeave();\n _onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n _onLegendLeave();\n },\n };\n\n actions.push(legend);\n };\n\n _lineLegends.forEach(legendTitle => addLegendButton(legendTitle, true));\n _barLegends.forEach(legendTitle => addLegendButton(legendTitle));\n\n return (\n <Legends\n legends={actions}\n enabledWrapLines={props.enabledLegendsWrapLines}\n overflowText={props.legendsOverflowText}\n {...props.legendProps}\n onChange={onLegendSelectionChange}\n legendRef={_legendsRef}\n />\n );\n };\n\n const _processDataV2 = (dataV2: (BarSeries<string, number> | LineSeries<string, number>)[]) => {\n const barPointsByX: Record<string, GroupedVerticalBarChartData> = {};\n const lineData: GVBCLineSeries[] = [];\n\n dataV2.forEach(series => {\n if (series.type === 'bar') {\n series.data.forEach(point => {\n if (!barPointsByX[point.x]) {\n barPointsByX[point.x] = { name: point.x, series: [] };\n }\n\n barPointsByX[point.x].series.push({\n key: series.key ?? series.legend,\n data: point.y,\n color: point.color ?? series.color,\n // gradient: series.gradient,\n legend: series.legend,\n xAxisCalloutData: point.xAxisCalloutData,\n yAxisCalloutData: point.yAxisCalloutData,\n onClick: point.onClick,\n useSecondaryYScale: series.useSecondaryYScale,\n });\n });\n } else if (series.type === 'line') {\n lineData!.push(series);\n }\n });\n\n return { barData: Object.values(barPointsByX), lineData };\n };\n\n const _prepareChartData = () => {\n let barData = props.data;\n let lineData: GVBCLineSeries[] | undefined;\n\n if (Array.isArray(props.dataV2) && props.dataV2.length > 0) {\n ({ barData, lineData } = _processDataV2(props.dataV2));\n }\n\n _legendColorMap = {};\n let colorIndex = 0;\n\n return {\n barData:\n barData?.map(point => {\n return {\n ...point,\n series:\n point.series?.map(seriesPoint => {\n // TODO: Add support for gradient colors\n const startColor = seriesPoint.color ? seriesPoint.color : getNextColor(colorIndex, 0);\n const endColor = startColor;\n if (!_legendColorMap[seriesPoint.legend]) {\n _legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? _legendColorMap[seriesPoint.legend][0],\n };\n }) ?? [],\n };\n }) ?? [],\n\n lineData:\n lineData?.map(series => {\n let lineColor: string;\n if (typeof series.color === 'undefined') {\n lineColor = getNextColor(colorIndex, 0);\n } else {\n lineColor = getColorFromToken(series.color);\n }\n\n if (!_legendColorMap[series.legend]) {\n _legendColorMap[series.legend] = [lineColor, lineColor];\n }\n colorIndex += 1;\n\n return {\n ...series,\n color: _legendColorMap[series.legend][0],\n };\n }) ?? [],\n };\n };\n\n const _getOrderedXAxisLabels = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n if (_xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(_mapCategoryToValues(barData, lineData), props.xAxisCategoryOrder);\n };\n\n const _mapCategoryToValues = (barData: GroupedVerticalBarChartData[], lineData: GVBCLineSeries[]) => {\n const categoryToValues: Record<string, number[]> = {};\n barData.forEach(point => {\n if (!categoryToValues[point.name]) {\n categoryToValues[point.name] = [];\n }\n point.series.forEach(seriesPoint => {\n categoryToValues[point.name].push(seriesPoint.data);\n });\n });\n lineData.forEach(series => {\n series.data.forEach(point => {\n if (!categoryToValues[point.x]) {\n categoryToValues[point.x] = [];\n }\n categoryToValues[point.x].push(point.y);\n });\n });\n return categoryToValues;\n };\n\n const { barData, lineData } = _prepareChartData();\n const firstXValue = barData[0]?.name ?? lineData[0]?.data[0]?.x;\n const _xAxisType: XAxisTypes = isInvalidValue(firstXValue)\n ? XAxisTypes.StringAxis\n : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n const { barLegends, lineLegends, xAxisLabels, datasetForBars } = _createDataSetOfGVBC(barData, lineData);\n _barLegends = barLegends;\n _lineLegends = lineLegends;\n _xAxisLabels = xAxisLabels;\n _datasetForBars = datasetForBars;\n const legendBars: JSXElement = _getLegendData();\n _adjustProps();\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any -- Add commentMore actions\n function _getMinMaxOfYAxis(datasetForBars: any, yAxisType?: YAxisType, useSecondaryYScale?: boolean) {\n const values: number[] = [];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n datasetForBars.forEach((data: any) => {\n data.groupSeries.forEach((point: GVBarChartSeriesPoint) => {\n if (!useSecondaryYScale === !point.useSecondaryYScale) {\n values.push(point.data);\n }\n });\n });\n\n return { startValue: d3Min(values)!, endValue: d3Max(values)! };\n }\n\n function _getDomainNRangeValues(\n points: GroupedVerticalBarChartData[],\n margins: Margins,\n width: number,\n chartType: ChartTypes,\n isRTL: boolean,\n xAxisType: XAxisTypes,\n barWidth: number,\n tickValues: Date[] | number[] | undefined,\n ) {\n let domainNRangeValue: IDomainNRange;\n if (xAxisType === XAxisTypes.NumericAxis || xAxisType === XAxisTypes.DateAxis) {\n domainNRangeValue = { dStartValue: 0, dEndValue: 0, rStartValue: 0, rEndValue: 0 };\n } else {\n domainNRangeValue = domainRangeOfXStringAxis(margins, width, isRTL);\n }\n return domainNRangeValue;\n }\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n\n const yMax = _getMinMaxOfYAxis(_datasetForBars).endValue;\n _yMax = Math.max(yMax, props.yMaxValue || 0);\n\n const calloutProps: ChartPopoverProps = {\n positioning: { target: popoverTarget },\n isPopoverOpen,\n color,\n legend: calloutLegend,\n XValue: xCalloutValue,\n YValue: yCalloutValue ? yCalloutValue : dataForHoverCard,\n YValueHover: yValueHover,\n hoverXValue,\n culture: props.culture,\n isCartesian: true,\n isCalloutForStack: props.isCalloutForStack,\n ...props.calloutProps,\n ...getAccessibleDataObject(callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: props.tickValues!,\n tickFormat: props.tickFormat!,\n };\n\n const _getGraphData = (\n xScale: StringScale | NumericScale,\n yScalePrimary: ScaleLinear<number, number>,\n containerHeight: number,\n containerWidth: number,\n xElement?: SVGElement | null,\n yAxisElement?: SVGElement | null,\n yScaleSecondary?: ScaleLinear<number, number>,\n ) => {\n const xScale0 = _createX0Scale(containerWidth);\n\n // Setting the bar width here is safe because there are no dependencies earlier in the code\n // that rely on the width of bars in vertical bar charts with string x-axis.\n _barWidth = getBarWidth(\n props.barWidth,\n props.maxBarWidth,\n calcBandwidth(xScale0.bandwidth(), _barLegends.length, X1_INNER_PADDING),\n );\n _groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n\n const xScale1 = _createX1Scale();\n const allGroupsBars: JSXElement[] = [];\n _datasetForBars.forEach((singleSet: GVSingleDataPoint) => {\n allGroupsBars.push(\n _buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n _groupedVerticalBarGraph = allGroupsBars;\n };\n\n const _getMargins = (margins: Margins) => {\n _margins = margins;\n };\n\n const onBarHover = (\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void => {\n mouseEvent.persist();\n if (_calloutAnchorPoint !== pointData) {\n _calloutAnchorPoint = pointData;\n _showCallout(mouseEvent.currentTarget, pointData, groupData);\n }\n };\n\n const _onBarLeave = (): void => {\n /**/\n };\n\n const _handleChartMouseLeave = (): void => {\n _calloutAnchorPoint = null;\n setPopoverOpen(false);\n };\n\n const onBarFocus = (\n focusEvent: React.FocusEvent<SVGRectElement, Element>,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n ): void => {\n _showCallout(focusEvent.currentTarget, pointData, groupData);\n };\n\n const _buildGraph = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n singleSet: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale0: any,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale1: any,\n yScalePrimary: ScaleLinear<number, number>,\n yScaleSecondary: ScaleLinear<number, number> | undefined,\n containerHeight: number,\n xElement: SVGElement,\n ): JSXElement => {\n const singleGroup: JSXElement[] = [];\n const barLabelsForGroup: JSXElement[] = [];\n\n // Get the actual legends present at this x-axis point\n const presentLegends = _barLegends.filter(key => key in singleSet);\n const effectiveGroupWidth = calcRequiredWidth(_barWidth, presentLegends.length, X1_INNER_PADDING);\n\n // For stacked bars, center the single bar group in the available space\n // Instead of using the global legend position, use the local position within present legends\n const localScale = d3ScaleBand()\n .domain(presentLegends)\n .range(_useRtl ? [effectiveGroupWidth, 0] : [0, effectiveGroupWidth])\n .paddingInner(X1_INNER_PADDING);\n _barLegends.forEach((legendTitle: string, legendIndex: number) => {\n const barPoints = singleSet[legendTitle];\n if (barPoints) {\n const yBarScale = barPoints[0].useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n\n const xPoint = (localScale(legendTitle) ?? 0) + (localScale.bandwidth() - _barWidth) / 2;\n const isLegendActive = _legendHighlighted(legendTitle) || _noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = Y_ORIGIN;\n\n barPoints.forEach((pointData: GVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(Y_ORIGIN) - yBarScale(Math.abs(pointData.data)), MIN_BAR_HEIGHT);\n const pointColor = pointData.color; // Use the color of the current point\n\n if (pointData.data >= Y_ORIGIN) {\n yPositiveStart -= height + barGap;\n yPoint = yPositiveStart;\n } else {\n yPoint = yNegativeStart + barGap;\n yNegativeStart = yPoint + height;\n }\n\n singleGroup.push(\n <rect\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}`}\n className={classes.opacityChangeOnHover}\n height={height}\n width={_barWidth}\n x={xPoint}\n y={yPoint}\n opacity={barOpacity}\n fill={pointColor}\n rx={props.roundCorners ? 3 : 0}\n onMouseOver={event => onBarHover(pointData, singleSet, event)}\n onMouseMove={event => onBarHover(pointData, singleSet, event)}\n onMouseOut={_onBarLeave}\n onFocus={event => onBarFocus(event, pointData, singleSet)}\n onBlur={_onBarLeave}\n onClick={pointData.onClick}\n aria-label={getAriaLabel(pointData, singleSet.xAxisPoint)}\n tabIndex={_legendHighlighted(pointData.legend) || _noLegendHighlighted() ? 0 : undefined}\n role=\"option\"\n />,\n );\n\n // Render individual bar label if provided\n if (pointData.barLabel && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}-${pointIndex}-label`}\n x={xPoint + _barWidth / 2}\n y={pointData.data >= Y_ORIGIN ? yPoint - 6 : yPoint + height + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {pointData.barLabel}\n </text>,\n );\n }\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !props.hideLabels && Math.ceil(_barWidth) >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + _barWidth / 2}\n y={barTotalValue >= Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={classes.barLabel}\n aria-hidden={true}\n style={{ direction: 'ltr', unicodeBidi: 'isolate' }}\n >\n {typeof props.yAxisTickFormat === 'function'\n ? props.yAxisTickFormat(barTotalValue)\n : formatScientificLimitWidth(barTotalValue)}\n </text>,\n );\n }\n }\n });\n\n const categoryGroupAriaLabel = `${singleSet.xAxisPoint}, category ${singleSet.indexNum + 1} of ${\n _datasetForBars.length\n }, with ${presentLegends.length} bars`;\n\n return (\n <g\n role=\"listbox\"\n aria-label={categoryGroupAriaLabel}\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n // For grouped vertical bar chart, First need to define total scale (from start to end)\n // From that need to define scale for single group of bars - done by createX1Scale\n const _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(xAxisLabels)\n .range(\n _useRtl\n ? [containerWidth! - _margins.right! - _domainMargin, _margins.left! + _domainMargin]\n : [_margins.left! + _domainMargin, containerWidth! - _margins.right! - _domainMargin],\n )\n .paddingInner(_xAxisInnerPadding)\n .paddingOuter(_xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(_barLegends)\n // When there is only one group, xScale0 adds padding around it,\n // causing the bandwidth to become smaller than the actual group width.\n // So to render bars in the group correctly, use groupWidth instead of the generated scale bandwidth.\n .range(_useRtl ? [_groupWidth, 0] : [0, _groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n const _onLegendHover = (legendTitle: string): void => {\n setActiveLegend(legendTitle);\n };\n\n const _onLegendLeave = (): void => {\n setActiveLegend('');\n };\n\n const _getAxisData = React.useCallback(\n (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 [props.yMaxValue],\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 const _legendHighlighted = (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 const _noLegendHighlighted = () => {\n return _getHighlightedLegend().length === 0;\n };\n\n const _getHighlightedLegend = () => {\n return selectedLegends.length > 0 ? selectedLegends : activeLegend ? [activeLegend] : [];\n };\n\n const getAriaLabel = (point: GVBarChartSeriesPoint, xAxisPoint: string): string => {\n const xValue = point.xAxisCalloutData || xAxisPoint;\n const legend = point.legend;\n const yValue = point.yAxisCalloutData || point.data;\n return point.callOutAccessibilityData?.ariaLabel || `${xValue}. ${legend}, ${yValue}.`;\n };\n\n const _getDomainMargins = (containerWidth: number): Margins => {\n /** Total width available to render the bars */\n const totalWidth = calcTotalWidth(containerWidth, _margins, MIN_DOMAIN_MARGIN);\n\n if (_xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(props.xAxisOuterPadding)) {\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 group and after the last group.\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 const groupWidth = calcRequiredWidth(_barWidth, _barLegends.length, X1_INNER_PADDING);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = calcRequiredWidth(groupWidth, _xAxisLabels.length, _xAxisInnerPadding);\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 groups at their maximum allowable width\n const groupBandwidth = calcBandwidth(totalWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const barBandwidth = calcBandwidth(groupBandwidth, _barLegends.length, X1_INNER_PADDING);\n const barWidth = getBarWidth(props.barWidth, props.maxBarWidth, barBandwidth);\n const groupWidth = calcRequiredWidth(barWidth, _barLegends.length, X1_INNER_PADDING);\n let reqWidth = calcRequiredWidth(groupWidth, _xAxisLabels.length, _xAxisInnerPadding);\n const margin1 = (totalWidth - reqWidth) / 2;\n\n let margin2 = Number.POSITIVE_INFINITY;\n if (!props.hideTickOverlap) {\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 margin2 = (totalWidth - reqWidth) / 2;\n }\n\n _domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ..._margins,\n left: _margins.left! + _domainMargin,\n right: _margins.right! + _domainMargin,\n };\n };\n\n const _isChartEmpty = (_barData: GroupedVerticalBarChartData[], _lineData: GVBCLineSeries[]): boolean => {\n return !(\n (_barData &&\n _barData.length > 0 &&\n _barData.filter((item: GroupedVerticalBarChartData) => item.series.length).length > 0) ||\n (_lineData && _lineData.length > 0 && _lineData.some(series => series.data.length > 0))\n );\n };\n\n const _getChartTitle = (): string => {\n return (\n (props.chartTitle ? `${props.chartTitle}. ` : '') +\n `Vertical bar chart with ${_barLegends.length} grouped bar series` +\n (_lineLegends.length > 0 ? ` and ${_lineLegends.length} line series. ` : '. ')\n );\n };\n\n const _createLines = (\n _lineData: GVBCLineSeries[],\n xScale: StringScale,\n yScalePrimary: NumericScale,\n yScaleSecondary?: NumericScale,\n ): React.ReactNode => {\n const lineBorders: React.ReactNode[] = [];\n const lines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n\n const scaleLineX = (x: string) => xScale(x)! + xScale.bandwidth() / 2;\n\n _lineData.forEach((series, seriesIdx) => {\n const lineBorderGroup: React.ReactNode[] = [];\n const lineGroup: React.ReactNode[] = [];\n const dotGroup: React.ReactNode[] = [];\n const lineBorderWidth = series.lineOptions?.lineBorderWidth\n ? Number.parseFloat(series.lineOptions.lineBorderWidth.toString())\n : 0;\n const yScale = series.useSecondaryYScale && yScaleSecondary ? yScaleSecondary : yScalePrimary;\n const shouldHighlight = _legendHighlighted(series.legend) || _noLegendHighlighted();\n\n series.data.forEach((point, pointIdx) => {\n const x2 = scaleLineX(point.x);\n const y2 = yScale(point.y);\n\n if (pointIdx > 0) {\n const x1 = scaleLineX(series.data[pointIdx - 1].x);\n const y1 = yScale(series.data[pointIdx - 1].y);\n\n if (lineBorderWidth > 0) {\n lineBorderGroup.push(\n <line\n key={`lineBorder-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n fill=\"transparent\"\n stroke={series.lineOptions?.lineBorderColor ?? tokens.colorNeutralBackground1}\n strokeWidth={3 + lineBorderWidth * 2}\n strokeLinecap=\"round\"\n opacity={shouldHighlight ? 1 : 0.1}\n />,\n );\n }\n\n lineGroup.push(\n <line\n key={`line-${seriesIdx}-${pointIdx}`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n stroke={series.color}\n strokeWidth={series.lineOptions?.strokeWidth ?? 3}\n strokeLinecap={series.lineOptions?.strokeLinecap ?? 'round'}\n strokeDasharray={series.lineOptions?.strokeDasharray}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n />,\n );\n }\n\n const dotId = _getDotId(seriesIdx, pointIdx);\n const isLinePointActive = activeLinePoint === point.x || activeLinePoint === dotId;\n dotGroup.push(\n <circle\n key={dotId}\n id={dotId}\n cx={x2}\n cy={y2}\n r={shouldHighlight && isLinePointActive ? 8 : 0.3}\n fill={tokens.colorNeutralBackground1}\n stroke={series.color}\n strokeWidth={3}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => _onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={_onBarLeave}\n tabIndex={shouldHighlight ? 0 : undefined}\n onFocus={e => _onLineFocus(e, series, seriesIdx, pointIdx)}\n onBlur={_onBarLeave}\n role=\"option\"\n aria-label={getAriaLabel(\n {\n xAxisCalloutData: point.xAxisCalloutData,\n legend: series.legend,\n yAxisCalloutData: point.yAxisCalloutData,\n data: point.y,\n callOutAccessibilityData: point.callOutAccessibilityData,\n } as GVBarChartSeriesPoint,\n point.x,\n )}\n />,\n );\n });\n const dotGroupAriaLabel = `${series.legend || `Line ${seriesIdx + 1}`}, line with ${\n series.data.length\n } data points`;\n\n lineBorders.push(<g key={`lineBorderGroup-${seriesIdx}`}>{lineBorderGroup}</g>);\n lines.push(<g key={`lineGroup-${seriesIdx}`}>{lineGroup}</g>);\n dots.push(\n <g role=\"listbox\" key={`dotGroup-${seriesIdx}`} aria-label={dotGroupAriaLabel}>\n {dotGroup}\n </g>,\n );\n });\n\n return dots.length > 0 ? (\n <g>\n {lineBorders.length > 0 ? <g>{lineBorders}</g> : null}\n {lines.length > 0 ? <g>{lines}</g> : null}\n <g>{dots}</g>\n </g>\n ) : null;\n };\n\n const _onLineHover = (\n event: React.MouseEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n scaleLineX: (x: string) => number,\n ) => {\n const pointerX = d3Pointer(event, _rectRef.current)[0];\n\n let closestPointIdx = pointIdx;\n if (pointIdx > 0) {\n const currPointPos = scaleLineX(series.data[pointIdx].x);\n const prevPointPos = scaleLineX(series.data[pointIdx - 1].x);\n\n if (Math.abs(prevPointPos - pointerX) < Math.abs(currPointPos - pointerX)) {\n closestPointIdx = pointIdx - 1;\n }\n }\n\n event.persist();\n _showCalloutForLines(event.currentTarget, series, seriesIdx, closestPointIdx);\n };\n\n const _onLineFocus = (\n event: React.FocusEvent<SVGElement>,\n series: GVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\n _showCalloutForLines(event.currentTarget, series, seriesIdx, pointIdx);\n };\n\n const _showCalloutForLines = (target: SVGElement, series: GVBCLineSeries, seriesIdx: number, pointIdx: number) => {\n const point = series.data[pointIdx];\n const pointData = {\n ...point,\n legend: series.legend,\n color: series.color!,\n key: series.legend,\n data: point.y,\n yAxisCalloutData: point.yAxisCalloutData as string | undefined,\n };\n const groupData = _datasetForBars.find((singleSet: { xAxisPoint: string }) => singleSet.xAxisPoint === point.x);\n\n _showCallout(target, pointData, groupData, _getDotId(seriesIdx, pointIdx));\n };\n\n const _showCallout = (\n target: SVGElement,\n pointData: GVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n _activeLinePoint = '',\n ) => {\n setPopoverTarget(target);\n setPopoverOpen(_noLegendHighlighted() || _legendHighlighted(pointData.legend));\n setCalloutLegend(pointData.legend);\n setDataForHoverCard(pointData.data);\n setColor(pointData.color);\n setXCalloutValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setYCalloutValue(pointData.yAxisCalloutData);\n setCallOutAccessibilityData(\n props.isCalloutForStack ? groupData.stackCallOutAccessibilityData : pointData.callOutAccessibilityData,\n );\n setYValueHover(\n groupData.groupSeries.filter((item: YValueHover) => _noLegendHighlighted() || _legendHighlighted(item.legend!)),\n );\n setHoverXValue(pointData.xAxisCalloutData ?? groupData.xAxisPoint);\n setActiveLinePoint(props.isCalloutForStack ? groupData.xAxisPoint : _activeLinePoint);\n };\n\n const _getDotId = (seriesIdx: number, pointIdx: number) => {\n return _uniqDotId + `-${seriesIdx}-${pointIdx}`;\n };\n\n return !_isChartEmpty(barData, lineData) ? (\n <CartesianChart\n {...props}\n chartTitle={_getChartTitle()}\n points={_datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n getDomainNRangeValues={_getDomainNRangeValues}\n getMinMaxOfYAxis={_getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={_xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={_xAxisLabels}\n tickParams={tickParams}\n tickPadding={props.tickPadding || 5}\n maxOfYVal={_yMax}\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 barwidth={_barWidth}\n componentRef={cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(childProps: ChildProps) => {\n return (\n <>\n <rect ref={_rectRef} width=\"100%\" height=\"100%\" fill=\"transparent\" style={{ pointerEvents: 'none' }} />\n <g>{_groupedVerticalBarGraph}</g>\n {_createLines(lineData, childProps.xScale, childProps.yScalePrimary, childProps.yScaleSecondary)}\n </>\n );\n }}\n />\n ) : (\n <div id={_emptyChartId} role={'alert'} style={{ opacity: '0' }} aria-label={'Graph has no data to display'} />\n );\n});\nGroupedVerticalBarChart.displayName = 'GroupedVerticalBarChart';\n"],"names":["React","useGroupedVerticalBarChartStyles_unstable","pointer","d3Pointer","max","d3Max","min","d3Min","scaleBand","d3ScaleBand","useId","ChartTypes","getAccessibleDataObject","XAxisTypes","getTypeOfAxis","formatScientificLimitWidth","getScalePadding","getBarWidth","isScalePaddingDefined","createNumericYAxis","domainRangeOfXStringAxis","createStringYAxis","getNextColor","areArraysEqual","calculateLongestLabelWidth","useRtl","calcRequiredWidth","calcTotalWidth","calcBandwidth","calcTotalBandUnits","sortAxisCategories","CartesianChart","Legends","getColorFromToken","tokens","useImageExport","isInvalidValue","MIN_DOMAIN_MARGIN","X1_INNER_PADDING","VERTICAL_BAR_GAP","MIN_BAR_HEIGHT","GroupedVerticalBarChart","forwardRef","_props","forwardedRef","props","barData","lineData","xAxisCategoryOrder","maxBarWidth","_emptyChartId","_useRtl","_domainMargin","_xAxisLabels","_datasetForBars","_margins","top","right","bottom","left","_groupedVerticalBarGraph","_yMax","_calloutAnchorPoint","_barWidth","_groupWidth","_xAxisInnerPadding","_xAxisOuterPadding","_barLegends","_lineLegends","_legendColorMap","cartesianChartRef","legendsRef","_legendsRef","componentRef","hideLegend","Y_ORIGIN","_rectRef","useRef","_uniqDotId","color","setColor","useState","dataForHoverCard","setDataForHoverCard","selectedLegends","setSelectedLegends","legendProps","xCalloutValue","setXCalloutValue","yCalloutValue","setYCalloutValue","yValueHover","setYValueHover","hoverXValue","setHoverXValue","calloutLegend","setCalloutLegend","activeLegend","setActiveLegend","callOutAccessibilityData","setCallOutAccessibilityData","undefined","popoverTarget","setPopoverTarget","isPopoverOpen","setPopoverOpen","activeLinePoint","setActiveLinePoint","classes","useEffect","_adjustProps","barWidth","xAxisInnerPadding","length","xAxisOuterPadding","_createDataset","datasetForBars","linePointsByX","visitedX","Set","forEach","series","data","point","x","push","legend","y","useSecondaryYScale","index","singleDatasetPointForBars","legendToBarPoint","seriesPoint","xAxisPoint","name","indexNum","groupSeries","Object","values","stackCallOutAccessibilityData","add","keys","xPoint","has","_createDataSetOfGVBC","barLegends","lineLegends","map","xAxisLabels","_getOrderedXAxisLabels","Array","from","onLegendSelectionChange","event","currentLegend","canSelectMultipleLegends","slice","onChange","_getLegendData","actions","addLegendButton","legendTitle","isLineLegendInBarChart","title","hoverAction","_handleChartMouseLeave","_onLegendHover","onMouseOutAction","_onLegendLeave","legends","enabledWrapLines","enabledLegendsWrapLines","overflowText","legendsOverflowText","legendRef","_processDataV2","dataV2","barPointsByX","type","key","xAxisCalloutData","yAxisCalloutData","onClick","_prepareChartData","isArray","colorIndex","startColor","endColor","lineColor","_xAxisType","StringAxis","_mapCategoryToValues","categoryToValues","firstXValue","legendBars","_getMinMaxOfYAxis","yAxisType","startValue","endValue","_getDomainNRangeValues","points","margins","width","chartType","isRTL","xAxisType","tickValues","domainNRangeValue","NumericAxis","DateAxis","dStartValue","dEndValue","rStartValue","rEndValue","yMax","Math","yMaxValue","calloutProps","positioning","target","XValue","YValue","YValueHover","culture","isCartesian","isCalloutForStack","tickParams","tickFormat","_getGraphData","xScale","yScalePrimary","containerHeight","containerWidth","xElement","yAxisElement","yScaleSecondary","xScale0","_createX0Scale","bandwidth","xScale1","_createX1Scale","allGroupsBars","singleSet","_buildGraph","_getMargins","onBarHover","pointData","groupData","mouseEvent","persist","_showCallout","currentTarget","_onBarLeave","onBarFocus","focusEvent","singleGroup","barLabelsForGroup","presentLegends","filter","effectiveGroupWidth","localScale","domain","range","paddingInner","legendIndex","barPoints","yBarScale","isLegendActive","_legendHighlighted","_noLegendHighlighted","barOpacity","barTotalValue","yBaseline","yPositiveStart","yNegativeStart","yPoint","pointIndex","barGap","height","abs","pointColor","rect","className","opacityChangeOnHover","opacity","fill","rx","roundCorners","onMouseOver","onMouseMove","onMouseOut","onFocus","onBlur","aria-label","getAriaLabel","tabIndex","role","barLabel","text","textAnchor","aria-hidden","style","direction","unicodeBidi","hideLabels","ceil","yAxisTickFormat","categoryGroupAriaLabel","g","transform","x0Axis","paddingOuter","_getAxisData","useCallback","yAxisData","yAxisDomainValues","domainValue","_getHighlightedLegend","includes","xValue","yValue","ariaLabel","_getDomainMargins","totalWidth","groupWidth","reqWidth","mode","groupBandwidth","barBandwidth","margin1","margin2","Number","POSITIVE_INFINITY","hideTickOverlap","step","_isChartEmpty","_barData","_lineData","item","some","_getChartTitle","chartTitle","_createLines","lineBorders","lines","dots","scaleLineX","seriesIdx","lineBorderGroup","lineGroup","dotGroup","lineBorderWidth","lineOptions","parseFloat","toString","yScale","shouldHighlight","pointIdx","x2","y2","x1","y1","line","stroke","lineBorderColor","colorNeutralBackground1","strokeWidth","strokeLinecap","strokeDasharray","e","_onLineHover","onMouseLeave","dotId","_getDotId","isLinePointActive","circle","id","cx","cy","r","_onLineFocus","dotGroupAriaLabel","pointerX","current","closestPointIdx","currPointPos","prevPointPos","_showCalloutForLines","find","_activeLinePoint","getDomainNRangeValues","getMinMaxOfYAxis","createYAxis","datasetForXAxisDomain","tickPadding","maxOfYVal","getmargins","getGraphData","getAxisData","onChartMouseLeave","getDomainMargins","barwidth","children","childProps","ref","pointerEvents","div","displayName"],"mappings":"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"}
@@ -230,10 +230,9 @@ import { Legends } from '../../index';
230
230
  }
231
231
  startingPoint.push(prevPosition);
232
232
  const xValue = point.horizontalBarChartdata.x;
233
- const placeholderIndex = 1;
234
233
  const isLegendSelected = _legendHighlighted(point.legend) || _noLegendHighlighted();
235
234
  // Render bar label instead of placeholder bar for absolute-scale variant
236
- if (index === placeholderIndex && props.variant === HorizontalBarChartVariant.AbsoluteScale) {
235
+ if (point.placeHolder && props.variant === HorizontalBarChartVariant.AbsoluteScale) {
237
236
  if (props.hideLabels) {
238
237
  return /*#__PURE__*/ React.createElement("text", {
239
238
  key: index
@@ -259,13 +258,13 @@ import { Legends } from '../../index';
259
258
  fill: color,
260
259
  onMouseOver: _showToolTipOnSegment && point.legend !== '' ? (event)=>_hoverOn(event, xValue, point) : undefined,
261
260
  onFocus: _showToolTipOnSegment && point.legend !== '' ? (event)=>_hoverOn(event, xValue, point) : undefined,
262
- role: "img",
263
- "aria-label": _getAriaLabel(point),
261
+ role: !point.placeHolder ? 'option' : '',
262
+ "aria-label": !point.placeHolder ? _getAriaLabel(point) : undefined,
264
263
  onBlur: _hoverOff,
265
264
  onMouseLeave: _hoverOff,
266
265
  className: classes.barWrapper,
267
266
  opacity: isLegendSelected ? 1 : 0.1,
268
- tabIndex: _legendHighlighted(point.legend) || _noLegendHighlighted() ? 0 : undefined
267
+ tabIndex: !point.placeHolder && (_legendHighlighted(point.legend) || _noLegendHighlighted()) ? 0 : undefined
269
268
  });
270
269
  });
271
270
  return bars;
@@ -333,6 +332,7 @@ import { Legends } from '../../index';
333
332
  isSingleBar = props.showLegendForSinglePointBar ? false : points.chartData.length === 1 || points.chartData.length > 1 && points.chartData[1].legend === '';
334
333
  if (isSingleBar) {
335
334
  points.chartData[1] = {
335
+ placeHolder: true,
336
336
  legend: '',
337
337
  horizontalBarChartdata: {
338
338
  x: points.chartData[0].horizontalBarChartdata.total - datapoint,
@@ -345,6 +345,7 @@ import { Legends } from '../../index';
345
345
  const chartDataText = props.variant === HorizontalBarChartVariant.AbsoluteScale ? null : _getChartDataText(points);
346
346
  const bars = _createBars(points);
347
347
  const keyVal = _uniqLineText + '_' + index;
348
+ const barGroupAriaLabel = `bar ${index + 1} of ${data.length}.`;
348
349
  // ToDo - Showtriangle property is per data series. How to account for it in the new stylesheet
349
350
  /* const classes = useHorizontalBarChartStyles(props.styles!, {
350
351
  width: props.width,
@@ -366,7 +367,9 @@ import { Legends } from '../../index';
366
367
  className: classes.chart,
367
368
  "aria-label": points.chartTitle
368
369
  }, /*#__PURE__*/ React.createElement("g", {
370
+ role: "listbox",
369
371
  id: keyVal,
372
+ "aria-label": barGroupAriaLabel,
370
373
  ref: (e)=>{
371
374
  _refCallback(e, points.chartData[0].legend);
372
375
  },