@fluentui/react-charts 9.3.25 → 9.3.27
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -2
- package/dist/index.d.cts +45 -5
- package/dist/index.d.ts +45 -5
- package/lib/components/AreaChart/AreaChart.js +3 -3
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js +1 -1
- package/lib/components/DeclarativeChart/DeclarativeChart.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +5 -4
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +1 -1
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +2 -2
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +22 -10
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.types.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +3 -3
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/HeatMapChart/HeatMapChart.js +5 -5
- package/lib/components/HeatMapChart/HeatMapChart.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +1 -1
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/PolarChart/PolarChart.js +1 -1
- package/lib/components/PolarChart/PolarChart.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +7 -7
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +1 -1
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/VegaDeclarativeChart/VegaLiteExpressionEvaluator.js +2 -1
- package/lib/components/VegaDeclarativeChart/VegaLiteExpressionEvaluator.js.map +1 -1
- package/lib/components/VegaDeclarativeChart/VegaLiteSchemaAdapter.js +8 -5
- package/lib/components/VegaDeclarativeChart/VegaLiteSchemaAdapter.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +1 -1
- 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 +7 -3
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.cjs +3 -3
- package/lib-commonjs/components/AreaChart/AreaChart.cjs.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.cjs.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.cjs +1 -1
- package/lib-commonjs/components/DeclarativeChart/DeclarativeChart.cjs.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.cjs +5 -4
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.cjs.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.cjs +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.cjs.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.cjs +2 -2
- package/lib-commonjs/components/GanttChart/GanttChart.cjs.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.cjs +22 -10
- package/lib-commonjs/components/GaugeChart/GaugeChart.cjs.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.types.cjs.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.cjs +3 -3
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.cjs.map +1 -1
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.cjs +5 -5
- package/lib-commonjs/components/HeatMapChart/HeatMapChart.cjs.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.cjs +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.cjs.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.cjs +1 -1
- package/lib-commonjs/components/LineChart/LineChart.cjs.map +1 -1
- package/lib-commonjs/components/PolarChart/PolarChart.cjs +1 -1
- package/lib-commonjs/components/PolarChart/PolarChart.cjs.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.cjs +7 -7
- package/lib-commonjs/components/SankeyChart/SankeyChart.cjs.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.cjs +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.cjs.map +1 -1
- package/lib-commonjs/components/VegaDeclarativeChart/VegaLiteExpressionEvaluator.cjs +2 -1
- package/lib-commonjs/components/VegaDeclarativeChart/VegaLiteExpressionEvaluator.cjs.map +1 -1
- package/lib-commonjs/components/VegaDeclarativeChart/VegaLiteSchemaAdapter.cjs +8 -5
- package/lib-commonjs/components/VegaDeclarativeChart/VegaLiteSchemaAdapter.cjs.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.cjs +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.cjs.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.cjs +2 -2
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.cjs.map +1 -1
- package/lib-commonjs/utilities/utilities.cjs +7 -3
- package/lib-commonjs/utilities/utilities.cjs.map +1 -1
- package/package.json +9 -9
|
@@ -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=\"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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"}
|
|
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[]> = Object.create(null);\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 = Object.create(null);\n const legendToBarPoint: Record<string, GVBarChartSeriesPoint> = Object.create(null);\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","Object","create","visitedX","Set","forEach","series","data","point","x","push","legend","y","useSecondaryYScale","index","singleDatasetPointForBars","legendToBarPoint","seriesPoint","xAxisPoint","name","indexNum","groupSeries","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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"}
|
|
@@ -389,9 +389,9 @@ export const HeatMapChart = /*#__PURE__*/ React.forwardRef((props = {
|
|
|
389
389
|
});
|
|
390
390
|
});
|
|
391
391
|
});
|
|
392
|
-
const yPoints =
|
|
393
|
-
const uniqueYPoints =
|
|
394
|
-
const uniqueXPoints =
|
|
392
|
+
const yPoints = Object.create(null);
|
|
393
|
+
const uniqueYPoints = Object.create(null);
|
|
394
|
+
const uniqueXPoints = Object.create(null);
|
|
395
395
|
flattenData.forEach((item)=>{
|
|
396
396
|
const posX = _getXIndex(item.x);
|
|
397
397
|
const posY = _getYIndex(item.y);
|
|
@@ -561,7 +561,7 @@ export const HeatMapChart = /*#__PURE__*/ React.forwardRef((props = {
|
|
|
561
561
|
});
|
|
562
562
|
}
|
|
563
563
|
const result = [];
|
|
564
|
-
const xValueToPoints =
|
|
564
|
+
const xValueToPoints = Object.create(null);
|
|
565
565
|
xPoints.forEach((point)=>{
|
|
566
566
|
const xValue = point.x;
|
|
567
567
|
if (!xValueToPoints[xValue]) {
|
|
@@ -584,7 +584,7 @@ export const HeatMapChart = /*#__PURE__*/ React.forwardRef((props = {
|
|
|
584
584
|
return _yAxisType.current === YAxisType.StringAxis && props.yAxisCategoryOrder !== 'default';
|
|
585
585
|
};
|
|
586
586
|
const _mapCategoryToValues = (isYAxis = false)=>{
|
|
587
|
-
const categoryToValues =
|
|
587
|
+
const categoryToValues = Object.create(null);
|
|
588
588
|
props.data.forEach((item)=>{
|
|
589
589
|
item.data.forEach((point)=>{
|
|
590
590
|
const category = isYAxis ? point.y : point.x;
|