@fluentui/react-charting 5.25.4 → 5.25.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (112) hide show
  1. package/CHANGELOG.json +48 -1
  2. package/CHANGELOG.md +15 -2
  3. package/dist/react-charting.d.ts +36 -0
  4. package/dist/react-charting.js +1 -1
  5. package/dist/react-charting.min.js +1 -1
  6. package/etc/react-charting.api.md +8 -0
  7. package/lib/components/CommonComponents/CartesianChart.base.js +1 -1
  8. package/lib/components/CommonComponents/CartesianChart.base.js.map +1 -1
  9. package/lib/components/CommonComponents/CartesianChart.types.d.ts +4 -0
  10. package/lib/components/CommonComponents/CartesianChart.types.js.map +1 -1
  11. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js +199 -61
  12. package/lib/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  13. package/lib/components/DonutChart/Pie/Pie.js +4 -2
  14. package/lib/components/DonutChart/Pie/Pie.js.map +1 -1
  15. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +4 -0
  16. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  17. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +2 -0
  18. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +55 -5
  19. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  20. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js +12 -1
  21. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js.map +1 -1
  22. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +9 -0
  23. package/lib/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  24. package/lib/components/LineChart/LineChart.base.js +1 -1
  25. package/lib/components/LineChart/LineChart.base.js.map +1 -1
  26. package/lib/components/SankeyChart/SankeyChart.base.js +1 -1
  27. package/lib/components/SankeyChart/SankeyChart.base.js.map +1 -1
  28. package/lib/components/ScatterChart/ScatterChart.base.js +13 -4
  29. package/lib/components/ScatterChart/ScatterChart.base.js.map +1 -1
  30. package/lib/components/ScatterChart/ScatterChart.types.d.ts +4 -0
  31. package/lib/components/ScatterChart/ScatterChart.types.js.map +1 -1
  32. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +11 -7
  33. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  34. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +18 -5
  35. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  36. package/lib/types/IDataPoint.d.ts +19 -0
  37. package/lib/types/IDataPoint.js.map +1 -1
  38. package/lib/utilities/utilities.d.ts +4 -2
  39. package/lib/utilities/utilities.js +22 -7
  40. package/lib/utilities/utilities.js.map +1 -1
  41. package/lib-amd/components/CommonComponents/CartesianChart.base.js +1 -1
  42. package/lib-amd/components/CommonComponents/CartesianChart.base.js.map +1 -1
  43. package/lib-amd/components/CommonComponents/CartesianChart.types.d.ts +4 -0
  44. package/lib-amd/components/CommonComponents/CartesianChart.types.js.map +1 -1
  45. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js +199 -61
  46. package/lib-amd/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  47. package/lib-amd/components/DonutChart/Pie/Pie.js +4 -2
  48. package/lib-amd/components/DonutChart/Pie/Pie.js.map +1 -1
  49. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +4 -0
  50. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  51. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +2 -0
  52. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +54 -4
  53. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  54. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js +12 -2
  55. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js.map +1 -1
  56. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +9 -0
  57. package/lib-amd/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  58. package/lib-amd/components/LineChart/LineChart.base.js +1 -1
  59. package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
  60. package/lib-amd/components/SankeyChart/SankeyChart.base.js +1 -1
  61. package/lib-amd/components/SankeyChart/SankeyChart.base.js.map +1 -1
  62. package/lib-amd/components/ScatterChart/ScatterChart.base.js +13 -4
  63. package/lib-amd/components/ScatterChart/ScatterChart.base.js.map +1 -1
  64. package/lib-amd/components/ScatterChart/ScatterChart.types.d.ts +4 -0
  65. package/lib-amd/components/ScatterChart/ScatterChart.types.js.map +1 -1
  66. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +11 -7
  67. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  68. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +18 -5
  69. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  70. package/lib-amd/types/IDataPoint.d.ts +19 -0
  71. package/lib-amd/types/IDataPoint.js.map +1 -1
  72. package/lib-amd/utilities/utilities.d.ts +4 -2
  73. package/lib-amd/utilities/utilities.js +22 -7
  74. package/lib-amd/utilities/utilities.js.map +1 -1
  75. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js +1 -1
  76. package/lib-commonjs/components/CommonComponents/CartesianChart.base.js.map +1 -1
  77. package/lib-commonjs/components/CommonComponents/CartesianChart.types.d.ts +4 -0
  78. package/lib-commonjs/components/CommonComponents/CartesianChart.types.js.map +1 -1
  79. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js +199 -61
  80. package/lib-commonjs/components/DeclarativeChart/PlotlySchemaAdapter.js.map +1 -1
  81. package/lib-commonjs/components/DonutChart/Pie/Pie.js +4 -2
  82. package/lib-commonjs/components/DonutChart/Pie/Pie.js.map +1 -1
  83. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +4 -0
  84. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  85. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.d.ts +2 -0
  86. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js +54 -4
  87. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.base.js.map +1 -1
  88. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js +12 -1
  89. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.styles.js.map +1 -1
  90. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.d.ts +9 -0
  91. package/lib-commonjs/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.js.map +1 -1
  92. package/lib-commonjs/components/LineChart/LineChart.base.js +1 -1
  93. package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
  94. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js +1 -1
  95. package/lib-commonjs/components/SankeyChart/SankeyChart.base.js.map +1 -1
  96. package/lib-commonjs/components/ScatterChart/ScatterChart.base.js +13 -4
  97. package/lib-commonjs/components/ScatterChart/ScatterChart.base.js.map +1 -1
  98. package/lib-commonjs/components/ScatterChart/ScatterChart.types.d.ts +4 -0
  99. package/lib-commonjs/components/ScatterChart/ScatterChart.types.js.map +1 -1
  100. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +11 -7
  101. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  102. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +18 -5
  103. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  104. package/lib-commonjs/types/IDataPoint.d.ts +19 -0
  105. package/lib-commonjs/types/IDataPoint.js.map +1 -1
  106. package/lib-commonjs/utilities/utilities.d.ts +4 -2
  107. package/lib-commonjs/utilities/utilities.js +22 -7
  108. package/lib-commonjs/utilities/utilities.js.map +1 -1
  109. package/package.json +1 -1
  110. package/src/components/CommonComponents/CartesianChart.types.ts +5 -0
  111. package/src/components/HorizontalBarChartWithAxis/HorizontalBarChartWithAxis.types.ts +11 -0
  112. package/src/components/ScatterChart/ScatterChart.types.ts +5 -0
