@amcharts/amcharts5 5.17.0 → 5.17.2

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 (317) hide show
  1. package/.internal/charts/flow/ArcDiagram.d.ts +2 -2
  2. package/.internal/charts/flow/ArcDiagram.js.map +1 -1
  3. package/.internal/charts/flow/ChordNonRibbon.d.ts +1 -1
  4. package/.internal/charts/flow/ChordNonRibbon.js +1 -1
  5. package/.internal/charts/flow/ChordNonRibbon.js.map +1 -1
  6. package/.internal/charts/flow/SankeyLink.d.ts +1 -1
  7. package/.internal/charts/flow/SankeyLink.js.map +1 -1
  8. package/.internal/charts/funnel/FunnelSlice.d.ts +1 -1
  9. package/.internal/charts/funnel/FunnelSlice.js.map +1 -1
  10. package/.internal/charts/funnel/SlicedChart.d.ts +1 -1
  11. package/.internal/charts/funnel/SlicedChart.js +1 -1
  12. package/.internal/charts/funnel/SlicedChart.js.map +1 -1
  13. package/.internal/charts/hierarchy/ForceDirected.d.ts +2 -2
  14. package/.internal/charts/hierarchy/ForceDirected.js.map +1 -1
  15. package/.internal/charts/hierarchy/Hierarchy.d.ts +1 -1
  16. package/.internal/charts/hierarchy/Hierarchy.js.map +1 -1
  17. package/.internal/charts/hierarchy/Partition.d.ts +1 -1
  18. package/.internal/charts/hierarchy/Partition.js.map +1 -1
  19. package/.internal/charts/hierarchy/Treemap.d.ts +1 -2
  20. package/.internal/charts/hierarchy/Treemap.d.ts.map +1 -1
  21. package/.internal/charts/hierarchy/Treemap.js.map +1 -1
  22. package/.internal/charts/hierarchy/VoronoiTreemap.d.ts +3 -3
  23. package/.internal/charts/hierarchy/VoronoiTreemap.js.map +1 -1
  24. package/.internal/charts/map/ClusteredPointSeries.d.ts +2 -2
  25. package/.internal/charts/map/ClusteredPointSeries.js.map +1 -1
  26. package/.internal/charts/map/MapChart.d.ts +2 -2
  27. package/.internal/charts/map/MapChart.js.map +1 -1
  28. package/.internal/charts/map/MapPointSeries.d.ts +3 -1
  29. package/.internal/charts/map/MapPointSeries.d.ts.map +1 -1
  30. package/.internal/charts/map/MapPointSeries.js.map +1 -1
  31. package/.internal/charts/map/MapSankeySeries.d.ts +29 -0
  32. package/.internal/charts/map/MapSankeySeries.d.ts.map +1 -1
  33. package/.internal/charts/map/MapSankeySeries.js +126 -52
  34. package/.internal/charts/map/MapSankeySeries.js.map +1 -1
  35. package/.internal/charts/percent/PercentSeries.d.ts +2 -2
  36. package/.internal/charts/percent/PercentSeries.js.map +1 -1
  37. package/.internal/charts/radar/RadarChart.d.ts +2 -2
  38. package/.internal/charts/radar/RadarChart.js.map +1 -1
  39. package/.internal/charts/radar/RadarLineSeries.d.ts +1 -1
  40. package/.internal/charts/radar/RadarLineSeries.js.map +1 -1
  41. package/.internal/charts/stock/StockChart.d.ts +3 -3
  42. package/.internal/charts/stock/StockChart.js +3 -3
  43. package/.internal/charts/stock/StockChart.js.map +1 -1
  44. package/.internal/charts/stock/StockPanel.d.ts +1 -1
  45. package/.internal/charts/stock/StockPanel.js.map +1 -1
  46. package/.internal/charts/stock/drawing/DrawingSeries.d.ts +1 -1
  47. package/.internal/charts/stock/drawing/DrawingSeries.js.map +1 -1
  48. package/.internal/charts/stock/drawing/LabelSeries.d.ts +1 -1
  49. package/.internal/charts/stock/drawing/LabelSeries.js.map +1 -1
  50. package/.internal/charts/stock/indicators/ChaikinMoneyFlow.d.ts +1 -1
  51. package/.internal/charts/stock/indicators/ChaikinMoneyFlow.js.map +1 -1
  52. package/.internal/charts/stock/indicators/Indicator.d.ts +2 -2
  53. package/.internal/charts/stock/indicators/Indicator.js.map +1 -1
  54. package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts +1 -1
  55. package/.internal/charts/stock/toolbar/DateRangeSelector.js.map +1 -1
  56. package/.internal/charts/stock/toolbar/DropdownList.d.ts +1 -1
  57. package/.internal/charts/stock/toolbar/DropdownList.js.map +1 -1
  58. package/.internal/charts/stock/toolbar/DropdownListControl.d.ts +1 -1
  59. package/.internal/charts/stock/toolbar/DropdownListControl.js.map +1 -1
  60. package/.internal/charts/stock/toolbar/PeriodSelector.d.ts +1 -1
  61. package/.internal/charts/stock/toolbar/PeriodSelector.js.map +1 -1
  62. package/.internal/charts/stock/toolbar/StockControl.d.ts +2 -2
  63. package/.internal/charts/stock/toolbar/StockControl.js.map +1 -1
  64. package/.internal/charts/timeline/SerpentineChart.d.ts +3 -3
  65. package/.internal/charts/timeline/SerpentineChart.js.map +1 -1
  66. package/.internal/charts/timeline/SpiralChart.d.ts +3 -3
  67. package/.internal/charts/timeline/SpiralChart.js.map +1 -1
  68. package/.internal/charts/venn/Venn.d.ts +1 -1
  69. package/.internal/charts/venn/Venn.js.map +1 -1
  70. package/.internal/charts/wordcloud/WordCloud.d.ts +1 -1
  71. package/.internal/charts/wordcloud/WordCloud.js +1 -1
  72. package/.internal/charts/wordcloud/WordCloud.js.map +1 -1
  73. package/.internal/charts/xy/XYChart.d.ts +1 -1
  74. package/.internal/charts/xy/XYChart.js.map +1 -1
  75. package/.internal/charts/xy/axes/Axis.d.ts +8 -8
  76. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  77. package/.internal/charts/xy/axes/AxisLabel.d.ts +1 -1
  78. package/.internal/charts/xy/axes/AxisLabel.js.map +1 -1
  79. package/.internal/charts/xy/axes/DateAxis.d.ts +1 -1
  80. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  81. package/.internal/charts/xy/series/BaseColumnSeries.d.ts +1 -1
  82. package/.internal/charts/xy/series/BaseColumnSeries.js.map +1 -1
  83. package/.internal/charts/xy/series/ColumnSeries.d.ts +1 -1
  84. package/.internal/charts/xy/series/ColumnSeries.js.map +1 -1
  85. package/.internal/charts/xy/series/XYSeries.d.ts +3 -3
  86. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  87. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  88. package/.internal/core/Registry.js +1 -1
  89. package/.internal/core/Registry.js.map +1 -1
  90. package/.internal/core/render/Bullet.d.ts +2 -3
  91. package/.internal/core/render/Bullet.d.ts.map +1 -1
  92. package/.internal/core/render/Bullet.js.map +1 -1
  93. package/.internal/core/render/Container.d.ts +5 -1
  94. package/.internal/core/render/Container.d.ts.map +1 -1
  95. package/.internal/core/render/Container.js.map +1 -1
  96. package/.internal/core/render/Graphics.d.ts +3 -1
  97. package/.internal/core/render/Graphics.d.ts.map +1 -1
  98. package/.internal/core/render/Graphics.js.map +1 -1
  99. package/.internal/core/render/HeatLegend.d.ts +1 -1
  100. package/.internal/core/render/HeatLegend.js.map +1 -1
  101. package/.internal/core/render/Label.d.ts +5 -3
  102. package/.internal/core/render/Label.d.ts.map +1 -1
  103. package/.internal/core/render/Label.js.map +1 -1
  104. package/.internal/core/render/Legend.d.ts +3 -0
  105. package/.internal/core/render/Legend.d.ts.map +1 -1
  106. package/.internal/core/render/Legend.js.map +1 -1
  107. package/.internal/core/render/PointedRectangle.d.ts +2 -2
  108. package/.internal/core/render/PointedRectangle.js.map +1 -1
  109. package/.internal/core/render/Polygon.d.ts +1 -1
  110. package/.internal/core/render/Polygon.js.map +1 -1
  111. package/.internal/core/render/RadialLabel.d.ts +3 -3
  112. package/.internal/core/render/RadialLabel.js.map +1 -1
  113. package/.internal/core/render/RoundedRectangle.d.ts +1 -1
  114. package/.internal/core/render/RoundedRectangle.js.map +1 -1
  115. package/.internal/core/render/Sprite.d.ts +28 -8
  116. package/.internal/core/render/Sprite.d.ts.map +1 -1
  117. package/.internal/core/render/Sprite.js.map +1 -1
  118. package/.internal/core/render/Tooltip.d.ts +5 -4
  119. package/.internal/core/render/Tooltip.d.ts.map +1 -1
  120. package/.internal/core/render/Tooltip.js.map +1 -1
  121. package/.internal/core/render/ZoomableContainer.d.ts +1 -1
  122. package/.internal/core/render/ZoomableContainer.js.map +1 -1
  123. package/.internal/core/render/patterns/CirclePattern.d.ts +2 -2
  124. package/.internal/core/render/patterns/CirclePattern.js.map +1 -1
  125. package/.internal/core/render/patterns/GrainPattern.d.ts +1 -1
  126. package/.internal/core/render/patterns/GrainPattern.js.map +1 -1
  127. package/.internal/core/render/patterns/LinePattern.d.ts +2 -2
  128. package/.internal/core/render/patterns/LinePattern.js.map +1 -1
  129. package/.internal/core/render/patterns/Pattern.d.ts +6 -2
  130. package/.internal/core/render/patterns/Pattern.d.ts.map +1 -1
  131. package/.internal/core/render/patterns/Pattern.js.map +1 -1
  132. package/.internal/core/render/patterns/PicturePattern.d.ts +1 -1
  133. package/.internal/core/render/patterns/PicturePattern.js.map +1 -1
  134. package/.internal/core/util/ColorSet.d.ts +4 -3
  135. package/.internal/core/util/ColorSet.d.ts.map +1 -1
  136. package/.internal/core/util/ColorSet.js.map +1 -1
  137. package/.internal/core/util/DateFormatter.d.ts +1 -0
  138. package/.internal/core/util/DateFormatter.d.ts.map +1 -1
  139. package/.internal/core/util/DateFormatter.js.map +1 -1
  140. package/.internal/core/util/Entity.d.ts +4 -0
  141. package/.internal/core/util/Entity.d.ts.map +1 -1
  142. package/.internal/core/util/Entity.js.map +1 -1
  143. package/.internal/core/util/NumberFormatter.d.ts +2 -3
  144. package/.internal/core/util/NumberFormatter.d.ts.map +1 -1
  145. package/.internal/core/util/NumberFormatter.js.map +1 -1
  146. package/.internal/plugins/exporting/Annotator.d.ts +1 -1
  147. package/.internal/plugins/exporting/Annotator.js.map +1 -1
  148. package/.internal/plugins/exporting/Exporting.d.ts +2 -2
  149. package/.internal/plugins/exporting/Exporting.js.map +1 -1
  150. package/.internal/plugins/exporting/ExportingMenu.d.ts +1 -1
  151. package/.internal/plugins/exporting/ExportingMenu.js.map +1 -1
  152. package/.internal/plugins/sliceGrouper/SliceGrouper.d.ts +1 -1
  153. package/.internal/plugins/sliceGrouper/SliceGrouper.js.map +1 -1
  154. package/CHANGELOG.md +12 -0
  155. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  156. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  157. package/examples/javascript/flow-chord/package.json +1 -1
  158. package/examples/javascript/flow-chord-directed/package.json +1 -1
  159. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  160. package/examples/javascript/flow-sankey/package.json +1 -1
  161. package/examples/javascript/gantt/package.json +1 -1
  162. package/examples/javascript/gantt-multilevel/package.json +1 -1
  163. package/examples/javascript/gantt-simple/package.json +1 -1
  164. package/examples/javascript/gauge/package.json +1 -1
  165. package/examples/javascript/gauge-bands/package.json +1 -1
  166. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  167. package/examples/javascript/hierarchy-pack/package.json +1 -1
  168. package/examples/javascript/hierarchy-partition/package.json +1 -1
  169. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  170. package/examples/javascript/hierarchy-tree/package.json +1 -1
  171. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  172. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  173. package/examples/javascript/jest/package.json +1 -1
  174. package/examples/javascript/json-pie/package.json +1 -1
  175. package/examples/javascript/json-xy/package.json +1 -1
  176. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  177. package/examples/javascript/map-clustered-points/package.json +1 -1
  178. package/examples/javascript/map-day-and-night/package.json +1 -1
  179. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  180. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  181. package/examples/javascript/map-sankey/index.js +48 -55
  182. package/examples/javascript/map-sankey/package.json +1 -1
  183. package/examples/javascript/map-sankey-waypoints/package.json +1 -1
  184. package/examples/javascript/map-with-bubbles/package.json +1 -1
  185. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  186. package/examples/javascript/misc-40-charts/package.json +1 -1
  187. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  188. package/examples/javascript/pie-chart/package.json +1 -1
  189. package/examples/javascript/pie-donut-chart/package.json +1 -1
  190. package/examples/javascript/pie-variable-radius/package.json +1 -1
  191. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  192. package/examples/javascript/radar-heat-map/package.json +1 -1
  193. package/examples/javascript/radar-line/package.json +1 -1
  194. package/examples/javascript/radar-time-line/package.json +1 -1
  195. package/examples/javascript/sliced-funnel/package.json +1 -1
  196. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  197. package/examples/javascript/sliced-pyramid/package.json +1 -1
  198. package/examples/javascript/stock-chart/package.json +1 -1
  199. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  200. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  201. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  202. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  203. package/examples/javascript/stock-chart-live/package.json +1 -1
  204. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  205. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  206. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  207. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  208. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  209. package/examples/javascript/venn-diagram/package.json +1 -1
  210. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  211. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  212. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  213. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  214. package/examples/javascript/xy-bubble/package.json +1 -1
  215. package/examples/javascript/xy-candlestick/package.json +1 -1
  216. package/examples/javascript/xy-clustered-column/package.json +1 -1
  217. package/examples/javascript/xy-column/package.json +1 -1
  218. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  219. package/examples/javascript/xy-data-grouping/package.json +1 -1
  220. package/examples/javascript/xy-draggable-range/package.json +1 -1
  221. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  222. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  223. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  224. package/examples/javascript/xy-line/package.json +1 -1
  225. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  226. package/examples/javascript/xy-live-data/package.json +1 -1
  227. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  228. package/examples/javascript/xy-ohlc/package.json +1 -1
  229. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  230. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  231. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  232. package/examples/javascript/xy-stacked-column/package.json +1 -1
  233. package/examples/javascript/xy-stacked-step/package.json +1 -1
  234. package/examples/javascript/xy-stock/package.json +1 -1
  235. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  236. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  237. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  238. package/examples/typescript/flow-chord/package.json +1 -1
  239. package/examples/typescript/flow-chord-directed/package.json +1 -1
  240. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  241. package/examples/typescript/flow-sankey/package.json +1 -1
  242. package/examples/typescript/gantt/package.json +1 -1
  243. package/examples/typescript/gantt-multilevel/package.json +1 -1
  244. package/examples/typescript/gantt-simple/package.json +1 -1
  245. package/examples/typescript/gauge/package.json +1 -1
  246. package/examples/typescript/gauge-bands/package.json +1 -1
  247. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  248. package/examples/typescript/hierarchy-pack/package.json +1 -1
  249. package/examples/typescript/hierarchy-partition/package.json +1 -1
  250. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  251. package/examples/typescript/hierarchy-tree/package.json +1 -1
  252. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  253. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  254. package/examples/typescript/jest/package.json +1 -1
  255. package/examples/typescript/json-pie/package.json +1 -1
  256. package/examples/typescript/json-xy/package.json +1 -1
  257. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  258. package/examples/typescript/map-clustered-points/package.json +1 -1
  259. package/examples/typescript/map-day-and-night/package.json +1 -1
  260. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  261. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  262. package/examples/typescript/map-sankey/index.ts +48 -55
  263. package/examples/typescript/map-sankey/package.json +1 -1
  264. package/examples/typescript/map-sankey-waypoints/package.json +1 -1
  265. package/examples/typescript/map-with-bubbles/package.json +1 -1
  266. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  267. package/examples/typescript/misc-40-charts/package.json +1 -1
  268. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  269. package/examples/typescript/pie-chart/package.json +1 -1
  270. package/examples/typescript/pie-donut-chart/package.json +1 -1
  271. package/examples/typescript/pie-variable-radius/package.json +1 -1
  272. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  273. package/examples/typescript/radar-heat-map/package.json +1 -1
  274. package/examples/typescript/radar-line/package.json +1 -1
  275. package/examples/typescript/radar-time-line/package.json +1 -1
  276. package/examples/typescript/sliced-funnel/package.json +1 -1
  277. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  278. package/examples/typescript/sliced-pyramid/package.json +1 -1
  279. package/examples/typescript/stock-chart/package.json +1 -1
  280. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  281. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  282. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  283. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  284. package/examples/typescript/stock-chart-live/package.json +1 -1
  285. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  286. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  287. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  288. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  289. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  290. package/examples/typescript/venn-diagram/package.json +1 -1
  291. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  292. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  293. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  294. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  295. package/examples/typescript/xy-bubble/package.json +1 -1
  296. package/examples/typescript/xy-candlestick/package.json +1 -1
  297. package/examples/typescript/xy-clustered-column/package.json +1 -1
  298. package/examples/typescript/xy-column/package.json +1 -1
  299. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  300. package/examples/typescript/xy-data-grouping/package.json +1 -1
  301. package/examples/typescript/xy-draggable-range/package.json +1 -1
  302. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  303. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  304. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  305. package/examples/typescript/xy-line/package.json +1 -1
  306. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  307. package/examples/typescript/xy-live-data/package.json +1 -1
  308. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  309. package/examples/typescript/xy-ohlc/package.json +1 -1
  310. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  311. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  312. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  313. package/examples/typescript/xy-stacked-column/package.json +1 -1
  314. package/examples/typescript/xy-stacked-step/package.json +1 -1
  315. package/examples/typescript/xy-stock/package.json +1 -1
  316. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  317. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"RadarChart.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/radar/RadarChart.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AxisRendererCircular } from \"./AxisRendererCircular\";\nimport type { AxisRendererRadial } from \"./AxisRendererRadial\";\nimport type { Axis } from \"../xy/axes/Axis\";\nimport type { XYSeries } from \"../xy/series/XYSeries\";\nimport type { RadarCursor } from \"./RadarCursor\";\nimport type { RadarColumnSeries } from \"./RadarColumnSeries\";\nimport type { RadarLineSeries } from \"./RadarLineSeries\";\nimport type { IPoint } from \"../../core/util/IPoint\";\n\nimport { RadarDefaultTheme } from \"./RadarDefaultTheme\";\nimport { XYChart, IXYChartPrivate, IXYChartSettings } from \"../xy/XYChart\";\nimport { Percent, p50, percent } from \"../../core/util/Percent\";\nimport { Container } from \"../../core/render/Container\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport { arc } from \"d3-shape\";\n\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $math from \"../../core/util/Math\";\n\nexport interface IRadarChartSettings extends IXYChartSettings {\n\n\t/**\n\t * Outer radius of the chart. Can be set in pixels or percent, relative to\n\t * available space.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Chart_radius} for more info\n\t * @default 80%\n\t */\n\tradius?: number | Percent;\n\n\t/**\n\t * Inner radius of the chart. Can be set in pixels or percent, relative to\n\t * outer radius.\n\t *\n\t * Setting to negative number will mean pixels from outer radius.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Chart_radius} for more info\n\t */\n\tinnerRadius?: number | Percent;\n\n\t/**\n\t * Chart start angle in degress.\n\t *\n\t * @default -90\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Start_end_angles} for more info\n\t */\n\tstartAngle?: number;\n\n\t/**\n\t * Chart end angle in degress.\n\t *\n\t * @default 270\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Start_end_angles} for more info\n\t */\n\tendAngle?: number;\n\n\t/**\n\t * [[RadarCursor]] instance.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Cursor} for more info\n\t */\n\tcursor?: RadarCursor;\n\n}\n\nexport interface IRadarChartPrivate extends IXYChartPrivate {\n\n\t/**\n\t * Radius in pixels.\n\t */\n\tradius?: number;\n\n\t/**\n\t * Inner radius in pixels.\n\t */\n\tinnerRadius?: number;\n\n\t/**\n\t * @ignore\n\t */\n\tirModifyer?: number;\n\n}\n\n/**\n * Radar chart.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/} for more info\n * @important\n */\nexport class RadarChart extends XYChart {\n\n\t/**\n\t * [[Container]] where radar-related elements go.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly radarContainer = this.plotContainer.children.push(Container.new(this._root, { x: p50, y: p50 }));\n\n\tpublic static className: string = \"RadarChart\";\n\tpublic static classNames: Array<string> = XYChart.classNames.concat([RadarChart.className]);\n\n\tdeclare public _settings: IRadarChartSettings;\n\tdeclare public _privateSettings: IRadarChartPrivate;\n\n\tprotected _arcGenerator = arc();\n\tdeclare public _seriesType: RadarColumnSeries | RadarLineSeries;\n\n\tprotected _maxRadius: number = 1;\n\n\tprotected _afterNew() {\n\t\tthis._defaultThemes.push(RadarDefaultTheme.new(this._root));\n\n\t\tsuper._afterNew();\n\n\t\tconst radarContainer = this.radarContainer;\n\t\tconst gridContainer = this.gridContainer;\n\t\tconst topGridContainer = this.topGridContainer;\n\t\tconst seriesContainer = this.seriesContainer;\n\t\tconst bulletsContainer = this.bulletsContainer;\n\n\t\tradarContainer.children.pushAll([gridContainer, seriesContainer, topGridContainer, bulletsContainer]);\n\n\t\tseriesContainer.set(\"mask\", Graphics.new(this._root, {}));\n\t\tgridContainer.set(\"mask\", Graphics.new(this._root, {}));\n\n\t\tthis._disposers.push(this.plotContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis._updateRadius();\n\t\t}));\n\t}\n\n\tprotected _maskGrid(){\n\t\t\n\t}\n\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this._sizeDirty || this.isDirty(\"radius\") || this.isDirty(\"innerRadius\") || this.isDirty(\"startAngle\") || this.isDirty(\"endAngle\")) {\n\n\t\t\tconst chartContainer = this.chartContainer;\n\t\t\tconst w = chartContainer.innerWidth();\n\t\t\tconst h = chartContainer.innerHeight();\n\n\t\t\tconst startAngle = this.get(\"startAngle\", 0);\n\t\t\tconst endAngle = this.get(\"endAngle\", 0);\n\t\t\tconst innerRadius = this.get(\"innerRadius\");\n\n\n\t\t\tlet bounds = $math.getArcBounds(0, 0, startAngle, endAngle, 1);\n\n\t\t\tconst wr = w / (bounds.right - bounds.left);\n\t\t\tconst hr = h / (bounds.bottom - bounds.top);\n\n\t\t\tlet innerBounds = { left: 0, right: 0, top: 0, bottom: 0 };\n\n\t\t\tif (innerRadius instanceof Percent) {\n\t\t\t\tlet value = innerRadius.value;\n\t\t\t\tlet mr = Math.min(wr, hr);\n\t\t\t\tvalue = Math.max(mr * value, mr - Math.min(h, w)) / mr;\n\t\t\t\tinnerBounds = $math.getArcBounds(0, 0, startAngle, endAngle, value);\n\t\t\t\tthis.setPrivateRaw(\"irModifyer\", value / innerRadius.value);\n\t\t\t}\n\n\t\t\tbounds = $math.mergeBounds([bounds, innerBounds]);\n\n\t\t\tthis._maxRadius = Math.max(0, Math.min(wr, hr));\n\n\t\t\tconst radius = $utils.relativeToValue(this.get(\"radius\", 0), this._maxRadius);\n\t\t\tthis.radarContainer.setAll({\n\t\t\t\tdy: -radius * (bounds.bottom + bounds.top) / 2, dx: -radius * (bounds.right + bounds.left) / 2\n\t\t\t})\n\n\t\t\tthis._updateRadius();\n\t\t}\n\t}\n\n\tprotected _addCursor(cursor: RadarCursor) {\n\t\tthis.radarContainer.children.push(cursor);\n\t}\n\n\n\t// do not delete\n\tpublic _updateRadius() {\n\t\tconst radius = $utils.relativeToValue(this.get(\"radius\", percent(80)), this._maxRadius);\n\t\tthis.setPrivateRaw(\"radius\", radius);\n\n\t\tlet innerRadius = $utils.relativeToValue(this.get(\"innerRadius\", 0), radius);\n\n\t\tif (innerRadius < 0) {\n\t\t\tinnerRadius = radius + innerRadius;\n\t\t}\n\n\t\tthis.setPrivateRaw(\"innerRadius\", innerRadius);\n\n\t\tthis.xAxes.each((axis) => {\n\t\t\tconst renderer = axis.get(\"renderer\") as AxisRendererCircular;\n\t\t\trenderer.updateLayout();\n\t\t})\n\n\t\tthis.yAxes.each((axis) => {\n\t\t\tconst renderer = axis.get(\"renderer\") as AxisRendererRadial;\n\t\t\trenderer.updateLayout();\n\t\t})\n\n\t\tthis._updateMask(this.seriesContainer, innerRadius, radius);\n\t\tthis._updateMask(this.gridContainer, innerRadius, radius);\n\n\t\tthis.series.each((series) => {\t\t\t\n\t\t\tif ((series as XYSeries).get(\"maskBullets\")) {\n\t\t\t\tthis._updateMask(series.bulletsContainer, innerRadius, radius);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tseries.bulletsContainer.remove(\"mask\");\n\t\t\t}\n\t\t})\n\n\t\tconst cursor = this.get(\"cursor\");\n\t\tif (cursor) {\n\t\t\tcursor.updateLayout();\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic _updateMask(container: Container, innerRadius: number, radius: number) {\n\t\tconst mask = container.get(\"mask\");\n\t\tif (mask) {\n\t\t\tmask.set(\"draw\", (display) => {\n\t\t\t\tthis._arcGenerator.context(display as any);\n\t\t\t\tthis._arcGenerator({ innerRadius: innerRadius, outerRadius: radius + .5, startAngle: (this.get(\"startAngle\", 0) + 90) * $math.RADIANS, endAngle: (this.get(\"endAngle\", 0) + 90) * $math.RADIANS });\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic processAxis(axis: Axis<AxisRendererRadial | AxisRendererCircular>) {\n\t\tthis.radarContainer.children.push(axis);\n\t}\n\n\tprotected _processSeries(series: this[\"_seriesType\"]) {\n\t\tsuper._processSeries(series);\n\t\tthis._updateRadius();\n\t}\t\n\n\t/**\n\t * @ignore\n\t */\n\tpublic inPlot(point: IPoint, radius?: number, innerRadius?: number): boolean {\n\t\tconst r = Math.hypot(point.x, point.y);\n\t\tconst angle = $math.normalizeAngle(Math.atan2(point.y, point.x) * $math.DEGREES);\n\n\t\tlet startAngle = $math.normalizeAngle(this.get(\"startAngle\", 0));\n\t\tlet endAngle = $math.normalizeAngle(this.get(\"endAngle\", 0));\n\n\t\tlet inArc = false;\n\t\tif (startAngle < endAngle) {\n\t\t\tif (startAngle < angle && angle < endAngle) {\n\t\t\t\tinArc = true;\n\t\t\t}\n\t\t}\n\n\t\tif (startAngle > endAngle) {\n\t\t\tif (angle > startAngle) {\n\t\t\t\tinArc = true;\n\t\t\t}\n\t\t\tif (angle < endAngle) {\n\t\t\t\tinArc = true;\n\t\t\t}\n\t\t}\n\n\t\tif (startAngle == endAngle) {\n\t\t\tinArc = true;\n\t\t}\n\n\t\tif (!inArc) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (radius == null) {\n\t\t\tradius = this.getPrivate(\"radius\", 0);\n\t\t}\n\n\t\tif (innerRadius == null) {\n\t\t\tinnerRadius = this.getPrivate(\"innerRadius\", 0);\n\t\t}\n\n\t\tif (innerRadius > radius) {\n\t\t\t[innerRadius, radius] = [radius, innerRadius];\n\t\t}\n\n\t\tif (r <= radius + .5 && r >= innerRadius - .5) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected _tooltipToLocal(point: IPoint): IPoint {\n\t\treturn this.radarContainer._display.toLocal(point);\n\t}\n\n\tprotected _handlePinch(){\n\t\t\n\t}\n}\n"]}
