@amcharts/amcharts5 5.12.2 → 5.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (223) hide show
  1. package/.internal/charts/hierarchy/HierarchyDefaultTheme.d.ts.map +1 -1
  2. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js +5 -1
  3. package/.internal/charts/hierarchy/HierarchyDefaultTheme.js.map +1 -1
  4. package/.internal/charts/stock/SettingsModal.d.ts.map +1 -1
  5. package/.internal/charts/stock/SettingsModal.js +3 -0
  6. package/.internal/charts/stock/SettingsModal.js.map +1 -1
  7. package/.internal/charts/stock/StockChart.d.ts +8 -0
  8. package/.internal/charts/stock/StockChart.d.ts.map +1 -1
  9. package/.internal/charts/stock/StockChart.js +21 -2
  10. package/.internal/charts/stock/StockChart.js.map +1 -1
  11. package/.internal/charts/stock/StockChartDefaultTheme.d.ts.map +1 -1
  12. package/.internal/charts/stock/StockChartDefaultTheme.js +23 -3
  13. package/.internal/charts/stock/StockChartDefaultTheme.js.map +1 -1
  14. package/.internal/charts/stock/drawing/DrawingSeries.d.ts.map +1 -1
  15. package/.internal/charts/stock/drawing/DrawingSeries.js +1 -0
  16. package/.internal/charts/stock/drawing/DrawingSeries.js.map +1 -1
  17. package/.internal/charts/stock/indicators/SuperTrend.d.ts +49 -0
  18. package/.internal/charts/stock/indicators/SuperTrend.d.ts.map +1 -0
  19. package/.internal/charts/stock/indicators/SuperTrend.js +283 -0
  20. package/.internal/charts/stock/indicators/SuperTrend.js.map +1 -0
  21. package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts +8 -0
  22. package/.internal/charts/stock/toolbar/DateRangeSelector.d.ts.map +1 -1
  23. package/.internal/charts/stock/toolbar/DateRangeSelector.js +15 -2
  24. package/.internal/charts/stock/toolbar/DateRangeSelector.js.map +1 -1
  25. package/.internal/charts/stock/toolbar/IndicatorControl.d.ts +1 -1
  26. package/.internal/charts/stock/toolbar/IndicatorControl.d.ts.map +1 -1
  27. package/.internal/charts/stock/toolbar/IndicatorControl.js +11 -1
  28. package/.internal/charts/stock/toolbar/IndicatorControl.js.map +1 -1
  29. package/.internal/charts/xy/XYChart.js +2 -2
  30. package/.internal/charts/xy/XYChart.js.map +1 -1
  31. package/.internal/charts/xy/axes/Axis.d.ts +2 -2
  32. package/.internal/charts/xy/axes/Axis.d.ts.map +1 -1
  33. package/.internal/charts/xy/axes/Axis.js.map +1 -1
  34. package/.internal/charts/xy/axes/CategoryAxis.d.ts +7 -0
  35. package/.internal/charts/xy/axes/CategoryAxis.d.ts.map +1 -1
  36. package/.internal/charts/xy/axes/CategoryAxis.js +13 -0
  37. package/.internal/charts/xy/axes/CategoryAxis.js.map +1 -1
  38. package/.internal/charts/xy/axes/DateAxis.d.ts +2 -2
  39. package/.internal/charts/xy/axes/DateAxis.d.ts.map +1 -1
  40. package/.internal/charts/xy/axes/DateAxis.js +28 -16
  41. package/.internal/charts/xy/axes/DateAxis.js.map +1 -1
  42. package/.internal/charts/xy/axes/ValueAxis.d.ts.map +1 -1
  43. package/.internal/charts/xy/axes/ValueAxis.js +13 -5
  44. package/.internal/charts/xy/axes/ValueAxis.js.map +1 -1
  45. package/.internal/charts/xy/series/LineSeries.d.ts.map +1 -1
  46. package/.internal/charts/xy/series/LineSeries.js +17 -10
  47. package/.internal/charts/xy/series/LineSeries.js.map +1 -1
  48. package/.internal/charts/xy/series/XYSeries.d.ts +30 -1
  49. package/.internal/charts/xy/series/XYSeries.d.ts.map +1 -1
  50. package/.internal/charts/xy/series/XYSeries.js +10 -6
  51. package/.internal/charts/xy/series/XYSeries.js.map +1 -1
  52. package/.internal/core/Classes.d.ts +2 -0
  53. package/.internal/core/Classes.d.ts.map +1 -1
  54. package/.internal/core/Classes.js.map +1 -1
  55. package/.internal/core/Registry.js +1 -1
  56. package/.internal/core/Registry.js.map +1 -1
  57. package/.internal/core/render/Rectangle.d.ts +5 -0
  58. package/.internal/core/render/Rectangle.d.ts.map +1 -1
  59. package/.internal/core/render/Rectangle.js +14 -1
  60. package/.internal/core/render/Rectangle.js.map +1 -1
  61. package/.internal/core/render/RoundedRectangle.d.ts.map +1 -1
  62. package/.internal/core/render/RoundedRectangle.js +20 -11
  63. package/.internal/core/render/RoundedRectangle.js.map +1 -1
  64. package/.internal/core/render/Tooltip.d.ts +10 -1
  65. package/.internal/core/render/Tooltip.d.ts.map +1 -1
  66. package/.internal/core/render/Tooltip.js +21 -0
  67. package/.internal/core/render/Tooltip.js.map +1 -1
  68. package/CHANGELOG.md +29 -1
  69. package/examples/javascript/flow-arc-horizontal/package.json +1 -1
  70. package/examples/javascript/flow-arc-vertical/package.json +1 -1
  71. package/examples/javascript/flow-chord/package.json +1 -1
  72. package/examples/javascript/flow-chord-directed/package.json +1 -1
  73. package/examples/javascript/flow-chord-non-ribbon/package.json +1 -1
  74. package/examples/javascript/flow-sankey/package.json +1 -1
  75. package/examples/javascript/gauge/package.json +1 -1
  76. package/examples/javascript/gauge-bands/package.json +1 -1
  77. package/examples/javascript/hierarchy-force-directed/package.json +1 -1
  78. package/examples/javascript/hierarchy-pack/package.json +1 -1
  79. package/examples/javascript/hierarchy-partition/package.json +1 -1
  80. package/examples/javascript/hierarchy-sunburst/package.json +1 -1
  81. package/examples/javascript/hierarchy-tree/package.json +1 -1
  82. package/examples/javascript/hierarchy-treemap/package.json +1 -1
  83. package/examples/javascript/hierarchy-voronoi-treemap/package.json +1 -1
  84. package/examples/javascript/jest/package.json +1 -1
  85. package/examples/javascript/json-pie/package.json +1 -1
  86. package/examples/javascript/json-xy/package.json +1 -1
  87. package/examples/javascript/map-animating-along-lines/package.json +1 -1
  88. package/examples/javascript/map-clustered-points/package.json +1 -1
  89. package/examples/javascript/map-day-and-night/package.json +1 -1
  90. package/examples/javascript/map-globe-rotate-to-country/package.json +1 -1
  91. package/examples/javascript/map-globe-with-projected-circles/package.json +1 -1
  92. package/examples/javascript/map-with-bubbles/package.json +1 -1
  93. package/examples/javascript/map-zoom-to-country/package.json +1 -1
  94. package/examples/javascript/misc-40-charts/package.json +1 -1
  95. package/examples/javascript/misc-microchart-grid/package.json +1 -1
  96. package/examples/javascript/pie-chart/package.json +1 -1
  97. package/examples/javascript/pie-donut-chart/package.json +1 -1
  98. package/examples/javascript/pie-variable-radius/package.json +1 -1
  99. package/examples/javascript/radar-column-iwatch-style/package.json +1 -1
  100. package/examples/javascript/radar-heat-map/package.json +1 -1
  101. package/examples/javascript/radar-line/package.json +1 -1
  102. package/examples/javascript/radar-time-line/package.json +1 -1
  103. package/examples/javascript/sliced-funnel/package.json +1 -1
  104. package/examples/javascript/sliced-pictorial-stacked/package.json +1 -1
  105. package/examples/javascript/sliced-pyramid/package.json +1 -1
  106. package/examples/javascript/stock-chart/package.json +1 -1
  107. package/examples/javascript/stock-chart-comparing-stocks/package.json +1 -1
  108. package/examples/javascript/stock-chart-data-granularity/package.json +1 -1
  109. package/examples/javascript/stock-chart-data-grouping/package.json +1 -1
  110. package/examples/javascript/stock-chart-intraday/package.json +1 -1
  111. package/examples/javascript/stock-chart-live/package.json +1 -1
  112. package/examples/javascript/stock-chart-volume-separate-panel/package.json +1 -1
  113. package/examples/javascript/timeline-horizontal-serpentine-chart/package.json +1 -1
  114. package/examples/javascript/timeline-linear-process-diagram/package.json +1 -1
  115. package/examples/javascript/timeline-serpentine-chart/package.json +1 -1
  116. package/examples/javascript/timeline-spiral-chart/package.json +1 -1
  117. package/examples/javascript/venn-diagram/package.json +1 -1
  118. package/examples/javascript/wordcloud-with-data/package.json +1 -1
  119. package/examples/javascript/wordcloud-with-text/package.json +1 -1
  120. package/examples/javascript/xy-100-percent-stacked-column/package.json +1 -1
  121. package/examples/javascript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  122. package/examples/javascript/xy-bubble/package.json +1 -1
  123. package/examples/javascript/xy-candlestick/package.json +1 -1
  124. package/examples/javascript/xy-clustered-column/package.json +1 -1
  125. package/examples/javascript/xy-column/package.json +1 -1
  126. package/examples/javascript/xy-comparing-series-google-analytics-style/package.json +1 -1
  127. package/examples/javascript/xy-data-grouping/package.json +1 -1
  128. package/examples/javascript/xy-draggable-range/package.json +1 -1
  129. package/examples/javascript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  130. package/examples/javascript/xy-dumbbell plot/package.json +1 -1
  131. package/examples/javascript/xy-evenly-spaced-date-axis/package.json +1 -1
  132. package/examples/javascript/xy-line/package.json +1 -1
  133. package/examples/javascript/xy-line-highlight-on-legend-hover/package.json +1 -1
  134. package/examples/javascript/xy-live-data/package.json +1 -1
  135. package/examples/javascript/xy-multiple-synced-value-axes/package.json +1 -1
  136. package/examples/javascript/xy-ohlc/package.json +1 -1
  137. package/examples/javascript/xy-real-time-data-sorting/package.json +1 -1
  138. package/examples/javascript/xy-smoothed-line/package.json +1 -1
  139. package/examples/javascript/xy-stacked-and-clustered-column/package.json +1 -1
  140. package/examples/javascript/xy-stacked-column/package.json +1 -1
  141. package/examples/javascript/xy-stacked-step/package.json +1 -1
  142. package/examples/javascript/xy-stock/package.json +1 -1
  143. package/examples/javascript/xy-stock-comparing/package.json +1 -1
  144. package/examples/typescript/flow-arc-horizontal/package.json +1 -1
  145. package/examples/typescript/flow-arc-vertical/package.json +1 -1
  146. package/examples/typescript/flow-chord/package.json +1 -1
  147. package/examples/typescript/flow-chord-directed/package.json +1 -1
  148. package/examples/typescript/flow-chord-non-ribbon/package.json +1 -1
  149. package/examples/typescript/flow-sankey/package.json +1 -1
  150. package/examples/typescript/gauge/package.json +1 -1
  151. package/examples/typescript/gauge-bands/package.json +1 -1
  152. package/examples/typescript/hierarchy-force-directed/package.json +1 -1
  153. package/examples/typescript/hierarchy-pack/package.json +1 -1
  154. package/examples/typescript/hierarchy-partition/package.json +1 -1
  155. package/examples/typescript/hierarchy-sunburst/package.json +1 -1
  156. package/examples/typescript/hierarchy-tree/package.json +1 -1
  157. package/examples/typescript/hierarchy-treemap/package.json +1 -1
  158. package/examples/typescript/hierarchy-voronoi-treemap/package.json +1 -1
  159. package/examples/typescript/jest/package.json +1 -1
  160. package/examples/typescript/json-pie/package.json +1 -1
  161. package/examples/typescript/json-xy/package.json +1 -1
  162. package/examples/typescript/map-animating-along-lines/package.json +1 -1
  163. package/examples/typescript/map-clustered-points/package.json +1 -1
  164. package/examples/typescript/map-day-and-night/package.json +1 -1
  165. package/examples/typescript/map-globe-rotate-to-country/package.json +1 -1
  166. package/examples/typescript/map-globe-with-projected-circles/package.json +1 -1
  167. package/examples/typescript/map-with-bubbles/package.json +1 -1
  168. package/examples/typescript/map-zoom-to-country/package.json +1 -1
  169. package/examples/typescript/misc-40-charts/package.json +1 -1
  170. package/examples/typescript/misc-microchart-grid/package.json +1 -1
  171. package/examples/typescript/pie-chart/package.json +1 -1
  172. package/examples/typescript/pie-donut-chart/package.json +1 -1
  173. package/examples/typescript/pie-variable-radius/package.json +1 -1
  174. package/examples/typescript/radar-column-iwatch-style/package.json +1 -1
  175. package/examples/typescript/radar-heat-map/package.json +1 -1
  176. package/examples/typescript/radar-line/package.json +1 -1
  177. package/examples/typescript/radar-time-line/package.json +1 -1
  178. package/examples/typescript/sliced-funnel/package.json +1 -1
  179. package/examples/typescript/sliced-pictorial-stacked/package.json +1 -1
  180. package/examples/typescript/sliced-pyramid/package.json +1 -1
  181. package/examples/typescript/stock-chart/package.json +1 -1
  182. package/examples/typescript/stock-chart-comparing-stocks/package.json +1 -1
  183. package/examples/typescript/stock-chart-data-granularity/package.json +1 -1
  184. package/examples/typescript/stock-chart-data-grouping/package.json +1 -1
  185. package/examples/typescript/stock-chart-intraday/package.json +1 -1
  186. package/examples/typescript/stock-chart-live/package.json +1 -1
  187. package/examples/typescript/stock-chart-volume-separate-panel/package.json +1 -1
  188. package/examples/typescript/timeline-horizontal-serpentine-chart/package.json +1 -1
  189. package/examples/typescript/timeline-linear-process-diagram/package.json +1 -1
  190. package/examples/typescript/timeline-serpentine-chart/package.json +1 -1
  191. package/examples/typescript/timeline-spiral-chart/package.json +1 -1
  192. package/examples/typescript/venn-diagram/package.json +1 -1
  193. package/examples/typescript/wordcloud-with-data/package.json +1 -1
  194. package/examples/typescript/wordcloud-with-text/package.json +1 -1
  195. package/examples/typescript/xy-100-percent-stacked-column/package.json +1 -1
  196. package/examples/typescript/xy-animated-bullet-at-the-end-of-the-series/package.json +1 -1
  197. package/examples/typescript/xy-bubble/package.json +1 -1
  198. package/examples/typescript/xy-candlestick/package.json +1 -1
  199. package/examples/typescript/xy-clustered-column/package.json +1 -1
  200. package/examples/typescript/xy-column/package.json +1 -1
  201. package/examples/typescript/xy-comparing-series-google-analytics-style/package.json +1 -1
  202. package/examples/typescript/xy-data-grouping/package.json +1 -1
  203. package/examples/typescript/xy-draggable-range/package.json +1 -1
  204. package/examples/typescript/xy-drawing-series-with-mouse-or-touch/package.json +1 -1
  205. package/examples/typescript/xy-dumbbell plot/package.json +1 -1
  206. package/examples/typescript/xy-evenly-spaced-date-axis/package.json +1 -1
  207. package/examples/typescript/xy-line/package.json +1 -1
  208. package/examples/typescript/xy-line-highlight-on-legend-hover/package.json +1 -1
  209. package/examples/typescript/xy-live-data/package.json +1 -1
  210. package/examples/typescript/xy-multiple-synced-value-axes/package.json +1 -1
  211. package/examples/typescript/xy-ohlc/package.json +1 -1
  212. package/examples/typescript/xy-real-time-data-sorting/package.json +1 -1
  213. package/examples/typescript/xy-smoothed-line/package.json +1 -1
  214. package/examples/typescript/xy-stacked-and-clustered-column/package.json +1 -1
  215. package/examples/typescript/xy-stacked-column/package.json +1 -1
  216. package/examples/typescript/xy-stacked-step/package.json +1 -1
  217. package/examples/typescript/xy-stock/package.json +1 -1
  218. package/examples/typescript/xy-stock-comparing/package.json +1 -1
  219. package/package.json +1 -1
  220. package/stock.d.ts +1 -0
  221. package/stock.d.ts.map +1 -1
  222. package/stock.js +1 -0
  223. package/stock.js.map +1 -1
