@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,89 @@
1
+ import Component from "./component";
2
+ import { ChartState } from "../../types/store/store";
3
+ import { BulletSeriesModels, BulletResponderModel, MarkerResponderModel, BulletLineModel, BulletRectModel, BulletRectResponderModel, ClipRectAreaModel } from "../../types/components/series";
4
+ import { BulletChartOptions, BulletSeriesType, BoxTypeEventDetectType } from "../../types/options";
5
+ import { TooltipData } from "../../types/components/tooltip";
6
+ import { BulletChartSeriesTheme } from "../../types/theme";
7
+ import { SelectSeriesHandlerParams } from "../charts/chart";
8
+ declare type RenderOptions = {
9
+ ratio: number;
10
+ tickDistance: number;
11
+ zeroPosition: number;
12
+ rangeWidth: number;
13
+ bulletWidth: number;
14
+ markerWidth: number;
15
+ };
16
+ declare type BulletTooltipData = {
17
+ range: TooltipData[];
18
+ bullet: TooltipData[];
19
+ marker: TooltipData[];
20
+ };
21
+ declare type BulletTooltipRectMap = Record<string, (BulletRectResponderModel | MarkerResponderModel)[]>;
22
+ export default class BulletSeries extends Component {
23
+ models: BulletSeriesModels;
24
+ drawModels: BulletSeriesModels;
25
+ responders: BulletResponderModel[];
26
+ activatedResponders: BulletResponderModel[];
27
+ theme: Required<BulletChartSeriesTheme>;
28
+ eventDetectType: BoxTypeEventDetectType;
29
+ tooltipRectMap: BulletTooltipRectMap;
30
+ vertical: boolean;
31
+ basePosition: number;
32
+ initialize(): void;
33
+ initUpdate(delta: number): void;
34
+ render(state: ChartState<BulletChartOptions>): void;
35
+ protected renderClipRectArea(): ClipRectAreaModel;
36
+ protected makeInitialClipRectModel(clipRect: ClipRectAreaModel): ClipRectAreaModel;
37
+ private getDataLabels;
38
+ private setEventDetectType;
39
+ private getBulletSeriesResponders;
40
+ private makeTooltipRectMap;
41
+ private getBulletSeriesModelsFromRectResponders;
42
+ private getGroupedRect;
43
+ private onMousemoveGroupedType;
44
+ onMousemove({ responders }: {
45
+ responders: any;
46
+ }): void;
47
+ onClick({ responders }: {
48
+ responders: BulletResponderModel[];
49
+ }): void;
50
+ onMouseoutComponent: () => void;
51
+ filterBulletResponder(responders: BulletResponderModel[]): BulletResponderModel[];
52
+ renderRanges(bulletData: BulletSeriesType[], { tickDistance, ratio, zeroPosition, rangeWidth }: RenderOptions): BulletRectModel[];
53
+ renderBullet(bulletData: BulletSeriesType[], { tickDistance, ratio, zeroPosition, bulletWidth }: RenderOptions): BulletRectModel[];
54
+ renderMarkers(bulletData: BulletSeriesType[], { tickDistance, ratio, zeroPosition, markerWidth }: RenderOptions): BulletLineModel[];
55
+ makeTooltipModel(seriesModels: BulletSeriesModels): BulletTooltipData;
56
+ makeTooltipData<T extends BulletRectModel | BulletLineModel>(data: T[], title: 'Range' | 'Actual' | 'Marker'): TooltipData[];
57
+ getBulletBarWidths(tickDistance: number): {
58
+ rangeWidth: number;
59
+ bulletWidth: number;
60
+ markerWidth: number;
61
+ };
62
+ getRangeColor(seriesColor: string, rangeIndex: number, seriesName: string, ignoreRestSeriesOpacity?: boolean): string;
63
+ getSeriesOpacity(seriesName: string, ignoreRestSeriesOpacity?: boolean): number;
64
+ getRespondersWithTheme(responders: BulletResponderModel[], type: 'hover' | 'select'): {
65
+ color: string | undefined;
66
+ thickness: number | undefined;
67
+ borderColor: string | undefined;
68
+ style: {
69
+ shadowColor?: string | undefined;
70
+ shadowBlur?: number | undefined;
71
+ shadowOffsetX?: number | undefined;
72
+ shadowOffsetY?: number | undefined;
73
+ }[];
74
+ modelType: "bullet" | "range";
75
+ seriesColor?: string | undefined;
76
+ tooltipColor?: string | undefined;
77
+ type: "rect";
78
+ value?: number | import("../../types/options").RangeDataType<number> | null | undefined;
79
+ name?: string | undefined;
80
+ index?: number | undefined;
81
+ x: number;
82
+ y: number;
83
+ width: number;
84
+ height: number;
85
+ }[];
86
+ selectSeries: ({ seriesIndex, state }: SelectSeriesHandlerParams<BulletChartOptions>) => void;
87
+ showTooltip: ({ seriesIndex, state }: SelectSeriesHandlerParams<BulletChartOptions>) => void;
88
+ }
89
+ export {};
@@ -0,0 +1,392 @@
1
+ import Component from "./component";
2
+ import { getActiveSeriesMap } from "../helpers/legend";
3
+ import { getRGBA, getAlpha } from "../helpers/color";
4
+ import { isLabelAxisOnYAxis, getAxisName, getSizeKey } from "../helpers/axes";
5
+ import { getDataLabelsOptions } from "../helpers/dataLabels";
6
+ import { DEFAULT_BULLET_RANGE_OPACITY } from "../helpers/theme";
7
+ import { isNumber, omit, calculateSizeWithPercentString, pick, isNull, deepCopyArray, } from "../helpers/utils";
8
+ import { message } from "../message";
9
+ import { makeRectResponderModel } from "../helpers/responders";
10
+ const DEFAULT_WIDTH_RATIO = 0.6;
11
+ const MARKER_LINE_DETECTION_SIZE = 5;
12
+ function getRectSize(vertical, barWidth, barLength) {
13
+ return {
14
+ width: vertical ? barWidth : barLength,
15
+ height: vertical ? barLength : barWidth,
16
+ };
17
+ }
18
+ function getStartX(seriesIndex, tickDistance, barWidth) {
19
+ return seriesIndex * tickDistance + (tickDistance - barWidth) / 2;
20
+ }
21
+ function makeBulletResponderModel(models, tooltipData) {
22
+ const { range, marker, bullet } = models;
23
+ const { range: tooltipRange, marker: tooltipMarker, bullet: tooltipBullet } = tooltipData;
24
+ return [
25
+ ...range.map((m, index) => (Object.assign(Object.assign({}, m), { data: tooltipRange[index] }))),
26
+ ...bullet.map((m, index) => (Object.assign(Object.assign({}, m), { data: tooltipBullet[index] }))),
27
+ ...marker.map((m, index) => (Object.assign(Object.assign({}, m), { detectionSize: MARKER_LINE_DETECTION_SIZE, data: tooltipMarker[index] }))),
28
+ ];
29
+ }
30
+ export default class BulletSeries extends Component {
31
+ constructor() {
32
+ super(...arguments);
33
+ this.models = { range: [], bullet: [], marker: [] };
34
+ this.activatedResponders = [];
35
+ this.eventDetectType = 'point';
36
+ this.vertical = false;
37
+ this.onMouseoutComponent = () => {
38
+ this.eventBus.emit('seriesPointHovered', { models: [], name: this.name });
39
+ this.eventBus.emit('renderHoveredSeries', {
40
+ models: [],
41
+ name: this.name,
42
+ });
43
+ this.eventBus.emit('needDraw');
44
+ };
45
+ this.selectSeries = ({ seriesIndex, state }) => {
46
+ var _a;
47
+ if (!isNumber(seriesIndex)) {
48
+ return;
49
+ }
50
+ const { name } = (_a = state.series.bullet) === null || _a === void 0 ? void 0 : _a[seriesIndex];
51
+ const model = this.filterBulletResponder(this.responders).filter(({ name: dataName }) => dataName === name);
52
+ if (!model) {
53
+ throw new Error(message.SELECT_SERIES_API_INDEX_ERROR);
54
+ }
55
+ this.eventBus.emit('renderSelectedSeries', {
56
+ models: this.getRespondersWithTheme(model, 'select'),
57
+ name: this.name,
58
+ });
59
+ this.eventBus.emit('needDraw');
60
+ };
61
+ this.showTooltip = ({ seriesIndex, state }) => {
62
+ var _a;
63
+ if (!isNumber(seriesIndex)) {
64
+ return;
65
+ }
66
+ const { name } = (_a = state.series.bullet) === null || _a === void 0 ? void 0 : _a[seriesIndex];
67
+ const models = this.filterBulletResponder(this.responders).filter(({ name: dataName }) => dataName === name);
68
+ if (!models.length) {
69
+ return;
70
+ }
71
+ this.onMousemove({ responders: models });
72
+ };
73
+ }
74
+ initialize() {
75
+ this.type = 'series';
76
+ this.name = 'bullet';
77
+ this.eventBus.on('selectSeries', this.selectSeries);
78
+ this.eventBus.on('showTooltip', this.showTooltip);
79
+ this.eventBus.on('hideTooltip', this.onMouseoutComponent);
80
+ }
81
+ initUpdate(delta) {
82
+ if (!this.drawModels) {
83
+ return;
84
+ }
85
+ const { clipRect } = this.drawModels;
86
+ if (!clipRect) {
87
+ return;
88
+ }
89
+ const offsetKey = this.vertical ? 'y' : 'x';
90
+ const key = this.vertical ? 'height' : 'width';
91
+ const current = clipRect[0];
92
+ const target = this.models.clipRect[0];
93
+ const offsetSize = current[key] + (target[key] - current[key]) * delta;
94
+ current[key] = offsetSize;
95
+ current[offsetKey] = Math.max(this.basePosition - (offsetSize * this.basePosition) / target[key], 0);
96
+ }
97
+ render(state) {
98
+ var _a, _b;
99
+ const { layout, axes, series, scale, legend, options, theme, categories } = state;
100
+ if (!series.bullet) {
101
+ throw new Error(message.noDataError(this.name));
102
+ }
103
+ this.setEventDetectType(series, options);
104
+ this.theme = theme.series.bullet;
105
+ this.rect = layout.plot;
106
+ this.activeSeriesMap = getActiveSeriesMap(legend);
107
+ this.selectable = this.getSelectableOption(options);
108
+ this.vertical = !!((_b = (_a = options) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b.vertical);
109
+ const labelAxisOnYAxis = isLabelAxisOnYAxis({ series, options });
110
+ const { labelAxisName, valueAxisName } = getAxisName(labelAxisOnYAxis, series);
111
+ const { valueSizeKey } = getSizeKey(labelAxisOnYAxis);
112
+ const { tickDistance } = axes[labelAxisName];
113
+ const { zeroPosition } = axes[valueAxisName];
114
+ const { min, max } = scale[valueAxisName].limit;
115
+ const bulletData = series.bullet.data;
116
+ this.basePosition = (zeroPosition !== null && zeroPosition !== void 0 ? zeroPosition : 0);
117
+ const renderOptions = Object.assign({ ratio: this.rect[valueSizeKey] / (max - min), tickDistance,
118
+ zeroPosition }, this.getBulletBarWidths(tickDistance));
119
+ const rangeModels = this.renderRanges(bulletData, renderOptions);
120
+ const bulletModels = this.renderBullet(bulletData, renderOptions);
121
+ const markerModels = this.renderMarkers(bulletData, renderOptions);
122
+ const clipRect = this.renderClipRectArea();
123
+ this.models.clipRect = [clipRect];
124
+ this.models.range = rangeModels;
125
+ this.models.bullet = bulletModels;
126
+ this.models.marker = markerModels;
127
+ if (!this.drawModels) {
128
+ this.drawModels = {
129
+ clipRect: [this.makeInitialClipRectModel(clipRect)],
130
+ range: deepCopyArray(rangeModels),
131
+ bullet: deepCopyArray(bulletModels),
132
+ marker: deepCopyArray(markerModels),
133
+ };
134
+ }
135
+ const models = {
136
+ range: rangeModels,
137
+ bullet: bulletModels,
138
+ marker: markerModels,
139
+ };
140
+ const tooltipData = this.makeTooltipModel(models);
141
+ this.tooltipRectMap = this.makeTooltipRectMap(models, tooltipData);
142
+ this.responders = this.getBulletSeriesResponders(models, tooltipData, axes, categories);
143
+ if (getDataLabelsOptions(options, this.name).visible) {
144
+ this.renderDataLabels(this.getDataLabels([...rangeModels, ...bulletModels, ...markerModels], this.vertical, this.rect[valueSizeKey]));
145
+ }
146
+ }
147
+ renderClipRectArea() {
148
+ return {
149
+ type: 'clipRectArea',
150
+ x: 0,
151
+ y: 0,
152
+ width: this.rect.width,
153
+ height: this.rect.height,
154
+ };
155
+ }
156
+ makeInitialClipRectModel(clipRect) {
157
+ const width = this.vertical ? clipRect.width : 0;
158
+ const height = this.vertical ? 0 : clipRect.height;
159
+ const x = this.vertical ? clipRect.x : 0;
160
+ const y = this.vertical ? 0 : clipRect.y;
161
+ return { type: 'clipRectArea', width, height, x, y };
162
+ }
163
+ getDataLabels(seriesModels, vertical, size) {
164
+ const { dataLabels: dataLabelTheme } = this.theme;
165
+ const bulletLabelTheme = omit(dataLabelTheme, 'marker');
166
+ const { useSeriesColor, color } = bulletLabelTheme;
167
+ const { marker } = dataLabelTheme;
168
+ return seriesModels
169
+ .filter((m) => m.type === 'line' || m.modelType !== 'range')
170
+ .map((m) => {
171
+ var _a;
172
+ if (m.type === 'line') {
173
+ return Object.assign(Object.assign({}, m), { x: vertical ? (m.x + m.x2) / 2 : m.x, theme: Object.assign(Object.assign({}, marker), { color: marker.useSeriesColor ? m.strokeStyle : marker.color }) });
174
+ }
175
+ const isValueNegative = isNumber(m.value) && ((_a = m) === null || _a === void 0 ? void 0 : _a.value) < 0;
176
+ let direction = vertical ? 'top' : 'right';
177
+ if (isValueNegative) {
178
+ direction = vertical ? 'bottom' : 'left';
179
+ }
180
+ return Object.assign(Object.assign({}, m), { direction, plot: {
181
+ x: 0,
182
+ y: 0,
183
+ size,
184
+ }, theme: Object.assign(Object.assign({}, bulletLabelTheme), { color: useSeriesColor ? m.color : color }) });
185
+ });
186
+ }
187
+ setEventDetectType(series, options) {
188
+ var _a, _b;
189
+ if ((_b = (_a = options) === null || _a === void 0 ? void 0 : _a.series) === null || _b === void 0 ? void 0 : _b.eventDetectType) {
190
+ this.eventDetectType = options.series.eventDetectType;
191
+ }
192
+ }
193
+ getBulletSeriesResponders(models, tooltipData, axes, categories) {
194
+ return this.eventDetectType === 'grouped'
195
+ ? makeRectResponderModel(this.rect, (this.vertical ? axes.xAxis : axes.yAxis), categories, this.vertical)
196
+ : makeBulletResponderModel(models, tooltipData);
197
+ }
198
+ makeTooltipRectMap(models, tooltipData) {
199
+ const result = {};
200
+ Object.keys(models).forEach((seriesType) => {
201
+ models[seriesType].forEach((m, index) => {
202
+ const label = m.name;
203
+ if (!result[label]) {
204
+ result[label] = [];
205
+ }
206
+ const tooltipModel = Object.assign(Object.assign({}, m), { data: tooltipData[seriesType][index] });
207
+ result[label].push(tooltipModel);
208
+ });
209
+ });
210
+ return result;
211
+ }
212
+ getBulletSeriesModelsFromRectResponders(responders) {
213
+ var _a;
214
+ if (!responders.length) {
215
+ return [];
216
+ }
217
+ return _a = this.tooltipRectMap[responders[0].label], (_a !== null && _a !== void 0 ? _a : []);
218
+ }
219
+ getGroupedRect(responders, type) {
220
+ const bulletSeriesModels = this.getBulletSeriesModelsFromRectResponders(responders);
221
+ const { color, opacity } = this.theme[type].groupedRect;
222
+ return bulletSeriesModels.length
223
+ ? responders.map((m) => (Object.assign(Object.assign({}, m), { color: getRGBA(color, opacity) })))
224
+ : [];
225
+ }
226
+ onMousemoveGroupedType(responders) {
227
+ const bulletSeriesModels = this.getBulletSeriesModelsFromRectResponders(responders);
228
+ this.eventBus.emit('renderHoveredSeries', {
229
+ models: [
230
+ ...this.getGroupedRect(responders, 'hover'),
231
+ ...this.getRespondersWithTheme(bulletSeriesModels, 'hover'),
232
+ ],
233
+ name: this.name,
234
+ eventDetectType: this.eventDetectType,
235
+ });
236
+ this.activatedResponders = bulletSeriesModels;
237
+ }
238
+ onMousemove({ responders }) {
239
+ if (this.eventDetectType === 'grouped') {
240
+ this.onMousemoveGroupedType(responders);
241
+ }
242
+ else {
243
+ this.eventBus.emit('renderHoveredSeries', {
244
+ models: this.getRespondersWithTheme(responders, 'hover'),
245
+ name: this.name,
246
+ });
247
+ this.activatedResponders = responders.length ? [responders[responders.length - 1]] : [];
248
+ }
249
+ this.eventBus.emit('seriesPointHovered', {
250
+ models: this.activatedResponders,
251
+ name: this.name,
252
+ });
253
+ this.eventBus.emit('needDraw');
254
+ }
255
+ onClick({ responders }) {
256
+ if (this.selectable) {
257
+ const models = this.eventDetectType === 'grouped'
258
+ ? [
259
+ ...this.getGroupedRect(responders, 'select'),
260
+ ...this.getRespondersWithTheme(this.getBulletSeriesModelsFromRectResponders(responders), 'select'),
261
+ ]
262
+ : this.getRespondersWithTheme(responders, 'select');
263
+ this.eventBus.emit('renderSelectedSeries', {
264
+ models,
265
+ name: this.name,
266
+ eventDetectType: this.eventDetectType,
267
+ });
268
+ this.eventBus.emit('needDraw');
269
+ }
270
+ }
271
+ filterBulletResponder(responders) {
272
+ return responders.filter((model) => { var _a; return ((_a = model) === null || _a === void 0 ? void 0 : _a.modelType) === 'bullet'; });
273
+ }
274
+ renderRanges(bulletData, { tickDistance, ratio, zeroPosition, rangeWidth }) {
275
+ const rangeModels = [];
276
+ bulletData.forEach(({ ranges, color, name }, seriesIndex) => {
277
+ ((ranges !== null && ranges !== void 0 ? ranges : [])).forEach((range, rangeIndex) => {
278
+ if (!isNull(range)) {
279
+ const [start, end] = range;
280
+ const barLength = (end - start) * ratio;
281
+ const rangeStartX = getStartX(seriesIndex, tickDistance, rangeWidth);
282
+ rangeModels.push(Object.assign(Object.assign({ type: 'rect', name, color: this.getRangeColor(getRGBA(color, this.getSeriesOpacity(name)), rangeIndex, name), x: this.vertical ? rangeStartX : start * ratio + zeroPosition, y: this.vertical ? zeroPosition - end * ratio : rangeStartX }, getRectSize(this.vertical, rangeWidth, barLength)), { modelType: 'range', seriesColor: color, tooltipColor: this.getRangeColor(color, rangeIndex, name, true), value: range }));
283
+ }
284
+ });
285
+ });
286
+ return rangeModels;
287
+ }
288
+ renderBullet(bulletData, { tickDistance, ratio, zeroPosition, bulletWidth }) {
289
+ const { borderColor, borderWidth: thickness } = this.theme;
290
+ return bulletData.reduce((acc, { data, color, name }, seriesIndex) => {
291
+ if (isNull(data)) {
292
+ return [...acc];
293
+ }
294
+ const bulletLength = Math.max(Math.abs(data * ratio), 2);
295
+ const bulletStartX = getStartX(seriesIndex, tickDistance, bulletWidth);
296
+ const x = this.vertical ? bulletStartX : zeroPosition - (data < 0 ? bulletLength : 0);
297
+ const y = this.vertical
298
+ ? zeroPosition - bulletLength + (data < 0 ? bulletLength : 0)
299
+ : bulletStartX;
300
+ const bullet = Object.assign({ type: 'rect', name, color: getRGBA(color, this.getSeriesOpacity(name)), x,
301
+ y,
302
+ thickness,
303
+ borderColor, modelType: 'bullet', seriesColor: color, tooltipColor: color, value: data }, getRectSize(this.vertical, bulletWidth, bulletLength));
304
+ return [...acc, bullet];
305
+ }, []);
306
+ }
307
+ renderMarkers(bulletData, { tickDistance, ratio, zeroPosition, markerWidth }) {
308
+ const { markerLineWidth } = this.theme;
309
+ const markerModels = [];
310
+ bulletData.forEach(({ markers, color, name }, seriesIndex) => {
311
+ const markerStartX = getStartX(seriesIndex, tickDistance, markerWidth);
312
+ ((markers !== null && markers !== void 0 ? markers : [])).forEach((marker) => {
313
+ if (!isNull(marker)) {
314
+ const dataPosition = marker * ratio;
315
+ const x = this.vertical ? markerStartX : dataPosition + zeroPosition;
316
+ const y = this.vertical ? zeroPosition - dataPosition : markerStartX;
317
+ markerModels.push({
318
+ type: 'line',
319
+ name,
320
+ x,
321
+ y,
322
+ x2: this.vertical ? x + markerWidth : x,
323
+ y2: this.vertical ? y : y + markerWidth,
324
+ strokeStyle: getRGBA(color, this.getSeriesOpacity(name)),
325
+ lineWidth: markerLineWidth,
326
+ seriesColor: color,
327
+ tooltipColor: color,
328
+ value: marker,
329
+ });
330
+ }
331
+ });
332
+ });
333
+ return markerModels;
334
+ }
335
+ makeTooltipModel(seriesModels) {
336
+ const { range, bullet, marker } = seriesModels;
337
+ return {
338
+ range: this.makeTooltipData(range, 'Range'),
339
+ bullet: this.makeTooltipData(bullet, 'Actual'),
340
+ marker: this.makeTooltipData(marker, 'Marker'),
341
+ };
342
+ }
343
+ makeTooltipData(data, title) {
344
+ return data.map((m) => {
345
+ const { name, seriesColor, tooltipColor, value } = m;
346
+ return {
347
+ label: name,
348
+ color: getRGBA(seriesColor, 1),
349
+ value: [{ title, value, color: tooltipColor }],
350
+ templateType: 'bullet',
351
+ };
352
+ });
353
+ }
354
+ getBulletBarWidths(tickDistance) {
355
+ const { barWidth: barThemeWidth, barWidthRatios } = this.theme;
356
+ const { rangeRatio, bulletRatio, markerRatio } = barWidthRatios;
357
+ const barWidth = barThemeWidth
358
+ ? calculateSizeWithPercentString(tickDistance, barThemeWidth)
359
+ : tickDistance * DEFAULT_WIDTH_RATIO;
360
+ return {
361
+ rangeWidth: barWidth * rangeRatio,
362
+ bulletWidth: barWidth * bulletRatio,
363
+ markerWidth: barWidth * markerRatio,
364
+ };
365
+ }
366
+ getRangeColor(seriesColor, rangeIndex, seriesName, ignoreRestSeriesOpacity = false) {
367
+ const { rangeColors } = this.theme;
368
+ const hasThemeRangeColor = Array.isArray(rangeColors) && rangeColors[rangeIndex];
369
+ const color = hasThemeRangeColor ? rangeColors[rangeIndex] : seriesColor;
370
+ const opacity = hasThemeRangeColor
371
+ ? getAlpha(rangeColors[rangeIndex])
372
+ : DEFAULT_BULLET_RANGE_OPACITY[rangeIndex];
373
+ return getRGBA(color, opacity * this.getSeriesOpacity(seriesName, ignoreRestSeriesOpacity));
374
+ }
375
+ getSeriesOpacity(seriesName, ignoreRestSeriesOpacity = false) {
376
+ const { select, areaOpacity } = this.theme;
377
+ const active = this.activeSeriesMap[seriesName];
378
+ const selected = Object.values(this.activeSeriesMap).some((elem) => !elem);
379
+ const restOpacity = ignoreRestSeriesOpacity ? areaOpacity : select.restSeries.areaOpacity;
380
+ const selectedOpacity = active ? select.areaOpacity : restOpacity;
381
+ return selected ? selectedOpacity : areaOpacity;
382
+ }
383
+ getRespondersWithTheme(responders, type) {
384
+ const { color, borderColor, borderWidth: thickness } = this.theme[type];
385
+ return this.filterBulletResponder(responders).map((model) => {
386
+ return Object.assign(Object.assign({}, model), { color: (color !== null && color !== void 0 ? color : model.tooltipColor), thickness,
387
+ borderColor, style: [
388
+ Object.assign({}, pick(this.theme[type], 'shadowBlur', 'shadowColor', 'shadowOffsetX', 'shadowOffsetY')),
389
+ ] });
390
+ });
391
+ }
392
+ }
@@ -0,0 +1,10 @@
1
+ import Component from "./component";
2
+ import { ChartState, Options, CircleLegend as CircleLegendType } from "../../types/store/store";
3
+ import { CircleLegendModels } from "../../types/components/circleLegend";
4
+ import { BubbleSeriesType } from "../../types/options";
5
+ export default class CircleLegend extends Component {
6
+ models: CircleLegendModels;
7
+ initialize(): void;
8
+ render({ layout, series, circleLegend }: ChartState<Options>): void;
9
+ renderCircleLegend(bubbleData: BubbleSeriesType[], circleLegend: CircleLegendType): void;
10
+ }
@@ -0,0 +1,37 @@
1
+ import Component from "./component";
2
+ import { getMaxRadius } from "./bubbleSeries";
3
+ import { message } from "../message";
4
+ export default class CircleLegend extends Component {
5
+ constructor() {
6
+ super(...arguments);
7
+ this.models = { circleLegend: [] };
8
+ }
9
+ initialize() {
10
+ this.type = 'circleLegend';
11
+ }
12
+ render({ layout, series, circleLegend }) {
13
+ if (!series.bubble) {
14
+ throw new Error(message.CIRCLE_LEGEND_RENDER_ERROR);
15
+ }
16
+ this.isShow = circleLegend.visible;
17
+ if (!this.isShow) {
18
+ return;
19
+ }
20
+ const bubbleData = series.bubble.data;
21
+ this.rect = layout.circleLegend;
22
+ this.renderCircleLegend(bubbleData, circleLegend);
23
+ }
24
+ renderCircleLegend(bubbleData, circleLegend) {
25
+ const value = getMaxRadius(bubbleData);
26
+ const { radius } = circleLegend;
27
+ this.models.circleLegend = [
28
+ {
29
+ type: 'circleLegend',
30
+ radius,
31
+ value,
32
+ x: radius,
33
+ y: this.rect.height - radius,
34
+ },
35
+ ];
36
+ }
37
+ }
@@ -0,0 +1,64 @@
1
+ import { ChartState, Options } from "../../types/store/store";
2
+ import { Rect } from "../../types/options";
3
+ import Store from "../store/store";
4
+ import Painter from "../painter";
5
+ import EventEmitter from "../eventEmitter";
6
+ import { AreaSeriesModels, BoxSeriesModels, CircleSeriesModels, LineSeriesModels, PieSeriesModels, RadarSeriesModels, BoxPlotSeriesModels, ResponderModel, TreemapSeriesModels, HeatmapRectModels, NestedPieSeriesModels, ScatterSeriesModels, BulletSeriesModels, BackgroundModel, GaugeSeriesModels, NoDataTextModel, RadialBarSeriesModels } from "../../types/components/series";
7
+ import { AxisModels, LineModel, LabelModel } from "../../types/components/axis";
8
+ import { ExportMenuModels } from "../../types/components/exportMenu";
9
+ import { LegendModel } from "../../types/components/legend";
10
+ import { CircleLegendModels } from "../../types/components/circleLegend";
11
+ import { PlotModels } from "../../types/components/plot";
12
+ import { DataLabelModels, SeriesDataLabels } from "../../types/components/dataLabels";
13
+ import { ZoomModels } from "../../types/components/zoom";
14
+ import { RadialPlotModels } from "../../types/components/radialPlot";
15
+ import { HoveredSeriesModel } from "./hoveredSeries";
16
+ import { BackButtonModels, ResetButtonModels } from "../../types/components/resetButton";
17
+ import { SpectrumLegendModels } from "../../types/components/spectrumLegend";
18
+ import { ResponderSeriesModel } from "./selectedSeries";
19
+ import { RadialAxisModels } from "../../types/components/radialAxis";
20
+ export declare type ComponentType = 'component' | 'series' | 'hoveredSeries' | 'selectedSeries' | 'legend' | 'axis' | 'tooltip' | 'plot' | 'circleLegend' | 'spectrumLegend' | 'dataLabels' | 'title' | 'axisTitle' | 'exportMenu' | 'resetButton' | 'zeroAxis' | 'backButton' | 'background' | 'noDataText' | 'rangeSelection';
21
+ declare type ComponentModels = AxisModels | AreaSeriesModels | BoxSeriesModels | CircleSeriesModels | LineSeriesModels | ExportMenuModels | CircleLegendModels | PieSeriesModels | RadarSeriesModels | BoxPlotSeriesModels | ZoomModels | PlotModels | RadialPlotModels | LineModel[] | LabelModel[] | DataLabelModels | LegendModel[] | HoveredSeriesModel | TreemapSeriesModels | ResetButtonModels | SpectrumLegendModels | BackButtonModels | HeatmapRectModels | NestedPieSeriesModels | ResponderSeriesModel | ScatterSeriesModels | BulletSeriesModels | BackgroundModel | RadialAxisModels | RadialBarSeriesModels | GaugeSeriesModels | NoDataTextModel;
22
+ export declare type RespondersModel = {
23
+ component: Component;
24
+ detected: ResponderModel[];
25
+ }[];
26
+ export default abstract class Component {
27
+ name: string;
28
+ type: ComponentType;
29
+ rect: Rect;
30
+ isShow: boolean;
31
+ selectable: boolean;
32
+ store: Store<Options>;
33
+ eventBus: EventEmitter;
34
+ models: ComponentModels;
35
+ drawModels: ComponentModels;
36
+ responders: ResponderModel[];
37
+ activeSeriesMap?: {
38
+ [key: string]: boolean;
39
+ };
40
+ constructor({ store, eventBus }: {
41
+ store: Store<Options>;
42
+ eventBus: EventEmitter;
43
+ });
44
+ abstract initialize(args: any): void;
45
+ abstract render(state: ChartState<Options>, computed: Record<string, any>): void;
46
+ update(delta: number): void;
47
+ initUpdate(delta: number): void;
48
+ updateModels(currentModels: any, targetModels: any, delta: any): void;
49
+ sync(): void;
50
+ getCurrentModelToMatchTargetModel(models: any, currentModels: any, targetModels: any): any;
51
+ private getCurrentModelWithDifferentModel;
52
+ syncModels(currentModels: any, targetModels: any, type?: string): void;
53
+ getSelectableOption(options: Options): boolean;
54
+ beforeDraw?(painter: Painter): void;
55
+ onClick?(responseData: any): void;
56
+ onMousemove?(responseData: any): void;
57
+ onMouseenterComponent?(): void;
58
+ onMouseoutComponent?(): void;
59
+ onMousedown?(responseData: any): void;
60
+ onMouseup?(responseData: any): void;
61
+ renderDataLabels(data: SeriesDataLabels, name?: string): void;
62
+ draw(painter: Painter): void;
63
+ }
64
+ export {};