@fluentui/react-charting 5.14.10 → 5.14.12

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 (101) hide show
  1. package/CHANGELOG.json +43 -1
  2. package/CHANGELOG.md +22 -2
  3. package/dist/react-charting.js +1 -1
  4. package/dist/react-charting.min.js +1 -1
  5. package/lib/components/AreaChart/AreaChart.base.d.ts +11 -0
  6. package/lib/components/AreaChart/AreaChart.base.js +36 -40
  7. package/lib/components/AreaChart/AreaChart.base.js.map +1 -1
  8. package/lib/components/DonutChart/DonutChart.base.d.ts +7 -1
  9. package/lib/components/DonutChart/DonutChart.base.js +22 -27
  10. package/lib/components/DonutChart/DonutChart.base.js.map +1 -1
  11. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +11 -1
  12. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +38 -44
  13. package/lib/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  14. package/lib/components/HeatMapChart/HeatMapChart.base.d.ts +16 -15
  15. package/lib/components/HeatMapChart/HeatMapChart.base.js +39 -52
  16. package/lib/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  17. package/lib/components/Legends/Legends.base.d.ts +1 -4
  18. package/lib/components/Legends/Legends.base.js +42 -74
  19. package/lib/components/Legends/Legends.base.js.map +1 -1
  20. package/lib/components/LineChart/LineChart.base.d.ts +12 -1
  21. package/lib/components/LineChart/LineChart.base.js +25 -13
  22. package/lib/components/LineChart/LineChart.base.js.map +1 -1
  23. package/lib/components/StackedBarChart/MultiStackedBarChart.base.d.ts +13 -3
  24. package/lib/components/StackedBarChart/MultiStackedBarChart.base.js +38 -44
  25. package/lib/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  26. package/lib/components/StackedBarChart/StackedBarChart.base.d.ts +13 -3
  27. package/lib/components/StackedBarChart/StackedBarChart.base.js +37 -44
  28. package/lib/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  29. package/lib/components/VerticalBarChart/VerticalBarChart.base.d.ts +11 -1
  30. package/lib/components/VerticalBarChart/VerticalBarChart.base.js +40 -49
  31. package/lib/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  32. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +11 -1
  33. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +45 -56
  34. package/lib/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  35. package/lib/version.js +1 -1
  36. package/lib/version.js.map +1 -1
  37. package/lib-amd/components/AreaChart/AreaChart.base.d.ts +11 -0
  38. package/lib-amd/components/AreaChart/AreaChart.base.js +36 -40
  39. package/lib-amd/components/AreaChart/AreaChart.base.js.map +1 -1
  40. package/lib-amd/components/DonutChart/DonutChart.base.d.ts +7 -1
  41. package/lib-amd/components/DonutChart/DonutChart.base.js +22 -27
  42. package/lib-amd/components/DonutChart/DonutChart.base.js.map +1 -1
  43. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +11 -1
  44. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +38 -44
  45. package/lib-amd/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  46. package/lib-amd/components/HeatMapChart/HeatMapChart.base.d.ts +16 -15
  47. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js +39 -52
  48. package/lib-amd/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  49. package/lib-amd/components/Legends/Legends.base.d.ts +1 -4
  50. package/lib-amd/components/Legends/Legends.base.js +42 -74
  51. package/lib-amd/components/Legends/Legends.base.js.map +1 -1
  52. package/lib-amd/components/LineChart/LineChart.base.d.ts +12 -1
  53. package/lib-amd/components/LineChart/LineChart.base.js +25 -13
  54. package/lib-amd/components/LineChart/LineChart.base.js.map +1 -1
  55. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.d.ts +13 -3
  56. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js +38 -44
  57. package/lib-amd/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  58. package/lib-amd/components/StackedBarChart/StackedBarChart.base.d.ts +13 -3
  59. package/lib-amd/components/StackedBarChart/StackedBarChart.base.js +37 -44
  60. package/lib-amd/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  61. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.d.ts +11 -1
  62. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js +40 -49
  63. package/lib-amd/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  64. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +11 -1
  65. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +45 -56
  66. package/lib-amd/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  67. package/lib-amd/version.js +1 -1
  68. package/lib-amd/version.js.map +1 -1
  69. package/lib-commonjs/components/AreaChart/AreaChart.base.d.ts +11 -0
  70. package/lib-commonjs/components/AreaChart/AreaChart.base.js +36 -40
  71. package/lib-commonjs/components/AreaChart/AreaChart.base.js.map +1 -1
  72. package/lib-commonjs/components/DonutChart/DonutChart.base.d.ts +7 -1
  73. package/lib-commonjs/components/DonutChart/DonutChart.base.js +22 -27
  74. package/lib-commonjs/components/DonutChart/DonutChart.base.js.map +1 -1
  75. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.d.ts +11 -1
  76. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js +38 -44
  77. package/lib-commonjs/components/GroupedVerticalBarChart/GroupedVerticalBarChart.base.js.map +1 -1
  78. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.d.ts +16 -15
  79. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js +39 -52
  80. package/lib-commonjs/components/HeatMapChart/HeatMapChart.base.js.map +1 -1
  81. package/lib-commonjs/components/Legends/Legends.base.d.ts +1 -4
  82. package/lib-commonjs/components/Legends/Legends.base.js +42 -74
  83. package/lib-commonjs/components/Legends/Legends.base.js.map +1 -1
  84. package/lib-commonjs/components/LineChart/LineChart.base.d.ts +12 -1
  85. package/lib-commonjs/components/LineChart/LineChart.base.js +25 -13
  86. package/lib-commonjs/components/LineChart/LineChart.base.js.map +1 -1
  87. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.d.ts +13 -3
  88. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js +38 -44
  89. package/lib-commonjs/components/StackedBarChart/MultiStackedBarChart.base.js.map +1 -1
  90. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.d.ts +13 -3
  91. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js +37 -44
  92. package/lib-commonjs/components/StackedBarChart/StackedBarChart.base.js.map +1 -1
  93. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.d.ts +11 -1
  94. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js +40 -49
  95. package/lib-commonjs/components/VerticalBarChart/VerticalBarChart.base.js.map +1 -1
  96. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.d.ts +11 -1
  97. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js +45 -56
  98. package/lib-commonjs/components/VerticalStackedBarChart/VerticalStackedBarChart.base.js.map +1 -1
  99. package/lib-commonjs/version.js +1 -1
  100. package/lib-commonjs/version.js.map +1 -1
  101. package/package.json +3 -3
@@ -31,7 +31,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
31
31
  var _a = _this.props.isCalloutForStack, isCalloutForStack = _a === void 0 ? false : _a;
32
32
  var shouldFocusStackOnly = false;