1
+ {"version":3,"file":"RadarChart.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/radar/RadarChart.ts"],"names":[],"mappings":"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","sourcesContent":["import type { AxisRendererCircular } from \"./AxisRendererCircular\";\nimport type { AxisRendererRadial } from \"./AxisRendererRadial\";\nimport type { Axis } from \"../xy/axes/Axis\";\nimport type { XYSeries } from \"../xy/series/XYSeries\";\nimport type { RadarCursor } from \"./RadarCursor\";\nimport type { RadarColumnSeries } from \"./RadarColumnSeries\";\nimport type { RadarLineSeries } from \"./RadarLineSeries\";\nimport type { IPoint } from \"../../core/util/IPoint\";\n\nimport { RadarDefaultTheme } from \"./RadarDefaultTheme\";\nimport { XYChart, IXYChartPrivate, IXYChartSettings } from \"../xy/XYChart\";\nimport { Percent, p50, percent } from \"../../core/util/Percent\";\nimport { Container } from \"../../core/render/Container\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport { arc } from \"d3-shape\";\n\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $math from \"../../core/util/Math\";\n\nexport interface IRadarChartSettings extends IXYChartSettings {\n\n\t/**\n\t * Outer radius of the chart. Can be set in pixels or percent, relative to\n\t * available space.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Chart_radius} for more info\n\t * @default 80%\n\t */\n\tradius?: number | Percent;\n\n\t/**\n\t * Inner radius of the chart. Can be set in pixels or percent, relative to\n\t * outer radius.\n\t *\n\t * Setting to negative number will mean pixels from outer radius.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Chart_radius} for more info\n\t */\n\tinnerRadius?: number | Percent;\n\n\t/**\n\t * Chart start angle in degrees.\n\t *\n\t * @default -90\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Start_end_angles} for more info\n\t */\n\tstartAngle?: number;\n\n\t/**\n\t * Chart end angle in degrees.\n\t *\n\t * @default 270\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Start_end_angles} for more info\n\t */\n\tendAngle?: number;\n\n\t/**\n\t * [[RadarCursor]] instance.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/#Cursor} for more info\n\t */\n\tcursor?: RadarCursor;\n\n}\n\nexport interface IRadarChartPrivate extends IXYChartPrivate {\n\n\t/**\n\t * Radius in pixels.\n\t */\n\tradius?: number;\n\n\t/**\n\t * Inner radius in pixels.\n\t */\n\tinnerRadius?: number;\n\n\t/**\n\t * @ignore\n\t */\n\tirModifyer?: number;\n\n}\n\n/**\n * Radar chart.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/} for more info\n * @important\n */\nexport class RadarChart extends XYChart {\n\n\t/**\n\t * [[Container]] where radar-related elements go.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly radarContainer = this.plotContainer.children.push(Container.new(this._root, { x: p50, y: p50 }));\n\n\tpublic static className: string = \"RadarChart\";\n\tpublic static classNames: Array<string> = XYChart.classNames.concat([RadarChart.className]);\n\n\tdeclare public _settings: IRadarChartSettings;\n\tdeclare public _privateSettings: IRadarChartPrivate;\n\n\tprotected _arcGenerator = arc();\n\tdeclare public _seriesType: RadarColumnSeries | RadarLineSeries;\n\n\tprotected _maxRadius: number = 1;\n\n\tprotected _afterNew() {\n\t\tthis._defaultThemes.push(RadarDefaultTheme.new(this._root));\n\n\t\tsuper._afterNew();\n\n\t\tconst radarContainer = this.radarContainer;\n\t\tconst gridContainer = this.gridContainer;\n\t\tconst topGridContainer = this.topGridContainer;\n\t\tconst seriesContainer = this.seriesContainer;\n\t\tconst bulletsContainer = this.bulletsContainer;\n\n\t\tradarContainer.children.pushAll([gridContainer, seriesContainer, topGridContainer, bulletsContainer]);\n\n\t\tseriesContainer.set(\"mask\", Graphics.new(this._root, {}));\n\t\tgridContainer.set(\"mask\", Graphics.new(this._root, {}));\n\n\t\tthis._disposers.push(this.plotContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis._updateRadius();\n\t\t}));\n\t}\n\n\tprotected _maskGrid(){\n\t\t\n\t}\n\n\n\tpublic _prepareChildren() {\n\t\tsuper._prepareChildren();\n\n\t\tif (this._sizeDirty || this.isDirty(\"radius\") || this.isDirty(\"innerRadius\") || this.isDirty(\"startAngle\") || this.isDirty(\"endAngle\")) {\n\n\t\t\tconst chartContainer = this.chartContainer;\n\t\t\tconst w = chartContainer.innerWidth();\n\t\t\tconst h = chartContainer.innerHeight();\n\n\t\t\tconst startAngle = this.get(\"startAngle\", 0);\n\t\t\tconst endAngle = this.get(\"endAngle\", 0);\n\t\t\tconst innerRadius = this.get(\"innerRadius\");\n\n\n\t\t\tlet bounds = $math.getArcBounds(0, 0, startAngle, endAngle, 1);\n\n\t\t\tconst wr = w / (bounds.right - bounds.left);\n\t\t\tconst hr = h / (bounds.bottom - bounds.top);\n\n\t\t\tlet innerBounds = { left: 0, right: 0, top: 0, bottom: 0 };\n\n\t\t\tif (innerRadius instanceof Percent) {\n\t\t\t\tlet value = innerRadius.value;\n\t\t\t\tlet mr = Math.min(wr, hr);\n\t\t\t\tvalue = Math.max(mr * value, mr - Math.min(h, w)) / mr;\n\t\t\t\tinnerBounds = $math.getArcBounds(0, 0, startAngle, endAngle, value);\n\t\t\t\tthis.setPrivateRaw(\"irModifyer\", value / innerRadius.value);\n\t\t\t}\n\n\t\t\tbounds = $math.mergeBounds([bounds, innerBounds]);\n\n\t\t\tthis._maxRadius = Math.max(0, Math.min(wr, hr));\n\n\t\t\tconst radius = $utils.relativeToValue(this.get(\"radius\", 0), this._maxRadius);\n\t\t\tthis.radarContainer.setAll({\n\t\t\t\tdy: -radius * (bounds.bottom + bounds.top) / 2, dx: -radius * (bounds.right + bounds.left) / 2\n\t\t\t})\n\n\t\t\tthis._updateRadius();\n\t\t}\n\t}\n\n\tprotected _addCursor(cursor: RadarCursor) {\n\t\tthis.radarContainer.children.push(cursor);\n\t}\n\n\n\t// do not delete\n\tpublic _updateRadius() {\n\t\tconst radius = $utils.relativeToValue(this.get(\"radius\", percent(80)), this._maxRadius);\n\t\tthis.setPrivateRaw(\"radius\", radius);\n\n\t\tlet innerRadius = $utils.relativeToValue(this.get(\"innerRadius\", 0), radius);\n\n\t\tif (innerRadius < 0) {\n\t\t\tinnerRadius = radius + innerRadius;\n\t\t}\n\n\t\tthis.setPrivateRaw(\"innerRadius\", innerRadius);\n\n\t\tthis.xAxes.each((axis) => {\n\t\t\tconst renderer = axis.get(\"renderer\") as AxisRendererCircular;\n\t\t\trenderer.updateLayout();\n\t\t})\n\n\t\tthis.yAxes.each((axis) => {\n\t\t\tconst renderer = axis.get(\"renderer\") as AxisRendererRadial;\n\t\t\trenderer.updateLayout();\n\t\t})\n\n\t\tthis._updateMask(this.seriesContainer, innerRadius, radius);\n\t\tthis._updateMask(this.gridContainer, innerRadius, radius);\n\n\t\tthis.series.each((series) => {\t\t\t\n\t\t\tif ((series as XYSeries).get(\"maskBullets\")) {\n\t\t\t\tthis._updateMask(series.bulletsContainer, innerRadius, radius);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tseries.bulletsContainer.remove(\"mask\");\n\t\t\t}\n\t\t})\n\n\t\tconst cursor = this.get(\"cursor\");\n\t\tif (cursor) {\n\t\t\tcursor.updateLayout();\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic _updateMask(container: Container, innerRadius: number, radius: number) {\n\t\tconst mask = container.get(\"mask\");\n\t\tif (mask) {\n\t\t\tmask.set(\"draw\", (display) => {\n\t\t\t\tthis._arcGenerator.context(display as any);\n\t\t\t\tthis._arcGenerator({ innerRadius: innerRadius, outerRadius: radius + .5, startAngle: (this.get(\"startAngle\", 0) + 90) * $math.RADIANS, endAngle: (this.get(\"endAngle\", 0) + 90) * $math.RADIANS });\n\t\t\t})\n\t\t}\n\t}\n\n\t/**\n\t * @ignore\n\t */\n\tpublic processAxis(axis: Axis<AxisRendererRadial | AxisRendererCircular>) {\n\t\tthis.radarContainer.children.push(axis);\n\t}\n\n\tprotected _processSeries(series: this[\"_seriesType\"]) {\n\t\tsuper._processSeries(series);\n\t\tthis._updateRadius();\n\t}\t\n\n\t/**\n\t * @ignore\n\t */\n\tpublic inPlot(point: IPoint, radius?: number, innerRadius?: number): boolean {\n\t\tconst r = Math.hypot(point.x, point.y);\n\t\tconst angle = $math.normalizeAngle(Math.atan2(point.y, point.x) * $math.DEGREES);\n\n\t\tlet startAngle = $math.normalizeAngle(this.get(\"startAngle\", 0));\n\t\tlet endAngle = $math.normalizeAngle(this.get(\"endAngle\", 0));\n\n\t\tlet inArc = false;\n\t\tif (startAngle < endAngle) {\n\t\t\tif (startAngle < angle && angle < endAngle) {\n\t\t\t\tinArc = true;\n\t\t\t}\n\t\t}\n\n\t\tif (startAngle > endAngle) {\n\t\t\tif (angle > startAngle) {\n\t\t\t\tinArc = true;\n\t\t\t}\n\t\t\tif (angle < endAngle) {\n\t\t\t\tinArc = true;\n\t\t\t}\n\t\t}\n\n\t\tif (startAngle == endAngle) {\n\t\t\tinArc = true;\n\t\t}\n\n\t\tif (!inArc) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif (radius == null) {\n\t\t\tradius = this.getPrivate(\"radius\", 0);\n\t\t}\n\n\t\tif (innerRadius == null) {\n\t\t\tinnerRadius = this.getPrivate(\"innerRadius\", 0);\n\t\t}\n\n\t\tif (innerRadius > radius) {\n\t\t\t[innerRadius, radius] = [radius, innerRadius];\n\t\t}\n\n\t\tif (r <= radius + .5 && r >= innerRadius - .5) {\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\tprotected _tooltipToLocal(point: IPoint): IPoint {\n\t\treturn this.radarContainer._display.toLocal(point);\n\t}\n\n\tprotected _handlePinch(){\n\t\t\n\t}\n}\n"]}
@@ -10,7 +10,7 @@ export interface IRadarLineSeriesSettings extends ILineSeriesSettings {
10
10
  * first one with a line, thus completing full circle.
11
11
  *
12
12
  * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/radar-series/#Connecting_ends} for more info
13
- * @default @true
13
+ * @default true
14
14
  */
15
15
  connectEnds?: boolean;
16
16
  }