@@ -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}\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\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\tpublic _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\", false);\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.set(\"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\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\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\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\t\t\t\t\t//console.log(upperChart.get(\"minHeight\", 0))\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._syncYAxesSize();\n\t\t})\n\n\t\tpanel.rightAxesContainer.events.on(\"boundschanged\", () => {\n\t\t\tthis._syncYAxesSize();\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\tprotected _syncYAxesSize() {\n\t\tlet maxLeft = 0;\n\t\tlet maxRight = 0;\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\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\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\")) {\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\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\tpublic _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\", false);\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.set(\"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\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\t\t\t\t\t//console.log(upperChart.get(\"minHeight\", 0))\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\")) {\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 +1 @@
1
- {"version":3,"file":"StockChartDefaultTheme.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/stock/StockChartDefaultTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AASzC;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,SAAS,CAAC,iBAAiB;CAokD3B"}
1
+ {"version":3,"file":"StockChartDefaultTheme.d.ts","sourceRoot":"","sources":["../../../../../src/.internal/charts/stock/StockChartDefaultTheme.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AASzC;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAChD,SAAS,CAAC,iBAAiB;CA8lD3B"}
@@ -41,7 +41,8 @@ export class StockChartDefaultTheme extends Theme {
41
41
  strictMinMaxSelection: true
42
42
  },
43
43
  autoSetPercentScale: true,
44
- drawingSelectionEnabled: false
44
+ drawingSelectionEnabled: false,
45
+ autoHidePanelControls: false
45
46
  });
