@fluentui/react-charting 5.25.6 → 5.25.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.json +75 -1
- package/CHANGELOG.md +26 -2
- package/dist/react-charting.d.ts +12 -6
- package/dist/react-charting.js +1 -1
- package/dist/react-charting.min.js +1 -1
- package/lib/components/DonutChart/Arc/Arc.js +4 -2
- package/lib/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +4 -2
- package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib/components/Legends/Legends.types.d.ts +12 -6
- package/lib/components/Legends/Legends.types.js.map +1 -1
- package/lib/components/StackedBarChart/MultiStackedBarChart.base.js +4 -2
- package/lib/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib/components/StackedBarChart/StackedBarChart.base.js +4 -2
- package/lib/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +4 -2
- package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib/utilities/utilities.d.ts +1 -0
- package/lib/utilities/utilities.js +6 -0
- package/lib/utilities/utilities.js.map +1 -1
- package/lib-amd/components/DonutChart/Arc/Arc.js +3 -1
- package/lib-amd/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +3 -1
- package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-amd/components/Legends/Legends.types.d.ts +12 -6
- package/lib-amd/components/Legends/Legends.types.js.map +1 -1
- package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js +3 -1
- package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib-amd/components/StackedBarChart/StackedBarChart.base.js +3 -1
- package/lib-amd/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +3 -1
- package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-amd/utilities/utilities.d.ts +1 -0
- package/lib-amd/utilities/utilities.js +7 -0
- package/lib-amd/utilities/utilities.js.map +1 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js +3 -1
- package/lib-commonjs/components/DonutChart/Arc/Arc.js.map +1 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +3 -1
- package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
- package/lib-commonjs/components/Legends/Legends.types.d.ts +12 -6
- package/lib-commonjs/components/Legends/Legends.types.js.map +1 -1
- package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js +3 -1
- package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js +3 -1
- package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +3 -1
- package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
- package/lib-commonjs/utilities/utilities.d.ts +1 -0
- package/lib-commonjs/utilities/utilities.js +7 -0
- package/lib-commonjs/utilities/utilities.js.map +1 -1
- package/package.json +4 -4
- package/src/components/Legends/Legends.types.ts +12 -6
|
@@ -89,7 +89,9 @@ define(["require", "exports", "tslib", "react", "d3-shape", "@fluentui/react/lib
|
|
|
89
89
|
this.props.hoverOnCallback(data, mouseEvent);
|
|
90
90
|
};
|
|
91
91
|
Arc.prototype._redirectToUrl = function (href) {
|
|
92
|
-
href
|
|
92
|
+
if (href && (0, index_1.isSafeUrl)(href)) {
|
|
93
|
+
window.location.href = href;
|
|
94
|
+
}
|
|
93
95
|
};
|
|
94
96
|
Arc.defaultProps = {
|
|
95
97
|
arc: (0, d3_shape_1.arc)(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Arc.js","sourceRoot":"../src/","sources":["components/DonutChart/Arc/Arc.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { classNamesFunction, getId, getRTL } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Arc.styles';\nimport { IChartDataPoint } from '../index';\nimport { IArcProps, IArcStyleProps, IArcStyles } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatScientificLimitWidth } from '../../../utilities/index';\nimport type { JSXElement } from '@fluentui/utilities';\n\nexport interface IArcState {\n isCalloutVisible?: boolean;\n}\n\nexport class Arc extends React.Component<IArcProps, IArcState> {\n public static defaultProps: Partial<IArcProps> = {\n arc: d3Arc(),\n };\n\n public state: {} = {};\n\n private currentRef = React.createRef<SVGPathElement>();\n private _isRTL: boolean = getRTL();\n\n public static getDerivedStateFromProps(nextProps: Readonly<IArcProps>): Partial<IArcState> | null {\n _updateChart(nextProps);\n return null;\n }\n\n public updateChart(newProps: IArcProps): void {\n _updateChart(newProps);\n }\n\n public render(): JSXElement {\n const { arc, href, focusedArcId, activeArc } = this.props;\n const getClassNames = classNamesFunction<IArcStyleProps, IArcStyles>();\n const id =\n this.props.uniqText! +\n (typeof this.props.data!.data.legend === 'string' ? this.props.data!.data.legend.replace(/\\s+/g, '') : '') +\n this.props.data!.data.data;\n const opacity: number =\n activeArc && activeArc.length > 0 ? (activeArc.includes(this.props.data?.data.legend!) ? 1 : 0.1) : 1;\n const startAngle = this.props.data?.startAngle ?? 0;\n const endAngle = (this.props.data?.endAngle ?? 0) - startAngle;\n const cornerRadius = this.props.roundCorners ? 3 : 0;\n\n const classNames = getClassNames(getStyles, {\n solidFill: this.props.enableGradient ? 'transparent' : this.props.color,\n gradientFill: `conic-gradient(\n from ${startAngle}rad,\n ${this.props.color},\n ${this.props.nextColor} ${endAngle}rad\n )`,\n href: href!,\n theme: this.props.theme!,\n opacity,\n });\n\n const clipId = getId('Arc_clip') + `${this.props.color}_${this.props.nextColor}`;\n\n return (\n <g ref={this.currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n <path\n id={id + 'focusRing'}\n d={arc.cornerRadius(cornerRadius)(this.props.focusData)}\n className={classNames.focusRing}\n />\n )}\n\n <path\n id={id}\n d={arc.cornerRadius(cornerRadius)(this.props.data)}\n onFocus={this._onFocus.bind(this, this.props.data!.data, id)}\n className={classNames.root}\n data-is-focusable={\n this._shouldHighlightArc(this.props.data!.data.legend!) || this.props.activeArc?.length === 0\n }\n onMouseOver={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseMove={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseLeave={this._hoverOff}\n onBlur={this._onBlur}\n onClick={href ? this._redirectToUrl.bind(this, href) : this.props.data?.data.onClick}\n aria-label={this._getAriaLabel()}\n role=\"img\"\n />\n {this._renderArcLabel(classNames.arcLabel)}\n\n {this.props.enableGradient && (\n <>\n <clipPath id={clipId}>\n <path d={arc.cornerRadius(cornerRadius)(this.props.data)} />\n </clipPath>\n <foreignObject x=\"-50%\" y=\"-50%\" width=\"100%\" height=\"100%\" clipPath={`url(#${clipId})`}>\n <div className={classNames.gradientArc} />\n </foreignObject>\n </>\n )}\n </g>\n );\n }\n\n private _onFocus(data: IChartDataPoint, id: string): void {\n this.props.onFocusCallback!(data, id, this.currentRef.current);\n }\n\n private _hoverOn(data: IChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n this.props.hoverOnCallback!(data, mouseEvent);\n }\n\n private _hoverOff = (): void => {\n this.props.hoverLeaveCallback!();\n };\n\n private _onBlur = (): void => {\n this.props.onBlurCallback!();\n };\n\n private _redirectToUrl(href: string | undefined): void {\n href ? (window.location.href = href) : '';\n }\n\n private _getAriaLabel = (): string => {\n const point = this.props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n private _shouldHighlightArc = (legend?: string): boolean => {\n const { activeArc } = this.props;\n // If no activeArc is provided, highlight all arcs. Otherwise, only highlight the arcs that are active.\n return !activeArc || activeArc.length === 0 || legend === undefined || activeArc.includes(legend);\n };\n\n private _renderArcLabel = (className: string) => {\n const { arc, data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels } = this.props;\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n !this._shouldHighlightArc(data!.data.legend!)\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid(data);\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== this._isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatScientificLimitWidth(arcValue)}\n </text>\n );\n };\n}\n\nfunction _updateChart(newProps: IArcProps): void {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"Arc.js","sourceRoot":"../src/","sources":["components/DonutChart/Arc/Arc.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { arc as d3Arc } from 'd3-shape';\nimport { classNamesFunction, getId, getRTL } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Arc.styles';\nimport { IChartDataPoint } from '../index';\nimport { IArcProps, IArcStyleProps, IArcStyles } from './index';\nimport { format as d3Format } from 'd3-format';\nimport { formatScientificLimitWidth, isSafeUrl } from '../../../utilities/index';\nimport type { JSXElement } from '@fluentui/utilities';\n\nexport interface IArcState {\n isCalloutVisible?: boolean;\n}\n\nexport class Arc extends React.Component<IArcProps, IArcState> {\n public static defaultProps: Partial<IArcProps> = {\n arc: d3Arc(),\n };\n\n public state: {} = {};\n\n private currentRef = React.createRef<SVGPathElement>();\n private _isRTL: boolean = getRTL();\n\n public static getDerivedStateFromProps(nextProps: Readonly<IArcProps>): Partial<IArcState> | null {\n _updateChart(nextProps);\n return null;\n }\n\n public updateChart(newProps: IArcProps): void {\n _updateChart(newProps);\n }\n\n public render(): JSXElement {\n const { arc, href, focusedArcId, activeArc } = this.props;\n const getClassNames = classNamesFunction<IArcStyleProps, IArcStyles>();\n const id =\n this.props.uniqText! +\n (typeof this.props.data!.data.legend === 'string' ? this.props.data!.data.legend.replace(/\\s+/g, '') : '') +\n this.props.data!.data.data;\n const opacity: number =\n activeArc && activeArc.length > 0 ? (activeArc.includes(this.props.data?.data.legend!) ? 1 : 0.1) : 1;\n const startAngle = this.props.data?.startAngle ?? 0;\n const endAngle = (this.props.data?.endAngle ?? 0) - startAngle;\n const cornerRadius = this.props.roundCorners ? 3 : 0;\n\n const classNames = getClassNames(getStyles, {\n solidFill: this.props.enableGradient ? 'transparent' : this.props.color,\n gradientFill: `conic-gradient(\n from ${startAngle}rad,\n ${this.props.color},\n ${this.props.nextColor} ${endAngle}rad\n )`,\n href: href!,\n theme: this.props.theme!,\n opacity,\n });\n\n const clipId = getId('Arc_clip') + `${this.props.color}_${this.props.nextColor}`;\n\n return (\n <g ref={this.currentRef}>\n {!!focusedArcId && focusedArcId === id && (\n <path\n id={id + 'focusRing'}\n d={arc.cornerRadius(cornerRadius)(this.props.focusData)}\n className={classNames.focusRing}\n />\n )}\n\n <path\n id={id}\n d={arc.cornerRadius(cornerRadius)(this.props.data)}\n onFocus={this._onFocus.bind(this, this.props.data!.data, id)}\n className={classNames.root}\n data-is-focusable={\n this._shouldHighlightArc(this.props.data!.data.legend!) || this.props.activeArc?.length === 0\n }\n onMouseOver={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseMove={this._hoverOn.bind(this, this.props.data!.data)}\n onMouseLeave={this._hoverOff}\n onBlur={this._onBlur}\n onClick={href ? this._redirectToUrl.bind(this, href) : this.props.data?.data.onClick}\n aria-label={this._getAriaLabel()}\n role=\"img\"\n />\n {this._renderArcLabel(classNames.arcLabel)}\n\n {this.props.enableGradient && (\n <>\n <clipPath id={clipId}>\n <path d={arc.cornerRadius(cornerRadius)(this.props.data)} />\n </clipPath>\n <foreignObject x=\"-50%\" y=\"-50%\" width=\"100%\" height=\"100%\" clipPath={`url(#${clipId})`}>\n <div className={classNames.gradientArc} />\n </foreignObject>\n </>\n )}\n </g>\n );\n }\n\n private _onFocus(data: IChartDataPoint, id: string): void {\n this.props.onFocusCallback!(data, id, this.currentRef.current);\n }\n\n private _hoverOn(data: IChartDataPoint, mouseEvent: React.MouseEvent<SVGPathElement>): void {\n mouseEvent.persist();\n this.props.hoverOnCallback!(data, mouseEvent);\n }\n\n private _hoverOff = (): void => {\n this.props.hoverLeaveCallback!();\n };\n\n private _onBlur = (): void => {\n this.props.onBlurCallback!();\n };\n\n private _redirectToUrl(href: string | undefined): void {\n if (href && isSafeUrl(href)) {\n window.location.href = href;\n }\n }\n\n private _getAriaLabel = (): string => {\n const point = this.props.data!.data;\n const legend = point.xAxisCalloutData || point.legend;\n const yValue = point.yAxisCalloutData || point.data || 0;\n return point.callOutAccessibilityData?.ariaLabel || (legend ? `${legend}, ` : '') + `${yValue}.`;\n };\n\n private _shouldHighlightArc = (legend?: string): boolean => {\n const { activeArc } = this.props;\n // If no activeArc is provided, highlight all arcs. Otherwise, only highlight the arcs that are active.\n return !activeArc || activeArc.length === 0 || legend === undefined || activeArc.includes(legend);\n };\n\n private _renderArcLabel = (className: string) => {\n const { arc, data, innerRadius, outerRadius, showLabelsInPercent, totalValue, hideLabels } = this.props;\n if (\n hideLabels ||\n Math.abs(data!.endAngle - data!.startAngle) < Math.PI / 12 ||\n !this._shouldHighlightArc(data!.data.legend!)\n ) {\n return null;\n }\n\n const [base, perp] = arc.centroid(data);\n const hyp = Math.sqrt(base * base + perp * perp);\n const labelRadius = Math.max(innerRadius!, outerRadius!) + 2;\n const angle = (data!.startAngle + data!.endAngle) / 2;\n const arcValue = data!.value;\n\n return (\n <text\n x={(hyp === 0 ? 0 : base / hyp) * labelRadius}\n y={(hyp === 0 ? 0 : perp / hyp) * labelRadius}\n textAnchor={angle > Math.PI !== this._isRTL ? 'end' : 'start'}\n dominantBaseline={angle > Math.PI / 2 && angle < (3 * Math.PI) / 2 ? 'hanging' : 'auto'}\n className={className}\n aria-hidden={true}\n >\n {showLabelsInPercent\n ? d3Format('.0%')(totalValue! === 0 ? 0 : arcValue / totalValue!)\n : formatScientificLimitWidth(arcValue)}\n </text>\n );\n };\n}\n\nfunction _updateChart(newProps: IArcProps): void {\n newProps.arc.innerRadius(newProps.innerRadius);\n newProps.arc.outerRadius(newProps.outerRadius);\n}\n"]}
|
|
@@ -102,7 +102,9 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
|
|
|
102
102
|
_this._showCallout(focusEvent.currentTarget, pointData, groupData);
|
|
103
103
|
};
|
|
104
104
|
_this._redirectToUrl = function (href) {
|
|
105
|
-
href
|
|
105
|
+
if (href && (0, index_1.isSafeUrl)(href)) {
|
|
106
|
+
window.location.href = href;
|
|
107
|
+
}
|
|
106
108
|
};
|
|
107
109
|
_this._buildGraph = function (
|
|
108
110
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupedVerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { pointer as d3Pointer } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear, scaleBand as d3ScaleBand, ScaleBand } from 'd3-scale';\nimport {\n classNamesFunction,\n getId,\n getRTL,\n initializeComponentRef,\n memoizeFunction,\n warnDeprecations,\n} from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\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 getNextGradient,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n YAxisType,\n sortAxisCategories,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n calcRequiredWidth,\n getColorFromToken,\n} from '../../utilities/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ILegend,\n IGroupedVerticalBarChartData,\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartStyleProps,\n IGroupedVerticalBarChartStyles,\n IGVBarChartSeriesPoint,\n IMargins,\n IBasestate,\n Legends,\n IChildProps,\n IYValueHover,\n} from '../../index';\nimport { IChart, IImageExportOptions, IBarSeries, ILineSeries } from '../../types/index';\nimport { exportChartsAsImage } from '../../utilities/image-export-utils';\nimport { ILegendContainer } from '../Legends/index';\nimport { rgb } from 'd3-color';\nimport type { JSXElement } from '@fluentui/utilities';\nimport { isInvalidValue } from '@fluentui/chart-utilities';\n\nconst COMPONENT_NAME = 'GROUPED VERTICAL BAR CHART';\nconst getClassNames = classNamesFunction<IGroupedVerticalBarChartStyleProps, IGroupedVerticalBarChartStyles>();\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 IGVDataPoint {\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 IGVSingleDataPoint {\n [key: string]: IGVDataPoint;\n}\n\ntype IGVBCLineSeries = ILineSeries<string, number>;\n\nexport interface IGroupedVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IGVBarChartSeriesPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n selectedLegends: string[];\n activeLinePoint: string;\n}\n\nexport class GroupedVerticalBarChartBase\n extends React.Component<IGroupedVerticalBarChartProps, IGroupedVerticalBarChartState>\n implements IChart\n{\n public static defaultProps: Partial<IGroupedVerticalBarChartProps> = {\n maxBarWidth: 24,\n xAxisCategoryOrder: 'default',\n };\n\n private _createSet: (\n barData: IGroupedVerticalBarChartData[],\n lineData: IGVBCLineSeries[],\n ) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { barLegends: string[]; lineLegends: string[]; xAxisLabels: string[]; datasetForBars: any };\n private _barLegends: string[];\n private _lineLegends: string[];\n private _xAxisLabels: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _datasetForBars: any;\n private margins: IMargins;\n\n private _groupedVerticalBarGraph: JSXElement[];\n private _classNames: IProcessedStyleSet<IGroupedVerticalBarChartStyles>;\n private _yMax: number;\n private _calloutId: string;\n private _xAxisType: XAxisTypes;\n private _isRtl: boolean = getRTL();\n private _calloutAnchorPoint: IGVBarChartSeriesPoint | null;\n private _barWidth: number;\n private _domainMargin: number;\n private _emptyChartId: string;\n private _groupWidth: number;\n private _xAxisInnerPadding: number;\n private _xAxisOuterPadding: number;\n private _cartesianChartRef: React.RefObject<IChart | null>;\n private _legendsRef: React.RefObject<ILegendContainer | null>;\n private _legendColorMap: Record<string, [string, string]> = {};\n private readonly Y_ORIGIN: number = 0;\n private _rectRef: React.RefObject<SVGRectElement | null>;\n private _uniqDotId = getId('gvbc_dot_');\n\n public constructor(props: IGroupedVerticalBarChartProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this._createSet = memoizeFunction((barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) =>\n this._createDataSetOfGVBC(barData, lineData),\n );\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegends: props.legendProps?.selectedLegends || [],\n xCalloutValue: '',\n yCalloutValue: '',\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n activeLegend: '',\n activeLinePoint: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n showXAxisPath: 'Dont use this property. Axis line removed default.',\n showYAxisPath: 'Dont use this property. No need to display Y axis path. Handling default',\n showXAxisGridLines: 'Dont use this property. Handling with default value.',\n legendColor: 'Dont use this property. colour will pick from given data.',\n });\n this._calloutId = getId('callout');\n this._emptyChartId = getId('_GVBC_empty');\n this._domainMargin = MIN_DOMAIN_MARGIN;\n this._cartesianChartRef = React.createRef();\n this._legendsRef = React.createRef();\n this._rectRef = React.createRef();\n }\n\n public componentDidUpdate(prevProps: IGroupedVerticalBarChartProps): void {\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, this.props.legendProps?.selectedLegends)) {\n this.setState({\n selectedLegends: this.props.legendProps?.selectedLegends || [],\n });\n }\n }\n\n public render(): React.ReactNode {\n const { barData, lineData } = this._prepareChartData();\n const firstXValue = barData[0]?.name ?? lineData[0]?.data[0]?.x;\n this._xAxisType = isInvalidValue(firstXValue)\n ? XAxisTypes.StringAxis\n : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n const { barLegends, lineLegends, xAxisLabels, datasetForBars } = this._createSet(barData, lineData);\n this._barLegends = barLegends;\n this._lineLegends = lineLegends;\n this._xAxisLabels = xAxisLabels;\n this._datasetForBars = datasetForBars;\n\n const legendBars: JSXElement = this._getLegendData();\n this._adjustProps();\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n\n const yMax = this._getMinMaxOfYAxis(this._datasetForBars).endValue;\n this._yMax = Math.max(yMax, this.props.yMaxValue || 0);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n href: this.props.href!,\n });\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\n color: this.state.color,\n Legend: this.state.calloutLegend,\n XValue: this.state.xCalloutValue,\n YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard,\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n onDismiss: this._closeCallout,\n ...this.props.calloutProps,\n preventDismissOnLostFocus: true,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: this.props.tickValues!,\n tickFormat: this.props.tickFormat!,\n };\n\n return !this._isChartEmpty(barData, lineData) ? (\n <CartesianChart\n {...this.props}\n chartTitle={this._getChartTitle()}\n points={this._datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={this._xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={this._xAxisLabels}\n tickParams={tickParams}\n getDomainNRangeValues={this._getDomainNRangeValues}\n getMinMaxOfYAxis={this._getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n tickPadding={this.props.tickPadding || 5}\n maxOfYVal={this._yMax}\n svgFocusZoneProps={{\n direction: FocusZoneDirection.horizontal,\n }}\n customizedCallout={this._getCustomizedCallout()}\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n onChartMouseLeave={this._handleChartMouseLeave}\n getDomainMargins={this._getDomainMargins}\n {...(this._xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: this._xAxisInnerPadding,\n xAxisOuterPadding: this._xAxisOuterPadding,\n })}\n barwidth={this._barWidth}\n ref={this._cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(props: IChildProps) => {\n return (\n <>\n <rect\n ref={this._rectRef}\n width=\"100%\"\n height=\"100%\"\n fill=\"transparent\"\n style={{ pointerEvents: 'none' }}\n />\n <g>{this._groupedVerticalBarGraph}</g>\n {this._createLines(lineData, props.xScale, props.yScalePrimary, props.yScaleSecondary)}\n </>\n );\n }}\n />\n ) : (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n public get chartContainer(): HTMLElement | null {\n return this._cartesianChartRef.current?.chartContainer || null;\n }\n\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return exportChartsAsImage(\n [{ container: this._cartesianChartRef.current?.chartContainer }],\n this.props.hideLegend ? undefined : this._legendsRef.current?.toSVG,\n this._isRtl,\n opts,\n );\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _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: IGVBarChartSeriesPoint) => {\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 private _getDomainNRangeValues = (\n points: IGroupedVerticalBarChartData[],\n margins: IMargins,\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 private _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 = this._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 this._barWidth = getBarWidth(\n this.props.barwidth,\n this.props.maxBarWidth,\n calcBandwidth(xScale0.bandwidth(), this._barLegends.length, X1_INNER_PADDING),\n );\n this._groupWidth = calcRequiredWidth(this._barWidth, this._barLegends.length, X1_INNER_PADDING);\n\n const xScale1 = this._createX1Scale();\n\n const allGroupsBars: JSXElement[] = [];\n this._datasetForBars.forEach((singleSet: IGVSingleDataPoint) => {\n allGroupsBars.push(\n this._buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n this._groupedVerticalBarGraph = allGroupsBars;\n };\n\n private _getMargins = (margins: IMargins) => (this.margins = margins);\n\n private _createDataSetOfGVBC = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\n const barLegends = new Set<string>();\n barData.forEach((point: IGroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\n barLegends.add(seriesPoint.legend);\n });\n });\n const lineLegends = new Set<string>(lineData.map(series => series.legend));\n const xAxisLabels: string[] = this._getOrderedXAxisLabels(barData, lineData);\n const datasetForBars = this._createDataset(barData, lineData);\n return {\n barLegends: Array.from(barLegends),\n lineLegends: Array.from(lineLegends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _onBarHover = (\n pointData: IGVBarChartSeriesPoint,\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 (this._calloutAnchorPoint !== pointData) {\n this._calloutAnchorPoint = pointData;\n this._showCallout(mouseEvent, pointData, groupData);\n }\n };\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({ isCalloutVisible: false });\n };\n\n private _onBarFocus = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n focusEvent: React.FocusEvent<SVGElement>,\n ): void => {\n this._showCallout(focusEvent.currentTarget, pointData, groupData);\n };\n\n private _redirectToUrl = (href: string | undefined): void => {\n href ? (window.location.href = href) : '';\n };\n\n private _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\n const barLabelsForGroup: JSXElement[] = [];\n\n // Get the actual legends present at this x-axis point\n const presentLegends = this._barLegends.filter(key => key in singleSet);\n const effectiveGroupWidth = calcRequiredWidth(this._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(this._isRtl ? [effectiveGroupWidth, 0] : [0, effectiveGroupWidth])\n .paddingInner(X1_INNER_PADDING);\n this._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() - this._barWidth) / 2;\n const isLegendActive = this._legendHighlighted(legendTitle) || this._noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(this.Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = this.Y_ORIGIN;\n\n barPoints.forEach((pointData: IGVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const gradientId = getId('GVBC_Gradient') + `_${singleSet.indexNum}_${legendIndex}_${pointIndex}`;\n if (this.props.enableGradient) {\n const startColor = pointData.gradient?.[0] || pointData.color;\n const endColor = pointData.gradient?.[1] || pointData.color;\n\n singleGroup.push(\n <defs key={`defs_${gradientId}`}>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"100%\" x2=\"0%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n </defs>,\n );\n }\n\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(this.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 >= this.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={this._classNames.opacityChangeOnHover}\n height={height}\n width={this._barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!this.props.hideTooltip && isLegendActive}\n opacity={barOpacity}\n fill={this.props.enableGradient ? `url(#${gradientId})` : pointColor}\n rx={this.props.roundCorners ? 3 : 0}\n onMouseOver={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseMove={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseOut={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, pointData, singleSet)}\n onBlur={this._onBarLeave}\n onClick={this.props.href ? this._redirectToUrl.bind(this, this.props.href!) : pointData.onClick}\n aria-label={this._getAriaLabel(pointData, singleSet.xAxisPoint)}\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 + this._barWidth / 2}\n y={pointData.data >= this.Y_ORIGIN ? yPoint - 6 : yPoint + height + 12}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {pointData.barLabel}\n </text>,\n );\n }\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !this.props.hideLabels && this._barWidth >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + this._barWidth / 2}\n y={barTotalValue >= this.Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {typeof this.props.yAxisTickFormat === 'function'\n ? this.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 private _createDataset = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n const linePointsByX: Record<string, IYValueHover[]> = {};\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 IYValueHover);\n });\n });\n\n barData.forEach((point: IGroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, IGVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\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 // 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 private _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range(\n this._isRtl\n ? [containerWidth! - this.margins.right! - this._domainMargin, this.margins.left! + this._domainMargin]\n : [this.margins.left! + this._domainMargin, containerWidth! - this.margins.right! - this._domainMargin],\n )\n .paddingInner(this._xAxisInnerPadding)\n .paddingOuter(this._xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(this._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(this._isRtl ? [this._groupWidth, 0] : [0, this._groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _onLegendHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (): JSXElement => {\n const actions: ILegend[] = [];\n\n const addLegendButton = (legendTitle: string, isLineLegendInBarChart?: boolean) => {\n const legend: ILegend = {\n title: legendTitle,\n color: this._legendColorMap[legendTitle][0],\n isLineLegendInBarChart,\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n\n actions.push(legend);\n };\n\n this._lineLegends.forEach(legendTitle => addLegendButton(legendTitle, true));\n this._barLegends.forEach(legendTitle => addLegendButton(legendTitle));\n\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n onChange={this._onLegendSelectionChange.bind(this)}\n ref={this._legendsRef}\n />\n );\n };\n\n private _onLegendSelectionChange(\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: ILegend,\n ): void {\n if (this.props.legendProps?.canSelectMultipleLegends) {\n this.setState({ selectedLegends });\n } else {\n this.setState({ selectedLegends: selectedLegends.slice(-1) });\n }\n if (this.props.legendProps?.onChange) {\n this.props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n private _getAxisData = (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n this._yMax = Math.max(domainValue[domainValue.length - 1], this.props.yMaxValue || 0);\n }\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return this._getHighlightedLegend().includes(legendTitle!);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this._getHighlightedLegend().length === 0;\n };\n\n private _getHighlightedLegend() {\n return this.state.selectedLegends.length > 0\n ? this.state.selectedLegends\n : this.state.activeLegend\n ? [this.state.activeLegend]\n : [];\n }\n\n private _getAriaLabel = (point: IGVBarChartSeriesPoint, 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 private _getDomainMargins = (containerWidth: number): IMargins => {\n this._domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth = calcTotalWidth(containerWidth, this.margins, MIN_DOMAIN_MARGIN);\n\n if (this._xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(this.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 this._domainMargin = 0;\n } else if (this.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 this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n const groupWidth = calcRequiredWidth(this._barWidth, this._barLegends.length, X1_INNER_PADDING);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = calcRequiredWidth(groupWidth, this._xAxisLabels.length, this._xAxisInnerPadding);\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (this.props.mode === 'plotly' && this._xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering groups at their maximum allowable width\n const groupBandwidth = calcBandwidth(totalWidth, this._xAxisLabels.length, this._xAxisInnerPadding);\n const barBandwidth = calcBandwidth(groupBandwidth, this._barLegends.length, X1_INNER_PADDING);\n const barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth, barBandwidth);\n const groupWidth = calcRequiredWidth(barWidth, this._barLegends.length, X1_INNER_PADDING);\n let reqWidth = calcRequiredWidth(groupWidth, this._xAxisLabels.length, this._xAxisInnerPadding);\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(this._xAxisLabels) + 20;\n reqWidth = (this._xAxisLabels.length - this._xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n this._domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ...this.margins,\n left: this.margins.left! + this._domainMargin,\n right: this.margins.right! + this._domainMargin,\n };\n };\n\n private _isChartEmpty(barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]): boolean {\n return !(\n (barData &&\n barData.length > 0 &&\n barData.filter((item: IGroupedVerticalBarChartData) => item.series.length).length > 0) ||\n (lineData && lineData.length > 0 && lineData.some(series => series.data.length > 0))\n );\n }\n\n private _adjustProps(): void {\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = this._legends.length * bar_width + (this._legends.length - 1) * space_between_bars\n this._xAxisInnerPadding = getScalePadding(\n this.props.xAxisInnerPadding,\n undefined,\n 2 / (2 + calcTotalBandUnits(this._barLegends.length, X1_INNER_PADDING)),\n );\n this._xAxisOuterPadding = getScalePadding(this.props.xAxisOuterPadding);\n }\n\n private _getChartTitle = (): string => {\n const { chartTitle } = this.props;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${this._barLegends.length} grouped bar series` +\n (this._lineLegends.length > 0 ? ` and ${this._lineLegends.length} line series. ` : '. ')\n );\n };\n\n // Lighten/Darken a color by a given percentage using d3-scale\n private _adjustColor = (color: string, percentage: number, lightenColor: boolean, isDarkTheme: boolean): string => {\n const targetColor = lightenColor ? (isDarkTheme ? '#000000' : '#ffffff') : isDarkTheme ? '#ffffff' : '#000000';\n const colorInterpolator = d3ScaleLinear<string>().domain([0, 1]).range([color, targetColor]);\n return rgb(colorInterpolator(percentage)).formatRgb();\n };\n\n private _prepareChartData = () => {\n let barData = this.props.data;\n let lineData: IGVBCLineSeries[] | undefined;\n\n if (Array.isArray(this.props.dataV2) && this.props.dataV2.length > 0) {\n ({ barData, lineData } = this._processDataV2(this.props.dataV2));\n }\n\n this._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 let startColor = seriesPoint.color\n ? seriesPoint.color\n : getNextColor(colorIndex, 0, this.props.theme?.isInverted);\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n if (seriesPoint.color) {\n // Generate gradient colors based on seriesPoint.color\n startColor = this._adjustColor(\n seriesPoint.color || endColor,\n 0.2,\n false,\n this.props.theme?.isInverted!,\n );\n endColor = this._adjustColor(\n seriesPoint.color || startColor,\n 0.2,\n true,\n this.props.theme?.isInverted!,\n );\n } else {\n const nextGradient = getNextGradient(colorIndex, 0, this.props.theme?.isInverted);\n startColor = seriesPoint.gradient?.[0] || nextGradient[0];\n endColor = seriesPoint.gradient?.[1] || nextGradient[1];\n }\n }\n const pointGradient: [string, string] = [startColor, endColor];\n if (!this._legendColorMap[seriesPoint.legend]) {\n this._legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? this._legendColorMap[seriesPoint.legend][0],\n ...(this.props.enableGradient ? { gradient: pointGradient } : {}),\n };\n }) ?? [],\n };\n }) ?? [],\n\n lineData:\n lineData?.map(series => {\n let color: string;\n if (typeof series.color === 'undefined') {\n color = getNextColor(colorIndex, 0, this.props.theme?.isInverted);\n } else {\n color = getColorFromToken(series.color, this.props.theme?.isInverted);\n }\n\n if (!this._legendColorMap[series.legend]) {\n this._legendColorMap[series.legend] = [color, color];\n }\n colorIndex += 1;\n\n return {\n ...series,\n color: this._legendColorMap[series.legend][0],\n };\n }) ?? [],\n };\n };\n\n private _getOrderedXAxisLabels = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\n if (this._xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(this._mapCategoryToValues(barData, lineData), this.props.xAxisCategoryOrder);\n };\n\n private _mapCategoryToValues = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\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 private _createLines = (\n lineData: IGVBCLineSeries[],\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 = this._legendHighlighted(series.legend) || this._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 ?? this.props.theme!.semanticColors.bodyBackground}\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 => this._onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={this._onBarLeave}\n />,\n );\n }\n\n const dotId = this._getDotId(seriesIdx, pointIdx);\n const { activeLinePoint } = this.state;\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={this.props.theme!.semanticColors.bodyBackground}\n stroke={series.color}\n strokeWidth={3}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => this._onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={this._onBarLeave}\n data-is-focusable={shouldHighlight}\n onFocus={e => this._onLineFocus(e, series, seriesIdx, pointIdx)}\n onBlur={this._onBarLeave}\n role=\"img\"\n aria-label={this._getAriaLabel(\n {\n xAxisCalloutData: point.xAxisCalloutData,\n legend: series.legend,\n yAxisCalloutData: point.yAxisCalloutData,\n data: point.y,\n callOutAccessibilityData: point.callOutAccessibilityData,\n } as IGVBarChartSeriesPoint,\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 private _onLineHover = (\n event: React.MouseEvent<SVGElement>,\n series: IGVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n scaleLineX: (x: string) => number,\n ) => {\n const pointerX = d3Pointer(event, this._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 this._showCalloutForLines(event, series, seriesIdx, closestPointIdx);\n };\n\n private _onLineFocus = (\n event: React.FocusEvent<SVGElement>,\n series: IGVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\n this._showCalloutForLines(event.currentTarget, series, seriesIdx, pointIdx);\n };\n\n private _showCalloutForLines = (\n target: React.MouseEvent<SVGElement> | SVGElement,\n series: IGVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\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 = this._datasetForBars.find(\n (singleSet: { xAxisPoint: string }) => singleSet.xAxisPoint === point.x,\n );\n\n this._showCallout(target, pointData, groupData, this._getDotId(seriesIdx, pointIdx));\n };\n\n private _showCallout = (\n target: React.MouseEvent<SVGElement> | SVGElement,\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n activeLinePoint = '',\n ) => {\n this.setState({\n refSelected: target,\n isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(pointData.legend),\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData ?? groupData.xAxisPoint,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries.filter(\n (item: IYValueHover) => this._noLegendHighlighted() || this._legendHighlighted(item.legend!),\n ),\n hoverXValue: pointData.xAxisCalloutData ?? groupData.xAxisPoint,\n activeLinePoint: this.props.isCalloutForStack ? groupData.xAxisPoint : activeLinePoint,\n });\n };\n\n private _getDotId = (seriesIdx: number, pointIdx: number) => {\n return this._uniqDotId + `-${seriesIdx}-${pointIdx}`;\n };\n\n private _processDataV2 = (dataV2: (IBarSeries<string, number> | ILineSeries<string, number>)[]) => {\n const barPointsByX: Record<string, IGroupedVerticalBarChartData> = {};\n const lineData: IGVBCLineSeries[] = [];\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"]}
|
|
1
|
+
{"version":3,"file":"GroupedVerticalBarChart.base.js","sourceRoot":"../src/","sources":["components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { pointer as d3Pointer } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear, scaleBand as d3ScaleBand, ScaleBand } from 'd3-scale';\nimport {\n classNamesFunction,\n getId,\n getRTL,\n initializeComponentRef,\n memoizeFunction,\n warnDeprecations,\n} from '@fluentui/react/lib/Utilities';\nimport { IProcessedStyleSet } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\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 getNextGradient,\n getNextColor,\n areArraysEqual,\n calculateLongestLabelWidth,\n YAxisType,\n sortAxisCategories,\n calcTotalWidth,\n calcBandwidth,\n calcTotalBandUnits,\n calcRequiredWidth,\n getColorFromToken,\n isSafeUrl,\n} from '../../utilities/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ILegend,\n IGroupedVerticalBarChartData,\n IGroupedVerticalBarChartProps,\n IGroupedVerticalBarChartStyleProps,\n IGroupedVerticalBarChartStyles,\n IGVBarChartSeriesPoint,\n IMargins,\n IBasestate,\n Legends,\n IChildProps,\n IYValueHover,\n} from '../../index';\nimport { IChart, IImageExportOptions, IBarSeries, ILineSeries } from '../../types/index';\nimport { exportChartsAsImage } from '../../utilities/image-export-utils';\nimport { ILegendContainer } from '../Legends/index';\nimport { rgb } from 'd3-color';\nimport type { JSXElement } from '@fluentui/utilities';\nimport { isInvalidValue } from '@fluentui/chart-utilities';\n\nconst COMPONENT_NAME = 'GROUPED VERTICAL BAR CHART';\nconst getClassNames = classNamesFunction<IGroupedVerticalBarChartStyleProps, IGroupedVerticalBarChartStyles>();\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 IGVDataPoint {\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 IGVSingleDataPoint {\n [key: string]: IGVDataPoint;\n}\n\ntype IGVBCLineSeries = ILineSeries<string, number>;\n\nexport interface IGroupedVerticalBarChartState extends IBasestate {\n dataPointCalloutProps?: IGVBarChartSeriesPoint;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n selectedLegends: string[];\n activeLinePoint: string;\n}\n\nexport class GroupedVerticalBarChartBase\n extends React.Component<IGroupedVerticalBarChartProps, IGroupedVerticalBarChartState>\n implements IChart\n{\n public static defaultProps: Partial<IGroupedVerticalBarChartProps> = {\n maxBarWidth: 24,\n xAxisCategoryOrder: 'default',\n };\n\n private _createSet: (\n barData: IGroupedVerticalBarChartData[],\n lineData: IGVBCLineSeries[],\n ) => // eslint-disable-next-line @typescript-eslint/no-explicit-any\n { barLegends: string[]; lineLegends: string[]; xAxisLabels: string[]; datasetForBars: any };\n private _barLegends: string[];\n private _lineLegends: string[];\n private _xAxisLabels: string[];\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _datasetForBars: any;\n private margins: IMargins;\n\n private _groupedVerticalBarGraph: JSXElement[];\n private _classNames: IProcessedStyleSet<IGroupedVerticalBarChartStyles>;\n private _yMax: number;\n private _calloutId: string;\n private _xAxisType: XAxisTypes;\n private _isRtl: boolean = getRTL();\n private _calloutAnchorPoint: IGVBarChartSeriesPoint | null;\n private _barWidth: number;\n private _domainMargin: number;\n private _emptyChartId: string;\n private _groupWidth: number;\n private _xAxisInnerPadding: number;\n private _xAxisOuterPadding: number;\n private _cartesianChartRef: React.RefObject<IChart | null>;\n private _legendsRef: React.RefObject<ILegendContainer | null>;\n private _legendColorMap: Record<string, [string, string]> = {};\n private readonly Y_ORIGIN: number = 0;\n private _rectRef: React.RefObject<SVGRectElement | null>;\n private _uniqDotId = getId('gvbc_dot_');\n\n public constructor(props: IGroupedVerticalBarChartProps) {\n super(props);\n\n initializeComponentRef(this);\n\n this._createSet = memoizeFunction((barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) =>\n this._createDataSetOfGVBC(barData, lineData),\n );\n this.state = {\n color: '',\n dataForHoverCard: 0,\n isCalloutVisible: false,\n refSelected: null,\n selectedLegends: props.legendProps?.selectedLegends || [],\n xCalloutValue: '',\n yCalloutValue: '',\n YValueHover: [],\n hoverXValue: '',\n calloutLegend: '',\n activeLegend: '',\n activeLinePoint: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n showYAxisGridLines: 'Dont use this property. Lines are drawn by default',\n showXAxisPath: 'Dont use this property. Axis line removed default.',\n showYAxisPath: 'Dont use this property. No need to display Y axis path. Handling default',\n showXAxisGridLines: 'Dont use this property. Handling with default value.',\n legendColor: 'Dont use this property. colour will pick from given data.',\n });\n this._calloutId = getId('callout');\n this._emptyChartId = getId('_GVBC_empty');\n this._domainMargin = MIN_DOMAIN_MARGIN;\n this._cartesianChartRef = React.createRef();\n this._legendsRef = React.createRef();\n this._rectRef = React.createRef();\n }\n\n public componentDidUpdate(prevProps: IGroupedVerticalBarChartProps): void {\n if (!areArraysEqual(prevProps.legendProps?.selectedLegends, this.props.legendProps?.selectedLegends)) {\n this.setState({\n selectedLegends: this.props.legendProps?.selectedLegends || [],\n });\n }\n }\n\n public render(): React.ReactNode {\n const { barData, lineData } = this._prepareChartData();\n const firstXValue = barData[0]?.name ?? lineData[0]?.data[0]?.x;\n this._xAxisType = isInvalidValue(firstXValue)\n ? XAxisTypes.StringAxis\n : (getTypeOfAxis(firstXValue, true) as XAxisTypes);\n const { barLegends, lineLegends, xAxisLabels, datasetForBars } = this._createSet(barData, lineData);\n this._barLegends = barLegends;\n this._lineLegends = lineLegends;\n this._xAxisLabels = xAxisLabels;\n this._datasetForBars = datasetForBars;\n\n const legendBars: JSXElement = this._getLegendData();\n this._adjustProps();\n\n // The maxOfYVal prop is only required for the primary y-axis, so yMax should be calculated\n // using only the data points associated with the primary y-axis.\n\n const yMax = this._getMinMaxOfYAxis(this._datasetForBars).endValue;\n this._yMax = Math.max(yMax, this.props.yMaxValue || 0);\n this._classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n href: this.props.href!,\n });\n const calloutProps = {\n target: this.state.refSelected,\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n gapSpace: 15,\n isBeakVisible: false,\n setInitialFocus: true,\n color: this.state.color,\n Legend: this.state.calloutLegend,\n XValue: this.state.xCalloutValue,\n YValue: this.state.yCalloutValue ? this.state.yCalloutValue : this.state.dataForHoverCard,\n YValueHover: this.state.YValueHover,\n hoverXValue: this.state.hoverXValue,\n onDismiss: this._closeCallout,\n ...this.props.calloutProps,\n preventDismissOnLostFocus: true,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData, 'text', false),\n };\n const tickParams = {\n tickValues: this.props.tickValues!,\n tickFormat: this.props.tickFormat!,\n };\n\n return !this._isChartEmpty(barData, lineData) ? (\n <CartesianChart\n {...this.props}\n chartTitle={this._getChartTitle()}\n points={this._datasetForBars}\n chartType={ChartTypes.GroupedVerticalBarChart}\n calloutProps={calloutProps}\n legendBars={legendBars}\n xAxisType={this._xAxisType}\n createYAxis={createNumericYAxis}\n datasetForXAxisDomain={this._xAxisLabels}\n tickParams={tickParams}\n getDomainNRangeValues={this._getDomainNRangeValues}\n getMinMaxOfYAxis={this._getMinMaxOfYAxis}\n createStringYAxis={createStringYAxis}\n tickPadding={this.props.tickPadding || 5}\n maxOfYVal={this._yMax}\n svgFocusZoneProps={{\n direction: FocusZoneDirection.horizontal,\n }}\n customizedCallout={this._getCustomizedCallout()}\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n onChartMouseLeave={this._handleChartMouseLeave}\n getDomainMargins={this._getDomainMargins}\n {...(this._xAxisType === XAxisTypes.StringAxis && {\n xAxisInnerPadding: this._xAxisInnerPadding,\n xAxisOuterPadding: this._xAxisOuterPadding,\n })}\n barwidth={this._barWidth}\n ref={this._cartesianChartRef}\n /* eslint-disable react/jsx-no-bind */\n children={(props: IChildProps) => {\n return (\n <>\n <rect\n ref={this._rectRef}\n width=\"100%\"\n height=\"100%\"\n fill=\"transparent\"\n style={{ pointerEvents: 'none' }}\n />\n <g>{this._groupedVerticalBarGraph}</g>\n {this._createLines(lineData, props.xScale, props.yScalePrimary, props.yScaleSecondary)}\n </>\n );\n }}\n />\n ) : (\n <div\n id={this._emptyChartId}\n role={'alert'}\n style={{ opacity: '0' }}\n aria-label={'Graph has no data to display'}\n />\n );\n }\n\n public get chartContainer(): HTMLElement | null {\n return this._cartesianChartRef.current?.chartContainer || null;\n }\n\n public toImage = (opts?: IImageExportOptions): Promise<string> => {\n return exportChartsAsImage(\n [{ container: this._cartesianChartRef.current?.chartContainer }],\n this.props.hideLegend ? undefined : this._legendsRef.current?.toSVG,\n this._isRtl,\n opts,\n );\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _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: IGVBarChartSeriesPoint) => {\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 private _getDomainNRangeValues = (\n points: IGroupedVerticalBarChartData[],\n margins: IMargins,\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 private _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 = this._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 this._barWidth = getBarWidth(\n this.props.barwidth,\n this.props.maxBarWidth,\n calcBandwidth(xScale0.bandwidth(), this._barLegends.length, X1_INNER_PADDING),\n );\n this._groupWidth = calcRequiredWidth(this._barWidth, this._barLegends.length, X1_INNER_PADDING);\n\n const xScale1 = this._createX1Scale();\n\n const allGroupsBars: JSXElement[] = [];\n this._datasetForBars.forEach((singleSet: IGVSingleDataPoint) => {\n allGroupsBars.push(\n this._buildGraph(singleSet, xScale0, xScale1, yScalePrimary, yScaleSecondary, containerHeight, xElement!),\n );\n });\n this._groupedVerticalBarGraph = allGroupsBars;\n };\n\n private _getMargins = (margins: IMargins) => (this.margins = margins);\n\n private _createDataSetOfGVBC = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\n const barLegends = new Set<string>();\n barData.forEach((point: IGroupedVerticalBarChartData) => {\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\n barLegends.add(seriesPoint.legend);\n });\n });\n const lineLegends = new Set<string>(lineData.map(series => series.legend));\n const xAxisLabels: string[] = this._getOrderedXAxisLabels(barData, lineData);\n const datasetForBars = this._createDataset(barData, lineData);\n return {\n barLegends: Array.from(barLegends),\n lineLegends: Array.from(lineLegends),\n xAxisLabels,\n datasetForBars,\n };\n };\n\n private _getCustomizedCallout = () => {\n return this.props.onRenderCalloutPerDataPoint\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps)\n : null;\n };\n\n private _onBarHover = (\n pointData: IGVBarChartSeriesPoint,\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 (this._calloutAnchorPoint !== pointData) {\n this._calloutAnchorPoint = pointData;\n this._showCallout(mouseEvent, pointData, groupData);\n }\n };\n\n private _onBarLeave = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({ isCalloutVisible: false });\n };\n\n private _onBarFocus = (\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n focusEvent: React.FocusEvent<SVGElement>,\n ): void => {\n this._showCallout(focusEvent.currentTarget, pointData, groupData);\n };\n\n private _redirectToUrl = (href: string | undefined): void => {\n if (href && isSafeUrl(href)) {\n window.location.href = href;\n }\n };\n\n private _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\n const barLabelsForGroup: JSXElement[] = [];\n\n // Get the actual legends present at this x-axis point\n const presentLegends = this._barLegends.filter(key => key in singleSet);\n const effectiveGroupWidth = calcRequiredWidth(this._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(this._isRtl ? [effectiveGroupWidth, 0] : [0, effectiveGroupWidth])\n .paddingInner(X1_INNER_PADDING);\n this._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() - this._barWidth) / 2;\n const isLegendActive = this._legendHighlighted(legendTitle) || this._noLegendHighlighted();\n const barOpacity = isLegendActive ? '' : '0.1';\n\n let barTotalValue = 0;\n const yBaseline = yBarScale(this.Y_ORIGIN);\n let yPositiveStart = yBaseline;\n let yNegativeStart = yBaseline;\n let yPoint = this.Y_ORIGIN;\n\n barPoints.forEach((pointData: IGVBarChartSeriesPoint, pointIndex: number) => {\n if (!pointData.data) {\n // Not rendering data with 0.\n return;\n }\n const gradientId = getId('GVBC_Gradient') + `_${singleSet.indexNum}_${legendIndex}_${pointIndex}`;\n if (this.props.enableGradient) {\n const startColor = pointData.gradient?.[0] || pointData.color;\n const endColor = pointData.gradient?.[1] || pointData.color;\n\n singleGroup.push(\n <defs key={`defs_${gradientId}`}>\n <linearGradient id={gradientId} x1=\"0%\" y1=\"100%\" x2=\"0%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={startColor} />\n <stop offset=\"100%\" stopColor={endColor} />\n </linearGradient>\n </defs>,\n );\n }\n\n const barGap = (VERTICAL_BAR_GAP / 2) * (pointIndex > 0 ? 2 : 0);\n const height = Math.max(yBarScale(this.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 >= this.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={this._classNames.opacityChangeOnHover}\n height={height}\n width={this._barWidth}\n x={xPoint}\n y={yPoint}\n data-is-focusable={!this.props.hideTooltip && isLegendActive}\n opacity={barOpacity}\n fill={this.props.enableGradient ? `url(#${gradientId})` : pointColor}\n rx={this.props.roundCorners ? 3 : 0}\n onMouseOver={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseMove={this._onBarHover.bind(this, pointData, singleSet)}\n onMouseOut={this._onBarLeave}\n onFocus={this._onBarFocus.bind(this, pointData, singleSet)}\n onBlur={this._onBarLeave}\n onClick={this.props.href ? this._redirectToUrl.bind(this, this.props.href!) : pointData.onClick}\n aria-label={this._getAriaLabel(pointData, singleSet.xAxisPoint)}\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 + this._barWidth / 2}\n y={pointData.data >= this.Y_ORIGIN ? yPoint - 6 : yPoint + height + 12}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {pointData.barLabel}\n </text>,\n );\n }\n\n barTotalValue += pointData.data;\n });\n if (barTotalValue !== null && !this.props.hideLabels && this._barWidth >= 16 && isLegendActive) {\n barLabelsForGroup.push(\n <text\n key={`${singleSet.indexNum}-${legendIndex}`}\n x={xPoint + this._barWidth / 2}\n y={barTotalValue >= this.Y_ORIGIN ? yPositiveStart - 6 : yNegativeStart + 12}\n textAnchor=\"middle\"\n className={this._classNames.barLabel}\n aria-hidden={true}\n >\n {typeof this.props.yAxisTickFormat === 'function'\n ? this.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 private _createDataset = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const datasetForBars: any = [];\n\n const linePointsByX: Record<string, IYValueHover[]> = {};\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 IYValueHover);\n });\n });\n\n barData.forEach((point: IGroupedVerticalBarChartData, index: number) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const singleDatasetPointForBars: any = {};\n const legendToBarPoint: Record<string, IGVBarChartSeriesPoint> = {};\n\n point.series.forEach((seriesPoint: IGVBarChartSeriesPoint) => {\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 // 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 private _createX0Scale = (containerWidth: number) => {\n const x0Axis = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range(\n this._isRtl\n ? [containerWidth! - this.margins.right! - this._domainMargin, this.margins.left! + this._domainMargin]\n : [this.margins.left! + this._domainMargin, containerWidth! - this.margins.right! - this._domainMargin],\n )\n .paddingInner(this._xAxisInnerPadding)\n .paddingOuter(this._xAxisOuterPadding);\n return x0Axis;\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _createX1Scale = (): any => {\n return (\n d3ScaleBand()\n .domain(this._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(this._isRtl ? [this._groupWidth, 0] : [0, this._groupWidth])\n .paddingInner(X1_INNER_PADDING)\n );\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\n });\n };\n\n private _onLegendHover(legendTitle: string): void {\n this.setState({\n activeLegend: legendTitle,\n });\n }\n\n private _onLegendLeave(): void {\n this.setState({\n activeLegend: '',\n });\n }\n\n private _getLegendData = (): JSXElement => {\n const actions: ILegend[] = [];\n\n const addLegendButton = (legendTitle: string, isLineLegendInBarChart?: boolean) => {\n const legend: ILegend = {\n title: legendTitle,\n color: this._legendColorMap[legendTitle][0],\n isLineLegendInBarChart,\n hoverAction: () => {\n this._handleChartMouseLeave();\n this._onLegendHover(legendTitle);\n },\n onMouseOutAction: () => {\n this._onLegendLeave();\n },\n };\n\n actions.push(legend);\n };\n\n this._lineLegends.forEach(legendTitle => addLegendButton(legendTitle, true));\n this._barLegends.forEach(legendTitle => addLegendButton(legendTitle));\n\n return (\n <Legends\n legends={actions}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n {...this.props.legendProps}\n onChange={this._onLegendSelectionChange.bind(this)}\n ref={this._legendsRef}\n />\n );\n };\n\n private _onLegendSelectionChange(\n selectedLegends: string[],\n event: React.MouseEvent<HTMLButtonElement>,\n currentLegend?: ILegend,\n ): void {\n if (this.props.legendProps?.canSelectMultipleLegends) {\n this.setState({ selectedLegends });\n } else {\n this.setState({ selectedLegends: selectedLegends.slice(-1) });\n }\n if (this.props.legendProps?.onChange) {\n this.props.legendProps.onChange(selectedLegends, event, currentLegend);\n }\n }\n\n private _getAxisData = (yAxisData: IAxisData) => {\n if (yAxisData && yAxisData.yAxisDomainValues.length) {\n const { yAxisDomainValues: domainValue } = yAxisData;\n this._yMax = Math.max(domainValue[domainValue.length - 1], this.props.yMaxValue || 0);\n }\n };\n\n /**\n * This function checks if the given legend is highlighted or not.\n * A legend can be highlighted in 2 ways:\n * 1. selection: if the user clicks on it\n * 2. hovering: if there is no selected legend and the user hovers over it\n */\n private _legendHighlighted = (legendTitle: string) => {\n return this._getHighlightedLegend().includes(legendTitle!);\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this._getHighlightedLegend().length === 0;\n };\n\n private _getHighlightedLegend() {\n return this.state.selectedLegends.length > 0\n ? this.state.selectedLegends\n : this.state.activeLegend\n ? [this.state.activeLegend]\n : [];\n }\n\n private _getAriaLabel = (point: IGVBarChartSeriesPoint, 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 private _getDomainMargins = (containerWidth: number): IMargins => {\n this._domainMargin = MIN_DOMAIN_MARGIN;\n\n /** Total width available to render the bars */\n const totalWidth = calcTotalWidth(containerWidth, this.margins, MIN_DOMAIN_MARGIN);\n\n if (this._xAxisType === XAxisTypes.StringAxis) {\n if (isScalePaddingDefined(this.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 this._domainMargin = 0;\n } else if (this.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 this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n const groupWidth = calcRequiredWidth(this._barWidth, this._barLegends.length, X1_INNER_PADDING);\n /** Total width required to render the groups. Directly proportional to group width */\n const reqWidth = calcRequiredWidth(groupWidth, this._xAxisLabels.length, this._xAxisInnerPadding);\n\n if (totalWidth >= reqWidth) {\n // Center align the chart by setting equal left and right margins for domain\n this._domainMargin = MIN_DOMAIN_MARGIN + (totalWidth - reqWidth) / 2;\n }\n } else if (this.props.mode === 'plotly' && this._xAxisLabels.length > 1) {\n // Calculate the remaining width after rendering groups at their maximum allowable width\n const groupBandwidth = calcBandwidth(totalWidth, this._xAxisLabels.length, this._xAxisInnerPadding);\n const barBandwidth = calcBandwidth(groupBandwidth, this._barLegends.length, X1_INNER_PADDING);\n const barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth, barBandwidth);\n const groupWidth = calcRequiredWidth(barWidth, this._barLegends.length, X1_INNER_PADDING);\n let reqWidth = calcRequiredWidth(groupWidth, this._xAxisLabels.length, this._xAxisInnerPadding);\n const margin1 = (totalWidth - reqWidth) / 2;\n\n // Calculate the remaining width after accounting for the space required to render x-axis labels\n const step = calculateLongestLabelWidth(this._xAxisLabels) + 20;\n reqWidth = (this._xAxisLabels.length - this._xAxisInnerPadding) * step;\n const margin2 = (totalWidth - reqWidth) / 2;\n\n this._domainMargin = MIN_DOMAIN_MARGIN + Math.max(0, Math.min(margin1, margin2));\n }\n }\n\n return {\n ...this.margins,\n left: this.margins.left! + this._domainMargin,\n right: this.margins.right! + this._domainMargin,\n };\n };\n\n private _isChartEmpty(barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]): boolean {\n return !(\n (barData &&\n barData.length > 0 &&\n barData.filter((item: IGroupedVerticalBarChartData) => item.series.length).length > 0) ||\n (lineData && lineData.length > 0 && lineData.some(series => series.data.length > 0))\n );\n }\n\n private _adjustProps(): void {\n this._barWidth = getBarWidth(this.props.barwidth, this.props.maxBarWidth);\n // x0_inner_padding = space_between_groups / (space_between_groups + group_width)\n // space_between_groups = 2 * bar_width\n // group_width = this._legends.length * bar_width + (this._legends.length - 1) * space_between_bars\n this._xAxisInnerPadding = getScalePadding(\n this.props.xAxisInnerPadding,\n undefined,\n 2 / (2 + calcTotalBandUnits(this._barLegends.length, X1_INNER_PADDING)),\n );\n this._xAxisOuterPadding = getScalePadding(this.props.xAxisOuterPadding);\n }\n\n private _getChartTitle = (): string => {\n const { chartTitle } = this.props;\n return (\n (chartTitle ? `${chartTitle}. ` : '') +\n `Vertical bar chart with ${this._barLegends.length} grouped bar series` +\n (this._lineLegends.length > 0 ? ` and ${this._lineLegends.length} line series. ` : '. ')\n );\n };\n\n // Lighten/Darken a color by a given percentage using d3-scale\n private _adjustColor = (color: string, percentage: number, lightenColor: boolean, isDarkTheme: boolean): string => {\n const targetColor = lightenColor ? (isDarkTheme ? '#000000' : '#ffffff') : isDarkTheme ? '#ffffff' : '#000000';\n const colorInterpolator = d3ScaleLinear<string>().domain([0, 1]).range([color, targetColor]);\n return rgb(colorInterpolator(percentage)).formatRgb();\n };\n\n private _prepareChartData = () => {\n let barData = this.props.data;\n let lineData: IGVBCLineSeries[] | undefined;\n\n if (Array.isArray(this.props.dataV2) && this.props.dataV2.length > 0) {\n ({ barData, lineData } = this._processDataV2(this.props.dataV2));\n }\n\n this._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 let startColor = seriesPoint.color\n ? seriesPoint.color\n : getNextColor(colorIndex, 0, this.props.theme?.isInverted);\n let endColor = startColor;\n\n if (this.props.enableGradient) {\n if (seriesPoint.color) {\n // Generate gradient colors based on seriesPoint.color\n startColor = this._adjustColor(\n seriesPoint.color || endColor,\n 0.2,\n false,\n this.props.theme?.isInverted!,\n );\n endColor = this._adjustColor(\n seriesPoint.color || startColor,\n 0.2,\n true,\n this.props.theme?.isInverted!,\n );\n } else {\n const nextGradient = getNextGradient(colorIndex, 0, this.props.theme?.isInverted);\n startColor = seriesPoint.gradient?.[0] || nextGradient[0];\n endColor = seriesPoint.gradient?.[1] || nextGradient[1];\n }\n }\n const pointGradient: [string, string] = [startColor, endColor];\n if (!this._legendColorMap[seriesPoint.legend]) {\n this._legendColorMap[seriesPoint.legend] = [startColor, endColor];\n }\n colorIndex += 1;\n\n return {\n ...seriesPoint,\n color: seriesPoint.color ?? this._legendColorMap[seriesPoint.legend][0],\n ...(this.props.enableGradient ? { gradient: pointGradient } : {}),\n };\n }) ?? [],\n };\n }) ?? [],\n\n lineData:\n lineData?.map(series => {\n let color: string;\n if (typeof series.color === 'undefined') {\n color = getNextColor(colorIndex, 0, this.props.theme?.isInverted);\n } else {\n color = getColorFromToken(series.color, this.props.theme?.isInverted);\n }\n\n if (!this._legendColorMap[series.legend]) {\n this._legendColorMap[series.legend] = [color, color];\n }\n colorIndex += 1;\n\n return {\n ...series,\n color: this._legendColorMap[series.legend][0],\n };\n }) ?? [],\n };\n };\n\n private _getOrderedXAxisLabels = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\n if (this._xAxisType !== XAxisTypes.StringAxis) {\n return [];\n }\n\n return sortAxisCategories(this._mapCategoryToValues(barData, lineData), this.props.xAxisCategoryOrder);\n };\n\n private _mapCategoryToValues = (barData: IGroupedVerticalBarChartData[], lineData: IGVBCLineSeries[]) => {\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 private _createLines = (\n lineData: IGVBCLineSeries[],\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 = this._legendHighlighted(series.legend) || this._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 ?? this.props.theme!.semanticColors.bodyBackground}\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 => this._onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={this._onBarLeave}\n />,\n );\n }\n\n const dotId = this._getDotId(seriesIdx, pointIdx);\n const { activeLinePoint } = this.state;\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={this.props.theme!.semanticColors.bodyBackground}\n stroke={series.color}\n strokeWidth={3}\n opacity={shouldHighlight ? 1 : 0.1}\n onMouseOver={e => this._onLineHover(e, series, seriesIdx, pointIdx, scaleLineX)}\n onMouseLeave={this._onBarLeave}\n data-is-focusable={shouldHighlight}\n onFocus={e => this._onLineFocus(e, series, seriesIdx, pointIdx)}\n onBlur={this._onBarLeave}\n role=\"img\"\n aria-label={this._getAriaLabel(\n {\n xAxisCalloutData: point.xAxisCalloutData,\n legend: series.legend,\n yAxisCalloutData: point.yAxisCalloutData,\n data: point.y,\n callOutAccessibilityData: point.callOutAccessibilityData,\n } as IGVBarChartSeriesPoint,\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 private _onLineHover = (\n event: React.MouseEvent<SVGElement>,\n series: IGVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n scaleLineX: (x: string) => number,\n ) => {\n const pointerX = d3Pointer(event, this._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 this._showCalloutForLines(event, series, seriesIdx, closestPointIdx);\n };\n\n private _onLineFocus = (\n event: React.FocusEvent<SVGElement>,\n series: IGVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\n this._showCalloutForLines(event.currentTarget, series, seriesIdx, pointIdx);\n };\n\n private _showCalloutForLines = (\n target: React.MouseEvent<SVGElement> | SVGElement,\n series: IGVBCLineSeries,\n seriesIdx: number,\n pointIdx: number,\n ) => {\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 = this._datasetForBars.find(\n (singleSet: { xAxisPoint: string }) => singleSet.xAxisPoint === point.x,\n );\n\n this._showCallout(target, pointData, groupData, this._getDotId(seriesIdx, pointIdx));\n };\n\n private _showCallout = (\n target: React.MouseEvent<SVGElement> | SVGElement,\n pointData: IGVBarChartSeriesPoint,\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n groupData: any,\n activeLinePoint = '',\n ) => {\n this.setState({\n refSelected: target,\n isCalloutVisible: this._noLegendHighlighted() || this._legendHighlighted(pointData.legend),\n calloutLegend: pointData.legend,\n dataForHoverCard: pointData.data,\n color: pointData.color,\n xCalloutValue: pointData.xAxisCalloutData ?? groupData.xAxisPoint,\n yCalloutValue: pointData.yAxisCalloutData,\n dataPointCalloutProps: pointData,\n callOutAccessibilityData: this.props.isCalloutForStack\n ? groupData.stackCallOutAccessibilityData\n : pointData.callOutAccessibilityData,\n YValueHover: groupData.groupSeries.filter(\n (item: IYValueHover) => this._noLegendHighlighted() || this._legendHighlighted(item.legend!),\n ),\n hoverXValue: pointData.xAxisCalloutData ?? groupData.xAxisPoint,\n activeLinePoint: this.props.isCalloutForStack ? groupData.xAxisPoint : activeLinePoint,\n });\n };\n\n private _getDotId = (seriesIdx: number, pointIdx: number) => {\n return this._uniqDotId + `-${seriesIdx}-${pointIdx}`;\n };\n\n private _processDataV2 = (dataV2: (IBarSeries<string, number> | ILineSeries<string, number>)[]) => {\n const barPointsByX: Record<string, IGroupedVerticalBarChartData> = {};\n const lineData: IGVBCLineSeries[] = [];\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"]}
|
|
@@ -10,16 +10,18 @@ export interface ILegendOverflowData {
|
|
|
10
10
|
overflow?: ILegend[];
|
|
11
11
|
}
|
|
12
12
|
/**
|
|
13
|
-
* @public
|
|
14
13
|
* {@docCategory Legends}
|
|
14
|
+
*
|
|
15
|
+
* @public
|
|
15
16
|
*/
|
|
16
17
|
export interface ILegendSubComponentStyles {
|
|
17
18
|
hoverCardStyles: IStyleFunctionOrObject<IHoverCardStyleProps, IHoverCardStyles>;
|
|
18
19
|
}
|
|
19
20
|
/**
|
|
20
|
-
* @public
|
|
21
21
|
* Legends styles
|
|
22
22
|
* {@docCategory Legends}
|
|
23
|
+
*
|
|
24
|
+
* @public
|
|
23
25
|
*/
|
|
24
26
|
export interface ILegendsStyles {
|
|
25
27
|
/**
|
|
@@ -64,9 +66,10 @@ export interface ILegendsStyles {
|
|
|
64
66
|
subComponentStyles: ILegendSubComponentStyles;
|
|
65
67
|
}
|
|
66
68
|
/**
|
|
67
|
-
* @public
|
|
68
69
|
* ILegend interface
|
|
69
70
|
* {@docCategory Legends}
|
|
71
|
+
*
|
|
72
|
+
* @public
|
|
70
73
|
*/
|
|
71
74
|
export interface ILegend {
|
|
72
75
|
/**
|
|
@@ -108,9 +111,10 @@ export interface ILegend {
|
|
|
108
111
|
nativeButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;
|
|
109
112
|
}
|
|
110
113
|
/**
|
|
111
|
-
* @public
|
|
112
114
|
* Legend style properties
|
|
113
115
|
* {@docCategory Legends}
|
|
116
|
+
*
|
|
117
|
+
* @public
|
|
114
118
|
*/
|
|
115
119
|
export interface ILegendStyleProps {
|
|
116
120
|
theme?: ITheme;
|
|
@@ -123,9 +127,10 @@ export interface ILegendStyleProps {
|
|
|
123
127
|
isLineLegendInBarChart?: boolean;
|
|
124
128
|
}
|
|
125
129
|
/**
|
|
126
|
-
* @public
|
|
127
130
|
* Legend properties
|
|
128
131
|
* {@docCategory Legends}
|
|
132
|
+
*
|
|
133
|
+
* @public
|
|
129
134
|
*/
|
|
130
135
|
export interface ILegendsProps {
|
|
131
136
|
/**
|
|
@@ -240,11 +245,12 @@ export interface ILegendsProps {
|
|
|
240
245
|
ref?: IRefObject<ILegendContainer>;
|
|
241
246
|
}
|
|
242
247
|
/**
|
|
243
|
-
* @public
|
|
244
248
|
* The shape for the legend
|
|
245
249
|
* default: show the rect legend
|
|
246
250
|
* triangle: show the triangle legend
|
|
247
251
|
* {@docCategory Legends}
|
|
252
|
+
*
|
|
253
|
+
* @public
|
|
248
254
|
*/
|
|
249
255
|
export type LegendShape = 'default' | 'triangle' | keyof typeof Points | keyof typeof CustomPoints;
|
|
250
256
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Legends.types.js","sourceRoot":"../src/","sources":["components/Legends/Legends.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { IHoverCardStyleProps, IHoverCardStyles } from '@fluentui/react/lib/HoverCard';\nimport { IOverflowSetProps } from '@fluentui/react/lib/OverflowSet';\nimport { IFocusZoneProps } from '@fluentui/react-focus';\nimport { CustomPoints, Points } from '../../utilities/utilities';\n\nexport interface ILegendOverflowData {\n primary: ILegend[];\n\n overflow?: ILegend[];\n}\n\n/**\n * @
|
|
1
|
+
{"version":3,"file":"Legends.types.js","sourceRoot":"../src/","sources":["components/Legends/Legends.types.ts"],"names":[],"mappings":"","sourcesContent":["import * as React from 'react';\nimport { ITheme, IStyle } from '@fluentui/react/lib/Styling';\nimport { IRefObject, IStyleFunctionOrObject } from '@fluentui/react/lib/Utilities';\nimport { IHoverCardStyleProps, IHoverCardStyles } from '@fluentui/react/lib/HoverCard';\nimport { IOverflowSetProps } from '@fluentui/react/lib/OverflowSet';\nimport { IFocusZoneProps } from '@fluentui/react-focus';\nimport { CustomPoints, Points } from '../../utilities/utilities';\n\nexport interface ILegendOverflowData {\n primary: ILegend[];\n\n overflow?: ILegend[];\n}\n\n/**\n * {@docCategory Legends}\n *\n * @public\n */\nexport interface ILegendSubComponentStyles {\n hoverCardStyles: IStyleFunctionOrObject<IHoverCardStyleProps, IHoverCardStyles>;\n}\n\n/**\n * Legends styles\n * {@docCategory Legends}\n *\n * @public\n */\nexport interface ILegendsStyles {\n /**\n * Style set for the root of the legend component\n */\n root: IStyle;\n\n /**\n * Style set for Legend. This is a wrapping class for text of legend and the rectange box that represents a legend\n */\n legend: IStyle;\n\n /**\n * Style set for the rectangle that represents a legend\n */\n rect: IStyle;\n\n /**\n * styles set for the shape that represents a legend\n */\n shape: IStyle;\n\n /**\n * Style set for the triangle that represents a legend\n */\n triangle: IStyle;\n\n /**\n * Style for the legend text\n */\n text: IStyle;\n\n /**\n * Style for the legend text\n */\n hoverChange: IStyle;\n\n /**\n * Style for the text that indicates the no.of legends that are in hovercard due to lack of space\n */\n overflowIndicationTextStyle: IStyle;\n\n /**\n * Style for the overflow container\n */\n hoverCardRoot: IStyle;\n\n /**\n * sub component styles\n */\n subComponentStyles: ILegendSubComponentStyles;\n}\n\n/**\n * ILegend interface\n * {@docCategory Legends}\n *\n * @public\n */\nexport interface ILegend {\n /**\n * Defines the title of the legend\n */\n title: string;\n\n /**\n * Defines the function that is executed on clicking this legend\n */\n action?: VoidFunction;\n\n /**\n * Defines the function that is executed upon hovering over the legend\n */\n hoverAction?: VoidFunction;\n\n /**\n * Defines the function that is executed upon moving the mouse away from the legend\n */\n onMouseOutAction?: (isLegendFocused?: boolean) => void;\n\n /**\n * The color for the legend\n */\n color: string;\n\n /**\n * The opacity of the legend color\n */\n opacity?: number;\n\n /**\n * The shape for the legend\n */\n shape?: LegendShape;\n\n /**\n * Indicated whether or not to apply stripe pattern\n */\n stripePattern?: boolean;\n\n /**\n * Indicates if the legend belongs to a line in the Bar Chart\n */\n isLineLegendInBarChart?: boolean;\n\n /*\n * native button props for the legend button\n */\n nativeButtonProps?: React.ButtonHTMLAttributes<HTMLButtonElement>;\n}\n\n/**\n * Legend style properties\n * {@docCategory Legends}\n *\n * @public\n */\nexport interface ILegendStyleProps {\n theme?: ITheme;\n className?: string;\n colorOnSelectedState?: string;\n borderColor?: string;\n opacity?: number;\n overflow?: boolean;\n stripePattern?: boolean;\n isLineLegendInBarChart?: boolean;\n}\n\n/**\n * Legend properties\n * {@docCategory Legends}\n *\n * @public\n */\nexport interface ILegendsProps {\n /**\n * Prop that takes list of legends\n */\n legends: ILegend[];\n\n /**\n * Additional CSS class(es) to apply to the legneds component.\n */\n className?: string;\n\n /**\n * Theme (provided through customization.)\n */\n theme?: ITheme;\n\n /**\n * Call to provide customized styling that will layer on top of the variant rules.\n */\n styles?: IStyleFunctionOrObject<ILegendStyleProps, ILegendsStyles>;\n\n /**\n * This prop makes the legends component align itself to the center in the container it is sitting in\n */\n centerLegends?: boolean;\n\n /**\n * Enable the legends to wrap lines if there is not enough space to show all legends on a single line\n */\n enabledWrapLines?: boolean;\n\n /**\n * props for the overflow set component\n */\n overflowProps?: Partial<IOverflowSetProps>;\n\n /**\n * focus zone props in hover card\n */\n focusZonePropsInHoverCard?: IFocusZoneProps;\n\n /**\n * text for overflow legends string\n */\n overflowText?: string;\n\n /**\n * prop that decides if legends are focusable\n * @default true\n */\n allowFocusOnLegends?: boolean;\n\n /**\n * prop that decide if we can select multiple legends or single legend at a time\n * @default false\n */\n canSelectMultipleLegends?: boolean;\n\n /**\n * Defines the function that is executed upon hiding of hover card\n * make sure to send prop when the prop is canSelectMultipleLegends is set to true\n * and empty the selected state legends\n */\n onLegendHoverCardLeave?: VoidFunction;\n\n /**\n * Callback issued when the selected option changes.\n */\n onChange?: (selectedLegends: string[], event: React.MouseEvent<HTMLButtonElement>, currentLegend?: ILegend) => void;\n\n /**\n * Keys (title) that will be initially used to set selected items. This prop is used for multi-select scenarios when\n * canSelectMultipleLegends is true; for single-select, use defaultSelectedLegend.\n *\n * Updating this prop does not change the selection after the component has been initialized. For controlled\n * selections, use selectedLegends instead.\n *\n * @see selectedLegends for setting the selected legends in controlled mode.\n * @see defaultSelectedLegend for setting the initially selected legend when canSelectMultipleLegends is false.\n */\n defaultSelectedLegends?: string[];\n\n /**\n * Key that will be initially used to set selected item. This prop is used for single-select scenarios when\n * canSelectMultipleLegends is false or unspecified; for multi-select, use defaultSelectedLegends.\n *\n * Updating this prop does not change the selection after the component has been initialized. For controlled\n * selections, use selectedLegend instead.\n *\n * @see selectedLegend for setting the selected legend in controlled mode.\n * @see defaultSelectedLegends for setting the initially selected legends when canSelectMultipleLegends is true.\n */\n defaultSelectedLegend?: string;\n\n /**\n * Keys (title) that will be used to set selected items in multi-select scenarios when canSelectMultipleLegends is\n * true. For single-select, use selectedLegend.\n *\n * When this prop is provided, the component is controlled and does not automatically update the selection based on\n * user interactions; the parent component must update the value passed to this property by handling the onChange\n * event.\n *\n * @see defaultSelectedLegends for setting the initially-selected legends in uncontrolled mode.\n * @see selectedLegends for setting the selected legends when `canSelectMultipleLegends` is `true`.\n */\n selectedLegends?: string[];\n\n /**\n * Key (title) that will be used to set the selected item in single-select scenarios when canSelectMultipleLegends is\n * false or unspecified. For multi-select, use selectedLegends.\n *\n * When this prop is provided, the component is controlled and does not automatically update the selection based on\n * user interactions; the parent component must update the value passed to this property by handling the onChange\n * event.\n *\n * @see defaultSelectedLegend for setting the initially-selected legend in uncontrolled mode.\n * @see selectedLegend for setting the selected legend when `canSelectMultipleLegends` is `false`.\n */\n selectedLegend?: string;\n\n /**\n * The shape for the legend.\n */\n shape?: LegendShape;\n\n /**\n * Callback to access the public methods and properties of the component.\n */\n ref?: IRefObject<ILegendContainer>;\n}\n\n/**\n * The shape for the legend\n * default: show the rect legend\n * triangle: show the triangle legend\n * {@docCategory Legends}\n *\n * @public\n */\nexport type LegendShape = 'default' | 'triangle' | keyof typeof Points | keyof typeof CustomPoints;\n\n/**\n * {@docCategory Legends}\n */\nexport interface ILegendContainer {\n toSVG: (\n svgWidth: number,\n isRTL?: boolean,\n ) => {\n node: SVGSVGElement | null;\n width: number;\n height: number;\n };\n}\n"]}
|
|
@@ -413,7 +413,9 @@ define(["require", "exports", "tslib", "react", "@fluentui/react/lib/Utilities",
|
|
|
413
413
|
/**/
|
|
414
414
|
};
|
|
415
415
|
MultiStackedBarChartBase.prototype._redirectToUrl = function (href) {
|
|
416
|
-
href
|
|
416
|
+
if (href && (0, index_3.isSafeUrl)(href)) {
|
|
417
|
+
window.location.href = href;
|
|
418
|
+
}
|
|
417
419
|
};
|
|
418
420
|
MultiStackedBarChartBase.prototype._isChartEmpty = function () {
|
|
419
421
|
return !(this.props.data &&
|