@fluentui/react-charts 9.3.7 → 9.3.8
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 +27 -2
- package/dist/index.d.ts +55 -7
- package/lib/components/AreaChart/AreaChart.js +1 -28
- package/lib/components/AreaChart/AreaChart.js.map +1 -1
- package/lib/components/AreaChart/useAreaChartStyles.styles.js +1 -2
- package/lib/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib/components/ChartTable/ChartTable.js +6 -1
- package/lib/components/ChartTable/ChartTable.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js +107 -67
- package/lib/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +7 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +7 -1
- package/lib/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.js +50 -32
- package/lib/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js +5 -5
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js +4 -3
- package/lib/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +261 -187
- package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib/components/DonutChart/DonutChart.js +6 -3
- package/lib/components/DonutChart/DonutChart.js.map +1 -1
- package/lib/components/FunnelChart/FunnelChart.js +6 -3
- package/lib/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib/components/GanttChart/GanttChart.js +1 -1
- package/lib/components/GanttChart/GanttChart.js.map +1 -1
- package/lib/components/GaugeChart/GaugeChart.js +6 -3
- package/lib/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +17 -17
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -4
- package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib/components/Legends/Legends.js +3 -4
- package/lib/components/Legends/Legends.js.map +1 -1
- package/lib/components/LineChart/LineChart.js +66 -64
- package/lib/components/LineChart/LineChart.js.map +1 -1
- package/lib/components/LineChart/useLineChartStyles.styles.js +1 -2
- package/lib/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib/components/SankeyChart/SankeyChart.js +1 -1
- package/lib/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js +1 -2
- package/lib/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.js +18 -26
- package/lib/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js +1 -2
- package/lib/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalBarChart/VerticalBarChart.js +13 -78
- package/lib/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js +21 -32
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +1 -2
- package/lib/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib/types/ChartAnnotation.js.map +1 -1
- package/lib/types/DataPoint.js.map +1 -1
- package/lib/utilities/Common.styles.js +0 -1
- package/lib/utilities/Common.styles.js.map +1 -1
- package/lib/utilities/Common.styles.raw.js +0 -1
- package/lib/utilities/Common.styles.raw.js.map +1 -1
- package/lib/utilities/image-export-utils.js +4 -4
- package/lib/utilities/image-export-utils.js.map +1 -1
- package/lib/utilities/utilities.js +220 -78
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/AreaChart/AreaChart.js +0 -26
- package/lib-commonjs/components/AreaChart/AreaChart.js.map +1 -1
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js +0 -2
- package/lib-commonjs/components/AreaChart/useAreaChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js +6 -1
- package/lib-commonjs/components/ChartTable/ChartTable.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js +107 -67
- package/lib-commonjs/components/CommonComponents/Annotations/ChartAnnotationLayer.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js +7 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js +7 -1
- package/lib-commonjs/components/CommonComponents/Annotations/useChartAnnotationLayer.styles.raw.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.js +49 -31
- package/lib-commonjs/components/CommonComponents/CartesianChart.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js +3 -4
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js +3 -2
- package/lib-commonjs/components/CommonComponents/useCartesianChartStyles.styles.raw.js.map +1 -1
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +261 -186
- package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
- package/lib-commonjs/components/DonutChart/DonutChart.js +5 -2
- package/lib-commonjs/components/DonutChart/DonutChart.js.map +1 -1
- package/lib-commonjs/components/FunnelChart/FunnelChart.js +5 -2
- package/lib-commonjs/components/FunnelChart/FunnelChart.js.map +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js +1 -1
- package/lib-commonjs/components/GanttChart/GanttChart.js.map +1 -1
- package/lib-commonjs/components/GaugeChart/GaugeChart.js +5 -2
- package/lib-commonjs/components/GaugeChart/GaugeChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js +15 -15
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js +2 -4
- package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.js +3 -4
- package/lib-commonjs/components/Legends/Legends.js.map +1 -1
- package/lib-commonjs/components/LineChart/LineChart.js +65 -63
- package/lib-commonjs/components/LineChart/LineChart.js.map +1 -1
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js +0 -2
- package/lib-commonjs/components/LineChart/useLineChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js +1 -1
- package/lib-commonjs/components/SankeyChart/SankeyChart.js.map +1 -1
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js +0 -2
- package/lib-commonjs/components/SankeyChart/useSankeyChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.js +17 -25
- package/lib-commonjs/components/ScatterChart/ScatterChart.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js +0 -2
- package/lib-commonjs/components/ScatterChart/useScatterChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js +12 -77
- package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalBarChart/useVerticalBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js +20 -31
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js +0 -2
- package/lib-commonjs/components/VerticalStackedBarChart/useVerticalStackedBarChartStyles.styles.js.map +1 -1
- package/lib-commonjs/types/ChartAnnotation.js.map +1 -1
- package/lib-commonjs/types/DataPoint.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.js +0 -1
- package/lib-commonjs/utilities/Common.styles.js.map +1 -1
- package/lib-commonjs/utilities/Common.styles.raw.js +0 -1
- package/lib-commonjs/utilities/Common.styles.raw.js.map +1 -1
- package/lib-commonjs/utilities/image-export-utils.js +3 -3
- package/lib-commonjs/utilities/image-export-utils.js.map +1 -1
- package/lib-commonjs/utilities/utilities.js +232 -81
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +9 -9
- package/lib/components/DeclarativeChart/imageExporter.js +0 -223
- package/lib/components/DeclarativeChart/imageExporter.js.map +0 -1
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js +0 -233
- package/lib-commonjs/components/DeclarativeChart/imageExporter.js.map +0 -1
|
@@ -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 { select as d3Select, pointer as d3Pointer } from 'd3-selection';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { ScaleBand, ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport { useId, JSXElement } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n tooltipOfAxislabels,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n YAxisType,\n calcRequiredWidth,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n sortAxisCategories,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n ChartPopoverProps,\n LineSeries,\n getColorFromToken,\n BarSeries,\n ChildProps,\n} 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 _tooltipId: string = useId('GVBCTooltipId_');\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 let startColor = seriesPoint.color ? seriesPoint.color : getNextColor(colorIndex, 0);\n let 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 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 // Used to display tooltip at x axis labels.\n if (!props.wrapXAxisLables && props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(_tooltipId) && document.getElementById(_tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: classes.tooltip!,\n id: _tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\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 data-is-focusable={shouldHighlight}\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","select","d3Select","pointer","d3Pointer","max","d3Max","min","d3Min","scaleBand","d3ScaleBand","useId","ChartTypes","getAccessibleDataObject","tooltipOfAxislabels","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","_tooltipId","_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","hideLabels","ceil","text","textAnchor","barLabel","aria-hidden","style","direction","unicodeBidi","yAxisTickFormat","wrapXAxisLables","showXAxisLablesTooltip","xAxisElement","call","document","getElementById","remove","e","tooltipProps","tooltipCls","tooltip","id","axis","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","_onLineHover","onMouseLeave","dotId","_getDotId","isLinePointActive","circle","cx","cy","r","data-is-focusable","_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 { ScaleBand, ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\n\nimport { useId, JSXElement } from '@fluentui/react-utilities';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n formatScientificLimitWidth,\n getScalePadding,\n getBarWidth,\n isScalePaddingDefined,\n createNumericYAxis,\n IDomainNRange,\n domainRangeOfXStringAxis,\n createStringYAxis,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n useRtl,\n YAxisType,\n calcRequiredWidth,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n sortAxisCategories,\n} from '../../utilities/index';\n\nimport {\n AccessibilityProps,\n CartesianChart,\n Margins,\n Legend,\n GroupedVerticalBarChartProps,\n GroupedVerticalBarChartData,\n GVBarChartSeriesPoint,\n Legends,\n YValueHover,\n ChartPopoverProps,\n LineSeries,\n getColorFromToken,\n BarSeries,\n ChildProps,\n} 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 let startColor = seriesPoint.color ? seriesPoint.color : getNextColor(colorIndex, 0);\n let 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 // eslint-disable-next-line @typescript-eslint/no-explicit-any\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 data-is-focusable={shouldHighlight}\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","data-is-focusable","_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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"}
|
|
@@ -40,7 +40,6 @@ const useStyles = /*#__PURE__*/__styles({
|
|
|
40
40
|
B0ocmuz: "f1bnz8pu",
|
|
41
41
|
qhf8xq: "f1euv43f",
|
|
42
42
|
fsow6f: "f17mccla",
|
|
43
|
-
Bhzewxz: "fr6rvge",
|
|
44
43
|
De3pzq: "fxugw4r",
|
|
45
44
|
Beyfa6y: 0,
|
|
46
45
|
Bbmb7ep: 0,
|
|
@@ -61,7 +60,7 @@ const useStyles = /*#__PURE__*/__styles({
|
|
|
61
60
|
}, {
|
|
62
61
|
d: [".f158kwzp{cursor:default;}", ".fk6fouc{font-family:var(--fontFamilyBase);}", ".fkhj508{font-size:var(--fontSizeBase300);}", ".figsok6{font-weight:var(--fontWeightRegular);}", ".f1i3iumi{line-height:var(--lineHeightBase300);}", ".f22iagw{display:flex;}", ".f1vx9l62{flex-direction:column;}", [".f1bnz8pu{padding:var(--spacingHorizontalS);}", {
|
|
63
62
|
p: -1
|
|
64
|
-
}], ".f1euv43f{position:absolute;}", ".f17mccla{text-align:center;}", ".
|
|
63
|
+
}], ".f1euv43f{position:absolute;}", ".f17mccla{text-align:center;}", ".fxugw4r{background-color:var(--colorNeutralBackground1);}", [".fq9zq91{border-radius:var(--borderRadiusSmall);}", {
|
|
65
64
|
p: -1
|
|
66
65
|
}], ".f1aehjj5{pointer-events:none;}", ".f19n0e5{color:var(--colorNeutralForeground1);}", ".fy9rknc{font-size:var(--fontSizeBase200);}", ".fl43uef{font-weight:var(--fontWeightSemibold);}", ".fwrc4pm{line-height:var(--lineHeightBase200);}", ".fhuob2q{fill:var(--colorNeutralForeground1);}", ".fhv2zbx{forced-color-adjust:auto;}"]
|
|
67
66
|
});
|
package/lib/components/GroupedVerticalBarChart/useGroupedVerticalBarChartStyles.styles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["__styles","mergeClasses","getBarLabelStyle","getTooltipStyle","groupedVerticalBarChartClassNames","opacityChangeOnHover","tooltip","barLabel","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","plotContainer","annotationLayer","useStyles","Bceei9c","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","
|
|
1
|
+
{"version":3,"names":["__styles","mergeClasses","getBarLabelStyle","getTooltipStyle","groupedVerticalBarChartClassNames","opacityChangeOnHover","tooltip","barLabel","root","xAxis","yAxis","legendContainer","hover","descriptionMessage","axisTitle","chartTitle","shapeStyles","chartWrapper","svgTooltip","chart","axisAnnotation","plotContainer","annotationLayer","useStyles","Bceei9c","Bahqtrf","Be2twd7","Bhrd7zp","Bg96gwp","mc9l5x","Beiy3e4","Byoj8tv","uwmqm3","z189sj","z8tnut","B0ocmuz","qhf8xq","fsow6f","De3pzq","Beyfa6y","Bbmb7ep","Btl43ni","B7oj6ja","Dimara","Bkecrkj","sj55zd","Bkfmm31","Bvjb7m6","d","p","useGroupedVerticalBarChartStyles_unstable","props","baseStyles"],"sources":["useGroupedVerticalBarChartStyles.styles.js"],"sourcesContent":["'use client';\nimport { makeStyles, mergeClasses } from '@griffel/react';\nimport { getBarLabelStyle, getTooltipStyle } from '../../utilities/index';\nexport const groupedVerticalBarChartClassNames = {\n opacityChangeOnHover: 'fui-gvbc**opacityChangeOnHover',\n tooltip: 'fui-gvbc**tooltip',\n barLabel: 'fui-gvbc**barLabel',\n root: '',\n xAxis: '',\n yAxis: '',\n legendContainer: '',\n hover: '',\n descriptionMessage: '',\n axisTitle: '',\n chartTitle: '',\n shapeStyles: '',\n chartWrapper: '',\n svgTooltip: '',\n chart: '',\n axisAnnotation: '',\n plotContainer: '',\n annotationLayer: ''\n};\nconst useStyles = makeStyles({\n opacityChangeOnHover: {\n cursor: 'default'\n },\n tooltip: getTooltipStyle(),\n barLabel: getBarLabelStyle()\n});\n/**\n * Apply styling to the GroupedVerticalBarChart slots based on the state\n */ export const useGroupedVerticalBarChartStyles_unstable = (props)=>{\n const baseStyles = useStyles();\n return {\n opacityChangeOnHover: mergeClasses(groupedVerticalBarChartClassNames.opacityChangeOnHover, baseStyles.opacityChangeOnHover /*props.styles?.opacityChangeOnHover*/ ),\n tooltip: mergeClasses(groupedVerticalBarChartClassNames.tooltip, baseStyles.tooltip /*props.styles?.tooltip*/ ),\n barLabel: mergeClasses(groupedVerticalBarChartClassNames.barLabel, baseStyles.barLabel /*props.styles?.barLabel*/ )\n };\n};\n"],"mappings":"AAAA,YAAY;;AACZ,SAAAA,QAAA,EAAqBC,YAAY,QAAQ,gBAAgB;AACzD,SAASC,gBAAgB,EAAEC,eAAe,QAAQ,uBAAuB;AACzE,OAAO,MAAMC,iCAAiC,GAAG;EAC7CC,oBAAoB,EAAE,gCAAgC;EACtDC,OAAO,EAAE,mBAAmB;EAC5BC,QAAQ,EAAE,oBAAoB;EAC9BC,IAAI,EAAE,EAAE;EACRC,KAAK,EAAE,EAAE;EACTC,KAAK,EAAE,EAAE;EACTC,eAAe,EAAE,EAAE;EACnBC,KAAK,EAAE,EAAE;EACTC,kBAAkB,EAAE,EAAE;EACtBC,SAAS,EAAE,EAAE;EACbC,UAAU,EAAE,EAAE;EACdC,WAAW,EAAE,EAAE;EACfC,YAAY,EAAE,EAAE;EAChBC,UAAU,EAAE,EAAE;EACdC,KAAK,EAAE,EAAE;EACTC,cAAc,EAAE,EAAE;EAClBC,aAAa,EAAE,EAAE;EACjBC,eAAe,EAAE;AACrB,CAAC;AACD,MAAMC,SAAS,gBAAGvB,QAAA;EAAAK,oBAAA;IAAAmB,OAAA;EAAA;EAAAlB,OAAA;IAAAmB,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,MAAA;IAAAC,OAAA;IAAAC,MAAA;EAAA;EAAAtC,QAAA;IAAAkB,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAC,OAAA;IAAAkB,OAAA;IAAAC,OAAA;EAAA;AAAA;EAAAC,CAAA;IAAAC,CAAA;EAAA;IAAAA,CAAA;EAAA;AAAA,CAMjB,CAAC;AACF;AACA;AACA;AAAI,OAAO,MAAMC,yCAAyC,GAAIC,KAAK,IAAG;EAClE,MAAMC,UAAU,GAAG7B,SAAS,CAAC,CAAC;EAC9B,OAAO;IACHlB,oBAAoB,EAAEJ,YAAY,CAACG,iCAAiC,CAACC,oBAAoB,EAAE+C,UAAU,CAAC/C,oBAAoB,CAAC,sCAAuC,CAAC;IACnKC,OAAO,EAAEL,YAAY,CAACG,iCAAiC,CAACE,OAAO,EAAE8C,UAAU,CAAC9C,OAAO,CAAC,yBAA0B,CAAC;IAC/GC,QAAQ,EAAEN,YAAY,CAACG,iCAAiC,CAACG,QAAQ,EAAE6C,UAAU,CAAC7C,QAAQ,CAAC,0BAA2B;EACtH,CAAC;AACL,CAAC","ignoreList":[]}
|
|
@@ -303,7 +303,6 @@ export const HorizontalBarChartWithAxis = /*#__PURE__*/ React.forwardRef((props
|
|
|
303
303
|
key: point.y,
|
|
304
304
|
x: xStart,
|
|
305
305
|
y: yBarScale(point.y) - _barHeight / 2,
|
|
306
|
-
"data-is-focusable": shouldHighlight,
|
|
307
306
|
width: currentWidth - (_isRtl ? gapWidthRTL : gapWidthLTR),
|
|
308
307
|
height: _barHeight,
|
|
309
308
|
ref: (e)=>{
|
|
@@ -320,7 +319,7 @@ export const HorizontalBarChartWithAxis = /*#__PURE__*/ React.forwardRef((props
|
|
|
320
319
|
onBlur: _onBarLeave,
|
|
321
320
|
fill: startColor,
|
|
322
321
|
opacity: shouldHighlight ? 1 : 0.1,
|
|
323
|
-
tabIndex:
|
|
322
|
+
tabIndex: shouldHighlight ? 0 : undefined
|
|
324
323
|
}));
|
|
325
324
|
});
|
|
326
325
|
return bars;
|
|
@@ -448,11 +447,10 @@ export const HorizontalBarChartWithAxis = /*#__PURE__*/ React.forwardRef((props
|
|
|
448
447
|
onMouseOver: (event)=>_onBarHover(point, startColor, event),
|
|
449
448
|
onMouseLeave: _onBarLeave,
|
|
450
449
|
onBlur: _onBarLeave,
|
|
451
|
-
"data-is-focusable": shouldHighlight,
|
|
452
450
|
opacity: shouldHighlight ? 1 : 0.1,
|
|
453
451
|
onFocus: (event)=>_onBarFocus(event, point, index, startColor),
|
|
454
452
|
fill: startColor,
|
|
455
|
-
tabIndex:
|
|
453
|
+
tabIndex: shouldHighlight ? 0 : undefined
|
|
456
454
|
}));
|
|
457
455
|
});
|
|
458
456
|
return bars;
|