@techie_doubts/tui.chart.2026 4.6.1

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 (284) hide show
  1. package/README.md +165 -0
  2. package/dist/esm/animator.d.ts +32 -0
  3. package/dist/esm/animator.js +102 -0
  4. package/dist/esm/brushes/axis.d.ts +3 -0
  5. package/dist/esm/brushes/axis.js +21 -0
  6. package/dist/esm/brushes/basic.d.ts +9 -0
  7. package/dist/esm/brushes/basic.js +95 -0
  8. package/dist/esm/brushes/boxPlot.d.ts +2 -0
  9. package/dist/esm/brushes/boxPlot.js +22 -0
  10. package/dist/esm/brushes/circleLegend.d.ts +2 -0
  11. package/dist/esm/brushes/circleLegend.js +26 -0
  12. package/dist/esm/brushes/dataLabel.d.ts +6 -0
  13. package/dist/esm/brushes/dataLabel.js +176 -0
  14. package/dist/esm/brushes/exportMenu.d.ts +2 -0
  15. package/dist/esm/brushes/exportMenu.js +55 -0
  16. package/dist/esm/brushes/gauge.d.ts +2 -0
  17. package/dist/esm/brushes/gauge.js +39 -0
  18. package/dist/esm/brushes/label.d.ts +34 -0
  19. package/dist/esm/brushes/label.js +165 -0
  20. package/dist/esm/brushes/legend.d.ts +7 -0
  21. package/dist/esm/brushes/legend.js +162 -0
  22. package/dist/esm/brushes/lineSeries.d.ts +5 -0
  23. package/dist/esm/brushes/lineSeries.js +41 -0
  24. package/dist/esm/brushes/polygon.d.ts +2 -0
  25. package/dist/esm/brushes/polygon.js +24 -0
  26. package/dist/esm/brushes/resetButton.d.ts +3 -0
  27. package/dist/esm/brushes/resetButton.js +112 -0
  28. package/dist/esm/brushes/scatterSeries.d.ts +2 -0
  29. package/dist/esm/brushes/scatterSeries.js +125 -0
  30. package/dist/esm/brushes/sector.d.ts +2 -0
  31. package/dist/esm/brushes/sector.js +54 -0
  32. package/dist/esm/brushes/spectrumLegend.d.ts +14 -0
  33. package/dist/esm/brushes/spectrumLegend.js +199 -0
  34. package/dist/esm/charts/areaChart.d.ts +254 -0
  35. package/dist/esm/charts/areaChart.js +358 -0
  36. package/dist/esm/charts/barChart.d.ts +203 -0
  37. package/dist/esm/charts/barChart.js +300 -0
  38. package/dist/esm/charts/boxPlotChart.d.ts +209 -0
  39. package/dist/esm/charts/boxPlotChart.js +288 -0
  40. package/dist/esm/charts/bubbleChart.d.ts +188 -0
  41. package/dist/esm/charts/bubbleChart.js +263 -0
  42. package/dist/esm/charts/bulletChart.d.ts +199 -0
  43. package/dist/esm/charts/bulletChart.js +278 -0
  44. package/dist/esm/charts/chart.d.ts +133 -0
  45. package/dist/esm/charts/chart.js +484 -0
  46. package/dist/esm/charts/columnChart.d.ts +205 -0
  47. package/dist/esm/charts/columnChart.js +299 -0
  48. package/dist/esm/charts/columnLineChart.d.ts +271 -0
  49. package/dist/esm/charts/columnLineChart.js +386 -0
  50. package/dist/esm/charts/gaugeChart.d.ts +191 -0
  51. package/dist/esm/charts/gaugeChart.js +279 -0
  52. package/dist/esm/charts/heatmapChart.d.ts +199 -0
  53. package/dist/esm/charts/heatmapChart.js +292 -0
  54. package/dist/esm/charts/lineAreaChart.d.ts +271 -0
  55. package/dist/esm/charts/lineAreaChart.js +374 -0
  56. package/dist/esm/charts/lineChart.d.ts +253 -0
  57. package/dist/esm/charts/lineChart.js +360 -0
  58. package/dist/esm/charts/lineScatterChart.d.ts +200 -0
  59. package/dist/esm/charts/lineScatterChart.js +285 -0
  60. package/dist/esm/charts/nestedPieChart.d.ts +192 -0
  61. package/dist/esm/charts/nestedPieChart.js +268 -0
  62. package/dist/esm/charts/pieChart.d.ts +156 -0
  63. package/dist/esm/charts/pieChart.js +224 -0
  64. package/dist/esm/charts/radarChart.d.ts +169 -0
  65. package/dist/esm/charts/radarChart.js +240 -0
  66. package/dist/esm/charts/radialBarChart.d.ts +172 -0
  67. package/dist/esm/charts/radialBarChart.js +251 -0
  68. package/dist/esm/charts/scatterChart.d.ts +184 -0
  69. package/dist/esm/charts/scatterChart.js +279 -0
  70. package/dist/esm/charts/treemapChart.d.ts +166 -0
  71. package/dist/esm/charts/treemapChart.js +239 -0
  72. package/dist/esm/component/areaSeries.d.ts +96 -0
  73. package/dist/esm/component/areaSeries.js +474 -0
  74. package/dist/esm/component/axis.d.ts +40 -0
  75. package/dist/esm/component/axis.js +176 -0
  76. package/dist/esm/component/axisTitle.d.ts +25 -0
  77. package/dist/esm/component/axisTitle.js +67 -0
  78. package/dist/esm/component/axisUsingCenterY.d.ts +32 -0
  79. package/dist/esm/component/axisUsingCenterY.js +175 -0
  80. package/dist/esm/component/backButton.d.ts +13 -0
  81. package/dist/esm/component/backButton.js +26 -0
  82. package/dist/esm/component/background.d.ts +10 -0
  83. package/dist/esm/component/background.js +15 -0
  84. package/dist/esm/component/boxPlotSeries.d.ts +126 -0
  85. package/dist/esm/component/boxPlotSeries.js +410 -0
  86. package/dist/esm/component/boxSeries.d.ts +211 -0
  87. package/dist/esm/component/boxSeries.js +603 -0
  88. package/dist/esm/component/boxStackSeries.d.ts +62 -0
  89. package/dist/esm/component/boxStackSeries.js +447 -0
  90. package/dist/esm/component/bubbleSeries.d.ts +35 -0
  91. package/dist/esm/component/bubbleSeries.js +174 -0
  92. package/dist/esm/component/bulletSeries.d.ts +89 -0
  93. package/dist/esm/component/bulletSeries.js +392 -0
  94. package/dist/esm/component/circleLegend.d.ts +10 -0
  95. package/dist/esm/component/circleLegend.js +37 -0
  96. package/dist/esm/component/component.d.ts +64 -0
  97. package/dist/esm/component/component.js +170 -0
  98. package/dist/esm/component/componentManager.d.ts +23 -0
  99. package/dist/esm/component/componentManager.js +45 -0
  100. package/dist/esm/component/dataLabels.d.ts +23 -0
  101. package/dist/esm/component/dataLabels.js +134 -0
  102. package/dist/esm/component/exportMenu.d.ts +38 -0
  103. package/dist/esm/component/exportMenu.js +147 -0
  104. package/dist/esm/component/gaugeSeries.d.ts +160 -0
  105. package/dist/esm/component/gaugeSeries.js +447 -0
  106. package/dist/esm/component/heatmapSeries.d.ts +64 -0
  107. package/dist/esm/component/heatmapSeries.js +152 -0
  108. package/dist/esm/component/hoveredSeries.d.ts +27 -0
  109. package/dist/esm/component/hoveredSeries.js +95 -0
  110. package/dist/esm/component/legend.d.ts +26 -0
  111. package/dist/esm/component/legend.js +149 -0
  112. package/dist/esm/component/lineSeries.d.ts +69 -0
  113. package/dist/esm/component/lineSeries.js +319 -0
  114. package/dist/esm/component/noDataText.d.ts +9 -0
  115. package/dist/esm/component/noDataText.js +31 -0
  116. package/dist/esm/component/pieSeries.d.ts +137 -0
  117. package/dist/esm/component/pieSeries.js +390 -0
  118. package/dist/esm/component/plot.d.ts +37 -0
  119. package/dist/esm/component/plot.js +163 -0
  120. package/dist/esm/component/radarSeries.d.ts +85 -0
  121. package/dist/esm/component/radarSeries.js +222 -0
  122. package/dist/esm/component/radialAxis.d.ts +26 -0
  123. package/dist/esm/component/radialAxis.js +210 -0
  124. package/dist/esm/component/radialBarSeries.d.ts +111 -0
  125. package/dist/esm/component/radialBarSeries.js +349 -0
  126. package/dist/esm/component/radialPlot.d.ts +55 -0
  127. package/dist/esm/component/radialPlot.js +188 -0
  128. package/dist/esm/component/rangeSelection.d.ts +61 -0
  129. package/dist/esm/component/rangeSelection.js +150 -0
  130. package/dist/esm/component/resetButton.d.ts +13 -0
  131. package/dist/esm/component/resetButton.js +26 -0
  132. package/dist/esm/component/scatterSeries.d.ts +34 -0
  133. package/dist/esm/component/scatterSeries.js +159 -0
  134. package/dist/esm/component/selectedSeries.d.ts +26 -0
  135. package/dist/esm/component/selectedSeries.js +109 -0
  136. package/dist/esm/component/spectrumLegend.d.ts +15 -0
  137. package/dist/esm/component/spectrumLegend.js +76 -0
  138. package/dist/esm/component/title.d.ts +12 -0
  139. package/dist/esm/component/title.js +53 -0
  140. package/dist/esm/component/tooltip.d.ts +41 -0
  141. package/dist/esm/component/tooltip.js +131 -0
  142. package/dist/esm/component/treemapSeries.d.ts +57 -0
  143. package/dist/esm/component/treemapSeries.js +191 -0
  144. package/dist/esm/component/zeroAxis.d.ts +9 -0
  145. package/dist/esm/component/zeroAxis.js +49 -0
  146. package/dist/esm/eventEmitter.d.ts +8 -0
  147. package/dist/esm/eventEmitter.js +15 -0
  148. package/dist/esm/helpers/arrayUtil.d.ts +10 -0
  149. package/dist/esm/helpers/arrayUtil.js +54 -0
  150. package/dist/esm/helpers/axes.d.ts +67 -0
  151. package/dist/esm/helpers/axes.js +345 -0
  152. package/dist/esm/helpers/boxSeries.d.ts +5 -0
  153. package/dist/esm/helpers/boxSeries.js +71 -0
  154. package/dist/esm/helpers/calculator.d.ts +19 -0
  155. package/dist/esm/helpers/calculator.js +153 -0
  156. package/dist/esm/helpers/color.d.ts +153 -0
  157. package/dist/esm/helpers/color.js +218 -0
  158. package/dist/esm/helpers/colorSpectrum.d.ts +5 -0
  159. package/dist/esm/helpers/colorSpectrum.js +17 -0
  160. package/dist/esm/helpers/coordinate.d.ts +9 -0
  161. package/dist/esm/helpers/coordinate.js +51 -0
  162. package/dist/esm/helpers/dataLabels.d.ts +36 -0
  163. package/dist/esm/helpers/dataLabels.js +405 -0
  164. package/dist/esm/helpers/dom.d.ts +2 -0
  165. package/dist/esm/helpers/dom.js +8 -0
  166. package/dist/esm/helpers/downloader.d.ts +7 -0
  167. package/dist/esm/helpers/downloader.js +287 -0
  168. package/dist/esm/helpers/formatDate.d.ts +16 -0
  169. package/dist/esm/helpers/formatDate.js +140 -0
  170. package/dist/esm/helpers/geometric.d.ts +3 -0
  171. package/dist/esm/helpers/geometric.js +35 -0
  172. package/dist/esm/helpers/googleAnalytics.d.ts +1 -0
  173. package/dist/esm/helpers/googleAnalytics.js +39 -0
  174. package/dist/esm/helpers/htmlSanitizer.d.ts +1 -0
  175. package/dist/esm/helpers/htmlSanitizer.js +86 -0
  176. package/dist/esm/helpers/legend.d.ts +9 -0
  177. package/dist/esm/helpers/legend.js +47 -0
  178. package/dist/esm/helpers/pieSeries.d.ts +15 -0
  179. package/dist/esm/helpers/pieSeries.js +72 -0
  180. package/dist/esm/helpers/plot.d.ts +2 -0
  181. package/dist/esm/helpers/plot.js +4 -0
  182. package/dist/esm/helpers/radarSeries.d.ts +1 -0
  183. package/dist/esm/helpers/radarSeries.js +7 -0
  184. package/dist/esm/helpers/range.d.ts +6 -0
  185. package/dist/esm/helpers/range.js +16 -0
  186. package/dist/esm/helpers/responders.d.ts +37 -0
  187. package/dist/esm/helpers/responders.js +197 -0
  188. package/dist/esm/helpers/sector.d.ts +55 -0
  189. package/dist/esm/helpers/sector.js +117 -0
  190. package/dist/esm/helpers/squarifier.d.ts +8 -0
  191. package/dist/esm/helpers/squarifier.js +110 -0
  192. package/dist/esm/helpers/style.d.ts +14 -0
  193. package/dist/esm/helpers/style.js +48 -0
  194. package/dist/esm/helpers/theme.d.ts +58 -0
  195. package/dist/esm/helpers/theme.js +557 -0
  196. package/dist/esm/helpers/tooltip.d.ts +2 -0
  197. package/dist/esm/helpers/tooltip.js +18 -0
  198. package/dist/esm/helpers/tooltipTemplate.d.ts +21 -0
  199. package/dist/esm/helpers/tooltipTemplate.js +147 -0
  200. package/dist/esm/helpers/utils.d.ts +42 -0
  201. package/dist/esm/helpers/utils.js +268 -0
  202. package/dist/esm/helpers/validation.d.ts +6 -0
  203. package/dist/esm/helpers/validation.js +16 -0
  204. package/dist/esm/index.d.ts +40 -0
  205. package/dist/esm/index.js +75 -0
  206. package/dist/esm/message.d.ts +11 -0
  207. package/dist/esm/message.js +11 -0
  208. package/dist/esm/painter.d.ts +27 -0
  209. package/dist/esm/painter.js +88 -0
  210. package/dist/esm/responderDetectors.d.ts +6 -0
  211. package/dist/esm/responderDetectors.js +124 -0
  212. package/dist/esm/scale/coordinateScaleCalculator.d.ts +24 -0
  213. package/dist/esm/scale/coordinateScaleCalculator.js +174 -0
  214. package/dist/esm/scale/datetimeScaleCalculator.d.ts +20 -0
  215. package/dist/esm/scale/datetimeScaleCalculator.js +59 -0
  216. package/dist/esm/store/axes.d.ts +30 -0
  217. package/dist/esm/store/axes.js +282 -0
  218. package/dist/esm/store/category.d.ts +4 -0
  219. package/dist/esm/store/category.js +73 -0
  220. package/dist/esm/store/colorValueScale.d.ts +3 -0
  221. package/dist/esm/store/colorValueScale.js +56 -0
  222. package/dist/esm/store/dataRange.d.ts +4 -0
  223. package/dist/esm/store/dataRange.js +170 -0
  224. package/dist/esm/store/gaugeAxes.d.ts +4 -0
  225. package/dist/esm/store/gaugeAxes.js +175 -0
  226. package/dist/esm/store/heatmapAxes.d.ts +3 -0
  227. package/dist/esm/store/heatmapAxes.js +98 -0
  228. package/dist/esm/store/heatmapSeriesData.d.ts +3 -0
  229. package/dist/esm/store/heatmapSeriesData.js +34 -0
  230. package/dist/esm/store/layout.d.ts +12 -0
  231. package/dist/esm/store/layout.js +487 -0
  232. package/dist/esm/store/legend.d.ts +3 -0
  233. package/dist/esm/store/legend.js +435 -0
  234. package/dist/esm/store/nestedPieSeriesData.d.ts +3 -0
  235. package/dist/esm/store/nestedPieSeriesData.js +49 -0
  236. package/dist/esm/store/options.d.ts +3 -0
  237. package/dist/esm/store/options.js +62 -0
  238. package/dist/esm/store/plot.d.ts +3 -0
  239. package/dist/esm/store/plot.js +102 -0
  240. package/dist/esm/store/radialAxes.d.ts +8 -0
  241. package/dist/esm/store/radialAxes.js +199 -0
  242. package/dist/esm/store/reactive.d.ts +11 -0
  243. package/dist/esm/store/reactive.js +196 -0
  244. package/dist/esm/store/root.d.ts +3 -0
  245. package/dist/esm/store/root.js +46 -0
  246. package/dist/esm/store/scale.d.ts +3 -0
  247. package/dist/esm/store/scale.js +102 -0
  248. package/dist/esm/store/seriesData.d.ts +3 -0
  249. package/dist/esm/store/seriesData.js +299 -0
  250. package/dist/esm/store/stackSeriesData.d.ts +8 -0
  251. package/dist/esm/store/stackSeriesData.js +192 -0
  252. package/dist/esm/store/store.d.ts +20 -0
  253. package/dist/esm/store/store.js +112 -0
  254. package/dist/esm/store/theme.d.ts +3 -0
  255. package/dist/esm/store/theme.js +139 -0
  256. package/dist/esm/store/treemapSeriesData.d.ts +4 -0
  257. package/dist/esm/store/treemapSeriesData.js +93 -0
  258. package/dist/td-chart.css +127 -0
  259. package/dist/td-chart.js +41463 -0
  260. package/dist/td-chart.min.css +6 -0
  261. package/dist/td-chart.min.js +9 -0
  262. package/package.json +112 -0
  263. package/types/brushes.d.ts +30 -0
  264. package/types/charts.d.ts +152 -0
  265. package/types/components/axis.d.ts +71 -0
  266. package/types/components/circleLegend.d.ts +9 -0
  267. package/types/components/dataLabels.d.ts +119 -0
  268. package/types/components/exportMenu.d.ts +14 -0
  269. package/types/components/legend.d.ts +27 -0
  270. package/types/components/plot.d.ts +8 -0
  271. package/types/components/radialAxis.d.ts +22 -0
  272. package/types/components/radialPlot.d.ts +11 -0
  273. package/types/components/rangeSelection.d.ts +3 -0
  274. package/types/components/resetButton.d.ts +13 -0
  275. package/types/components/series.d.ts +386 -0
  276. package/types/components/spectrumLegend.d.ts +25 -0
  277. package/types/components/tooltip.d.ts +58 -0
  278. package/types/components/zoom.d.ts +3 -0
  279. package/types/eventEmitter.d.ts +12 -0
  280. package/types/index.d.ts +615 -0
  281. package/types/options.d.ts +833 -0
  282. package/types/resizeObserver.d.ts +54 -0
  283. package/types/store/store.d.ts +564 -0
  284. package/types/theme.d.ts +670 -0
