@amcharts/amcharts5 5.18.0 → 5.19.0

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 (281) hide show
  1. package/.internal/charts/flow/ArcDiagramLink.d.ts +3 -0
  2. package/.internal/charts/flow/ArcDiagramLink.d.ts.map +1 -1
  3. package/.internal/charts/flow/ArcDiagramLink.js +12 -4
  4. package/.internal/charts/flow/ArcDiagramLink.js.map +1 -1
  5. package/.internal/charts/flow/ChordDirected.d.ts.map +1 -1
  6. package/.internal/charts/flow/ChordDirected.js +1 -0
  7. package/.internal/charts/flow/ChordDirected.js.map +1 -1
  8. package/.internal/charts/flow/SankeyLink.d.ts +3 -0
  9. package/.internal/charts/flow/SankeyLink.d.ts.map +1 -1
  10. package/.internal/charts/flow/SankeyLink.js +12 -4
  11. package/.internal/charts/flow/SankeyLink.js.map +1 -1
  12. package/.internal/charts/hierarchy/BreadcrumbBar.d.ts.map +1 -1
  13. package/.internal/charts/hierarchy/BreadcrumbBar.js +6 -8
  14. package/.internal/charts/hierarchy/BreadcrumbBar.js.map +1 -1
  15. package/.internal/charts/hierarchy/ForceDirected.js +1 -1
  16. package/.internal/charts/hierarchy/ForceDirected.js.map +1 -1
  17. package/.internal/charts/hierarchy/HierarchyLink.d.ts +3 -0
  18. package/.internal/charts/hierarchy/HierarchyLink.d.ts.map +1 -1
  19. package/.internal/charts/hierarchy/HierarchyLink.js +10 -2
  20. package/.internal/charts/hierarchy/HierarchyLink.js.map +1 -1
  21. package/.internal/charts/map/GraticuleSeries.d.ts +2 -0
  22. package/.internal/charts/map/GraticuleSeries.d.ts.map +1 -1
  23. package/.internal/charts/map/GraticuleSeries.js +6 -1
  24. package/.internal/charts/map/GraticuleSeries.js.map +1 -1
  25. package/.internal/charts/map/MapChart.d.ts +59 -0
  26. package/.internal/charts/map/MapChart.d.ts.map +1 -1
  27. package/.internal/charts/map/MapChart.js +43 -0
  28. package/.internal/charts/map/MapChart.js.map +1 -1
  29. package/.internal/charts/map/MapChartProjections.d.ts +3 -0
  30. package/.internal/charts/map/MapChartProjections.d.ts.map +1 -0
  31. package/.internal/charts/map/MapChartProjections.js +20 -0
  32. package/.internal/charts/map/MapChartProjections.js.map +1 -0
  33. package/.internal/charts/map/MapPointSeries.js +1 -1
  34. package/.internal/charts/map/MapPointSeries.js.map +1 -1
  35. package/.internal/charts/map/MapPolygonSeries.d.ts.map +1 -1
  36. package/.internal/charts/map/MapPolygonSeries.js +2 -1
  37. package/.internal/charts/map/MapPolygonSeries.js.map +1 -1
  38. package/.internal/charts/map/MapProjections.d.ts +13 -0
  39. package/.internal/charts/map/MapProjections.d.ts.map +1 -0
  40. package/.internal/charts/map/MapProjections.js +15 -0
  41. package/.internal/charts/map/MapProjections.js.map +1 -0
  42. package/.internal/charts/pie/PieChart.d.ts +1 -0
  43. package/.internal/charts/pie/PieChart.d.ts.map +1 -1
  44. package/.internal/charts/pie/PieChart.js +6 -0
  45. package/.internal/charts/pie/PieChart.js.map +1 -1
  46. package/.internal/charts/stock/SettingsModal.js +1 -1
  47. package/.internal/charts/stock/SettingsModal.js.map +1 -1
  48. package/.internal/charts/stock/indicators/Indicator.d.ts.map +1 -1
  49. package/.internal/charts/stock/indicators/Indicator.js +1 -1
  50. package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
  51. package/.internal/charts/stock/toolbar/StockToolbar.d.ts.map +1 -1
  52. package/.internal/charts/stock/toolbar/StockToolbar.js +3 -0
  53. package/.internal/charts/stock/toolbar/StockToolbar.js.map +1 -1
  54. package/.internal/charts/xy/XYChart.js +5 -5
  55. package/.internal/charts/xy/XYChart.js.map +1 -1
  56. package/.internal/charts/xy/XYCursor.d.ts +2 -0
  57. package/.internal/charts/xy/XYCursor.d.ts.map +1 -1
  58. package/.internal/charts/xy/XYCursor.js +6 -2
  59. package/.internal/charts/xy/XYCursor.js.map +1 -1
  60. package/.internal/charts/xy/axes/Axis.d.ts +7 -0
  61. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  62. package/.internal/charts/xy/axes/Axis.js +33 -20
  63. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  64. package/.internal/charts/xy/axes/CategoryDateAxis.d.ts.map +1 -1
  65. package/.internal/charts/xy/axes/CategoryDateAxis.js +3 -0
  66. package/.internal/charts/xy/axes/CategoryDateAxis.js.map +1 -1
  67. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  68. package/.internal/charts/xy/axes/DateAxis.js +18 -1
  69. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  70. package/.internal/charts/xy/axes/ValueAxis.d.ts +1 -0
  71. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  72. package/.internal/charts/xy/axes/ValueAxis.js +26 -10
  73. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  74. package/.internal/charts/xy/series/StepLineSeries.js +1 -1
  75. package/.internal/charts/xy/series/StepLineSeries.js.map +1 -1
  76. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  77. package/.internal/charts/xy/series/XYSeries.js +10 -4
  78. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  79. package/.internal/core/Registry.js +1 -1
  80. package/.internal/core/Registry.js.map +1 -1
  81. package/.internal/core/Root.d.ts +19 -0
  82. package/.internal/core/Root.d.ts.map +1 -1
  83. package/.internal/core/Root.js +15 -2
  84. package/.internal/core/Root.js.map +1 -1
  85. package/.internal/core/render/Container.d.ts.map +1 -1
  86. package/.internal/core/render/Container.js +1 -0
  87. package/.internal/core/render/Container.js.map +1 -1
  88. package/.internal/core/render/Legend.js +2 -2
  89. package/.internal/core/render/Legend.js.map +1 -1
  90. package/.internal/core/render/backend/CanvasRenderer.d.ts +6 -0
  91. package/.internal/core/render/backend/CanvasRenderer.d.ts.map +1 -1
  92. package/.internal/core/render/backend/CanvasRenderer.js +25 -5
  93. package/.internal/core/render/backend/CanvasRenderer.js.map +1 -1
  94. package/.internal/core/util/Modal.js +2 -2
  95. package/.internal/core/util/Modal.js.map +1 -1
  96. package/.internal/core/util/Utils.d.ts +21 -0
  97. package/.internal/core/util/Utils.d.ts.map +1 -1
  98. package/.internal/core/util/Utils.js +49 -0
  99. package/.internal/core/util/Utils.js.map +1 -1
  100. package/.internal/plugins/exporting/Exporting.d.ts +38 -0
  101. package/.internal/plugins/exporting/Exporting.d.ts.map +1 -1
  102. package/.internal/plugins/exporting/Exporting.js +33 -0
  103. package/.internal/plugins/exporting/Exporting.js.map +1 -1
  104. package/.internal/plugins/exporting/ExportingMenu.js +2 -2
  105. package/.internal/plugins/exporting/ExportingMenu.js.map +1 -1
  106. package/.internal/plugins/json/ChartSerializer.d.ts +0 -9
  107. package/.internal/plugins/json/ChartSerializer.d.ts.map +1 -1
  108. package/.internal/plugins/json/ChartSerializer.js +8 -12
  109. package/.internal/plugins/json/ChartSerializer.js.map +1 -1
  110. package/.internal/plugins/json/Classes.d.ts.map +1 -1
  111. package/.internal/plugins/json/Classes.js +4 -1
  112. package/.internal/plugins/json/Classes.js.map +1 -1
  113. package/.internal/plugins/json/Json.d.ts.map +1 -1
  114. package/.internal/plugins/json/Json.js +56 -2
  115. package/.internal/plugins/json/Json.js.map +1 -1
  116. package/CHANGELOG.md +23 -0
  117. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  118. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  119. package/examples/javascript/flow-chord/package.json +1 -1
  120. package/examples/javascript/flow-chord-directed/package.json +1 -1
  121. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  122. package/examples/javascript/flow-sankey/package.json +1 -1
  123. package/examples/javascript/gantt/package.json +1 -1
  124. package/examples/javascript/gantt-multilevel/package.json +1 -1
  125. package/examples/javascript/gantt-simple/package.json +1 -1
  126. package/examples/javascript/gauge/package.json +1 -1
  127. package/examples/javascript/gauge-bands/package.json +1 -1
  128. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  129. package/examples/javascript/hierarchy-pack/package.json +1 -1
  130. package/examples/javascript/hierarchy-partition/package.json +1 -1
  131. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  132. package/examples/javascript/hierarchy-tree/package.json +1 -1
  133. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  134. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  135. package/examples/javascript/jest/package.json +1 -1
  136. package/examples/javascript/json-pie/package.json +1 -1
  137. package/examples/javascript/json-xy/package.json +1 -1
  138. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  139. package/examples/javascript/map-clustered-points/package.json +1 -1
  140. package/examples/javascript/map-day-and-night/package.json +1 -1
  141. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  142. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  143. package/examples/javascript/map-sankey/package.json +1 -1
  144. package/examples/javascript/map-sankey-waypoints/package.json +1 -1
  145. package/examples/javascript/map-with-bubbles/package.json +1 -1
  146. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  147. package/examples/javascript/misc-40-charts/package.json +1 -1
  148. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  149. package/examples/javascript/pie-chart/package.json +1 -1
  150. package/examples/javascript/pie-donut-chart/package.json +1 -1
  151. package/examples/javascript/pie-variable-radius/package.json +1 -1
  152. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  153. package/examples/javascript/radar-heat-map/package.json +1 -1
  154. package/examples/javascript/radar-line/package.json +1 -1
  155. package/examples/javascript/radar-time-line/package.json +1 -1
  156. package/examples/javascript/sliced-funnel/package.json +1 -1
  157. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  158. package/examples/javascript/sliced-pyramid/package.json +1 -1
  159. package/examples/javascript/stock-chart/package.json +1 -1
  160. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  161. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  162. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  163. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  164. package/examples/javascript/stock-chart-live/package.json +1 -1
  165. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  166. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  167. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  168. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  169. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  170. package/examples/javascript/venn-diagram/package.json +1 -1
  171. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  172. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  173. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  174. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  175. package/examples/javascript/xy-bubble/package.json +1 -1
  176. package/examples/javascript/xy-candlestick/package.json +1 -1
  177. package/examples/javascript/xy-clustered-column/package.json +1 -1
  178. package/examples/javascript/xy-column/package.json +1 -1
  179. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  180. package/examples/javascript/xy-data-grouping/package.json +1 -1
  181. package/examples/javascript/xy-draggable-range/package.json +1 -1
  182. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  183. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  184. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  185. package/examples/javascript/xy-line/package.json +1 -1
  186. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  187. package/examples/javascript/xy-live-data/package.json +1 -1
  188. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  189. package/examples/javascript/xy-ohlc/package.json +1 -1
  190. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  191. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  192. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  193. package/examples/javascript/xy-stacked-column/package.json +1 -1
  194. package/examples/javascript/xy-stacked-step/package.json +1 -1
  195. package/examples/javascript/xy-stock/package.json +1 -1
  196. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  197. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  198. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  199. package/examples/typescript/flow-chord/package.json +1 -1
  200. package/examples/typescript/flow-chord-directed/package.json +1 -1
  201. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  202. package/examples/typescript/flow-sankey/package.json +1 -1
  203. package/examples/typescript/gantt/package.json +1 -1
  204. package/examples/typescript/gantt-multilevel/package.json +1 -1
  205. package/examples/typescript/gantt-simple/package.json +1 -1
  206. package/examples/typescript/gauge/package.json +1 -1
  207. package/examples/typescript/gauge-bands/package.json +1 -1
  208. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  209. package/examples/typescript/hierarchy-pack/package.json +1 -1
  210. package/examples/typescript/hierarchy-partition/package.json +1 -1
  211. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  212. package/examples/typescript/hierarchy-tree/package.json +1 -1
  213. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  214. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  215. package/examples/typescript/jest/package.json +1 -1
  216. package/examples/typescript/json-pie/package.json +1 -1
  217. package/examples/typescript/json-xy/package.json +1 -1
  218. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  219. package/examples/typescript/map-clustered-points/package.json +1 -1
  220. package/examples/typescript/map-day-and-night/package.json +1 -1
  221. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  222. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  223. package/examples/typescript/map-sankey/package.json +1 -1
  224. package/examples/typescript/map-sankey-waypoints/package.json +1 -1
  225. package/examples/typescript/map-with-bubbles/package.json +1 -1
  226. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  227. package/examples/typescript/misc-40-charts/package.json +1 -1
  228. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  229. package/examples/typescript/pie-chart/package.json +1 -1
  230. package/examples/typescript/pie-donut-chart/package.json +1 -1
  231. package/examples/typescript/pie-variable-radius/package.json +1 -1
  232. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  233. package/examples/typescript/radar-heat-map/package.json +1 -1
  234. package/examples/typescript/radar-line/package.json +1 -1
  235. package/examples/typescript/radar-time-line/package.json +1 -1
  236. package/examples/typescript/sliced-funnel/package.json +1 -1
  237. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  238. package/examples/typescript/sliced-pyramid/package.json +1 -1
  239. package/examples/typescript/stock-chart/package.json +1 -1
  240. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  241. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  242. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  243. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  244. package/examples/typescript/stock-chart-live/package.json +1 -1
  245. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  246. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  247. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  248. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  249. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  250. package/examples/typescript/venn-diagram/package.json +1 -1
  251. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  252. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  253. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  254. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  255. package/examples/typescript/xy-bubble/package.json +1 -1
  256. package/examples/typescript/xy-candlestick/package.json +1 -1
  257. package/examples/typescript/xy-clustered-column/package.json +1 -1
  258. package/examples/typescript/xy-column/package.json +1 -1
  259. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  260. package/examples/typescript/xy-data-grouping/package.json +1 -1
  261. package/examples/typescript/xy-draggable-range/package.json +1 -1
  262. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  263. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  264. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  265. package/examples/typescript/xy-line/package.json +1 -1
  266. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  267. package/examples/typescript/xy-live-data/package.json +1 -1
  268. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  269. package/examples/typescript/xy-ohlc/package.json +1 -1
  270. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  271. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  272. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  273. package/examples/typescript/xy-stacked-column/package.json +1 -1
  274. package/examples/typescript/xy-stacked-step/package.json +1 -1
  275. package/examples/typescript/xy-stock/package.json +1 -1
  276. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  277. package/map.d.ts +2 -3
  278. package/map.d.ts.map +1 -1
  279. package/map.js +2 -3
  280. package/map.js.map +1 -1
  281. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"XYSeries.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/xy/series/XYSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Axis, IAxisPrivate, IAxisDataItem } from \"../axes/Axis\";\nimport type { AxisRenderer } from \"../axes/AxisRenderer\";\nimport type { IPoint } from \"../../../core/util/IPoint\";\nimport type { Sprite } from \"../../../core/render/Sprite\";\nimport type { Bullet } from \"../../../core/render/Bullet\";\nimport type { XYChart } from \"../XYChart\";\n//import type { CategoryAxis } from \"../axes/CategoryAxis\";\nimport type { DateAxis } from \"../axes/DateAxis\";\nimport type { ITimeInterval } from \"../../../core/util/Time\";\nimport type { IDisposer } from \"../../../core/util/Disposer\";\n\nimport { DataItem } from \"../../../core/render/Component\";\nimport { Series, ISeriesSettings, ISeriesDataItem, ISeriesPrivate, ISeriesEvents } from \"../../../core/render/Series\";\nimport { List } from \"../../../core/util/List\";\nimport { Container } from \"../../../core/render/Container\";\nimport { Graphics } from \"../../../core/render/Graphics\";\n\n\nimport * as $type from \"../../../core/util/Type\";\nimport * as $object from \"../../../core/util/Object\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $utils from \"../../../core/util/Utils\";\n\n/**\n * @ignore\n */\nfunction min(left: number | undefined, right: number | undefined): number | undefined {\n\tif (left == null) return right;\n\tif (right == null) return left;\n\treturn (right < left) ? right : left;\n}\n\n/**\n * @ignore\n */\nfunction max(left: number | undefined, right: number | undefined): number | undefined {\n\tif (left == null) return right;\n\tif (right == null) return left;\n\treturn (left > right) ? left : right;\n}\n\n\n/**\n * Interface representing a series axis range.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/#Series_axis_ranges} for more info\n */\nexport interface IXYSeriesAxisRange {\n\n\t/**\n\t * Related axis data item.\n\t */\n\taxisDataItem: DataItem<IAxisDataItem>;\n\n\t/**\n\t * A [[Container]] element that range's elements are placed in.\n\t */\n\tcontainer?: Container;\n\n\t/**\n\t * Target series.\n\t */\n\tseries?: XYSeries;\n\n}\n\nexport interface IXYAxisPrivate extends IAxisPrivate {\n\tmin?: number;\n\tmax?: number;\n}\n\nexport interface IXYAxis extends Axis<AxisRenderer> {\n\t_privateSettings: IXYAxisPrivate;\n}\n\nexport interface IXYSeriesEvents extends ISeriesEvents {\n\n\t/**\n\t * Kicks in when axis starts using different data set, e.g. data\n\t * of different granularit on [[DateAxis]].\n\t *\n\t * @since 5.1.1\n\t */\n\tdatasetchanged: {\n\t\tid: string\n\t}\n}\n\n/**\n * XY chart series data item.\n */\nexport interface IXYSeriesDataItem extends ISeriesDataItem {\n\tvalueX?: number;\n\tvalueXWorking?: number;\n\tvalueXChange?: number;\n\tvalueXChangePercent?: number;\n\tvalueXChangeSelection?: number;\n\tvalueXChangeSelectionPercent?: number;\n\tvalueXChangePrevious?: number;\n\tvalueXChangePreviousPercent?: number;\n\tvalueXWorkingOpen?: number;\n\tvalueXWorkingClose?: number;\n\n\tvalueY?: number;\n\tvalueYChange?: number;\n\tvalueYWorking?: number;\n\tvalueYChangePercent?: number;\n\tvalueYChangeSelection?: number;\n\tvalueYChangeSelectionPercent?: number;\n\tvalueYChangePrevious?: number;\n\tvalueYChangePreviousPercent?: number;\n\tvalueYWorkingOpen?: number;\n\tvalueYWorkingClose?: number;\n\n\topenValueX?: number;\n\topenValueXWorking?: number;\n\topenValueXChange?: number;\n\topenValueXChangePercent?: number;\n\topenValueXChangeSelection?: number;\n\topenValueXChangeSelectionPercent?: number;\n\topenValueXChangePrevious?: number;\n\topenValueXChangePreviousPercent?: number;\n\topenValueXWorkingOpen?: number;\n\topenValueXWorkingClose?: number;\n\topenValueY?: number;\n\topenValueYWorking?: number;\n\topenValueYChange?: number;\n\topenValueYChangePercent?: number;\n\topenValueYChangeSelection?: number;\n\topenValueYChangeSelectionPercent?: number;\n\topenValueYChangePrevious?: number;\n\topenValueYChangePreviousPercent?: number;\n\topenValueYWorkingOpen?: number;\n\topenValueYWorkingClose?: number;\n\n\tlowValueX?: number;\n\tlowValueXWorking?: number;\n\tlowValueXChange?: number;\n\tlowValueXChangePercent?: number;\n\tlowValueXChangeSelection?: number;\n\tlowValueXChangeSelectionPercent?: number;\n\tlowValueXChangePrevious?: number;\n\tlowValueXChangePreviousPercent?: number;\n\tlowValueXWorkingOpen?: number;\n\tlowValueXWorkingClose?: number;\n\n\thighValueX?: number;\n\thighValueXWorking?: number;\n\thighValueXChange?: number;\n\thighValueXChangePercent?: number;\n\thighValueXChangeSelection?: number;\n\thighValueXChangeSelectionPercent?: number;\n\thighValueXChangePrevious?: number;\n\thighValueXChangePreviousPercent?: number;\n\thighValueXWorkingOpen?: number;\n\thighValueXWorkingClose?: number;\n\n\tlowValueY?: number;\n\tlowValueYWorking?: number;\n\tlowValueYChange?: number;\n\tlowValueYChangePercent?: number;\n\tlowValueYChangeSelection?: number;\n\tlowValueYChangeSelectionPercent?: number;\n\tlowValueYChangePrevious?: number;\n\tlowValueYChangePreviousPercent?: number;\n\tlowValueYWorkingOpen?: number;\n\tlowValueYWorkingClose?: number;\n\n\thighValueY?: number;\n\thighValueYWorking?: number;\n\thighValueYChange?: number;\n\thighValueYChangePercent?: number;\n\thighValueYChangeSelection?: number;\n\thighValueYChangeSelectionPercent?: number;\n\thighValueYChangePrevious?: number;\n\thighValueYChangePreviousPercent?: number;\n\thighValueYWorkingOpen?: number;\n\thighValueYWorkingClose?: number;\n\n\tcategoryX?: string;\n\tcategoryY?: string;\n\n\topenCategoryX?: string;\n\topenCategoryY?: string;\n\n\tlocationX?: number;\n\tlocationY?: number;\n\n\topenLocationX?: number;\n\topenLocationY?: number;\n\n\tstackToItemX?: DataItem<IXYSeriesDataItem>;\n\tstackToItemY?: DataItem<IXYSeriesDataItem>;\n\n\tleft?: number;\n\tright?: number;\n\ttop?: number;\n\tbottom?: number;\n\n\tpoint?: IPoint;\n\n\toriginals?: Array<DataItem<IXYSeriesDataItem>>;\n}\n\nexport interface IXYSeriesSettings extends ISeriesSettings {\n\n\t/**\n\t * If this is set to `true`, data items will ignore `locationX` setting\n\t * but will place the data point at exact X value.\n\t * \n\t * This works with [[DateAxis]] only.\n\t * \n\t * On a `ColumnSeries`/`CandlestickSeries` this setting will affect bullets\n\t * only.\n\t *\n\t * @default false\n\t * @since 5.13.0\n\t */\n\texactLocationX?: boolean;\n\n\t/**\n\t * If this is set to `true`, data items will ignore `locationX` setting\n\t * but will place the data point at exact Y value.\n\t * \n\t * This works with [[DateAxis]] only.\n\t * \n\t * On a `ColumnSeries`/`CandlestickSeries` this setting will affect bullets\n\t * only.\n\t *\n\t * @default false\n\t * @since 5.13.0\n\t */\n\texactLocationY?: boolean;\n\n\t/**\n\t * If set to `true` series will use selection extremes when calculating\n\t * their min and max values of the axis. Useful for stacked series.\n\t *\n\t * @since 5.10.11\n\t */\n\tuseSelectionExtremes?: boolean;\n\n\t/**\n\t * Minimal distance between data items in pixels.\n\t *\n\t * If data items are closer than this, bullets are turned off to avoid\n\t * overcrowding.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Bullets} for more info\n\t */\n\tminBulletDistance?: number;\n\n\t/**\n\t * X axis series uses.\n\t *\n\t * **IMPORTANT:** `xAxis` needs to be set when creating the series. Updating\n\t * this setting on previously created series object will not work.\n\t */\n\txAxis: IXYAxis;\n\n\t/**\n\t * Y axis series uses.\n\t *\n\t * **IMPORTANT:** `yAxis` needs to be set when creating the series. Updating\n\t * this setting on previously created series object will not work.\n\t */\n\tyAxis: IXYAxis;\n\n\t/**\n\t * If set to `true` series will be stacked to other series that also have\n\t * this setting set to `true`.\n\t *\n\t * NOTE: for series stack properly, all stacked series must have same number\n\t * of data items with the same timestamp/category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Stacked_series} for more info\n\t */\n\tstacked?: boolean;\n\n\t/**\n\t * Whether to stack negative values from zero (`true`) or from whatever\n\t * previous series value is (`false`).\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Negative_value_stacking} for more info\n\t */\n\tstackToNegative?: boolean;\n\n\t/**\n\t * Base axis for the series.\n\t *\n\t * A base axis will dictate direction series plot.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Base_axis} for more info\n\t */\n\tbaseAxis?: IXYAxis;\n\n\t/**\n\t * Input data field for X value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueXField?: string;\n\n\t/**\n\t * Input data field for Y value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueYField?: string;\n\n\t/**\n\t * Exclude series values when calculating totals for category/interval.\n\t *\n\t * @default false\n\t */\n\texcludeFromTotal?: boolean;\n\n\t/**\n\t * Display data field for X value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueXShow?: \"valueXWorking\" | \"valueXChange\" | \"valueXChangePercent\" | \"valueXChangeSelection\" | \"valueXChangeSelectionPercent\" | \"valueXChangePrevious\" | \"valueXChangePreviousPercent\" | \"valueXTotal\" | \"valueXTotalPercent\" | \"valueXSum\";\n\n\t/**\n\t * Display data field for Y value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueYShow?: \"valueYWorking\" | \"valueYChange\" | \"valueYChangePercent\" | \"valueYChangeSelection\" | \"valueYChangeSelectionPercent\" | \"valueYChangePrevious\" | \"valueYChangePreviousPercent\" | \"valueYTotal\" | \"valueYTotalPercent\" | \"valueYSum\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X values from several data items.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\tvalueXGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X values from several data items.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\tvalueYGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Input data field for X open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueXField?: string;\n\n\t/**\n\t * Input data field for X open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueYField?: string;\n\n\t/**\n\t * Display data field for X open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueXShow?: \"openValueXWorking\" | \"openValueXChange\" | \"openValueXChangePercent\" | \"openValueXChangeSelection\" | \"openValueXChangeSelectionPercent\" | \"openValueXChangePrevious\" | \"openValueXChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueYShow?: \"openValueYWorking\" | \"openValueYChange\" | \"openValueYChangePercent\" | \"openValueYChangeSelection\" | \"openValueYChangeSelectionPercent\" | \"openValueYChangePrevious\" | \"openValueYChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\topenValueXGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Display data field for Y open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\topenValueYGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\n\n\t/**\n\t * Input data field for X low value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\tlowValueXField?: string;\n\n\t/**\n\t * Input data field for Y low value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\tlowValueYField?: string;\n\n\t/**\n\t * Input data field for X high value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\thighValueXField?: string;\n\n\t/**\n\t * Input data field for Y high value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\thighValueYField?: string;\n\n\t/**\n\t * Display data field for X low value.\n\t */\n\tlowValueXShow?: \"lowValueXWorking\" | \"lowValueXChange\" | \"lowValueXChangePercent\" | \"lowValueXChangeSelection\" | \"lowValueXChangeSelectionPercent\" | \"lowValueXChangePrevious\" | \"lowValueXChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y low value.\n\t */\n\tlowValueYShow?: \"lowValueYWorking\" | \"lowValueYChange\" | \"lowValueYChangePercent\" | \"lowValueYChangeSelection\" | \"lowValueYChangeSelectionPercent\" | \"lowValueYChangePrevious\" | \"lowValueYChangePreviousPercent\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X low values from several data items.\n\t */\n\tlowValueXGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating Y low values from several data items.\n\t */\n\tlowValueYGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Display data field for X high value.\n\t */\n\thighValueXShow?: \"highValueXWorking\" | \"highValueXChange\" | \"highValueXChangePercent\" | \"highValueXChangeSelection\" | \"highValueXChangeSelectionPercent\" | \"highValueXChangePrevious\" | \"highValueXChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y high value.\n\t */\n\thighValueYShow?: \"highValueYWorking\" | \"highValueYChange\" | \"highValueYChangePercent\" | \"highValueYChangeSelection\" | \"highValueYChangeSelectionPercent\" | \"highValueYChangePrevious\" | \"highValueYChangePreviousPercent\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X high values from several data items.\n\t */\n\thighValueXGrouped?: \"open\" | \"close\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X high values from several data items.\n\t */\n\thighValueYGrouped?: \"open\" | \"close\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Horizontal location of the low data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\tlowLocationX?: number;\n\n\t/**\n\t * Vertical location of the low data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\tlowLocationY?: number;\n\n\t/**\n\t * Horizontal location of the high data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\thighLocationX?: number;\n\n\t/**\n\t * Vertical location of the high data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\thighLocationY?: number;\n\n\n\t/**\n\t * Input data field for X category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tcategoryXField?: string;\n\n\t/**\n\t * Input data field for Y category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tcategoryYField?: string;\n\n\t/**\n\t * Display data field for X category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenCategoryXField?: string;\n\n\t/**\n\t * Display data field for Y category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenCategoryYField?: string;\n\n\t/**\n\t * If set to `true` this series will be ignored when calculating scale of the\n\t * related axes.\n\t *\n\t * @default false\n\t */\n\tignoreMinMax?: boolean;\n\n\t/**\n\t * @ignore\n\t */\n\tvcx?: number;\n\n\t/**\n\t * @ignore\n\t */\n\tvcy?: number;\n\n\t/**\n\t * Horizontal location of the data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/line-series/#Data_item_location} for more info\n\t * @default 0.5\n\t */\n\tlocationX?: number;\n\n\t/**\n\t * Vertical location of the data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/line-series/#Data_item_location} for more info\n\t * @default 0.5\n\t */\n\tlocationY?: number;\n\n\t/**\n\t * Horizontal location of the open data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\topenLocationX?: number;\n\n\t/**\n\t * Vertical location of the open data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\topenLocationY?: number;\n\n\t/**\n\t * If set to `true` [[XYCursor]] will show closest data item from series\n\t * even if it is outside currently hovered date axis interval.\n\t *\n\t * This setting is relevant only if `baseAxis` is a date axis.\n\t */\n\tsnapTooltip?: boolean;\n\n\t/**\n\t * Text to use for series legend label when no particular category/interval\n\t * is selected.\n\t */\n\tlegendRangeLabelText?: string;\n\n\t/**\n\t * Text to use for series legend value label when no particular\n\t * category/interval is selected.\n\t */\n\tlegendRangeValueText?: string;\n\n\n\t/**\n\t * If set to `true`, series bullets will be masked by plot area.\n\t */\n\tmaskBullets?: boolean;\n\n\t/**\n\t * Whether series' tooltip should inherit its color from series or its first\n\t * bullet.\n\t *\n\t * @default \"series\"\n\t */\n\tseriesTooltipTarget?: \"series\" | \"bullet\";\n\n\t/**\n\t * Indicates horizontal position at which to show series' tooltip at.\n\t *\n\t * @default \"value\"\n\t * @since 5.0.16\n\t */\n\ttooltipPositionX?: \"open\" | \"value\" | \"low\" | \"high\";\n\n\t/**\n\t * Indicates vertical position at which to show series' tooltip at.\n\t *\n\t * @default \"value\"\n\t * @since 5.0.16\n\t */\n\ttooltipPositionY?: \"open\" | \"value\" | \"low\" | \"high\";\n\n\n\t/**\n\t * If set to `true` data items for this series won't be grouped even if\n\t * the `groupData: true` is set on a related [[DateAxis]].\n\t * \n\t * @since 5.0.19\n\t */\n\tgroupDataDisabled?: boolean;\n\n\t/**\n\t * A [[DataItem]] that is being used for current tooltip, e.g. by a chart\n\t * cursor.\n\t *\n\t * @since 5.1.2\n\t */\n\ttooltipDataItem?: DataItem<IXYSeriesDataItem>\n\n\t/**\n\t * If set to `true`, when data is grouped, the `originals` setting of the\n\t * group data items will be populated by the original (source) data items\n\t * that fall into the group.\n\t *\n\t * Please note that if `groupDataCallback` is set, this setting is ignored\n\t * as originals will always be included, regardless of the value.\n\t *\n\t * @since 5.1.11\n\t * @default false\n\t */\n\tgroupDataWithOriginals?: boolean;\n\n\t/**\n\t * A custom function to call when grouping data items.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Custom_aggregation_functions} for more info\n\t * @since 5.1.11\n\t */\n\tgroupDataCallback?: (dataItem: DataItem<IXYSeriesDataItem>, interval: ITimeInterval) => void;\n\n}\n\nexport interface IXYSeriesPrivate extends ISeriesPrivate {\n\n\tminX?: number;\n\tmaxX?: number;\n\n\tminY?: number;\n\tmaxY?: number;\n\n\tselectionMinX?: number;\n\tselectionMaxX?: number;\n\n\tselectionMinY?: number;\n\tselectionMaxY?: number;\n\n\tvalueXAverage?: number;\n\tvalueXCount?: number;\n\tvalueXSum?: number;\n\tvalueXAbsoluteSum?: number;\n\tvalueXLow?: number;\n\tvalueXHigh?: number;\n\tvalueXOpen?: number;\n\tvalueXClose?: number;\n\n\tvalueYAverage?: number;\n\tvalueYCount?: number;\n\tvalueYSum?: number;\n\tvalueYAbsoluteSum?: number;\n\tvalueYLow?: number;\n\tvalueYHigh?: number;\n\tvalueYOpen?: number;\n\tvalueYClose?: number;\n\n\tvalueXAverageSelection?: number;\n\tvalueXCountSelection?: number;\n\tvalueXSumSelection?: number;\n\tvalueXAbsoluteSumSelection?: number;\n\tvalueXLowSelection?: number;\n\tvalueXHighSelection?: number;\n\tvalueXOpenSelection?: number;\n\tvalueXCloseSelection?: number;\n\n\tvalueYAverageSelection?: number;\n\tvalueYCountSelection?: number;\n\tvalueYSumSelection?: number;\n\tvalueYAbsoluteSumSelection?: number;\n\tvalueYLowSelection?: number;\n\tvalueYHighSelection?: number;\n\tvalueYOpenSelection?: number;\n\tvalueYCloseSelection?: number;\n\n\topenValueXAverage?: number;\n\topenValueXCount?: number;\n\topenValueXSum?: number;\n\topenValueXAbsoluteSum?: number;\n\topenValueXLow?: number;\n\topenValueXHigh?: number;\n\topenValueXOpen?: number;\n\topenValueXClose?: number;\n\n\topenValueYAverage?: number;\n\topenValueYCount?: number;\n\topenValueYSum?: number;\n\topenValueYAbsoluteSum?: number;\n\topenValueYLow?: number;\n\topenValueYHigh?: number;\n\topenValueYOpen?: number;\n\topenValueYClose?: number;\n\n\topenValueXAverageSelection?: number;\n\topenValueXCountSelection?: number;\n\topenValueXSumSelection?: number;\n\topenValueXAbsoluteSumSelection?: number;\n\topenValueXLowSelection?: number;\n\topenValueXHighSelection?: number;\n\topenValueXOpenSelection?: number;\n\topenValueXCloseSelection?: number;\n\n\topenValueYAverageSelection?: number;\n\topenValueYCountSelection?: number;\n\topenValueYSumSelection?: number;\n\topenValueYAbsoluteSumSelection?: number;\n\topenValueYLowSelection?: number;\n\topenValueYHighSelection?: number;\n\topenValueYOpenSelection?: number;\n\topenValueYCloseSelection?: number;\n\n\tlowValueXAverage?: number;\n\tlowValueXCount?: number;\n\tlowValueXSum?: number;\n\tlowValueXAbsoluteSum?: number;\n\tlowValueXLow?: number;\n\tlowValueXHigh?: number;\n\tlowValueXlow?: number;\n\tlowValueXClose?: number;\n\n\tlowValueYAverage?: number;\n\tlowValueYCount?: number;\n\tlowValueYSum?: number;\n\tlowValueYAbsoluteSum?: number;\n\tlowValueYLow?: number;\n\tlowValueYHigh?: number;\n\tlowValueYlow?: number;\n\tlowValueYClose?: number;\n\n\tlowValueXAverageSelection?: number;\n\tlowValueXCountSelection?: number;\n\tlowValueXSumSelection?: number;\n\tlowValueXAbsoluteSumSelection?: number;\n\tlowValueXLowSelection?: number;\n\tlowValueXHighSelection?: number;\n\tlowValueXlowSelection?: number;\n\tlowValueXCloseSelection?: number;\n\n\tlowValueYAverageSelection?: number;\n\tlowValueYCountSelection?: number;\n\tlowValueYSumSelection?: number;\n\tlowValueYAbsoluteSumSelection?: number;\n\tlowValueYLowSelection?: number;\n\tlowValueYHighSelection?: number;\n\tlowValueYlowSelection?: number;\n\tlowValueYCloseSelection?: number;\n\n\thighValueXAverage?: number;\n\thighValueXCount?: number;\n\thighValueXSum?: number;\n\thighValueXAbsoluteSum?: number;\n\thighValueXLow?: number;\n\thighValueXHigh?: number;\n\thighValueXhigh?: number;\n\thighValueXClose?: number;\n\n\thighValueYAverage?: number;\n\thighValueYCount?: number;\n\thighValueYSum?: number;\n\thighValueYAbsoluteSum?: number;\n\thighValueYLow?: number;\n\thighValueYHigh?: number;\n\thighValueYhigh?: number;\n\thighValueYClose?: number;\n\n\thighValueXAverageSelection?: number;\n\thighValueXCountSelection?: number;\n\thighValueXSumSelection?: number;\n\thighValueXAbsoluteSumSelection?: number;\n\thighValueXLowSelection?: number;\n\thighValueXHighSelection?: number;\n\thighValueXhighSelection?: number;\n\thighValueXCloseSelection?: number;\n\n\thighValueYAverageSelection?: number;\n\thighValueYCountSelection?: number;\n\thighValueYSumSelection?: number;\n\thighValueYAbsoluteSumSelection?: number;\n\thighValueYLowSelection?: number;\n\thighValueYHighSelection?: number;\n\thighValueYhighSelection?: number;\n\thighValueYCloseSelection?: number;\n\n\toutOfSelection?: boolean;\n\n\tdoNotUpdateLegend?: boolean;\n}\n\n\n/**\n * A base class for all XY chart series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/} for more info\n */\nexport abstract class XYSeries extends Series {\n\tpublic static className: string = \"XYSeries\";\n\tpublic static classNames: Array<string> = Series.classNames.concat([XYSeries.className]);\n\n\tdeclare public _settings: IXYSeriesSettings;\n\tdeclare public _privateSettings: IXYSeriesPrivate;\n\tdeclare public _dataItemSettings: IXYSeriesDataItem;\n\tdeclare public _axisRangeType: IXYSeriesAxisRange;\n\tdeclare public _events: IXYSeriesEvents;\n\n\tprotected _xField!: string;\n\tprotected _yField!: string;\n\tprotected _xOpenField!: string;\n\tprotected _yOpenField!: string;\n\n\tprotected _xLowField!: string;\n\tprotected _xHighField!: string;\n\tprotected _yLowField!: string;\n\tprotected _yHighField!: string;\n\n\tprotected _axesDirty: boolean = false;\n\tpublic _stackDirty: boolean = false;\n\n\tprotected _selectionProcessed = false;\n\n\tdeclare public chart: XYChart | undefined;\n\n\tpublic _dataSets: { [index: string]: Array<DataItem<IXYSeriesDataItem>> } = {};\n\n\tpublic _mainContainerMask: Graphics | undefined;\n\n\tprotected _x: number = 0;\n\tprotected _y: number = 0;\n\n\tprotected _xRenderer!: AxisRenderer;\n\tprotected _yRenderer!: AxisRenderer;\n\n\tpublic _bullets: { [index: string]: Sprite } = {};\n\n\t/**\n\t * A [[Container]] that us used to put series' elements in.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly mainContainer: Container = this.children.push(Container.new(this._root, {}));\n\n\t/**\n\t * A list of axis ranges that affect the series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\n\t */\n\tpublic readonly axisRanges: List<this[\"_axisRangeType\"]> = new List();\n\n\tprotected _skipped: boolean = false;\n\n\tprotected _couldStackTo: Array<XYSeries> = [];\n\n\tprotected _reallyStackedTo: { [index: number]: XYSeries } = {};\n\n\tpublic _stackedSeries: { [index: number]: XYSeries } = {};\n\n\tprotected _aLocationX0: number = 0;\n\tprotected _aLocationX1: number = 1;\n\tprotected _aLocationY0: number = 0;\n\tprotected _aLocationY1: number = 1;\n\n\tprotected _showBullets: boolean = true;\n\n\tprotected valueXFields = [\n\t\t\"valueX\",\n\t\t\"openValueX\",\n\t\t\"lowValueX\",\n\t\t\"highValueX\"\n\t];\n\n\tprotected valueYFields = [\n\t\t\"valueY\",\n\t\t\"openValueY\",\n\t\t\"lowValueY\",\n\t\t\"highValueY\"\n\t];\n\n\tpublic _valueXFields!: Array<string>;\n\tpublic _valueYFields!: Array<string>;\n\n\t// used for full min/max\n\tprotected _valueXShowFields!: Array<string>;\n\tprotected _valueYShowFields!: Array<string>;\n\n\t// used for selection (uses working)\n\tpublic __valueXShowFields!: Array<string>;\n\tpublic __valueYShowFields!: Array<string>;\n\n\tprotected _emptyDataItem = new DataItem(this, undefined, {});\n\n\tpublic _dataSetId?: string;\n\n\tprotected _tooltipFieldX?: string;\n\tprotected _tooltipFieldY?: string;\n\n\tpublic _posXDp?: IDisposer;\n\tpublic _posYDp?: IDisposer;\n\n\tprotected _afterNew() {\n\t\tthis.fields.push(\"categoryX\", \"categoryY\", \"openCategoryX\", \"openCategoryY\");\n\t\tthis.valueFields.push(\"valueX\", \"valueY\", \"openValueX\", \"openValueY\", \"lowValueX\", \"lowValueY\", \"highValueX\", \"highValueY\");\n\n\t\tthis._setRawDefault(\"vcx\", 1);\n\t\tthis._setRawDefault(\"vcy\", 1);\n\t\t// this can't go to themes, as data might be parsed before theme\n\t\tthis._setRawDefault(\"valueXShow\", \"valueXWorking\");\n\t\tthis._setRawDefault(\"valueYShow\", \"valueYWorking\");\n\n\t\tthis._setRawDefault(\"openValueXShow\", \"openValueXWorking\");\n\t\tthis._setRawDefault(\"openValueYShow\", \"openValueYWorking\");\n\n\t\tthis._setRawDefault(\"lowValueXShow\", \"lowValueXWorking\");\n\t\tthis._setRawDefault(\"lowValueYShow\", \"lowValueYWorking\");\n\n\t\tthis._setRawDefault(\"highValueXShow\", \"highValueXWorking\");\n\t\tthis._setRawDefault(\"highValueYShow\", \"highValueYWorking\");\n\n\t\tthis._setRawDefault(\"lowValueXGrouped\", \"low\");\n\t\tthis._setRawDefault(\"lowValueYGrouped\", \"low\");\n\n\t\tthis._setRawDefault(\"highValueXGrouped\", \"high\");\n\t\tthis._setRawDefault(\"highValueYGrouped\", \"high\");\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (xAxis) {\n\t\t\tthis._xRenderer = xAxis.get(\"renderer\");\n\t\t}\n\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tif (yAxis) {\n\t\t\tthis._yRenderer = yAxis.get(\"renderer\");\n\t\t}\n\n\t\tsuper._afterNew();\n\n\t\tthis.set(\"maskContent\", true);\n\n\t\tthis._disposers.push(this.axisRanges.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (axisRange) => {\n\t\t\t\t\tthis._removeAxisRange(axisRange);\n\t\t\t\t});\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tthis._processAxisRange(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tthis._processAxisRange(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tthis._processAxisRange(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removeAxisRange(change.oldValue);\n\t\t\t} else if (change.type === \"moveIndex\") {\n\t\t\t\tthis._processAxisRange(change.value);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IStreamEvent type\");\n\t\t\t}\n\t\t}))\n\n\t\tthis.states.create(\"hidden\", <any>{ opacity: 1, visible: false });\n\n\t\tthis.onPrivate(\"startIndex\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis.updateLegendValue();\n\t\t\t})\n\t\t})\n\n\t\tthis.onPrivate(\"endIndex\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis.updateLegendValue();\n\t\t\t})\n\t\t})\n\n\t\tthis._makeFieldNames();\n\t}\n\n\tprotected _processAxisRange(axisRange: this[\"_axisRangeType\"]) {\n\t\tconst container = Container.new(this._root, {});\n\t\taxisRange.container = container;\n\t\tthis.children.push(container);\n\n\t\taxisRange.series = this;\n\n\t\tconst axisDataItem = axisRange.axisDataItem;\n\t\taxisDataItem.setRaw(\"isRange\", true);\n\n\t\tconst axis = <Axis<AxisRenderer>>axisDataItem.component;\n\t\tif (axis) {\n\t\t\taxis._processAxisRange(axisDataItem, [\"range\", \"series\"]);\n\n\t\t\tconst bullet = axisDataItem.get(\"bullet\");\n\t\t\tif (bullet) {\n\t\t\t\tconst sprite = bullet.get(\"sprite\");\n\t\t\t\tif (sprite) {\n\t\t\t\t\tsprite.setPrivate(\"visible\", false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst axisFill = axisDataItem.get(\"axisFill\");\n\t\t\tif (axisFill) {\n\t\t\t\tcontainer.set(\"mask\", axisFill);\n\t\t\t}\n\t\t\taxis._seriesAxisRanges.push(axisDataItem);\n\t\t}\n\t}\n\n\tprotected _onDataClear(): void {\n\t\tsuper._onDataClear();\n\t\t$object.each(this._dataSets, (_key, dataItems) => {\n\t\t\t$array.each(dataItems, (dataItem) => {\n\t\t\t\tdataItem.dispose();\n\t\t\t});\n\t\t\tdataItems.length = 0;\n\t\t});\n\t}\n\n\tprotected _removeAxisRange(axisRange: this[\"_axisRangeType\"]) {\n\t\tconst axisDataItem = axisRange.axisDataItem;\n\t\tconst axis = <Axis<AxisRenderer>>axisDataItem.component;\n\t\taxisDataItem.dispose();\n\n\t\t$array.remove(axis._seriesAxisRanges, axisDataItem);\n\n\t\tconst container = axisRange.container;\n\t\tif (container) {\n\t\t\tcontainer.dispose();\n\t\t}\n\t}\n\n\tprotected _updateFields() {\n\t\tsuper._updateFields();\n\n\t\tthis._valueXFields = [];\n\t\tthis._valueYFields = [];\n\t\tthis._valueXShowFields = [];\n\t\tthis._valueYShowFields = [];\n\n\t\tthis.__valueXShowFields = [];\n\t\tthis.__valueYShowFields = [];\n\n\t\tif (this.valueXFields) {\n\t\t\t$array.each(this.valueXFields as Array<keyof this[\"_settings\"]>, (key) => {\n\t\t\t\tconst field = this.get(<any>(key + \"Field\"));\n\t\t\t\tif (field) {\n\t\t\t\t\tthis._valueXFields.push(<any>key);\n\t\t\t\t\tlet field = this.get(<any>(key + \"Show\"));\n\t\t\t\t\tthis.__valueXShowFields.push(field);\n\n\t\t\t\t\tif (field.indexOf(\"Working\") != -1) {\n\t\t\t\t\t\tthis._valueXShowFields.push(field.split(\"Working\")[0]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._valueXShowFields.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.valueYFields) {\n\t\t\t$array.each(this.valueYFields as Array<keyof this[\"_settings\"]>, (key) => {\n\t\t\t\tconst field = this.get(<any>(key + \"Field\"));\n\n\t\t\t\tif (field) {\n\t\t\t\t\tthis._valueYFields.push(<any>key);\n\t\t\t\t\tlet field = this.get(<any>(key + \"Show\"));\n\t\t\t\t\tthis.__valueYShowFields.push(field);\n\n\t\t\t\t\tif (field.indexOf(\"Working\") != -1) {\n\t\t\t\t\t\tthis._valueYShowFields.push(field.split(\"Working\")[0]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._valueYShowFields.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\n\t\tthis._bullets = {};\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\tchart.series.removeValue(this);\n\t\t}\n\n\t\t$array.removeFirst(this.get(\"xAxis\").series, this);\n\t\t$array.removeFirst(this.get(\"yAxis\").series, this);\n\t}\n\n\t// TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\n\tprotected _min<Key extends keyof this[\"_privateSettings\"]>(key: Key, value: number | undefined) {\n\t\tlet newValue = min(this.getPrivate(key) as any, value);\n\t\tthis.setPrivate(key, newValue as any);\n\t}\n\n\t// TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\n\tprotected _max<Key extends keyof this[\"_privateSettings\"]>(key: Key, value: number | undefined) {\n\t\tlet newValue = max(this.getPrivate(key) as any, value);\n\t\tthis.setPrivate(key, newValue as any);\n\t}\n\n\tprotected _shouldMakeBullet(dataItem: DataItem<this[\"_dataItemSettings\"]>): boolean {\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\n\t\tif (!xAxis.inited || !yAxis.inited) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst minBulletDistance = this.get(\"minBulletDistance\", 0);\n\t\tif (minBulletDistance > 0) {\n\t\t\tlet startIndex = this.startIndex();\n\t\t\tlet endIndex = this.endIndex();\n\n\t\t\tlet count = endIndex - startIndex;\n\n\t\t\tif (xAxis == baseAxis) {\n\t\t\t\tif (this._xRenderer.axisLength() / count < minBulletDistance / 5) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (yAxis == baseAxis) {\n\t\t\t\tif (this._yRenderer.axisLength() / count < minBulletDistance / 5) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (dataItem.get(this._xField as any) != null && dataItem.get(this._yField as any) != null) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected _makeFieldNames() {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst xName = xAxis.getPrivate(\"name\")!;\n\t\tconst xCapName = $utils.capitalizeFirst(xName);\n\n\t\tconst yName = yAxis.getPrivate(\"name\")!;\n\t\tconst yCapName = $utils.capitalizeFirst(yName);\n\n\t\tconst xLetter = xAxis.get(\"renderer\").getPrivate(\"letter\")!\n\t\tconst yLetter = yAxis.get(\"renderer\").getPrivate(\"letter\")!\n\n\t\tconst open = \"open\";\n\t\tconst low = \"low\";\n\t\tconst high = \"high\";\n\t\tconst show = \"Show\";\n\n\t\tif (xAxis.className === \"ValueAxis\") {\n\t\t\tthis._xField = this.get(<any>(xName + xLetter! + show));\n\t\t\tthis._xOpenField = this.get(<any>(open + xCapName + xLetter! + show));\n\t\t\tthis._xLowField = this.get(<any>(low + xCapName + xLetter! + show));\n\t\t\tthis._xHighField = this.get(<any>(high + xCapName + xLetter! + show));\n\t\t}\n\t\telse {\n\t\t\tthis._xField = <any>(xName + xLetter!);\n\t\t\tthis._xOpenField = <any>(open + xCapName + xLetter!);\n\t\t\tthis._xLowField = <any>(low + xCapName + xLetter!);\n\t\t\tthis._xHighField = <any>(high + xCapName + xLetter!);\n\t\t}\n\n\t\tif (yAxis.className === \"ValueAxis\") {\n\t\t\tthis._yField = this.get(<any>(yName + yLetter! + show));\n\t\t\tthis._yOpenField = this.get(<any>(open + yCapName + yLetter! + show));\n\t\t\tthis._yLowField = this.get(<any>(low + yCapName + yLetter! + show));\n\t\t\tthis._yHighField = this.get(<any>(high + yCapName + yLetter! + show));\n\t\t}\n\t\telse {\n\t\t\tthis._yField = <any>(yName + yLetter!);\n\t\t\tthis._yOpenField = <any>(open + yCapName + yLetter!);\n\t\t\tthis._yLowField = <any>(low + yCapName + yLetter!);\n\t\t\tthis._yHighField = <any>(high + yCapName + yLetter!);\n\t\t}\n\t}\n\n\tprotected _fixVC() {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\tconst hiddenState = this.states.lookup(\"hidden\");\n\t\tconst sequencedInterpolation = this.get(\"sequencedInterpolation\");\n\n\t\tif (hiddenState) {\n\t\t\tlet value = 0;\n\t\t\tif (sequencedInterpolation) {\n\t\t\t\tvalue = 0.999999999999; // makes animate, good for stacked\n\t\t\t}\n\n\t\t\tif (xAxis === baseAxis) {\n\t\t\t\thiddenState.set(\"vcy\", value);\n\t\t\t}\n\t\t\telse if (yAxis === baseAxis) {\n\t\t\t\thiddenState.set(\"vcx\", value);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thiddenState.set(\"vcy\", value);\n\t\t\t\thiddenState.set(\"vcx\", value);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tprotected _handleMaskBullets() {\n\t\tif (this.isDirty(\"maskBullets\")) {\n\t\t\tthis.bulletsContainer.set(\"maskContent\", this.get(\"maskBullets\"));\n\t\t}\n\t}\n\n\tpublic _fixPosition() {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\tthis.set(\"x\", xAxis.x() - $utils.relativeToValue(xAxis.get(\"centerX\", 0), xAxis.width()) - xAxis.parent!.get(\"paddingLeft\", 0));\n\t\tthis.set(\"y\", yAxis.y() - $utils.relativeToValue(yAxis.get(\"centerY\", 0), yAxis.height()) - yAxis.parent!.get(\"paddingTop\", 0));\n\n\t\tthis.bulletsContainer.set(\"y\", this.y());\n\t\tthis.bulletsContainer.set(\"x\", this.x());\n\t}\n\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tthis._xRenderer = this.get(\"xAxis\").get(\"renderer\");\n\t\tthis._yRenderer = this.get(\"yAxis\").get(\"renderer\");\n\n\t\tthis._bullets = {};\n\n\t\tif (this.isDirty(\"valueYShow\") || this.isDirty(\"valueXShow\") || this.isDirty(\"openValueYShow\") || this.isDirty(\"openValueXShow\") || this.isDirty(\"lowValueYShow\") || this.isDirty(\"lowValueXShow\") || this.isDirty(\"highValueYShow\") || this.isDirty(\"highValueXShow\")) {\n\t\t\tthis._updateFields();\n\t\t\tthis._makeFieldNames();\n\t\t\tthis._valuesDirty = true;\n\t\t}\n\n\t\tif (this.isDirty(\"xAxis\") || this.isDirty(\"yAxis\")) {\n\t\t\tthis._valuesDirty = true;\n\t\t}\n\n\t\tthis.set(\"width\", this.get(\"xAxis\").width());\n\t\tthis.set(\"height\", this.get(\"yAxis\").height());\n\n\t\tthis._handleMaskBullets();\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\n\t\tconst tooltipPositionX = this.get(\"tooltipPositionX\");\n\t\tlet tooltipFieldX: string;\n\n\t\tswitch (tooltipPositionX) {\n\t\t\tcase \"open\":\n\t\t\t\ttooltipFieldX = this._xOpenField;\n\t\t\t\tbreak;\n\t\t\tcase \"low\":\n\t\t\t\ttooltipFieldX = this._xLowField;\n\t\t\t\tbreak;\n\t\t\tcase \"high\":\n\t\t\t\ttooltipFieldX = this._xHighField;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttooltipFieldX = this._xField;\n\t\t}\n\t\tthis._tooltipFieldX = tooltipFieldX;\n\n\t\tconst tooltipPositionY = this.get(\"tooltipPositionY\");\n\t\tlet tooltipFieldY: string;\n\t\tswitch (tooltipPositionY) {\n\t\t\tcase \"open\":\n\t\t\t\ttooltipFieldY = this._yOpenField;\n\t\t\t\tbreak;\n\t\t\tcase \"low\":\n\t\t\t\ttooltipFieldY = this._yLowField;\n\t\t\t\tbreak;\n\t\t\tcase \"high\":\n\t\t\t\ttooltipFieldY = this._yHighField;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttooltipFieldY = this._yField;\n\t\t}\n\t\tthis._tooltipFieldY = tooltipFieldY;\n\n\t\tif (this.isDirty(\"baseAxis\")) {\n\t\t\tthis._fixVC();\n\t\t}\n\n\n\t\tthis._fixPosition();\n\n\t\tconst stacked = this.get(\"stacked\");\n\n\t\tif (this.isDirty(\"stacked\")) {\n\t\t\tif (stacked) {\n\t\t\t\tif (this._valuesDirty && !this._dataProcessed) {\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._stack();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._unstack();\n\t\t\t}\n\t\t}\n\n\t\tif (this._valuesDirty && !this._dataProcessed) {\n\t\t\tthis._dataProcessed = true;\n\n\t\t\tif (stacked) {\n\t\t\t\tthis._stack();\n\t\t\t}\n\n\t\t\tlet minX: any = undefined;\n\t\t\tlet maxX: any = undefined;\n\t\t\tlet minY: any = undefined;\n\t\t\tlet maxY: any = undefined;\n\t\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\t\t$array.each(this._valueXShowFields, (key) => {\n\t\t\t\t\tlet value = dataItem.get(<any>key);\n\t\t\t\t\tif (value != null) {\n\t\t\t\t\t\tif (stacked) {\n\t\t\t\t\t\t\tvalue += this.getStackedXValue(dataItem, key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminX = min(minX, value);\n\t\t\t\t\t\tmaxX = max(maxX, value);\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$array.each(this._valueYShowFields, (key) => {\n\t\t\t\t\tlet value = dataItem.get(<any>key);\n\t\t\t\t\tif (value != null) {\n\t\t\t\t\t\tif (stacked) {\n\t\t\t\t\t\t\tvalue += this.getStackedYValue(dataItem, key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminY = min(minY, value);\n\t\t\t\t\t\tmaxY = max(maxY, value);\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\txAxis.processSeriesDataItem(dataItem, this._valueXFields);\n\t\t\t\tyAxis.processSeriesDataItem(dataItem, this._valueYFields);\n\t\t\t})\n\t\t\tthis._min(\"minX\", minX);\n\t\t\tthis._max(\"maxX\", maxX);\n\t\t\tthis._min(\"minY\", minY);\n\t\t\tthis._max(\"maxY\", maxY);\n\n\t\t\txAxis._seriesValuesDirty = true;\n\t\t\tyAxis._seriesValuesDirty = true;\n\n\t\t\tif (!this.get(\"ignoreMinMax\")) {\n\t\t\t\tif (this.isPrivateDirty(\"minX\") || this.isPrivateDirty(\"maxX\")) {\n\t\t\t\t\txAxis.markDirtyExtremes();\n\t\t\t\t}\n\t\t\t\tif (this.isPrivateDirty(\"minY\") || this.isPrivateDirty(\"maxY\")) {\n\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._markStakedDirtyStack();\n\n\t\t\t//this.updateLegendMarker(undefined); // causes legend marker to change color instantly when on\n\t\t\tif (!this.get(\"tooltipDataItem\")) {\n\t\t\t\tthis.updateLegendValue(undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"vcx\") || this.isDirty(\"vcy\")) {\n\t\t\tthis._markStakedDirtyStack();\n\t\t}\n\n\t\tif (!this._dataGrouped) {\n\t\t\txAxis._groupSeriesData(this);\n\t\t\tyAxis._groupSeriesData(this);\n\t\t\tthis._dataGrouped = true;\n\t\t}\n\n\t\tif (this._valuesDirty || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"adjustedStartIndex\") || this.isPrivateDirty(\"endIndex\") || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._stackDirty || this._sizeDirty || this.isDirty(\"minBulletDistance\")) {\n\t\t\tlet startIndex = this.startIndex();\n\t\t\tlet endIndex = this.endIndex();\n\t\t\tlet minBulletDistance = this.get(\"minBulletDistance\", 0);\n\t\t\tif (minBulletDistance > 0 && baseAxis) {\n\t\t\t\tif (baseAxis.get(\"renderer\").axisLength() / (endIndex - startIndex) > minBulletDistance) {\n\t\t\t\t\tthis._showBullets = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._showBullets = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ((this._psi != startIndex || this._pei != endIndex || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this.isPrivateDirty(\"adjustedStartIndex\") || this._stackDirty || this._valuesDirty) && !this._selectionProcessed) {\n\t\t\t\tthis._selectionProcessed = true;\n\n\t\t\t\tconst vcx = this.get(\"vcx\", 1);\n\t\t\t\tconst vcy = this.get(\"vcy\", 1);\n\t\t\t\tconst stacked = this.get(\"stacked\", false);\n\t\t\t\tconst outOfSelection = this.getPrivate(\"outOfSelection\");\n\n\t\t\t\tif (baseAxis === xAxis || !baseAxis) {\n\t\t\t\t\tyAxis._calculateTotals();\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMinY\", undefined);\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMaxY\", undefined);\n\t\t\t\t\tif (!outOfSelection) {\n\t\t\t\t\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\t\t\t\t\tthis.processYSelectionDataItem(this.dataItems[i], vcy, stacked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (baseAxis === yAxis || !baseAxis) {\n\t\t\t\t\txAxis._calculateTotals();\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMinX\", undefined);\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMaxX\", undefined);\n\t\t\t\t\tif (!outOfSelection) {\n\t\t\t\t\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\t\t\t\t\tthis.processXSelectionDataItem(this.dataItems[i], vcx, stacked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (baseAxis === xAxis || !baseAxis) {\n\t\t\t\t\tif (this.get(\"valueYShow\") !== \"valueYWorking\" || this.get(\"useSelectionExtremes\")) {\n\t\t\t\t\t\tconst selectionMinY = this.getPrivate(\"selectionMinY\");\n\t\t\t\t\t\tif (selectionMinY != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"minY\", selectionMinY);\n\t\t\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst selectionMaxY = this.getPrivate(\"selectionMaxY\");\n\t\t\t\t\t\tif (selectionMaxY != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"maxY\", selectionMaxY);\n\t\t\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (baseAxis === yAxis || !baseAxis) {\n\t\t\t\t\tif (this.get(\"valueXShow\") !== \"valueXWorking\" || this.get(\"useSelectionExtremes\")) {\n\t\t\t\t\t\tconst selectionMinX = this.getPrivate(\"selectionMinX\");\n\t\t\t\t\t\tif (selectionMinX != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"minX\", selectionMinX);\n\t\t\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst selectionMaxX = this.getPrivate(\"selectionMaxX\")\n\t\t\t\t\t\tif (selectionMaxX != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"maxX\", selectionMaxX);\n\t\t\t\t\t\t\txAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.isPrivateDirty(\"selectionMinX\") || this.isPrivateDirty(\"selectionMaxX\")) {\n\t\t\t\t\txAxis.markDirtySelectionExtremes();\n\t\t\t\t}\n\n\t\t\t\tif (this.isPrivateDirty(\"selectionMinY\") || this.isPrivateDirty(\"selectionMaxY\")) {\n\t\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t\t}\n\t\t\t\t// this.updateLegendValue(undefined); flickers while panning\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _postUpdateData(): void {\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\txAxis._seriesValuesDirty = true;\n\t\tyAxis._seriesValuesDirty = true;\t\t\n\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tdataItem.open = undefined;\n\t\t\tdataItem.close = undefined;\n\n\t\t\txAxis.processSeriesDataItem(dataItem, this._valueXFields);\n\t\t\tyAxis.processSeriesDataItem(dataItem, this._valueYFields);\n\t\t})\n\t}\n\n\n\tprotected _makeRangeMask() {\n\t\tif (this.axisRanges.length > 0) {\n\t\t\tlet mainContainerMask = this._mainContainerMask;\n\t\t\tif (mainContainerMask == null) {\n\t\t\t\tmainContainerMask = this.children.push(Graphics.new(this._root, {}));\n\t\t\t\tthis._mainContainerMask = mainContainerMask;\n\n\t\t\t\tmainContainerMask.set(\"draw\", (display, target) => {\n\t\t\t\t\tconst parent = this.parent;\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tconst w = this._root.container.width();\n\t\t\t\t\t\tconst h = this._root.container.height();\n\t\t\t\t\t\tdisplay.moveTo(-w, -h);\n\t\t\t\t\t\tdisplay.lineTo(-w, h * 2);\n\t\t\t\t\t\tdisplay.lineTo(w * 2, h * 2);\n\t\t\t\t\t\tdisplay.lineTo(w * 2, -h);\n\t\t\t\t\t\tdisplay.lineTo(-w, -h);\n\n\n\t\t\t\t\t\tthis.axisRanges.each((axisRange) => {\n\t\t\t\t\t\t\tconst fill = axisRange.axisDataItem.get(\"axisFill\");\n\n\t\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\t\tif (fill) {\n\t\t\t\t\t\t\t\t\tlet draw = fill.get(\"draw\");\n\t\t\t\t\t\t\t\t\tif (draw) {\n\t\t\t\t\t\t\t\t\t\tdraw(display, target);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tthis.mainContainer._display.mask = mainContainerMask!._display;\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tmainContainerMask.markDirty();\n\t\t\tmainContainerMask._markDirtyKey(\"fill\");\n\t\t}\n\t\telse {\n\t\t\tthis.mainContainer._display.mask = null;\n\t\t}\n\t}\n\n\n\tpublic _updateChildren() {\n\t\tsuper._updateChildren();\n\n\t\t// save for performance\n\t\tthis._x = this.x();\n\t\tthis._y = this.y();\n\t\tthis._makeRangeMask();\n\t}\n\n\tprotected _stack() {\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\tconst seriesIndex = chart.series.indexOf(this);\n\n\t\t\tthis._couldStackTo = [];\n\n\t\t\tif (seriesIndex > 0) {\n\t\t\t\tlet series: XYSeries;\n\n\t\t\t\tfor (let i = seriesIndex - 1; i >= 0; i--) {\n\t\t\t\t\tseries = chart.series.getIndex(i)!;\n\t\t\t\t\tif (series.get(\"xAxis\") === this.get(\"xAxis\") && series.get(\"yAxis\") === this.get(\"yAxis\") && series.className === this.className) {\n\t\t\t\t\t\tthis._couldStackTo.push(series);\n\t\t\t\t\t\tif (!series.get(\"stacked\")) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._stackDataItems();\n\t\t}\n\t}\n\n\tpublic _unstack() {\n\n\t\t$object.each(this._reallyStackedTo, (_key, value) => {\n\t\t\tdelete (value._stackedSeries[this.uid]);\n\t\t})\n\n\t\tthis._reallyStackedTo = {};\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tdataItem.setRaw(\"stackToItemY\", undefined);\n\t\t\tdataItem.setRaw(\"stackToItemX\", undefined);\n\t\t})\n\t}\n\n\tpublic _handleRemoved(): void {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (xAxis) {\n\t\t\txAxis._handleSeriesRemoved();\n\t\t}\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tif (yAxis) {\n\t\t\tyAxis._handleSeriesRemoved();\n\t\t}\n\t}\n\n\tprotected _stackDataItems() {\n\t\t// this works only with the same number of data @todo: search by date/category?\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\tlet field: \"valueX\" | \"valueY\";\n\t\tlet stackToItemKey: \"stackToItemX\" | \"stackToItemY\";\n\t\tif (baseAxis === xAxis) {\n\t\t\tfield = \"valueY\";\n\t\t\tstackToItemKey = \"stackToItemY\";\n\t\t}\n\t\telse if (baseAxis === yAxis) {\n\t\t\tfield = \"valueX\";\n\t\t\tstackToItemKey = \"stackToItemX\";\n\t\t}\n\n\t\tlet len = this._couldStackTo.length;\n\t\tlet index = 0;\n\t\tconst stackToNegative = this.get(\"stackToNegative\");\n\n\t\tthis._reallyStackedTo = {};\n\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tfor (let s = 0; s < len; s++) {\n\t\t\t\tlet stackToSeries = this._couldStackTo[s];\n\t\t\t\tlet stackToItem = stackToSeries.dataItems[index];\n\t\t\t\tlet value = dataItem.get(field);\n\n\t\t\t\tif (stackToItem) {\n\t\t\t\t\tlet stackValue = stackToItem.get(field);\n\t\t\t\t\tif (stackToNegative) {\n\t\t\t\t\t\tif ($type.isNumber(value)) {\n\t\t\t\t\t\t\tif ($type.isNumber(stackValue)) {\n\n\t\t\t\t\t\t\t\tif (s == len - 1) {\n\t\t\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, undefined);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (value >= 0 && stackValue >= 0) {\n\t\t\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, stackToItem);\n\t\t\t\t\t\t\t\t\tthis._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n\t\t\t\t\t\t\t\t\tstackToSeries._stackedSeries[this.uid] = this;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (value < 0 && stackValue < 0) {\n\t\t\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, stackToItem);\n\t\t\t\t\t\t\t\t\tthis._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n\t\t\t\t\t\t\t\t\tstackToSeries._stackedSeries[this.uid] = this;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif ($type.isNumber(value) && $type.isNumber(stackValue)) {\n\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, stackToItem);\n\t\t\t\t\t\t\tthis._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n\t\t\t\t\t\t\tstackToSeries._stackedSeries[this.uid] = this;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tindex++;\n\t\t})\n\t}\n\n\tprotected processXSelectionDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, vcx: number, stacked: boolean) {\n\t\t$array.each(this.__valueXShowFields, (key) => {\n\t\t\tlet value = dataItem.get(<any>key);\n\t\t\tif (value != null) {\n\t\t\t\tif (stacked) {\n\t\t\t\t\tvalue += this.getStackedXValueWorking(dataItem, key);\n\t\t\t\t}\n\n\t\t\t\tthis._min(\"selectionMinX\", value);\n\t\t\t\tthis._max(\"selectionMaxX\", value * vcx);\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected processYSelectionDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, vcy: number, stacked: boolean) {\n\t\t$array.each(this.__valueYShowFields, (key) => {\n\n\t\t\tlet value = dataItem.get(<any>key);\n\t\t\tif (value != null) {\n\t\t\t\tif (stacked) {\n\t\t\t\t\tvalue += this.getStackedYValueWorking(dataItem, key);\n\t\t\t\t}\n\n\t\t\t\tthis._min(\"selectionMinY\", value);\n\t\t\t\tthis._max(\"selectionMaxY\", value * vcy);\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedYValueWorking(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemY\");\n\n\t\tif (stackToItem) {\n\t\t\tconst stackedToSeries = stackToItem.component as XYSeries;\n\n\t\t\treturn stackToItem.get(key as any, 0) * stackedToSeries.get(\"vcy\", 1) + this.getStackedYValueWorking(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedXValueWorking(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemX\");\n\n\t\tif (stackToItem) {\n\t\t\tconst stackedToSeries = stackToItem.component as XYSeries;\n\t\t\treturn stackToItem.get(key as any, 0) * stackedToSeries.get(\"vcx\", 1) + this.getStackedXValueWorking(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedYValue(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemY\");\n\n\t\tif (stackToItem) {\n\t\t\treturn stackToItem.get(key as any, 0) + this.getStackedYValue(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedXValue(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemX\");\n\n\t\tif (stackToItem) {\n\t\t\treturn stackToItem.get(key as any, 0) + this.getStackedXValue(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic createLegendMarker(_dataItem?: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tthis.updateLegendMarker();\n\t}\n\n\tpublic _markDirtyAxes() {\n\t\tthis._axesDirty = true;\n\t\tthis.markDirty();\n\t}\n\n\tpublic _markDataSetDirty() {\n\t\tthis._afterDataChange();\n\t\tthis._valuesDirty = true;\n\t\tthis._dataProcessed = false;\n\t\tthis._aggregatesCalculated = false;\n\t\tthis.markDirty();\n\t}\n\n\tpublic _clearDirty() {\n\t\tsuper._clearDirty();\n\t\tthis._axesDirty = false;\n\t\tthis._selectionProcessed = false;\n\t\tthis._stackDirty = false;\n\t\tthis._dataProcessed = false;\n\t}\n\n\tpublic _positionBullet(bullet: Bullet) {\n\t\tlet sprite = bullet.get(\"sprite\");\n\t\tif (sprite) {\n\t\t\tlet dataItem = sprite.dataItem as DataItem<this[\"_dataItemSettings\"]>;\n\n\t\t\tlet locationX = bullet.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\n\t\t\tlet locationY = bullet.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\n\n\t\t\tlet xAxis = this.get(\"xAxis\");\n\t\t\tlet yAxis = this.get(\"yAxis\");\n\n\t\t\tlet exactLocationX = this.get(\"exactLocationX\", false);\n\t\t\tlet exactLocationY = this.get(\"exactLocationY\", false);\n\n\t\t\tlet positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1), exactLocationX);\n\t\t\tlet positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1), exactLocationY);\n\n\t\t\tlet point = this.getPoint(positionX, positionY);\n\n\t\t\tlet left = dataItem.get(\"left\", point.x);\n\t\t\tlet right = dataItem.get(\"right\", point.x);\n\t\t\tlet top = dataItem.get(\"top\", point.y);\n\t\t\tlet bottom = dataItem.get(\"bottom\", point.y);\n\n\t\t\tlet x = 0;\n\t\t\tlet y = 0;\n\n\t\t\tlet w = right - left;\n\t\t\tlet h = bottom - top;\n\n\t\t\tif (this._shouldShowBullet(positionX, positionY)) {\n\t\t\t\tsprite.setPrivate(\"visible\", !bullet.getPrivate(\"hidden\"));\n\n\t\t\t\tlet field = bullet.get(\"field\");\n\n\t\t\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\t\t\tconst xAxis = this.get(\"xAxis\");\n\t\t\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\t\t\tif (field != undefined) {\n\t\t\t\t\tlet realField: string | undefined;\n\n\t\t\t\t\tif (baseAxis == xAxis) {\n\t\t\t\t\t\tif (field == \"value\") {\n\t\t\t\t\t\t\trealField = this._yField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"open\") {\n\t\t\t\t\t\t\trealField = this._yOpenField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"high\") {\n\t\t\t\t\t\t\trealField = this._yHighField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"low\") {\n\t\t\t\t\t\t\trealField = this._yLowField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (realField) {\n\t\t\t\t\t\t\tpositionY = yAxis.getDataItemPositionY(dataItem, realField as any, 0, this.get(\"vcy\", 1), exactLocationY)\n\n\t\t\t\t\t\t\tpoint = this._yRenderer.positionToPoint(positionY);\n\n\t\t\t\t\t\t\ty = point.y;\n\t\t\t\t\t\t\tx = left + w * locationX;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (field == \"value\") {\n\t\t\t\t\t\t\trealField = this._xField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"open\") {\n\t\t\t\t\t\t\trealField = this._xOpenField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"high\") {\n\t\t\t\t\t\t\trealField = this._xHighField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"low\") {\n\t\t\t\t\t\t\trealField = this._xLowField;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (realField) {\n\t\t\t\t\t\t\tpositionX = xAxis.getDataItemPositionX(dataItem, realField as any, 0, this.get(\"vcx\", 1), exactLocationX);\n\n\t\t\t\t\t\t\tpoint = this._xRenderer.positionToPoint(positionX);\n\n\t\t\t\t\t\t\tx = point.x;\n\t\t\t\t\t\t\ty = bottom - h * locationY;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tx = left + w * locationX;\n\t\t\t\t\ty = bottom - h * locationY;\n\t\t\t\t}\n\n\t\t\t\tconst stacked = bullet.get(\"stacked\");\n\t\t\t\tif (stacked) {\n\t\t\t\t\tconst chart = this.chart;\n\t\t\t\t\tif (baseAxis == xAxis) {\n\t\t\t\t\t\tlet previousBullet = this._bullets[positionX + \"_\" + positionY];\n\t\t\t\t\t\tif (previousBullet) {\n\t\t\t\t\t\t\tlet previousBounds = previousBullet.bounds();\n\t\t\t\t\t\t\tlet bounds = sprite.localBounds();\n\t\t\t\t\t\t\tlet yo = y;\n\t\t\t\t\t\t\ty = previousBounds.top;\n\n\t\t\t\t\t\t\tif (stacked == \"down\") {\n\t\t\t\t\t\t\t\ty = previousBounds.bottom - bounds.top;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (stacked == \"auto\") {\n\t\t\t\t\t\t\t\tif (chart) {\n\t\t\t\t\t\t\t\t\tif (yo < chart.plotContainer.height() / 2) {\n\t\t\t\t\t\t\t\t\t\ty = previousBounds.bottom - bounds.top;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ty += bounds.bottom;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\ty += bounds.bottom;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._bullets[positionX + \"_\" + positionY] = sprite;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet previousBullet = this._bullets[positionX + \"_\" + positionY];\n\t\t\t\t\t\tif (previousBullet) {\n\t\t\t\t\t\t\tlet previousBounds = previousBullet.bounds();\n\t\t\t\t\t\t\tlet bounds = sprite.localBounds();\n\t\t\t\t\t\t\tlet xo = x;\n\t\t\t\t\t\t\tx = previousBounds.right;\n\n\t\t\t\t\t\t\tif (stacked == \"down\") {\n\t\t\t\t\t\t\t\tx = previousBounds.left - bounds.right;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (stacked == \"auto\") {\n\t\t\t\t\t\t\t\tif (chart) {\n\t\t\t\t\t\t\t\t\tif (xo < chart.plotContainer.width() / 2) {\n\t\t\t\t\t\t\t\t\t\tx = previousBounds.left - bounds.right;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tx -= bounds.left;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tx -= bounds.left;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._bullets[positionX + \"_\" + positionY] = sprite;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (sprite.isType(\"Label\")) {\n\t\t\t\t\tsprite.setPrivate(\"maxWidth\", Math.abs(w));\n\t\t\t\t\tsprite.setPrivate(\"maxHeight\", Math.abs(h));\n\t\t\t\t}\n\n\t\t\t\tsprite.setAll({ x, y });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsprite.setPrivate(\"visible\", false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _shouldShowBullet(_positionX: number, _positionY: number): boolean {\n\t\treturn this._showBullets;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setDataSet(id: string) {\n\t\tif (this._dataSets[id]) {\n\t\t\tthis._handleDataSetChange();\n\t\t\tthis._dataItems = this._dataSets[id];\n\t\t\tthis._markDataSetDirty();\n\t\t\tthis._dataSetId = id;\n\n\t\t\tconst type = \"datasetchanged\";\n\t\t\tif (this.events.isEnabled(type)) {\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this, id: id });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic resetGrouping() {\n\t\t$object.each(this._dataSets, (_key, dataSet) => {\n\t\t\tif (dataSet != this._mainDataItems) {\n\t\t\t\t$array.each(dataSet, (dataItem) => {\n\t\t\t\t\tdataItem.dispose();\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tthis._dataSets = {};\n\t\tthis._dataItems = this.mainDataItems;\n\t}\n\n\tprotected _handleDataSetChange() {\n\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\tlet bullets = dataItem.bullets;\n\t\t\tif (bullets) {\n\t\t\t\t$array.each(bullets, (bullet) => {\n\t\t\t\t\tif (bullet) {\n\t\t\t\t\t\tlet sprite = bullet.get(\"sprite\");\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tsprite.setPrivate(\"visible\", false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\tthis._selectionProcessed = false; // for totals to be calculated\n\t}\n\n\t/**\n\t * Shows hidden series.\n\t *\n\t * @param duration Duration of animation in milliseconds\n\t * @return Animation promise\n\t */\n\tpublic async show(duration?: number): Promise<void> {\n\t\tthis._fixVC();\n\t\tlet promises: Array<Promise<any>> = [];\n\t\tpromises.push(super.show(duration).then(() => {\n\t\t\tthis._isShowing = false;\n\t\t\tlet xAxis = this.get(\"xAxis\");\n\t\t\tlet yAxis = this.get(\"yAxis\");\n\t\t\tlet baseAxis = this.get(\"baseAxis\");\n\t\t\tif (yAxis !== baseAxis) {\n\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t}\n\t\t\tif (xAxis !== baseAxis) {\n\t\t\t\txAxis.markDirtySelectionExtremes();\n\t\t\t}\n\t\t}));\n\t\tpromises.push(this.bulletsContainer.show(duration));\n\t\tpromises.push(this._sequencedShowHide(true, duration));\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Hides series.\n\t *\n\t * @param duration Duration of animation in milliseconds\n\t * @return Animation promise\n\t */\n\tpublic async hide(duration?: number): Promise<void> {\n\t\tthis._fixVC();\n\t\tlet promises: Promise<any>[] = [];\n\t\tpromises.push(super.hide(duration).then(() => {\n\t\t\tthis._isHiding = false;\n\t\t}));\n\t\tpromises.push(this.bulletsContainer.hide(duration));\n\t\tpromises.push(this._sequencedShowHide(false, duration));\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Shows series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async showDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\n\t\tconst promises = [super.showDataItem(dataItem, duration)];\n\n\t\tif (!$type.isNumber(duration)) {\n\t\t\tduration = this.get(\"stateAnimationDuration\", 0);\n\t\t}\n\n\t\tconst easing = this.get(\"stateAnimationEasing\");\n\n\t\t$array.each(this._valueFields, (key) => {\n\t\t\tpromises.push(dataItem.animate({ key: key + \"Working\" as any, to: dataItem.get(key as any), duration: duration!, easing: easing }).waitForStop());\n\t\t})\n\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Hides series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async hideDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\n\t\tconst promises = [super.hideDataItem(dataItem, duration)];\n\n\t\tlet hiddenState = this.states.lookup(\"hidden\");\n\t\tif (!hiddenState) {\n\t\t\thiddenState = this.states.create(\"hidden\", {});\n\t\t}\n\n\t\tif (!$type.isNumber(duration)) {\n\t\t\tduration = hiddenState.get(\"stateAnimationDuration\", this.get(\"stateAnimationDuration\", 0));\n\t\t}\n\n\t\tconst easing = hiddenState.get(\"stateAnimationEasing\", this.get(\"stateAnimationEasing\"));\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\tconst stacked = this.get(\"stacked\");\n\n\t\tif (baseAxis === xAxis || !baseAxis) {\n\n\t\t\t$array.each(this._valueYFields, (key) => {\n\t\t\t\tlet min = yAxis.getPrivate(\"min\");\n\t\t\t\tlet baseValue = yAxis.baseValue();\n\n\t\t\t\tif ($type.isNumber(min) && min > baseValue) {\n\t\t\t\t\tbaseValue = min;\n\t\t\t\t}\n\t\t\t\tif (stacked) {\n\t\t\t\t\tbaseValue = 0;\n\t\t\t\t}\n\n\t\t\t\tlet value = dataItem.get(key as any);\n\t\t\t\tif (value != null) {\n\t\t\t\t\tpromises.push(dataItem.animate({ key: key + \"Working\" as any, to: baseValue, duration: duration!, easing: easing }).waitForStop());\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tif (baseAxis === yAxis || !baseAxis) {\n\n\t\t\tlet min = xAxis.getPrivate(\"min\");\n\t\t\tlet baseValue = xAxis.baseValue();\n\t\t\tif ($type.isNumber(min) && min > baseValue) {\n\t\t\t\tbaseValue = min;\n\t\t\t}\n\t\t\tif (stacked) {\n\t\t\t\tbaseValue = 0;\n\t\t\t}\n\n\t\t\t$array.each(this._valueXFields, (key) => {\n\t\t\t\tlet value = dataItem.get(key as any);\n\t\t\t\tif (value != null) {\n\t\t\t\t\tpromises.push(dataItem.animate({ key: key + \"Working\" as any, to: baseValue, duration: duration!, easing: easing }).waitForStop());\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tawait Promise.all(promises);\n\t}\n\n\tpublic _markDirtyStack() {\n\t\tthis._stackDirty = true;\n\t\tthis.markDirty();\n\t\tthis._markStakedDirtyStack();\n\t}\n\n\tprotected _markStakedDirtyStack() {\n\t\tconst stackedSeries = this._stackedSeries;\n\t\tif (stackedSeries) {\n\n\t\t\t$object.each(stackedSeries, (_key, value) => {\n\t\t\t\tif (!value._stackDirty) {\n\t\t\t\t\tvalue._markDirtyStack();\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\t\tif (this._skipped) {\n\t\t\tthis._markDirtyAxes();\n\t\t\tthis._skipped = false;\n\t\t}\n\t}\n\n\t/**\n\t * Shows a tooltip for specific data item.\n\t *\n\t * @param dataItem Data item\n\t */\n\tpublic showDataItemTooltip(dataItem: DataItem<this[\"_dataItemSettings\"]> | undefined) {\n\t\tif (!this.getPrivate(\"doNotUpdateLegend\")) {\n\t\t\tthis.updateLegendMarker(dataItem);\n\t\t\tthis.updateLegendValue(dataItem);\n\t\t}\n\n\t\tconst tooltip = this.get(\"tooltip\");\n\n\t\tconst exactLocationX = this.get(\"exactLocationX\", false);\n\t\tconst exactLocationY = this.get(\"exactLocationY\", false);\n\n\t\tif (tooltip) {\n\t\t\tif (!this.isHidden() && this.get(\"visible\")) {\n\t\t\t\ttooltip._setDataItem(dataItem);\n\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tlet locationX = this.get(\"locationX\", 0);\n\t\t\t\t\tlet locationY = this.get(\"locationY\", 1);\n\n\t\t\t\t\tlet itemLocationX = dataItem.get(\"locationX\", locationX);\n\t\t\t\t\tlet itemLocationY = dataItem.get(\"locationY\", locationY);\n\n\t\t\t\t\tconst xAxis = this.get(\"xAxis\");\n\t\t\t\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\t\t\t\tconst vcx = this.get(\"vcx\", 1);\n\t\t\t\t\tconst vcy = this.get(\"vcy\", 1);\n\n\t\t\t\t\tconst xPos = xAxis.getDataItemPositionX(dataItem, this._tooltipFieldX!, this._aLocationX0 + (this._aLocationX1 - this._aLocationX0) * itemLocationX, vcx, exactLocationX);\n\t\t\t\t\tconst yPos = yAxis.getDataItemPositionY(dataItem, this._tooltipFieldY!, this._aLocationY0 + (this._aLocationY1 - this._aLocationY0) * itemLocationY, vcy, exactLocationY);\n\n\t\t\t\t\tconst point = this.getPoint(xPos, yPos);\n\n\t\t\t\t\tlet show = true;\n\t\t\t\t\t$array.each(this._valueFields, (field) => {\n\t\t\t\t\t\tif (dataItem.get(field as any) == null) {\n\t\t\t\t\t\t\tshow = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tif (show) {\n\t\t\t\t\t\tconst chart = this.chart;\n\t\t\t\t\t\tif (chart && chart.inPlot(point)) {\n\t\t\t\t\t\t\ttooltip.label.text.markDirtyText();\n\t\t\t\t\t\t\ttooltip.set(\"tooltipTarget\", this._getTooltipTarget(dataItem));\n\t\t\t\t\t\t\ttooltip.set(\"pointTo\", this._display.toGlobal({ x: point.x, y: point.y }));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttooltip._setDataItem(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttooltip._setDataItem(undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.hideTooltip();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic hideTooltip(): Promise<void> | undefined {\n\t\tconst tooltip = this.get(\"tooltip\");\n\t\tif (tooltip) {\n\t\t\ttooltip.set(\"tooltipTarget\", this);\n\t\t}\n\t\treturn super.hideTooltip();\n\t}\n\n\tprotected _getTooltipTarget(dataItem: DataItem<this[\"_dataItemSettings\"]>): Sprite {\n\t\tif (this.get(\"seriesTooltipTarget\") == \"bullet\") {\n\t\t\tconst bullets = dataItem.bullets;\n\t\t\tif (bullets && bullets.length > 0) {\n\t\t\t\tconst bullet = bullets[0];\n\t\t\t\tconst sprite = bullet.get(\"sprite\");\n\t\t\t\tif (sprite) {\n\t\t\t\t\treturn sprite;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic updateLegendValue(dataItem?: DataItem<this[\"_dataItemSettings\"]> | undefined) {\n\t\tconst legendDataItem = this.get(\"legendDataItem\");\n\n\t\tif (legendDataItem) {\n\n\t\t\tconst label = legendDataItem.get(\"label\");\n\t\t\tif (label) {\n\t\t\t\tlet txt = \"\";\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tlabel._setDataItem(dataItem);\n\t\t\t\t\ttxt = this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\")));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlabel._setDataItem(this._emptyDataItem);\n\t\t\t\t\ttxt = this.get(\"legendRangeLabelText\", this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\"))));\n\t\t\t\t}\n\n\t\t\t\tlabel.set(\"text\", txt);\n\t\t\t}\n\n\t\t\tconst valueLabel = legendDataItem.get(\"valueLabel\");\n\t\t\tif (valueLabel) {\n\t\t\t\tlet txt = \"\";\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tvalueLabel._setDataItem(dataItem);\n\t\t\t\t\ttxt = this.get(\"legendValueText\", valueLabel.get(\"text\", \"\"));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvalueLabel._setDataItem(this._emptyDataItem);\n\t\t\t\t\ttxt = this.get(\"legendRangeValueText\", valueLabel.get(\"text\", \"\"));\n\t\t\t\t}\n\n\t\t\t\tvalueLabel.set(\"text\", txt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _getItemReaderLabel(): string {\n\t\tlet text = \"X: {\" + this._xField;\n\t\tif (this.get(\"xAxis\").isType<DateAxis<any>>(\"DateAxis\")) {\n\t\t\ttext += \".formatDate()\";\n\t\t}\n\t\ttext += \"}; Y: {\" + this._yField;\n\t\tif (this.get(\"yAxis\").isType<DateAxis<any>>(\"DateAxis\")) {\n\t\t\ttext += \".formatDate()\";\n\t\t}\n\t\ttext += \"}\";\n\t\treturn text;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getPoint(positionX: number, positionY: number): IPoint {\n\t\tlet x = this._xRenderer.positionToCoordinate(positionX);\n\t\tlet y = this._yRenderer.positionToCoordinate(positionY);\n\n\t\t// if coordinate is super big, canvas fails to draw line, capping to some big number (won't make any visual difference)\n\t\tlet max = 999999999;\n\t\tif (y < -max) {\n\t\t\ty = -max;\n\t\t}\n\t\telse if (y > max) {\n\t\t\ty = max;\n\t\t}\n\n\t\tif (x < -max) {\n\t\t\tx = -max;\n\t\t}\n\t\telse if (x > max) {\n\t\t\tx = max;\n\t\t}\n\n\t\treturn { x: x, y: y };\n\t}\n\n\tprotected _shouldInclude(_position: number): boolean {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic handleCursorHide() {\n\t\tthis.hideTooltip();\n\t\tthis.updateLegendValue(undefined);\n\t\tthis.updateLegendMarker(undefined);\n\t}\n\n\tprotected _afterDataChange() {\n\t\tsuper._afterDataChange();\n\t\tthis.get(\"xAxis\")._markDirtyKey(\"start\");\n\t\tthis.get(\"yAxis\")._markDirtyKey(\"start\");\n\t\tthis.resetExtremes();\n\t}\n\n\n\t/**\n\t * Resets cached axis scale values.\n\t */\n\tpublic resetExtremes() {\n\t\tthis.setPrivate(\"selectionMinX\", undefined);\n\t\tthis.setPrivate(\"selectionMaxX\", undefined);\n\t\tthis.setPrivate(\"selectionMinY\", undefined);\n\t\tthis.setPrivate(\"selectionMaxY\", undefined);\n\n\t\tthis.setPrivate(\"minX\", undefined);\n\t\tthis.setPrivate(\"minY\", undefined);\n\t\tthis.setPrivate(\"maxX\", undefined);\n\t\tthis.setPrivate(\"maxY\", undefined);\n\t}\n\n\t/**\n\t * Creates and returns an axis range object.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\n\t * @param axisDataItem Axis data item\n\t * @return Axis range\n\t */\n\tpublic createAxisRange(axisDataItem: DataItem<IAxisDataItem>): this[\"_axisRangeType\"] {\n\t\treturn this.axisRanges.push({\n\t\t\taxisDataItem: axisDataItem\n\t\t})\n\t}\n\n\t/**\n\t * A list of series's main (ungrouped) data items.\n\t *\n\t * @return Data items\n\t */\n\tpublic get mainDataItems(): Array<DataItem<this[\"_dataItemSettings\"]>> {\n\t\treturn this._mainDataItems;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic _adjustStartIndex(index: number): number {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\n\t\tif (baseAxis == xAxis && xAxis.isType<DateAxis<any>>(\"DateAxis\")) {\n\t\t\tconst baseDuration = xAxis.baseDuration();\n\t\t\tconst minSelection = xAxis.getPrivate(\"selectionMin\", xAxis.getPrivate(\"min\", 0));\n\t\t\tconst dl = baseDuration * this.get(\"locationX\", 0.5);\n\n\t\t\tlet value = -Infinity;\n\n\t\t\twhile (value < minSelection) {\n\t\t\t\tconst dataItem = this.dataItems[index];\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tconst open = dataItem.open;\n\t\t\t\t\tif (open) {\n\t\t\t\t\t\tvalue = open[\"valueX\"];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = dataItem.get(\"valueX\", 0);\n\t\t\t\t\t}\n\t\t\t\t\tvalue += dl;\n\n\t\t\t\t\tif (value < minSelection) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n}\n"]}