@@ -45,8 +45,10 @@ var Pie = /** @class */ (function (_super) {
45
45
  Pie.prototype.render = function () {
46
46
  var _this = this;
47
47
  var _a = this.props, pie = _a.pie, data = _a.data;
48
- var focusData = this._pieForFocusRing(data);
49
- var piechart = pie(data);
48
+ // Filter out data points with value 0 to avoid gaps in the donut chart
49
+ var filteredData = data.filter(function (d) { return d.data !== 0; });
50
+ var focusData = this._pieForFocusRing(filteredData.map(function (d) { return d.data; }));
51
+ var piechart = pie(filteredData);
50
52
  var translate = "translate(".concat(this.props.width / 2, ", ").concat(this.props.height / 2, ")");
51
53
  var classNames = getClassNames(Pie_styles_1.getStyles, {
52
54
  theme: this.props.theme,
@@ -1 +1 @@
1
- {"version":3,"file":"Pie.js","sourceRoot":"../src/","sources":["components/DonutChart/Pie/Pie.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { pie as d3Pie } from 'd3-shape';\nimport { IPieProps, IPieStyleProps, IPieStyles } from './index';\nimport { Arc, IArcData } from '../Arc/index';\nimport { IChartDataPoint } from '../index';\nimport { classNamesFunction } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Pie.styles';\nimport { getNextGradient, wrapTextInsideDonut } from '../../../utilities/index';\nimport type { JSXElement } from '@fluentui/utilities';\n\nconst getClassNames = classNamesFunction<IPieStyleProps, IPieStyles>();\nconst TEXT_PADDING: number = 5;\n\nexport class Pie extends React.Component<IPieProps, {}> {\n public static defaultProps: Partial<IPieProps> = {\n pie: d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0.02),\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _pieForFocusRing: any;\n private _totalValue: number;\n\n constructor(props: IPieProps) {\n super(props);\n this._hoverCallback = this._hoverCallback.bind(this);\n this._pieForFocusRing = d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0);\n }\n\n public arcGenerator = (d: IArcData, i: number, focusData: IArcData, href?: string): JSXElement => {\n let color = d && d.data && d.data.color;\n let nextColor = color;\n\n if (this.props.enableGradient) {\n color = this.props.data[i].gradient?.[0] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[0];\n nextColor = this.props.data[i].gradient?.[1] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[1];\n }\n\n return (\n <Arc\n key={i}\n data={d}\n focusData={focusData}\n innerRadius={this.props.innerRadius}\n outerRadius={this.props.outerRadius}\n color={color!}\n nextColor={nextColor}\n enableGradient={this.props.enableGradient}\n roundCorners={this.props.roundCorners}\n onFocusCallback={this._focusCallback}\n hoverOnCallback={this._hoverCallback}\n onBlurCallback={this.props.onBlurCallback}\n hoverLeaveCallback={this.props.hoverLeaveCallback}\n uniqText={this.props.uniqText}\n activeArc={this.props.activeArc}\n href={href}\n calloutId={this.props.calloutId}\n valueInsideDonut={this.props.valueInsideDonut}\n theme={this.props.theme!}\n focusedArcId={this.props.focusedArcId}\n showLabelsInPercent={this.props.showLabelsInPercent}\n totalValue={this._totalValue}\n hideLabels={this.props.hideLabels}\n />\n );\n };\n\n public render(): JSXElement {\n const { pie, data } = this.props;\n const focusData = this._pieForFocusRing(data);\n const piechart = pie(data);\n const translate = `translate(${this.props.width / 2}, ${this.props.height / 2})`;\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n this._totalValue = this._computeTotalValue();\n\n return (\n <g transform={translate}>\n {piechart.map((d: IArcData, i: number) => this.arcGenerator(d, i, focusData[i], this.props.href))}\n {this.props.valueInsideDonut && (\n <text y={5} textAnchor=\"middle\" dominantBaseline=\"middle\" className={classNames.insideDonutString}>\n {this.props.valueInsideDonut}\n </text>\n )}\n </g>\n );\n }\n\n public componentDidUpdate(): void {\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n wrapTextInsideDonut(classNames.insideDonutString, this.props.innerRadius! * 2 - TEXT_PADDING);\n }\n\n private _focusCallback = (data: IChartDataPoint, id: string, e: SVGPathElement): void => {\n this.props.onFocusCallback!(data, id, e);\n };\n\n private _hoverCallback(data: IChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n this.props.hoverOnCallback!(data, e);\n }\n\n private _computeTotalValue = () => {\n let totalValue = 0;\n this.props.data.forEach((arc: IChartDataPoint) => {\n totalValue += arc.data!;\n });\n return totalValue;\n };\n}\n"]}
1
+ {"version":3,"file":"Pie.js","sourceRoot":"../src/","sources":["components/DonutChart/Pie/Pie.tsx"],"names":[],"mappings":"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","sourcesContent":["import * as React from 'react';\nimport { pie as d3Pie } from 'd3-shape';\nimport { IPieProps, IPieStyleProps, IPieStyles } from './index';\nimport { Arc, IArcData } from '../Arc/index';\nimport { IChartDataPoint } from '../index';\nimport { classNamesFunction } from '@fluentui/react/lib/Utilities';\nimport { getStyles } from './Pie.styles';\nimport { getNextGradient, wrapTextInsideDonut } from '../../../utilities/index';\nimport type { JSXElement } from '@fluentui/utilities';\n\nconst getClassNames = classNamesFunction<IPieStyleProps, IPieStyles>();\nconst TEXT_PADDING: number = 5;\n\nexport class Pie extends React.Component<IPieProps, {}> {\n public static defaultProps: Partial<IPieProps> = {\n pie: d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0.02),\n };\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private _pieForFocusRing: any;\n private _totalValue: number;\n\n constructor(props: IPieProps) {\n super(props);\n this._hoverCallback = this._hoverCallback.bind(this);\n this._pieForFocusRing = d3Pie()\n .sort(null)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n .value((d: any) => d.data)\n .padAngle(0);\n }\n\n public arcGenerator = (d: IArcData, i: number, focusData: IArcData, href?: string): JSXElement => {\n let color = d && d.data && d.data.color;\n let nextColor = color;\n\n if (this.props.enableGradient) {\n color = this.props.data[i].gradient?.[0] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[0];\n nextColor = this.props.data[i].gradient?.[1] ?? getNextGradient(i, 0, this.props.theme!.isInverted)[1];\n }\n\n return (\n <Arc\n key={i}\n data={d}\n focusData={focusData}\n innerRadius={this.props.innerRadius}\n outerRadius={this.props.outerRadius}\n color={color!}\n nextColor={nextColor}\n enableGradient={this.props.enableGradient}\n roundCorners={this.props.roundCorners}\n onFocusCallback={this._focusCallback}\n hoverOnCallback={this._hoverCallback}\n onBlurCallback={this.props.onBlurCallback}\n hoverLeaveCallback={this.props.hoverLeaveCallback}\n uniqText={this.props.uniqText}\n activeArc={this.props.activeArc}\n href={href}\n calloutId={this.props.calloutId}\n valueInsideDonut={this.props.valueInsideDonut}\n theme={this.props.theme!}\n focusedArcId={this.props.focusedArcId}\n showLabelsInPercent={this.props.showLabelsInPercent}\n totalValue={this._totalValue}\n hideLabels={this.props.hideLabels}\n />\n );\n };\n\n public render(): JSXElement {\n const { pie, data } = this.props;\n\n // Filter out data points with value 0 to avoid gaps in the donut chart\n const filteredData = data.filter((d: IChartDataPoint) => d.data !== 0);\n\n const focusData = this._pieForFocusRing(filteredData.map(d => d.data!));\n const piechart = pie(filteredData);\n const translate = `translate(${this.props.width / 2}, ${this.props.height / 2})`;\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n this._totalValue = this._computeTotalValue();\n\n return (\n <g transform={translate}>\n {piechart.map((d: IArcData, i: number) => this.arcGenerator(d, i, focusData[i], this.props.href))}\n {this.props.valueInsideDonut && (\n <text y={5} textAnchor=\"middle\" dominantBaseline=\"middle\" className={classNames.insideDonutString}>\n {this.props.valueInsideDonut}\n </text>\n )}\n </g>\n );\n }\n\n public componentDidUpdate(): void {\n const classNames = getClassNames(getStyles, {\n theme: this.props.theme!,\n });\n\n wrapTextInsideDonut(classNames.insideDonutString, this.props.innerRadius! * 2 - TEXT_PADDING);\n }\n\n private _focusCallback = (data: IChartDataPoint, id: string, e: SVGPathElement): void => {\n this.props.onFocusCallback!(data, id, e);\n };\n\n private _hoverCallback(data: IChartDataPoint, e: React.MouseEvent<SVGPathElement>): void {\n this.props.hoverOnCallback!(data, e);\n }\n\n private _computeTotalValue = () => {\n let totalValue = 0;\n this.props.data.forEach((arc: IChartDataPoint) => {\n totalValue += arc.data!;\n });\n return totalValue;\n };\n}\n"]}
@@ -174,6 +174,10 @@ var GroupedVerticalBarChartBase = /** @class */ (function (_super) {
174
174
  yNegativeStart_1 = yPoint_1 + height;
175
175
  }
176
176
  singleGroup.push(React.createElement("rect", { key: "".concat(singleSet.indexNum, "-").concat(legendIndex, "-").concat(pointIndex), className: _this._classNames.opacityChangeOnHover, height: height, width: _this._barWidth, x: xPoint_1, y: yPoint_1, "data-is-focusable": !_this.props.hideTooltip && isLegendActive_1, opacity: barOpacity_1, fill: _this.props.enableGradient ? "url(#".concat(gradientId, ")") : pointColor, rx: _this.props.roundCorners ? 3 : 0, onMouseOver: _this._onBarHover.bind(_this, pointData, singleSet), onMouseMove: _this._onBarHover.bind(_this, pointData, singleSet), onMouseOut: _this._onBarLeave, onFocus: _this._onBarFocus.bind(_this, pointData, singleSet), onBlur: _this._onBarLeave, onClick: _this.props.href ? _this._redirectToUrl.bind(_this, _this.props.href) : pointData.onClick, "aria-label": _this._getAriaLabel(pointData, singleSet.xAxisPoint), role: "img" }));
177
+ // Render individual bar label if provided
178
+ if (pointData.barLabel && isLegendActive_1) {
179
+ barLabelsForGroup.push(React.createElement("text", { key: "".concat(singleSet.indexNum, "-").concat(legendIndex, "-").concat(pointIndex, "-label"), x: xPoint_1 + _this._barWidth / 2, y: pointData.data >= _this.Y_ORIGIN ? yPoint_1 - 6 : yPoint_1 + height + 12, textAnchor: "middle", className: _this._classNames.barLabel, "aria-hidden": true }, pointData.barLabel));
180
+ }
177
181
  barTotalValue_1 += pointData.data;
178
182
  });
179
183
  if (barTotalValue_1 !== null && !_this.props.hideLabels && _this._barWidth >= 16 && isLegendActive_1) {
@@ -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 { select as d3Select, 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 tooltipOfAxislabels,\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 _tooltipId: 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._tooltipId = getId('GVBCTooltipId_');\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 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 // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n 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 { select as d3Select, 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 tooltipOfAxislabels,\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 _tooltipId: 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._tooltipId = getId('GVBCTooltipId_');\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 // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xScale0);\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n const tooltipProps = {\n tooltipCls: this._classNames.tooltip!,\n id: this._tooltipId,\n axis: xAxisElement,\n };\n xAxisElement && tooltipOfAxislabels(tooltipProps);\n }\n return (\n <g\n key={singleSet.indexNum}\n transform={`translate(${xScale0(singleSet.xAxisPoint) + (xScale0.bandwidth() - effectiveGroupWidth) / 2}, 0)`}\n >\n {singleGroup}\n {barLabelsForGroup}\n </g>\n );\n };\n\n 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"]}
@@ -59,6 +59,8 @@ export declare class HorizontalBarChartWithAxisBase extends React.Component<IHor
59
59
  private _handleChartMouseLeave;
60
60
  private _onBarFocus;
61
61
  private _getScales;
62
+ private _calculateBarTotals;
63
+ private _renderBarLabel;
62
64
  private _createNumericBars;
63
65
  private _getUniqueYValues;
64
66
  private _calculateAppropriateBarHeight;
@@ -209,6 +209,30 @@ var HorizontalBarChartWithAxisBase = /** @class */ (function (_super) {
209
209
  return { xBarScale: xBarScale, yBarScale: yBarScale };
210
210
  }
211
211
  };
212
+ _this._calculateBarTotals = function (singleBarData) {
213
+ var totalPositiveValue = singleBarData
214
+ .filter(function (point) { return point.x >= _this.X_ORIGIN; })
215
+ .reduce(function (sum, point) { return sum + point.x; }, 0);
216
+ var totalNegativeValue = singleBarData
217
+ .filter(function (point) { return point.x < _this.X_ORIGIN; })
218
+ .reduce(function (sum, point) { return sum + point.x; }, 0);
219
+ var totalBarValue = totalPositiveValue + totalNegativeValue;
220
+ var showLabelOnPositiveSide = totalBarValue >= 0;
221
+ var totalPositiveBars = singleBarData.filter(function (point) { return point.x >= _this.X_ORIGIN; }).length;
222
+ var totalNegativeBars = singleBarData.length - totalPositiveBars;
223
+ var shouldShowLabel = function (isPositiveBar, currPositiveCounter, currNegativeCounter) {
224
+ var isLastPositiveBar = isPositiveBar && currPositiveCounter === totalPositiveBars;
225
+ var isLastNegativeBar = !isPositiveBar && currNegativeCounter === totalNegativeBars;
226
+ return showLabelOnPositiveSide ? isLastPositiveBar : isLastNegativeBar;
227
+ };
228
+ return { totalPositiveValue: totalPositiveValue, totalNegativeValue: totalNegativeValue, totalBarValue: totalBarValue, showLabelOnPositiveSide: showLabelOnPositiveSide, shouldShowLabel: shouldShowLabel };
229
+ };
230
+ _this._renderBarLabel = function (xPosition, yPosition, value, isPositiveBar) {
231
+ if (_this.props.hideLabels || _this._barHeight < 16) {
232
+ return null;
233
+ }
234
+ return (React.createElement("text", { x: xPosition, y: yPosition + _this._barHeight / 2, textAnchor: _this._isRtl ? (isPositiveBar ? 'end' : 'start') : isPositiveBar ? 'start' : 'end', transform: "translate(".concat(isPositiveBar ? (_this._isRtl ? -4 : 4) : _this._isRtl ? 4 : -4, ")"), dominantBaseline: "central", className: _this._classNames.barLabel, "aria-hidden": true, style: { direction: 'ltr', unicodeBidi: 'isolate' } }, (0, index_1.formatScientificLimitWidth)(value)));
235
+ };
212
236
  _this._calculateAppropriateBarHeight = function (data, totalWidth, innerPadding) {
213
237
  var result = (0, vbc_utils_1.getClosestPairDiffAndRange)(data);
214
238
  if (!result || result[1] === 0) {
@@ -475,6 +499,7 @@ var HorizontalBarChartWithAxisBase = /** @class */ (function (_super) {
475
499
  var bValue = typeof b.y === 'number' ? b.y : parseFloat(b.y);
476
500
  return bValue - aValue;
477
501
  });
502
+ var _b = this._calculateBarTotals(singleBarData), totalBarValue = _b.totalBarValue, shouldShowLabel = _b.shouldShowLabel;
478
503
  var prevWidthPositive = 0;
479
504
  var prevWidthNegative = 0;
480
505
  var prevPoint = 0;
@@ -553,15 +578,27 @@ var HorizontalBarChartWithAxisBase = /** @class */ (function (_super) {
553
578
  else {
554
579
  xStart = point.x > _this.X_ORIGIN ? barStartX + prevWidthPositive : barStartX - prevWidthNegative;
555
580
  }
581
+ var barWidth = currentWidth - (_this._isRtl ? gapWidthRTL : gapWidthLTR);
582
+ var barEndX = _this._isRtl
583
+ ? point.x >= _this.X_ORIGIN
584
+ ? xStart
585
+ : xStart + barWidth
586
+ : point.x >= _this.X_ORIGIN
587
+ ? xStart + barWidth
588
+ : xStart;
589
+ var isPositiveBar = point.x >= _this.X_ORIGIN;
590
+ var showLabel = shouldShowLabel(isPositiveBar, currPositiveCounter, currNegativeCounter);
556
591
  prevPoint = point.x;
557
592
  return (React.createElement(React.Fragment, { key: "".concat(index, "_").concat(point.x) },
558
593
  _this.props.enableGradient && (React.createElement("defs", null,
559
594
  React.createElement("linearGradient", { id: gradientId },
560
595
  React.createElement("stop", { offset: "0", stopColor: startColor }),
561
596
  React.createElement("stop", { offset: "100%", stopColor: endColor })))),
562
- React.createElement("rect", { key: point.y, x: xStart, className: _this._classNames.opacityChangeOnHover, y: yBarScale(point.y) - _this._barHeight / 2, "data-is-focusable": shouldHighlight, width: currentWidth - (_this._isRtl ? gapWidthRTL : gapWidthLTR), height: _this._barHeight, ref: function (e) {
597
+ React.createElement("rect", { key: point.y, x: xStart, className: _this._classNames.opacityChangeOnHover, y: yBarScale(point.y) - _this._barHeight / 2, "data-is-focusable": shouldHighlight, width: barWidth, height: _this._barHeight, ref: function (e) {
563
598
  _this._refCallback(e, point.legend);
564
- }, rx: _this.props.roundCorners ? 3 : 0, onClick: point.onClick, onMouseOver: _this._onBarHover.bind(_this, point, startColor), "aria-label": _this._getAriaLabel(point), role: "img", "aria-labelledby": "toolTip".concat(_this._calloutId), onMouseLeave: _this._onBarLeave, onFocus: _this._onBarFocus.bind(_this, point, index, startColor), onBlur: _this._onBarLeave, fill: _this.props.enableGradient ? "url(#".concat(gradientId, ")") : startColor })));
599
+ }, rx: _this.props.roundCorners ? 3 : 0, onClick: point.onClick, onMouseOver: _this._onBarHover.bind(_this, point, startColor), "aria-label": _this._getAriaLabel(point), role: "img", "aria-labelledby": "toolTip".concat(_this._calloutId), onMouseLeave: _this._onBarLeave, onFocus: _this._onBarFocus.bind(_this, point, index, startColor), onBlur: _this._onBarLeave, fill: _this.props.enableGradient ? "url(#".concat(gradientId, ")") : startColor }),
600
+ showLabel &&
601
+ _this._renderBarLabel(barEndX, yBarScale(point.y) - _this._barHeight / 2, totalBarValue, isPositiveBar)));
565
602
  });
566
603
  return bars;
567
604
  };
@@ -581,6 +618,7 @@ var HorizontalBarChartWithAxisBase = /** @class */ (function (_super) {
581
618
  yBarScale) {
582
619
  var _this = this;
583
620
  var _a = this.props.useSingleColor, useSingleColor = _a === void 0 ? false : _a;
621
+ var _b = this._calculateBarTotals(singleBarData), totalBarValue = _b.totalBarValue, shouldShowLabel = _b.shouldShowLabel;
584
622
  var prevWidthPositive = 0;
585
623
  var prevWidthNegative = 0;
586
624
  var prevPoint = 0;
@@ -660,14 +698,26 @@ var HorizontalBarChartWithAxisBase = /** @class */ (function (_super) {
660
698
  else {
661
699
  xStart = point.x > _this.X_ORIGIN ? barStartX + prevWidthPositive : barStartX - prevWidthNegative;
662
700
  }
701
+ var barWidth = currentWidth - (_this._isRtl ? gapWidthRTL : gapWidthLTR);
702
+ var barEndX = _this._isRtl
703
+ ? point.x >= _this.X_ORIGIN
704
+ ? xStart
705
+ : xStart + barWidth
706
+ : point.x >= _this.X_ORIGIN
707
+ ? xStart + barWidth
708
+ : xStart;
709
+ var isPositiveBar = point.x >= _this.X_ORIGIN;
710
+ var yPosition = yBarScale(point.y) + 0.5 * (yBarScale.bandwidth() - _this._barHeight);
711
+ var showLabel = shouldShowLabel(isPositiveBar, currPositiveCounter, currNegativeCounter);
663
712
  return (React.createElement(React.Fragment, { key: "".concat(index, "_").concat(point.x) },
664
713
  _this.props.enableGradient && (React.createElement("defs", null,
665
714
  React.createElement("linearGradient", { id: gradientId },
666
715
  React.createElement("stop", { offset: "0", stopColor: startColor }),
667
716
  React.createElement("stop", { offset: "100%", stopColor: endColor })))),
668
- React.createElement("rect", { transform: "translate(0,".concat(0.5 * (yBarScale.bandwidth() - _this._barHeight), ")"), key: point.x, className: _this._classNames.opacityChangeOnHover, x: xStart, y: yBarScale(point.y), rx: _this.props.roundCorners ? 3 : 0, width: currentWidth - (_this._isRtl ? gapWidthRTL : gapWidthLTR), height: _this._barHeight, "aria-labelledby": "toolTip".concat(_this._calloutId), "aria-label": _this._getAriaLabel(point), role: "img", ref: function (e) {
717
+ React.createElement("rect", { transform: "translate(0,".concat(0.5 * (yBarScale.bandwidth() - _this._barHeight), ")"), key: point.x, className: _this._classNames.opacityChangeOnHover, x: xStart, y: yBarScale(point.y), rx: _this.props.roundCorners ? 3 : 0, width: barWidth, height: _this._barHeight, "aria-labelledby": "toolTip".concat(_this._calloutId), "aria-label": _this._getAriaLabel(point), role: "img", ref: function (e) {
669
718
  _this._refCallback(e, point.legend);
670
- }, onClick: point.onClick, onMouseOver: _this._onBarHover.bind(_this, point, startColor), onMouseLeave: _this._onBarLeave, onBlur: _this._onBarLeave, "data-is-focusable": shouldHighlight, onFocus: _this._onBarFocus.bind(_this, point, index, startColor), fill: _this.props.enableGradient ? "url(#".concat(gradientId, ")") : startColor })));
719
+ }, onClick: point.onClick, onMouseOver: _this._onBarHover.bind(_this, point, startColor), onMouseLeave: _this._onBarLeave, onBlur: _this._onBarLeave, "data-is-focusable": shouldHighlight, onFocus: _this._onBarFocus.bind(_this, point, index, startColor), fill: _this.props.enableGradient ? "url(#".concat(gradientId, ")") : startColor }),
720
+ showLabel && _this._renderBarLabel(barEndX, yPosition, totalBarValue, isPositiveBar)));
671
721
  });
672
722
  return bars;
673
723
  };