@@ -0,0 +1,603 @@
1
+ import Component from "./component";
2
+ import { first, hasNegative, deepCopyArray, last, hasNegativeOnly, hasPositiveOnly, isNull, isNumber, calculateSizeWithPercentString, omit, } from "../helpers/utils";
3
+ import { makeTickPixelPositions, makeLabelsFromLimit } from "../helpers/calculator";
4
+ import { getRGBA, getAlpha } from "../helpers/color";
5
+ import { getDataInRange, isRangeData, isRangeValue } from "../helpers/range";
6
+ import { getLimitOnAxis, getValueAxisName } from "../helpers/axes";
7
+ import { calibrateDrawingValue } from "../helpers/boxSeries";
8
+ import { getDataLabelsOptions } from "../helpers/dataLabels";
9
+ import { getActiveSeriesMap } from "../helpers/legend";
10
+ import { getBoxTypeSeriesPadding } from "../helpers/style";
11
+ import { makeRectResponderModel } from "../helpers/responders";
12
+ import { message } from "../message";
13
+ import { isAvailableSelectSeries, isAvailableShowTooltipInfo } from "../helpers/validation";
14
+ export var SeriesDirection;
15
+ (function (SeriesDirection) {
16
+ SeriesDirection[SeriesDirection["POSITIVE"] = 0] = "POSITIVE";
17
+ SeriesDirection[SeriesDirection["NEGATIVE"] = 1] = "NEGATIVE";
18
+ SeriesDirection[SeriesDirection["BOTH"] = 2] = "BOTH";
19
+ })(SeriesDirection || (SeriesDirection = {}));
20
+ const BOX = {
21
+ BAR: 'bar',
22
+ COLUMN: 'column',
23
+ };
24
+ export function isLeftBottomSide(seriesIndex) {
25
+ return !!(seriesIndex % 2);
26
+ }
27
+ function calculateBarLength(value, min, max) {
28
+ if (isRangeValue(value)) {
29
+ let [start, end] = value;
30
+ if (start < min) {
31
+ start = min;
32
+ }
33
+ if (end > max) {
34
+ end = max;
35
+ }
36
+ return end - start;
37
+ }
38
+ return calibrateDrawingValue(value, min, max);
39
+ }
40
+ export default class BoxSeries extends Component {
41
+ constructor() {
42
+ super(...arguments);
43
+ this.models = { series: [] };
44
+ this.activatedResponders = [];
45
+ this.isBar = true;
46
+ this.valueAxis = 'xAxis';
47
+ this.labelAxis = 'yAxis';
48
+ this.anchorSizeKey = 'height';
49
+ this.offsetSizeKey = 'width';
50
+ this.basePosition = 0;
51
+ this.leftBasePosition = 0;
52
+ this.rightBasePosition = 0;
53
+ this.isRangeData = false;
54
+ this.offsetKey = 'x';
55
+ this.eventDetectType = 'point';
56
+ this.onMouseoutComponent = () => {
57
+ this.eventBus.emit('seriesPointHovered', { models: [], name: this.name });
58
+ this.eventBus.emit('renderHoveredSeries', {
59
+ models: [],
60
+ name: this.name,
61
+ eventDetectType: this.eventDetectType,
62
+ });
63
+ this.eventBus.emit('needDraw');
64
+ };
65
+ this.selectSeries = (info) => {
66
+ const { index, seriesIndex } = info;
67
+ if (!isAvailableSelectSeries(info, 'column')) {
68
+ return;
69
+ }
70
+ const model = this.tooltipRectMap[seriesIndex][index];
71
+ if (!model) {
72
+ throw new Error(message.SELECT_SERIES_API_INDEX_ERROR);
73
+ }
74
+ this.eventBus.emit('renderSelectedSeries', {
75
+ models: this.getRespondersWithTheme([model], 'select'),
76
+ name: this.name,
77
+ });
78
+ this.eventBus.emit('needDraw');
79
+ };
80
+ this.showTooltip = (info) => {
81
+ const { index, seriesIndex } = info;
82
+ if (!isAvailableShowTooltipInfo(info, this.eventDetectType, 'column')) {
83
+ return;
84
+ }
85
+ const models = this.eventDetectType === 'grouped'
86
+ ? this.getGroupedRect([this.responders[index]], 'hover')
87
+ : this.getRespondersWithTheme([this.tooltipRectMap[index][seriesIndex]], 'hover');
88
+ if (!models.length) {
89
+ return;
90
+ }
91
+ this.eventBus.emit('renderHoveredSeries', {
92
+ models,
93
+ name: this.name,
94
+ eventDetectType: this.eventDetectType,
95
+ });
96
+ this.activatedResponders =
97
+ this.eventDetectType === 'grouped' ? this.tooltipRectMap[index] : models;
98
+ this.eventBus.emit('seriesPointHovered', { models: this.activatedResponders, name: this.name });
99
+ this.eventBus.emit('needDraw');
100
+ };
101
+ }
102
+ initialize({ name, stackChart }) {
103
+ this.initializeFields(name);
104
+ if (!stackChart) {
105
+ this.eventBus.on('selectSeries', this.selectSeries);
106
+ this.eventBus.on('showTooltip', this.showTooltip);
107
+ this.eventBus.on('hideTooltip', this.onMouseoutComponent);
108
+ }
109
+ }
110
+ initializeFields(name) {
111
+ this.type = 'series';
112
+ this.name = name;
113
+ this.isBar = name === BOX.BAR;
114
+ this.offsetKey = this.isBar ? 'x' : 'y';
115
+ this.valueAxis = this.isBar ? 'xAxis' : 'yAxis';
116
+ this.labelAxis = this.isBar ? 'yAxis' : 'xAxis';
117
+ this.anchorSizeKey = this.isBar ? 'height' : 'width';
118
+ this.offsetSizeKey = this.isBar ? 'width' : 'height';
119
+ }
120
+ initUpdate(delta) {
121
+ if (!this.drawModels) {
122
+ return;
123
+ }
124
+ if (this.isRangeData) {
125
+ this.initUpdateRangeData(delta);
126
+ return;
127
+ }
128
+ this.initUpdateClipRect(delta);
129
+ this.initUpdateConnector(delta);
130
+ }
131
+ initUpdateRangeData(delta) {
132
+ const { series } = this.drawModels;
133
+ this.drawModels.clipRect = this.models.clipRect;
134
+ const target = this.models.series;
135
+ series.forEach((current, index) => {
136
+ const targetModel = target[index];
137
+ if (delta === 0) {
138
+ current[this.offsetSizeKey] = 0;
139
+ }
140
+ const offsetSize = current[this.offsetSizeKey] +
141
+ (targetModel[this.offsetSizeKey] - current[this.offsetSizeKey]) * delta;
142
+ current[this.offsetSizeKey] = offsetSize;
143
+ if (!this.isBar) {
144
+ current[this.offsetKey] =
145
+ targetModel[this.offsetKey] + targetModel[this.offsetSizeKey] - offsetSize;
146
+ }
147
+ });
148
+ }
149
+ initUpdateClipRect(delta) {
150
+ const { clipRect } = this.drawModels;
151
+ if (!clipRect) {
152
+ return;
153
+ }
154
+ const current = clipRect[0];
155
+ const key = this.offsetSizeKey;
156
+ const target = this.models.clipRect[0];
157
+ const offsetSize = current[key] + (target[key] - current[key]) * delta;
158
+ current[key] = offsetSize;
159
+ current[this.offsetKey] = Math.max(this.basePosition - (offsetSize * this.basePosition) / target[key], 0);
160
+ }
161
+ initUpdateConnector(delta) {
162
+ const { connector } = this.drawModels;
163
+ if (!connector) {
164
+ return;
165
+ }
166
+ const target = this.models.connector;
167
+ connector.forEach((current, index) => {
168
+ const alpha = getAlpha(target[index].strokeStyle) * delta;
169
+ current.strokeStyle = getRGBA(current.strokeStyle, alpha);
170
+ });
171
+ }
172
+ setEventDetectType(series, options) {
173
+ var _a, _b;
174
+ if (series.line) {
175
+ this.eventDetectType = 'grouped';
176
+ }
177
+ if ((_b = (_a = options) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b.eventDetectType) {
178
+ this.eventDetectType = options.series.eventDetectType;
179
+ }
180
+ }
181
+ getOptions(chartOptions) {
182
+ var _a;
183
+ const options = Object.assign({}, chartOptions);
184
+ if (((_a = options) === null || _a === void 0 ? void 0 : _a.series) && options.series.column) {
185
+ options.series = Object.assign(Object.assign({}, options.series), options.series.column);
186
+ }
187
+ return options;
188
+ }
189
+ render(chartState, computed) {
190
+ var _a, _b;
191
+ const { layout, series, axes, stackSeries, legend, theme, scale } = chartState;
192
+ this.isShow = !(stackSeries && stackSeries[this.name]);
193
+ if (!this.isShow) {
194
+ return;
195
+ }
196
+ const categories = (_a = chartState.categories, (_a !== null && _a !== void 0 ? _a : []));
197
+ const options = this.getOptions(chartState.options);
198
+ this.setEventDetectType(series, options);
199
+ this.theme = theme.series[this.name];
200
+ this.rect = layout.plot;
201
+ this.activeSeriesMap = getActiveSeriesMap(legend);
202
+ this.selectable = this.getSelectableOption(options);
203
+ this.valueAxis = getValueAxisName(options, this.name, this.isBar ? 'xAxis' : 'yAxis');
204
+ const seriesData = series[this.name].data.map((seriesDatum) => (Object.assign(Object.assign({}, seriesDatum), { data: getDataInRange(seriesDatum.data, computed.viewRange) })));
205
+ if (axes.centerYAxis) {
206
+ this.valueAxis = 'centerYAxis';
207
+ }
208
+ const { tickDistance } = axes[this.labelAxis];
209
+ const diverging = !!((_b = options.series) === null || _b === void 0 ? void 0 : _b.diverging);
210
+ const { limit, stepSize } = this.getScaleData(scale);
211
+ const labels = makeLabelsFromLimit(limit, stepSize);
212
+ const { min, max } = getLimitOnAxis(labels);
213
+ this.basePosition = this.getBasePosition(axes[this.valueAxis]);
214
+ let offsetSize = this.getOffsetSize();
215
+ const { centerYAxis } = axes;
216
+ if (diverging) {
217
+ const [left, right] = this.getDivergingBasePosition(centerYAxis);
218
+ this.basePosition = this.getOffsetSize() / 2;
219
+ this.leftBasePosition = left;
220
+ this.rightBasePosition = right;
221
+ offsetSize = this.getOffsetSizeWithDiverging(centerYAxis);
222
+ }
223
+ const renderOptions = {
224
+ min,
225
+ max,
226
+ tickDistance,
227
+ diverging,
228
+ ratio: this.getValueRatio(min, max, offsetSize),
229
+ hasNegativeValue: hasNegative(labels),
230
+ seriesDirection: this.getSeriesDirection(labels),
231
+ defaultPadding: getBoxTypeSeriesPadding(tickDistance),
232
+ };
233
+ const seriesModels = this.renderSeriesModel(seriesData, renderOptions);
234
+ const tooltipData = this.makeTooltipData(seriesData, renderOptions, categories);
235
+ const clipRect = this.renderClipRectAreaModel();
236
+ this.models = {
237
+ clipRect: [clipRect],
238
+ series: seriesModels,
239
+ };
240
+ if (!this.drawModels) {
241
+ this.drawModels = {
242
+ clipRect: [this.initClipRect(clipRect)],
243
+ series: deepCopyArray(seriesModels),
244
+ };
245
+ }
246
+ if (getDataLabelsOptions(options, this.name).visible) {
247
+ const dataLabelData = seriesModels.reduce((acc, data) => {
248
+ return isRangeValue(data.value)
249
+ ? [...acc, ...this.makeDataLabelRangeData(data)]
250
+ : [...acc, this.makeDataLabel(data, centerYAxis)];
251
+ }, []);
252
+ this.renderDataLabels(dataLabelData);
253
+ }
254
+ this.tooltipRectMap = this.makeTooltipRectMap(seriesModels, tooltipData);
255
+ this.responders = this.getBoxSeriesResponders(seriesModels, tooltipData, axes, categories);
256
+ }
257
+ getScaleData(scale) {
258
+ return scale[this.valueAxis === 'centerYAxis' ? 'xAxis' : this.valueAxis];
259
+ }
260
+ getBoxSeriesResponders(seriesModels, tooltipData, axes, categories) {
261
+ const hoveredSeries = this.renderHoveredSeriesModel(seriesModels);
262
+ return this.eventDetectType === 'grouped'
263
+ ? makeRectResponderModel(this.rect, (this.isBar ? axes.yAxis : axes.xAxis), categories, !this.isBar)
264
+ : hoveredSeries.map((m, index) => (Object.assign(Object.assign({}, m), { data: tooltipData[index] })));
265
+ }
266
+ makeTooltipRectMap(seriesModels, tooltipDataArr) {
267
+ return seriesModels.reduce((acc, cur, dataIndex) => {
268
+ const index = cur.index;
269
+ const tooltipModel = Object.assign(Object.assign({}, cur), { data: tooltipDataArr[dataIndex] });
270
+ if (!acc[index]) {
271
+ acc[index] = [];
272
+ }
273
+ acc[index].push(tooltipModel);
274
+ return acc;
275
+ }, []);
276
+ }
277
+ renderClipRectAreaModel() {
278
+ return {
279
+ type: 'clipRectArea',
280
+ x: 0,
281
+ y: 0,
282
+ width: this.rect.width,
283
+ height: this.rect.height,
284
+ };
285
+ }
286
+ initClipRect(clipRect) {
287
+ return {
288
+ type: 'clipRectArea',
289
+ width: this.isBar ? 0 : clipRect.width,
290
+ height: this.isBar ? clipRect.height : 0,
291
+ x: this.isBar ? 0 : clipRect.x,
292
+ y: this.isBar ? clipRect.y : 0,
293
+ };
294
+ }
295
+ renderSeriesModel(seriesData, renderOptions) {
296
+ const { tickDistance, diverging } = renderOptions;
297
+ const seriesLength = seriesData.length;
298
+ const validDiverging = diverging && seriesData.length === 2;
299
+ const columnWidth = this.getColumnWidth(renderOptions, seriesLength, validDiverging);
300
+ const seriesModels = [];
301
+ const padding = (tickDistance - columnWidth * (validDiverging ? 1 : seriesLength)) / 2;
302
+ seriesData.forEach(({ data, color: seriesColor, name, colorByCategories }, seriesIndex) => {
303
+ const seriesPos = (diverging ? 0 : seriesIndex) * columnWidth + padding;
304
+ const isLBSideWithDiverging = diverging && isLeftBottomSide(seriesIndex);
305
+ const colorLength = colorByCategories ? seriesColor.length : 1;
306
+ this.isRangeData = isRangeData(data);
307
+ data.forEach((value, index) => {
308
+ const dataStart = seriesPos + index * tickDistance;
309
+ const barLength = this.makeBarLength(value, renderOptions);
310
+ const color = this.getSeriesColor(name, colorByCategories ? seriesColor[index % colorLength] : seriesColor);
311
+ if (isNumber(barLength)) {
312
+ const startPosition = this.getStartPosition(barLength, value, renderOptions, isLBSideWithDiverging);
313
+ seriesModels.push(Object.assign(Object.assign({ type: 'rect', color,
314
+ value }, this.getAdjustedRect(dataStart, startPosition, barLength, columnWidth)), { name,
315
+ index }));
316
+ }
317
+ });
318
+ });
319
+ return seriesModels;
320
+ }
321
+ renderHoveredSeriesModel(seriesModel) {
322
+ return seriesModel.map((data) => {
323
+ return this.makeHoveredSeriesModel(data);
324
+ });
325
+ }
326
+ makeHoveredSeriesModel(data) {
327
+ const { x, y, width, height, color, index } = data;
328
+ return {
329
+ type: 'rect',
330
+ color: getRGBA(color, 1),
331
+ x,
332
+ y,
333
+ width,
334
+ height,
335
+ index,
336
+ };
337
+ }
338
+ getRectModelsFromRectResponders(responders) {
339
+ var _a;
340
+ if (!responders.length) {
341
+ return [];
342
+ }
343
+ return _a = this.tooltipRectMap[responders[0].index], (_a !== null && _a !== void 0 ? _a : []);
344
+ }
345
+ getGroupedRect(responders, type) {
346
+ const rectModels = this.getRectModelsFromRectResponders(responders);
347
+ const { color, opacity } = this.theme[type].groupedRect;
348
+ return rectModels.length
349
+ ? responders.map((m) => (Object.assign(Object.assign({}, m), { color: getRGBA(color, opacity) })))
350
+ : [];
351
+ }
352
+ onMousemoveGroupedType(responders) {
353
+ const rectModels = this.getRectModelsFromRectResponders(responders);
354
+ this.eventBus.emit('renderHoveredSeries', {
355
+ models: this.getGroupedRect(responders, 'hover'),
356
+ name: this.name,
357
+ eventDetectType: this.eventDetectType,
358
+ });
359
+ this.activatedResponders = rectModels;
360
+ }
361
+ onMousemove({ responders }) {
362
+ if (this.eventDetectType === 'grouped') {
363
+ this.onMousemoveGroupedType(responders);
364
+ }
365
+ else {
366
+ this.eventBus.emit('renderHoveredSeries', {
367
+ models: this.getRespondersWithTheme(responders, 'hover'),
368
+ name: this.name,
369
+ eventDetectType: this.eventDetectType,
370
+ });
371
+ this.activatedResponders = responders;
372
+ }
373
+ this.eventBus.emit('seriesPointHovered', { models: this.activatedResponders, name: this.name });
374
+ this.eventBus.emit('needDraw');
375
+ }
376
+ makeTooltipData(seriesData, renderOptions, categories) {
377
+ const tooltipData = [];
378
+ seriesData.forEach(({ data, name, color, colorByCategories }) => {
379
+ data.forEach((value, dataIndex) => {
380
+ if (!isNull(value)) {
381
+ const barLength = this.makeBarLength(value, renderOptions);
382
+ if (isNumber(barLength)) {
383
+ tooltipData.push({
384
+ label: name,
385
+ color: colorByCategories ? color[dataIndex] : color,
386
+ value: this.getTooltipValue(value),
387
+ category: categories.length ? categories[dataIndex] : '',
388
+ });
389
+ }
390
+ }
391
+ });
392
+ });
393
+ return tooltipData;
394
+ }
395
+ getTooltipValue(value) {
396
+ return isRangeValue(value) ? `${value[0]} ~ ${value[1]}` : value;
397
+ }
398
+ getBasePosition({ labels, tickCount, zeroPosition }) {
399
+ const valueLabels = this.isBar ? labels : [...labels].reverse();
400
+ const tickPositions = makeTickPixelPositions(this.getOffsetSize(), tickCount);
401
+ const seriesDirection = this.getSeriesDirection(valueLabels);
402
+ return zeroPosition
403
+ ? zeroPosition
404
+ : this.getTickPositionIfNotZero(tickPositions, seriesDirection);
405
+ }
406
+ getDivergingBasePosition(centerYAxis) {
407
+ let leftZeroPosition, rightZeroPosition;
408
+ if (centerYAxis) {
409
+ leftZeroPosition = centerYAxis.xAxisHalfSize;
410
+ rightZeroPosition = centerYAxis.secondStartX;
411
+ }
412
+ else {
413
+ const divergingZeroPosition = this.getOffsetSize() / 2;
414
+ leftZeroPosition = rightZeroPosition = divergingZeroPosition;
415
+ }
416
+ return [leftZeroPosition, rightZeroPosition];
417
+ }
418
+ getOffsetSize() {
419
+ return this.rect[this.offsetSizeKey];
420
+ }
421
+ getValueRatio(min, max, size) {
422
+ return size / (max - min);
423
+ }
424
+ makeBarLength(value, renderOptions) {
425
+ if (isNull(value)) {
426
+ return null;
427
+ }
428
+ const { min, max, ratio } = renderOptions;
429
+ const calculatedValue = calculateBarLength(value, min, max);
430
+ return Math.max(this.getBarLength(calculatedValue, ratio), 2);
431
+ }
432
+ getBarLength(value, ratio) {
433
+ return value < 0 ? Math.abs(value) * ratio : value * ratio;
434
+ }
435
+ getStartPositionWithRangeValue(value, barLength, renderOptions) {
436
+ const { min, ratio } = renderOptions;
437
+ let [start] = value;
438
+ if (start < min) {
439
+ start = min;
440
+ }
441
+ const startPosition = (start - min) * ratio;
442
+ return this.isBar ? startPosition : this.getOffsetSize() - startPosition - barLength;
443
+ }
444
+ getStartPosition(barLength, value, renderOptions, isLBSideWithDiverging) {
445
+ const { diverging, seriesDirection } = renderOptions;
446
+ let startPos;
447
+ if (isRangeValue(value)) {
448
+ startPos = this.getStartPositionWithRangeValue(value, barLength, renderOptions);
449
+ }
450
+ else if (diverging) {
451
+ startPos = isLBSideWithDiverging
452
+ ? this.getStartPosOnLeftBottomSide(barLength, diverging)
453
+ : this.getStartPosOnRightTopSide(barLength, diverging);
454
+ }
455
+ else if (seriesDirection === SeriesDirection.POSITIVE) {
456
+ startPos = this.getStartPosOnRightTopSide(barLength);
457
+ }
458
+ else if (seriesDirection === SeriesDirection.NEGATIVE) {
459
+ startPos = this.getStartPosOnLeftBottomSide(barLength);
460
+ }
461
+ else {
462
+ startPos =
463
+ value < 0
464
+ ? this.getStartPosOnLeftBottomSide(barLength)
465
+ : this.getStartPosOnRightTopSide(barLength);
466
+ }
467
+ return startPos;
468
+ }
469
+ getStartPosOnRightTopSide(barLength, diverging = false) {
470
+ let pos;
471
+ if (diverging) {
472
+ pos = this.isBar ? this.rightBasePosition : this.rightBasePosition - barLength;
473
+ }
474
+ else {
475
+ pos = this.isBar ? this.basePosition : this.basePosition - barLength;
476
+ }
477
+ return pos;
478
+ }
479
+ getStartPosOnLeftBottomSide(barLength, diverging = false) {
480
+ let pos;
481
+ if (diverging) {
482
+ pos = this.isBar ? this.leftBasePosition - barLength : this.leftBasePosition;
483
+ }
484
+ else {
485
+ pos = this.isBar ? this.basePosition - barLength : this.basePosition;
486
+ }
487
+ return pos;
488
+ }
489
+ getAdjustedRect(seriesPosition, dataPosition, barLength, columnWidth) {
490
+ return {
491
+ x: this.isBar ? dataPosition : seriesPosition,
492
+ y: this.isBar ? seriesPosition : dataPosition,
493
+ width: this.isBar ? barLength : columnWidth,
494
+ height: this.isBar ? columnWidth : barLength,
495
+ };
496
+ }
497
+ getColumnWidth(renderOptions, seriesLength, validDiverging = false) {
498
+ const { tickDistance, defaultPadding } = renderOptions;
499
+ seriesLength = validDiverging ? 1 : seriesLength;
500
+ const themeBarWidth = this.theme.barWidth;
501
+ return themeBarWidth
502
+ ? calculateSizeWithPercentString(tickDistance, themeBarWidth)
503
+ : (tickDistance - defaultPadding * 2) / seriesLength;
504
+ }
505
+ getSeriesDirection(labels) {
506
+ let result = SeriesDirection.BOTH;
507
+ if (hasPositiveOnly(labels)) {
508
+ result = SeriesDirection.POSITIVE;
509
+ }
510
+ else if (hasNegativeOnly(labels)) {
511
+ result = SeriesDirection.NEGATIVE;
512
+ }
513
+ return result;
514
+ }
515
+ getTickPositionIfNotZero(tickPositions, direction) {
516
+ if (!tickPositions.length) {
517
+ return 0;
518
+ }
519
+ const firstTickPosition = Number(first(tickPositions));
520
+ const lastTickPosition = Number(last(tickPositions));
521
+ if (direction === SeriesDirection.POSITIVE) {
522
+ return this.isBar ? firstTickPosition : lastTickPosition;
523
+ }
524
+ if (direction === SeriesDirection.NEGATIVE) {
525
+ return this.isBar ? lastTickPosition : firstTickPosition;
526
+ }
527
+ return 0;
528
+ }
529
+ makeDataLabel(rect, centerYAxis) {
530
+ const { dataLabels } = this.theme;
531
+ return Object.assign(Object.assign({}, rect), { direction: this.getDataLabelDirection(rect, centerYAxis), plot: { x: 0, y: 0, size: this.getOffsetSize() }, theme: Object.assign(Object.assign({}, omit(dataLabels, 'stackTotal')), { color: dataLabels.useSeriesColor ? rect.color : dataLabels.color }) });
532
+ }
533
+ makeDataLabelRangeData(rect) {
534
+ const { dataLabels } = this.theme;
535
+ return rect.value.reduce((acc, value, index) => [
536
+ ...acc,
537
+ Object.assign(Object.assign({}, rect), { value, direction: this.getDataLabelRangeDataDirection(index % 2 === 0), plot: { x: 0, y: 0, size: this.getOffsetSize() }, theme: Object.assign(Object.assign({}, omit(dataLabels, 'stackTotal')), { color: dataLabels.useSeriesColor ? rect.color : dataLabels.color }) }),
538
+ ], []);
539
+ }
540
+ getDataLabelRangeDataDirection(isEven) {
541
+ let direction;
542
+ if (this.isBar) {
543
+ direction = isEven ? 'left' : 'right';
544
+ }
545
+ else {
546
+ direction = isEven ? 'bottom' : 'top';
547
+ }
548
+ return direction;
549
+ }
550
+ getDataLabelDirection(rect, centerYAxis) {
551
+ let direction;
552
+ if (this.isBar) {
553
+ const basePos = centerYAxis ? this.leftBasePosition : this.basePosition;
554
+ direction = rect.x < basePos ? 'left' : 'right';
555
+ }
556
+ else {
557
+ direction = rect.y >= this.basePosition ? 'bottom' : 'top';
558
+ }
559
+ return direction;
560
+ }
561
+ getOffsetSizeWithDiverging(centerYAxis) {
562
+ return centerYAxis ? centerYAxis.xAxisHalfSize : this.getOffsetSize() / 2;
563
+ }
564
+ onClick({ responders }) {
565
+ if (this.selectable) {
566
+ let models;
567
+ if (this.eventDetectType === 'grouped') {
568
+ models = [
569
+ ...this.getGroupedRect(responders, 'select'),
570
+ ...this.getRectModelsFromRectResponders(responders),
571
+ ];
572
+ }
573
+ else {
574
+ models = this.getRespondersWithTheme(responders, 'select');
575
+ }
576
+ this.eventBus.emit('renderSelectedSeries', {
577
+ models,
578
+ name: this.name,
579
+ eventDetectType: this.eventDetectType,
580
+ });
581
+ this.eventBus.emit('needDraw');
582
+ }
583
+ }
584
+ getRespondersWithTheme(responders, type) {
585
+ const { color, borderColor, borderWidth, shadowBlur, shadowColor, shadowOffsetX, shadowOffsetY, } = this.theme[type];
586
+ return responders.map((model) => (Object.assign(Object.assign({}, model), { color: (color !== null && color !== void 0 ? color : model.color), thickness: borderWidth, borderColor, style: [
587
+ {
588
+ shadowBlur,
589
+ shadowColor,
590
+ shadowOffsetX,
591
+ shadowOffsetY,
592
+ },
593
+ ] })));
594
+ }
595
+ getSeriesColor(name, color) {
596
+ const { select, areaOpacity } = this.theme;
597
+ const active = this.activeSeriesMap[name];
598
+ const selected = Object.values(this.activeSeriesMap).some((elem) => !elem);
599
+ return selected
600
+ ? getRGBA(color, active ? select.areaOpacity : select.restSeries.areaOpacity)
601
+ : getRGBA(color, areaOpacity);
602
+ }
603
+ }
@@ -0,0 +1,62 @@
1
+ import BoxSeries, { SeriesDirection } from "./boxSeries";
2
+ import { BoxSeriesType, BoxSeriesDataType, ColumnChartOptions, BarChartOptions, ColumnLineChartOptions } from "../../types/options";
3
+ import { ChartState, StackSeriesData, BoxType, Stack, StackDataValues, PercentScaleType, CenterYAxisData } from "../../types/store/store";
4
+ import { RectModel, StackTotalModel, RectResponderModel } from "../../types/components/series";
5
+ import { LineModel } from "../../types/components/axis";
6
+ import { RectDataLabel } from "../../types/components/dataLabels";
7
+ import { SelectSeriesHandlerParams } from "../charts/chart";
8
+ declare type RenderOptions = {
9
+ stack: Stack;
10
+ scaleType: PercentScaleType;
11
+ tickDistance: number;
12
+ min: number;
13
+ max: number;
14
+ diverging: boolean;
15
+ hasNegativeValue: boolean;
16
+ seriesDirection: SeriesDirection;
17
+ defaultPadding: number;
18
+ offsetSize: number;
19
+ centerYAxis?: CenterYAxisData;
20
+ };
21
+ export default class BoxStackSeries extends BoxSeries {
22
+ initialize({ name, stackChart }: {
23
+ name: BoxType;
24
+ stackChart: boolean;
25
+ }): void;
26
+ render<T extends BarChartOptions | ColumnChartOptions | ColumnLineChartOptions>(chartState: ChartState<T>, computed: any): void;
27
+ renderStackSeriesModel(seriesData: StackSeriesData<BoxType>, renderOptions: RenderOptions): {
28
+ series: RectModel[];
29
+ connector: LineModel[];
30
+ };
31
+ makeStackSeriesModel(stackData: StackDataValues, renderOptions: RenderOptions, seriesRawData: BoxSeriesType<BoxSeriesDataType>[], stackGroupCount?: number, stackGroupIndex?: number): {
32
+ series: RectModel[];
33
+ connector: LineModel[];
34
+ };
35
+ makeStackGroupSeriesModel(stackSeries: StackSeriesData<BoxType>, renderOptions: RenderOptions): {
36
+ series: RectModel[];
37
+ connector: LineModel[];
38
+ };
39
+ makeConnectorSeriesModel(stackData: StackDataValues, renderOptions: RenderOptions, stackGroupCount?: number, stackGroupIndex?: number): LineModel[];
40
+ private getTooltipData;
41
+ private makeGroupStackTooltipData;
42
+ private makeStackTooltipData;
43
+ private makeConnectorModel;
44
+ private getStackValueRatio;
45
+ private getStackBarLength;
46
+ private getStackColumnWidth;
47
+ private getSeriesPosition;
48
+ private getStackStartPosition;
49
+ private calcStartPosOnLeftBottomSide;
50
+ private calcStartPosOnRightTopSide;
51
+ private calcStartPositionWithStack;
52
+ private calcStartPositionWithPercent;
53
+ private getStackRectInfo;
54
+ getDataLabels(seriesModels: RectModel[], renderOptions: RenderOptions): RectDataLabel[];
55
+ getTotalDataLabels(seriesData: StackSeriesData<BoxType>, renderOptions: RenderOptions): RectDataLabel[];
56
+ makeGroupTotalDataLabels(stackSeries: StackSeriesData<BoxType>, renderOptions: RenderOptions): RectDataLabel[];
57
+ makeTotalDataLabels(stackData: StackDataValues, renderOptions: RenderOptions, stackGroupCount?: number, stackGroupIndex?: number): RectDataLabel[];
58
+ makeTotalDataLabel(totalLabel: StackTotalModel, centerYAxis?: CenterYAxisData): RectDataLabel;
59
+ onMousemoveGroupedType(responders: RectResponderModel[]): void;
60
+ selectSeries: ({ index, seriesIndex, state, }: SelectSeriesHandlerParams<BarChartOptions | ColumnChartOptions>) => void;
61
+ }
62
+ export {};