@@ -1 +1 @@
1
- {"version":3,"file":"RadarLineSeries.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/radar/RadarLineSeries.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAsF,MAAM,yBAAyB,CAAC;AAKzI,OAAO,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAGtD,OAAO,KAAK,KAAK,MAAM,sBAAsB,CAAC;AAwB9C;;;;GAIG;AACH,MAAM,OAAO,eAAgB,SAAQ,UAAU;IAepC,SAAS;QAClB,KAAK,CAAC,SAAS,EAAE,CAAC;QAClB,IAAI,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IAES,kBAAkB;IAE5B,CAAC;IAEM,QAAQ,CAAC,SAAiB,EAAE,SAAiB;QAEnD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEhC,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAuB,CAAC;QAE9D,MAAM,MAAM,GAAG,SAAS,CAAC,oBAAoB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;QAElG,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,UAAU,CAAyB,CAAC;QAChE,MAAM,KAAK,GAAG,SAAS,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEnD,OAAO,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;IACvE,CAAC;IAES,QAAQ,CAAC,MAA4B,EAAE,UAAyB;QACzE,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,UAAU,EAAE;YAC1C,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACxB;IACF,CAAC;IAGS,cAAc,CAAC,QAAgB;QACxC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACjE,OAAO,KAAK,CAAC;SACb;QACD,OAAO,IAAI,CAAC;IACb,CAAC;IAES,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;QAChE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;YACnE,OAAO,KAAK,CAAC;SACb;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC1B,CAAC;IAEM,eAAe,CAAC,MAAc;QAEpC,IAAI,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,IAAI,MAAM,EAAE;YACX,IAAI,QAAQ,GAAG,MAAM,CAAC,QAA+C,CAAC;YAEtE,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YACxE,IAAI,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,GAAG,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;YAExE,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,sCAAsC;YAEtC,wBAAwB;YACxB,gBAAgB;YAChB,GAAG;YACH,6BAA6B;YAC7B,gBAAgB;YAChB,GAAG;YAEH,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;YACpG,MAAM,SAAS,GAAG,KAAK,CAAC,oBAAoB,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;YAEnG,IAAI,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAEhD,IAAI,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE;gBACjD,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;gBAEnC,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;aACzB;iBACI;gBACJ,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;aACpC;SACD;IACF,CAAC;;AAvFa,yBAAS,GAAW,iBAAiB,CAAC;AACtC,0BAAU,GAAkB,UAAU,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC","sourcesContent":["import { LineSeries, ILineSeriesPrivate, ILineSeriesSettings, ILineSeriesDataItem, ILineSeriesAxisRange } from \"../xy/series/LineSeries\";\nimport type { IPoint } from \"../../core/util/IPoint\";\nimport type { AxisRendererCircular } from \"./AxisRendererCircular\";\nimport type { AxisRendererRadial } from \"./AxisRendererRadial\";\nimport type { Bullet } from \"../../core/render/Bullet\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport type { RadarChart } from \"./RadarChart\";\nimport type { DataItem } from \"../../core/render/Component\";\nimport * as $math from \"../../core/util/Math\";\n\nexport interface IRadarLineSeriesDataItem extends ILineSeriesDataItem {\n}\n\nexport interface IRadarLineSeriesSettings extends ILineSeriesSettings {\n\n\t/**\n\t * If set to `true` (default), series will connect its last data point to the\n\t * first one with a line, thus completing full circle.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/radar-series/#Connecting_ends} for more info\n\t * @default @true\n\t */\n\tconnectEnds?: boolean;\n\n}\n\nexport interface IRadarLineSeriesPrivate extends ILineSeriesPrivate {\n}\n\nexport interface IRadarLineSeriesAxisRange extends ILineSeriesAxisRange {\n}\n\n/**\n * Draws a line series for use in a [[RadarChart]].\n *\n * @important\n */\nexport class RadarLineSeries extends LineSeries {\n\n\tdeclare public _settings: IRadarLineSeriesSettings;\n\tdeclare public _privateSettings: IRadarLineSeriesPrivate;\n\tdeclare public _dataItemSettings: IRadarLineSeriesDataItem;\n\tdeclare public _axisRangeType: IRadarLineSeriesAxisRange;\n\n\t/**\n\t * A chart series belongs to.\n\t */\n\tdeclare public chart: RadarChart | undefined;\n\n\tpublic static className: string = \"RadarLineSeries\";\n\tpublic static classNames: Array<string> = LineSeries.classNames.concat([RadarLineSeries.className]);\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.set(\"maskContent\", false);\n\t\tthis.bulletsContainer.set(\"maskContent\", false);\n\t\tthis.bulletsContainer.set(\"mask\", Graphics.new(this._root, {}));\n\t}\n\n\tprotected _handleMaskBullets() {\n\n\t}\n\n\tpublic getPoint(positionX: number, positionY: number): IPoint {\n\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst xAxis = this.get(\"xAxis\");\n\n\t\tconst rendererY = yAxis.get(\"renderer\") as AxisRendererRadial;\n\n\t\tconst radius = rendererY.positionToCoordinate(positionY) + rendererY.getPrivate(\"innerRadius\", 0);\n\n\t\tconst rendererX = xAxis.get(\"renderer\") as AxisRendererCircular;\n\t\tconst angle = rendererX.positionToAngle(positionX);\n\n\t\treturn { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\n\t}\n\n\tprotected _endLine(points: Array<Array<number>>, firstPoint: Array<number>) {\n\t\tif (this.get(\"connectEnds\") && firstPoint) {\n\t\t\tpoints.push(firstPoint);\n\t\t}\n\t}\n\n\n\tprotected _shouldInclude(position: number): boolean {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (position < xAxis.get(\"start\") || position > xAxis.get(\"end\")) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprotected _shouldShowBullet(positionX: number, _positionY: number): boolean {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (positionX < xAxis.get(\"start\") || positionX > xAxis.get(\"end\")) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._showBullets;\n\t}\n\n\tpublic _positionBullet(bullet: Bullet) {\n\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\t\t\t//let baseAxis = this.get(\"baseAxis\");\n\n\t\t\t//if(xAxis == baseAxis){\n\t\t\t//locationY = 1;\n\t\t\t//}\n\t\t\t//else if(yAxis == baseAxis){\n\t\t\t//locationX = 1;\n\t\t\t//}\n\n\t\t\tconst positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1));\n\t\t\tconst positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1))\n\n\t\t\tlet point = this.getPoint(positionX, positionY);\n\n\t\t\tif (this._shouldShowBullet(positionX, positionY)) {\n\t\t\t\tsprite.setPrivate(\"visible\", true);\n\n\t\t\t\tsprite.set(\"x\", point.x);\n\t\t\t\tsprite.set(\"y\", point.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"]}
1
+ {"version":3,"file":"RadarLineSeries.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/radar/RadarLineSeries.ts"],"names":[],"mappings":"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","sourcesContent":["import { LineSeries, ILineSeriesPrivate, ILineSeriesSettings, ILineSeriesDataItem, ILineSeriesAxisRange } from \"../xy/series/LineSeries\";\nimport type { IPoint } from \"../../core/util/IPoint\";\nimport type { AxisRendererCircular } from \"./AxisRendererCircular\";\nimport type { AxisRendererRadial } from \"./AxisRendererRadial\";\nimport type { Bullet } from \"../../core/render/Bullet\";\nimport { Graphics } from \"../../core/render/Graphics\";\nimport type { RadarChart } from \"./RadarChart\";\nimport type { DataItem } from \"../../core/render/Component\";\nimport * as $math from \"../../core/util/Math\";\n\nexport interface IRadarLineSeriesDataItem extends ILineSeriesDataItem {\n}\n\nexport interface IRadarLineSeriesSettings extends ILineSeriesSettings {\n\n\t/**\n\t * If set to `true` (default), series will connect its last data point to the\n\t * first one with a line, thus completing full circle.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/radar-chart/radar-series/#Connecting_ends} for more info\n\t * @default true\n\t */\n\tconnectEnds?: boolean;\n\n}\n\nexport interface IRadarLineSeriesPrivate extends ILineSeriesPrivate {\n}\n\nexport interface IRadarLineSeriesAxisRange extends ILineSeriesAxisRange {\n}\n\n/**\n * Draws a line series for use in a [[RadarChart]].\n *\n * @important\n */\nexport class RadarLineSeries extends LineSeries {\n\n\tdeclare public _settings: IRadarLineSeriesSettings;\n\tdeclare public _privateSettings: IRadarLineSeriesPrivate;\n\tdeclare public _dataItemSettings: IRadarLineSeriesDataItem;\n\tdeclare public _axisRangeType: IRadarLineSeriesAxisRange;\n\n\t/**\n\t * A chart series belongs to.\n\t */\n\tdeclare public chart: RadarChart | undefined;\n\n\tpublic static className: string = \"RadarLineSeries\";\n\tpublic static classNames: Array<string> = LineSeries.classNames.concat([RadarLineSeries.className]);\n\n\tprotected _afterNew() {\n\t\tsuper._afterNew();\n\t\tthis.set(\"maskContent\", false);\n\t\tthis.bulletsContainer.set(\"maskContent\", false);\n\t\tthis.bulletsContainer.set(\"mask\", Graphics.new(this._root, {}));\n\t}\n\n\tprotected _handleMaskBullets() {\n\n\t}\n\n\tpublic getPoint(positionX: number, positionY: number): IPoint {\n\n\t\tconst yAxis = this.get(\"yAxis\");\n\t\tconst xAxis = this.get(\"xAxis\");\n\n\t\tconst rendererY = yAxis.get(\"renderer\") as AxisRendererRadial;\n\n\t\tconst radius = rendererY.positionToCoordinate(positionY) + rendererY.getPrivate(\"innerRadius\", 0);\n\n\t\tconst rendererX = xAxis.get(\"renderer\") as AxisRendererCircular;\n\t\tconst angle = rendererX.positionToAngle(positionX);\n\n\t\treturn { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\n\t}\n\n\tprotected _endLine(points: Array<Array<number>>, firstPoint: Array<number>) {\n\t\tif (this.get(\"connectEnds\") && firstPoint) {\n\t\t\tpoints.push(firstPoint);\n\t\t}\n\t}\n\n\n\tprotected _shouldInclude(position: number): boolean {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (position < xAxis.get(\"start\") || position > xAxis.get(\"end\")) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\n\tprotected _shouldShowBullet(positionX: number, _positionY: number): boolean {\n\t\tconst xAxis = this.get(\"xAxis\");\n\t\tif (positionX < xAxis.get(\"start\") || positionX > xAxis.get(\"end\")) {\n\t\t\treturn false;\n\t\t}\n\t\treturn this._showBullets;\n\t}\n\n\tpublic _positionBullet(bullet: Bullet) {\n\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\t\t\t//let baseAxis = this.get(\"baseAxis\");\n\n\t\t\t//if(xAxis == baseAxis){\n\t\t\t//locationY = 1;\n\t\t\t//}\n\t\t\t//else if(yAxis == baseAxis){\n\t\t\t//locationX = 1;\n\t\t\t//}\n\n\t\t\tconst positionX = xAxis.getDataItemPositionX(dataItem, this._xField, locationX, this.get(\"vcx\", 1));\n\t\t\tconst positionY = yAxis.getDataItemPositionY(dataItem, this._yField, locationY, this.get(\"vcy\", 1))\n\n\t\t\tlet point = this.getPoint(positionX, positionY);\n\n\t\t\tif (this._shouldShowBullet(positionX, positionY)) {\n\t\t\t\tsprite.setPrivate(\"visible\", true);\n\n\t\t\t\tsprite.set(\"x\", point.x);\n\t\t\t\tsprite.set(\"y\", point.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"]}
@@ -227,7 +227,7 @@ export declare class StockChart extends Container {
227
227
  */
228
228
  readonly indicators: ListAutoDispose<Indicator>;
229
229
  /**
230
- * A [[Container]], resiting on top of the charts, suitable for additional
230
+ * A [[Container]], resting on top of the charts, suitable for additional
231
231
  * tools, like [[Scrollbar]].
232
232
  *
233
233
  * @default Container.new()
@@ -254,7 +254,7 @@ export declare class StockChart extends Container {
254
254
  protected _afterNew(): void;
255
255
  protected _dispose(): void;
256
256
  /**
257
- * Forces redrawing of all annotations (drfawings).
257
+ * Forces redrawing of all annotations (drawings).
258
258
  */
259
259
  markDirtyDrawings(): void;
260
260
  /**
@@ -312,7 +312,7 @@ export declare class StockChart extends Container {
312
312
  /**
313
313
  * Returns a color for volume, based on current and previous close.
314
314
  *
315
- * * `positiveColor` - close is greater or euqal than close of the previous period.
315
+ * * `positiveColor` - close is greater or equal than close of the previous period.
316
316
  * * `negativeColor` - close is lower than close of the previous period.
317
317
  *
318
318
  * @param dataItem Target data item
@@ -40,7 +40,7 @@ export class StockChart extends Container {
40
40
  */
41
41
  this.indicators = new ListAutoDispose();
42
42
  /**
43
- * A [[Container]], resiting on top of the charts, suitable for additional
43
+ * A [[Container]], resting on top of the charts, suitable for additional
44
44
  * tools, like [[Scrollbar]].
45
45
  *
46
46
  * @default Container.new()
@@ -156,7 +156,7 @@ export class StockChart extends Container {
156
156
  }
157
157
  }
158
158
  /**
159
- * Forces redrawing of all annotations (drfawings).
159
+ * Forces redrawing of all annotations (drawings).
160
160
  */
161
161
  markDirtyDrawings() {
162
162
  this._drawingsChanged = true;
@@ -803,7 +803,7 @@ export class StockChart extends Container {
803
803
  /**
804
804
  * Returns a color for volume, based on current and previous close.
805
805
  *
806
- * * `positiveColor` - close is greater or euqal than close of the previous period.
806
+ * * `positiveColor` - close is greater or equal than close of the previous period.
807
807
  * * `negativeColor` - close is lower than close of the previous period.
808
808
  *
809
809
  * @param dataItem Target data item
@@ -1 +1 @@
1
- {"version":3,"file":"StockChart.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/stock/StockChart.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StockPanel } from \"./StockPanel\";\nimport type { StockLegend, IStockLegendDataItem } from \"./StockLegend\";\nimport type { Axis } from \"../xy/axes/Axis\";\nimport type { DateAxis } from \"../xy/axes/DateAxis\";\nimport type { AxisRenderer } from \"../xy/axes/AxisRenderer\";\nimport type { BaseColumnSeries } from \"../xy/series/BaseColumnSeries\";\nimport type { IValueAxisSettings, ValueAxis } from \"../xy/axes/ValueAxis\";\nimport type { XYSeries, IXYSeriesDataItem, IXYSeriesSettings } from \"../xy/series/XYSeries\";\nimport type { DataItem } from \"../../core/render/Component\";\nimport type { Indicator } from \"./indicators/Indicator\";\nimport type { DrawingSeries } from \"./drawing/DrawingSeries\";\nimport type { StockControl } from \"./toolbar/StockControl\";\nimport { MultiDisposer, IDisposer } from \"../../core/util/Disposer\";\n\nimport { SpriteResizer } from \"../../core/render/SpriteResizer\";\nimport { PanelControls } from \"./PanelControls\";\nimport { StockChartDefaultTheme } from \"./StockChartDefaultTheme\";\nimport { XYChartDefaultTheme } from \"../xy/XYChartDefaultTheme\";\nimport { Container, IContainerPrivate, IContainerSettings, IContainerEvents } from \"../../core/render/Container\";\nimport { ListAutoDispose } from \"../../core/util/List\";\nimport { Rectangle } from \"../../core/render/Rectangle\";\nimport { p100, percent, Percent } from \"../../core/util/Percent\";\nimport { SettingsModal } from \"./SettingsModal\";\nimport { Color } from \"../../core/util/Color\";\nimport { registry } from \"../../core/Registry\";\nimport { registerCustomClass } from \"../../plugins/json/Json\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $object from \"../../core/util/Object\";\nimport type { GaplessDateAxis } from \"../xy/axes/GaplessDateAxis\";\nimport type { ChartIndicator } from \"./indicators/ChartIndicator\";\nimport type { ISpritePointerEvent } from \"../../core/render/Sprite\";\n\n\nexport interface IStockChartSettings extends IContainerSettings {\n\n\t/**\n\t * Main value series.\n\t *\n\t * This series is used to target by settings, as well as calculating\n\t * indicators, and annotations.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Setting_main_series}\n\t */\n\tstockSeries?: XYSeries;\n\n\t/**\n\t * Main volume series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Setting_main_series}\n\t */\n\tvolumeSeries?: XYSeries;\n\n\t/**\n\t * @ignore\n\t */\n\tcomparingSeriesSettings?: Partial<IXYSeriesSettings>;\n\n\t/**\n\t * Settings to be applied to the the main value series, when chart is\n\t * switched to \"percent scale\".\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/percent-mode/#Configuring} for more info\n\t */\n\tpercentScaleSeriesSettings?: Partial<IXYSeriesSettings>;\n\n\t/**\n\t * Settings to be applied to the [[ValueAxis]] of the main value series,\n\t * when chart is switched to \"percent scale\".\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/percent-mode/#Configuring} for more info\n\t */\n\tpercentScaleValueAxisSettings?: Partial<IValueAxisSettings<AxisRenderer>>;\n\n\t/**\n\t * If set to `true`, the chart will go into \"percent scale\" when compared\n\t * series are added to chart, and will exit it when all of the comparisons\n\t * are removed.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/percent-mode/} for more info\n\t * @default true\n\t */\n\tautoSetPercentScale?: boolean;\n\n\t/**\n\t * This color will be applied to columns/candles on the main value series (series\n\t * set as `stockSeries`) where the open value is lower or equal to the close\n\t * value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tstockPositiveColor?: Color | null;\n\n\t/**\n\t * This color will be applied to columns/candles on the main value series (series\n\t * set as `stockSeries`) where the open value is higher than the close value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tstockNegativeColor?: Color | null;\n\n\t/**\n\t * This color will be applied to columns/candles on the main volume series (series\n\t * set as `stockSeries`) where the open value is lower or equal to the close\n\t * value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tvolumePositiveColor?: Color | null;\n\n\t/**\n\t * This color will be applied to columns/candles on the main volume series (series\n\t * set as `stockSeries`) where the open value is higher than the close value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tvolumeNegativeColor?: Color | null;\n\n\t/**\n\t * If set to `true`, all drawings will be selectable.\n\t *\n\t * Selectable drawings can be moved, rotated, or deleted.\n\t *\n\t * @default false\n\t * @since 5.9.1\n\t */\n\tdrawingSelectionEnabled?: boolean;\n\n\t/**\n\t * If set to `true`, clicking on drawings will delete them.\n\t *\n\t * @default false\n\t * @since 5.9.2\n\t */\n\terasingEnabled?: boolean;\n\n\t/**\n\t * If set to `true` drawing grips will be hidden when [[StockChart]] is not\n\t * in drawing mode.\n\t *\n\t * @default false\n\t * @since 5.10.6\n\t */\n\thideDrawingGrips?: boolean;\n\n\t/**\n\t * If set to `true`, panel controls will automatically hide when mouse is\n\t * not over the chart.\n\t *\n\t * @default false\n\t * @since 5.13.0\n\t */\n\tautoHidePanelControls?: boolean;\n\n}\n\nexport interface IStockChartPrivate extends IContainerPrivate {\n\n\t/**\n\t * A instance of [[SettingsModal]].\n\t */\n\tsettingsModal: SettingsModal;\n\n\t/**\n\t * Indicates if chart has currently have any \"compared\" series set.\n\t */\n\tcomparing?: boolean;\n\n\t/**\n\t * A list of compared series.\n\t */\n\tcomparedSeries?: XYSeries[];\n\n\t/**\n\t * Main Date axis of a Stock chart\n\t */\n\tmainAxis?: DateAxis<AxisRenderer>\n\n\n\tdrawingSelectionEnabled?: boolean;\n}\n\nexport interface IStockChartEvents extends IContainerEvents {\n\t/**\n\t * Kicks in when drawings change.\n\t */\n\tdrawingsupdated: {};\n\n\t/**\n\t * Kicks in when indicators change.\n\t */\n\tindicatorsupdated: {};\n\n\t/**\n\t * Kicks in when a drawing is added.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingadded: { drawingId: string, series: DrawingSeries, index: number };\n\n\t/**\n\t * Kicks in when a drawing is removed.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingremoved: { drawingId: string, series: DrawingSeries, index: number };\n\n\t/**\n\t * Kicks in when a drawing is selected.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingselected: { drawingId: string, series: DrawingSeries, index: number };\n\n\t/**\n\t * Kicks in when a drawing is unselected.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingunselected: { drawingId: string, series: DrawingSeries, index: number };\n}\n\n\n/**\n * A main class for the Stock Chart.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/} for more info\n * @important\n */\nexport class StockChart extends Container {\n\n\tpublic static className: string = \"StockChart\";\n\tpublic static classNames: Array<string> = Container.classNames.concat([StockChart.className]);\n\n\n\tdeclare public _settings: IStockChartSettings;\n\tdeclare public _privateSettings: IStockChartPrivate;\n\tdeclare public _events: IStockChartEvents;\n\n\tprotected _xAxes: Array<Axis<AxisRenderer>> = [];\n\tprotected _downY?: number;\n\tprotected _upperPanel?: StockPanel;\n\tprotected _dhp?: Percent;\n\tprotected _uhp?: Percent;\n\tprotected _downResizer?: Rectangle;\n\tprotected _syncExtremesDp?: MultiDisposer;\n\tprotected _drawingsChanged = false;\n\tprotected _indicatorsChanged = false;\n\tprotected _baseDP?: IDisposer;\n\n\t//public _selectionWasOn: boolean = false;\n\n\t/**\n\t * A list of stock panels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Panels} for more info\n\t */\n\tpublic readonly panels: ListAutoDispose<StockPanel> = new ListAutoDispose();\n\n\t/**\n\t * A list of indicators on chart.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\n\t */\n\tpublic readonly indicators: ListAutoDispose<Indicator> = new ListAutoDispose();\n\n\t/**\n\t * A [[Container]], resiting on top of the charts, suitable for additional\n\t * tools, like [[Scrollbar]].\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly toolsContainer: Container = this.children.push(Container.new(this._root, { width: p100, themeTags: [] }));\n\n\t/**\n\t * A [[Container]] where all the stock panels are placed into.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly panelsContainer: Container = this.children.push(Container.new(this._root, { width: p100, height: p100, layout: this._root.verticalLayout, themeTags: [\"chartscontainer\"] }));\n\n\t/**\n\t * An array of all Stock Controls that are created for this chart.\n\t *\n\t * @since 5.7.0\n\t */\n\tpublic readonly controls: StockControl[] = [];\n\n\t/**\n\t * An instance of [[SpriteResizer]] used for various drawing tools.\n\t *\n\t * @since 5.7.0\n\t */\n\tpublic spriteResizer = this.children.push(SpriteResizer.new(this._root, {}));\n\n\n\tprotected _afterNew() {\n\t\tthis._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"stock\"]);\n\t\tthis._defaultThemes.push(StockChartDefaultTheme.new(this._root));\n\t\tthis._defaultThemes.push(XYChartDefaultTheme.new(this._root));\n\n\t\tconst tooltipContainer = this._root.tooltipContainer;\n\t\ttooltipContainer.set(\"themeTags\", $utils.mergeTags(tooltipContainer.get(\"themeTags\", []), [\"stock\"]));\n\n\t\tsuper._afterNew();\n\n\t\tif ($utils.supports(\"keyboardevents\")) {\n\t\t\tthis._disposers.push($utils.addEventListener(document, \"keyup\", (e: KeyboardEvent) => {\n\t\t\t\tif (e.keyCode == 46) {\n\t\t\t\t\tthis.deleteSelectedDrawings();\n\t\t\t\t}\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tthis.unselectDrawings();\n\t\t\t\t\tthis.cancelDrawing();\n\t\t\t\t\tthis.spriteResizer.set(\"sprite\", undefined);\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\n\t\tconst children = this.panelsContainer.children;\n\t\tthis._disposers.push(this.panels.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (chart) => {\n\t\t\t\t\tthis._removePanel(chart);\n\t\t\t\t})\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tchildren.moveValue(change.newValue);\n\t\t\t\tthis._processPanel(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tchildren.setIndex(change.index, change.newValue);\n\t\t\t\tthis._processPanel(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tchildren.insertIndex(change.index, change.newValue);\n\t\t\t\tthis._processPanel(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removePanel(change.oldValue);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IListEvent type\");\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposers.push(this.indicators.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (indicator) => {\n\t\t\t\t\tthis._removeIndicator(indicator);\n\t\t\t\t})\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tthis._processIndicator(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tthis._processIndicator(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tthis._processIndicator(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removeIndicator(change.oldValue);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IListEvent type\");\n\t\t\t}\n\t\t}));\n\n\t\tthis.setPrivateRaw(\"settingsModal\", SettingsModal.new(this.root, {\n\t\t\tstockChart: this\n\t\t}));\n\n\t\tlet license = false;\n\t\tfor (let i = 0; i < registry.licenses.length; i++) {\n\t\t\tif (registry.licenses[i].match(/^AM5S.{5,}/i)) {\n\t\t\t\tlicense = true;\n\t\t\t}\n\t\t}\n\t\tif (!license) {\n\t\t\tthis._root._showBranding();\n\t\t}\n\t\telse {\n\t\t\tthis._root._licenseApplied();\n\t\t}\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\t\tconst settingsModal = this.getPrivate(\"settingsModal\");\n\t\tif (settingsModal) {\n\t\t\tsettingsModal.dispose();\n\t\t}\n\t}\n\n\t/**\n\t * Forces redrawing of all annotations (drfawings).\n\t */\n\tpublic markDirtyDrawings() {\n\t\tthis._drawingsChanged = true;\n\t\tthis.markDirty();\n\t}\n\n\t/**\n\t * Forces redrawing of Indicators.\n\t */\n\tpublic markDirtyIndicators() {\n\t\tthis._indicatorsChanged = true;\n\t\tthis.markDirty();\n\t}\n\n\n\t/**\n\t * Toggles drawing mode on or off.\n\t *\n\t * @param enabled Drawing enabled\n\t * @since 5.10.6\n\t */\n\tpublic toggleDrawing(enabled?: boolean) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.toggleDrawing(enabled);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic _prepareChildren() {\n\t\tif (this.isDirty(\"drawingSelectionEnabled\")) {\n\t\t\tconst enabled = this.get(\"drawingSelectionEnabled\");\n\t\t\tif (enabled !== undefined) {\n\t\t\t\tthis._root.events.once(\"frameended\", () => {\n\t\t\t\t\tthis.setPrivate(\"drawingSelectionEnabled\", enabled);\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (this.isPrivateDirty(\"drawingSelectionEnabled\")) {\n\t\t\tconst enabled = this.getPrivate(\"drawingSelectionEnabled\", false);\n\n\t\t\tif (!enabled) {\n\t\t\t\tthis.unselectDrawings();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.set(\"erasingEnabled\", false);\n\t\t\t}\n\n\t\t\tthis.panels.each((panel) => {\n\t\t\t\tpanel.series.each((series) => {\n\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\tseries.enableDrawingSelection(enabled);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tif (this.isDirty(\"erasingEnabled\")) {\n\t\t\tconst enabled = this.get(\"erasingEnabled\", false);\n\t\t\tif (enabled) {\n\t\t\t\tthis.setPrivate(\"drawingSelectionEnabled\", false);\n\t\t\t}\n\t\t\tthis.panels.each((panel) => {\n\t\t\t\tpanel.series.each((series) => {\n\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\tseries.enableErasing();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tseries.disableErasing();\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\tif (this.isDirty(\"volumeNegativeColor\") || this.isDirty(\"volumePositiveColor\")) {\n\t\t\tconst volumeSeries = this.get(\"volumeSeries\");\n\t\t\tif (volumeSeries && volumeSeries.isType<BaseColumnSeries>(\"BaseColumnSeries\")) {\n\t\t\t\tvolumeSeries.columns.each((column) => {\n\t\t\t\t\tcolumn._markDirtyKey(\"fill\");\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\n\t\tif (this.isDirty(\"stockSeries\")) {\n\t\t\tif (stockSeries) {\n\t\t\t\tconst previous = this._prevSettings.stockSeries;\n\t\t\t\tthis.indicators.each((indicator) => {\n\t\t\t\t\tif (previous == indicator.get(\"stockSeries\")) {\n\t\t\t\t\t\tindicator.set(\"stockSeries\", stockSeries);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tindicator._setSoft(\"stockSeries\", stockSeries);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tconst mainChart = stockSeries.chart;\n\n\t\t\t\tif (mainChart) {\n\t\t\t\t\tmainChart.series.each((series) => {\n\t\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\t\tlet s = series.get(\"series\");\n\t\t\t\t\t\t\tif (s == previous) {\n\t\t\t\t\t\t\t\tseries.set(\"series\", stockSeries);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tseries._setSoft(\"series\", stockSeries);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst xAxis = mainChart.xAxes.getIndex(0) as DateAxis<AxisRenderer>;\n\t\t\t\t\tif (xAxis) {\n\t\t\t\t\t\tif (this._syncExtremesDp) {\n\t\t\t\t\t\t\tthis._syncExtremesDp.dispose();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.setPrivateRaw(\"mainAxis\", xAxis);\n\n\t\t\t\t\t\tif (this._baseDP) {\n\t\t\t\t\t\t\tthis._baseDP.dispose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._baseDP = xAxis.on(\"baseInterval\", (baseInterval) => {\n\t\t\t\t\t\t\tthis.indicators.each((indicator) => {\n\t\t\t\t\t\t\t\tif (indicator.isType<ChartIndicator>(\"ChartIndicator\")) {\n\t\t\t\t\t\t\t\t\tindicator.xAxis.set(\"baseInterval\", baseInterval);\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\n\t\t\t\t\t\tthis._syncExtremesDp = new MultiDisposer([\n\t\t\t\t\t\t\txAxis.onPrivate(\"max\", () => {\n\t\t\t\t\t\t\t\tthis._syncExtremes();\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\txAxis.onPrivate(\"min\", () => {\n\t\t\t\t\t\t\t\tthis._syncExtremes();\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}\n\n\t\t\t\tif (this.getPrivate(\"comparing\")) {\n\t\t\t\t\tthis.setPercentScale(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper._prepareChildren();\n\t}\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\t\tif (this._drawingsChanged) {\n\n\t\t\tthis._drawingsChanged = false;\n\t\t\tconst type = \"drawingsupdated\";\n\t\t\tif (this.events.isEnabled(type)) {\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this });\n\t\t\t}\n\t\t}\n\n\t\tif (this._indicatorsChanged) {\n\t\t\tthis._indicatorsChanged = false;\n\t\t\tconst type = \"indicatorsupdated\";\n\t\t\tif (this.events.isEnabled(type)) {\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _updateChildren() {\n\t\tsuper._updateChildren()\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\n\t\tif (this.isDirty(\"volumeSeries\")) {\n\t\t\tconst volumeSeries = this.get(\"volumeSeries\");\n\t\t\tif (volumeSeries) {\n\t\t\t\tconst volumePanel = volumeSeries.chart;\n\t\t\t\tif (volumePanel) {\n\t\t\t\t\tvolumePanel.series.events.on(\"removeIndex\", (event) => {\n\t\t\t\t\t\tif (event.oldValue == volumeSeries) {\n\t\t\t\t\t\t\tthis.set(\"volumeSeries\", undefined);\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\tif (this.isDirty(\"stockNegativeColor\") || this.isDirty(\"stockPositiveColor\") || this.isDirty(\"stockSeries\")) {\n\t\t\tif (stockSeries && stockSeries.isType<BaseColumnSeries>(\"BaseColumnSeries\")) {\n\t\t\t\tconst ic = this._root.interfaceColors;\n\t\t\t\tconst stockNegativeColor = this.get(\"stockNegativeColor\", ic.get(\"negative\"));\n\t\t\t\tconst stockPositiveColor = this.get(\"stockPositiveColor\", ic.get(\"positive\"));\n\t\t\t\tlet previous = stockSeries.dataItems[0];\n\n\t\t\t\tif (stockPositiveColor && stockPositiveColor) {\n\t\t\t\t\t$array.each(stockSeries.dataItems, (dataItem) => {\n\t\t\t\t\t\tconst column = dataItem.get(\"graphics\");\n\t\t\t\t\t\tif (column) {\n\t\t\t\t\t\t\tconst dropFromOpen = column.states.lookup(\"dropFromOpen\");\n\t\t\t\t\t\t\tif (dropFromOpen) {\n\t\t\t\t\t\t\t\tdropFromOpen.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst riseFromOpen = column.states.lookup(\"riseFromOpen\");\n\t\t\t\t\t\t\tif (riseFromOpen) {\n\t\t\t\t\t\t\t\triseFromOpen.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst dropFromPrevious = column.states.lookup(\"dropFromPrevious\");\n\t\t\t\t\t\t\tif (dropFromPrevious) {\n\t\t\t\t\t\t\t\tdropFromPrevious.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst riseFromPrevious = column.states.lookup(\"riseFromPrevious\");\n\t\t\t\t\t\t\tif (riseFromPrevious) {\n\t\t\t\t\t\t\t\triseFromPrevious.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstockSeries._applyGraphicsStates(dataItem, previous);\n\t\t\t\t\t\t\tprevious = dataItem;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconst states = stockSeries.columns.template.states;\n\n\t\t\t\t\tconst riseFromOpen = states.lookup(\"riseFromOpen\");\n\t\t\t\t\tconst themeTags = stockSeries.columns.template.get(\"themeTags\");\n\n\t\t\t\t\tif (stockPositiveColor) {\n\t\t\t\t\t\tif (riseFromOpen) {\n\t\t\t\t\t\t\triseFromOpen.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstates.create(\"riseFromOpen\", { fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tconst riseFromPrevious = states.lookup(\"riseFromPrevious\");\n\t\t\t\t\t\tif (riseFromPrevious) {\n\t\t\t\t\t\t\triseFromPrevious.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (themeTags && themeTags.indexOf(\"pro\") != -1) {\n\t\t\t\t\t\t\t\tstates.create(\"riseFromPrevious\", { fill: stockPositiveColor, stroke: stockPositiveColor });\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\tif (stockNegativeColor) {\n\t\t\t\t\t\tconst dropFromOpen = states.lookup(\"dropFromOpen\");\n\t\t\t\t\t\tif (dropFromOpen) {\n\t\t\t\t\t\t\tdropFromOpen.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstates.create(\"dropFromOpen\", { fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst dropFromPrevious = states.lookup(\"dropFromPrevious\");\n\t\t\t\t\t\tif (dropFromPrevious) {\n\t\t\t\t\t\t\tdropFromPrevious.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (themeTags && themeTags.indexOf(\"pro\") != -1) {\n\t\t\t\t\t\t\t\tstates.create(\"dropFromPrevious\", { fill: stockNegativeColor, stroke: stockNegativeColor });\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}\n\n\t\t\t\tstockSeries.markDirtyValues();\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Enables or disables percent scale mode.\n\t *\n\t * If `percentScale` is not set, it will try to determine the status on its own.\n\t *\n\t * In percent scale mode `percentScaleSeriesSettings` and `percentScaleValueAxisSettings` will\n\t * be applied to the regular series on the main panel and its Y axis.\n\t *\n\t * @param percentScale Comparison mode active\n\t */\n\tpublic setPercentScale(percentScale?: boolean): void {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tconst seriesSettings = this.get(\"percentScaleSeriesSettings\");\n\t\tconst axisSettings = this.get(\"percentScaleValueAxisSettings\");\n\t\tif (stockSeries) {\n\t\t\tconst mainChart = stockSeries.chart;\n\t\t\tconst yAxis = stockSeries.get(\"yAxis\") as ValueAxis<AxisRenderer>;\n\t\t\tyAxis.set(\"logarithmic\", false);\n\n\t\t\tthis._maybePrepAxisDefaults();\n\t\t\tif (mainChart) {\n\t\t\t\tconst seriesList: XYSeries[] = [];\n\t\t\t\tmainChart.series.each((series) => {\n\t\t\t\t\tif (series.get(\"yAxis\") == yAxis) {\n\t\t\t\t\t\tseriesList.push(series);\n\t\t\t\t\t\tthis._maybePrepSeriesDefaults(series);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (percentScale == undefined) {\n\t\t\t\t\tpercentScale = this.getPrivate(\"comparedSeries\", []).length > 0;\n\t\t\t\t}\n\n\t\t\t\tthis.setPrivate(\"comparing\", percentScale);\n\n\t\t\t\tif (seriesSettings) {\n\t\t\t\t\t$array.each(seriesList, (series) => {\n\t\t\t\t\t\tif (percentScale) {\n\t\t\t\t\t\t\tseries.setAll(seriesSettings);\n\t\t\t\t\t\t\tseries.states.lookup(\"default\")!.setAll(seriesSettings);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tseries.states.apply(\"comparingDefaults\");\n\t\t\t\t\t\t\tconst seriesDefaults = series.states.lookup(\"comparingDefaults\");\n\t\t\t\t\t\t\tif (seriesDefaults) {\n\t\t\t\t\t\t\t\tseries.states.lookup(\"default\")!.setAll(seriesDefaults._settings);\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}\n\n\t\t\t\tif (axisSettings) {\n\t\t\t\t\tif (percentScale) {\n\t\t\t\t\t\tyAxis.setAll(axisSettings);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tyAxis.states.apply(\"comparingDefaults\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.indicators.each((indicator) => {\n\t\t\tindicator.markDataDirty();\n\t\t})\n\t}\n\n\t/**\n\t * Adds a \"compared\" series to chart. Returns the same series.\n\t *\n\t * @param series Compared series\n\t * @return Compared series\n\t */\n\tpublic addComparingSeries(series: XYSeries): XYSeries {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tif (stockSeries) {\n\t\t\tconst chart = stockSeries.chart;\n\t\t\tif (chart) {\n\t\t\t\tchart.series.push(series);\n\t\t\t}\n\n\t\t\t// Apply comparingSeriesSettings\n\t\t\tconst comparingSeriesSettings = this.get(\"comparingSeriesSettings\");\n\t\t\tif (comparingSeriesSettings) {\n\t\t\t\tseries.setAll(comparingSeriesSettings);\n\t\t\t}\n\n\t\t\tconst comparedSeries = this.getPrivate(\"comparedSeries\");\n\t\t\tif (comparedSeries) {\n\t\t\t\tcomparedSeries.push(series);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.setPrivate(\"comparedSeries\", [series]);\n\t\t\t}\n\n\t\t\tconst legendDataItem = stockSeries.get(\"legendDataItem\");\n\n\t\t\tif (legendDataItem) {\n\t\t\t\tconst legend = legendDataItem.component;\n\t\t\t\tif (legend.isType<StockLegend>(\"StockLegend\")) {\n\t\t\t\t\tlegend.data.push(series);\n\t\t\t\t\tconst ldi = series.get(\"legendDataItem\") as DataItem<IStockLegendDataItem>;\n\t\t\t\t\tif (ldi) {\n\t\t\t\t\t\tconst closeButton = ldi.get(\"closeButton\");\n\t\t\t\t\t\tcloseButton.set(\"forceHidden\", false);\n\t\t\t\t\t\tcloseButton.events.on(\"click\", () => {\n\t\t\t\t\t\t\tthis.removeComparingSeries(series);\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\tif (this.get(\"autoSetPercentScale\")) {\n\t\t\t\tthis.setPercentScale(true);\n\t\t\t}\n\n\t\t}\n\t\treturn series;\n\t}\n\n\t/**\n\t * Removes compared series.\n\t *\n\t * @param series Compared series\n\t */\n\tpublic removeComparingSeries(series: XYSeries) {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tif (stockSeries) {\n\t\t\tconst chart = stockSeries.chart;\n\t\t\tif (chart) {\n\t\t\t\tchart.series.removeValue(series);\n\t\t\t}\n\n\t\t\tconst comparedSeries = this.getPrivate(\"comparedSeries\");\n\t\t\tif (comparedSeries) {\n\t\t\t\t$array.remove(comparedSeries, series);\n\t\t\t\tif (comparedSeries.length == 0 && this.get(\"autoSetPercentScale\")) {\n\t\t\t\t\tthis.setPercentScale(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tconst ldi = series.get(\"legendDataItem\") as DataItem<IStockLegendDataItem>;\n\t\tif (ldi) {\n\t\t\tconst legend = ldi.component;\n\t\t\tlegend.data.removeValue(series);\n\t\t}\n\n\t}\n\n\tprotected _maybePrepSeriesDefaults(series: XYSeries): void {\n\t\tif (!series.states.lookup(\"comparingDefaults\")) {\n\t\t\tconst seriesSettings = this.get(\"percentScaleSeriesSettings\");\n\t\t\tconst defaults: any = {};\n\t\t\t$object.each(seriesSettings, (key, _val) => {\n\t\t\t\tdefaults[key] = (<any>series).get(key);\n\t\t\t});\n\t\t\tseries.states.create(\"comparingDefaults\", defaults);\n\t\t}\n\t}\n\n\tpublic getSeriesDefault(series: XYSeries, setting: keyof IXYSeriesSettings): any {\n\t\tconst defaults = series.states.lookup(\"comparingDefaults\");\n\t\treturn defaults ? defaults.get(setting) : series.get(setting);\n\t}\n\n\tprotected _maybePrepAxisDefaults(): void {\n\t\tconst stockSeries = this.get(\"stockSeries\")!;\n\t\tconst axis = stockSeries.get(\"yAxis\");\n\t\tif (!axis.states.lookup(\"comparingDefaults\")) {\n\t\t\tconst axisSettings = this.get(\"percentScaleValueAxisSettings\");\n\t\t\tconst defaults: any = {};\n\t\t\t$object.each(axisSettings, (key, _val) => {\n\t\t\t\tdefaults[key] = (<any>axis).get(key);\n\t\t\t});\n\t\t\taxis.states.create(\"comparingDefaults\", defaults);\n\t\t}\n\t}\n\n\tprotected _processIndicator(indicator: Indicator) {\n\t\tthis.children.push(indicator);\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tif (stockSeries) {\n\t\t\tindicator._setSoft(\"stockSeries\", stockSeries);\n\t\t}\n\n\t\tconst volumeSeries = this.get(\"volumeSeries\");\n\t\tif (volumeSeries) {\n\t\t\tindicator._setSoft(\"volumeSeries\", volumeSeries);\n\t\t}\n\n\t\tif (this.getPrivate(\"comparing\")) {\n\t\t\tthis.setPercentScale(true);\n\t\t}\n\n\n\t\t$array.each(indicator._editableSettings, (setting) => {\n\t\t\tindicator.on((setting as any).key, () => {\n\t\t\t\tthis.markDirtyIndicators();\n\t\t\t})\n\t\t})\n\n\t\tthis.markDirtyIndicators();\n\n\t\t//indicator.markDataDirty(); // not good, shows zoomed out value axis\n\t\tindicator.prepareData();\n\n\t\tthis._syncExtremes();\n\t}\n\n\tprotected _removeIndicator(indicator: Indicator) {\n\t\tthis.children.removeValue(indicator);\n\t\tthis.markDirtyIndicators();\n\t}\n\n\tprotected _removePanel(chart: StockPanel) {\n\t\tthis.panelsContainer.children.removeValue(chart);\n\t}\n\n\tpublic _updateControls() {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tthis.panels.each((panel) => {\n\t\t\tconst panelControls = panel.panelControls;\n\t\t\tconst index = this.panelsContainer.children.indexOf(panel);\n\t\t\tconst len = this.panels.length;\n\t\t\tconst visible = \"visible\"\n\t\t\tconst autoHidePanelControls = this.get(\"autoHidePanelControls\", false);\n\n\t\t\tpanelControls.set(visible, !autoHidePanelControls);\n\n\t\t\tpanelControls.upButton.setPrivate(visible, false);\n\t\t\tpanelControls.downButton.setPrivate(visible, false);\n\t\t\tpanelControls.expandButton.setPrivate(visible, false);\n\t\t\tpanelControls.closeButton.setPrivate(visible, false);\n\n\n\t\t\tif (autoHidePanelControls) {\n\t\t\t\tpanel.plotContainer.events.on(\"pointerover\", () => {\n\t\t\t\t\tpanelControls.show();\n\t\t\t\t})\n\n\t\t\t\tpanelControls.events.on(\"pointerover\", () => {\n\t\t\t\t\tpanelControls.show();\n\t\t\t\t})\n\n\t\t\t\tpanel.plotContainer.events.on(\"pointerout\", () => {\n\t\t\t\t\tif (!panelControls.isHover()) {\n\t\t\t\t\t\tpanelControls.hide();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (len > 1) {\n\t\t\t\tpanelControls.expandButton.setPrivate(visible, true);\n\n\t\t\t\tif (index != 0) {\n\t\t\t\t\tpanelControls.upButton.setPrivate(visible, true);\n\t\t\t\t}\n\t\t\t\tif (index != len - 1) {\n\t\t\t\t\tpanelControls.downButton.setPrivate(visible, true);\n\t\t\t\t}\n\n\t\t\t\tif (!stockSeries || stockSeries.chart != panel) {\n\t\t\t\t\tpanelControls.closeButton.setPrivate(visible, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (stockSeries) {\n\t\t\t\tthis.indicators.each((indicator) => {\n\t\t\t\t\tindicator.set(\"stockSeries\", stockSeries);\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\n\t\tthis._updateResizers();\n\t}\n\n\tprotected _processPanel(panel: StockPanel) {\n\n\t\tpanel.setPrivate(\"otherCharts\", this.panels.values);\n\t\tpanel.setPrivate(\"stockChart\", this);\n\t\tpanel.panelControls = panel.topPlotContainer.children.push(PanelControls.new(this._root, { stockPanel: panel, stockChart: this }));\n\t\tthis._updateControls();\n\n\n\t\tconst resizer = panel.children.push(Rectangle.new(this._root, { themeTags: [\"panelresizer\"] }))\n\n\t\tpanel.panelResizer = resizer;\n\n\t\tresizer.events.on(\"pointerdown\", (e) => {\n\t\t\tconst chartsContainer = this.panelsContainer;\n\t\t\tthis._downResizer = e.target;\n\t\t\tthis.panels.each((chart) => {\n\t\t\t\tchart.set(\"height\", percent(chart.height() / chartsContainer.height() * 100))\n\t\t\t})\n\n\t\t\tthis._downY = chartsContainer.toLocal(e.point).y;\n\n\t\t\tconst upperChart = chartsContainer.children.getIndex(chartsContainer.children.indexOf(panel) - 1) as StockPanel;\n\t\t\tthis._upperPanel = upperChart;\n\t\t\tif (upperChart) {\n\t\t\t\tthis._uhp = upperChart.get(\"height\") as Percent;\n\t\t\t}\n\n\t\t\tthis._dhp = panel.get(\"height\") as Percent;\n\t\t})\n\n\t\tresizer.events.on(\"pointerup\", () => {\n\t\t\tthis._downResizer = undefined;\n\t\t})\n\n\t\tresizer.events.on(\"globalpointermove\", (e) => {\n\t\t\tif (e.target == this._downResizer) {\n\t\t\t\tconst chartsContainer = this.panelsContainer;\n\t\t\t\tconst height = chartsContainer.height();\n\t\t\t\tconst upperChart = this._upperPanel;\n\n\t\t\t\tif (upperChart) {\n\t\t\t\t\tconst index = chartsContainer.children.indexOf(upperChart) + 2\n\t\t\t\t\tlet max = height - panel.get(\"minHeight\", 0);\n\t\t\t\t\tconst lowerChart = chartsContainer.children.getIndex(index);\n\t\t\t\t\tif (lowerChart) {\n\t\t\t\t\t\tmax = lowerChart.y() - panel.get(\"minHeight\", 0);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst y = Math.max(upperChart.y() + upperChart.get(\"minHeight\", 0) + upperChart.get(\"paddingTop\", 0), Math.min(chartsContainer.toLocal(e.point).y, max));\n\n\t\t\t\t\tconst downY = this._downY;\n\t\t\t\t\tconst dhp = this._dhp;\n\t\t\t\t\tconst uhp = this._uhp;\n\t\t\t\t\tif (downY != null && dhp != null && uhp != null) {\n\t\t\t\t\t\tconst diff = (downY - y) / height;\n\t\t\t\t\t\tpanel.set(\"height\", percent((dhp.value + diff) * 100));\n\t\t\t\t\t\tupperChart.set(\"height\", percent((uhp.value - diff) * 100))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tpanel.xAxes.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (axis) => {\n\t\t\t\t\tthis._removeXAxis(axis);\n\t\t\t\t})\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tthis._processXAxis(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tthis._processXAxis(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tthis._processXAxis(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removeXAxis(change.oldValue);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IListEvent type\");\n\t\t\t}\n\t\t})\n\n\t\tpanel.leftAxesContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis._syncYAxesSize();\n\t\t\t})\n\t\t})\n\n\t\tpanel.rightAxesContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis._syncYAxesSize();\n\t\t\t})\n\t\t})\n\n\t\tthis._updateResizers();\n\t}\n\n\tpublic _updateResizers() {\n\t\tthis.panels.each((panel) => {\n\t\t\tlet hidden = false;\n\t\t\tif (this.panelsContainer.children.indexOf(panel) == 0) {\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t\tpanel.panelResizer?.set(\"forceHidden\", hidden);\n\t\t})\n\t}\n\n\n\tprotected _syncYAxesSize() {\n\t\tlet maxLeft = 0;\n\t\tlet maxRight = 0;\n\n\t\tthis.panels.each((chart) => {\n\t\t\tlet lw = chart.leftAxesContainer.width();\n\t\t\tlet rw = chart.rightAxesContainer.width();\n\t\t\tif (lw > maxLeft) {\n\t\t\t\tmaxLeft = lw;\n\t\t\t}\n\t\t\tif (rw > maxRight) {\n\t\t\t\tmaxRight = rw;\n\t\t\t}\n\t\t})\n\n\t\tthis.panels.each((chart) => {\n\t\t\tchart.leftAxesContainer.set(\"minWidth\", maxLeft);\n\t\t\tchart.rightAxesContainer.set(\"minWidth\", maxRight);\n\t\t})\n\n\t\tthis.toolsContainer.set(\"paddingLeft\", maxLeft);\n\t\tthis.toolsContainer.set(\"paddingRight\", maxRight);\n\t}\n\n\tprotected _removeXAxis(_axis: Axis<AxisRenderer>) {\n\n\t}\n\n\tprotected _processXAxis(axis: Axis<AxisRenderer>) {\n\t\t$array.move(this._xAxes, axis);\n\t\taxis.on(\"start\", () => {\n\t\t\tif (axis._skipSync != true) {\n\t\t\t\tthis._syncXAxes(axis);\n\t\t\t}\n\t\t})\n\t\taxis.on(\"end\", () => {\n\t\t\tif (axis._skipSync != true) {\n\t\t\t\tthis._syncXAxes(axis);\n\t\t\t}\n\t\t})\n\n\t\tif (this._xAxes[0]) {\n\t\t\tthis._root.events.once(\"frameended\", () => {\n\t\t\t\tthis._syncXAxes(this._xAxes[0])\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _syncExtremes() {\n\n\t\tconst mainAxis = this.getPrivate(\"mainAxis\");\n\t\tif (mainAxis) {\n\t\t\tconst min = mainAxis.getPrivate(\"min\");\n\t\t\tconst max = mainAxis.getPrivate(\"max\");\n\n\t\t\tthis.panels.each((panel) => {\n\t\t\t\tpanel.xAxes.each((xAxis) => {\n\t\t\t\t\tif (xAxis != mainAxis && xAxis.isType(\"DateAxis\")) {\n\t\t\t\t\t\tlet axisMin = xAxis.getPrivate(\"min\" as any);\n\t\t\t\t\t\tlet axisMax = xAxis.getPrivate(\"max\" as any);\n\n\t\t\t\t\t\tif (axisMin != min) {\n\t\t\t\t\t\t\txAxis.set(\"min\" as any, min);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (axisMax != max) {\n\t\t\t\t\t\t\txAxis.set(\"max\" as any, max);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst type = \"GaplessDateAxis\";\n\t\t\t\t\t\tif (xAxis.isType<GaplessDateAxis<AxisRenderer>>(type) && mainAxis.isType<GaplessDateAxis<AxisRenderer>>(type)) {\n\t\t\t\t\t\t\txAxis._customDates = mainAxis._dates;\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\t}\n\n\tprotected _syncXAxes(axis: Axis<AxisRenderer>) {\n\t\t$array.each(this._xAxes, (xAxis) => {\n\t\t\tif (xAxis != axis && xAxis.isType(\"DateAxis\") && xAxis.get(\"zoomable\", true)) {\n\t\t\t\txAxis._skipSync = true;\n\t\t\t\txAxis.set(\"start\", axis.get(\"start\"));\n\t\t\t\txAxis.set(\"end\", axis.get(\"end\"));\n\t\t\t\txAxis._skipSync = false;\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Returns a color for volume, based on current and previous close.\n\t *\n\t * * `positiveColor` - close is greater or euqal than close of the previous period.\n\t * * `negativeColor` - close is lower than close of the previous period.\n\t *\n\t * @param dataItem Target data item\n\t * @param negativeColor \"Negative color\" (red)\n\t * @param positiveColor \"Positive color\" (green)\n\t * @return Color\n\t */\n\tpublic getVolumeColor(dataItem: DataItem<IXYSeriesDataItem>, negativeColor?: Color, positiveColor?: Color): Color | undefined {\n\t\tif (dataItem) {\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\t\tconst volumeSeries = dataItem.component;\n\n\t\t\tif (!negativeColor) {\n\t\t\t\tnegativeColor = this.get(\"volumeNegativeColor\", this.root.interfaceColors.get(\"negative\", Color.fromHex(0xff0000)));\n\t\t\t}\n\n\t\t\tif (!positiveColor) {\n\t\t\t\tpositiveColor = this.get(\"volumePositiveColor\", this.root.interfaceColors.get(\"positive\", Color.fromHex(0x00FF00)));\n\t\t\t}\n\n\n\t\t\tif (negativeColor && positiveColor) {\n\t\t\t\tif (stockSeries && volumeSeries) {\n\t\t\t\t\tconst index = volumeSeries.dataItems.indexOf(dataItem);\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\tlet stockDataItem = stockSeries.dataItems[index];\n\t\t\t\t\t\tif (stockDataItem) {\n\t\t\t\t\t\t\tlet close = stockDataItem.get(\"valueY\");\n\t\t\t\t\t\t\tif (close != null) {\n\t\t\t\t\t\t\t\tfor (let i = index - 1; i >= 0; i--) {\n\t\t\t\t\t\t\t\t\tlet di = stockSeries.dataItems[i];\n\t\t\t\t\t\t\t\t\tlet previousClose = di.get(\"valueY\");\n\n\t\t\t\t\t\t\t\t\tif (previousClose != null) {\n\t\t\t\t\t\t\t\t\t\tif (close < previousClose) {\n\t\t\t\t\t\t\t\t\t\t\treturn negativeColor;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treturn positiveColor;\n\t\t\t\t\t\t\t\t\t\t}\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}\n\t\t\t}\n\t\t}\n\t\treturn positiveColor;\n\t}\n\n\t/**\n\t * Returns a first [[StockControl]] of specific type.\n\t *\n\t * @since 5.7.0\n\t * @param type Control name\n\t * @return Control\n\t */\n\tpublic getControl(type: string): StockControl | undefined {\n\t\tlet found: StockControl | undefined;\n\t\t$array.eachContinue(this.controls, (control: StockControl) => {\n\t\t\tif (control.className == type) {\n\t\t\t\tfound = control;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\treturn found;\n\t}\n\n\tpublic _dragStartDrawing(event: ISpritePointerEvent) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries._dragStart(event);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic _dragStopDrawing(event: ISpritePointerEvent) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries._dragStop(event);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Enables or disables interactivity of annotations (drawings).\n\t *\n\t * @param value Drawings interactive?\n\t * @since 5.4.9\n\t */\n\tpublic drawingsInteractive(value: boolean, except?: DrawingSeries) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series != except) {\n\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\tseries.setInteractive(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Unselect all currently selected drawings.\n\t *\n\t * @since 5.9.0\n\t */\n\tpublic unselectDrawings(): number {\n\t\tlet count = 0;\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tcount += series.unselectDrawings();\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\tthis.spriteResizer.set(\"sprite\", undefined);\n\n\t\treturn count;\n\t}\n\n\t/**\n\t * Cancels drawing and deletes drawing which is now being drawn.\n\t *\n\t * @since 5.9.0\n\t */\n\tpublic cancelDrawing() {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.cancelDrawing();\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Deletes all currently selected drawings.\n\t *\n\t * @since 5.9.0\n\t *\n\t */\n\tpublic deleteSelectedDrawings() {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.deleteSelected();\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Selects drawing by its ID.\n\t *\n\t * @param id Drawing ID\n\t * @param keepSelection Keep existing selections\n\t * @since 5.9.0\n\t */\n\tpublic selectDrawing(id: string, keepSelection?: boolean) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.selectDrawing(id, keepSelection);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Unselects drawing by ID.\n\t *\n\t * @param id Drawing ID\n\t * @since 5.9.0\n\t */\n\tpublic unselectDrawing(id: string) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.unselectDrawing(id);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Deletes drawing by drawingId.\n\t *\n\t * @param id Drawing ID\n\t * @since 5.9.0\n\t */\n\tpublic deleteDrawing(id: string) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.deleteDrawing(id);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n}\n\n/**\n * Registers a custom class so that objects (e.g. indicators) using it can be\n * serialized and restored later.\n *\n * @param name Class name\n * @param ref Class reference\n * @since 5.7.2\n */\nexport function registerClass(name: string, ref: any) {\n\tref.className = name;\n\tregisterCustomClass(name, ref);\n}\n"]}
1
+ {"version":3,"file":"StockChart.js","sourceRoot":"","sources":["../../../../../src/.internal/charts/stock/StockChart.ts"],"names":[],"mappings":"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","sourcesContent":["import type { StockPanel } from \"./StockPanel\";\nimport type { StockLegend, IStockLegendDataItem } from \"./StockLegend\";\nimport type { Axis } from \"../xy/axes/Axis\";\nimport type { DateAxis } from \"../xy/axes/DateAxis\";\nimport type { AxisRenderer } from \"../xy/axes/AxisRenderer\";\nimport type { BaseColumnSeries } from \"../xy/series/BaseColumnSeries\";\nimport type { IValueAxisSettings, ValueAxis } from \"../xy/axes/ValueAxis\";\nimport type { XYSeries, IXYSeriesDataItem, IXYSeriesSettings } from \"../xy/series/XYSeries\";\nimport type { DataItem } from \"../../core/render/Component\";\nimport type { Indicator } from \"./indicators/Indicator\";\nimport type { DrawingSeries } from \"./drawing/DrawingSeries\";\nimport type { StockControl } from \"./toolbar/StockControl\";\nimport { MultiDisposer, IDisposer } from \"../../core/util/Disposer\";\n\nimport { SpriteResizer } from \"../../core/render/SpriteResizer\";\nimport { PanelControls } from \"./PanelControls\";\nimport { StockChartDefaultTheme } from \"./StockChartDefaultTheme\";\nimport { XYChartDefaultTheme } from \"../xy/XYChartDefaultTheme\";\nimport { Container, IContainerPrivate, IContainerSettings, IContainerEvents } from \"../../core/render/Container\";\nimport { ListAutoDispose } from \"../../core/util/List\";\nimport { Rectangle } from \"../../core/render/Rectangle\";\nimport { p100, percent, Percent } from \"../../core/util/Percent\";\nimport { SettingsModal } from \"./SettingsModal\";\nimport { Color } from \"../../core/util/Color\";\nimport { registry } from \"../../core/Registry\";\nimport { registerCustomClass } from \"../../plugins/json/Json\";\n\nimport * as $array from \"../../core/util/Array\";\nimport * as $utils from \"../../core/util/Utils\";\nimport * as $object from \"../../core/util/Object\";\nimport type { GaplessDateAxis } from \"../xy/axes/GaplessDateAxis\";\nimport type { ChartIndicator } from \"./indicators/ChartIndicator\";\nimport type { ISpritePointerEvent } from \"../../core/render/Sprite\";\n\n\nexport interface IStockChartSettings extends IContainerSettings {\n\n\t/**\n\t * Main value series.\n\t *\n\t * This series is used to target by settings, as well as calculating\n\t * indicators, and annotations.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Setting_main_series}\n\t */\n\tstockSeries?: XYSeries;\n\n\t/**\n\t * Main volume series.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Setting_main_series}\n\t */\n\tvolumeSeries?: XYSeries;\n\n\t/**\n\t * @ignore\n\t */\n\tcomparingSeriesSettings?: Partial<IXYSeriesSettings>;\n\n\t/**\n\t * Settings to be applied to the the main value series, when chart is\n\t * switched to \"percent scale\".\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/percent-mode/#Configuring} for more info\n\t */\n\tpercentScaleSeriesSettings?: Partial<IXYSeriesSettings>;\n\n\t/**\n\t * Settings to be applied to the [[ValueAxis]] of the main value series,\n\t * when chart is switched to \"percent scale\".\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/percent-mode/#Configuring} for more info\n\t */\n\tpercentScaleValueAxisSettings?: Partial<IValueAxisSettings<AxisRenderer>>;\n\n\t/**\n\t * If set to `true`, the chart will go into \"percent scale\" when compared\n\t * series are added to chart, and will exit it when all of the comparisons\n\t * are removed.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/percent-mode/} for more info\n\t * @default true\n\t */\n\tautoSetPercentScale?: boolean;\n\n\t/**\n\t * This color will be applied to columns/candles on the main value series (series\n\t * set as `stockSeries`) where the open value is lower or equal to the close\n\t * value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tstockPositiveColor?: Color | null;\n\n\t/**\n\t * This color will be applied to columns/candles on the main value series (series\n\t * set as `stockSeries`) where the open value is higher than the close value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tstockNegativeColor?: Color | null;\n\n\t/**\n\t * This color will be applied to columns/candles on the main volume series (series\n\t * set as `stockSeries`) where the open value is lower or equal to the close\n\t * value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tvolumePositiveColor?: Color | null;\n\n\t/**\n\t * This color will be applied to columns/candles on the main volume series (series\n\t * set as `stockSeries`) where the open value is higher than the close value.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Positive_negative_colors} for more info\n\t */\n\tvolumeNegativeColor?: Color | null;\n\n\t/**\n\t * If set to `true`, all drawings will be selectable.\n\t *\n\t * Selectable drawings can be moved, rotated, or deleted.\n\t *\n\t * @default false\n\t * @since 5.9.1\n\t */\n\tdrawingSelectionEnabled?: boolean;\n\n\t/**\n\t * If set to `true`, clicking on drawings will delete them.\n\t *\n\t * @default false\n\t * @since 5.9.2\n\t */\n\terasingEnabled?: boolean;\n\n\t/**\n\t * If set to `true` drawing grips will be hidden when [[StockChart]] is not\n\t * in drawing mode.\n\t *\n\t * @default false\n\t * @since 5.10.6\n\t */\n\thideDrawingGrips?: boolean;\n\n\t/**\n\t * If set to `true`, panel controls will automatically hide when mouse is\n\t * not over the chart.\n\t *\n\t * @default false\n\t * @since 5.13.0\n\t */\n\tautoHidePanelControls?: boolean;\n\n}\n\nexport interface IStockChartPrivate extends IContainerPrivate {\n\n\t/**\n\t * A instance of [[SettingsModal]].\n\t */\n\tsettingsModal: SettingsModal;\n\n\t/**\n\t * Indicates if chart has currently have any \"compared\" series set.\n\t */\n\tcomparing?: boolean;\n\n\t/**\n\t * A list of compared series.\n\t */\n\tcomparedSeries?: XYSeries[];\n\n\t/**\n\t * Main Date axis of a Stock chart\n\t */\n\tmainAxis?: DateAxis<AxisRenderer>\n\n\n\tdrawingSelectionEnabled?: boolean;\n}\n\nexport interface IStockChartEvents extends IContainerEvents {\n\t/**\n\t * Kicks in when drawings change.\n\t */\n\tdrawingsupdated: {};\n\n\t/**\n\t * Kicks in when indicators change.\n\t */\n\tindicatorsupdated: {};\n\n\t/**\n\t * Kicks in when a drawing is added.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingadded: { drawingId: string, series: DrawingSeries, index: number };\n\n\t/**\n\t * Kicks in when a drawing is removed.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingremoved: { drawingId: string, series: DrawingSeries, index: number };\n\n\t/**\n\t * Kicks in when a drawing is selected.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingselected: { drawingId: string, series: DrawingSeries, index: number };\n\n\t/**\n\t * Kicks in when a drawing is unselected.\n\t *\n\t * @since 5.9.0\n\t */\n\tdrawingunselected: { drawingId: string, series: DrawingSeries, index: number };\n}\n\n\n/**\n * A main class for the Stock Chart.\n *\n * @see {@link https://www.amcharts.com/docs/v5/charts/stock/} for more info\n * @important\n */\nexport class StockChart extends Container {\n\n\tpublic static className: string = \"StockChart\";\n\tpublic static classNames: Array<string> = Container.classNames.concat([StockChart.className]);\n\n\n\tdeclare public _settings: IStockChartSettings;\n\tdeclare public _privateSettings: IStockChartPrivate;\n\tdeclare public _events: IStockChartEvents;\n\n\tprotected _xAxes: Array<Axis<AxisRenderer>> = [];\n\tprotected _downY?: number;\n\tprotected _upperPanel?: StockPanel;\n\tprotected _dhp?: Percent;\n\tprotected _uhp?: Percent;\n\tprotected _downResizer?: Rectangle;\n\tprotected _syncExtremesDp?: MultiDisposer;\n\tprotected _drawingsChanged = false;\n\tprotected _indicatorsChanged = false;\n\tprotected _baseDP?: IDisposer;\n\n\t//public _selectionWasOn: boolean = false;\n\n\t/**\n\t * A list of stock panels.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/#Panels} for more info\n\t */\n\tpublic readonly panels: ListAutoDispose<StockPanel> = new ListAutoDispose();\n\n\t/**\n\t * A list of indicators on chart.\n\t *\n\t * @see {@link https://www.amcharts.com/docs/v5/charts/stock/indicators/} for more info\n\t */\n\tpublic readonly indicators: ListAutoDispose<Indicator> = new ListAutoDispose();\n\n\t/**\n\t * A [[Container]], resting on top of the charts, suitable for additional\n\t * tools, like [[Scrollbar]].\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly toolsContainer: Container = this.children.push(Container.new(this._root, { width: p100, themeTags: [] }));\n\n\t/**\n\t * A [[Container]] where all the stock panels are placed into.\n\t *\n\t * @default Container.new()\n\t */\n\tpublic readonly panelsContainer: Container = this.children.push(Container.new(this._root, { width: p100, height: p100, layout: this._root.verticalLayout, themeTags: [\"chartscontainer\"] }));\n\n\t/**\n\t * An array of all Stock Controls that are created for this chart.\n\t *\n\t * @since 5.7.0\n\t */\n\tpublic readonly controls: StockControl[] = [];\n\n\t/**\n\t * An instance of [[SpriteResizer]] used for various drawing tools.\n\t *\n\t * @since 5.7.0\n\t */\n\tpublic spriteResizer = this.children.push(SpriteResizer.new(this._root, {}));\n\n\n\tprotected _afterNew() {\n\t\tthis._settings.themeTags = $utils.mergeTags(this._settings.themeTags, [\"stock\"]);\n\t\tthis._defaultThemes.push(StockChartDefaultTheme.new(this._root));\n\t\tthis._defaultThemes.push(XYChartDefaultTheme.new(this._root));\n\n\t\tconst tooltipContainer = this._root.tooltipContainer;\n\t\ttooltipContainer.set(\"themeTags\", $utils.mergeTags(tooltipContainer.get(\"themeTags\", []), [\"stock\"]));\n\n\t\tsuper._afterNew();\n\n\t\tif ($utils.supports(\"keyboardevents\")) {\n\t\t\tthis._disposers.push($utils.addEventListener(document, \"keyup\", (e: KeyboardEvent) => {\n\t\t\t\tif (e.keyCode == 46) {\n\t\t\t\t\tthis.deleteSelectedDrawings();\n\t\t\t\t}\n\t\t\t\tif (e.keyCode == 27) {\n\t\t\t\t\tthis.unselectDrawings();\n\t\t\t\t\tthis.cancelDrawing();\n\t\t\t\t\tthis.spriteResizer.set(\"sprite\", undefined);\n\t\t\t\t}\n\t\t\t}));\n\t\t}\n\n\t\tconst children = this.panelsContainer.children;\n\t\tthis._disposers.push(this.panels.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (chart) => {\n\t\t\t\t\tthis._removePanel(chart);\n\t\t\t\t})\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tchildren.moveValue(change.newValue);\n\t\t\t\tthis._processPanel(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tchildren.setIndex(change.index, change.newValue);\n\t\t\t\tthis._processPanel(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tchildren.insertIndex(change.index, change.newValue);\n\t\t\t\tthis._processPanel(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removePanel(change.oldValue);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IListEvent type\");\n\t\t\t}\n\t\t}));\n\n\t\tthis._disposers.push(this.indicators.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (indicator) => {\n\t\t\t\t\tthis._removeIndicator(indicator);\n\t\t\t\t})\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tthis._processIndicator(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tthis._processIndicator(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tthis._processIndicator(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removeIndicator(change.oldValue);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IListEvent type\");\n\t\t\t}\n\t\t}));\n\n\t\tthis.setPrivateRaw(\"settingsModal\", SettingsModal.new(this.root, {\n\t\t\tstockChart: this\n\t\t}));\n\n\t\tlet license = false;\n\t\tfor (let i = 0; i < registry.licenses.length; i++) {\n\t\t\tif (registry.licenses[i].match(/^AM5S.{5,}/i)) {\n\t\t\t\tlicense = true;\n\t\t\t}\n\t\t}\n\t\tif (!license) {\n\t\t\tthis._root._showBranding();\n\t\t}\n\t\telse {\n\t\t\tthis._root._licenseApplied();\n\t\t}\n\t}\n\n\tprotected _dispose() {\n\t\tsuper._dispose();\n\t\tconst settingsModal = this.getPrivate(\"settingsModal\");\n\t\tif (settingsModal) {\n\t\t\tsettingsModal.dispose();\n\t\t}\n\t}\n\n\t/**\n\t * Forces redrawing of all annotations (drawings).\n\t */\n\tpublic markDirtyDrawings() {\n\t\tthis._drawingsChanged = true;\n\t\tthis.markDirty();\n\t}\n\n\t/**\n\t * Forces redrawing of Indicators.\n\t */\n\tpublic markDirtyIndicators() {\n\t\tthis._indicatorsChanged = true;\n\t\tthis.markDirty();\n\t}\n\n\n\t/**\n\t * Toggles drawing mode on or off.\n\t *\n\t * @param enabled Drawing enabled\n\t * @since 5.10.6\n\t */\n\tpublic toggleDrawing(enabled?: boolean) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.toggleDrawing(enabled);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic _prepareChildren() {\n\t\tif (this.isDirty(\"drawingSelectionEnabled\")) {\n\t\t\tconst enabled = this.get(\"drawingSelectionEnabled\");\n\t\t\tif (enabled !== undefined) {\n\t\t\t\tthis._root.events.once(\"frameended\", () => {\n\t\t\t\t\tthis.setPrivate(\"drawingSelectionEnabled\", enabled);\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tif (this.isPrivateDirty(\"drawingSelectionEnabled\")) {\n\t\t\tconst enabled = this.getPrivate(\"drawingSelectionEnabled\", false);\n\n\t\t\tif (!enabled) {\n\t\t\t\tthis.unselectDrawings();\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.set(\"erasingEnabled\", false);\n\t\t\t}\n\n\t\t\tthis.panels.each((panel) => {\n\t\t\t\tpanel.series.each((series) => {\n\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\tseries.enableDrawingSelection(enabled);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t\t}\n\n\t\tif (this.isDirty(\"erasingEnabled\")) {\n\t\t\tconst enabled = this.get(\"erasingEnabled\", false);\n\t\t\tif (enabled) {\n\t\t\t\tthis.setPrivate(\"drawingSelectionEnabled\", false);\n\t\t\t}\n\t\t\tthis.panels.each((panel) => {\n\t\t\t\tpanel.series.each((series) => {\n\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\tif (enabled) {\n\t\t\t\t\t\t\tseries.enableErasing();\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tseries.disableErasing();\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\tif (this.isDirty(\"volumeNegativeColor\") || this.isDirty(\"volumePositiveColor\")) {\n\t\t\tconst volumeSeries = this.get(\"volumeSeries\");\n\t\t\tif (volumeSeries && volumeSeries.isType<BaseColumnSeries>(\"BaseColumnSeries\")) {\n\t\t\t\tvolumeSeries.columns.each((column) => {\n\t\t\t\t\tcolumn._markDirtyKey(\"fill\");\n\t\t\t\t})\n\t\t\t}\n\t\t}\n\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\n\t\tif (this.isDirty(\"stockSeries\")) {\n\t\t\tif (stockSeries) {\n\t\t\t\tconst previous = this._prevSettings.stockSeries;\n\t\t\t\tthis.indicators.each((indicator) => {\n\t\t\t\t\tif (previous == indicator.get(\"stockSeries\")) {\n\t\t\t\t\t\tindicator.set(\"stockSeries\", stockSeries);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tindicator._setSoft(\"stockSeries\", stockSeries);\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t\tconst mainChart = stockSeries.chart;\n\n\t\t\t\tif (mainChart) {\n\t\t\t\t\tmainChart.series.each((series) => {\n\t\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\t\tlet s = series.get(\"series\");\n\t\t\t\t\t\t\tif (s == previous) {\n\t\t\t\t\t\t\t\tseries.set(\"series\", stockSeries);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\tseries._setSoft(\"series\", stockSeries);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\n\t\t\t\t\tconst xAxis = mainChart.xAxes.getIndex(0) as DateAxis<AxisRenderer>;\n\t\t\t\t\tif (xAxis) {\n\t\t\t\t\t\tif (this._syncExtremesDp) {\n\t\t\t\t\t\t\tthis._syncExtremesDp.dispose();\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tthis.setPrivateRaw(\"mainAxis\", xAxis);\n\n\t\t\t\t\t\tif (this._baseDP) {\n\t\t\t\t\t\t\tthis._baseDP.dispose();\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthis._baseDP = xAxis.on(\"baseInterval\", (baseInterval) => {\n\t\t\t\t\t\t\tthis.indicators.each((indicator) => {\n\t\t\t\t\t\t\t\tif (indicator.isType<ChartIndicator>(\"ChartIndicator\")) {\n\t\t\t\t\t\t\t\t\tindicator.xAxis.set(\"baseInterval\", baseInterval);\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\n\t\t\t\t\t\tthis._syncExtremesDp = new MultiDisposer([\n\t\t\t\t\t\t\txAxis.onPrivate(\"max\", () => {\n\t\t\t\t\t\t\t\tthis._syncExtremes();\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t\txAxis.onPrivate(\"min\", () => {\n\t\t\t\t\t\t\t\tthis._syncExtremes();\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}\n\n\t\t\t\tif (this.getPrivate(\"comparing\")) {\n\t\t\t\t\tthis.setPercentScale(true);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tsuper._prepareChildren();\n\t}\n\n\tpublic _afterChanged() {\n\t\tsuper._afterChanged();\n\t\tif (this._drawingsChanged) {\n\n\t\t\tthis._drawingsChanged = false;\n\t\t\tconst type = \"drawingsupdated\";\n\t\t\tif (this.events.isEnabled(type)) {\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this });\n\t\t\t}\n\t\t}\n\n\t\tif (this._indicatorsChanged) {\n\t\t\tthis._indicatorsChanged = false;\n\t\t\tconst type = \"indicatorsupdated\";\n\t\t\tif (this.events.isEnabled(type)) {\n\t\t\t\tthis.events.dispatch(type, { type: type, target: this });\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic _updateChildren() {\n\t\tsuper._updateChildren()\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\n\t\tif (this.isDirty(\"volumeSeries\")) {\n\t\t\tconst volumeSeries = this.get(\"volumeSeries\");\n\t\t\tif (volumeSeries) {\n\t\t\t\tconst volumePanel = volumeSeries.chart;\n\t\t\t\tif (volumePanel) {\n\t\t\t\t\tvolumePanel.series.events.on(\"removeIndex\", (event) => {\n\t\t\t\t\t\tif (event.oldValue == volumeSeries) {\n\t\t\t\t\t\t\tthis.set(\"volumeSeries\", undefined);\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\tif (this.isDirty(\"stockNegativeColor\") || this.isDirty(\"stockPositiveColor\") || this.isDirty(\"stockSeries\")) {\n\t\t\tif (stockSeries && stockSeries.isType<BaseColumnSeries>(\"BaseColumnSeries\")) {\n\t\t\t\tconst ic = this._root.interfaceColors;\n\t\t\t\tconst stockNegativeColor = this.get(\"stockNegativeColor\", ic.get(\"negative\"));\n\t\t\t\tconst stockPositiveColor = this.get(\"stockPositiveColor\", ic.get(\"positive\"));\n\t\t\t\tlet previous = stockSeries.dataItems[0];\n\n\t\t\t\tif (stockPositiveColor && stockPositiveColor) {\n\t\t\t\t\t$array.each(stockSeries.dataItems, (dataItem) => {\n\t\t\t\t\t\tconst column = dataItem.get(\"graphics\");\n\t\t\t\t\t\tif (column) {\n\t\t\t\t\t\t\tconst dropFromOpen = column.states.lookup(\"dropFromOpen\");\n\t\t\t\t\t\t\tif (dropFromOpen) {\n\t\t\t\t\t\t\t\tdropFromOpen.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst riseFromOpen = column.states.lookup(\"riseFromOpen\");\n\t\t\t\t\t\t\tif (riseFromOpen) {\n\t\t\t\t\t\t\t\triseFromOpen.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst dropFromPrevious = column.states.lookup(\"dropFromPrevious\");\n\t\t\t\t\t\t\tif (dropFromPrevious) {\n\t\t\t\t\t\t\t\tdropFromPrevious.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst riseFromPrevious = column.states.lookup(\"riseFromPrevious\");\n\t\t\t\t\t\t\tif (riseFromPrevious) {\n\t\t\t\t\t\t\t\triseFromPrevious.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tstockSeries._applyGraphicsStates(dataItem, previous);\n\t\t\t\t\t\t\tprevious = dataItem;\n\t\t\t\t\t\t}\n\t\t\t\t\t})\n\n\t\t\t\t\tconst states = stockSeries.columns.template.states;\n\n\t\t\t\t\tconst riseFromOpen = states.lookup(\"riseFromOpen\");\n\t\t\t\t\tconst themeTags = stockSeries.columns.template.get(\"themeTags\");\n\n\t\t\t\t\tif (stockPositiveColor) {\n\t\t\t\t\t\tif (riseFromOpen) {\n\t\t\t\t\t\t\triseFromOpen.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstates.create(\"riseFromOpen\", { fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t}\n\n\n\t\t\t\t\t\tconst riseFromPrevious = states.lookup(\"riseFromPrevious\");\n\t\t\t\t\t\tif (riseFromPrevious) {\n\t\t\t\t\t\t\triseFromPrevious.setAll({ fill: stockPositiveColor, stroke: stockPositiveColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (themeTags && themeTags.indexOf(\"pro\") != -1) {\n\t\t\t\t\t\t\t\tstates.create(\"riseFromPrevious\", { fill: stockPositiveColor, stroke: stockPositiveColor });\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\tif (stockNegativeColor) {\n\t\t\t\t\t\tconst dropFromOpen = states.lookup(\"dropFromOpen\");\n\t\t\t\t\t\tif (dropFromOpen) {\n\t\t\t\t\t\t\tdropFromOpen.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tstates.create(\"dropFromOpen\", { fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst dropFromPrevious = states.lookup(\"dropFromPrevious\");\n\t\t\t\t\t\tif (dropFromPrevious) {\n\t\t\t\t\t\t\tdropFromPrevious.setAll({ fill: stockNegativeColor, stroke: stockNegativeColor });\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tif (themeTags && themeTags.indexOf(\"pro\") != -1) {\n\t\t\t\t\t\t\t\tstates.create(\"dropFromPrevious\", { fill: stockNegativeColor, stroke: stockNegativeColor });\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}\n\n\t\t\t\tstockSeries.markDirtyValues();\n\t\t\t}\n\t\t}\n\t}\n\n\n\t/**\n\t * Enables or disables percent scale mode.\n\t *\n\t * If `percentScale` is not set, it will try to determine the status on its own.\n\t *\n\t * In percent scale mode `percentScaleSeriesSettings` and `percentScaleValueAxisSettings` will\n\t * be applied to the regular series on the main panel and its Y axis.\n\t *\n\t * @param percentScale Comparison mode active\n\t */\n\tpublic setPercentScale(percentScale?: boolean): void {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tconst seriesSettings = this.get(\"percentScaleSeriesSettings\");\n\t\tconst axisSettings = this.get(\"percentScaleValueAxisSettings\");\n\t\tif (stockSeries) {\n\t\t\tconst mainChart = stockSeries.chart;\n\t\t\tconst yAxis = stockSeries.get(\"yAxis\") as ValueAxis<AxisRenderer>;\n\t\t\tyAxis.set(\"logarithmic\", false);\n\n\t\t\tthis._maybePrepAxisDefaults();\n\t\t\tif (mainChart) {\n\t\t\t\tconst seriesList: XYSeries[] = [];\n\t\t\t\tmainChart.series.each((series) => {\n\t\t\t\t\tif (series.get(\"yAxis\") == yAxis) {\n\t\t\t\t\t\tseriesList.push(series);\n\t\t\t\t\t\tthis._maybePrepSeriesDefaults(series);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tif (percentScale == undefined) {\n\t\t\t\t\tpercentScale = this.getPrivate(\"comparedSeries\", []).length > 0;\n\t\t\t\t}\n\n\t\t\t\tthis.setPrivate(\"comparing\", percentScale);\n\n\t\t\t\tif (seriesSettings) {\n\t\t\t\t\t$array.each(seriesList, (series) => {\n\t\t\t\t\t\tif (percentScale) {\n\t\t\t\t\t\t\tseries.setAll(seriesSettings);\n\t\t\t\t\t\t\tseries.states.lookup(\"default\")!.setAll(seriesSettings);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tseries.states.apply(\"comparingDefaults\");\n\t\t\t\t\t\t\tconst seriesDefaults = series.states.lookup(\"comparingDefaults\");\n\t\t\t\t\t\t\tif (seriesDefaults) {\n\t\t\t\t\t\t\t\tseries.states.lookup(\"default\")!.setAll(seriesDefaults._settings);\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}\n\n\t\t\t\tif (axisSettings) {\n\t\t\t\t\tif (percentScale) {\n\t\t\t\t\t\tyAxis.setAll(axisSettings);\n\t\t\t\t\t}\n\t\t\t\t\telse {\n\t\t\t\t\t\tyAxis.states.apply(\"comparingDefaults\");\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tthis.indicators.each((indicator) => {\n\t\t\tindicator.markDataDirty();\n\t\t})\n\t}\n\n\t/**\n\t * Adds a \"compared\" series to chart. Returns the same series.\n\t *\n\t * @param series Compared series\n\t * @return Compared series\n\t */\n\tpublic addComparingSeries(series: XYSeries): XYSeries {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tif (stockSeries) {\n\t\t\tconst chart = stockSeries.chart;\n\t\t\tif (chart) {\n\t\t\t\tchart.series.push(series);\n\t\t\t}\n\n\t\t\t// Apply comparingSeriesSettings\n\t\t\tconst comparingSeriesSettings = this.get(\"comparingSeriesSettings\");\n\t\t\tif (comparingSeriesSettings) {\n\t\t\t\tseries.setAll(comparingSeriesSettings);\n\t\t\t}\n\n\t\t\tconst comparedSeries = this.getPrivate(\"comparedSeries\");\n\t\t\tif (comparedSeries) {\n\t\t\t\tcomparedSeries.push(series);\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthis.setPrivate(\"comparedSeries\", [series]);\n\t\t\t}\n\n\t\t\tconst legendDataItem = stockSeries.get(\"legendDataItem\");\n\n\t\t\tif (legendDataItem) {\n\t\t\t\tconst legend = legendDataItem.component;\n\t\t\t\tif (legend.isType<StockLegend>(\"StockLegend\")) {\n\t\t\t\t\tlegend.data.push(series);\n\t\t\t\t\tconst ldi = series.get(\"legendDataItem\") as DataItem<IStockLegendDataItem>;\n\t\t\t\t\tif (ldi) {\n\t\t\t\t\t\tconst closeButton = ldi.get(\"closeButton\");\n\t\t\t\t\t\tcloseButton.set(\"forceHidden\", false);\n\t\t\t\t\t\tcloseButton.events.on(\"click\", () => {\n\t\t\t\t\t\t\tthis.removeComparingSeries(series);\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\tif (this.get(\"autoSetPercentScale\")) {\n\t\t\t\tthis.setPercentScale(true);\n\t\t\t}\n\n\t\t}\n\t\treturn series;\n\t}\n\n\t/**\n\t * Removes compared series.\n\t *\n\t * @param series Compared series\n\t */\n\tpublic removeComparingSeries(series: XYSeries) {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tif (stockSeries) {\n\t\t\tconst chart = stockSeries.chart;\n\t\t\tif (chart) {\n\t\t\t\tchart.series.removeValue(series);\n\t\t\t}\n\n\t\t\tconst comparedSeries = this.getPrivate(\"comparedSeries\");\n\t\t\tif (comparedSeries) {\n\t\t\t\t$array.remove(comparedSeries, series);\n\t\t\t\tif (comparedSeries.length == 0 && this.get(\"autoSetPercentScale\")) {\n\t\t\t\t\tthis.setPercentScale(false);\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\n\t\tconst ldi = series.get(\"legendDataItem\") as DataItem<IStockLegendDataItem>;\n\t\tif (ldi) {\n\t\t\tconst legend = ldi.component;\n\t\t\tlegend.data.removeValue(series);\n\t\t}\n\n\t}\n\n\tprotected _maybePrepSeriesDefaults(series: XYSeries): void {\n\t\tif (!series.states.lookup(\"comparingDefaults\")) {\n\t\t\tconst seriesSettings = this.get(\"percentScaleSeriesSettings\");\n\t\t\tconst defaults: any = {};\n\t\t\t$object.each(seriesSettings, (key, _val) => {\n\t\t\t\tdefaults[key] = (<any>series).get(key);\n\t\t\t});\n\t\t\tseries.states.create(\"comparingDefaults\", defaults);\n\t\t}\n\t}\n\n\tpublic getSeriesDefault(series: XYSeries, setting: keyof IXYSeriesSettings): any {\n\t\tconst defaults = series.states.lookup(\"comparingDefaults\");\n\t\treturn defaults ? defaults.get(setting) : series.get(setting);\n\t}\n\n\tprotected _maybePrepAxisDefaults(): void {\n\t\tconst stockSeries = this.get(\"stockSeries\")!;\n\t\tconst axis = stockSeries.get(\"yAxis\");\n\t\tif (!axis.states.lookup(\"comparingDefaults\")) {\n\t\t\tconst axisSettings = this.get(\"percentScaleValueAxisSettings\");\n\t\t\tconst defaults: any = {};\n\t\t\t$object.each(axisSettings, (key, _val) => {\n\t\t\t\tdefaults[key] = (<any>axis).get(key);\n\t\t\t});\n\t\t\taxis.states.create(\"comparingDefaults\", defaults);\n\t\t}\n\t}\n\n\tprotected _processIndicator(indicator: Indicator) {\n\t\tthis.children.push(indicator);\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tif (stockSeries) {\n\t\t\tindicator._setSoft(\"stockSeries\", stockSeries);\n\t\t}\n\n\t\tconst volumeSeries = this.get(\"volumeSeries\");\n\t\tif (volumeSeries) {\n\t\t\tindicator._setSoft(\"volumeSeries\", volumeSeries);\n\t\t}\n\n\t\tif (this.getPrivate(\"comparing\")) {\n\t\t\tthis.setPercentScale(true);\n\t\t}\n\n\n\t\t$array.each(indicator._editableSettings, (setting) => {\n\t\t\tindicator.on((setting as any).key, () => {\n\t\t\t\tthis.markDirtyIndicators();\n\t\t\t})\n\t\t})\n\n\t\tthis.markDirtyIndicators();\n\n\t\t//indicator.markDataDirty(); // not good, shows zoomed out value axis\n\t\tindicator.prepareData();\n\n\t\tthis._syncExtremes();\n\t}\n\n\tprotected _removeIndicator(indicator: Indicator) {\n\t\tthis.children.removeValue(indicator);\n\t\tthis.markDirtyIndicators();\n\t}\n\n\tprotected _removePanel(chart: StockPanel) {\n\t\tthis.panelsContainer.children.removeValue(chart);\n\t}\n\n\tpublic _updateControls() {\n\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\tthis.panels.each((panel) => {\n\t\t\tconst panelControls = panel.panelControls;\n\t\t\tconst index = this.panelsContainer.children.indexOf(panel);\n\t\t\tconst len = this.panels.length;\n\t\t\tconst visible = \"visible\"\n\t\t\tconst autoHidePanelControls = this.get(\"autoHidePanelControls\", false);\n\n\t\t\tpanelControls.set(visible, !autoHidePanelControls);\n\n\t\t\tpanelControls.upButton.setPrivate(visible, false);\n\t\t\tpanelControls.downButton.setPrivate(visible, false);\n\t\t\tpanelControls.expandButton.setPrivate(visible, false);\n\t\t\tpanelControls.closeButton.setPrivate(visible, false);\n\n\n\t\t\tif (autoHidePanelControls) {\n\t\t\t\tpanel.plotContainer.events.on(\"pointerover\", () => {\n\t\t\t\t\tpanelControls.show();\n\t\t\t\t})\n\n\t\t\t\tpanelControls.events.on(\"pointerover\", () => {\n\t\t\t\t\tpanelControls.show();\n\t\t\t\t})\n\n\t\t\t\tpanel.plotContainer.events.on(\"pointerout\", () => {\n\t\t\t\t\tif (!panelControls.isHover()) {\n\t\t\t\t\t\tpanelControls.hide();\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t}\n\n\t\t\tif (len > 1) {\n\t\t\t\tpanelControls.expandButton.setPrivate(visible, true);\n\n\t\t\t\tif (index != 0) {\n\t\t\t\t\tpanelControls.upButton.setPrivate(visible, true);\n\t\t\t\t}\n\t\t\t\tif (index != len - 1) {\n\t\t\t\t\tpanelControls.downButton.setPrivate(visible, true);\n\t\t\t\t}\n\n\t\t\t\tif (!stockSeries || stockSeries.chart != panel) {\n\t\t\t\t\tpanelControls.closeButton.setPrivate(visible, true);\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (stockSeries) {\n\t\t\t\tthis.indicators.each((indicator) => {\n\t\t\t\t\tindicator.set(\"stockSeries\", stockSeries);\n\t\t\t\t});\n\t\t\t}\n\t\t})\n\n\t\tthis._updateResizers();\n\t}\n\n\tprotected _processPanel(panel: StockPanel) {\n\n\t\tpanel.setPrivate(\"otherCharts\", this.panels.values);\n\t\tpanel.setPrivate(\"stockChart\", this);\n\t\tpanel.panelControls = panel.topPlotContainer.children.push(PanelControls.new(this._root, { stockPanel: panel, stockChart: this }));\n\t\tthis._updateControls();\n\n\n\t\tconst resizer = panel.children.push(Rectangle.new(this._root, { themeTags: [\"panelresizer\"] }))\n\n\t\tpanel.panelResizer = resizer;\n\n\t\tresizer.events.on(\"pointerdown\", (e) => {\n\t\t\tconst chartsContainer = this.panelsContainer;\n\t\t\tthis._downResizer = e.target;\n\t\t\tthis.panels.each((chart) => {\n\t\t\t\tchart.set(\"height\", percent(chart.height() / chartsContainer.height() * 100))\n\t\t\t})\n\n\t\t\tthis._downY = chartsContainer.toLocal(e.point).y;\n\n\t\t\tconst upperChart = chartsContainer.children.getIndex(chartsContainer.children.indexOf(panel) - 1) as StockPanel;\n\t\t\tthis._upperPanel = upperChart;\n\t\t\tif (upperChart) {\n\t\t\t\tthis._uhp = upperChart.get(\"height\") as Percent;\n\t\t\t}\n\n\t\t\tthis._dhp = panel.get(\"height\") as Percent;\n\t\t})\n\n\t\tresizer.events.on(\"pointerup\", () => {\n\t\t\tthis._downResizer = undefined;\n\t\t})\n\n\t\tresizer.events.on(\"globalpointermove\", (e) => {\n\t\t\tif (e.target == this._downResizer) {\n\t\t\t\tconst chartsContainer = this.panelsContainer;\n\t\t\t\tconst height = chartsContainer.height();\n\t\t\t\tconst upperChart = this._upperPanel;\n\n\t\t\t\tif (upperChart) {\n\t\t\t\t\tconst index = chartsContainer.children.indexOf(upperChart) + 2\n\t\t\t\t\tlet max = height - panel.get(\"minHeight\", 0);\n\t\t\t\t\tconst lowerChart = chartsContainer.children.getIndex(index);\n\t\t\t\t\tif (lowerChart) {\n\t\t\t\t\t\tmax = lowerChart.y() - panel.get(\"minHeight\", 0);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst y = Math.max(upperChart.y() + upperChart.get(\"minHeight\", 0) + upperChart.get(\"paddingTop\", 0), Math.min(chartsContainer.toLocal(e.point).y, max));\n\n\t\t\t\t\tconst downY = this._downY;\n\t\t\t\t\tconst dhp = this._dhp;\n\t\t\t\t\tconst uhp = this._uhp;\n\t\t\t\t\tif (downY != null && dhp != null && uhp != null) {\n\t\t\t\t\t\tconst diff = (downY - y) / height;\n\t\t\t\t\t\tpanel.set(\"height\", percent((dhp.value + diff) * 100));\n\t\t\t\t\t\tupperChart.set(\"height\", percent((uhp.value - diff) * 100))\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t})\n\n\t\tpanel.xAxes.events.onAll((change) => {\n\t\t\tif (change.type === \"clear\") {\n\t\t\t\t$array.each(change.oldValues, (axis) => {\n\t\t\t\t\tthis._removeXAxis(axis);\n\t\t\t\t})\n\t\t\t} else if (change.type === \"push\") {\n\t\t\t\tthis._processXAxis(change.newValue);\n\t\t\t} else if (change.type === \"setIndex\") {\n\t\t\t\tthis._processXAxis(change.newValue);\n\t\t\t} else if (change.type === \"insertIndex\") {\n\t\t\t\tthis._processXAxis(change.newValue);\n\t\t\t} else if (change.type === \"removeIndex\") {\n\t\t\t\tthis._removeXAxis(change.oldValue);\n\t\t\t} else {\n\t\t\t\tthrow new Error(\"Unknown IListEvent type\");\n\t\t\t}\n\t\t})\n\n\t\tpanel.leftAxesContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis._syncYAxesSize();\n\t\t\t})\n\t\t})\n\n\t\tpanel.rightAxesContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis.root.events.once(\"frameended\", () => {\n\t\t\t\tthis._syncYAxesSize();\n\t\t\t})\n\t\t})\n\n\t\tthis._updateResizers();\n\t}\n\n\tpublic _updateResizers() {\n\t\tthis.panels.each((panel) => {\n\t\t\tlet hidden = false;\n\t\t\tif (this.panelsContainer.children.indexOf(panel) == 0) {\n\t\t\t\thidden = true;\n\t\t\t}\n\t\t\tpanel.panelResizer?.set(\"forceHidden\", hidden);\n\t\t})\n\t}\n\n\n\tprotected _syncYAxesSize() {\n\t\tlet maxLeft = 0;\n\t\tlet maxRight = 0;\n\n\t\tthis.panels.each((chart) => {\n\t\t\tlet lw = chart.leftAxesContainer.width();\n\t\t\tlet rw = chart.rightAxesContainer.width();\n\t\t\tif (lw > maxLeft) {\n\t\t\t\tmaxLeft = lw;\n\t\t\t}\n\t\t\tif (rw > maxRight) {\n\t\t\t\tmaxRight = rw;\n\t\t\t}\n\t\t})\n\n\t\tthis.panels.each((chart) => {\n\t\t\tchart.leftAxesContainer.set(\"minWidth\", maxLeft);\n\t\t\tchart.rightAxesContainer.set(\"minWidth\", maxRight);\n\t\t})\n\n\t\tthis.toolsContainer.set(\"paddingLeft\", maxLeft);\n\t\tthis.toolsContainer.set(\"paddingRight\", maxRight);\n\t}\n\n\tprotected _removeXAxis(_axis: Axis<AxisRenderer>) {\n\n\t}\n\n\tprotected _processXAxis(axis: Axis<AxisRenderer>) {\n\t\t$array.move(this._xAxes, axis);\n\t\taxis.on(\"start\", () => {\n\t\t\tif (axis._skipSync != true) {\n\t\t\t\tthis._syncXAxes(axis);\n\t\t\t}\n\t\t})\n\t\taxis.on(\"end\", () => {\n\t\t\tif (axis._skipSync != true) {\n\t\t\t\tthis._syncXAxes(axis);\n\t\t\t}\n\t\t})\n\n\t\tif (this._xAxes[0]) {\n\t\t\tthis._root.events.once(\"frameended\", () => {\n\t\t\t\tthis._syncXAxes(this._xAxes[0])\n\t\t\t})\n\t\t}\n\t}\n\n\tprotected _syncExtremes() {\n\n\t\tconst mainAxis = this.getPrivate(\"mainAxis\");\n\t\tif (mainAxis) {\n\t\t\tconst min = mainAxis.getPrivate(\"min\");\n\t\t\tconst max = mainAxis.getPrivate(\"max\");\n\n\t\t\tthis.panels.each((panel) => {\n\t\t\t\tpanel.xAxes.each((xAxis) => {\n\t\t\t\t\tif (xAxis != mainAxis && xAxis.isType(\"DateAxis\")) {\n\t\t\t\t\t\tlet axisMin = xAxis.getPrivate(\"min\" as any);\n\t\t\t\t\t\tlet axisMax = xAxis.getPrivate(\"max\" as any);\n\n\t\t\t\t\t\tif (axisMin != min) {\n\t\t\t\t\t\t\txAxis.set(\"min\" as any, min);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (axisMax != max) {\n\t\t\t\t\t\t\txAxis.set(\"max\" as any, max);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tconst type = \"GaplessDateAxis\";\n\t\t\t\t\t\tif (xAxis.isType<GaplessDateAxis<AxisRenderer>>(type) && mainAxis.isType<GaplessDateAxis<AxisRenderer>>(type)) {\n\t\t\t\t\t\t\txAxis._customDates = mainAxis._dates;\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\t}\n\n\tprotected _syncXAxes(axis: Axis<AxisRenderer>) {\n\t\t$array.each(this._xAxes, (xAxis) => {\n\t\t\tif (xAxis != axis && xAxis.isType(\"DateAxis\") && xAxis.get(\"zoomable\", true)) {\n\t\t\t\txAxis._skipSync = true;\n\t\t\t\txAxis.set(\"start\", axis.get(\"start\"));\n\t\t\t\txAxis.set(\"end\", axis.get(\"end\"));\n\t\t\t\txAxis._skipSync = false;\n\t\t\t}\n\t\t})\n\t}\n\n\t/**\n\t * Returns a color for volume, based on current and previous close.\n\t *\n\t * * `positiveColor` - close is greater or equal than close of the previous period.\n\t * * `negativeColor` - close is lower than close of the previous period.\n\t *\n\t * @param dataItem Target data item\n\t * @param negativeColor \"Negative color\" (red)\n\t * @param positiveColor \"Positive color\" (green)\n\t * @return Color\n\t */\n\tpublic getVolumeColor(dataItem: DataItem<IXYSeriesDataItem>, negativeColor?: Color, positiveColor?: Color): Color | undefined {\n\t\tif (dataItem) {\n\t\t\tconst stockSeries = this.get(\"stockSeries\");\n\t\t\tconst volumeSeries = dataItem.component;\n\n\t\t\tif (!negativeColor) {\n\t\t\t\tnegativeColor = this.get(\"volumeNegativeColor\", this.root.interfaceColors.get(\"negative\", Color.fromHex(0xff0000)));\n\t\t\t}\n\n\t\t\tif (!positiveColor) {\n\t\t\t\tpositiveColor = this.get(\"volumePositiveColor\", this.root.interfaceColors.get(\"positive\", Color.fromHex(0x00FF00)));\n\t\t\t}\n\n\n\t\t\tif (negativeColor && positiveColor) {\n\t\t\t\tif (stockSeries && volumeSeries) {\n\t\t\t\t\tconst index = volumeSeries.dataItems.indexOf(dataItem);\n\t\t\t\t\tif (index > 0) {\n\t\t\t\t\t\tlet stockDataItem = stockSeries.dataItems[index];\n\t\t\t\t\t\tif (stockDataItem) {\n\t\t\t\t\t\t\tlet close = stockDataItem.get(\"valueY\");\n\t\t\t\t\t\t\tif (close != null) {\n\t\t\t\t\t\t\t\tfor (let i = index - 1; i >= 0; i--) {\n\t\t\t\t\t\t\t\t\tlet di = stockSeries.dataItems[i];\n\t\t\t\t\t\t\t\t\tlet previousClose = di.get(\"valueY\");\n\n\t\t\t\t\t\t\t\t\tif (previousClose != null) {\n\t\t\t\t\t\t\t\t\t\tif (close < previousClose) {\n\t\t\t\t\t\t\t\t\t\t\treturn negativeColor;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\telse {\n\t\t\t\t\t\t\t\t\t\t\treturn positiveColor;\n\t\t\t\t\t\t\t\t\t\t}\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}\n\t\t\t}\n\t\t}\n\t\treturn positiveColor;\n\t}\n\n\t/**\n\t * Returns a first [[StockControl]] of specific type.\n\t *\n\t * @since 5.7.0\n\t * @param type Control name\n\t * @return Control\n\t */\n\tpublic getControl(type: string): StockControl | undefined {\n\t\tlet found: StockControl | undefined;\n\t\t$array.eachContinue(this.controls, (control: StockControl) => {\n\t\t\tif (control.className == type) {\n\t\t\t\tfound = control;\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t});\n\t\treturn found;\n\t}\n\n\tpublic _dragStartDrawing(event: ISpritePointerEvent) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries._dragStart(event);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\tpublic _dragStopDrawing(event: ISpritePointerEvent) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries._dragStop(event);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Enables or disables interactivity of annotations (drawings).\n\t *\n\t * @param value Drawings interactive?\n\t * @since 5.4.9\n\t */\n\tpublic drawingsInteractive(value: boolean, except?: DrawingSeries) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series != except) {\n\t\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\t\tseries.setInteractive(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Unselect all currently selected drawings.\n\t *\n\t * @since 5.9.0\n\t */\n\tpublic unselectDrawings(): number {\n\t\tlet count = 0;\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tcount += series.unselectDrawings();\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\n\t\tthis.spriteResizer.set(\"sprite\", undefined);\n\n\t\treturn count;\n\t}\n\n\t/**\n\t * Cancels drawing and deletes drawing which is now being drawn.\n\t *\n\t * @since 5.9.0\n\t */\n\tpublic cancelDrawing() {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.cancelDrawing();\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Deletes all currently selected drawings.\n\t *\n\t * @since 5.9.0\n\t *\n\t */\n\tpublic deleteSelectedDrawings() {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.deleteSelected();\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Selects drawing by its ID.\n\t *\n\t * @param id Drawing ID\n\t * @param keepSelection Keep existing selections\n\t * @since 5.9.0\n\t */\n\tpublic selectDrawing(id: string, keepSelection?: boolean) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.selectDrawing(id, keepSelection);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Unselects drawing by ID.\n\t *\n\t * @param id Drawing ID\n\t * @since 5.9.0\n\t */\n\tpublic unselectDrawing(id: string) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.unselectDrawing(id);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n\t/**\n\t * Deletes drawing by drawingId.\n\t *\n\t * @param id Drawing ID\n\t * @since 5.9.0\n\t */\n\tpublic deleteDrawing(id: string) {\n\t\tthis.panels.each((panel) => {\n\t\t\tpanel.series.each((series) => {\n\t\t\t\tif (series.isType<DrawingSeries>(\"DrawingSeries\")) {\n\t\t\t\t\tseries.deleteDrawing(id);\n\t\t\t\t}\n\t\t\t})\n\t\t})\n\t}\n\n}\n\n/**\n * Registers a custom class so that objects (e.g. indicators) using it can be\n * serialized and restored later.\n *\n * @param name Class name\n * @param ref Class reference\n * @since 5.7.2\n */\nexport function registerClass(name: string, ref: any) {\n\tref.className = name;\n\tregisterCustomClass(name, ref);\n}\n"]}
@@ -14,7 +14,7 @@ export interface IStockPanelPrivate extends IXYChartPrivate {
14
14
  }
15
15
  export interface IStockPanelEvents extends IXYChartEvents {
16
16
  /**
17
- * Kicks in when panels is moved up or down.
17
+ * Kicks in when panel is moved up or down.
18
18
  *
19
19
  * @since 5.9.2
20
20
  */