46
47
  r("StockPanel").setAll({
47
48
  panY: true,
@@ -567,6 +568,12 @@ export class StockChartDefaultTheme extends Theme {
567
568
  visible: true,
568
569
  fillOpacity: 0.2
569
570
  });
571
+ r("Graphics", ["fill", "supertrend", "upper"]).setAll({
572
+ fillOpacity: 0.2
573
+ });
574
+ r("Graphics", ["fill", "supertrend", "lower"]).setAll({
575
+ fillOpacity: 0.2
576
+ });
570
577
  r("Graphics", ["fill", "bollingerbands", "upper"]).setAll({
571
578
  fillOpacity: 0.2
572
579
  });
@@ -686,6 +693,10 @@ export class StockChartDefaultTheme extends Theme {
686
693
  legendValueText: "[{seriesColor} bold]{valueY.formatNumber('#.00')}[/] [{slowColor} bold]{slow.formatNumber('#.00')}[/]",
687
694
  legendLabelText: "{shortName} ({period.formatNumber('#.')},{kSmoothing.formatNumber('#.')},{dSmoothing.formatNumber('#.')})"
688
695
  });
696
+ r("LineSeries", ["supertrend"]).setAll({
697
+ legendValueText: "",
698
+ legendLabelText: "{shortName} ({period.formatNumber('#.')},{multiplier.formatNumber('#.')})"
699
+ });
689
700
  r("LineSeries", ["trix"]).setAll({
690
701
  legendValueText: "[{seriesColor} bold]{valueY.formatNumber('#.00')}[/] [{signalColor} bold]{signal.formatNumber('#.00')}[/]",
691
702
  legendLabelText: "{shortName} ({period.formatNumber('#.')})"
@@ -937,6 +948,14 @@ export class StockChartDefaultTheme extends Theme {
937
948
  field: "close",
938
949
  seriesColor: color(0xab82da)
939
950
  });
951
+ r("SuperTrend").setAll({
952
+ name: l.translateAny("Super Trend"),
953
+ shortName: l.translateAny("Super Trend"),
954
+ period: 10,
955
+ upperColor: ic.get("negative"),
956
+ lowerColor: ic.get("positive"),
957
+ multiplier: 3
958
+ });
940
959
  r("WilliamsR").setAll({
941
960
  name: l.translateAny("Williams %R"),
942
961
  shortName: l.translateAny("Williams %R"),
@@ -1057,7 +1076,7 @@ export class StockChartDefaultTheme extends Theme {
1057
1076
  scrollable: true,
1058
1077
  fixedLabel: true,
1059
1078
  searchable: true,
1060
- indicators: ["Acceleration Bands", "Accumulation Distribution", "Accumulative Swing Index", "Aroon", "Average True Range", "Awesome Oscillator", "Bollinger Bands", "Bull Bear Power", "Chaikin Money Flow", "Chaikin Oscillator", "Commodity Channel Index", "Disparity Index", "Heikin Ashi", "MACD", "Median Price", "Momentum", "Moving Average", "Moving Average Cross", "Moving Average Deviation", "Moving Average Envelope", "On Balance Volume", "Price Volume Trend", "Relative Strength Index", "Standard Deviation", "Stochastic Momentum Index", "Stochastic Oscillator", "Trix", "Typical Price", "Volume", "Volume Profile", "VWAP", "Williams R", "ZigZag"]
1079
+ indicators: ["Acceleration Bands", "Accumulation Distribution", "Accumulative Swing Index", "Aroon", "Average True Range", "Awesome Oscillator", "Bollinger Bands", "Bull Bear Power", "Chaikin Money Flow", "Chaikin Oscillator", "Commodity Channel Index", "Disparity Index", "Heikin Ashi", "MACD", "Median Price", "Momentum", "Moving Average", "Moving Average Cross", "Moving Average Deviation", "Moving Average Envelope", "On Balance Volume", "Price Volume Trend", "Relative Strength Index", "Standard Deviation", "Stochastic Momentum Index", "Stochastic Oscillator", "Super Trend", "Trix", "Typical Price", "Volume", "Volume Profile", "VWAP", "Williams R", "ZigZag"]
1061
1080
  });
1062
1081
  r("ComparisonControl").setAll({
1063
1082
  name: l.translateAny("Comparison")
@@ -1202,7 +1221,8 @@ export class StockChartDefaultTheme extends Theme {
1202
1221
  r("DateRangeSelector").setAll({
1203
1222
  description: l.translateAny("Date Range"),
1204
1223
  minDate: "auto",
1205
- maxDate: "auto"
1224
+ maxDate: "auto",
1225
+ allowInput: true
1206
1226
  });
1207
1227
  r("PeriodSelector").setAll({
1208
1228
  description: l.translateAny("Period selector"),