1
+ {"version":3,"file":"XYSeries.js","sourceRoot":"","sources":["../../../../../../src/.internal/charts/xy/series/XYSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Axis, IAxisPrivate, IAxisDataItem } from \"../axes/Axis\";\nimport type { AxisRenderer } from \"../axes/AxisRenderer\";\nimport type { IPoint } from \"../../../core/util/IPoint\";\nimport type { Sprite } from \"../../../core/render/Sprite\";\nimport type { Bullet } from \"../../../core/render/Bullet\";\nimport type { XYChart } from \"../XYChart\";\n//import type { CategoryAxis } from \"../axes/CategoryAxis\";\nimport type { DateAxis } from \"../axes/DateAxis\";\nimport type { ITimeInterval } from \"../../../core/util/Time\";\nimport type { IDisposer } from \"../../../core/util/Disposer\";\n\nimport { DataItem } from \"../../../core/render/Component\";\nimport { Series, ISeriesSettings, ISeriesDataItem, ISeriesPrivate, ISeriesEvents } from \"../../../core/render/Series\";\nimport { List } from \"../../../core/util/List\";\nimport { Container } from \"../../../core/render/Container\";\nimport { Graphics } from \"../../../core/render/Graphics\";\n\n\nimport * as $type from \"../../../core/util/Type\";\nimport * as $object from \"../../../core/util/Object\";\nimport * as $array from \"../../../core/util/Array\";\nimport * as $utils from \"../../../core/util/Utils\";\n\n/**\n * @ignore\n */\nfunction min(left: number | undefined, right: number | undefined): number | undefined {\n\tif (left == null) return right;\n\tif (right == null) return left;\n\treturn (right < left) ? right : left;\n}\n\n/**\n * @ignore\n */\nfunction max(left: number | undefined, right: number | undefined): number | undefined {\n\tif (left == null) return right;\n\tif (right == null) return left;\n\treturn (left > right) ? left : right;\n}\n\n\n/**\n * Interface representing a series axis range.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/#Series_axis_ranges} for more info\n */\nexport interface IXYSeriesAxisRange {\n\n\t/**\n\t * Related axis data item.\n\t */\n\taxisDataItem: DataItem<IAxisDataItem>;\n\n\t/**\n\t * A [[Container]] element that range's elements are placed in.\n\t */\n\tcontainer?: Container;\n\n\t/**\n\t * Target series.\n\t */\n\tseries?: XYSeries;\n\n}\n\nexport interface IXYAxisPrivate extends IAxisPrivate {\n\tmin?: number;\n\tmax?: number;\n}\n\nexport interface IXYAxis extends Axis<AxisRenderer> {\n\t_privateSettings: IXYAxisPrivate;\n}\n\nexport interface IXYSeriesEvents extends ISeriesEvents {\n\n\t/**\n\t * Kicks in when axis starts using different data set, e.g. data\n\t * of different granularit on [[DateAxis]].\n\t *\n\t * @since 5.1.1\n\t */\n\tdatasetchanged: {\n\t\tid: string\n\t}\n}\n\n/**\n * XY chart series data item.\n */\nexport interface IXYSeriesDataItem extends ISeriesDataItem {\n\tvalueX?: number;\n\tvalueXWorking?: number;\n\tvalueXChange?: number;\n\tvalueXChangePercent?: number;\n\tvalueXChangeSelection?: number;\n\tvalueXChangeSelectionPercent?: number;\n\tvalueXChangePrevious?: number;\n\tvalueXChangePreviousPercent?: number;\n\tvalueXWorkingOpen?: number;\n\tvalueXWorkingClose?: number;\n\n\tvalueY?: number;\n\tvalueYChange?: number;\n\tvalueYWorking?: number;\n\tvalueYChangePercent?: number;\n\tvalueYChangeSelection?: number;\n\tvalueYChangeSelectionPercent?: number;\n\tvalueYChangePrevious?: number;\n\tvalueYChangePreviousPercent?: number;\n\tvalueYWorkingOpen?: number;\n\tvalueYWorkingClose?: number;\n\n\topenValueX?: number;\n\topenValueXWorking?: number;\n\topenValueXChange?: number;\n\topenValueXChangePercent?: number;\n\topenValueXChangeSelection?: number;\n\topenValueXChangeSelectionPercent?: number;\n\topenValueXChangePrevious?: number;\n\topenValueXChangePreviousPercent?: number;\n\topenValueXWorkingOpen?: number;\n\topenValueXWorkingClose?: number;\n\topenValueY?: number;\n\topenValueYWorking?: number;\n\topenValueYChange?: number;\n\topenValueYChangePercent?: number;\n\topenValueYChangeSelection?: number;\n\topenValueYChangeSelectionPercent?: number;\n\topenValueYChangePrevious?: number;\n\topenValueYChangePreviousPercent?: number;\n\topenValueYWorkingOpen?: number;\n\topenValueYWorkingClose?: number;\n\n\tlowValueX?: number;\n\tlowValueXWorking?: number;\n\tlowValueXChange?: number;\n\tlowValueXChangePercent?: number;\n\tlowValueXChangeSelection?: number;\n\tlowValueXChangeSelectionPercent?: number;\n\tlowValueXChangePrevious?: number;\n\tlowValueXChangePreviousPercent?: number;\n\tlowValueXWorkingOpen?: number;\n\tlowValueXWorkingClose?: number;\n\n\thighValueX?: number;\n\thighValueXWorking?: number;\n\thighValueXChange?: number;\n\thighValueXChangePercent?: number;\n\thighValueXChangeSelection?: number;\n\thighValueXChangeSelectionPercent?: number;\n\thighValueXChangePrevious?: number;\n\thighValueXChangePreviousPercent?: number;\n\thighValueXWorkingOpen?: number;\n\thighValueXWorkingClose?: number;\n\n\tlowValueY?: number;\n\tlowValueYWorking?: number;\n\tlowValueYChange?: number;\n\tlowValueYChangePercent?: number;\n\tlowValueYChangeSelection?: number;\n\tlowValueYChangeSelectionPercent?: number;\n\tlowValueYChangePrevious?: number;\n\tlowValueYChangePreviousPercent?: number;\n\tlowValueYWorkingOpen?: number;\n\tlowValueYWorkingClose?: number;\n\n\thighValueY?: number;\n\thighValueYWorking?: number;\n\thighValueYChange?: number;\n\thighValueYChangePercent?: number;\n\thighValueYChangeSelection?: number;\n\thighValueYChangeSelectionPercent?: number;\n\thighValueYChangePrevious?: number;\n\thighValueYChangePreviousPercent?: number;\n\thighValueYWorkingOpen?: number;\n\thighValueYWorkingClose?: number;\n\n\tcategoryX?: string;\n\tcategoryY?: string;\n\n\topenCategoryX?: string;\n\topenCategoryY?: string;\n\n\tlocationX?: number;\n\tlocationY?: number;\n\n\topenLocationX?: number;\n\topenLocationY?: number;\n\n\tstackToItemX?: DataItem<IXYSeriesDataItem>;\n\tstackToItemY?: DataItem<IXYSeriesDataItem>;\n\n\tleft?: number;\n\tright?: number;\n\ttop?: number;\n\tbottom?: number;\n\n\tpoint?: IPoint;\n\n\toriginals?: Array<DataItem<IXYSeriesDataItem>>;\n}\n\nexport interface IXYSeriesSettings extends ISeriesSettings {\n\n\t/**\n\t * If this is set to `true`, data items will ignore `locationX` setting\n\t * but will place the data point at exact X value.\n\t * \n\t * This works with [[DateAxis]] only.\n\t * \n\t * On a `ColumnSeries`/`CandlestickSeries` this setting will affect bullets\n\t * only.\n\t *\n\t * @default false\n\t * @since 5.13.0\n\t */\n\texactLocationX?: boolean;\n\n\t/**\n\t * If this is set to `true`, data items will ignore `locationX` setting\n\t * but will place the data point at exact Y value.\n\t * \n\t * This works with [[DateAxis]] only.\n\t * \n\t * On a `ColumnSeries`/`CandlestickSeries` this setting will affect bullets\n\t * only.\n\t *\n\t * @default false\n\t * @since 5.13.0\n\t */\n\texactLocationY?: boolean;\n\n\t/**\n\t * If set to `true` series will use selection extremes when calculating\n\t * their min and max values of the axis. Useful for stacked series.\n\t *\n\t * @since 5.10.11\n\t */\n\tuseSelectionExtremes?: boolean;\n\n\t/**\n\t * Minimal distance between data items in pixels.\n\t *\n\t * If data items are closer than this, bullets are turned off to avoid\n\t * overcrowding.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Bullets} for more info\n\t */\n\tminBulletDistance?: number;\n\n\t/**\n\t * X axis series uses.\n\t *\n\t * **IMPORTANT:** `xAxis` needs to be set when creating the series. Updating\n\t * this setting on previously created series object will not work.\n\t */\n\txAxis: IXYAxis;\n\n\t/**\n\t * Y axis series uses.\n\t *\n\t * **IMPORTANT:** `yAxis` needs to be set when creating the series. Updating\n\t * this setting on previously created series object will not work.\n\t */\n\tyAxis: IXYAxis;\n\n\t/**\n\t * If set to `true` series will be stacked to other series that also have\n\t * this setting set to `true`.\n\t *\n\t * NOTE: for series stack properly, all stacked series must have same number\n\t * of data items with the same timestamp/category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Stacked_series} for more info\n\t */\n\tstacked?: boolean;\n\n\t/**\n\t * Whether to stack negative values from zero (`true`) or from whatever\n\t * previous series value is (`false`).\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Negative_value_stacking} for more info\n\t */\n\tstackToNegative?: boolean;\n\n\t/**\n\t * Base axis for the series.\n\t *\n\t * A base axis will dictate direction series plot.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Base_axis} for more info\n\t */\n\tbaseAxis?: IXYAxis;\n\n\t/**\n\t * Input data field for X value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueXField?: string;\n\n\t/**\n\t * Input data field for Y value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueYField?: string;\n\n\t/**\n\t * Exclude series values when calculating totals for category/interval.\n\t *\n\t * @default false\n\t */\n\texcludeFromTotal?: boolean;\n\n\t/**\n\t * Display data field for X value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueXShow?: \"valueXWorking\" | \"valueXChange\" | \"valueXChangePercent\" | \"valueXChangeSelection\" | \"valueXChangeSelectionPercent\" | \"valueXChangePrevious\" | \"valueXChangePreviousPercent\" | \"valueXTotal\" | \"valueXTotalPercent\" | \"valueXSum\";\n\n\t/**\n\t * Display data field for Y value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tvalueYShow?: \"valueYWorking\" | \"valueYChange\" | \"valueYChangePercent\" | \"valueYChangeSelection\" | \"valueYChangeSelectionPercent\" | \"valueYChangePrevious\" | \"valueYChangePreviousPercent\" | \"valueYTotal\" | \"valueYTotalPercent\" | \"valueYSum\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X values from several data items.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\tvalueXGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X values from several data items.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\tvalueYGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Input data field for X open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueXField?: string;\n\n\t/**\n\t * Input data field for X open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueYField?: string;\n\n\t/**\n\t * Display data field for X open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueXShow?: \"openValueXWorking\" | \"openValueXChange\" | \"openValueXChangePercent\" | \"openValueXChangeSelection\" | \"openValueXChangeSelectionPercent\" | \"openValueXChangePrevious\" | \"openValueXChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenValueYShow?: \"openValueYWorking\" | \"openValueYChange\" | \"openValueYChangePercent\" | \"openValueYChangeSelection\" | \"openValueYChangeSelectionPercent\" | \"openValueYChangePrevious\" | \"openValueYChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\topenValueXGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Display data field for Y open value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Dynamic_data_item_grouping} for more info\n\t */\n\topenValueYGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\n\n\t/**\n\t * Input data field for X low value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\tlowValueXField?: string;\n\n\t/**\n\t * Input data field for Y low value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\tlowValueYField?: string;\n\n\t/**\n\t * Input data field for X high value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\thighValueXField?: string;\n\n\t/**\n\t * Input data field for Y high value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/candlestick-series/} for more info\n\t */\n\thighValueYField?: string;\n\n\t/**\n\t * Display data field for X low value.\n\t */\n\tlowValueXShow?: \"lowValueXWorking\" | \"lowValueXChange\" | \"lowValueXChangePercent\" | \"lowValueXChangeSelection\" | \"lowValueXChangeSelectionPercent\" | \"lowValueXChangePrevious\" | \"lowValueXChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y low value.\n\t */\n\tlowValueYShow?: \"lowValueYWorking\" | \"lowValueYChange\" | \"lowValueYChangePercent\" | \"lowValueYChangeSelection\" | \"lowValueYChangeSelectionPercent\" | \"lowValueYChangePrevious\" | \"lowValueYChangePreviousPercent\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X low values from several data items.\n\t */\n\tlowValueXGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating Y low values from several data items.\n\t */\n\tlowValueYGrouped?: \"open\" | \"close\" | \"low\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Display data field for X high value.\n\t */\n\thighValueXShow?: \"highValueXWorking\" | \"highValueXChange\" | \"highValueXChangePercent\" | \"highValueXChangeSelection\" | \"highValueXChangeSelectionPercent\" | \"highValueXChangePrevious\" | \"highValueXChangePreviousPercent\";\n\n\t/**\n\t * Display data field for Y high value.\n\t */\n\thighValueYShow?: \"highValueYWorking\" | \"highValueYChange\" | \"highValueYChangePercent\" | \"highValueYChangeSelection\" | \"highValueYChangeSelectionPercent\" | \"highValueYChangePrevious\" | \"highValueYChangePreviousPercent\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X high values from several data items.\n\t */\n\thighValueXGrouped?: \"open\" | \"close\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Indicates what aggregate value to use for collective data item, when\n\t * aggregating X high values from several data items.\n\t */\n\thighValueYGrouped?: \"open\" | \"close\" | \"high\" | \"average\" | \"sum\" | \"extreme\";\n\n\t/**\n\t * Horizontal location of the low data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\tlowLocationX?: number;\n\n\t/**\n\t * Vertical location of the low data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\tlowLocationY?: number;\n\n\t/**\n\t * Horizontal location of the high data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\thighLocationX?: number;\n\n\t/**\n\t * Vertical location of the high data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\thighLocationY?: number;\n\n\n\t/**\n\t * Input data field for X category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tcategoryXField?: string;\n\n\t/**\n\t * Input data field for Y category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\tcategoryYField?: string;\n\n\t/**\n\t * Display data field for X category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenCategoryXField?: string;\n\n\t/**\n\t * Display data field for Y category.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/#Data_fields} for more info\n\t */\n\topenCategoryYField?: string;\n\n\t/**\n\t * If set to `true` this series will be ignored when calculating scale of the\n\t * related axes.\n\t *\n\t * @default false\n\t */\n\tignoreMinMax?: boolean;\n\n\t/**\n\t * @ignore\n\t */\n\tvcx?: number;\n\n\t/**\n\t * @ignore\n\t */\n\tvcy?: number;\n\n\t/**\n\t * Horizontal location of the data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/line-series/#Data_item_location} for more info\n\t * @default 0.5\n\t */\n\tlocationX?: number;\n\n\t/**\n\t * Vertical location of the data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/line-series/#Data_item_location} for more info\n\t * @default 0.5\n\t */\n\tlocationY?: number;\n\n\t/**\n\t * Horizontal location of the open data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\topenLocationX?: number;\n\n\t/**\n\t * Vertical location of the open data point relative to its cell.\n\t *\n\t * `0` - beginning, `0.5` - middle, `1` - end.\n\t *\n\t * @default 0.5\n\t */\n\topenLocationY?: number;\n\n\t/**\n\t * If set to `true` [[XYCursor]] will show closest data item from series\n\t * even if it is outside currently hovered date axis interval.\n\t *\n\t * This setting is relevant only if `baseAxis` is a date axis.\n\t */\n\tsnapTooltip?: boolean;\n\n\t/**\n\t * Text to use for series legend label when no particular category/interval\n\t * is selected.\n\t */\n\tlegendRangeLabelText?: string;\n\n\t/**\n\t * Text to use for series legend value label when no particular\n\t * category/interval is selected.\n\t */\n\tlegendRangeValueText?: string;\n\n\n\t/**\n\t * If set to `true`, series bullets will be masked by plot area.\n\t */\n\tmaskBullets?: boolean;\n\n\t/**\n\t * Whether series' tooltip should inherit its color from series or its first\n\t * bullet.\n\t *\n\t * @default \"series\"\n\t */\n\tseriesTooltipTarget?: \"series\" | \"bullet\";\n\n\t/**\n\t * Indicates horizontal position at which to show series' tooltip at.\n\t *\n\t * @default \"value\"\n\t * @since 5.0.16\n\t */\n\ttooltipPositionX?: \"open\" | \"value\" | \"low\" | \"high\";\n\n\t/**\n\t * Indicates vertical position at which to show series' tooltip at.\n\t *\n\t * @default \"value\"\n\t * @since 5.0.16\n\t */\n\ttooltipPositionY?: \"open\" | \"value\" | \"low\" | \"high\";\n\n\n\t/**\n\t * If set to `true` data items for this series won't be grouped even if\n\t * the `groupData: true` is set on a related [[DateAxis]].\n\t * \n\t * @since 5.0.19\n\t */\n\tgroupDataDisabled?: boolean;\n\n\t/**\n\t * A [[DataItem]] that is being used for current tooltip, e.g. by a chart\n\t * cursor.\n\t *\n\t * @since 5.1.2\n\t */\n\ttooltipDataItem?: DataItem<IXYSeriesDataItem>\n\n\t/**\n\t * If set to `true`, when data is grouped, the `originals` setting of the\n\t * group data items will be populated by the original (source) data items\n\t * that fall into the group.\n\t *\n\t * Please note that if `groupDataCallback` is set, this setting is ignored\n\t * as originals will always be included, regardless of the value.\n\t *\n\t * @since 5.1.11\n\t * @default false\n\t */\n\tgroupDataWithOriginals?: boolean;\n\n\t/**\n\t * A custom function to call when grouping data items.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/date-axis/#Custom_aggregation_functions} for more info\n\t * @since 5.1.11\n\t */\n\tgroupDataCallback?: (dataItem: DataItem<IXYSeriesDataItem>, interval: ITimeInterval) => void;\n\n}\n\nexport interface IXYSeriesPrivate extends ISeriesPrivate {\n\n\tminX?: number;\n\tmaxX?: number;\n\n\tminY?: number;\n\tmaxY?: number;\n\n\tselectionMinX?: number;\n\tselectionMaxX?: number;\n\n\tselectionMinY?: number;\n\tselectionMaxY?: number;\n\n\tvalueXAverage?: number;\n\tvalueXCount?: number;\n\tvalueXSum?: number;\n\tvalueXAbsoluteSum?: number;\n\tvalueXLow?: number;\n\tvalueXHigh?: number;\n\tvalueXOpen?: number;\n\tvalueXClose?: number;\n\n\tvalueYAverage?: number;\n\tvalueYCount?: number;\n\tvalueYSum?: number;\n\tvalueYAbsoluteSum?: number;\n\tvalueYLow?: number;\n\tvalueYHigh?: number;\n\tvalueYOpen?: number;\n\tvalueYClose?: number;\n\n\tvalueXAverageSelection?: number;\n\tvalueXCountSelection?: number;\n\tvalueXSumSelection?: number;\n\tvalueXAbsoluteSumSelection?: number;\n\tvalueXLowSelection?: number;\n\tvalueXHighSelection?: number;\n\tvalueXOpenSelection?: number;\n\tvalueXCloseSelection?: number;\n\n\tvalueYAverageSelection?: number;\n\tvalueYCountSelection?: number;\n\tvalueYSumSelection?: number;\n\tvalueYAbsoluteSumSelection?: number;\n\tvalueYLowSelection?: number;\n\tvalueYHighSelection?: number;\n\tvalueYOpenSelection?: number;\n\tvalueYCloseSelection?: number;\n\n\topenValueXAverage?: number;\n\topenValueXCount?: number;\n\topenValueXSum?: number;\n\topenValueXAbsoluteSum?: number;\n\topenValueXLow?: number;\n\topenValueXHigh?: number;\n\topenValueXOpen?: number;\n\topenValueXClose?: number;\n\n\topenValueYAverage?: number;\n\topenValueYCount?: number;\n\topenValueYSum?: number;\n\topenValueYAbsoluteSum?: number;\n\topenValueYLow?: number;\n\topenValueYHigh?: number;\n\topenValueYOpen?: number;\n\topenValueYClose?: number;\n\n\topenValueXAverageSelection?: number;\n\topenValueXCountSelection?: number;\n\topenValueXSumSelection?: number;\n\topenValueXAbsoluteSumSelection?: number;\n\topenValueXLowSelection?: number;\n\topenValueXHighSelection?: number;\n\topenValueXOpenSelection?: number;\n\topenValueXCloseSelection?: number;\n\n\topenValueYAverageSelection?: number;\n\topenValueYCountSelection?: number;\n\topenValueYSumSelection?: number;\n\topenValueYAbsoluteSumSelection?: number;\n\topenValueYLowSelection?: number;\n\topenValueYHighSelection?: number;\n\topenValueYOpenSelection?: number;\n\topenValueYCloseSelection?: number;\n\n\tlowValueXAverage?: number;\n\tlowValueXCount?: number;\n\tlowValueXSum?: number;\n\tlowValueXAbsoluteSum?: number;\n\tlowValueXLow?: number;\n\tlowValueXHigh?: number;\n\tlowValueXlow?: number;\n\tlowValueXClose?: number;\n\n\tlowValueYAverage?: number;\n\tlowValueYCount?: number;\n\tlowValueYSum?: number;\n\tlowValueYAbsoluteSum?: number;\n\tlowValueYLow?: number;\n\tlowValueYHigh?: number;\n\tlowValueYlow?: number;\n\tlowValueYClose?: number;\n\n\tlowValueXAverageSelection?: number;\n\tlowValueXCountSelection?: number;\n\tlowValueXSumSelection?: number;\n\tlowValueXAbsoluteSumSelection?: number;\n\tlowValueXLowSelection?: number;\n\tlowValueXHighSelection?: number;\n\tlowValueXlowSelection?: number;\n\tlowValueXCloseSelection?: number;\n\n\tlowValueYAverageSelection?: number;\n\tlowValueYCountSelection?: number;\n\tlowValueYSumSelection?: number;\n\tlowValueYAbsoluteSumSelection?: number;\n\tlowValueYLowSelection?: number;\n\tlowValueYHighSelection?: number;\n\tlowValueYlowSelection?: number;\n\tlowValueYCloseSelection?: number;\n\n\thighValueXAverage?: number;\n\thighValueXCount?: number;\n\thighValueXSum?: number;\n\thighValueXAbsoluteSum?: number;\n\thighValueXLow?: number;\n\thighValueXHigh?: number;\n\thighValueXhigh?: number;\n\thighValueXClose?: number;\n\n\thighValueYAverage?: number;\n\thighValueYCount?: number;\n\thighValueYSum?: number;\n\thighValueYAbsoluteSum?: number;\n\thighValueYLow?: number;\n\thighValueYHigh?: number;\n\thighValueYhigh?: number;\n\thighValueYClose?: number;\n\n\thighValueXAverageSelection?: number;\n\thighValueXCountSelection?: number;\n\thighValueXSumSelection?: number;\n\thighValueXAbsoluteSumSelection?: number;\n\thighValueXLowSelection?: number;\n\thighValueXHighSelection?: number;\n\thighValueXhighSelection?: number;\n\thighValueXCloseSelection?: number;\n\n\thighValueYAverageSelection?: number;\n\thighValueYCountSelection?: number;\n\thighValueYSumSelection?: number;\n\thighValueYAbsoluteSumSelection?: number;\n\thighValueYLowSelection?: number;\n\thighValueYHighSelection?: number;\n\thighValueYhighSelection?: number;\n\thighValueYCloseSelection?: number;\n\n\toutOfSelection?: boolean;\n\n\tdoNotUpdateLegend?: boolean;\n}\n\n\n/**\n * A base class for all XY chart series.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/series/} for more info\n */\nexport abstract class XYSeries extends Series {\n\tpublic static className: string = \"XYSeries\";\n\tpublic static classNames: Array<string> = Series.classNames.concat([XYSeries.className]);\n\n\tdeclare public _settings: IXYSeriesSettings;\n\tdeclare public _privateSettings: IXYSeriesPrivate;\n\tdeclare public _dataItemSettings: IXYSeriesDataItem;\n\tdeclare public _axisRangeType: IXYSeriesAxisRange;\n\tdeclare public _events: IXYSeriesEvents;\n\n\tprotected _xField!: string;\n\tprotected _yField!: string;\n\tprotected _xOpenField!: string;\n\tprotected _yOpenField!: string;\n\n\tprotected _xLowField!: string;\n\tprotected _xHighField!: string;\n\tprotected _yLowField!: string;\n\tprotected _yHighField!: string;\n\n\tprotected _axesDirty: boolean = false;\n\tpublic _stackDirty: boolean = false;\n\n\tprotected _selectionProcessed = false;\n\n\tdeclare public chart: XYChart | undefined;\n\n\tpublic _dataSets: { [index: string]: Array<DataItem<IXYSeriesDataItem>> } = {};\n\n\tpublic _mainContainerMask: Graphics | undefined;\n\n\tprotected _x: number = 0;\n\tprotected _y: number = 0;\n\n\tprotected _xRenderer!: AxisRenderer;\n\tprotected _yRenderer!: AxisRenderer;\n\n\tpublic _bullets: { [index: string]: Sprite } = {};\n\n\t/**\n\t * A [[Container]] that us used to put series' elements in.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly mainContainer: Container = this.children.push(Container.new(this._root, {}));\n\n\t/**\n\t * A list of axis ranges that affect the series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\n\t */\n\tpublic readonly axisRanges: List<this[\"_axisRangeType\"]> = new List();\n\n\tprotected _skipped: boolean = false;\n\n\tprotected _couldStackTo: Array<XYSeries> = [];\n\n\tprotected _reallyStackedTo: { [index: number]: XYSeries } = {};\n\n\tpublic _stackedSeries: { [index: number]: XYSeries } = {};\n\n\tprotected _aLocationX0: number = 0;\n\tprotected _aLocationX1: number = 1;\n\tprotected _aLocationY0: number = 0;\n\tprotected _aLocationY1: number = 1;\n\n\tprotected _showBullets: boolean = true;\n\n\tprotected valueXFields = [\n\t\t\"valueX\",\n\t\t\"openValueX\",\n\t\t\"lowValueX\",\n\t\t\"highValueX\"\n\t];\n\n\tprotected valueYFields = [\n\t\t\"valueY\",\n\t\t\"openValueY\",\n\t\t\"lowValueY\",\n\t\t\"highValueY\"\n\t];\n\n\tpublic _valueXFields!: Array<string>;\n\tpublic _valueYFields!: Array<string>;\n\n\t// used for full min/max\n\tprotected _valueXShowFields!: Array<string>;\n\tprotected _valueYShowFields!: Array<string>;\n\n\t// used for selection (uses working)\n\tpublic __valueXShowFields!: Array<string>;\n\tpublic __valueYShowFields!: Array<string>;\n\n\tprotected _emptyDataItem = new DataItem(this, undefined, {});\n\n\tpublic _dataSetId?: string;\n\n\tprotected _tooltipFieldX?: string;\n\tprotected _tooltipFieldY?: string;\n\n\tpublic _posXDp?: IDisposer;\n\tpublic _posYDp?: IDisposer;\n\n\tprotected _afterNew() {\n\t\tthis.fields.push(\"categoryX\", \"categoryY\", \"openCategoryX\", \"openCategoryY\");\n\t\tthis.valueFields.push(\"valueX\", \"valueY\", \"openValueX\", \"openValueY\", \"lowValueX\", \"lowValueY\", \"highValueX\", \"highValueY\");\n\n\t\tthis._setRawDefault(\"vcx\", 1);\n\t\tthis._setRawDefault(\"vcy\", 1);\n\t\t// this can't go to themes, as data might be parsed before theme\n\t\tthis._setRawDefault(\"valueXShow\", \"valueXWorking\");\n\t\tthis._setRawDefault(\"valueYShow\", \"valueYWorking\");\n\n\t\tthis._setRawDefault(\"openValueXShow\", \"openValueXWorking\");\n\t\tthis._setRawDefault(\"openValueYShow\", \"openValueYWorking\");\n\n\t\tthis._setRawDefault(\"lowValueXShow\", \"lowValueXWorking\");\n\t\tthis._setRawDefault(\"lowValueYShow\", \"lowValueYWorking\");\n\n\t\tthis._setRawDefault(\"highValueXShow\", \"highValueXWorking\");\n\t\tthis._setRawDefault(\"highValueYShow\", \"highValueYWorking\");\n\n\t\tthis._setRawDefault(\"lowValueXGrouped\", \"low\");\n\t\tthis._setRawDefault(\"lowValueYGrouped\", \"low\");\n\n\t\tthis._setRawDefault(\"highValueXGrouped\", \"high\");\n\t\tthis._setRawDefault(\"highValueYGrouped\", \"high\");\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (xAxis) {\n\t\t\tthis._xRenderer = xAxis.get(\"renderer\");\n\t\t}\n\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tif (yAxis) {\n\t\t\tthis._yRenderer = yAxis.get(\"renderer\");\n\t\t}\n\n\t\tsuper._afterNew();\n\n\t\tthis.set(\"maskContent\", true);\n\n\t\tthis._disposers.push(this.axisRanges.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (axisRange) => {\n\t\t\t\t\tthis._removeAxisRange(axisRange);\n\t\t\t\t});\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tthis._processAxisRange(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tthis._processAxisRange(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tthis._processAxisRange(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removeAxisRange(change.oldValue);\n\t\t\t} else if (change.type === \"moveIndex\") {\n\t\t\t\tthis._processAxisRange(change.value);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IStreamEvent type\");\n\t\t\t}\n\t\t}))\n\n\t\tthis.states.create(\"hidden\", <any>{ opacity: 1, visible: false });\n\n\t\tthis.onPrivate(\"startIndex\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis.updateLegendValue();\n\t\t\t})\n\t\t})\n\n\t\tthis.onPrivate(\"endIndex\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis.updateLegendValue();\n\t\t\t})\n\t\t})\n\n\t\tthis._makeFieldNames();\n\t}\n\n\tprotected _processAxisRange(axisRange: this[\"_axisRangeType\"]) {\n\t\tconst container = Container.new(this._root, {});\n\t\taxisRange.container = container;\n\t\tthis.children.push(container);\n\n\t\taxisRange.series = this;\n\n\t\tconst axisDataItem = axisRange.axisDataItem;\n\t\taxisDataItem.setRaw(\"isRange\", true);\n\n\t\tconst axis = <Axis<AxisRenderer>>axisDataItem.component;\n\t\tif (axis) {\n\t\t\taxis._processAxisRange(axisDataItem, [\"range\", \"series\"]);\n\n\t\t\tconst bullet = axisDataItem.get(\"bullet\");\n\t\t\tif (bullet) {\n\t\t\t\tconst sprite = bullet.get(\"sprite\");\n\t\t\t\tif (sprite) {\n\t\t\t\t\tsprite.setPrivate(\"visible\", false);\n\t\t\t\t}\n\t\t\t}\n\t\t\tconst axisFill = axisDataItem.get(\"axisFill\");\n\t\t\tif (axisFill) {\n\t\t\t\tcontainer.set(\"mask\", axisFill);\n\t\t\t}\n\t\t\taxis._seriesAxisRanges.push(axisDataItem);\n\t\t}\n\t}\n\n\tprotected _onDataClear(): void {\n\t\tsuper._onDataClear();\n\t\t$object.each(this._dataSets, (_key, dataItems) => {\n\t\t\t$array.each(dataItems, (dataItem) => {\n\t\t\t\tdataItem.dispose();\n\t\t\t});\n\t\t\tdataItems.length = 0;\n\t\t});\n\t}\n\n\tprotected _removeAxisRange(axisRange: this[\"_axisRangeType\"]) {\n\t\tconst axisDataItem = axisRange.axisDataItem;\n\t\tconst axis = <Axis<AxisRenderer>>axisDataItem.component;\n\t\taxisDataItem.dispose();\n\n\t\t$array.remove(axis._seriesAxisRanges, axisDataItem);\n\n\t\tconst container = axisRange.container;\n\t\tif (container) {\n\t\t\tcontainer.dispose();\n\t\t}\n\t}\n\n\tprotected _updateFields() {\n\t\tsuper._updateFields();\n\n\t\tthis._valueXFields = [];\n\t\tthis._valueYFields = [];\n\t\tthis._valueXShowFields = [];\n\t\tthis._valueYShowFields = [];\n\n\t\tthis.__valueXShowFields = [];\n\t\tthis.__valueYShowFields = [];\n\n\t\tif (this.valueXFields) {\n\t\t\t$array.each(this.valueXFields as Array<keyof this[\"_settings\"]>, (key) => {\n\t\t\t\tconst field = this.get(<any>(key + \"Field\"));\n\t\t\t\tif (field) {\n\t\t\t\t\tthis._valueXFields.push(<any>key);\n\t\t\t\t\tlet field = this.get(<any>(key + \"Show\"));\n\t\t\t\t\tthis.__valueXShowFields.push(field);\n\n\t\t\t\t\tif (field.indexOf(\"Working\") != -1) {\n\t\t\t\t\t\tthis._valueXShowFields.push(field.split(\"Working\")[0]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._valueXShowFields.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tif (this.valueYFields) {\n\t\t\t$array.each(this.valueYFields as Array<keyof this[\"_settings\"]>, (key) => {\n\t\t\t\tconst field = this.get(<any>(key + \"Field\"));\n\n\t\t\t\tif (field) {\n\t\t\t\t\tthis._valueYFields.push(<any>key);\n\t\t\t\t\tlet field = this.get(<any>(key + \"Show\"));\n\t\t\t\t\tthis.__valueYShowFields.push(field);\n\n\t\t\t\t\tif (field.indexOf(\"Working\") != -1) {\n\t\t\t\t\t\tthis._valueYShowFields.push(field.split(\"Working\")[0]);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tthis._valueYShowFields.push(field);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\n\t\tthis._bullets = {};\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\tchart.series.removeValue(this);\n\t\t}\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (xAxis) {\n\t\t\t$array.removeFirst(xAxis.series, this);\n\t\t}\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tif (yAxis) {\n\t\t\t$array.removeFirst(yAxis.series, this);\n\t\t}\n\t}\n\n\t// TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\n\tprotected _min<Key extends keyof this[\"_privateSettings\"]>(key: Key, value: number | undefined) {\n\t\tlet newValue = min(this.getPrivate(key) as any, value);\n\t\tthis.setPrivate(key, newValue as any);\n\t}\n\n\t// TODO use SelectKeys<this[\"_privateSettings\"], number | undefined>\n\tprotected _max<Key extends keyof this[\"_privateSettings\"]>(key: Key, value: number | undefined) {\n\t\tlet newValue = max(this.getPrivate(key) as any, value);\n\t\tthis.setPrivate(key, newValue as any);\n\t}\n\n\tprotected _shouldMakeBullet(dataItem: DataItem<this[\"_dataItemSettings\"]>): boolean {\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\n\t\tif (!xAxis.inited || !yAxis.inited) {\n\t\t\treturn false\n\t\t}\n\n\t\tconst minBulletDistance = this.get(\"minBulletDistance\", 0);\n\t\tif (minBulletDistance > 0) {\n\t\t\tlet startIndex = this.startIndex();\n\t\t\tlet endIndex = this.endIndex();\n\n\t\t\tlet count = endIndex - startIndex;\n\n\t\t\tif (xAxis == baseAxis) {\n\t\t\t\tif (this._xRenderer.axisLength() / count < minBulletDistance / 5) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse if (yAxis == baseAxis) {\n\t\t\t\tif (this._yRenderer.axisLength() / count < minBulletDistance / 5) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (dataItem.get(this._xField as any) != null && dataItem.get(this._yField as any) != null) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected _makeFieldNames() {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst xName = xAxis.getPrivate(\"name\")!;\n\t\tconst xCapName = $utils.capitalizeFirst(xName);\n\n\t\tconst yName = yAxis.getPrivate(\"name\")!;\n\t\tconst yCapName = $utils.capitalizeFirst(yName);\n\n\t\tconst xLetter = xAxis.get(\"renderer\").getPrivate(\"letter\")!\n\t\tconst yLetter = yAxis.get(\"renderer\").getPrivate(\"letter\")!\n\n\t\tconst open = \"open\";\n\t\tconst low = \"low\";\n\t\tconst high = \"high\";\n\t\tconst show = \"Show\";\n\n\t\tif (xAxis.className === \"ValueAxis\") {\n\t\t\tthis._xField = this.get(<any>(xName + xLetter! + show));\n\t\t\tthis._xOpenField = this.get(<any>(open + xCapName + xLetter! + show));\n\t\t\tthis._xLowField = this.get(<any>(low + xCapName + xLetter! + show));\n\t\t\tthis._xHighField = this.get(<any>(high + xCapName + xLetter! + show));\n\t\t}\n\t\telse {\n\t\t\tthis._xField = <any>(xName + xLetter!);\n\t\t\tthis._xOpenField = <any>(open + xCapName + xLetter!);\n\t\t\tthis._xLowField = <any>(low + xCapName + xLetter!);\n\t\t\tthis._xHighField = <any>(high + xCapName + xLetter!);\n\t\t}\n\n\t\tif (yAxis.className === \"ValueAxis\") {\n\t\t\tthis._yField = this.get(<any>(yName + yLetter! + show));\n\t\t\tthis._yOpenField = this.get(<any>(open + yCapName + yLetter! + show));\n\t\t\tthis._yLowField = this.get(<any>(low + yCapName + yLetter! + show));\n\t\t\tthis._yHighField = this.get(<any>(high + yCapName + yLetter! + show));\n\t\t}\n\t\telse {\n\t\t\tthis._yField = <any>(yName + yLetter!);\n\t\t\tthis._yOpenField = <any>(open + yCapName + yLetter!);\n\t\t\tthis._yLowField = <any>(low + yCapName + yLetter!);\n\t\t\tthis._yHighField = <any>(high + yCapName + yLetter!);\n\t\t}\n\t}\n\n\tprotected _fixVC() {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\tconst hiddenState = this.states.lookup(\"hidden\");\n\t\tconst sequencedInterpolation = this.get(\"sequencedInterpolation\");\n\n\t\tif (hiddenState) {\n\t\t\tlet value = 0;\n\t\t\tif (sequencedInterpolation) {\n\t\t\t\tvalue = 0.999999999999; // makes animate, good for stacked\n\t\t\t}\n\n\t\t\tif (xAxis === baseAxis) {\n\t\t\t\thiddenState.set(\"vcy\", value);\n\t\t\t}\n\t\t\telse if (yAxis === baseAxis) {\n\t\t\t\thiddenState.set(\"vcx\", value);\n\t\t\t}\n\t\t\telse {\n\t\t\t\thiddenState.set(\"vcy\", value);\n\t\t\t\thiddenState.set(\"vcx\", value);\n\t\t\t}\n\t\t}\n\t}\n\n\n\tprotected _handleMaskBullets() {\n\t\tif (this.isDirty(\"maskBullets\")) {\n\t\t\tthis.bulletsContainer.set(\"maskContent\", this.get(\"maskBullets\"));\n\t\t}\n\t}\n\n\tpublic _fixPosition() {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\tthis.set(\"x\", xAxis.x() - $utils.relativeToValue(xAxis.get(\"centerX\", 0), xAxis.width()) - xAxis.parent!.get(\"paddingLeft\", 0));\n\t\tthis.set(\"y\", yAxis.y() - $utils.relativeToValue(yAxis.get(\"centerY\", 0), yAxis.height()) - yAxis.parent!.get(\"paddingTop\", 0));\n\n\t\tthis.bulletsContainer.set(\"y\", this.y());\n\t\tthis.bulletsContainer.set(\"x\", this.x());\n\t}\n\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tthis._xRenderer = this.get(\"xAxis\").get(\"renderer\");\n\t\tthis._yRenderer = this.get(\"yAxis\").get(\"renderer\");\n\n\t\tthis._bullets = {};\n\n\t\tif (this.isDirty(\"valueYShow\") || this.isDirty(\"valueXShow\") || this.isDirty(\"openValueYShow\") || this.isDirty(\"openValueXShow\") || this.isDirty(\"lowValueYShow\") || this.isDirty(\"lowValueXShow\") || this.isDirty(\"highValueYShow\") || this.isDirty(\"highValueXShow\")) {\n\t\t\tthis._updateFields();\n\t\t\tthis._makeFieldNames();\n\t\t\tthis._valuesDirty = true;\n\t\t}\n\n\t\tif (this.isDirty(\"xAxis\") || this.isDirty(\"yAxis\")) {\n\t\t\tthis._valuesDirty = true;\n\t\t}\n\n\t\tthis.set(\"width\", this.get(\"xAxis\").width());\n\t\tthis.set(\"height\", this.get(\"yAxis\").height());\n\n\t\tthis._handleMaskBullets();\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\n\t\tconst tooltipPositionX = this.get(\"tooltipPositionX\");\n\t\tlet tooltipFieldX: string;\n\n\t\tswitch (tooltipPositionX) {\n\t\t\tcase \"open\":\n\t\t\t\ttooltipFieldX = this._xOpenField;\n\t\t\t\tbreak;\n\t\t\tcase \"low\":\n\t\t\t\ttooltipFieldX = this._xLowField;\n\t\t\t\tbreak;\n\t\t\tcase \"high\":\n\t\t\t\ttooltipFieldX = this._xHighField;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttooltipFieldX = this._xField;\n\t\t}\n\t\tthis._tooltipFieldX = tooltipFieldX;\n\n\t\tconst tooltipPositionY = this.get(\"tooltipPositionY\");\n\t\tlet tooltipFieldY: string;\n\t\tswitch (tooltipPositionY) {\n\t\t\tcase \"open\":\n\t\t\t\ttooltipFieldY = this._yOpenField;\n\t\t\t\tbreak;\n\t\t\tcase \"low\":\n\t\t\t\ttooltipFieldY = this._yLowField;\n\t\t\t\tbreak;\n\t\t\tcase \"high\":\n\t\t\t\ttooltipFieldY = this._yHighField;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\ttooltipFieldY = this._yField;\n\t\t}\n\t\tthis._tooltipFieldY = tooltipFieldY;\n\n\t\tif (this.isDirty(\"baseAxis\")) {\n\t\t\tthis._fixVC();\n\t\t}\n\n\n\t\tthis._fixPosition();\n\n\t\tconst stacked = this.get(\"stacked\");\n\n\t\tif (this.isDirty(\"stacked\")) {\n\t\t\tif (stacked) {\n\t\t\t\tif (this._valuesDirty && !this._dataProcessed) {\n\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._stack();\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis._unstack();\n\t\t\t}\n\t\t}\n\n\t\tif (this._valuesDirty && !this._dataProcessed) {\n\t\t\tthis._dataProcessed = true;\n\n\t\t\tif (stacked) {\n\t\t\t\tthis._stack();\n\t\t\t}\n\n\t\t\tlet minX: any = undefined;\n\t\t\tlet maxX: any = undefined;\n\t\t\tlet minY: any = undefined;\n\t\t\tlet maxY: any = undefined;\n\t\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\t\t$array.each(this._valueXShowFields, (key) => {\n\t\t\t\t\tlet value = dataItem.get(<any>key);\n\t\t\t\t\tif (value != null) {\n\t\t\t\t\t\tif (stacked) {\n\t\t\t\t\t\t\tvalue += this.getStackedXValue(dataItem, key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminX = min(minX, value);\n\t\t\t\t\t\tmaxX = max(maxX, value);\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\t$array.each(this._valueYShowFields, (key) => {\n\t\t\t\t\tlet value = dataItem.get(<any>key);\n\t\t\t\t\tif (value != null) {\n\t\t\t\t\t\tif (stacked) {\n\t\t\t\t\t\t\tvalue += this.getStackedYValue(dataItem, key);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tminY = min(minY, value);\n\t\t\t\t\t\tmaxY = max(maxY, value);\n\t\t\t\t\t}\n\t\t\t\t})\n\n\t\t\t\txAxis.processSeriesDataItem(dataItem, this._valueXFields);\n\t\t\t\tyAxis.processSeriesDataItem(dataItem, this._valueYFields);\n\t\t\t})\n\t\t\tthis._min(\"minX\", minX);\n\t\t\tthis._max(\"maxX\", maxX);\n\t\t\tthis._min(\"minY\", minY);\n\t\t\tthis._max(\"maxY\", maxY);\n\n\t\t\txAxis._seriesValuesDirty = true;\n\t\t\tyAxis._seriesValuesDirty = true;\n\n\t\t\tif (!this.get(\"ignoreMinMax\")) {\n\t\t\t\tif (this.isPrivateDirty(\"minX\") || this.isPrivateDirty(\"maxX\")) {\n\t\t\t\t\txAxis.markDirtyExtremes();\n\t\t\t\t}\n\t\t\t\tif (this.isPrivateDirty(\"minY\") || this.isPrivateDirty(\"maxY\")) {\n\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tthis._markStakedDirtyStack();\n\n\t\t\t//this.updateLegendMarker(undefined); // causes legend marker to change color instantly when on\n\t\t\tif (!this.get(\"tooltipDataItem\")) {\n\t\t\t\tthis.updateLegendValue(undefined);\n\t\t\t}\n\t\t}\n\n\t\tif (this.isDirty(\"vcx\") || this.isDirty(\"vcy\")) {\n\t\t\tthis._markStakedDirtyStack();\n\t\t}\n\n\t\tif (!this._dataGrouped) {\n\t\t\txAxis._groupSeriesData(this);\n\t\t\tyAxis._groupSeriesData(this);\n\t\t\tthis._dataGrouped = true;\n\t\t}\n\n\t\tif (this._valuesDirty || this.isPrivateDirty(\"startIndex\") || this.isPrivateDirty(\"adjustedStartIndex\") || this.isPrivateDirty(\"endIndex\") || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this._stackDirty || this._sizeDirty || this.isDirty(\"minBulletDistance\")) {\n\t\t\tlet startIndex = this.startIndex();\n\t\t\tlet endIndex = this.endIndex();\n\t\t\tlet minBulletDistance = this.get(\"minBulletDistance\", 0);\n\t\t\tif (minBulletDistance > 0 && baseAxis) {\n\t\t\t\tif (baseAxis.get(\"renderer\").axisLength() / (endIndex - startIndex) > minBulletDistance) {\n\t\t\t\t\tthis._showBullets = true;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthis._showBullets = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ((this._psi != startIndex || this._pei != endIndex || this.isDirty(\"vcx\") || this.isDirty(\"vcy\") || this.isPrivateDirty(\"adjustedStartIndex\") || this._stackDirty || this._valuesDirty) && !this._selectionProcessed) {\n\t\t\t\tthis._selectionProcessed = true;\n\n\t\t\t\tconst vcx = this.get(\"vcx\", 1);\n\t\t\t\tconst vcy = this.get(\"vcy\", 1);\n\t\t\t\tconst stacked = this.get(\"stacked\", false);\n\t\t\t\tconst outOfSelection = this.getPrivate(\"outOfSelection\");\n\n\t\t\t\tif (baseAxis === xAxis || !baseAxis) {\n\t\t\t\t\tyAxis._calculateTotals();\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMinY\", undefined);\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMaxY\", undefined);\n\t\t\t\t\tif (!outOfSelection) {\n\t\t\t\t\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\t\t\t\t\tthis.processYSelectionDataItem(this.dataItems[i], vcy, stacked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (baseAxis === yAxis || !baseAxis) {\n\t\t\t\t\txAxis._calculateTotals();\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMinX\", undefined);\n\t\t\t\t\tthis.setPrivateRaw(\"selectionMaxX\", undefined);\n\t\t\t\t\tif (!outOfSelection) {\n\t\t\t\t\t\tfor (let i = startIndex; i < endIndex; i++) {\n\t\t\t\t\t\t\tthis.processXSelectionDataItem(this.dataItems[i], vcx, stacked);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\txAxis.markDirtySelectionExtremes();\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (baseAxis === xAxis || !baseAxis) {\n\t\t\t\t\tif (this.get(\"valueYShow\") !== \"valueYWorking\" || this.get(\"useSelectionExtremes\")) {\n\t\t\t\t\t\tconst selectionMinY = this.getPrivate(\"selectionMinY\");\n\t\t\t\t\t\tif (selectionMinY != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"minY\", selectionMinY);\n\t\t\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst selectionMaxY = this.getPrivate(\"selectionMaxY\");\n\t\t\t\t\t\tif (selectionMaxY != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"maxY\", selectionMaxY);\n\t\t\t\t\t\t\tyAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (baseAxis === yAxis || !baseAxis) {\n\t\t\t\t\tif (this.get(\"valueXShow\") !== \"valueXWorking\" || this.get(\"useSelectionExtremes\")) {\n\t\t\t\t\t\tconst selectionMinX = this.getPrivate(\"selectionMinX\");\n\t\t\t\t\t\tif (selectionMinX != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"minX\", selectionMinX);\n\t\t\t\t\t\t\txAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst selectionMaxX = this.getPrivate(\"selectionMaxX\")\n\t\t\t\t\t\tif (selectionMaxX != null) {\n\t\t\t\t\t\t\tthis.setPrivateRaw(\"maxX\", selectionMaxX);\n\t\t\t\t\t\t\txAxis.markDirtyExtremes();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (this.isPrivateDirty(\"selectionMinX\") || this.isPrivateDirty(\"selectionMaxX\")) {\n\t\t\t\t\txAxis.markDirtySelectionExtremes();\n\t\t\t\t}\n\n\t\t\t\tif (this.isPrivateDirty(\"selectionMinY\") || this.isPrivateDirty(\"selectionMaxY\")) {\n\t\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t\t}\n\t\t\t\t// this.updateLegendValue(undefined); flickers while panning\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _postUpdateData(): void {\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\txAxis._seriesValuesDirty = true;\n\t\tyAxis._seriesValuesDirty = true;\t\t\n\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tdataItem.open = undefined;\n\t\t\tdataItem.close = undefined;\n\n\t\t\txAxis.processSeriesDataItem(dataItem, this._valueXFields);\n\t\t\tyAxis.processSeriesDataItem(dataItem, this._valueYFields);\n\t\t})\n\t}\n\n\n\tprotected _makeRangeMask() {\n\t\tif (this.axisRanges.length > 0) {\n\t\t\tlet mainContainerMask = this._mainContainerMask;\n\t\t\tif (mainContainerMask == null) {\n\t\t\t\tmainContainerMask = this.children.push(Graphics.new(this._root, {}));\n\t\t\t\tthis._mainContainerMask = mainContainerMask;\n\n\t\t\t\tmainContainerMask.set(\"draw\", (display, target) => {\n\t\t\t\t\tconst parent = this.parent;\n\t\t\t\t\tif (parent) {\n\t\t\t\t\t\tconst w = this._root.container.width();\n\t\t\t\t\t\tconst h = this._root.container.height();\n\t\t\t\t\t\tdisplay.moveTo(-w, -h);\n\t\t\t\t\t\tdisplay.lineTo(-w, h * 2);\n\t\t\t\t\t\tdisplay.lineTo(w * 2, h * 2);\n\t\t\t\t\t\tdisplay.lineTo(w * 2, -h);\n\t\t\t\t\t\tdisplay.lineTo(-w, -h);\n\n\n\t\t\t\t\t\tthis.axisRanges.each((axisRange) => {\n\t\t\t\t\t\t\tconst fill = axisRange.axisDataItem.get(\"axisFill\");\n\n\t\t\t\t\t\t\tif (parent) {\n\t\t\t\t\t\t\t\tif (fill) {\n\t\t\t\t\t\t\t\t\tlet draw = fill.get(\"draw\");\n\t\t\t\t\t\t\t\t\tif (draw) {\n\t\t\t\t\t\t\t\t\t\tdraw(display, target);\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t}\n\t\t\t\t\tthis.mainContainer._display.mask = mainContainerMask!._display;\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tmainContainerMask.markDirty();\n\t\t\tmainContainerMask._markDirtyKey(\"fill\");\n\t\t}\n\t\telse {\n\t\t\tthis.mainContainer._display.mask = null;\n\t\t}\n\t}\n\n\n\tpublic _updateChildren() {\n\t\tsuper._updateChildren();\n\n\t\t// save for performance\n\t\tthis._x = this.x();\n\t\tthis._y = this.y();\n\t\tthis._makeRangeMask();\n\t}\n\n\tprotected _stack() {\n\t\tconst chart = this.chart;\n\t\tif (chart) {\n\t\t\tconst seriesIndex = chart.series.indexOf(this);\n\n\t\t\tthis._couldStackTo = [];\n\n\t\t\tif (seriesIndex > 0) {\n\t\t\t\tlet series: XYSeries;\n\n\t\t\t\tfor (let i = seriesIndex - 1; i >= 0; i--) {\n\t\t\t\t\tseries = chart.series.getIndex(i)!;\n\t\t\t\t\tif (series.get(\"xAxis\") === this.get(\"xAxis\") && series.get(\"yAxis\") === this.get(\"yAxis\") && series.className === this.className) {\n\t\t\t\t\t\tthis._couldStackTo.push(series);\n\t\t\t\t\t\tif (!series.get(\"stacked\")) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tthis._stackDataItems();\n\t\t}\n\t}\n\n\tpublic _unstack() {\n\n\t\t$object.each(this._reallyStackedTo, (_key, value) => {\n\t\t\tdelete (value._stackedSeries[this.uid]);\n\t\t})\n\n\t\tthis._reallyStackedTo = {};\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tdataItem.setRaw(\"stackToItemY\", undefined);\n\t\t\tdataItem.setRaw(\"stackToItemX\", undefined);\n\t\t})\n\t}\n\n\tpublic _handleRemoved(): void {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (xAxis) {\n\t\t\txAxis._handleSeriesRemoved();\n\t\t}\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tif (yAxis) {\n\t\t\tyAxis._handleSeriesRemoved();\n\t\t}\n\t}\n\n\tprotected _stackDataItems() {\n\t\t// this works only with the same number of data @todo: search by date/category?\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\tlet field: \"valueX\" | \"valueY\";\n\t\tlet stackToItemKey: \"stackToItemX\" | \"stackToItemY\";\n\t\tif (baseAxis === xAxis) {\n\t\t\tfield = \"valueY\";\n\t\t\tstackToItemKey = \"stackToItemY\";\n\t\t}\n\t\telse if (baseAxis === yAxis) {\n\t\t\tfield = \"valueX\";\n\t\t\tstackToItemKey = \"stackToItemX\";\n\t\t}\n\n\t\tlet len = this._couldStackTo.length;\n\t\tlet index = 0;\n\t\tconst stackToNegative = this.get(\"stackToNegative\");\n\n\t\tthis._reallyStackedTo = {};\n\n\t\t$array.each(this.dataItems, (dataItem) => {\n\t\t\tfor (let s = 0; s < len; s++) {\n\t\t\t\tlet stackToSeries = this._couldStackTo[s];\n\t\t\t\tlet stackToItem = stackToSeries.dataItems[index];\n\t\t\t\tlet value = dataItem.get(field);\n\n\t\t\t\tif (stackToItem) {\n\t\t\t\t\tlet stackValue = stackToItem.get(field);\n\t\t\t\t\tif (stackToNegative) {\n\t\t\t\t\t\tif ($type.isNumber(value)) {\n\t\t\t\t\t\t\tif ($type.isNumber(stackValue)) {\n\n\t\t\t\t\t\t\t\tif (s == len - 1) {\n\t\t\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, undefined);\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\tif (value >= 0 && stackValue >= 0) {\n\t\t\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, stackToItem);\n\t\t\t\t\t\t\t\t\tthis._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n\t\t\t\t\t\t\t\t\tstackToSeries._stackedSeries[this.uid] = this;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tif (value < 0 && stackValue < 0) {\n\t\t\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, stackToItem);\n\t\t\t\t\t\t\t\t\tthis._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n\t\t\t\t\t\t\t\t\tstackToSeries._stackedSeries[this.uid] = this;\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif ($type.isNumber(value) && $type.isNumber(stackValue)) {\n\t\t\t\t\t\t\tdataItem.setRaw(stackToItemKey, stackToItem);\n\t\t\t\t\t\t\tthis._reallyStackedTo[stackToSeries.uid] = stackToSeries;\n\t\t\t\t\t\t\tstackToSeries._stackedSeries[this.uid] = this;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tindex++;\n\t\t})\n\t}\n\n\tprotected processXSelectionDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, vcx: number, stacked: boolean) {\n\t\t$array.each(this.__valueXShowFields, (key) => {\n\t\t\tlet value = dataItem.get(<any>key);\n\t\t\tif (value != null) {\n\t\t\t\tif (stacked) {\n\t\t\t\t\tvalue += this.getStackedXValueWorking(dataItem, key);\n\t\t\t\t}\n\n\t\t\t\tthis._min(\"selectionMinX\", value);\n\t\t\t\tthis._max(\"selectionMaxX\", value * vcx);\n\t\t\t}\n\t\t})\n\t}\n\n\tprotected processYSelectionDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, vcy: number, stacked: boolean) {\n\t\t$array.each(this.__valueYShowFields, (key) => {\n\n\t\t\tlet value = dataItem.get(<any>key);\n\t\t\tif (value != null) {\n\t\t\t\tif (stacked) {\n\t\t\t\t\tvalue += this.getStackedYValueWorking(dataItem, key);\n\t\t\t\t}\n\n\t\t\t\tthis._min(\"selectionMinY\", value);\n\t\t\t\tthis._max(\"selectionMaxY\", value * vcy);\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedYValueWorking(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemY\");\n\n\t\tif (stackToItem) {\n\t\t\tconst stackedToSeries = stackToItem.component as XYSeries;\n\n\t\t\treturn stackToItem.get(key as any, 0) * stackedToSeries.get(\"vcy\", 1) + this.getStackedYValueWorking(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedXValueWorking(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemX\");\n\n\t\tif (stackToItem) {\n\t\t\tconst stackedToSeries = stackToItem.component as XYSeries;\n\t\t\treturn stackToItem.get(key as any, 0) * stackedToSeries.get(\"vcx\", 1) + this.getStackedXValueWorking(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedYValue(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemY\");\n\n\t\tif (stackToItem) {\n\t\t\treturn stackToItem.get(key as any, 0) + this.getStackedYValue(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getStackedXValue(dataItem: DataItem<IXYSeriesDataItem>, key: string): number {\n\t\tconst stackToItem = dataItem.get(\"stackToItemX\");\n\n\t\tif (stackToItem) {\n\t\t\treturn stackToItem.get(key as any, 0) + this.getStackedXValue(stackToItem, key);\n\t\t}\n\t\treturn 0;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic createLegendMarker(_dataItem?: DataItem<this[\"_dataItemSettings\"]>) {\n\t\tthis.updateLegendMarker();\n\t}\n\n\tpublic _markDirtyAxes() {\n\t\tthis._axesDirty = true;\n\t\tthis.markDirty();\n\t}\n\n\tpublic _markDataSetDirty() {\n\t\tthis._afterDataChange();\n\t\tthis._valuesDirty = true;\n\t\tthis._dataProcessed = false;\n\t\tthis._aggregatesCalculated = false;\n\t\tthis.markDirty();\n\t}\n\n\tpublic _clearDirty() {\n\t\tsuper._clearDirty();\n\t\tthis._axesDirty = false;\n\t\tthis._selectionProcessed = false;\n\t\tthis._stackDirty = false;\n\t\tthis._dataProcessed = false;\n\t}\n\n\tpublic _positionBullet(bullet: Bullet) {\n\t\tlet sprite = bullet.get(\"sprite\");\n\t\tif (sprite) {\n\t\t\tlet dataItem = sprite.dataItem as DataItem<this[\"_dataItemSettings\"]>;\n\n\t\t\tlet locationX = bullet.get(\"locationX\", dataItem.get(\"locationX\", 0.5));\n\t\t\tlet locationY = bullet.get(\"locationY\", dataItem.get(\"locationY\", 0.5));\n\n\t\t\tlet xAxis = this.get(\"xAxis\");\n\t\t\tlet yAxis = this.get(\"yAxis\");\n\n\t\t\tlet exactLocationX = this.get(\"exactLocationX\", false);\n\t\t\tlet exactLocationY = this.get(\"exactLocationY\", false);\n\n\t\t\tlet positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1), exactLocationX);\n\t\t\tlet positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1), exactLocationY);\n\n\t\t\tlet point = this.getPoint(positionX, positionY);\n\n\t\t\tlet left = dataItem.get(\"left\", point.x);\n\t\t\tlet right = dataItem.get(\"right\", point.x);\n\t\t\tlet top = dataItem.get(\"top\", point.y);\n\t\t\tlet bottom = dataItem.get(\"bottom\", point.y);\n\n\t\t\tlet x = 0;\n\t\t\tlet y = 0;\n\n\t\t\tlet w = right - left;\n\t\t\tlet h = bottom - top;\n\n\t\t\tif (this._shouldShowBullet(positionX, positionY)) {\n\t\t\t\tsprite.setPrivate(\"visible\", !bullet.getPrivate(\"hidden\"));\n\n\t\t\t\tlet field = bullet.get(\"field\");\n\n\t\t\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\t\t\tconst xAxis = this.get(\"xAxis\");\n\t\t\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\t\t\tif (field != undefined) {\n\t\t\t\t\tlet realField: string | undefined;\n\n\t\t\t\t\tif (baseAxis == xAxis) {\n\t\t\t\t\t\tif (field == \"value\") {\n\t\t\t\t\t\t\trealField = this._yField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"open\") {\n\t\t\t\t\t\t\trealField = this._yOpenField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"high\") {\n\t\t\t\t\t\t\trealField = this._yHighField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"low\") {\n\t\t\t\t\t\t\trealField = this._yLowField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (realField) {\n\t\t\t\t\t\t\tpositionY = yAxis.getDataItemPositionY(dataItem, realField as any, 0, this.get(\"vcy\", 1), exactLocationY)\n\n\t\t\t\t\t\t\tpoint = this._yRenderer.positionToPoint(positionY);\n\n\t\t\t\t\t\t\ty = point.y;\n\t\t\t\t\t\t\tx = left + w * locationX;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tif (field == \"value\") {\n\t\t\t\t\t\t\trealField = this._xField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"open\") {\n\t\t\t\t\t\t\trealField = this._xOpenField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"high\") {\n\t\t\t\t\t\t\trealField = this._xHighField;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (field == \"low\") {\n\t\t\t\t\t\t\trealField = this._xLowField;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (realField) {\n\t\t\t\t\t\t\tpositionX = xAxis.getDataItemPositionX(dataItem, realField as any, 0, this.get(\"vcx\", 1), exactLocationX);\n\n\t\t\t\t\t\t\tpoint = this._xRenderer.positionToPoint(positionX);\n\n\t\t\t\t\t\t\tx = point.x;\n\t\t\t\t\t\t\ty = bottom - h * locationY;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tx = left + w * locationX;\n\t\t\t\t\ty = bottom - h * locationY;\n\t\t\t\t}\n\n\t\t\t\tconst stacked = bullet.get(\"stacked\");\n\t\t\t\tif (stacked) {\n\t\t\t\t\tconst chart = this.chart;\n\t\t\t\t\tif (baseAxis == xAxis) {\n\t\t\t\t\t\tlet previousBullet = this._bullets[positionX + \"_\" + positionY];\n\t\t\t\t\t\tif (previousBullet) {\n\t\t\t\t\t\t\tlet previousBounds = previousBullet.bounds();\n\t\t\t\t\t\t\tlet bounds = sprite.localBounds();\n\t\t\t\t\t\t\tlet yo = y;\n\t\t\t\t\t\t\ty = previousBounds.top;\n\n\t\t\t\t\t\t\tif (stacked == \"down\") {\n\t\t\t\t\t\t\t\ty = previousBounds.bottom - bounds.top;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (stacked == \"auto\") {\n\t\t\t\t\t\t\t\tif (chart) {\n\t\t\t\t\t\t\t\t\tif (yo < chart.plotContainer.height() / 2) {\n\t\t\t\t\t\t\t\t\t\ty = previousBounds.bottom - bounds.top;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\ty += bounds.bottom;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\ty += bounds.bottom;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._bullets[positionX + \"_\" + positionY] = sprite;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tlet previousBullet = this._bullets[positionX + \"_\" + positionY];\n\t\t\t\t\t\tif (previousBullet) {\n\t\t\t\t\t\t\tlet previousBounds = previousBullet.bounds();\n\t\t\t\t\t\t\tlet bounds = sprite.localBounds();\n\t\t\t\t\t\t\tlet xo = x;\n\t\t\t\t\t\t\tx = previousBounds.right;\n\n\t\t\t\t\t\t\tif (stacked == \"down\") {\n\t\t\t\t\t\t\t\tx = previousBounds.left - bounds.right;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse if (stacked == \"auto\") {\n\t\t\t\t\t\t\t\tif (chart) {\n\t\t\t\t\t\t\t\t\tif (xo < chart.plotContainer.width() / 2) {\n\t\t\t\t\t\t\t\t\t\tx = previousBounds.left - bounds.right;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\tx -= bounds.left;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tx -= bounds.left;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis._bullets[positionX + \"_\" + positionY] = sprite;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (sprite.isType(\"Label\")) {\n\t\t\t\t\tsprite.setPrivate(\"maxWidth\", Math.abs(w));\n\t\t\t\t\tsprite.setPrivate(\"maxHeight\", Math.abs(h));\n\t\t\t\t}\n\n\t\t\t\tsprite.setAll({ x, y });\n\t\t\t}\n\t\t\telse {\n\t\t\t\tsprite.setPrivate(\"visible\", false);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _shouldShowBullet(_positionX: number, _positionY: number): boolean {\n\t\treturn this._showBullets;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic setDataSet(id: string) {\n\t\tif (this._dataSets[id]) {\n\t\t\tthis._handleDataSetChange();\n\t\t\tthis._dataItems = this._dataSets[id];\n\t\t\tthis._markDataSetDirty();\n\t\t\tthis._dataSetId = id;\n\n\t\t\tconst type = \"datasetchanged\";\n\t\t\tif (this.events.isEnabled(type)) {\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this, id: id });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic resetGrouping() {\n\t\t$object.each(this._dataSets, (_key, dataSet) => {\n\t\t\tif (dataSet != this._mainDataItems) {\n\t\t\t\t$array.each(dataSet, (dataItem) => {\n\t\t\t\t\tdataItem.dispose();\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\t\tthis._dataSets = {};\n\t\tthis._dataItems = this.mainDataItems;\n\t}\n\n\tprotected _handleDataSetChange() {\n\t\t$array.each(this._dataItems, (dataItem) => {\n\t\t\tlet bullets = dataItem.bullets;\n\t\t\tif (bullets) {\n\t\t\t\t$array.each(bullets, (bullet) => {\n\t\t\t\t\tif (bullet) {\n\t\t\t\t\t\tlet sprite = bullet.get(\"sprite\");\n\t\t\t\t\t\tif (sprite) {\n\t\t\t\t\t\t\tsprite.setPrivate(\"visible\", false);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\t\t})\n\n\t\tthis._selectionProcessed = false; // for totals to be calculated\n\t}\n\n\t/**\n\t * Shows hidden series.\n\t *\n\t * @param duration Duration of animation in milliseconds\n\t * @return Animation promise\n\t */\n\tpublic async show(duration?: number): Promise<void> {\n\t\tthis._fixVC();\n\t\tlet promises: Array<Promise<any>> = [];\n\t\tpromises.push(super.show(duration).then(() => {\n\t\t\tthis._isShowing = false;\n\t\t\tlet xAxis = this.get(\"xAxis\");\n\t\t\tlet yAxis = this.get(\"yAxis\");\n\t\t\tlet baseAxis = this.get(\"baseAxis\");\n\t\t\tif (yAxis !== baseAxis) {\n\t\t\t\tyAxis.markDirtySelectionExtremes();\n\t\t\t}\n\t\t\tif (xAxis !== baseAxis) {\n\t\t\t\txAxis.markDirtySelectionExtremes();\n\t\t\t}\n\t\t}));\n\t\tpromises.push(this.bulletsContainer.show(duration));\n\t\tpromises.push(this._sequencedShowHide(true, duration));\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Hides series.\n\t *\n\t * @param duration Duration of animation in milliseconds\n\t * @return Animation promise\n\t */\n\tpublic async hide(duration?: number): Promise<void> {\n\t\tthis._fixVC();\n\t\tlet promises: Promise<any>[] = [];\n\t\tpromises.push(super.hide(duration).then(() => {\n\t\t\tthis._isHiding = false;\n\t\t}));\n\t\tpromises.push(this.bulletsContainer.hide(duration));\n\t\tpromises.push(this._sequencedShowHide(false, duration));\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Shows series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async showDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\n\t\tconst promises = [super.showDataItem(dataItem, duration)];\n\n\t\tif (!$type.isNumber(duration)) {\n\t\t\tduration = this.get(\"stateAnimationDuration\", 0);\n\t\t}\n\n\t\tconst easing = this.get(\"stateAnimationEasing\");\n\n\t\t$array.each(this._valueFields, (key) => {\n\t\t\tpromises.push(dataItem.animate({ key: key + \"Working\" as any, to: dataItem.get(key as any), duration: duration!, easing: easing }).waitForStop());\n\t\t})\n\n\t\tawait Promise.all(promises);\n\t}\n\n\t/**\n\t * Hides series's data item.\n\t *\n\t * @param dataItem Data item\n\t * @param duration Animation duration in milliseconds\n\t * @return Promise\n\t */\n\tpublic async hideDataItem(dataItem: DataItem<this[\"_dataItemSettings\"]>, duration?: number): Promise<void> {\n\t\tconst promises = [super.hideDataItem(dataItem, duration)];\n\n\t\tlet hiddenState = this.states.lookup(\"hidden\");\n\t\tif (!hiddenState) {\n\t\t\thiddenState = this.states.create(\"hidden\", {});\n\t\t}\n\n\t\tif (!$type.isNumber(duration)) {\n\t\t\tduration = hiddenState.get(\"stateAnimationDuration\", this.get(\"stateAnimationDuration\", 0));\n\t\t}\n\n\t\tconst easing = hiddenState.get(\"stateAnimationEasing\", this.get(\"stateAnimationEasing\"));\n\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\t\tconst stacked = this.get(\"stacked\");\n\n\t\tif (baseAxis === xAxis || !baseAxis) {\n\n\t\t\t$array.each(this._valueYFields, (key) => {\n\t\t\t\tlet min = yAxis.getPrivate(\"min\");\n\t\t\t\tlet baseValue = yAxis.baseValue();\n\n\t\t\t\tif ($type.isNumber(min) && min > baseValue) {\n\t\t\t\t\tbaseValue = min;\n\t\t\t\t}\n\t\t\t\tif (stacked) {\n\t\t\t\t\tbaseValue = 0;\n\t\t\t\t}\n\n\t\t\t\tlet value = dataItem.get(key as any);\n\t\t\t\tif (value != null) {\n\t\t\t\t\tpromises.push(dataItem.animate({ key: key + \"Working\" as any, to: baseValue, duration: duration!, easing: easing }).waitForStop());\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t\tif (baseAxis === yAxis || !baseAxis) {\n\n\t\t\tlet min = xAxis.getPrivate(\"min\");\n\t\t\tlet baseValue = xAxis.baseValue();\n\t\t\tif ($type.isNumber(min) && min > baseValue) {\n\t\t\t\tbaseValue = min;\n\t\t\t}\n\t\t\tif (stacked) {\n\t\t\t\tbaseValue = 0;\n\t\t\t}\n\n\t\t\t$array.each(this._valueXFields, (key) => {\n\t\t\t\tlet value = dataItem.get(key as any);\n\t\t\t\tif (value != null) {\n\t\t\t\t\tpromises.push(dataItem.animate({ key: key + \"Working\" as any, to: baseValue, duration: duration!, easing: easing }).waitForStop());\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\n\t\tawait Promise.all(promises);\n\t}\n\n\tpublic _markDirtyStack() {\n\t\tthis._stackDirty = true;\n\t\tthis.markDirty();\n\t\tthis._markStakedDirtyStack();\n\t}\n\n\tprotected _markStakedDirtyStack() {\n\t\tconst stackedSeries = this._stackedSeries;\n\t\tif (stackedSeries) {\n\n\t\t\t$object.each(stackedSeries, (_key, value) => {\n\t\t\t\tif (!value._stackDirty) {\n\t\t\t\t\tvalue._markDirtyStack();\n\t\t\t\t}\n\t\t\t})\n\t\t}\n\t}\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\t\tif (this._skipped) {\n\t\t\tthis._markDirtyAxes();\n\t\t\tthis._skipped = false;\n\t\t}\n\t}\n\n\t/**\n\t * Shows a tooltip for specific data item.\n\t *\n\t * @param dataItem Data item\n\t */\n\tpublic showDataItemTooltip(dataItem: DataItem<this[\"_dataItemSettings\"]> | undefined) {\n\t\tif (!this.getPrivate(\"doNotUpdateLegend\")) {\n\t\t\tthis.updateLegendMarker(dataItem);\n\t\t\tthis.updateLegendValue(dataItem);\n\t\t}\n\n\t\tconst tooltip = this.get(\"tooltip\");\n\n\t\tconst exactLocationX = this.get(\"exactLocationX\", false);\n\t\tconst exactLocationY = this.get(\"exactLocationY\", false);\n\n\t\tif (tooltip) {\n\t\t\tif (!this.isHidden() && this.get(\"visible\")) {\n\t\t\t\ttooltip._setDataItem(dataItem);\n\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tlet locationX = this.get(\"locationX\", 0);\n\t\t\t\t\tlet locationY = this.get(\"locationY\", 1);\n\n\t\t\t\t\tlet itemLocationX = dataItem.get(\"locationX\", locationX);\n\t\t\t\t\tlet itemLocationY = dataItem.get(\"locationY\", locationY);\n\n\t\t\t\t\tconst xAxis = this.get(\"xAxis\");\n\t\t\t\t\tconst yAxis = this.get(\"yAxis\");\n\n\t\t\t\t\tconst vcx = this.get(\"vcx\", 1);\n\t\t\t\t\tconst vcy = this.get(\"vcy\", 1);\n\n\t\t\t\t\tconst xPos = xAxis.getDataItemPositionX(dataItem, this._tooltipFieldX!, this._aLocationX0 + (this._aLocationX1 - this._aLocationX0) * itemLocationX, vcx, exactLocationX);\n\t\t\t\t\tconst yPos = yAxis.getDataItemPositionY(dataItem, this._tooltipFieldY!, this._aLocationY0 + (this._aLocationY1 - this._aLocationY0) * itemLocationY, vcy, exactLocationY);\n\n\t\t\t\t\tconst point = this.getPoint(xPos, yPos);\n\n\t\t\t\t\tlet show = true;\n\t\t\t\t\t$array.each(this._valueFields, (field) => {\n\t\t\t\t\t\tif (dataItem.get(field as any) == null) {\n\t\t\t\t\t\t\tshow = false;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tif (show) {\n\t\t\t\t\t\tconst chart = this.chart;\n\t\t\t\t\t\tif (chart && chart.inPlot(point)) {\n\t\t\t\t\t\t\ttooltip.label.text.markDirtyText();\n\t\t\t\t\t\t\ttooltip.set(\"tooltipTarget\", this._getTooltipTarget(dataItem));\n\t\t\t\t\t\t\ttooltip.set(\"pointTo\", this._display.toGlobal({ x: point.x, y: point.y }));\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\ttooltip._setDataItem(undefined);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\ttooltip._setDataItem(undefined);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.hideTooltip();\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic hideTooltip(): Promise<void> | undefined {\n\t\tconst tooltip = this.get(\"tooltip\");\n\t\tif (tooltip) {\n\t\t\ttooltip.set(\"tooltipTarget\", this);\n\t\t}\n\t\treturn super.hideTooltip();\n\t}\n\n\tprotected _getTooltipTarget(dataItem: DataItem<this[\"_dataItemSettings\"]>): Sprite {\n\t\tif (this.get(\"seriesTooltipTarget\") == \"bullet\") {\n\t\t\tconst bullets = dataItem.bullets;\n\t\t\tif (bullets && bullets.length > 0) {\n\t\t\t\tconst bullet = bullets[0];\n\t\t\t\tconst sprite = bullet.get(\"sprite\");\n\t\t\t\tif (sprite) {\n\t\t\t\t\treturn sprite;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic updateLegendValue(dataItem?: DataItem<this[\"_dataItemSettings\"]> | undefined) {\n\t\tconst legendDataItem = this.get(\"legendDataItem\");\n\n\t\tif (legendDataItem) {\n\n\t\t\tconst label = legendDataItem.get(\"label\");\n\t\t\tif (label) {\n\t\t\t\tlet txt = \"\";\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tlabel._setDataItem(dataItem);\n\t\t\t\t\ttxt = this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\")));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tlabel._setDataItem(this._emptyDataItem);\n\t\t\t\t\ttxt = this.get(\"legendRangeLabelText\", this.get(\"legendLabelText\", label.get(\"text\", this.get(\"name\", \"\"))));\n\t\t\t\t}\n\n\t\t\t\tlabel.set(\"text\", txt);\n\t\t\t}\n\n\t\t\tconst valueLabel = legendDataItem.get(\"valueLabel\");\n\t\t\tif (valueLabel) {\n\t\t\t\tlet txt = \"\";\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tvalueLabel._setDataItem(dataItem);\n\t\t\t\t\ttxt = this.get(\"legendValueText\", valueLabel.get(\"text\", \"\"));\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tvalueLabel._setDataItem(this._emptyDataItem);\n\t\t\t\t\ttxt = this.get(\"legendRangeValueText\", valueLabel.get(\"text\", \"\"));\n\t\t\t\t}\n\n\t\t\t\tvalueLabel.set(\"text\", txt);\n\t\t\t}\n\t\t}\n\t}\n\n\tprotected _getItemReaderLabel(): string {\n\t\tlet text = \"X: {\" + this._xField;\n\t\tif (this.get(\"xAxis\").isType<DateAxis<any>>(\"DateAxis\")) {\n\t\t\ttext += \".formatDate()\";\n\t\t}\n\t\ttext += \"}; Y: {\" + this._yField;\n\t\tif (this.get(\"yAxis\").isType<DateAxis<any>>(\"DateAxis\")) {\n\t\t\ttext += \".formatDate()\";\n\t\t}\n\t\ttext += \"}\";\n\t\treturn text;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic getPoint(positionX: number, positionY: number): IPoint {\n\t\tlet x = this._xRenderer.positionToCoordinate(positionX);\n\t\tlet y = this._yRenderer.positionToCoordinate(positionY);\n\n\t\t// if coordinate is super big, canvas fails to draw line, capping to some big number (won't make any visual difference)\n\t\tlet max = 999999999;\n\t\tif (y < -max) {\n\t\t\ty = -max;\n\t\t}\n\t\telse if (y > max) {\n\t\t\ty = max;\n\t\t}\n\n\t\tif (x < -max) {\n\t\t\tx = -max;\n\t\t}\n\t\telse if (x > max) {\n\t\t\tx = max;\n\t\t}\n\n\t\treturn { x: x, y: y };\n\t}\n\n\tprotected _shouldInclude(_position: number): boolean {\n\t\treturn true;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic handleCursorHide() {\n\t\tthis.hideTooltip();\n\t\tthis.updateLegendValue(undefined);\n\t\tthis.updateLegendMarker(undefined);\n\t}\n\n\tprotected _afterDataChange() {\n\t\tsuper._afterDataChange();\n\t\tthis.get(\"xAxis\")._markDirtyKey(\"start\");\n\t\tthis.get(\"yAxis\")._markDirtyKey(\"start\");\n\t\tthis.resetExtremes();\n\t}\n\n\n\t/**\n\t * Resets cached axis scale values.\n\t */\n\tpublic resetExtremes() {\n\t\tthis.setPrivate(\"selectionMinX\", undefined);\n\t\tthis.setPrivate(\"selectionMaxX\", undefined);\n\t\tthis.setPrivate(\"selectionMinY\", undefined);\n\t\tthis.setPrivate(\"selectionMaxY\", undefined);\n\n\t\tthis.setPrivate(\"minX\", undefined);\n\t\tthis.setPrivate(\"minY\", undefined);\n\t\tthis.setPrivate(\"maxX\", undefined);\n\t\tthis.setPrivate(\"maxY\", undefined);\n\t}\n\n\t/**\n\t * Creates and returns an axis range object.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/xy-chart/axes/axis-ranges/} for more info\n\t * @param axisDataItem Axis data item\n\t * @return Axis range\n\t */\n\tpublic createAxisRange(axisDataItem: DataItem<IAxisDataItem>): this[\"_axisRangeType\"] {\n\t\treturn this.axisRanges.push({\n\t\t\taxisDataItem: axisDataItem\n\t\t})\n\t}\n\n\t/**\n\t * A list of series's main (ungrouped) data items.\n\t *\n\t * @return Data items\n\t */\n\tpublic get mainDataItems(): Array<DataItem<this[\"_dataItemSettings\"]>> {\n\t\treturn this._mainDataItems;\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic _adjustStartIndex(index: number): number {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tconst baseAxis = this.get(\"baseAxis\");\n\n\t\tif (baseAxis == xAxis && xAxis.isType<DateAxis<any>>(\"DateAxis\")) {\n\t\t\tconst baseDuration = xAxis.baseDuration();\n\t\t\tconst minSelection = xAxis.getPrivate(\"selectionMin\", xAxis.getPrivate(\"min\", 0));\n\t\t\tconst dl = baseDuration * this.get(\"locationX\", 0.5);\n\n\t\t\tlet value = -Infinity;\n\n\t\t\twhile (value < minSelection) {\n\t\t\t\tconst dataItem = this.dataItems[index];\n\t\t\t\tif (dataItem) {\n\t\t\t\t\tconst open = dataItem.open;\n\t\t\t\t\tif (open) {\n\t\t\t\t\t\tvalue = open[\"valueX\"];\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tvalue = dataItem.get(\"valueX\", 0);\n\t\t\t\t\t}\n\t\t\t\t\tvalue += dl;\n\n\t\t\t\t\tif (value < minSelection) {\n\t\t\t\t\t\tindex++;\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn index;\n\t}\n}\n"]}