33
33
  if (_isHavingLines) {
34
- if (_this.state.isLegendSelected) {
34
+ if (_this.state.selectedLegend !== '') {
35
35
  shouldFocusStackOnly = false;
36
36
  }
37
37
  else {
@@ -79,7 +79,6 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
79
79
  };
80
80
  _this._createLines = function (xScale, yScale, containerHeight, containerWidth) {
81
81
  var _a;
82
- var _b = _this.state, isLegendHovered = _b.isLegendHovered, isLegendSelected = _b.isLegendSelected, selectedLegendTitle = _b.selectedLegendTitle;
83
82
  var isNumeric = _this._xAxisType === index_3.XAxisTypes.NumericAxis;
84
83
  var xBarScale = _this._getScales(containerHeight, containerWidth, isNumeric).xBarScale;
85
84
  var lineObject = _this._getFormattedLineData(_this.props.data);
@@ -93,10 +92,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
93
92
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
93
  var xScaleBandwidthTranslate = isNumeric ? 0 : xBarScale.bandwidth() / 2;
95
94
  Object.keys(lineObject).forEach(function (item, index) {
96
- var shouldHighlight = true;
97
- if (isLegendHovered || isLegendSelected) {
98
- shouldHighlight = selectedLegendTitle === item; // item is legend name;
99
- }
95
+ var shouldHighlight = _this._legendHighlighted(item) || _this._noLegendHighlighted(); // item is legend name
100
96
  for (var i = 1; i < lineObject[item].length; i++) {
101
97
  var x1 = isNumeric
102
98
  ? xScale(lineObject[item][i - 1].xItem.xAxisPoint)
@@ -111,8 +107,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
111
107
  if (lineBorderWidth > 0) {
112
108
  borderForLines.push(React.createElement("line", { key: index + "-" + i + "-BorderLine", x1: x1, y1: y1, x2: x2, y2: y2, opacity: shouldHighlight ? 1 : 0.1, strokeWidth: 3 + lineBorderWidth * 2, fill: "transparent", strokeLinecap: "round", stroke: theme.palette.white, transform: "translate(" + xScaleBandwidthTranslate + ", 0)" }));
113
109
  }
114
- lines.push(React.createElement("line", tslib_1.__assign({ key: index + "-" + i + "-line", x1: x1, y1: y1, x2: x2, y2: y2, opacity: shouldHighlight ? 1 : 0.1, strokeWidth: 3, strokeLinecap: "round", stroke: lineObject[item][i].color, transform: "translate(" + xScaleBandwidthTranslate + ", 0)" }, (isLegendSelected &&
115
- selectedLegendTitle === item && {
110
+ lines.push(React.createElement("line", tslib_1.__assign({ key: index + "-" + i + "-line", x1: x1, y1: y1, x2: x2, y2: y2, opacity: shouldHighlight ? 1 : 0.1, strokeWidth: 3, strokeLinecap: "round", stroke: lineObject[item][i].color, transform: "translate(" + xScaleBandwidthTranslate + ", 0)" }, (_this.state.selectedLegend === item && {
116
111
  onMouseOver: _this._lineHover.bind(_this, lineObject[item][i - 1]),
117
112
  onMouseLeave: _this._lineHoverOut,
118
113
  }))));
@@ -123,10 +118,9 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
123
118
  dots.push(React.createElement("circle", tslib_1.__assign({ key: index + "-" + subIndex + "-dot", cx: isNumeric
124
119
  ? xScale(circlePoint.xItem.xAxisPoint)
125
120
  : // eslint-disable-next-line @typescript-eslint/no-explicit-any
126
- xBarScale(circlePoint.xItem.xAxisPoint) + _this._additionalSpace, cy: yScale(circlePoint.y), onMouseOver: isLegendSelected && selectedLegendTitle === item
121
+ xBarScale(circlePoint.xItem.xAxisPoint) + _this._additionalSpace, cy: yScale(circlePoint.y), onMouseOver: _this.state.selectedLegend === item
127
122
  ? _this._lineHover.bind(_this, circlePoint)
128
- : _this._onStackHover.bind(_this, circlePoint.xItem) }, (isLegendSelected &&
129
- selectedLegendTitle === item && {
123
+ : _this._onStackHover.bind(_this, circlePoint.xItem) }, (_this.state.selectedLegend === item && {
130
124
  onMouseLeave: _this._lineHoverOut,
131
125
  }), { r: _this._getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius, stroke: circlePoint.color, fill: _this.props.theme.palette.white, strokeWidth: 3, visibility: _this._getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility, transform: "translate(" + xScaleBandwidthTranslate + ", 0)" })));
132
126
  });
@@ -137,12 +131,12 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
137
131
  dots));
138
132
  };
139
133
  _this._getCircleVisibilityAndRadius = function (xAxispoint, legend) {
140
- var _a = _this.state, isLegendSelected = _a.isLegendSelected, activeXAxisDataPoint = _a.activeXAxisDataPoint, selectedLegendTitle = _a.selectedLegendTitle;
141
- if (isLegendSelected) {
142
- if (xAxispoint === activeXAxisDataPoint && legend === selectedLegendTitle) {
134
+ var _a = _this.state, selectedLegend = _a.selectedLegend, activeXAxisDataPoint = _a.activeXAxisDataPoint;
135
+ if (selectedLegend !== '') {
136
+ if (xAxispoint === activeXAxisDataPoint && selectedLegend === legend) {
143
137
  return { visibility: CircleVisbility.show, radius: 8 };
144
138
  }
145
- else if (legend === selectedLegendTitle) {
139
+ else if (selectedLegend === legend) {
146
140
  return { visibility: CircleVisbility.show, radius: 0.3 };
147
141
  }
148
142
  else {
@@ -221,10 +215,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
221
215
  var singleBar = barsToDisplay.map(function (point, index) {
222
216
  var color = point.color ? point.color : _this._colors[index];
223
217
  var ref = {};
224
- var shouldHighlight = true;
225
- if (_this.state.isLegendHovered || _this.state.isLegendSelected) {
226
- shouldHighlight = _this.state.selectedLegendTitle === point.legend;
227
- }
218
+ var shouldHighlight = _this._legendHighlighted(point.legend) || _this._noLegendHighlighted() ? true : false;
228
219
  var classNames = getClassNames(_this.props.styles, {
229
220
  theme: _this.props.theme,
230
221
  shouldHighlight: shouldHighlight,
@@ -349,11 +340,26 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
349
340
  _this._yMax = Math.max(domainValue[domainValue.length - 1], _this.props.yMaxValue || 0);
350
341
  }
351
342
  };
343
+ /**
344
+ * This function checks if the given legend is highlighted or not.
345
+ * A legend can be highlighted in 2 ways:
346
+ * 1. selection: if the user clicks on it
347
+ * 2. hovering: if there is no selected legend and the user hovers over it
348
+ */
349
+ _this._legendHighlighted = function (legendTitle) {
350
+ return (_this.state.selectedLegend === legendTitle ||
351
+ (_this.state.selectedLegend === '' && _this.state.activeLegend === legendTitle));
352
+ };
353
+ /**
354
+ * This function checks if none of the legends is selected or hovered.
355
+ */
356
+ _this._noLegendHighlighted = function () {
357
+ return _this.state.selectedLegend === '' && _this.state.activeLegend === '';
358
+ };
352
359
  _this.state = {
353
360
  isCalloutVisible: false,
354
- isLegendSelected: false,
355
- isLegendHovered: false,
356
- selectedLegendTitle: '',
361
+ selectedLegend: '',
362
+ activeLegend: '',
357
363
  refSelected: null,
358
364
  dataForHoverCard: 0,
359
365
  color: '',
@@ -437,43 +443,27 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
437
443
  VerticalStackedBarChartBase.prototype._renderCallout = function (props) {
438
444
  return props ? (React.createElement(index_2.ChartHoverCard, { XValue: props.xAxisCalloutData, Legend: props.legend, YValue: props.yAxisCalloutData, color: props.color, culture: this.props.culture })) : null;
439
445
  };
440
- VerticalStackedBarChartBase.prototype._onLegendClick = function (customMessage) {
441
- if (this.state.isLegendSelected) {
442
- if (this.state.selectedLegendTitle === customMessage) {
443
- this.setState({
444
- isLegendSelected: false,
445
- selectedLegendTitle: customMessage,
446
- });
447
- }
448
- else {
449
- this.setState({
450
- selectedLegendTitle: customMessage,
451
- });
452
- }
453
- }
454
- else {
446
+ VerticalStackedBarChartBase.prototype._onLegendClick = function (legendTitle) {
447
+ if (this.state.selectedLegend === legendTitle) {
455
448
  this.setState({
456
- isLegendSelected: true,
457
- selectedLegendTitle: customMessage,
449
+ selectedLegend: '',
458
450
  });
459
451
  }
460
- };
461
- VerticalStackedBarChartBase.prototype._onLegendHover = function (customMessage) {
462
- if (this.state.isLegendSelected === false) {
452
+ else {
463
453
  this.setState({
464
- isLegendHovered: true,
465
- selectedLegendTitle: customMessage,
454
+ selectedLegend: legendTitle,
466
455
  });
467
456
  }
468
457
  };
469
- VerticalStackedBarChartBase.prototype._onLegendLeave = function (isLegendFocused) {
470
- if (!!isLegendFocused || this.state.isLegendSelected === false) {
471
- this.setState({
472
- isLegendHovered: false,
473
- selectedLegendTitle: '',
474
- isLegendSelected: isLegendFocused ? false : this.state.isLegendSelected,
475
- });
476
- }
458
+ VerticalStackedBarChartBase.prototype._onLegendHover = function (legendTitle) {
459
+ this.setState({
460
+ activeLegend: legendTitle,
461
+ });
462
+ };
463
+ VerticalStackedBarChartBase.prototype._onLegendLeave = function () {
464
+ this.setState({
465
+ activeLegend: '',
466
+ });
477
467
  };
478
468
  VerticalStackedBarChartBase.prototype._getLegendData = function (data, palette, lineLegends) {
479
469
  var _this = this;
@@ -497,7 +487,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
497
487
  _this._onLegendClick(point.legend);
498
488
  },
499
489
  hoverAction: allowHoverOnLegend ? function () { return _this._onLegendHover(point.legend); } : undefined,
500
- onMouseOutAction: allowHoverOnLegend ? function (isLegendSelected) { return _this._onLegendLeave(isLegendSelected); } : undefined,
490
+ onMouseOutAction: allowHoverOnLegend ? function () { return _this._onLegendLeave(); } : undefined,
501
491
  };
502
492
  actions.push(legend);
503
493
  });
@@ -513,7 +503,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
513
503
  _this._onLegendClick(point.title);
514
504
  },
515
505
  hoverAction: allowHoverOnLegend ? function () { return _this._onLegendHover(point.title); } : undefined,
516
- onMouseOutAction: allowHoverOnLegend ? function (isLegendSelected) { return _this._onLegendLeave(isLegendSelected); } : undefined,
506
+ onMouseOutAction: allowHoverOnLegend ? function () { return _this._onLegendLeave(); } : undefined,
517
507
  };
518
508
  legendsOfLine.push(legend);
519
509
  });
@@ -534,8 +524,7 @@ define(["require", "exports", "tslib", "react", "d3-array", "d3-selection", "d3-
534
524
  * Show the callout if highlighted bar is focused/hovered
535
525
  * and Hide it if unhighlighted bar is focused/hovered
536
526
  */
537
- isCalloutVisible: this.state.isLegendSelected === false ||
538
- (this.state.isLegendSelected === true && this.state.selectedLegendTitle === point.legend),
527
+ isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,
539
528
  calloutLegend: point.legend,
540
529
  dataForHoverCard: point.data,
541
530
  color: color,
@@ -1 +1 @@
1
- {"version":3,"file":"VerticalStackedBarChart.base.js","sourceRoot":"../src/","sources":["components/VerticalStackedBarChart/VerticalStackedBarChart.base.tsx"],"names":[],"mappings":";;;;IAmCA,IAAM,aAAa,GAAG,8BAAkB,EAAsE,CAAC;IAG/G,IAAM,cAAc,GAAG,4BAA4B,CAAC;IAEpD,+EAA+E;IAC/E,+EAA+E;IAC/E,+EAA+E;IAC/E,IAAM,gBAAgB,GAAG,GAAG,CAAC;IAC7B,IAAM,SAAS,GAAG,CAAC,CAAC;IAYpB,IAAK,eAGJ;IAHD,WAAK,eAAe;QAClB,sCAAmB,CAAA;QACnB,kCAAe,CAAA;IACjB,CAAC,EAHI,eAAe,KAAf,eAAe,QAGnB;IAUD;QAAiD,uDAGhD;QAkBC,qCAAmB,KAAoC;YAAvD,YACE,kBAAM,KAAK,CAAC,SA0Bb;YAlCO,YAAM,GAAY,kBAAM,EAAE,CAAC;YAyHnC;;;;;;;eAOG;YACK,wBAAkB,GAAG,UAAC,cAAuB;gBAC3C,IAAA,KAA8B,KAAI,CAAC,KAAK,kBAAf,EAAzB,iBAAiB,mBAAG,KAAK,KAAA,CAAgB;gBACjD,IAAI,oBAAoB,GAAY,KAAK,CAAC;gBAC1C,IAAI,cAAc,EAAE;oBAClB,IAAI,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;wBAC/B,oBAAoB,GAAG,KAAK,CAAC;qBAC9B;yBAAM;wBACL,oBAAoB,GAAG,IAAI,CAAC;qBAC7B;iBACF;qBAAM;oBACL,oBAAoB,GAAG,iBAAiB,CAAC;iBAC1C;gBACD,OAAO,oBAAoB,CAAC;YAC9B,CAAC,CAAC;YAEM,2BAAqB,GAAG,UAAC,IAAkC;gBACjE,IAAM,SAAS,GAAgB,EAAE,CAAC;gBAClC,IAAM,iBAAiB,GAAe,EAAE,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,UAAC,IAAgC,EAAE,KAAa;oBAC3D,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACjB,gEAAgE;wBAChE,yEAAyE;wBACzE,iBAAiB;wBACjB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAA,IAAI;4BACxB,SAAS,CAAC,IAAI,uCACT,IAAI,KACP,KAAK,OAAA,EACL,KAAK,EAAE,IAAI,IACX,CAAC;wBACL,CAAC,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;gBACH,SAAS,CAAC,OAAO,CAAC,UAAA,IAAI;oBACpB,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;wBAClC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC3C;yBAAM;wBACL,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;qBACzC;gBACH,CAAC,CAAC,CAAC;gBACH,OAAO,iBAAiB,CAAC;YAC3B,CAAC,CAAC;YAEM,qBAAe,GAAG,UAAC,IAAkC;gBAC3D,IAAM,UAAU,GAAe,KAAI,CAAC,WAAW,CAAC;gBAChD,IAAM,WAAW,GAAkB,EAAE,CAAC;gBACtC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,IAAY;oBAC3C,WAAW,CAAC,IAAI,CAAC;wBACf,KAAK,EAAE,IAAI;wBACX,KAAK,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK;qBACjC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,OAAO,WAAW,CAAC;YACrB,CAAC,CAAC;YAEM,kBAAY,GAAG,UACrB,MAAoB,EACpB,MAAoB,EACpB,eAAuB,EACvB,cAAsB;;gBAEhB,IAAA,KAA6D,KAAI,CAAC,KAAK,EAArE,eAAe,qBAAA,EAAE,gBAAgB,sBAAA,EAAE,mBAAmB,yBAAe,CAAC;gBAC9E,IAAM,SAAS,GAAG,KAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,WAAW,CAAC;gBACrD,IAAA,SAAS,GAAK,KAAI,CAAC,UAAU,CAAC,eAAe,EAAE,cAAc,EAAE,SAAS,CAAC,UAAhE,CAAiE;gBAClF,IAAM,UAAU,GAAe,KAAI,CAAC,qBAAqB,CAAC,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC3E,IAAM,KAAK,GAAsB,EAAE,CAAC;gBACpC,IAAM,cAAc,GAAsB,EAAE,CAAC;gBAC7C,IAAM,IAAI,GAAsB,EAAE,CAAC;gBAC3B,IAAA,KAAK,GAAK,KAAI,CAAC,KAAK,MAAf,CAAgB;gBAC7B,IAAM,eAAe,GAAG,CAAA,MAAA,KAAI,CAAC,KAAK,CAAC,WAAW,0CAAE,eAAe;oBAC7D,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,KAAI,CAAC,KAAK,CAAC,WAAY,CAAC,eAAgB,CAAC,QAAQ,EAAE,CAAC;oBACxE,CAAC,CAAC,CAAC,CAAC;gBACN,8DAA8D;gBAC9D,IAAM,wBAAwB,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAE,SAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBACpF,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,IAAY,EAAE,KAAa;oBAC1D,IAAI,eAAe,GAAG,IAAI,CAAC;oBAC3B,IAAI,eAAe,IAAI,gBAAgB,EAAE;wBACvC,eAAe,GAAG,mBAAmB,KAAK,IAAI,CAAC,CAAC,uBAAuB;qBACxE;oBACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBAChD,IAAM,EAAE,GAAG,SAAS;4BAClB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAoB,CAAC;4BAC5D,CAAC,CAAC,8DAA8D;gCAC7D,SAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,UAAoB,CAAC,GAAG,KAAI,CAAC,gBAAgB,CAAC;wBACnG,IAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC7C,IAAM,EAAE,GAAG,SAAS;4BAClB,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAoB,CAAC;4BACxD,CAAC,CAAC,8DAA8D;gCAC7D,SAAiB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAoB,CAAC,GAAG,KAAI,CAAC,gBAAgB,CAAC;wBAC/F,IAAM,EAAE,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEzC,IAAI,eAAe,GAAG,CAAC,EAAE;4BACvB,cAAc,CAAC,IAAI,CACjB,8BACE,GAAG,EAAK,KAAK,SAAI,CAAC,gBAAa,EAC/B,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAClC,WAAW,EAAE,CAAC,GAAG,eAAe,GAAG,CAAC,EACpC,IAAI,EAAC,aAAa,EAClB,aAAa,EAAC,OAAO,EACrB,MAAM,EAAE,KAAM,CAAC,OAAO,CAAC,KAAK,EAC5B,SAAS,EAAE,eAAa,wBAAwB,SAAM,GACtD,CACH,CAAC;yBACH;wBACD,KAAK,CAAC,IAAI,CACR,+CACE,GAAG,EAAK,KAAK,SAAI,CAAC,UAAO,EACzB,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,EAAE,EAAE,EAAE,EACN,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,EAClC,WAAW,EAAE,CAAC,EACd,aAAa,EAAC,OAAO,EACrB,MAAM,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EACjC,SAAS,EAAE,eAAa,wBAAwB,SAAM,IAClD,CAAC,gBAAgB;4BACnB,mBAAmB,KAAK,IAAI,IAAI;4BAC9B,WAAW,EAAE,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;4BAChE,YAAY,EAAE,KAAI,CAAC,aAAa;yBACjC,CAAC,EACJ,CACH,CAAC;qBACH;gBACH,CAAC,CAAC,CAAC;gBACH,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,UAAC,IAAY,EAAE,KAAa;oBAC1D,UAAU,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,UAAC,WAAsB,EAAE,QAAgB;wBAChE,IAAI,CAAC,IAAI,CACP,iDACE,GAAG,EAAK,KAAK,SAAI,QAAQ,SAAM,EAC/B,EAAE,EACA,SAAS;gCACP,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,UAAoB,CAAC;gCAChD,CAAC,CAAC,8DAA8D;oCAC7D,SAAiB,CAAC,WAAW,CAAC,KAAK,CAAC,UAAoB,CAAC,GAAG,KAAI,CAAC,gBAAgB,EAExF,EAAE,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EACzB,WAAW,EACT,gBAAgB,IAAI,mBAAmB,KAAK,IAAI;gCAC9C,CAAC,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAI,EAAE,WAAW,CAAC;gCACzC,CAAC,CAAC,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAI,EAAE,WAAW,CAAC,KAAK,CAAC,IAElD,CAAC,gBAAgB;4BACnB,mBAAmB,KAAK,IAAI,IAAI;4BAC9B,YAAY,EAAE,KAAI,CAAC,aAAa;yBACjC,CAAC,IACJ,CAAC,EAAE,KAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,EAC9F,MAAM,EAAE,WAAW,CAAC,KAAK,EACzB,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,KAAM,CAAC,OAAO,CAAC,KAAK,EACrC,WAAW,EAAE,CAAC,EACd,UAAU,EAAE,KAAI,CAAC,6BAA6B,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC,UAAU,EAC3G,SAAS,EAAE,eAAa,wBAAwB,SAAM,IACtD,CACH,CAAC;oBACJ,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;gBACH,OAAO,CACL;oBACG,cAAc;oBACd,KAAK;oBACL,IAAI,CACJ,CACJ,CAAC;YACJ,CAAC,CAAC;YAEM,mCAA6B,GAAG,UACtC,UAA2B,EAC3B,MAAc;gBAER,IAAA,KAAkE,KAAI,CAAC,KAAK,EAA1E,gBAAgB,sBAAA,EAAE,oBAAoB,0BAAA,EAAE,mBAAmB,yBAAe,CAAC;gBACnF,IAAI,gBAAgB,EAAE;oBACpB,IAAI,UAAU,KAAK,oBAAoB,IAAI,MAAM,KAAK,mBAAmB,EAAE;wBACzE,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;qBACxD;yBAAM,IAAI,MAAM,KAAK,mBAAmB,EAAE;wBACzC,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;qBAC1D;yBAAM;wBACL,OAAO,EAAE,UAAU,EAAE,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;qBACxD;iBACF;qBAAM;oBACL,OAAO;wBACL,UAAU,EAAE,oBAAoB,KAAK,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC,eAAe,CAAC,IAAI;wBAC7F,MAAM,EAAE,CAAC;qBACV,CAAC;iBACH;YACH,CAAC,CAAC;YA+BM,iBAAW,GAAG,UAAC,OAAiB;gBACtC,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;YACzB,CAAC,CAAC;YAcM,2BAAqB,GAAG;gBAC9B,IAAM,cAAc,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACzC,UAAC,IAAgC,IAAK,OAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAzC,CAAyC,CAChF,CAAC;gBACF,OAAO,KAAI,CAAC,KAAK,CAAC,uBAAuB;oBACvC,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,uBAAuB,CAAC,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBAClE,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,2BAA2B,IAAI,CAAC,cAAc;wBAC3D,CAAC,CAAC,KAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,KAAI,CAAC,KAAK,CAAC,qBAAqB,EAAE,KAAI,CAAC,cAAc,CAAC;wBAC/F,CAAC,CAAC,IAAI,CAAC;YACX,CAAC,CAAC;YA6IM,gBAAU,GAAG,UAAC,QAAmB,EAAE,UAAwC;gBACjF,UAAU,CAAC,OAAO,EAAE,CAAC;gBACrB,KAAI,CAAC,QAAQ,CAAC;oBACZ,WAAW,EAAE,UAAU;oBACvB,gBAAgB,EAAE,IAAI;oBACtB,aAAa,EAAE,KAAG,QAAQ,CAAC,KAAK,CAAC,UAAY;oBAC7C,aAAa,EAAE,MAAG,QAAQ,CAAC,gBAAgB,IAAI,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,CAAC,CAAE;oBAC5E,oBAAoB,EAAE,QAAQ,CAAC,KAAK,CAAC,UAAU;oBAC/C,KAAK,EAAE,QAAQ,CAAC,KAAK;iBACtB,CAAC,CAAC;YACL,CAAC,CAAC;YAEM,mBAAa,GAAG;gBACtB,KAAI,CAAC,QAAQ,CAAC;oBACZ,WAAW,EAAE,IAAI;oBACjB,gBAAgB,EAAE,KAAK;oBACvB,aAAa,EAAE,EAAE;oBACjB,aAAa,EAAE,EAAE;oBACjB,oBAAoB,EAAE,EAAE;oBACxB,KAAK,EAAE,EAAE;iBACV,CAAC,CAAC;YACL,CAAC,CAAC;YA4CM,qBAAe,GAAG;gBACxB,IAAI;YACN,CAAC,CAAC;YAEM,4BAAsB,GAAG;gBAC/B,KAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBAChC,KAAI,CAAC,QAAQ,CAAC;oBACZ,gBAAgB,EAAE,KAAK;oBACvB,oBAAoB,EAAE,EAAE;iBACzB,CAAC,CAAC;YACL,CAAC,CAAC;YAkCM,gBAAU,GAAG;YACnB,8DAA8D;YAC9D,SAAc,EACd,SAAuB,EACvB,eAAuB,EACvB,QAAoB;gBAEd,IAAA,KAAgD,KAAI,CAAC,KAAK,EAAxD,uBAAmB,EAAnB,eAAe,mBAAG,CAAC,KAAA,EAAE,wBAAoB,EAApB,gBAAgB,mBAAG,CAAC,KAAe,CAAC;gBACjE,IAAM,cAAc,GAAG,KAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACzC,UAAC,IAAgC,IAAK,OAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAzC,CAAyC,CAChF,CAAC;gBACF,IAAM,qBAAqB,GAAG,KAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;gBAEtE,IAAM,IAAI,GAAG,KAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAC,eAA2C,EAAE,WAAmB;oBAC7F,IAAI,MAAM,GAAG,eAAe,GAAG,KAAI,CAAC,OAAO,CAAC,MAAO,CAAC;oBACpD,IAAM,MAAM,GAAG,SAAS,CACtB,KAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,WAAW;wBACxC,CAAC,CAAE,eAAe,CAAC,UAAqB;wBACxC,CAAC,CAAE,eAAe,CAAC,UAAqB,CAC3C,CAAC;oBAEF,qCAAqC;oBACrC,IAAM,aAAa,GAAG,eAAe,CAAC,SAAS,CAAC,MAAM,CAAC,UAAA,KAAK,IAAI,OAAA,KAAK,CAAC,IAAI,GAAG,CAAC,EAAd,CAAc,CAAC,CAAC;oBAEhF,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE;wBACzB,OAAO,SAAS,CAAC;qBAClB;oBAEK,IAAA,KAAkC,KAAI,CAAC,kBAAkB,CAAC,aAAa,EAAE,SAAS,CAAC,EAAjF,SAAS,eAAA,EAAE,gBAAgB,sBAAsD,CAAC;oBAE1F,IAAI,gBAAgB,GAAG,CAAC,EAAE;wBACxB,OAAO,SAAS,CAAC;qBAClB;oBAED,IAAM,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,UAAC,KAAwB,EAAE,KAAa;wBAC1E,IAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAC9D,IAAM,GAAG,GAAkB,EAAE,CAAC;wBAE9B,IAAI,eAAe,GAAG,IAAI,CAAC;wBAC3B,IAAI,KAAI,CAAC,KAAK,CAAC,eAAe,IAAI,KAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;4BAC7D,eAAe,GAAG,KAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,KAAK,CAAC,MAAM,CAAC;yBACnE;wBACD,IAAM,UAAU,GAAG,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,MAAO,EAAE;4BACnD,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAM;4BACxB,eAAe,EAAE,eAAe;4BAChC,IAAI,EAAE,KAAI,CAAC,KAAK,CAAC,IAAI;yBACtB,CAAC,CAAC;wBACH,IAAM,cAAc,GAAG,CAAC,qBAAqB,IAAI;4BAC/C,mBAAmB,EAAE,CAAC,KAAI,CAAC,KAAK,CAAC,WAAW;4BAC5C,iBAAiB,EAAE,YAAU,KAAI,CAAC,UAAY;4BAC9C,WAAW,EAAE,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,EAAE,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;4BACnF,WAAW,EAAE,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,EAAE,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,CAAC;4BACnF,YAAY,EAAE,KAAI,CAAC,eAAe;4BAClC,OAAO,EAAE,KAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAI,EAAE,KAAK,EAAE,eAAe,CAAC,UAAU,EAAE,KAAK,EAAE,GAAG,CAAC;4BACpF,MAAM,EAAE,KAAI,CAAC,eAAe;4BAC5B,OAAO,EAAE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,EAAE,KAAK,CAAC;yBACzC,CAAC;wBAEF,IAAI,SAAS,GAAG,gBAAgB,GAAG,KAAK,CAAC,IAAI,CAAC;wBAC9C,IAAI,SAAS,GAAG,gBAAgB,EAAE;4BAChC,SAAS,GAAG,gBAAgB,CAAC;yBAC9B;wBACD,MAAM,GAAG,MAAM,GAAG,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;wBAEtD,IAAM,wBAAwB,GAAG,KAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;wBAE5G,8DAA8D;wBAC9D,IAAI,eAAe,IAAI,SAAS,GAAG,eAAe,IAAI,KAAK,KAAK,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;4BACxF,OAAO,CACL,+CACE,GAAG,EAAE,KAAK,GAAG,WAAW,IAAG,KAAG,qBAAuB,CAAA,EACrD,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAC1C,CAAC,EAAE,yBACG,MAAM,UAAI,MAAM,GAAG,eAAe,6BAClC,eAAe,SAAI,eAAe,eAAU,eAAe,SAAI,CAAC,eAAe,6BAC/E,KAAI,CAAC,SAAS,GAAG,CAAC,GAAG,eAAe,6BACpC,eAAe,SAAI,eAAe,eAAU,eAAe,SAAI,eAAe,6BAC9E,SAAS,GAAG,eAAe,6BAC3B,CAAC,KAAI,CAAC,SAAS,wCAEpB,EACD,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAApB,CAAoB,EAC9B,SAAS,EAAE,eAAa,wBAAwB,SAAM,IAClD,cAAc,EAClB,CACH,CAAC;yBACH;wBACD,IAAI,SAAS,GAAG,CAAC,EAAE;4BACjB,OAAO,oBAAC,KAAK,CAAC,QAAQ,IAAC,GAAG,EAAE,KAAK,GAAG,WAAW,QAAoB,CAAC;yBACrE;wBACD,OAAO,CACL,+CACE,GAAG,EAAE,KAAK,GAAG,WAAW,EACxB,SAAS,EAAE,UAAU,CAAC,oBAAoB,EAC1C,CAAC,EAAE,MAAM,EACT,CAAC,EAAE,MAAM,EACT,KAAK,EAAE,KAAI,CAAC,SAAS,EACrB,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,KAAK,EACX,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,GAAG,CAAC,UAAU,GAAG,CAAC,CAAC,EAApB,CAAoB,IAC1B,cAAc,IAClB,IAAI,EAAC,MAAM,EACX,SAAS,EAAE,eAAa,wBAAwB,SAAM,IACtD,CACH,CAAC;oBACJ,CAAC,CAAC,CAAC;oBACH,IAAM,QAAQ,GAAkB,EAAE,CAAC;oBACnC,IAAM,eAAe,GAAG,qBAAqB,IAAI;wBAC/C,mBAAmB,EAAE,CAAC,KAAI,CAAC,KAAK,CAAC,WAAW;wBAC5C,iBAAiB,EAAE,YAAU,KAAI,CAAC,UAAY;wBAC9C,WAAW,EAAE,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAI,EAAE,eAAe,CAAC;wBAC3D,WAAW,EAAE,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAI,EAAE,eAAe,CAAC;wBAC3D,YAAY,EAAE,KAAI,CAAC,eAAe;wBAClC,OAAO,EAAE,KAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAI,EAAE,eAAe,EAAE,QAAQ,CAAC;wBACjE,MAAM,EAAE,KAAI,CAAC,eAAe;wBAC5B,OAAO,EAAE,KAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAI,EAAE,eAAe,CAAC;wBAClD,IAAI,EAAE,MAAM;qBACb,CAAC;oBACF,OAAO,CACL,4CACE,GAAG,EAAE,WAAW,IAAG,KAAG,qBAAuB,CAAA,EAC7C,EAAE,EAAK,WAAW,eAAY,EAC9B,GAAG,EAAE,UAAA,CAAC,IAAI,OAAA,CAAC,QAAQ,CAAC,UAAU,GAAG,CAAC,CAAC,EAAzB,CAAyB,IAC/B,eAAe,GAElB,SAAS,CACR,CACL,CAAC;gBACJ,CAAC,CAAC,CAAC;gBACH,IAAM,SAAS,GAAG,aAAa,CAAC,KAAI,CAAC,KAAK,CAAC,MAAO,EAAE;oBAClD,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,KAAM;iBACzB,CAAC,CAAC;gBACH,mEAAmE;gBACnE,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;oBACtC,IAAI;wBACF,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAE,CAAC,MAAM,EAAE,CAAC;wBAC/F,oCAAoC;qBACrC;oBAAC,OAAO,CAAC,EAAE,GAAE;iBACf;gBACD,4CAA4C;gBAC5C,IAAI,CAAC,KAAI,CAAC,KAAK,CAAC,eAAe,IAAI,KAAI,CAAC,KAAK,CAAC,sBAAsB,EAAE;oBACpE,IAAM,YAAY,GAAG,qBAAQ,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACxD,IAAI;wBACF,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAC,IAAI,QAAQ,CAAC,cAAc,CAAC,KAAI,CAAC,UAAU,CAAE,CAAC,MAAM,EAAE,CAAC;wBAC/F,oCAAoC;qBACrC;oBAAC,OAAO,CAAC,EAAE,GAAE;oBACd,IAAM,YAAY,GAAG;wBACnB,UAAU,EAAE,SAAS,CAAC,OAAQ;wBAC9B,EAAE,EAAE,KAAI,CAAC,UAAU;wBACnB,KAAK,EAAE,YAAY;qBACpB,CAAC;oBACF,YAAY,IAAI,4BAAoB,CAAC,YAAY,CAAC,CAAC;iBACpD;gBACD,OAAO,IAAI,CAAC,MAAM,CAAC,UAAC,GAAG,IAAyB,OAAA,CAAC,CAAC,GAAG,EAAL,CAAK,CAAC,CAAC;YACzD,CAAC,CAAC;YAEM,gBAAU,GAAG,UAAC,eAAuB,EAAE,cAAsB,EAAE,SAAkB;gBACvF,IAAM,IAAI,GAAG,KAAI,CAAC,KAAK,CAAC;gBACxB,IAAM,SAAS,GAAG,sBAAa,EAAE;qBAC9B,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;qBACjB,KAAK,CAAC,CAAC,CAAC,EAAE,eAAe,GAAG,KAAI,CAAC,OAAO,CAAC,MAAO,GAAG,KAAI,CAAC,OAAO,CAAC,GAAI,CAAC,CAAC,CAAC;gBAC1E,IAAI,SAAS,EAAE;oBACb,IAAM,IAAI,GAAG,cAAK,CAAC,KAAI,CAAC,QAAQ,EAAE,UAAC,KAAiB,IAAK,OAAA,KAAK,CAAC,CAAW,EAAjB,CAAiB,CAAE,CAAC;oBAC7E,IAAM,IAAI,GAAG,cAAK,CAAC,KAAI,CAAC,QAAQ,EAAE,UAAC,KAAiB,IAAK,OAAA,KAAK,CAAC,CAAW,EAAjB,CAAiB,CAAE,CAAC;oBAE7E,IAAM,SAAS,GAAG,sBAAa,EAAE;yBAC9B,MAAM,CAAC,KAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;yBACjD,IAAI,EAAE;yBACN,KAAK,CAAC,CAAC,KAAI,CAAC,OAAO,CAAC,IAAK,EAAE,cAAc,GAAG,KAAI,CAAC,OAAO,CAAC,KAAM,GAAG,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC;oBAEtF,OAAO,EAAE,SAAS,WAAA,EAAE,SAAS,WAAA,EAAE,CAAC;iBACjC;qBAAM;oBACL,IAAM,SAAS,GAAG,oBAAW,EAAE;yBAC5B,MAAM,CAAC,KAAI,CAAC,YAAY,CAAC;yBACzB,KAAK,CAAC;wBACL,KAAI,CAAC,OAAO,CAAC,IAAK,GAAG,KAAI,CAAC,gBAAgB;wBAC1C,cAAc,GAAG,KAAI,CAAC,OAAO,CAAC,KAAM,GAAG,KAAI,CAAC,gBAAgB;qBAC7D,CAAC;yBACD,OAAO,CAAC,KAAI,CAAC,KAAK,CAAC,YAAY,IAAI,GAAG,CAAC,CAAC;oBAE3C,OAAO,EAAE,SAAS,WAAA,EAAE,SAAS,WAAA,EAAE,CAAC;iBACjC;YACH,CAAC,CAAC;YAEM,wBAAkB,GAAG,UAC3B,eAAuB,EACvB,cAAsB,EACtB,QAAoB;gBAEd,IAAA,KAA2B,KAAI,CAAC,UAAU,CAAC,eAAe,EAAE,cAAc,EAAE,IAAI,CAAC,EAA/E,SAAS,eAAA,EAAE,SAAS,eAA2D,CAAC;gBAExF,OAAO,KAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC1E,CAAC,CAAC;YAEM,uBAAiB,GAAG,UAC1B,eAAuB,EACvB,cAAsB,EACtB,QAAoB;gBAEd,IAAA,KAA2B,KAAI,CAAC,UAAU,CAAC,eAAe,EAAE,cAAc,EAAE,KAAK,CAAC,EAAhF,SAAS,eAAA,EAAE,SAAS,eAA4D,CAAC;gBAEzF,OAAO,KAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,QAAQ,CAAC,CAAC;YAC1E,CAAC,CAAC;YAEM,mBAAa,GAAG;YACtB,8DAA8D;YAC9D,MAAW,EACX,MAAmB,EACnB,eAAuB,EACvB,cAAsB,EACtB,QAA2B;gBAE3B,OAAO,CAAC,KAAI,CAAC,KAAK;oBAChB,KAAI,CAAC,UAAU,KAAK,kBAAU,CAAC,WAAW;wBACxC,CAAC,CAAC,KAAI,CAAC,kBAAkB,CAAC,eAAe,EAAE,cAAc,EAAE,QAAS,CAAC;wBACrE,CAAC,CAAC,KAAI,CAAC,iBAAiB,CAAC,eAAe,EAAE,cAAc,EAAE,QAAS,CAAC,CAAC,CAAC;YAC5E,CAAC,CAAC;YAEM,mBAAa,GAAG;gBACtB,KAAI,CAAC,QAAQ,CAAC;oBACZ,gBAAgB,EAAE,KAAK;iBACxB,CAAC,CAAC;YACL,CAAC,CAAC;YAEM,kBAAY,GAAG,UAAC,SAAoB;gBAC1C,IAAI,SAAS,IAAI,SAAS,CAAC,iBAAiB,CAAC,MAAM,EAAE;oBAC3C,IAAmB,WAAW,GAAK,SAAS,kBAAd,CAAe;oBACrD,KAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,KAAI,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC;iBACvF;YACH,CAAC,CAAC;YA30BA,KAAI,CAAC,KAAK,GAAG;gBACX,gBAAgB,EAAE,KAAK;gBACvB,gBAAgB,EAAE,KAAK;gBACvB,eAAe,EAAE,KAAK;gBACtB,mBAAmB,EAAE,EAAE;gBACvB,WAAW,EAAE,IAAI;gBACjB,gBAAgB,EAAE,CAAC;gBACnB,KAAK,EAAE,EAAE;gBACT,WAAW,EAAE,EAAE;gBACf,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,EAAE;gBACjB,aAAa,EAAE,EAAE;gBACjB,oBAAoB,EAAE,EAAE;gBACxB,aAAa,EAAE,EAAE;aAClB,CAAC;YACF,4BAAgB,CAAC,cAAc,EAAE,KAAK,EAAE;gBACtC,MAAM,EAAE,yBAAyB;gBACjC,UAAU,EAAE,8BAA8B;aAC3C,CAAC,CAAC;YACH,KAAI,CAAC,eAAe,GAAG,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,KAAI,CAAC,CAAC;YACvD,KAAI,CAAC,UAAU,GAAG,iBAAK,CAAC,SAAS,CAAC,CAAC;YACnC,KAAI,CAAC,UAAU,GAAG,iBAAK,CAAC,gBAAgB,CAAC,CAAC;YAC1C,KAAI,CAAC,YAAY,EAAE,CAAC;YACpB,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,KAAI,CAAC,qBAAqB,GAAG,2BAAe,CAAC,UAAC,IAAkC,IAAK,OAAA,KAAI,CAAC,eAAe,CAAC,IAAI,CAAC,EAA1B,CAA0B,CAAC,CAAC;;QACnH,CAAC;QAEM,wDAAkB,GAAzB,UAA0B,SAAwC;YAChE,IACE,SAAS,CAAC,MAAM,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM;gBACtC,SAAS,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK;gBACpC,SAAS,CAAC,IAAI,KAAK,IAAI,CAAC,KAAK,CAAC,IAAI,EAClC;gBACA,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;aAC5C;QACH,CAAC;QAEM,4CAAM,GAAb;YAAA,iBAwEC;YAvEC,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CACzC,UAAC,IAAgC,IAAK,OAAA,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAzC,CAAyC,CAChF,CAAC;YACF,IAAM,qBAAqB,GAAG,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,CAAC;YAC9D,IAAA,KAA8B,IAAI,CAAC,KAAK,kBAAf,EAAzB,iBAAiB,mBAAG,KAAK,KAAA,CAAgB;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3C,IAAM,UAAU,GAAgB,IAAI,CAAC,cAAc,CACjD,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,KAAK,CAAC,KAAM,CAAC,OAAO,EACzB,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAC5C,CAAC;YAEF,IAAM,YAAY,uCAChB,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAC7C,eAAe,EAAE,yBAAe,CAAC,WAAW,EAC5C,EAAE,EAAE,YAAU,IAAI,CAAC,UAAY,EAC/B,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EAC9B,aAAa,EAAE,KAAK,EACpB,QAAQ,EAAE,EAAE,EACZ,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,EACvB,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAChC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAc,EACjC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,EACzF,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,WAAW,EACnC,SAAS,EAAE,IAAI,CAAC,aAAa,EAC7B,yBAAyB,EAAE,IAAI,IAC5B,IAAI,CAAC,KAAK,CAAC,YAAY,GACvB,+BAAuB,CAAC,IAAI,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAChE,CAAC;YACF,IAAM,UAAU,GAAG;gBACjB,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;gBACjC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,UAAU;aAClC,CAAC;YAEF,OAAO,CACL,oBAAC,sBAAc,uBACT,IAAI,CAAC,KAAK,IACd,MAAM,EAAE,IAAI,CAAC,QAAQ,EACrB,SAAS,EAAE,kBAAU,CAAC,uBAAuB,EAC7C,SAAS,EAAE,IAAI,CAAC,UAAU,EAC1B,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,UAAU,EACtB,qBAAqB,EAAE,IAAI,CAAC,YAAY,EACxC,iBAAiB,EAAE,qBAAqB,EACxC,QAAQ,EAAE,IAAI,CAAC,SAAS,EACxB,kBAAkB,EAChB,iBAAiB,IAAI,cAAc,CAAC,CAAC,CAAC,gCAAkB,CAAC,UAAU,CAAC,CAAC,CAAC,gCAAkB,CAAC,QAAQ,EAEnG,UAAU,EAAE,IAAI,CAAC,WAAW,EAC5B,YAAY,EAAE,IAAI,CAAC,aAAa,EAChC,WAAW,EAAE,IAAI,CAAC,YAAY,EAC9B,iBAAiB,EAAE,IAAI,CAAC,qBAAqB,EAAE,EAC/C,iBAAiB,EAAE,IAAI,CAAC,sBAAsB;gBAC9C,sCAAsC;gBACtC,kDAAkD;gBAClD,QAAQ,EAAE,UAAC,KAAkB;oBAC3B,OAAO,CACL;wBACE,+BAAI,KAAI,CAAC,KAAK,CAAK;wBACnB,+BACG,cAAc;4BACb,KAAI,CAAC,YAAY,CAAC,KAAK,CAAC,MAAO,EAAE,KAAK,CAAC,MAAO,EAAE,KAAK,CAAC,eAAgB,EAAE,KAAK,CAAC,cAAe,CAAC,CAC9F,CACH,CACJ,CAAC;gBACJ,CAAC,IACD,CACH,CAAC;QACJ,CAAC;QAuMO,kDAAY,GAApB;YACE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC;YAC3C,IAAI,CAAC,gBAAgB,GAAG,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,IAAA,KAAK,GAAK,IAAI,CAAC,KAAK,MAAf,CAAgB;YACrB,IAAA,OAAO,GAAK,KAAM,QAAX,CAAY;YAC3B,mDAAmD;YACnD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YACnH,IAAI,CAAC,UAAU,GAAG,qBAAa,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,IAAI,CAAe,CAAC;YACnF,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjE,CAAC;QAEO,yDAAmB,GAA3B;YACE,IAAM,OAAO,GAAa,EAAE,CAAC;YAC7B,IAAM,OAAO,GAAiB,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAA,eAAe;gBAC5D,IAAI,KAAK,GAAW,CAAC,CAAC;gBACtB,eAAe,CAAC,SAAU,CAAC,OAAO,CAAC,UAAC,KAAwB;oBAC1D,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;gBAC7B,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,eAAe,CAAC,UAAoB,CAAC,CAAC;gBACnD,OAAO;oBACL,CAAC,EAAE,eAAe,CAAC,UAAU;oBAC7B,CAAC,EAAE,KAAK;iBACT,CAAC;YACJ,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;YAC5B,OAAO,OAAO,CAAC;QACjB,CAAC;QAMO,oDAAc,GAAtB,UAAuB,KAAyB;YAC9C,OAAO,KAAK,CAAC,CAAC,CAAC,CACb,oBAAC,sBAAc,IACb,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAC9B,MAAM,EAAE,KAAK,CAAC,MAAM,EACpB,MAAM,EAAE,KAAK,CAAC,gBAAgB,EAC9B,KAAK,EAAE,KAAK,CAAC,KAAK,EAClB,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,GAC3B,CACH,CAAC,CAAC,CAAC,IAAI,CAAC;QACX,CAAC;QAaO,oDAAc,GAAtB,UAAuB,aAAqB;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,EAAE;gBAC/B,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,aAAa,EAAE;oBACpD,IAAI,CAAC,QAAQ,CAAC;wBACZ,gBAAgB,EAAE,KAAK;wBACvB,mBAAmB,EAAE,aAAa;qBACnC,CAAC,CAAC;iBACJ;qBAAM;oBACL,IAAI,CAAC,QAAQ,CAAC;wBACZ,mBAAmB,EAAE,aAAa;qBACnC,CAAC,CAAC;iBACJ;aACF;iBAAM;gBACL,IAAI,CAAC,QAAQ,CAAC;oBACZ,gBAAgB,EAAE,IAAI;oBACtB,mBAAmB,EAAE,aAAa;iBACnC,CAAC,CAAC;aACJ;QACH,CAAC;QAEO,oDAAc,GAAtB,UAAuB,aAAqB;YAC1C,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBACzC,IAAI,CAAC,QAAQ,CAAC;oBACZ,eAAe,EAAE,IAAI;oBACrB,mBAAmB,EAAE,aAAa;iBACnC,CAAC,CAAC;aACJ;QACH,CAAC;QAEO,oDAAc,GAAtB,UAAuB,eAAyB;YAC9C,IAAI,CAAC,CAAC,eAAe,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,KAAK,EAAE;gBAC9D,IAAI,CAAC,QAAQ,CAAC;oBACZ,eAAe,EAAE,KAAK;oBACtB,mBAAmB,EAAE,EAAE;oBACvB,gBAAgB,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB;iBACxE,CAAC,CAAC;aACJ;QACH,CAAC;QAEO,oDAAc,GAAtB,UACE,IAAkC,EAClC,OAAiB,EACjB,WAA0B;YAH5B,iBA4DC;YAvDC,IAAI,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE;gBACzB,OAAO,yCAAK,CAAC;aACd;YACD,IAAM,cAAc,GAAa,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC;YAChH,IAAM,OAAO,GAAc,EAAE,CAAC;YACtB,IAAA,KAA8B,IAAI,CAAC,KAAK,mBAAf,EAAzB,kBAAkB,mBAAG,IAAI,KAAA,CAAgB;YAEjD,IAAI,CAAC,OAAO,CAAC,UAAC,eAA2C;gBACvD,eAAe,CAAC,SAAS,CAAC,OAAO,CAAC,UAAC,KAAwB;oBACzD,IAAM,KAAK,GAAW,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACpG,IAAM,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,UAAC,GAAY,IAAK,OAAA,GAAG,CAAC,KAAK,KAAK,KAAK,CAAC,MAAM,IAAI,GAAG,CAAC,KAAK,KAAK,KAAK,EAAjD,CAAiD,CAAC,CAAC;oBAChH,IAAI,mBAAoB,CAAC,MAAM,GAAG,CAAC,EAAE;wBACnC,OAAO;qBACR;oBAED,IAAM,MAAM,GAAY;wBACtB,KAAK,EAAE,KAAK,CAAC,MAAM;wBACnB,KAAK,EAAE,KAAK;wBACZ,MAAM,EAAE;4BACN,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;wBACpC,CAAC;wBACD,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAM,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,EAAjC,CAAiC,CAAC,CAAC,CAAC,SAAS;wBACrF,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC,UAAA,gBAAgB,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAArC,CAAqC,CAAC,CAAC,CAAC,SAAS;qBAC7G,CAAC;oBAEF,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YACH,IAAM,aAAa,GAAc,EAAE,CAAC;YACpC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,WAAW,CAAC,OAAO,CAAC,UAAC,KAAkB;oBACrC,IAAM,MAAM,GAAY;wBACtB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,sBAAsB,EAAE,IAAI;wBAC5B,MAAM,EAAE;4BACN,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;wBACnC,CAAC;wBACD,WAAW,EAAE,kBAAkB,CAAC,CAAC,CAAC,cAAM,OAAA,KAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,CAAC,EAAhC,CAAgC,CAAC,CAAC,CAAC,SAAS;wBACpF,gBAAgB,EAAE,kBAAkB,CAAC,CAAC,CAAC,UAAA,gBAAgB,IAAI,OAAA,KAAI,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAArC,CAAqC,CAAC,CAAC,CAAC,SAAS;qBAC7G,CAAC;oBACF,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;aACJ;YACD,IAAM,YAAY,GAAc,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9D,OAAO,CACL,oBAAC,eAAO,qBACN,OAAO,EAAE,YAAY,EACrB,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,oBAAoB,EAC9C,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC,uBAAuB,EACpD,yBAAyB,EAAE,IAAI,CAAC,KAAK,CAAC,mCAAmC,EACzE,YAAY,EAAE,IAAI,CAAC,KAAK,CAAC,mBAAmB,IACxC,IAAI,CAAC,KAAK,CAAC,WAAW,EAC1B,CACH,CAAC;QACJ,CAAC;QAEO,kDAAY,GAApB,UACE,UAAkB,EAClB,KAAwB,EACxB,KAAa,EACb,UAAwC;YAExC,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;QAC/D,CAAC;QAEO,uDAAiB,GAAzB,UACE,UAAkB,EAClB,KAAwB,EACxB,KAAa,EACb,WAAuD;YAEvD,IAAI,IAAI,CAAC,mBAAmB,KAAK,KAAK,EAAE;gBACtC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;gBACjC,IAAI,CAAC,QAAQ,CAAC;oBACZ,WAAW,aAAA;oBACX;;;uBAGG;oBACH,gBAAgB,EACd,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,KAAK;wBACrC,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,KAAK,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,mBAAmB,KAAK,KAAK,CAAC,MAAM,CAAC;oBAC3F,aAAa,EAAE,KAAK,CAAC,MAAM;oBAC3B,gBAAgB,EAAE,KAAK,CAAC,IAAI;oBAC5B,KAAK,OAAA;oBACL,aAAa,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,UAAU;oBAC3E,aAAa,EAAE,KAAK,CAAC,gBAAgB;oBACrC,qBAAqB,EAAE,KAAK;oBAC5B,wBAAwB,EAAE,KAAK,CAAC,wBAAwB;iBACzD,CAAC,CAAC;aACJ;QACH,CAAC;QAyBO,mDAAa,GAArB,UAAsB,KAAiC,EAAE,UAAwC;YAC/F,UAAU,CAAC,OAAO,EAAE,CAAC;YACrB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,UAAU,CAAC,CAAC;QAC7C,CAAC;QAEO,wDAAkB,GAA1B,UACE,KAAiC,EACjC,WAAuD;YAEvD,IAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;YAChC,IAAM,cAAc,GAAY,QAAQ,KAAK,SAAS,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;YAC9E,IAAI,cAAc,EAAE;gBAClB,QAAS,CAAC,OAAO,CAAC,UAAC,IAA+E;oBAChG,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC,CAAC;oBAChC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;gBACrC,CAAC,CAAC,CAAC;aACJ;YACD,IAAI,CAAC,QAAQ,CAAC;gBACZ,WAAW,aAAA;gBACX,gBAAgB,EAAE,IAAI;gBACtB,WAAW,EAAE,cAAc;oBACzB,CAAC,iDAAK,QAAS,CAAC,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,CAAC,IAAK,GAAG,CAAC,CAAC,IAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAA5B,CAA4B,CAAC,GAAK,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE,EAClG,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,OAAO,EAAE;gBACrC,WAAW,EAAE,KAAK,CAAC,UAAU;gBAC7B,iBAAiB,EAAE,KAAK;gBACxB,oBAAoB,EAAE,KAAK,CAAC,UAAU;gBACtC,wBAAwB,EAAE,KAAK,CAAC,6BAA6B;aAC9D,CAAC,CAAC;QACL,CAAC;QAEO,kDAAY,GAApB,UAAqB,KAAwB,EAAE,UAAkB,EAAE,KAAa,EAAE,GAAkB;YAClG,IAAI,GAAG,CAAC,UAAU,EAAE;gBAClB,IAAI,CAAC,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;aAClE;QACH,CAAC;QAEO,mDAAa,GAArB,UAAsB,KAAiC,EAAE,QAAuB;YAC9E,IAAI,QAAQ,CAAC,UAAU,EAAE;gBACvB,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;aACrD;QACH,CAAC;QAcO,8CAAQ,GAAhB,UACE,IAAoD,EACpD,UAAwC;;YAExC,MAAA,MAAA,IAAI,CAAC,KAAK,EAAC,UAAU,mDAAG,UAAU,EAAE,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAClE,CAAC;QAEO,wDAAkB,GAA1B,UACE,IAAyB,EACzB,SAAuB,EACvB,kBAA2B;YAKnB,IAAA,KAAkB,IAAI,CAAC,KAAK,UAAf,EAAb,SAAS,mBAAG,CAAC,KAAA,CAAgB;YAErC,mEAAmE;YACnE,oEAAoE;YACpE,IAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,UAAC,IAAI,EAAE,KAAK,IAAK,OAAA,IAAI,GAAG,KAAK,CAAC,IAAI,EAAjB,CAAiB,EAAE,CAAC,CAAC,CAAC;YACrE,IAAM,WAAW,GAAG,kBAAkB,aAAlB,kBAAkB,cAAlB,kBAAkB,GAAI,SAAS,CAAC,SAAS,CAAC,CAAC;YAC/D,IAAM,IAAI,GAAG,SAAS,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAC1C,IAAM,SAAS,GAAG,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,WAAW,GAAG,gBAAgB,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC;YAC5G,IAAM,gBAAgB,GAAG,CAAC,WAAW,GAAG,SAAS,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;YAEtE,OAAO;gBACL,SAAS,WAAA;gBACT,gBAAgB,kBAAA;aACR,CAAC;QACb,CAAC;QAyOH,kCAAC;IAAD,CAAC,AAn2BD,CAAiD,KAAK,CAAC,SAAS,GAm2B/D;IAn2BY,kEAA2B","sourcesContent":["import * as React from 'react';\nimport { max as d3Max, min as d3Min } from 'd3-array';\nimport { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { classNamesFunction, getId, getRTL, warnDeprecations, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { IPalette } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { ILegend, Legends } from '../Legends/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ChartHoverCard,\n IBasestate,\n IChildProps,\n IDataPoint,\n IMargins,\n IVerticalStackedBarChartProps,\n IVerticalStackedBarChartStyleProps,\n IVerticalStackedBarChartStyles,\n IVerticalStackedChartProps,\n IVSChartDataPoint,\n ILineDataInVerticalStackedBarChart,\n IModifiedCartesianChartProps,\n} from '../../index';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n} from '../../utilities/index';\n\nconst getClassNames = classNamesFunction<IVerticalStackedBarChartStyleProps, IVerticalStackedBarChartStyles>();\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\ntype NumericScale = D3ScaleLinear<number, number>;\nconst COMPONENT_NAME = 'VERTICAL STACKED BAR CHART';\n\n// When displaying gaps between bars, the max height of the gap is given in the\n// props. The actual gap is calculated with this multiplier, with a minimum gap\n// of 1 pixel. (If these values are changed, update the comment for barGapMax.)\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\n\ninterface IRefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = ILineDataInVerticalStackedBarChart & { index: number; xItem: IVerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface IVerticalStackedBarChartState extends IBasestate {\n selectedLegendTitle: string;\n dataPointCalloutProps?: IVSChartDataPoint;\n stackCalloutProps?: IVerticalStackedChartProps;\n activeXAxisDataPoint: number | string;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n}\nexport class VerticalStackedBarChartBase extends React.Component<\n IVerticalStackedBarChartProps,\n IVerticalStackedBarChartState\n> {\n private _points: IVerticalStackedChartProps[];\n private _dataset: IDataPoint[];\n private _xAxisLabels: string[];\n private _bars: JSX.Element[];\n private _xAxisType: XAxisTypes;\n private _barWidth: number;\n private _additionalSpace: number;\n private _calloutId: string;\n private _colors: string[];\n private margins: IMargins;\n private _isRtl: boolean = getRTL();\n private _createLegendsForLine: (data: IVerticalStackedChartProps[]) => LineLegends[];\n private _lineObject: LineObject;\n private _tooltipId: string;\n private _yMax: number;\n private _calloutAnchorPoint: IVSChartDataPoint | null;\n\n public constructor(props: IVerticalStackedBarChartProps) {\n super(props);\n this.state = {\n isCalloutVisible: false,\n isLegendSelected: false,\n isLegendHovered: false,\n selectedLegendTitle: '',\n refSelected: null,\n dataForHoverCard: 0,\n color: '',\n hoverXValue: '',\n YValueHover: [],\n xCalloutValue: '',\n yCalloutValue: '',\n activeXAxisDataPoint: '',\n calloutLegend: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n colors: 'IVSChartDataPoint.color',\n chartLabel: 'use your own title for chart',\n });\n this._handleMouseOut = this._handleMouseOut.bind(this);\n this._calloutId = getId('callout');\n this._tooltipId = getId('VSBCTooltipId_');\n this._adjustProps();\n this._dataset = this._createDataSetLayer();\n this._createLegendsForLine = memoizeFunction((data: IVerticalStackedChartProps[]) => this._getLineLegends(data));\n }\n\n public componentDidUpdate(prevProps: IVerticalStackedBarChartProps): void {\n if (\n prevProps.height !== this.props.height ||\n prevProps.width !== this.props.width ||\n prevProps.data !== this.props.data\n ) {\n this._adjustProps();\n this._dataset = this._createDataSetLayer();\n }\n }\n\n public render(): React.ReactNode {\n this._adjustProps();\n const _isHavingLines = this.props.data.some(\n (item: IVerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = this._toFocusWholeStack(_isHavingLines);\n const { isCalloutForStack = false } = this.props;\n this._dataset = this._createDataSetLayer();\n const legendBars: JSX.Element = this._getLegendData(\n this._points,\n this.props.theme!.palette,\n this._createLegendsForLine(this.props.data),\n );\n\n const calloutProps: IModifiedCartesianChartProps['calloutProps'] = {\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n target: this.state.refSelected,\n isBeakVisible: false,\n gapSpace: 15,\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 preventDismissOnLostFocus: true,\n ...this.props.calloutProps,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData),\n };\n const tickParams = {\n tickValues: this.props.tickValues,\n tickFormat: this.props.tickFormat,\n };\n\n return (\n <CartesianChart\n {...this.props}\n points={this._dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={this._xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={this._xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n barwidth={this._barWidth}\n focusZoneDirection={\n isCalloutForStack || _isHavingLines ? FocusZoneDirection.horizontal : FocusZoneDirection.vertical\n }\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n customizedCallout={this._getCustomizedCallout()}\n onChartMouseLeave={this._handleChartMouseLeave}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: IChildProps) => {\n return (\n <>\n <g>{this._bars}</g>\n <g>\n {_isHavingLines &&\n this._createLines(props.xScale!, props.yScale!, props.containerHeight!, props.containerWidth!)}\n </g>\n </>\n );\n }}\n />\n );\n }\n\n /**\n * This function tells us what to focus either the whole stack as focusable item.\n * or each individual item in the stack as focusable item. basically it depends\n * on the prop `isCalloutForStack` if it's false user can focus each individual bar\n * within the bar if it's true then user can focus whole bar as item.\n * but if we have lines in the chart then we force the user to focus only the whole\n * bar, even if isCalloutForStack is false\n */\n private _toFocusWholeStack = (_isHavingLines: boolean): boolean => {\n const { isCalloutForStack = false } = this.props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (this.state.isLegendSelected) {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n };\n\n private _getFormattedLineData = (data: IVerticalStackedChartProps[]): LineObject => {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: IVerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n // injecting corresponding x data point in each of the line data\n // we inject index also , it will be helpful to draw lines when x axis is\n // of string type\n item.lineData.forEach(line => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n };\n\n private _getLineLegends = (data: IVerticalStackedChartProps[]): LineLegends[] => {\n const lineObject: LineObject = this._lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n };\n\n private _createLines = (\n xScale: NumericScale,\n yScale: NumericScale,\n containerHeight: number,\n containerWidth: number,\n ): JSX.Element => {\n const { isLegendHovered, isLegendSelected, selectedLegendTitle } = this.state;\n const isNumeric = this._xAxisType === XAxisTypes.NumericAxis;\n const { xBarScale } = this._getScales(containerHeight, containerWidth, isNumeric);\n const lineObject: LineObject = this._getFormattedLineData(this.props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n const { theme } = this.props;\n const lineBorderWidth = this.props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(this.props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const xScaleBandwidthTranslate = isNumeric ? 0 : (xBarScale as any).bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n let shouldHighlight = true;\n if (isLegendHovered || isLegendSelected) {\n shouldHighlight = selectedLegendTitle === item; // item is legend name;\n }\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = isNumeric\n ? xScale(lineObject[item][i - 1].xItem.xAxisPoint as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (xBarScale as any)(lineObject[item][i - 1].xItem.xAxisPoint as string) + this._additionalSpace;\n const y1 = yScale(lineObject[item][i - 1].y);\n const x2 = isNumeric\n ? xScale(lineObject[item][i].xItem.xAxisPoint as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (xBarScale as any)(lineObject[item][i].xItem.xAxisPoint as string) + this._additionalSpace;\n const y2 = yScale(lineObject[item][i].y);\n\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={theme!.palette.white}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3}\n strokeLinecap=\"round\"\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...(isLegendSelected &&\n selectedLegendTitle === item && {\n onMouseOver: this._lineHover.bind(this, lineObject[item][i - 1]),\n onMouseLeave: this._lineHoverOut,\n })}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={\n isNumeric\n ? xScale(circlePoint.xItem.xAxisPoint as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (xBarScale as any)(circlePoint.xItem.xAxisPoint as string) + this._additionalSpace\n }\n cy={yScale(circlePoint.y)}\n onMouseOver={\n isLegendSelected && selectedLegendTitle === item\n ? this._lineHover.bind(this, circlePoint)\n : this._onStackHover.bind(this, circlePoint.xItem)\n }\n {...(isLegendSelected &&\n selectedLegendTitle === item && {\n onMouseLeave: this._lineHoverOut,\n })}\n r={this._getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={this.props.theme!.palette.white}\n strokeWidth={3}\n visibility={this._getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n };\n\n private _getCircleVisibilityAndRadius = (\n xAxispoint: string | number,\n legend: string,\n ): { visibility: CircleVisbility; radius: number } => {\n const { isLegendSelected, activeXAxisDataPoint, selectedLegendTitle } = this.state;\n if (isLegendSelected) {\n if (xAxispoint === activeXAxisDataPoint && legend === selectedLegendTitle) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (legend === selectedLegendTitle) {\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXAxisDataPoint === xAxispoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n };\n\n private _adjustProps(): void {\n this._points = this.props.data || [];\n this._barWidth = this.props.barWidth || 32;\n this._additionalSpace = 0.5 * this._barWidth;\n const { theme } = this.props;\n const { palette } = theme!;\n // eslint-disable-next-line deprecation/deprecation\n this._colors = this.props.colors || [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n this._xAxisType = getTypeOfAxis(this.props.data[0].xAxisPoint, true) as XAxisTypes;\n this._lineObject = this._getFormattedLineData(this.props.data);\n }\n\n private _createDataSetLayer(): IDataPoint[] {\n const tempArr: string[] = [];\n const dataset: IDataPoint[] = this._points.map(singlePointData => {\n let total: number = 0;\n singlePointData.chartData!.forEach((point: IVSChartDataPoint) => {\n total = total + point.data;\n });\n tempArr.push(singlePointData.xAxisPoint as string);\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n this._xAxisLabels = tempArr;\n return dataset;\n }\n\n private _getMargins = (margins: IMargins) => {\n this.margins = margins;\n };\n\n private _renderCallout(props?: IVSChartDataPoint): JSX.Element | null {\n return props ? (\n <ChartHoverCard\n XValue={props.xAxisCalloutData}\n Legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n culture={this.props.culture}\n />\n ) : null;\n }\n\n private _getCustomizedCallout = () => {\n const _isHavingLines = this.props.data.some(\n (item: IVerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return this.props.onRenderCalloutPerStack\n ? this.props.onRenderCalloutPerStack(this.state.stackCalloutProps)\n : this.props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps, this._renderCallout)\n : null;\n };\n\n private _onLegendClick(customMessage: string): void {\n if (this.state.isLegendSelected) {\n if (this.state.selectedLegendTitle === customMessage) {\n this.setState({\n isLegendSelected: false,\n selectedLegendTitle: customMessage,\n });\n } else {\n this.setState({\n selectedLegendTitle: customMessage,\n });\n }\n } else {\n this.setState({\n isLegendSelected: true,\n selectedLegendTitle: customMessage,\n });\n }\n }\n\n private _onLegendHover(customMessage: string): void {\n if (this.state.isLegendSelected === false) {\n this.setState({\n isLegendHovered: true,\n selectedLegendTitle: customMessage,\n });\n }\n }\n\n private _onLegendLeave(isLegendFocused?: boolean): void {\n if (!!isLegendFocused || this.state.isLegendSelected === false) {\n this.setState({\n isLegendHovered: false,\n selectedLegendTitle: '',\n isLegendSelected: isLegendFocused ? false : this.state.isLegendSelected,\n });\n }\n }\n\n private _getLegendData(\n data: IVerticalStackedChartProps[],\n palette: IPalette,\n lineLegends: LineLegends[],\n ): JSX.Element {\n if (this.props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n const actions: ILegend[] = [];\n const { allowHoverOnLegend = true } = this.props;\n\n data.forEach((singleChartData: IVerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: IVSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: ILegend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: ILegend = {\n title: point.legend,\n color: color,\n action: () => {\n this._onLegendClick(point.legend);\n },\n hoverAction: allowHoverOnLegend ? () => this._onLegendHover(point.legend) : undefined,\n onMouseOutAction: allowHoverOnLegend ? isLegendSelected => this._onLegendLeave(isLegendSelected) : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: ILegend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: ILegend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n action: () => {\n this._onLegendClick(point.title);\n },\n hoverAction: allowHoverOnLegend ? () => this._onLegendHover(point.title) : undefined,\n onMouseOutAction: allowHoverOnLegend ? isLegendSelected => this._onLegendLeave(isLegendSelected) : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: ILegend[] = legendsOfLine.concat(actions);\n return (\n <Legends\n legends={totalLegends}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n overflowText={this.props.legendsOverflowText}\n {...this.props.legendProps}\n />\n );\n }\n\n private _onRectHover(\n xAxisPoint: string,\n point: IVSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n this._onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n private _onRectFocusHover(\n xAxisPoint: string,\n point: IVSChartDataPoint,\n color: string,\n refSelected: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n if (this._calloutAnchorPoint !== point) {\n this._calloutAnchorPoint = point;\n this.setState({\n refSelected,\n /**\n * Show the callout if highlighted bar is focused/hovered\n * and Hide it if unhighlighted bar is focused/hovered\n */\n isCalloutVisible:\n this.state.isLegendSelected === false ||\n (this.state.isLegendSelected === true && this.state.selectedLegendTitle === point.legend),\n calloutLegend: point.legend,\n dataForHoverCard: point.data,\n color,\n xCalloutValue: point.xAxisCalloutData ? point.xAxisCalloutData : xAxisPoint,\n yCalloutValue: point.yAxisCalloutData,\n dataPointCalloutProps: point,\n callOutAccessibilityData: point.callOutAccessibilityData,\n });\n }\n }\n\n private _lineHover = (lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) => {\n mouseEvent.persist();\n this.setState({\n refSelected: mouseEvent,\n isCalloutVisible: true,\n xCalloutValue: `${lineData.xItem.xAxisPoint}`,\n yCalloutValue: `${lineData.yAxisCalloutData || lineData.data || lineData.y}`,\n activeXAxisDataPoint: lineData.xItem.xAxisPoint,\n color: lineData.color,\n });\n };\n\n private _lineHoverOut = () => {\n this.setState({\n refSelected: null,\n isCalloutVisible: false,\n xCalloutValue: '',\n yCalloutValue: '',\n activeXAxisDataPoint: '',\n color: '',\n });\n };\n\n private _onStackHover(stack: IVerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n this._onStackHoverFocus(stack, mouseEvent);\n }\n\n private _onStackHoverFocus(\n stack: IVerticalStackedChartProps,\n refSelected: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: ILineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n this.setState({\n refSelected,\n isCalloutVisible: true,\n YValueHover: isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n hoverXValue: stack.xAxisPoint,\n stackCalloutProps: stack,\n activeXAxisDataPoint: stack.xAxisPoint,\n callOutAccessibilityData: stack.stackCallOutAccessibilityData,\n });\n }\n\n private _onRectFocus(point: IVSChartDataPoint, xAxisPoint: string, color: string, ref: IRefArrayData): void {\n if (ref.refElement) {\n this._onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n private _onStackFocus(stack: IVerticalStackedChartProps, groupRef: IRefArrayData): void {\n if (groupRef.refElement) {\n this._onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n private _handleMouseOut = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({\n isCalloutVisible: false,\n activeXAxisDataPoint: '',\n });\n };\n\n private _onClick(\n data: IVerticalStackedChartProps | IVSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n this.props.onBarClick?.(mouseEvent, data);\n this.props.href ? (window.location.href = this.props.href) : '';\n }\n\n private _getBarGapAndScale(\n bars: IVSChartDataPoint[],\n yBarScale: NumericScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n } {\n const { barGapMax = 0 } = this.props;\n\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n const totalData = bars.reduce((iter, value) => iter + value.data, 0);\n const totalHeight = defaultTotalHeight ?? yBarScale(totalData);\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale = (totalHeight - gapHeight * gaps) / totalData;\n\n return {\n gapHeight,\n heightValueScale,\n } as const;\n }\n\n private _createBar = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xBarScale: any,\n yBarScale: NumericScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element[] => {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = this.props;\n const _isHavingLines = this.props.data.some(\n (item: IVerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = this._toFocusWholeStack(_isHavingLines);\n\n const bars = this._points.map((singleChartData: IVerticalStackedChartProps, indexNumber: number) => {\n let yPoint = containerHeight - this.margins.bottom!;\n const xPoint = xBarScale(\n this._xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : (singleChartData.xAxisPoint as string),\n );\n\n // Removing datapoints with zero data\n const barsToDisplay = singleChartData.chartData.filter(point => point.data > 0);\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale } = this._getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const singleBar = barsToDisplay.map((point: IVSChartDataPoint, index: number) => {\n const color = point.color ? point.color : this._colors[index];\n const ref: IRefArrayData = {};\n\n let shouldHighlight = true;\n if (this.state.isLegendHovered || this.state.isLegendSelected) {\n shouldHighlight = this.state.selectedLegendTitle === point.legend;\n }\n const classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n shouldHighlight: shouldHighlight,\n href: this.props.href,\n });\n const rectFocusProps = !shouldFocusWholeStack && {\n 'data-is-focusable': !this.props.hideTooltip,\n 'aria-labelledby': `toolTip${this._calloutId}`,\n onMouseOver: this._onRectHover.bind(this, singleChartData.xAxisPoint, point, color),\n onMouseMove: this._onRectHover.bind(this, singleChartData.xAxisPoint, point, color),\n onMouseLeave: this._handleMouseOut,\n onFocus: this._onRectFocus.bind(this, point, singleChartData.xAxisPoint, color, ref),\n onBlur: this._handleMouseOut,\n onClick: this._onClick.bind(this, point),\n };\n\n let barHeight = heightValueScale * point.data;\n if (barHeight < barMinimumHeight) {\n barHeight = barMinimumHeight;\n }\n yPoint = yPoint - barHeight - (index ? gapHeight : 0);\n\n const xScaleBandwidthTranslate = this._xAxisType === XAxisTypes.NumericAxis ? 0 : xBarScale.bandwidth() / 2;\n\n // If set, apply the corner radius to the top of the final bar\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <path\n key={index + indexNumber + `${shouldFocusWholeStack}`}\n className={classNames.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${this._barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-this._barWidth}\n z\n `}\n fill={color}\n ref={e => (ref.refElement = e)}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...rectFocusProps}\n />\n );\n }\n if (barHeight < 1) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <rect\n key={index + indexNumber}\n className={classNames.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={this._barWidth}\n height={barHeight}\n fill={color}\n ref={e => (ref.refElement = e)}\n {...rectFocusProps}\n role=\"text\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n );\n });\n const groupRef: IRefArrayData = {};\n const stackFocusProps = shouldFocusWholeStack && {\n 'data-is-focusable': !this.props.hideTooltip,\n 'aria-labelledby': `toolTip${this._calloutId}`,\n onMouseOver: this._onStackHover.bind(this, singleChartData),\n onMouseMove: this._onStackHover.bind(this, singleChartData),\n onMouseLeave: this._handleMouseOut,\n onFocus: this._onStackFocus.bind(this, singleChartData, groupRef),\n onBlur: this._handleMouseOut,\n onClick: this._onClick.bind(this, singleChartData),\n role: 'text',\n };\n return (\n <g\n key={indexNumber + `${shouldFocusWholeStack}`}\n id={`${indexNumber}-singleBar`}\n ref={e => (groupRef.refElement = e)}\n {...stackFocusProps}\n >\n {singleBar}\n </g>\n );\n });\n const className = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\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: className.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\n };\n\n private _getScales = (containerHeight: number, containerWidth: number, isNumeric: boolean) => {\n const yMax = this._yMax;\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([0, containerHeight - this.margins.bottom! - this.margins.top!]);\n if (isNumeric) {\n const xMax = d3Max(this._dataset, (point: IDataPoint) => point.x as number)!;\n const xMin = d3Min(this._dataset, (point: IDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(this._isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([this.margins.left!, containerWidth - this.margins.right! - this._barWidth]);\n\n return { xBarScale, yBarScale };\n } else {\n const xBarScale = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range([\n this.margins.left! - this._additionalSpace,\n containerWidth - this.margins.right! - this._additionalSpace,\n ])\n .padding(this.props.xAxisPadding || 0.1);\n\n return { xBarScale, yBarScale };\n }\n };\n\n private _createNumericBars = (\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n ): JSX.Element[] => {\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, true);\n\n return this._createBar(xBarScale, yBarScale, containerHeight, xElement);\n };\n\n private _createStringBars = (\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n ): JSX.Element[] => {\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, false);\n\n return this._createBar(xBarScale, yBarScale, containerHeight, xElement);\n };\n\n private _getGraphData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) => {\n return (this._bars =\n this._xAxisType === XAxisTypes.NumericAxis\n ? this._createNumericBars(containerHeight, containerWidth, xElement!)\n : this._createStringBars(containerHeight, containerWidth, xElement!));\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\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"]}
1
+ {"version":3,"file":"VerticalStackedBarChart.base.js","sourceRoot":"../src/","sources":["components/VerticalStackedBarChart/VerticalStackedBarChart.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 { Axis as D3Axis } from 'd3-axis';\nimport { select as d3Select } from 'd3-selection';\nimport { scaleLinear as d3ScaleLinear, ScaleLinear as D3ScaleLinear, scaleBand as d3ScaleBand } from 'd3-scale';\nimport { classNamesFunction, getId, getRTL, warnDeprecations, memoizeFunction } from '@fluentui/react/lib/Utilities';\nimport { IPalette } from '@fluentui/react/lib/Styling';\nimport { DirectionalHint } from '@fluentui/react/lib/Callout';\nimport { ILegend, Legends } from '../Legends/index';\nimport {\n IAccessibilityProps,\n CartesianChart,\n ChartHoverCard,\n IBasestate,\n IChildProps,\n IDataPoint,\n IMargins,\n IVerticalStackedBarChartProps,\n IVerticalStackedBarChartStyleProps,\n IVerticalStackedBarChartStyles,\n IVerticalStackedChartProps,\n IVSChartDataPoint,\n ILineDataInVerticalStackedBarChart,\n IModifiedCartesianChartProps,\n} from '../../index';\nimport { FocusZoneDirection } from '@fluentui/react-focus';\nimport {\n ChartTypes,\n IAxisData,\n getAccessibleDataObject,\n XAxisTypes,\n getTypeOfAxis,\n tooltipOfXAxislabels,\n} from '../../utilities/index';\n\nconst getClassNames = classNamesFunction<IVerticalStackedBarChartStyleProps, IVerticalStackedBarChartStyles>();\ntype NumericAxis = D3Axis<number | { valueOf(): number }>;\ntype NumericScale = D3ScaleLinear<number, number>;\nconst COMPONENT_NAME = 'VERTICAL STACKED BAR CHART';\n\n// When displaying gaps between bars, the max height of the gap is given in the\n// props. The actual gap is calculated with this multiplier, with a minimum gap\n// of 1 pixel. (If these values are changed, update the comment for barGapMax.)\nconst barGapMultiplier = 0.2;\nconst barGapMin = 1;\n\ninterface IRefArrayData {\n refElement?: SVGGElement | null;\n}\n\ntype LinePoint = ILineDataInVerticalStackedBarChart & { index: number; xItem: IVerticalStackedChartProps };\ntype LineObject = { [key: string]: LinePoint[] };\ntype LineLegends = {\n title: string;\n color: string;\n};\nenum CircleVisbility {\n show = 'visibility',\n hide = 'hidden',\n}\n\nexport interface IVerticalStackedBarChartState extends IBasestate {\n dataPointCalloutProps?: IVSChartDataPoint;\n stackCalloutProps?: IVerticalStackedChartProps;\n activeXAxisDataPoint: number | string;\n callOutAccessibilityData?: IAccessibilityProps;\n calloutLegend: string;\n}\nexport class VerticalStackedBarChartBase extends React.Component<\n IVerticalStackedBarChartProps,\n IVerticalStackedBarChartState\n> {\n private _points: IVerticalStackedChartProps[];\n private _dataset: IDataPoint[];\n private _xAxisLabels: string[];\n private _bars: JSX.Element[];\n private _xAxisType: XAxisTypes;\n private _barWidth: number;\n private _additionalSpace: number;\n private _calloutId: string;\n private _colors: string[];\n private margins: IMargins;\n private _isRtl: boolean = getRTL();\n private _createLegendsForLine: (data: IVerticalStackedChartProps[]) => LineLegends[];\n private _lineObject: LineObject;\n private _tooltipId: string;\n private _yMax: number;\n private _calloutAnchorPoint: IVSChartDataPoint | null;\n\n public constructor(props: IVerticalStackedBarChartProps) {\n super(props);\n this.state = {\n isCalloutVisible: false,\n selectedLegend: '',\n activeLegend: '',\n refSelected: null,\n dataForHoverCard: 0,\n color: '',\n hoverXValue: '',\n YValueHover: [],\n xCalloutValue: '',\n yCalloutValue: '',\n activeXAxisDataPoint: '',\n calloutLegend: '',\n };\n warnDeprecations(COMPONENT_NAME, props, {\n colors: 'IVSChartDataPoint.color',\n chartLabel: 'use your own title for chart',\n });\n this._handleMouseOut = this._handleMouseOut.bind(this);\n this._calloutId = getId('callout');\n this._tooltipId = getId('VSBCTooltipId_');\n this._adjustProps();\n this._dataset = this._createDataSetLayer();\n this._createLegendsForLine = memoizeFunction((data: IVerticalStackedChartProps[]) => this._getLineLegends(data));\n }\n\n public componentDidUpdate(prevProps: IVerticalStackedBarChartProps): void {\n if (\n prevProps.height !== this.props.height ||\n prevProps.width !== this.props.width ||\n prevProps.data !== this.props.data\n ) {\n this._adjustProps();\n this._dataset = this._createDataSetLayer();\n }\n }\n\n public render(): React.ReactNode {\n this._adjustProps();\n const _isHavingLines = this.props.data.some(\n (item: IVerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = this._toFocusWholeStack(_isHavingLines);\n const { isCalloutForStack = false } = this.props;\n this._dataset = this._createDataSetLayer();\n const legendBars: JSX.Element = this._getLegendData(\n this._points,\n this.props.theme!.palette,\n this._createLegendsForLine(this.props.data),\n );\n\n const calloutProps: IModifiedCartesianChartProps['calloutProps'] = {\n isCalloutVisible: this.state.isCalloutVisible,\n directionalHint: DirectionalHint.topAutoEdge,\n id: `toolTip${this._calloutId}`,\n target: this.state.refSelected,\n isBeakVisible: false,\n gapSpace: 15,\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 preventDismissOnLostFocus: true,\n ...this.props.calloutProps,\n ...getAccessibleDataObject(this.state.callOutAccessibilityData),\n };\n const tickParams = {\n tickValues: this.props.tickValues,\n tickFormat: this.props.tickFormat,\n };\n\n return (\n <CartesianChart\n {...this.props}\n points={this._dataset}\n chartType={ChartTypes.VerticalStackedBarChart}\n xAxisType={this._xAxisType}\n calloutProps={calloutProps}\n tickParams={tickParams}\n legendBars={legendBars}\n datasetForXAxisDomain={this._xAxisLabels}\n isCalloutForStack={shouldFocusWholeStack}\n barwidth={this._barWidth}\n focusZoneDirection={\n isCalloutForStack || _isHavingLines ? FocusZoneDirection.horizontal : FocusZoneDirection.vertical\n }\n getmargins={this._getMargins}\n getGraphData={this._getGraphData}\n getAxisData={this._getAxisData}\n customizedCallout={this._getCustomizedCallout()}\n onChartMouseLeave={this._handleChartMouseLeave}\n /* eslint-disable react/jsx-no-bind */\n // eslint-disable-next-line react/no-children-prop\n children={(props: IChildProps) => {\n return (\n <>\n <g>{this._bars}</g>\n <g>\n {_isHavingLines &&\n this._createLines(props.xScale!, props.yScale!, props.containerHeight!, props.containerWidth!)}\n </g>\n </>\n );\n }}\n />\n );\n }\n\n /**\n * This function tells us what to focus either the whole stack as focusable item.\n * or each individual item in the stack as focusable item. basically it depends\n * on the prop `isCalloutForStack` if it's false user can focus each individual bar\n * within the bar if it's true then user can focus whole bar as item.\n * but if we have lines in the chart then we force the user to focus only the whole\n * bar, even if isCalloutForStack is false\n */\n private _toFocusWholeStack = (_isHavingLines: boolean): boolean => {\n const { isCalloutForStack = false } = this.props;\n let shouldFocusStackOnly: boolean = false;\n if (_isHavingLines) {\n if (this.state.selectedLegend !== '') {\n shouldFocusStackOnly = false;\n } else {\n shouldFocusStackOnly = true;\n }\n } else {\n shouldFocusStackOnly = isCalloutForStack;\n }\n return shouldFocusStackOnly;\n };\n\n private _getFormattedLineData = (data: IVerticalStackedChartProps[]): LineObject => {\n const linesData: LinePoint[] = [];\n const formattedLineData: LineObject = {};\n data.forEach((item: IVerticalStackedChartProps, index: number) => {\n if (item.lineData) {\n // injecting corresponding x data point in each of the line data\n // we inject index also , it will be helpful to draw lines when x axis is\n // of string type\n item.lineData.forEach(line => {\n linesData.push({\n ...line,\n index,\n xItem: item,\n });\n });\n }\n });\n linesData.forEach(item => {\n if (formattedLineData[item.legend]) {\n formattedLineData[item.legend].push(item);\n } else {\n formattedLineData[item.legend] = [item];\n }\n });\n return formattedLineData;\n };\n\n private _getLineLegends = (data: IVerticalStackedChartProps[]): LineLegends[] => {\n const lineObject: LineObject = this._lineObject;\n const lineLegends: LineLegends[] = [];\n Object.keys(lineObject).forEach((item: string) => {\n lineLegends.push({\n title: item,\n color: lineObject[item][0].color,\n });\n });\n return lineLegends;\n };\n\n private _createLines = (\n xScale: NumericScale,\n yScale: NumericScale,\n containerHeight: number,\n containerWidth: number,\n ): JSX.Element => {\n const isNumeric = this._xAxisType === XAxisTypes.NumericAxis;\n const { xBarScale } = this._getScales(containerHeight, containerWidth, isNumeric);\n const lineObject: LineObject = this._getFormattedLineData(this.props.data);\n const lines: React.ReactNode[] = [];\n const borderForLines: React.ReactNode[] = [];\n const dots: React.ReactNode[] = [];\n const { theme } = this.props;\n const lineBorderWidth = this.props.lineOptions?.lineBorderWidth\n ? Number.parseFloat(this.props.lineOptions!.lineBorderWidth!.toString())\n : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const xScaleBandwidthTranslate = isNumeric ? 0 : (xBarScale as any).bandwidth() / 2;\n Object.keys(lineObject).forEach((item: string, index: number) => {\n const shouldHighlight = this._legendHighlighted(item) || this._noLegendHighlighted(); // item is legend name\n for (let i = 1; i < lineObject[item].length; i++) {\n const x1 = isNumeric\n ? xScale(lineObject[item][i - 1].xItem.xAxisPoint as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (xBarScale as any)(lineObject[item][i - 1].xItem.xAxisPoint as string) + this._additionalSpace;\n const y1 = yScale(lineObject[item][i - 1].y);\n const x2 = isNumeric\n ? xScale(lineObject[item][i].xItem.xAxisPoint as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (xBarScale as any)(lineObject[item][i].xItem.xAxisPoint as string) + this._additionalSpace;\n const y2 = yScale(lineObject[item][i].y);\n\n if (lineBorderWidth > 0) {\n borderForLines.push(\n <line\n key={`${index}-${i}-BorderLine`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3 + lineBorderWidth * 2}\n fill=\"transparent\"\n strokeLinecap=\"round\"\n stroke={theme!.palette.white}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n }\n lines.push(\n <line\n key={`${index}-${i}-line`}\n x1={x1}\n y1={y1}\n x2={x2}\n y2={y2}\n opacity={shouldHighlight ? 1 : 0.1}\n strokeWidth={3}\n strokeLinecap=\"round\"\n stroke={lineObject[item][i].color}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...(this.state.selectedLegend === item && {\n onMouseOver: this._lineHover.bind(this, lineObject[item][i - 1]),\n onMouseLeave: this._lineHoverOut,\n })}\n />,\n );\n }\n });\n Object.keys(lineObject).forEach((item: string, index: number) => {\n lineObject[item].forEach((circlePoint: LinePoint, subIndex: number) => {\n dots.push(\n <circle\n key={`${index}-${subIndex}-dot`}\n cx={\n isNumeric\n ? xScale(circlePoint.xItem.xAxisPoint as number)\n : // eslint-disable-next-line @typescript-eslint/no-explicit-any\n (xBarScale as any)(circlePoint.xItem.xAxisPoint as string) + this._additionalSpace\n }\n cy={yScale(circlePoint.y)}\n onMouseOver={\n this.state.selectedLegend === item\n ? this._lineHover.bind(this, circlePoint)\n : this._onStackHover.bind(this, circlePoint.xItem)\n }\n {...(this.state.selectedLegend === item && {\n onMouseLeave: this._lineHoverOut,\n })}\n r={this._getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).radius}\n stroke={circlePoint.color}\n fill={this.props.theme!.palette.white}\n strokeWidth={3}\n visibility={this._getCircleVisibilityAndRadius(circlePoint.xItem.xAxisPoint, circlePoint.legend).visibility}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />,\n );\n });\n });\n return (\n <>\n {borderForLines}\n {lines}\n {dots}\n </>\n );\n };\n\n private _getCircleVisibilityAndRadius = (\n xAxispoint: string | number,\n legend: string,\n ): { visibility: CircleVisbility; radius: number } => {\n const { selectedLegend, activeXAxisDataPoint } = this.state;\n if (selectedLegend !== '') {\n if (xAxispoint === activeXAxisDataPoint && selectedLegend === legend) {\n return { visibility: CircleVisbility.show, radius: 8 };\n } else if (selectedLegend === legend) {\n return { visibility: CircleVisbility.show, radius: 0.3 };\n } else {\n return { visibility: CircleVisbility.hide, radius: 0 };\n }\n } else {\n return {\n visibility: activeXAxisDataPoint === xAxispoint ? CircleVisbility.show : CircleVisbility.hide,\n radius: 8,\n };\n }\n };\n\n private _adjustProps(): void {\n this._points = this.props.data || [];\n this._barWidth = this.props.barWidth || 32;\n this._additionalSpace = 0.5 * this._barWidth;\n const { theme } = this.props;\n const { palette } = theme!;\n // eslint-disable-next-line deprecation/deprecation\n this._colors = this.props.colors || [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n this._xAxisType = getTypeOfAxis(this.props.data[0].xAxisPoint, true) as XAxisTypes;\n this._lineObject = this._getFormattedLineData(this.props.data);\n }\n\n private _createDataSetLayer(): IDataPoint[] {\n const tempArr: string[] = [];\n const dataset: IDataPoint[] = this._points.map(singlePointData => {\n let total: number = 0;\n singlePointData.chartData!.forEach((point: IVSChartDataPoint) => {\n total = total + point.data;\n });\n tempArr.push(singlePointData.xAxisPoint as string);\n return {\n x: singlePointData.xAxisPoint,\n y: total,\n };\n });\n this._xAxisLabels = tempArr;\n return dataset;\n }\n\n private _getMargins = (margins: IMargins) => {\n this.margins = margins;\n };\n\n private _renderCallout(props?: IVSChartDataPoint): JSX.Element | null {\n return props ? (\n <ChartHoverCard\n XValue={props.xAxisCalloutData}\n Legend={props.legend}\n YValue={props.yAxisCalloutData}\n color={props.color}\n culture={this.props.culture}\n />\n ) : null;\n }\n\n private _getCustomizedCallout = () => {\n const _isHavingLines = this.props.data.some(\n (item: IVerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n return this.props.onRenderCalloutPerStack\n ? this.props.onRenderCalloutPerStack(this.state.stackCalloutProps)\n : this.props.onRenderCalloutPerDataPoint && !_isHavingLines\n ? this.props.onRenderCalloutPerDataPoint(this.state.dataPointCalloutProps, this._renderCallout)\n : null;\n };\n\n private _onLegendClick(legendTitle: string): void {\n if (this.state.selectedLegend === legendTitle) {\n this.setState({\n selectedLegend: '',\n });\n } else {\n this.setState({\n selectedLegend: legendTitle,\n });\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(\n data: IVerticalStackedChartProps[],\n palette: IPalette,\n lineLegends: LineLegends[],\n ): JSX.Element {\n if (this.props.hideLegend) {\n return <></>;\n }\n const defaultPalette: string[] = [palette.blueLight, palette.blue, palette.blueMid, palette.red, palette.black];\n const actions: ILegend[] = [];\n const { allowHoverOnLegend = true } = this.props;\n\n data.forEach((singleChartData: IVerticalStackedChartProps) => {\n singleChartData.chartData.forEach((point: IVSChartDataPoint) => {\n const color: string = point.color ? point.color : defaultPalette[Math.floor(Math.random() * 4 + 1)];\n const checkSimilarLegends = actions.filter((leg: ILegend) => leg.title === point.legend && leg.color === color);\n if (checkSimilarLegends!.length > 0) {\n return;\n }\n\n const legend: ILegend = {\n title: point.legend,\n color: color,\n action: () => {\n this._onLegendClick(point.legend);\n },\n hoverAction: allowHoverOnLegend ? () => this._onLegendHover(point.legend) : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => this._onLegendLeave() : undefined,\n };\n\n actions.push(legend);\n });\n });\n const legendsOfLine: ILegend[] = [];\n if (lineLegends && lineLegends.length > 0) {\n lineLegends.forEach((point: LineLegends) => {\n const legend: ILegend = {\n title: point.title,\n color: point.color,\n isLineLegendInBarChart: true,\n action: () => {\n this._onLegendClick(point.title);\n },\n hoverAction: allowHoverOnLegend ? () => this._onLegendHover(point.title) : undefined,\n onMouseOutAction: allowHoverOnLegend ? () => this._onLegendLeave() : undefined,\n };\n legendsOfLine.push(legend);\n });\n }\n const totalLegends: ILegend[] = legendsOfLine.concat(actions);\n return (\n <Legends\n legends={totalLegends}\n overflowProps={this.props.legendsOverflowProps}\n enabledWrapLines={this.props.enabledLegendsWrapLines}\n focusZonePropsInHoverCard={this.props.focusZonePropsForLegendsInHoverCard}\n overflowText={this.props.legendsOverflowText}\n {...this.props.legendProps}\n />\n );\n }\n\n private _onRectHover(\n xAxisPoint: string,\n point: IVSChartDataPoint,\n color: string,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n mouseEvent.persist();\n this._onRectFocusHover(xAxisPoint, point, color, mouseEvent);\n }\n\n private _onRectFocusHover(\n xAxisPoint: string,\n point: IVSChartDataPoint,\n color: string,\n refSelected: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n if (this._calloutAnchorPoint !== point) {\n this._calloutAnchorPoint = point;\n this.setState({\n refSelected,\n /**\n * Show the callout if highlighted bar is focused/hovered\n * and Hide it if unhighlighted bar is focused/hovered\n */\n isCalloutVisible: this.state.selectedLegend === '' || this.state.selectedLegend === point.legend,\n calloutLegend: point.legend,\n dataForHoverCard: point.data,\n color,\n xCalloutValue: point.xAxisCalloutData ? point.xAxisCalloutData : xAxisPoint,\n yCalloutValue: point.yAxisCalloutData,\n dataPointCalloutProps: point,\n callOutAccessibilityData: point.callOutAccessibilityData,\n });\n }\n }\n\n private _lineHover = (lineData: LinePoint, mouseEvent: React.MouseEvent<SVGElement>) => {\n mouseEvent.persist();\n this.setState({\n refSelected: mouseEvent,\n isCalloutVisible: true,\n xCalloutValue: `${lineData.xItem.xAxisPoint}`,\n yCalloutValue: `${lineData.yAxisCalloutData || lineData.data || lineData.y}`,\n activeXAxisDataPoint: lineData.xItem.xAxisPoint,\n color: lineData.color,\n });\n };\n\n private _lineHoverOut = () => {\n this.setState({\n refSelected: null,\n isCalloutVisible: false,\n xCalloutValue: '',\n yCalloutValue: '',\n activeXAxisDataPoint: '',\n color: '',\n });\n };\n\n private _onStackHover(stack: IVerticalStackedChartProps, mouseEvent: React.MouseEvent<SVGElement>): void {\n mouseEvent.persist();\n this._onStackHoverFocus(stack, mouseEvent);\n }\n\n private _onStackHoverFocus(\n stack: IVerticalStackedChartProps,\n refSelected: React.MouseEvent<SVGElement> | SVGGElement,\n ): void {\n const lineData = stack.lineData;\n const isLinesPresent: boolean = lineData !== undefined && lineData.length > 0;\n if (isLinesPresent) {\n lineData!.forEach((item: ILineDataInVerticalStackedBarChart & { shouldDrawBorderBottom?: boolean }) => {\n item.data = item.data || item.y;\n item.shouldDrawBorderBottom = true;\n });\n }\n this.setState({\n refSelected,\n isCalloutVisible: true,\n YValueHover: isLinesPresent\n ? [...lineData!.sort((a, b) => (a.data! < b.data! ? 1 : -1)), ...stack.chartData.slice().reverse()]\n : stack.chartData.slice().reverse(),\n hoverXValue: stack.xAxisPoint,\n stackCalloutProps: stack,\n activeXAxisDataPoint: stack.xAxisPoint,\n callOutAccessibilityData: stack.stackCallOutAccessibilityData,\n });\n }\n\n private _onRectFocus(point: IVSChartDataPoint, xAxisPoint: string, color: string, ref: IRefArrayData): void {\n if (ref.refElement) {\n this._onRectFocusHover(xAxisPoint, point, color, ref.refElement);\n }\n }\n\n private _onStackFocus(stack: IVerticalStackedChartProps, groupRef: IRefArrayData): void {\n if (groupRef.refElement) {\n this._onStackHoverFocus(stack, groupRef.refElement);\n }\n }\n\n private _handleMouseOut = (): void => {\n /**/\n };\n\n private _handleChartMouseLeave = (): void => {\n this._calloutAnchorPoint = null;\n this.setState({\n isCalloutVisible: false,\n activeXAxisDataPoint: '',\n });\n };\n\n private _onClick(\n data: IVerticalStackedChartProps | IVSChartDataPoint,\n mouseEvent: React.MouseEvent<SVGElement>,\n ): void {\n this.props.onBarClick?.(mouseEvent, data);\n this.props.href ? (window.location.href = this.props.href) : '';\n }\n\n private _getBarGapAndScale(\n bars: IVSChartDataPoint[],\n yBarScale: NumericScale,\n defaultTotalHeight?: number,\n ): {\n readonly gapHeight: number;\n readonly heightValueScale: number;\n } {\n const { barGapMax = 0 } = this.props;\n\n // When displaying gaps between the bars, the height of each bar is\n // adjusted so that the total of all bars is not changed by the gaps\n const totalData = bars.reduce((iter, value) => iter + value.data, 0);\n const totalHeight = defaultTotalHeight ?? yBarScale(totalData);\n const gaps = barGapMax && bars.length - 1;\n const gapHeight = gaps && Math.max(barGapMin, Math.min(barGapMax, (totalHeight * barGapMultiplier) / gaps));\n const heightValueScale = (totalHeight - gapHeight * gaps) / totalData;\n\n return {\n gapHeight,\n heightValueScale,\n } as const;\n }\n\n private _createBar = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xBarScale: any,\n yBarScale: NumericScale,\n containerHeight: number,\n xElement: SVGElement,\n ): JSX.Element[] => {\n const { barCornerRadius = 0, barMinimumHeight = 0 } = this.props;\n const _isHavingLines = this.props.data.some(\n (item: IVerticalStackedChartProps) => item.lineData && item.lineData.length > 0,\n );\n const shouldFocusWholeStack = this._toFocusWholeStack(_isHavingLines);\n\n const bars = this._points.map((singleChartData: IVerticalStackedChartProps, indexNumber: number) => {\n let yPoint = containerHeight - this.margins.bottom!;\n const xPoint = xBarScale(\n this._xAxisType === XAxisTypes.NumericAxis\n ? (singleChartData.xAxisPoint as number)\n : (singleChartData.xAxisPoint as string),\n );\n\n // Removing datapoints with zero data\n const barsToDisplay = singleChartData.chartData.filter(point => point.data > 0);\n\n if (!barsToDisplay.length) {\n return undefined;\n }\n\n const { gapHeight, heightValueScale } = this._getBarGapAndScale(barsToDisplay, yBarScale);\n\n if (heightValueScale < 0) {\n return undefined;\n }\n\n const singleBar = barsToDisplay.map((point: IVSChartDataPoint, index: number) => {\n const color = point.color ? point.color : this._colors[index];\n const ref: IRefArrayData = {};\n\n const shouldHighlight = this._legendHighlighted(point.legend) || this._noLegendHighlighted() ? true : false;\n const classNames = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n shouldHighlight: shouldHighlight,\n href: this.props.href,\n });\n const rectFocusProps = !shouldFocusWholeStack && {\n 'data-is-focusable': !this.props.hideTooltip,\n 'aria-labelledby': `toolTip${this._calloutId}`,\n onMouseOver: this._onRectHover.bind(this, singleChartData.xAxisPoint, point, color),\n onMouseMove: this._onRectHover.bind(this, singleChartData.xAxisPoint, point, color),\n onMouseLeave: this._handleMouseOut,\n onFocus: this._onRectFocus.bind(this, point, singleChartData.xAxisPoint, color, ref),\n onBlur: this._handleMouseOut,\n onClick: this._onClick.bind(this, point),\n };\n\n let barHeight = heightValueScale * point.data;\n if (barHeight < barMinimumHeight) {\n barHeight = barMinimumHeight;\n }\n yPoint = yPoint - barHeight - (index ? gapHeight : 0);\n\n const xScaleBandwidthTranslate = this._xAxisType === XAxisTypes.NumericAxis ? 0 : xBarScale.bandwidth() / 2;\n\n // If set, apply the corner radius to the top of the final bar\n if (barCornerRadius && barHeight > barCornerRadius && index === barsToDisplay.length - 1) {\n return (\n <path\n key={index + indexNumber + `${shouldFocusWholeStack}`}\n className={classNames.opacityChangeOnHover}\n d={`\n M ${xPoint} ${yPoint + barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${-barCornerRadius}\n h ${this._barWidth - 2 * barCornerRadius}\n a ${barCornerRadius} ${barCornerRadius} 0 0 1 ${barCornerRadius} ${barCornerRadius}\n v ${barHeight - barCornerRadius}\n h ${-this._barWidth}\n z\n `}\n fill={color}\n ref={e => (ref.refElement = e)}\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n {...rectFocusProps}\n />\n );\n }\n if (barHeight < 1) {\n return <React.Fragment key={index + indexNumber}> </React.Fragment>;\n }\n return (\n <rect\n key={index + indexNumber}\n className={classNames.opacityChangeOnHover}\n x={xPoint}\n y={yPoint}\n width={this._barWidth}\n height={barHeight}\n fill={color}\n ref={e => (ref.refElement = e)}\n {...rectFocusProps}\n role=\"text\"\n transform={`translate(${xScaleBandwidthTranslate}, 0)`}\n />\n );\n });\n const groupRef: IRefArrayData = {};\n const stackFocusProps = shouldFocusWholeStack && {\n 'data-is-focusable': !this.props.hideTooltip,\n 'aria-labelledby': `toolTip${this._calloutId}`,\n onMouseOver: this._onStackHover.bind(this, singleChartData),\n onMouseMove: this._onStackHover.bind(this, singleChartData),\n onMouseLeave: this._handleMouseOut,\n onFocus: this._onStackFocus.bind(this, singleChartData, groupRef),\n onBlur: this._handleMouseOut,\n onClick: this._onClick.bind(this, singleChartData),\n role: 'text',\n };\n return (\n <g\n key={indexNumber + `${shouldFocusWholeStack}`}\n id={`${indexNumber}-singleBar`}\n ref={e => (groupRef.refElement = e)}\n {...stackFocusProps}\n >\n {singleBar}\n </g>\n );\n });\n const className = getClassNames(this.props.styles!, {\n theme: this.props.theme!,\n });\n // Removing un wanted tooltip div from DOM, when prop not provided.\n if (!this.props.showXAxisLablesTooltip) {\n try {\n document.getElementById(this._tooltipId) && document.getElementById(this._tooltipId)!.remove();\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n // Used to display tooltip at x axis labels.\n if (!this.props.wrapXAxisLables && this.props.showXAxisLablesTooltip) {\n const xAxisElement = d3Select(xElement).call(xBarScale);\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: className.tooltip!,\n id: this._tooltipId,\n xAxis: xAxisElement,\n };\n xAxisElement && tooltipOfXAxislabels(tooltipProps);\n }\n return bars.filter((bar): bar is JSX.Element => !!bar);\n };\n\n private _getScales = (containerHeight: number, containerWidth: number, isNumeric: boolean) => {\n const yMax = this._yMax;\n const yBarScale = d3ScaleLinear()\n .domain([0, yMax])\n .range([0, containerHeight - this.margins.bottom! - this.margins.top!]);\n if (isNumeric) {\n const xMax = d3Max(this._dataset, (point: IDataPoint) => point.x as number)!;\n const xMin = d3Min(this._dataset, (point: IDataPoint) => point.x as number)!;\n\n const xBarScale = d3ScaleLinear()\n .domain(this._isRtl ? [xMax, xMin] : [xMin, xMax])\n .nice()\n .range([this.margins.left!, containerWidth - this.margins.right! - this._barWidth]);\n\n return { xBarScale, yBarScale };\n } else {\n const xBarScale = d3ScaleBand()\n .domain(this._xAxisLabels)\n .range([\n this.margins.left! - this._additionalSpace,\n containerWidth - this.margins.right! - this._additionalSpace,\n ])\n .padding(this.props.xAxisPadding || 0.1);\n\n return { xBarScale, yBarScale };\n }\n };\n\n private _createNumericBars = (\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n ): JSX.Element[] => {\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, true);\n\n return this._createBar(xBarScale, yBarScale, containerHeight, xElement);\n };\n\n private _createStringBars = (\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement,\n ): JSX.Element[] => {\n const { xBarScale, yBarScale } = this._getScales(containerHeight, containerWidth, false);\n\n return this._createBar(xBarScale, yBarScale, containerHeight, xElement);\n };\n\n private _getGraphData = (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n xScale: any,\n yScale: NumericAxis,\n containerHeight: number,\n containerWidth: number,\n xElement: SVGElement | null,\n ) => {\n return (this._bars =\n this._xAxisType === XAxisTypes.NumericAxis\n ? this._createNumericBars(containerHeight, containerWidth, xElement!)\n : this._createStringBars(containerHeight, containerWidth, xElement!));\n };\n\n private _closeCallout = () => {\n this.setState({\n isCalloutVisible: false,\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 (\n this.state.selectedLegend === legendTitle ||\n (this.state.selectedLegend === '' && this.state.activeLegend === legendTitle)\n );\n };\n\n /**\n * This function checks if none of the legends is selected or hovered.\n */\n private _noLegendHighlighted = () => {\n return this.state.selectedLegend === '' && this.state.activeLegend === '';\n };\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  define(["require", "exports", "@fluentui/set-version"], function (require, exports, set_version_1) {
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- set_version_1.setVersion('@fluentui/react-charting', '5.14.10');
4
+ set_version_1.setVersion('@fluentui/react-charting', '5.14.12');
5
5
  });
6
6
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"../src/","sources":["version.ts"],"names":[],"mappings":";;;IAGA,wBAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC","sourcesContent":["// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/react-charting', '5.14.10');"]}
1
+ {"version":3,"file":"version.js","sourceRoot":"../src/","sources":["version.ts"],"names":[],"mappings":";;;IAGA,wBAAU,CAAC,0BAA0B,EAAE,SAAS,CAAC,CAAC","sourcesContent":["// Do not modify this file; it is generated as part of publish.\n// The checked in version is a placeholder only and will not be updated.\nimport { setVersion } from '@fluentui/set-version';\nsetVersion('@fluentui/react-charting', '5.14.12');"]}
@@ -71,5 +71,16 @@ export declare class AreaChartBase extends React.Component<IAreaChartProps, IAre
71
71
  private _drawGraph;
72
72
  private _getCircleRadius;
73
73
  private _closeCallout;
74
+ /**
75
+ * This function checks if the given legend is highlighted or not.
76
+ * A legend can be highlighted in 2 ways:
77
+ * 1. selection: if the user clicks on it
78
+ * 2. hovering: if there is no selected legend and the user hovers over it
79
+ */
80
+ private _legendHighlighted;
81
+ /**
82
+ * This function checks if none of the legends is selected or hovered.
83
+ */
84
+ private _noLegendHighlighted;
74
85
  }
75
86
  export {};