highcharts 9.2.1 → 9.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (896) hide show
  1. package/README.md +13 -6
  2. package/bower.json +1 -1
  3. package/css/annotations/popup.css +48 -8
  4. package/css/annotations/popup.scss +70 -22
  5. package/css/highcharts.css +46 -1
  6. package/css/highcharts.scss +40 -0
  7. package/css/stocktools/gui.css +1 -1
  8. package/css/themes/dark-unica.css +46 -1
  9. package/css/themes/grid-light.css +46 -1
  10. package/css/themes/sand-signika.css +46 -1
  11. package/es-modules/Accessibility/A11yI18n.js +269 -224
  12. package/es-modules/Accessibility/Accessibility.js +244 -129
  13. package/es-modules/Accessibility/AccessibilityComponent.js +78 -313
  14. package/es-modules/Accessibility/Components/AnnotationsA11y.js +19 -5
  15. package/es-modules/Accessibility/Components/ContainerComponent.js +53 -28
  16. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +178 -120
  17. package/es-modules/Accessibility/Components/LegendComponent.js +251 -129
  18. package/es-modules/Accessibility/Components/MenuComponent.js +239 -154
  19. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +172 -93
  20. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +161 -115
  21. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +138 -69
  22. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +67 -28
  23. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +48 -56
  24. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +387 -343
  25. package/es-modules/Accessibility/Components/ZoomComponent.js +156 -70
  26. package/es-modules/Accessibility/FocusBorder.js +192 -152
  27. package/es-modules/Accessibility/HighContrastMode.js +79 -66
  28. package/es-modules/Accessibility/HighContrastTheme.js +10 -0
  29. package/es-modules/Accessibility/KeyboardNavigation.js +151 -75
  30. package/es-modules/Accessibility/KeyboardNavigationHandler.js +71 -44
  31. package/es-modules/Accessibility/Options/DeprecatedOptions.js +21 -4
  32. package/es-modules/Accessibility/Options/LangOptions.js +4 -5
  33. package/es-modules/Accessibility/Options/Options.js +32 -17
  34. package/es-modules/Accessibility/ProxyElement.js +218 -0
  35. package/es-modules/Accessibility/ProxyProvider.js +302 -0
  36. package/es-modules/Accessibility/Utils/Announcer.js +17 -10
  37. package/es-modules/Accessibility/Utils/ChartUtilities.js +55 -45
  38. package/es-modules/Accessibility/Utils/DOMElementProvider.js +27 -15
  39. package/es-modules/Accessibility/Utils/EventProvider.js +27 -17
  40. package/es-modules/Accessibility/Utils/HTMLUtilities.js +125 -42
  41. package/es-modules/Core/Animation/Fx.js +5 -14
  42. package/es-modules/Core/Axis/Axis.js +77 -96
  43. package/es-modules/Core/Axis/Axis3D.js +10 -4
  44. package/es-modules/Core/Axis/AxisDefaults.js +35 -24
  45. package/es-modules/Core/Axis/BrokenAxis.js +17 -11
  46. package/es-modules/Core/Axis/Color/ColorAxis.js +7 -4
  47. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +55 -5
  48. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +5 -5
  49. package/es-modules/Core/Axis/DateTimeAxis.js +3 -14
  50. package/es-modules/Core/Axis/GridAxis.js +26 -16
  51. package/es-modules/Core/Axis/NavigatorAxis.js +0 -5
  52. package/es-modules/Core/Axis/OrdinalAxis.js +88 -92
  53. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +4 -5
  54. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +0 -5
  55. package/es-modules/Core/Axis/RadialAxis.js +7 -28
  56. package/es-modules/Core/Axis/ScrollbarAxis.js +27 -12
  57. package/es-modules/Core/Axis/StackingAxis.js +2 -1
  58. package/es-modules/Core/Axis/Tick.js +2 -4
  59. package/es-modules/Core/Axis/TreeGridAxis.js +28 -19
  60. package/es-modules/Core/Axis/TreeGridTick.js +5 -3
  61. package/es-modules/Core/Axis/WaterfallAxis.js +1 -1
  62. package/es-modules/Core/Axis/ZAxis.js +1 -1
  63. package/es-modules/Core/Chart/Chart.js +44 -47
  64. package/es-modules/Core/Chart/Chart3D.js +23 -10
  65. package/es-modules/Core/Chart/ChartDefaults.js +3 -4
  66. package/es-modules/Core/Chart/ChartNavigationComposition.js +92 -0
  67. package/es-modules/Core/Chart/GanttChart.js +4 -4
  68. package/es-modules/Core/Chart/MapChart.js +13 -25
  69. package/es-modules/Core/Chart/StockChart.js +13 -316
  70. package/es-modules/Core/Color/Palettes.js +22 -0
  71. package/es-modules/Core/DefaultOptions.js +22 -19
  72. package/es-modules/Core/Foundation.js +39 -31
  73. package/es-modules/Core/Geometry/CircleUtilities.js +2 -1
  74. package/es-modules/Core/Globals.js +1 -1
  75. package/es-modules/Core/HttpUtilities.js +8 -7
  76. package/es-modules/Core/Legend/Legend.js +19 -16
  77. package/es-modules/Core/Navigator.js +41 -30
  78. package/es-modules/Core/Pointer.js +52 -45
  79. package/es-modules/Core/Renderer/HTML/AST.js +29 -14
  80. package/es-modules/Core/Renderer/HTML/HTMLElement.js +27 -20
  81. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +8 -6
  82. package/es-modules/Core/Renderer/RendererUtilities.js +2 -2
  83. package/es-modules/Core/Renderer/SVG/SVGElement.js +11 -20
  84. package/es-modules/Core/Renderer/SVG/SVGLabel.js +17 -8
  85. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +25 -29
  86. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +12 -5
  87. package/es-modules/Core/Renderer/SVG/TextBuilder.js +18 -12
  88. package/es-modules/Core/Responsive.js +2 -3
  89. package/es-modules/Core/Scrollbar.js +14 -12
  90. package/es-modules/Core/ScrollbarDefaults.js +10 -9
  91. package/es-modules/Core/Series/DataLabel.js +19 -15
  92. package/es-modules/Core/Series/Point.js +22 -19
  93. package/es-modules/Core/Series/Series.js +200 -235
  94. package/es-modules/Core/Series/SeriesDefaults.js +8 -8
  95. package/es-modules/Core/Series/SeriesRegistry.js +1 -2
  96. package/es-modules/Core/Time.js +14 -11
  97. package/es-modules/Core/Tooltip.js +63 -53
  98. package/es-modules/Core/Utilities.js +20 -24
  99. package/es-modules/Data/DataConverter.js +483 -0
  100. package/es-modules/Data/DataPromise.js +252 -0
  101. package/es-modules/Data/DataSeriesConverter.js +207 -0
  102. package/es-modules/Data/DataTable.js +1205 -0
  103. package/es-modules/Data/Modifiers/ChainModifier.js +299 -0
  104. package/es-modules/Data/Modifiers/DataModifier.js +303 -0
  105. package/es-modules/Data/Modifiers/GroupModifier.js +144 -0
  106. package/es-modules/Data/Modifiers/InvertModifier.js +254 -0
  107. package/es-modules/Data/Modifiers/RangeModifier.js +143 -0
  108. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +110 -0
  109. package/es-modules/Data/Modifiers/SortModifier.js +249 -0
  110. package/es-modules/Data/Parsers/CSVParser.js +400 -0
  111. package/es-modules/Data/Parsers/DataParser.js +101 -0
  112. package/es-modules/Data/Parsers/GoogleSheetsParser.js +223 -0
  113. package/es-modules/Data/Parsers/HTMLTableParser.js +213 -0
  114. package/es-modules/Data/Stores/CSVStore.js +317 -0
  115. package/es-modules/Data/Stores/DataStore.js +276 -0
  116. package/es-modules/Data/Stores/GoogleSheetsStore.js +169 -0
  117. package/es-modules/Data/Stores/HTMLTableStore.js +353 -0
  118. package/es-modules/Extensions/Annotations/Annotations.js +69 -18
  119. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -3
  120. package/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +1 -1
  121. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +199 -0
  122. package/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +1 -1
  123. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +3 -6
  124. package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +3 -2
  125. package/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +1 -1
  126. package/es-modules/Extensions/Annotations/Mixins/ControllableMixin.js +13 -4
  127. package/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +0 -1
  128. package/es-modules/Extensions/Annotations/Mixins/MarkerMixin.js +5 -4
  129. package/es-modules/Extensions/Annotations/NavigationBindings.js +120 -53
  130. package/es-modules/Extensions/Annotations/Popup.js +494 -148
  131. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +51 -2
  132. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +5 -3
  133. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +1 -1
  134. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +2 -3
  135. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +219 -0
  136. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +1 -1
  137. package/es-modules/Extensions/Annotations/Types/Measure.js +29 -19
  138. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +7 -6
  139. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +211 -0
  140. package/es-modules/Extensions/Annotations/Types/Tunnel.js +13 -10
  141. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +1 -1
  142. package/es-modules/Extensions/Boost/BoostOptions.js +2 -2
  143. package/es-modules/Extensions/Boost/BoostOverrides.js +6 -10
  144. package/es-modules/Extensions/Boost/BoostUtils.js +0 -6
  145. package/es-modules/Extensions/Boost/WGLRenderer.js +16 -12
  146. package/es-modules/Extensions/Boost/WGLShader.js +13 -11
  147. package/es-modules/Extensions/Boost/WGLVBuffer.js +4 -7
  148. package/es-modules/Extensions/BoostCanvas.js +1 -2
  149. package/es-modules/Extensions/CurrentDateIndication.js +2 -3
  150. package/es-modules/Extensions/Data.js +77 -115
  151. package/es-modules/Extensions/DataGrouping.js +54 -32
  152. package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
  153. package/es-modules/Extensions/DownloadURL.js +2 -2
  154. package/es-modules/Extensions/DragPanes.js +1 -2
  155. package/es-modules/Extensions/DraggablePoints.js +7 -8
  156. package/es-modules/Extensions/Drilldown.js +11 -7
  157. package/es-modules/Extensions/ExportData.js +6 -5
  158. package/es-modules/Extensions/Exporting/Exporting.js +35 -48
  159. package/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -15
  160. package/es-modules/Extensions/FullScreen.js +4 -3
  161. package/es-modules/Extensions/GeoJSON.js +42 -66
  162. package/es-modules/Extensions/MarkerClusters.js +118 -98
  163. package/es-modules/Extensions/Math3D.js +4 -4
  164. package/es-modules/Extensions/NoDataToDisplay.js +1 -2
  165. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +33 -33
  166. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  167. package/es-modules/Extensions/Oldie/Oldie.js +14 -79
  168. package/es-modules/Extensions/Oldie/VMLAxis3D.js +5 -1
  169. package/es-modules/Extensions/OverlappingDataLabels.js +10 -6
  170. package/es-modules/Extensions/Pane.js +11 -12
  171. package/es-modules/Extensions/ParallelCoordinates.js +5 -3
  172. package/es-modules/Extensions/PatternFill.js +17 -11
  173. package/es-modules/Extensions/Polar.js +7 -4
  174. package/es-modules/Extensions/PriceIndication.js +2 -1
  175. package/es-modules/Extensions/RangeSelector.js +22 -59
  176. package/es-modules/Extensions/ScrollablePlotArea.js +2 -2
  177. package/es-modules/Extensions/SeriesLabel.js +1 -1
  178. package/es-modules/Extensions/Sonification/ChartSonify.js +279 -663
  179. package/es-modules/Extensions/Sonification/Earcon.js +136 -102
  180. package/es-modules/Extensions/Sonification/Instrument.js +493 -426
  181. package/es-modules/Extensions/Sonification/MusicalFrequencies.js +10 -0
  182. package/es-modules/Extensions/Sonification/Options.js +10 -0
  183. package/es-modules/Extensions/Sonification/PointSonify.js +207 -152
  184. package/es-modules/Extensions/Sonification/SeriesSonify.js +474 -0
  185. package/es-modules/Extensions/Sonification/SignalHandler.js +122 -0
  186. package/es-modules/Extensions/Sonification/Sonification.js +27 -53
  187. package/es-modules/Extensions/Sonification/{Utilities.js → SonificationUtilities.js} +70 -88
  188. package/es-modules/Extensions/Sonification/Timeline.js +250 -567
  189. package/es-modules/Extensions/Sonification/TimelineEvent.js +157 -0
  190. package/es-modules/Extensions/Sonification/TimelinePath.js +311 -0
  191. package/es-modules/Extensions/Stacking.js +5 -23
  192. package/es-modules/Extensions/Themes/BrandDark.js +293 -0
  193. package/es-modules/Extensions/Themes/BrandLight.js +259 -0
  194. package/es-modules/Extensions/Themes/DarkUnica.js +4 -2
  195. package/es-modules/Extensions/Themes/Grid.js +4 -2
  196. package/es-modules/Extensions/Themes/GridLight.js +4 -2
  197. package/es-modules/Gantt/Connection.js +2 -2
  198. package/es-modules/Gantt/Pathfinder.js +6 -5
  199. package/es-modules/Gantt/PathfinderAlgorithms.js +12 -12
  200. package/es-modules/Maps/MapNavigation.js +30 -68
  201. package/es-modules/Maps/MapNavigationOptionsDefault.js +3 -0
  202. package/es-modules/Maps/MapPointer.js +8 -5
  203. package/es-modules/Maps/MapSymbols.js +23 -3
  204. package/es-modules/Maps/MapView.js +450 -0
  205. package/es-modules/Maps/MapViewOptionsDefault.js +97 -0
  206. package/es-modules/Maps/Projection.js +436 -0
  207. package/es-modules/Maps/ProjectionDefinition.js +9 -0
  208. package/es-modules/Maps/Projections/EqualEarth.js +42 -0
  209. package/es-modules/Maps/Projections/LambertConformalConic.js +52 -0
  210. package/es-modules/Maps/Projections/Miller.js +16 -0
  211. package/es-modules/Maps/Projections/Orthographic.js +26 -0
  212. package/es-modules/Maps/Projections/ProjectionRegistry.js +19 -0
  213. package/es-modules/Maps/Projections/WebMercator.js +24 -0
  214. package/es-modules/Series/Area/AreaSeries.js +13 -13
  215. package/es-modules/Series/Area3DSeries.js +4 -2
  216. package/es-modules/Series/AreaRange/AreaRangeSeries.js +28 -17
  217. package/es-modules/Series/Bellcurve/BellcurveSeries.js +4 -9
  218. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +1 -2
  219. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -2
  220. package/es-modules/Series/Bubble/BubbleLegendItem.js +5 -15
  221. package/es-modules/Series/Bubble/BubblePoint.js +5 -0
  222. package/es-modules/Series/Bubble/BubbleSeries.js +90 -50
  223. package/es-modules/Series/Candlestick/CandlestickSeries.js +10 -19
  224. package/es-modules/{Mixins/CenteredSeries.js → Series/CenteredUtilities.js} +45 -23
  225. package/es-modules/{Mixins/ColorMapSeries.js → Series/ColorMapMixin.js} +10 -8
  226. package/es-modules/Series/Column/ColumnDataLabel.js +5 -5
  227. package/es-modules/Series/Column/ColumnSeries.js +19 -18
  228. package/es-modules/Series/Column3D/Column3DComposition.js +1 -2
  229. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +11 -8
  230. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +2 -1
  231. package/es-modules/Series/Cylinder/CylinderComposition.js +36 -4
  232. package/es-modules/Series/DataModifyComposition.js +539 -0
  233. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +2 -6
  234. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +1 -1
  235. package/es-modules/Series/DerivedComposition.js +137 -0
  236. package/es-modules/Series/DrawPointComposition.js +111 -0
  237. package/es-modules/Series/Dumbbell/DumbbellPoint.js +0 -1
  238. package/es-modules/Series/Dumbbell/DumbbellSeries.js +2 -6
  239. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +1 -2
  240. package/es-modules/Series/Flags/FlagsSeries.js +18 -25
  241. package/es-modules/Series/Flags/FlagsSymbols.js +2 -2
  242. package/es-modules/Series/Funnel/FunnelSeries.js +6 -5
  243. package/es-modules/Series/Funnel3D/Funnel3DComposition.js +14 -8
  244. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +2 -1
  245. package/es-modules/Series/Gantt/GanttPoint.js +1 -1
  246. package/es-modules/Series/Gantt/GanttSeries.js +3 -3
  247. package/es-modules/Series/Gauge/GaugePoint.js +1 -1
  248. package/es-modules/Series/Gauge/GaugeSeries.js +7 -7
  249. package/es-modules/Series/HLC/HLCPoint.js +55 -0
  250. package/es-modules/Series/HLC/HLCSeries.js +378 -0
  251. package/es-modules/Series/Heatmap/HeatmapPoint.js +13 -14
  252. package/es-modules/Series/Heatmap/HeatmapSeries.js +24 -12
  253. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +10 -9
  254. package/es-modules/Series/Histogram/HistogramSeries.js +7 -11
  255. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +1 -4
  256. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +28 -30
  257. package/es-modules/Series/Item/ItemSeries.js +4 -5
  258. package/es-modules/Series/Line/LineSeries.js +1 -2
  259. package/es-modules/Series/Map/MapPoint.js +27 -14
  260. package/es-modules/Series/Map/MapSeries.js +283 -322
  261. package/es-modules/Series/MapBubble/MapBubblePoint.js +0 -3
  262. package/es-modules/Series/MapBubble/MapBubbleSeries.js +10 -1
  263. package/es-modules/Series/MapLine/MapLineSeries.js +2 -4
  264. package/es-modules/Series/MapPoint/MapPointPoint.js +5 -1
  265. package/es-modules/Series/MapPoint/MapPointSeries.js +99 -14
  266. package/es-modules/Series/Networkgraph/DraggableNodes.js +0 -4
  267. package/es-modules/Series/Networkgraph/Integrations.js +8 -22
  268. package/es-modules/Series/Networkgraph/Networkgraph.js +6 -10
  269. package/es-modules/Series/Networkgraph/QuadTree.js +1 -3
  270. package/es-modules/{Mixins/Nodes.js → Series/NodesComposition.js} +78 -30
  271. package/es-modules/Series/OHLC/OHLCPoint.js +2 -7
  272. package/es-modules/Series/OHLC/OHLCSeries.js +55 -183
  273. package/es-modules/{Mixins/OnSeries.js → Series/OnSeriesComposition.js} +53 -21
  274. package/es-modules/Series/Organization/OrganizationSeries.js +6 -5
  275. package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +1 -0
  276. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
  277. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +48 -10
  278. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -7
  279. package/es-modules/Series/Pie/PieDataLabel.js +1 -2
  280. package/es-modules/Series/Pie/PiePoint.js +2 -2
  281. package/es-modules/Series/Pie/PieSeries.js +7 -8
  282. package/es-modules/Series/Pie3D/Pie3DComposition.js +2 -1
  283. package/es-modules/Series/Pie3D/Pie3DPoint.js +2 -1
  284. package/es-modules/Series/Pie3D/Pie3DSeries.js +1 -1
  285. package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +2 -1
  286. package/es-modules/Series/Sankey/SankeyPoint.js +0 -4
  287. package/es-modules/Series/Sankey/SankeySeries.js +92 -22
  288. package/es-modules/Series/SolidGauge/SolidGaugeComposition.js +3 -1
  289. package/es-modules/Series/Spline/SplineSeries.js +0 -8
  290. package/es-modules/Series/Sunburst/SunburstPoint.js +2 -3
  291. package/es-modules/Series/Sunburst/SunburstSeries.js +6 -6
  292. package/es-modules/Series/Sunburst/SunburstUtilities.js +3 -2
  293. package/es-modules/Series/Tilemap/TilemapPoint.js +2 -5
  294. package/es-modules/Series/Tilemap/TilemapShapes.js +0 -7
  295. package/es-modules/Series/Timeline/TimelineSeries.js +3 -4
  296. package/es-modules/{Mixins/TreeSeries.js → Series/TreeUtilities.js} +88 -78
  297. package/es-modules/Series/Treemap/TreemapPoint.js +2 -2
  298. package/es-modules/Series/Treemap/TreemapSeries.js +22 -25
  299. package/es-modules/Series/Variwide/VariwideSeries.js +5 -1
  300. package/es-modules/Series/Venn/VennPoint.js +16 -7
  301. package/es-modules/Series/Venn/VennSeries.js +11 -17
  302. package/es-modules/Series/Venn/VennUtils.js +551 -439
  303. package/es-modules/Series/Waterfall/WaterfallSeries.js +8 -6
  304. package/es-modules/Series/Windbarb/WindbarbSeries.js +23 -24
  305. package/es-modules/Series/Wordcloud/WordcloudPoint.js +8 -6
  306. package/es-modules/Series/Wordcloud/WordcloudSeries.js +26 -22
  307. package/es-modules/Series/Wordcloud/WordcloudUtils.js +669 -484
  308. package/es-modules/Series/XRange/XRangePoint.js +7 -12
  309. package/es-modules/Series/XRange/XRangeSeries.js +4 -20
  310. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +15 -6
  311. package/es-modules/Stock/Indicators/AO/AOIndicator.js +2 -3
  312. package/es-modules/Stock/Indicators/APO/APOIndicator.js +14 -20
  313. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +4 -6
  314. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +11 -13
  315. package/es-modules/Stock/Indicators/ArrayUtilities.js +47 -0
  316. package/es-modules/Stock/Indicators/BB/BBIndicator.js +39 -11
  317. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +35 -15
  318. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +6 -12
  319. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +1 -11
  320. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +28 -16
  321. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +18 -11
  322. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +1 -3
  323. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +6 -6
  324. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +23 -9
  325. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +16 -19
  326. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +32 -14
  327. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +2 -2
  328. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +2 -2
  329. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +2 -2
  330. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +2 -3
  331. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +294 -0
  332. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +1 -3
  333. package/es-modules/Stock/Indicators/PC/PCIndicator.js +25 -13
  334. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -11
  335. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +2 -1
  336. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +2 -1
  337. package/es-modules/Stock/Indicators/SMA/SMAComposition.js +0 -26
  338. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +32 -50
  339. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +0 -8
  340. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +18 -9
  341. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +4 -6
  342. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +26 -11
  343. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +6 -12
  344. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +26 -10
  345. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +19 -7
  346. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +2 -3
  347. package/es-modules/Stock/StockToolsBindings.js +156 -47
  348. package/es-modules/Stock/StockToolsGui.js +442 -37
  349. package/es-modules/masters/highcharts-3d.src.js +1 -1
  350. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  351. package/es-modules/masters/highcharts-more.src.js +1 -1
  352. package/es-modules/masters/highcharts.src.js +1 -1
  353. package/es-modules/masters/highmaps.src.js +1 -1
  354. package/es-modules/masters/highstock.src.js +1 -1
  355. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  356. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  357. package/es-modules/masters/indicators/ao.src.js +1 -1
  358. package/es-modules/masters/indicators/apo.src.js +1 -1
  359. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  360. package/es-modules/masters/indicators/aroon.src.js +1 -1
  361. package/es-modules/masters/indicators/atr.src.js +1 -1
  362. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  363. package/es-modules/masters/indicators/cci.src.js +1 -1
  364. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  365. package/es-modules/masters/indicators/cmf.src.js +1 -1
  366. package/es-modules/masters/indicators/cmo.src.js +1 -1
  367. package/es-modules/masters/indicators/dema.src.js +1 -1
  368. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  369. package/es-modules/masters/indicators/dmi.src.js +1 -1
  370. package/es-modules/masters/indicators/dpo.src.js +1 -1
  371. package/es-modules/masters/indicators/ema.src.js +4 -10
  372. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  373. package/es-modules/masters/indicators/indicators-all.src.js +2 -2
  374. package/es-modules/masters/indicators/indicators.src.js +2 -1
  375. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  376. package/es-modules/masters/indicators/klinger.src.js +1 -1
  377. package/es-modules/masters/indicators/macd.src.js +1 -1
  378. package/es-modules/masters/indicators/mfi.src.js +1 -1
  379. package/es-modules/masters/indicators/momentum.src.js +1 -1
  380. package/es-modules/masters/indicators/natr.src.js +1 -1
  381. package/es-modules/masters/indicators/obv.src.js +1 -1
  382. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  383. package/es-modules/masters/indicators/ppo.src.js +1 -1
  384. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  385. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  386. package/es-modules/masters/indicators/psar.src.js +1 -1
  387. package/es-modules/masters/indicators/regressions.src.js +1 -1
  388. package/es-modules/masters/indicators/roc.src.js +1 -1
  389. package/es-modules/masters/indicators/rsi.src.js +1 -1
  390. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  391. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  392. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  393. package/es-modules/masters/indicators/tema.src.js +1 -1
  394. package/es-modules/masters/indicators/trendline.src.js +1 -1
  395. package/es-modules/masters/indicators/trix.src.js +1 -1
  396. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  397. package/es-modules/masters/indicators/vwap.src.js +1 -1
  398. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  399. package/es-modules/masters/indicators/wma.src.js +1 -1
  400. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  401. package/es-modules/masters/modules/accessibility.src.js +16 -2
  402. package/es-modules/masters/modules/annotations-advanced.src.js +3 -1
  403. package/es-modules/masters/modules/annotations.src.js +1 -1
  404. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  405. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  406. package/es-modules/masters/modules/boost.src.js +1 -1
  407. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  408. package/es-modules/masters/modules/bullet.src.js +1 -1
  409. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  410. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  411. package/es-modules/masters/modules/cylinder.src.js +1 -1
  412. package/es-modules/masters/modules/data.src.js +6 -3
  413. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  414. package/es-modules/masters/modules/debugger.src.js +1 -1
  415. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  416. package/es-modules/masters/modules/dotplot.src.js +1 -1
  417. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  418. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  419. package/es-modules/masters/modules/drilldown.src.js +1 -1
  420. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  421. package/es-modules/masters/modules/export-data.src.js +1 -1
  422. package/es-modules/masters/modules/exporting.src.js +1 -1
  423. package/es-modules/masters/modules/full-screen.src.js +1 -1
  424. package/es-modules/masters/modules/funnel.src.js +1 -1
  425. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  426. package/es-modules/masters/modules/gantt.src.js +1 -1
  427. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  428. package/es-modules/masters/modules/heatmap.src.js +1 -2
  429. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  430. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  431. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  432. package/es-modules/masters/modules/item-series.src.js +1 -1
  433. package/es-modules/masters/modules/lollipop.src.js +1 -1
  434. package/es-modules/masters/modules/map.src.js +1 -3
  435. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  436. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  437. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  438. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  439. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  440. package/es-modules/masters/modules/oldie.src.js +1 -1
  441. package/es-modules/masters/modules/organization.src.js +1 -1
  442. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  443. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  444. package/es-modules/masters/modules/pareto.src.js +1 -1
  445. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  446. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  447. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  448. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  449. package/es-modules/masters/modules/sankey.src.js +1 -1
  450. package/es-modules/masters/modules/series-label.src.js +1 -1
  451. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  452. package/es-modules/masters/modules/sonification.src.js +33 -2
  453. package/es-modules/masters/modules/static-scale.src.js +1 -1
  454. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  455. package/es-modules/masters/modules/stock.src.js +4 -1
  456. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  457. package/es-modules/masters/modules/sunburst.src.js +1 -1
  458. package/es-modules/masters/modules/tilemap.src.js +1 -1
  459. package/es-modules/masters/modules/timeline.src.js +1 -1
  460. package/es-modules/masters/modules/treegrid.src.js +1 -1
  461. package/es-modules/masters/modules/treemap.src.js +1 -1
  462. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  463. package/es-modules/masters/modules/variwide.src.js +1 -1
  464. package/es-modules/masters/modules/vector.src.js +1 -1
  465. package/es-modules/masters/modules/venn.src.js +1 -1
  466. package/es-modules/masters/modules/windbarb.src.js +1 -1
  467. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  468. package/es-modules/masters/modules/xrange.src.js +1 -1
  469. package/es-modules/masters/themes/avocado.src.js +1 -1
  470. package/es-modules/masters/themes/brand-dark.src.js +14 -0
  471. package/es-modules/masters/themes/brand-light.src.js +14 -0
  472. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  473. package/es-modules/masters/themes/dark-green.src.js +1 -1
  474. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  475. package/es-modules/masters/themes/gray.src.js +1 -1
  476. package/es-modules/masters/themes/grid-light.src.js +1 -1
  477. package/es-modules/masters/themes/grid.src.js +1 -1
  478. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  479. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  480. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  481. package/es-modules/masters/themes/skies.src.js +1 -1
  482. package/es-modules/masters/themes/sunset.src.js +1 -1
  483. package/highcharts-3d.js +1 -1
  484. package/highcharts-3d.js.map +1 -1
  485. package/highcharts-3d.src.js +65 -35
  486. package/highcharts-gantt.js +800 -803
  487. package/highcharts-gantt.js.map +1 -1
  488. package/highcharts-gantt.src.js +1359 -1429
  489. package/highcharts-more.js +194 -193
  490. package/highcharts-more.js.map +1 -1
  491. package/highcharts-more.src.js +280 -222
  492. package/highcharts.d.ts +10228 -768
  493. package/highcharts.js +585 -588
  494. package/highcharts.js.map +1 -1
  495. package/highcharts.src.d.ts +10228 -768
  496. package/highcharts.src.js +995 -1066
  497. package/highmaps.js +727 -707
  498. package/highmaps.js.map +1 -1
  499. package/highmaps.src.js +3243 -2135
  500. package/highstock.js +788 -783
  501. package/highstock.js.map +1 -1
  502. package/highstock.src.js +2492 -1981
  503. package/indicators/acceleration-bands.d.ts +17 -1
  504. package/indicators/acceleration-bands.js +11 -9
  505. package/indicators/acceleration-bands.js.map +1 -1
  506. package/indicators/acceleration-bands.src.d.ts +17 -1
  507. package/indicators/acceleration-bands.src.js +238 -112
  508. package/indicators/accumulation-distribution.js +1 -1
  509. package/indicators/accumulation-distribution.src.js +1 -1
  510. package/indicators/ao.js +6 -6
  511. package/indicators/ao.js.map +1 -1
  512. package/indicators/ao.src.js +4 -4
  513. package/indicators/apo.js +5 -6
  514. package/indicators/apo.js.map +1 -1
  515. package/indicators/apo.src.js +16 -84
  516. package/indicators/aroon-oscillator.d.ts +17 -1
  517. package/indicators/aroon-oscillator.js +10 -9
  518. package/indicators/aroon-oscillator.js.map +1 -1
  519. package/indicators/aroon-oscillator.src.d.ts +17 -1
  520. package/indicators/aroon-oscillator.src.js +230 -177
  521. package/indicators/aroon.d.ts +17 -1
  522. package/indicators/aroon.js +11 -9
  523. package/indicators/aroon.js.map +1 -1
  524. package/indicators/aroon.src.d.ts +17 -1
  525. package/indicators/aroon.src.js +227 -112
  526. package/indicators/atr.js +1 -1
  527. package/indicators/atr.src.js +1 -1
  528. package/indicators/bollinger-bands.d.ts +17 -1
  529. package/indicators/bollinger-bands.js +12 -9
  530. package/indicators/bollinger-bands.js.map +1 -1
  531. package/indicators/bollinger-bands.src.d.ts +17 -1
  532. package/indicators/bollinger-bands.src.js +262 -117
  533. package/indicators/cci.js +1 -1
  534. package/indicators/cci.src.js +1 -1
  535. package/indicators/chaikin.js +8 -9
  536. package/indicators/chaikin.js.map +1 -1
  537. package/indicators/chaikin.src.js +8 -76
  538. package/indicators/cmf.js +1 -1
  539. package/indicators/cmf.js.map +1 -1
  540. package/indicators/cmf.src.js +36 -16
  541. package/indicators/cmo.js +1 -1
  542. package/indicators/cmo.src.js +1 -1
  543. package/indicators/dema.js +5 -6
  544. package/indicators/dema.js.map +1 -1
  545. package/indicators/dema.src.js +3 -75
  546. package/indicators/disparity-index.js +6 -7
  547. package/indicators/disparity-index.js.map +1 -1
  548. package/indicators/disparity-index.src.js +20 -74
  549. package/indicators/dmi.js +12 -11
  550. package/indicators/dmi.js.map +1 -1
  551. package/indicators/dmi.src.js +252 -121
  552. package/indicators/dpo.js +1 -1
  553. package/indicators/dpo.src.js +1 -1
  554. package/indicators/ema.js +1 -13
  555. package/indicators/ema.js.map +1 -1
  556. package/indicators/ema.src.js +7 -188
  557. package/indicators/ichimoku-kinko-hyo.js +1 -1
  558. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  559. package/indicators/ichimoku-kinko-hyo.src.js +7 -7
  560. package/indicators/indicators-all.d.ts +17 -1
  561. package/indicators/indicators-all.js +198 -203
  562. package/indicators/indicators-all.js.map +1 -1
  563. package/indicators/indicators-all.src.d.ts +17 -1
  564. package/indicators/indicators-all.src.js +892 -777
  565. package/indicators/indicators.js +12 -12
  566. package/indicators/indicators.js.map +1 -1
  567. package/indicators/indicators.src.js +213 -144
  568. package/indicators/keltner-channels.d.ts +17 -1
  569. package/indicators/keltner-channels.js +11 -10
  570. package/indicators/keltner-channels.js.map +1 -1
  571. package/indicators/keltner-channels.src.d.ts +17 -1
  572. package/indicators/keltner-channels.src.js +246 -118
  573. package/indicators/klinger.js +14 -13
  574. package/indicators/klinger.js.map +1 -1
  575. package/indicators/klinger.src.js +239 -187
  576. package/indicators/macd.js +2 -2
  577. package/indicators/macd.js.map +1 -1
  578. package/indicators/macd.src.js +3 -4
  579. package/indicators/mfi.js +1 -1
  580. package/indicators/mfi.src.js +1 -1
  581. package/indicators/momentum.js +1 -1
  582. package/indicators/momentum.src.js +1 -1
  583. package/indicators/natr.js +3 -3
  584. package/indicators/natr.js.map +1 -1
  585. package/indicators/natr.src.js +2 -4
  586. package/indicators/obv.js +1 -1
  587. package/indicators/obv.src.js +1 -1
  588. package/indicators/pivot-points.js +1 -1
  589. package/indicators/pivot-points.js.map +1 -1
  590. package/indicators/pivot-points.src.js +3 -2
  591. package/indicators/ppo.js +5 -6
  592. package/indicators/ppo.js.map +1 -1
  593. package/indicators/ppo.src.js +3 -75
  594. package/indicators/price-channel.d.ts +17 -1
  595. package/indicators/price-channel.js +11 -9
  596. package/indicators/price-channel.js.map +1 -1
  597. package/indicators/price-channel.src.d.ts +17 -1
  598. package/indicators/price-channel.src.js +288 -168
  599. package/indicators/price-envelopes.js +1 -1
  600. package/indicators/price-envelopes.src.js +1 -1
  601. package/indicators/psar.js +1 -1
  602. package/indicators/psar.src.js +1 -1
  603. package/indicators/regressions.js +1 -1
  604. package/indicators/regressions.js.map +1 -1
  605. package/indicators/regressions.src.js +39 -21
  606. package/indicators/roc.js +1 -1
  607. package/indicators/roc.src.js +1 -1
  608. package/indicators/rsi.js +1 -1
  609. package/indicators/rsi.js.map +1 -1
  610. package/indicators/rsi.src.js +3 -2
  611. package/indicators/slow-stochastic.js +5 -6
  612. package/indicators/slow-stochastic.js.map +1 -1
  613. package/indicators/slow-stochastic.src.js +2 -72
  614. package/indicators/stochastic.d.ts +17 -1
  615. package/indicators/stochastic.js +12 -10
  616. package/indicators/stochastic.js.map +1 -1
  617. package/indicators/stochastic.src.d.ts +17 -1
  618. package/indicators/stochastic.src.js +282 -165
  619. package/indicators/supertrend.js +10 -10
  620. package/indicators/supertrend.js.map +1 -1
  621. package/indicators/supertrend.src.js +6 -7
  622. package/indicators/tema.js +6 -7
  623. package/indicators/tema.js.map +1 -1
  624. package/indicators/tema.src.js +28 -75
  625. package/indicators/trendline.js +1 -1
  626. package/indicators/trendline.src.js +1 -1
  627. package/indicators/trix.js +4 -5
  628. package/indicators/trix.js.map +1 -1
  629. package/indicators/trix.src.js +8 -76
  630. package/indicators/volume-by-price.js +16 -16
  631. package/indicators/volume-by-price.js.map +1 -1
  632. package/indicators/volume-by-price.src.js +27 -10
  633. package/indicators/vwap.js +1 -1
  634. package/indicators/vwap.js.map +1 -1
  635. package/indicators/vwap.src.js +20 -8
  636. package/indicators/williams-r.js +5 -6
  637. package/indicators/williams-r.js.map +1 -1
  638. package/indicators/williams-r.src.js +41 -51
  639. package/indicators/wma.js +1 -1
  640. package/indicators/wma.src.js +1 -1
  641. package/indicators/zigzag.js +1 -1
  642. package/indicators/zigzag.src.js +1 -1
  643. package/modules/accessibility.d.ts +0 -30
  644. package/modules/accessibility.js +240 -216
  645. package/modules/accessibility.js.map +1 -1
  646. package/modules/accessibility.src.d.ts +0 -30
  647. package/modules/accessibility.src.js +7807 -6400
  648. package/modules/annotations-advanced.d.ts +30 -0
  649. package/modules/annotations-advanced.js +192 -165
  650. package/modules/annotations-advanced.js.map +1 -1
  651. package/modules/annotations-advanced.src.d.ts +30 -0
  652. package/modules/annotations-advanced.src.js +1716 -416
  653. package/modules/annotations.js +125 -110
  654. package/modules/annotations.js.map +1 -1
  655. package/modules/annotations.src.js +1059 -304
  656. package/modules/arrow-symbols.js +1 -1
  657. package/modules/arrow-symbols.src.js +1 -1
  658. package/modules/boost-canvas.js +15 -15
  659. package/modules/boost-canvas.js.map +1 -1
  660. package/modules/boost-canvas.src.js +3 -3
  661. package/modules/boost.js +79 -79
  662. package/modules/boost.js.map +1 -1
  663. package/modules/boost.src.js +42 -51
  664. package/modules/broken-axis.js +1 -1
  665. package/modules/broken-axis.js.map +1 -1
  666. package/modules/broken-axis.src.js +18 -12
  667. package/modules/bullet.js +1 -1
  668. package/modules/bullet.src.js +1 -1
  669. package/modules/coloraxis.js +24 -24
  670. package/modules/coloraxis.js.map +1 -1
  671. package/modules/coloraxis.src.js +77 -103
  672. package/modules/current-date-indicator.js +4 -4
  673. package/modules/current-date-indicator.js.map +1 -1
  674. package/modules/current-date-indicator.src.js +4 -4
  675. package/modules/cylinder.js +1 -1
  676. package/modules/cylinder.js.map +1 -1
  677. package/modules/cylinder.src.js +37 -5
  678. package/modules/data.d.ts +6 -6
  679. package/modules/data.js +32 -32
  680. package/modules/data.js.map +1 -1
  681. package/modules/data.src.d.ts +6 -6
  682. package/modules/data.src.js +94 -140
  683. package/modules/datagrouping.js +20 -20
  684. package/modules/datagrouping.js.map +1 -1
  685. package/modules/datagrouping.src.js +56 -33
  686. package/modules/debugger.js +3 -3
  687. package/modules/debugger.js.map +1 -1
  688. package/modules/debugger.src.js +3 -3
  689. package/modules/dependency-wheel.js +11 -11
  690. package/modules/dependency-wheel.js.map +1 -1
  691. package/modules/dependency-wheel.src.js +5 -8
  692. package/modules/dotplot.js +1 -1
  693. package/modules/dotplot.src.js +1 -1
  694. package/modules/drag-panes.js +8 -8
  695. package/modules/drag-panes.js.map +1 -1
  696. package/modules/drag-panes.src.js +3 -3
  697. package/modules/draggable-points.js +1 -1
  698. package/modules/draggable-points.js.map +1 -1
  699. package/modules/draggable-points.src.js +8 -9
  700. package/modules/drilldown.js +24 -24
  701. package/modules/drilldown.js.map +1 -1
  702. package/modules/drilldown.src.js +13 -8
  703. package/modules/dumbbell.js +17 -17
  704. package/modules/dumbbell.js.map +1 -1
  705. package/modules/dumbbell.src.js +4 -8
  706. package/modules/export-data.js +19 -19
  707. package/modules/export-data.js.map +1 -1
  708. package/modules/export-data.src.js +9 -8
  709. package/modules/exporting.js +39 -38
  710. package/modules/exporting.js.map +1 -1
  711. package/modules/exporting.src.js +134 -116
  712. package/modules/full-screen.js +1 -1
  713. package/modules/full-screen.js.map +1 -1
  714. package/modules/full-screen.src.js +5 -4
  715. package/modules/funnel.js +12 -12
  716. package/modules/funnel.js.map +1 -1
  717. package/modules/funnel.src.js +9 -6
  718. package/modules/funnel3d.js +1 -1
  719. package/modules/funnel3d.js.map +1 -1
  720. package/modules/funnel3d.src.js +17 -10
  721. package/modules/gantt.js +217 -218
  722. package/modules/gantt.js.map +1 -1
  723. package/modules/gantt.src.js +364 -363
  724. package/modules/grid-axis.js +1 -1
  725. package/modules/grid-axis.js.map +1 -1
  726. package/modules/grid-axis.src.js +27 -19
  727. package/modules/heatmap.js +39 -39
  728. package/modules/heatmap.js.map +1 -1
  729. package/modules/heatmap.src.js +132 -141
  730. package/modules/heikinashi.js +1 -1
  731. package/modules/heikinashi.js.map +1 -1
  732. package/modules/heikinashi.src.js +12 -10
  733. package/modules/histogram-bellcurve.js +13 -13
  734. package/modules/histogram-bellcurve.js.map +1 -1
  735. package/modules/histogram-bellcurve.src.js +97 -91
  736. package/modules/hollowcandlestick.js +9 -9
  737. package/modules/hollowcandlestick.js.map +1 -1
  738. package/modules/hollowcandlestick.src.js +31 -35
  739. package/modules/item-series.js +6 -6
  740. package/modules/item-series.js.map +1 -1
  741. package/modules/item-series.src.js +6 -6
  742. package/modules/lollipop.js +1 -1
  743. package/modules/lollipop.src.js +1 -1
  744. package/modules/map.d.ts +138 -14
  745. package/modules/map.js +144 -122
  746. package/modules/map.js.map +1 -1
  747. package/modules/map.src.d.ts +138 -14
  748. package/modules/map.src.js +2253 -1074
  749. package/modules/marker-clusters.js +36 -36
  750. package/modules/marker-clusters.js.map +1 -1
  751. package/modules/marker-clusters.src.js +176 -143
  752. package/modules/networkgraph.d.ts +12 -1
  753. package/modules/networkgraph.js +49 -49
  754. package/modules/networkgraph.js.map +1 -1
  755. package/modules/networkgraph.src.d.ts +12 -1
  756. package/modules/networkgraph.src.js +103 -78
  757. package/modules/no-data-to-display.js +5 -5
  758. package/modules/no-data-to-display.js.map +1 -1
  759. package/modules/no-data-to-display.src.js +3 -3
  760. package/modules/offline-exporting.js +18 -17
  761. package/modules/offline-exporting.js.map +1 -1
  762. package/modules/offline-exporting.src.js +39 -44
  763. package/modules/oldie-polyfills.js +1 -1
  764. package/modules/oldie-polyfills.src.js +1 -1
  765. package/modules/oldie.js +26 -26
  766. package/modules/oldie.js.map +1 -1
  767. package/modules/oldie.src.js +21 -81
  768. package/modules/organization.js +13 -13
  769. package/modules/organization.js.map +1 -1
  770. package/modules/organization.src.js +8 -6
  771. package/modules/overlapping-datalabels.js +1 -1
  772. package/modules/overlapping-datalabels.src.js +1 -1
  773. package/modules/parallel-coordinates.js +1 -1
  774. package/modules/parallel-coordinates.js.map +1 -1
  775. package/modules/parallel-coordinates.src.js +6 -4
  776. package/modules/pareto.js +7 -7
  777. package/modules/pareto.js.map +1 -1
  778. package/modules/pareto.src.js +89 -78
  779. package/modules/pathfinder.js +1 -1
  780. package/modules/pathfinder.js.map +1 -1
  781. package/modules/pathfinder.src.js +21 -20
  782. package/modules/pattern-fill.js +1 -1
  783. package/modules/pattern-fill.js.map +1 -1
  784. package/modules/pattern-fill.src.js +18 -12
  785. package/modules/price-indicator.js +1 -1
  786. package/modules/price-indicator.js.map +1 -1
  787. package/modules/price-indicator.src.js +3 -2
  788. package/modules/pyramid3d.js +1 -1
  789. package/modules/pyramid3d.js.map +1 -1
  790. package/modules/pyramid3d.src.js +3 -2
  791. package/modules/sankey.d.ts +12 -1
  792. package/modules/sankey.js +29 -29
  793. package/modules/sankey.js.map +1 -1
  794. package/modules/sankey.src.d.ts +12 -1
  795. package/modules/sankey.src.js +307 -181
  796. package/modules/series-label.js +1 -1
  797. package/modules/series-label.js.map +1 -1
  798. package/modules/series-label.src.js +2 -2
  799. package/modules/solid-gauge.js +1 -1
  800. package/modules/solid-gauge.js.map +1 -1
  801. package/modules/solid-gauge.src.js +17 -2
  802. package/modules/sonification.js +59 -55
  803. package/modules/sonification.js.map +1 -1
  804. package/modules/sonification.src.js +3093 -2594
  805. package/modules/static-scale.js +1 -1
  806. package/modules/static-scale.src.js +1 -1
  807. package/modules/stock-tools.js +178 -163
  808. package/modules/stock-tools.js.map +1 -1
  809. package/modules/stock-tools.src.js +1136 -229
  810. package/modules/stock.d.ts +39 -6
  811. package/modules/stock.js +204 -196
  812. package/modules/stock.js.map +1 -1
  813. package/modules/stock.src.d.ts +39 -6
  814. package/modules/stock.src.js +1822 -1240
  815. package/modules/streamgraph.js +1 -1
  816. package/modules/streamgraph.src.js +1 -1
  817. package/modules/sunburst.js +60 -60
  818. package/modules/sunburst.js.map +1 -1
  819. package/modules/sunburst.src.js +281 -248
  820. package/modules/tilemap.js +17 -17
  821. package/modules/tilemap.js.map +1 -1
  822. package/modules/tilemap.src.js +3 -13
  823. package/modules/timeline.js +18 -18
  824. package/modules/timeline.js.map +1 -1
  825. package/modules/timeline.src.js +5 -5
  826. package/modules/treegrid.js +56 -57
  827. package/modules/treegrid.js.map +1 -1
  828. package/modules/treegrid.src.js +201 -169
  829. package/modules/treemap.js +41 -41
  830. package/modules/treemap.js.map +1 -1
  831. package/modules/treemap.src.js +266 -232
  832. package/modules/variable-pie.js +1 -1
  833. package/modules/variable-pie.src.js +1 -1
  834. package/modules/variwide.js +1 -1
  835. package/modules/variwide.js.map +1 -1
  836. package/modules/variwide.src.js +7 -3
  837. package/modules/vector.js +1 -1
  838. package/modules/vector.src.js +1 -1
  839. package/modules/venn.js +31 -31
  840. package/modules/venn.js.map +1 -1
  841. package/modules/venn.src.js +740 -731
  842. package/modules/windbarb.js +15 -15
  843. package/modules/windbarb.js.map +1 -1
  844. package/modules/windbarb.src.js +90 -62
  845. package/modules/wordcloud.js +23 -24
  846. package/modules/wordcloud.js.map +1 -1
  847. package/modules/wordcloud.src.js +898 -954
  848. package/modules/xrange.js +2 -2
  849. package/modules/xrange.js.map +1 -1
  850. package/modules/xrange.src.js +12 -33
  851. package/package.json +1 -1
  852. package/themes/avocado.js +1 -1
  853. package/themes/avocado.src.js +1 -1
  854. package/themes/brand-dark.js +15 -0
  855. package/themes/brand-dark.js.map +1 -0
  856. package/themes/brand-dark.src.js +328 -0
  857. package/themes/brand-light.js +15 -0
  858. package/themes/brand-light.js.map +1 -0
  859. package/themes/brand-light.src.js +294 -0
  860. package/themes/dark-blue.js +1 -1
  861. package/themes/dark-blue.src.js +1 -1
  862. package/themes/dark-green.js +1 -1
  863. package/themes/dark-green.src.js +1 -1
  864. package/themes/dark-unica.js +1 -1
  865. package/themes/dark-unica.js.map +1 -1
  866. package/themes/dark-unica.src.js +5 -3
  867. package/themes/gray.js +1 -1
  868. package/themes/gray.src.js +1 -1
  869. package/themes/grid-light.js +1 -1
  870. package/themes/grid-light.js.map +1 -1
  871. package/themes/grid-light.src.js +5 -3
  872. package/themes/grid.js +1 -1
  873. package/themes/grid.js.map +1 -1
  874. package/themes/grid.src.js +5 -3
  875. package/themes/high-contrast-dark.js +1 -1
  876. package/themes/high-contrast-dark.src.js +1 -1
  877. package/themes/high-contrast-light.js +1 -1
  878. package/themes/high-contrast-light.src.js +1 -1
  879. package/themes/sand-signika.js +1 -1
  880. package/themes/sand-signika.src.js +1 -1
  881. package/themes/skies.js +1 -1
  882. package/themes/skies.src.js +1 -1
  883. package/themes/sunset.js +1 -1
  884. package/themes/sunset.src.js +1 -1
  885. package/es-modules/Core/Axis/MapAxis.js +0 -157
  886. package/es-modules/Core/Color/Palette.js +0 -82
  887. package/es-modules/Extensions/Sonification/InstrumentDefinitions.js +0 -32
  888. package/es-modules/Mixins/ColorSeries.js +0 -77
  889. package/es-modules/Mixins/DerivedSeries.js +0 -118
  890. package/es-modules/Mixins/DrawPoint.js +0 -81
  891. package/es-modules/Mixins/IndicatorRequired.js +0 -56
  892. package/es-modules/Mixins/MultipleLines.js +0 -181
  893. package/es-modules/Mixins/Navigation.js +0 -54
  894. package/es-modules/Mixins/NelderMead.js +0 -132
  895. package/es-modules/Mixins/Polygon.js +0 -259
  896. package/es-modules/Mixins/ReduceArray.js +0 -54
@@ -9,6 +9,7 @@
9
9
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
10
  *
11
11
  * */
12
+ import AST from '../../Core/Renderer/HTML/AST.js';
12
13
  import H from '../../Core/Globals.js';
13
14
  var doc = H.doc, isFirefox = H.isFirefox;
14
15
  import NavigationBindings from './NavigationBindings.js';
@@ -16,16 +17,31 @@ import D from '../../Core/DefaultOptions.js';
16
17
  var getOptions = D.getOptions;
17
18
  import Pointer from '../../Core/Pointer.js';
18
19
  import U from '../../Core/Utilities.js';
19
- var addEvent = U.addEvent, createElement = U.createElement, defined = U.defined, fireEvent = U.fireEvent, isArray = U.isArray, isObject = U.isObject, isString = U.isString, objectEach = U.objectEach, pick = U.pick, stableSort = U.stableSort, wrap = U.wrap;
20
- var indexFilter = /\d/g, PREFIX = 'highcharts-', DIV = 'div', INPUT = 'input', LABEL = 'label', BUTTON = 'button', SELECT = 'select', OPTION = 'option', SPAN = 'span', UL = 'ul', LI = 'li', H3 = 'h3';
20
+ var addEvent = U.addEvent, createElement = U.createElement, defined = U.defined, fireEvent = U.fireEvent, isArray = U.isArray, isObject = U.isObject, objectEach = U.objectEach, pick = U.pick, stableSort = U.stableSort, wrap = U.wrap;
21
+ var indexFilter = /\d/g, PREFIX = 'highcharts-', A = 'a', DIV = 'div', INPUT = 'input', LABEL = 'label', BUTTON = 'button', SELECT = 'select', OPTION = 'option', SPAN = 'span', UL = 'ul', LI = 'li', H3 = 'h3';
22
+ /**
23
+ * Enum for properties which should have dropdown list.
24
+ * @private
25
+ */
26
+ var DropdownProperties;
27
+ (function (DropdownProperties) {
28
+ DropdownProperties[DropdownProperties["params.algorithm"] = 0] = "params.algorithm";
29
+ DropdownProperties[DropdownProperties["params.average"] = 1] = "params.average";
30
+ })(DropdownProperties || (DropdownProperties = {}));
31
+ /**
32
+ * List of available algorithms for the specific indicator.
33
+ * @private
34
+ */
35
+ var dropdownParameters = {
36
+ 'algorithm-pivotpoints': ['standard', 'fibonacci', 'camarilla'],
37
+ 'average-disparityindex': ['sma', 'ema', 'dema', 'tema', 'wma']
38
+ };
21
39
  /* eslint-disable no-invalid-this, valid-jsdoc */
22
40
  // onContainerMouseDown blocks internal popup events, due to e.preventDefault.
23
41
  // Related issue #4606
24
42
  wrap(Pointer.prototype, 'onContainerMouseDown', function (proceed, e) {
25
- var popupClass = e.target && e.target.className;
26
43
  // elements is not in popup
27
- if (!(isString(popupClass) &&
28
- popupClass.indexOf(PREFIX + 'popup-field') >= 0)) {
44
+ if (!this.inClass(e.target, PREFIX + 'popup')) {
29
45
  proceed.apply(this, Array.prototype.slice.call(arguments, 1));
30
46
  }
31
47
  });
@@ -46,7 +62,21 @@ H.Popup.prototype = {
46
62
  // create popup div
47
63
  this.container = createElement(DIV, {
48
64
  className: PREFIX + 'popup highcharts-no-tooltip'
49
- }, null, parentDiv);
65
+ }, void 0, parentDiv);
66
+ addEvent(this.container, 'mousedown', function () {
67
+ var activeAnnotation = chart &&
68
+ chart.navigationBindings &&
69
+ chart.navigationBindings.activeAnnotation;
70
+ if (activeAnnotation) {
71
+ activeAnnotation.cancelClick = true;
72
+ var unbind_1 = addEvent(H.doc, 'click', function () {
73
+ setTimeout(function () {
74
+ activeAnnotation.cancelClick = false;
75
+ }, 0);
76
+ unbind_1();
77
+ });
78
+ }
79
+ });
50
80
  this.lang = this.getLangpack();
51
81
  this.iconsURL = iconsURL;
52
82
  // add close button
@@ -62,7 +92,7 @@ H.Popup.prototype = {
62
92
  // create close popup btn
63
93
  closeBtn = createElement(DIV, {
64
94
  className: PREFIX + 'popup-close'
65
- }, null, this.container);
95
+ }, void 0, this.container);
66
96
  closeBtn.style['background-image'] = 'url(' +
67
97
  (iconsURL.match(/png|svg|jpeg|jpg|gif/ig) ?
68
98
  iconsURL : iconsURL + 'close.svg') + ')';
@@ -90,15 +120,15 @@ H.Popup.prototype = {
90
120
  // left column
91
121
  lhsCol = createElement(DIV, {
92
122
  className: PREFIX + 'popup-lhs-col'
93
- }, null, container);
123
+ }, void 0, container);
94
124
  // right column
95
125
  rhsCol = createElement(DIV, {
96
126
  className: PREFIX + 'popup-rhs-col'
97
- }, null, container);
127
+ }, void 0, container);
98
128
  // wrapper content
99
129
  createElement(DIV, {
100
130
  className: PREFIX + 'popup-rhs-col-wrapper'
101
- }, null, rhsCol);
131
+ }, void 0, rhsCol);
102
132
  return {
103
133
  lhsCol: lhsCol,
104
134
  rhsCol: rhsCol
@@ -106,34 +136,43 @@ H.Popup.prototype = {
106
136
  },
107
137
  /**
108
138
  * Create input with label.
139
+ *
109
140
  * @private
141
+ *
110
142
  * @param {string} option
111
- * Chain of fields i.e params.styles.fontSize
112
- * @param {string} type
113
- * Indicator type
114
- * @param {Highhcharts.HTMLDOMElement}
115
- * Container where elements should be added
116
- * @param {string} value
117
- * Default value of input i.e period value is 14, extracted from
118
- * defaultOptions (ADD mode) or series options (EDIT mode)
143
+ * Chain of fields i.e params.styles.fontSize separeted by the dot.
144
+ *
145
+ * @param {string} indicatorType
146
+ * Type of the indicator i.e. sma, ema...
147
+ *
148
+ * @param {HTMLDOMElement} parentDiv
149
+ * HTML parent element.
150
+ *
151
+ * @param {Highcharts.InputAttributes} inputAttributes
152
+ * Attributes of the input.
153
+ *
154
+ * @return {HTMLInputElement}
155
+ * Return created input element.
119
156
  */
120
- addInput: function (option, type, parentDiv, value) {
121
- var optionParamList = option.split('.'), optionName = optionParamList[optionParamList.length - 1], lang = this.lang, inputName = PREFIX + type + '-' + optionName;
157
+ addInput: function (option, indicatorType, parentDiv, inputAttributes) {
158
+ var optionParamList = option.split('.'), optionName = optionParamList[optionParamList.length - 1], lang = this.lang, inputName = PREFIX + indicatorType + '-' + pick(inputAttributes.htmlFor, optionName);
159
+ var input;
122
160
  if (!inputName.match(indexFilter)) {
123
161
  // add label
124
162
  createElement(LABEL, {
125
- htmlFor: inputName
163
+ htmlFor: inputName,
164
+ className: inputAttributes.labelClassName
126
165
  }, void 0, parentDiv).appendChild(doc.createTextNode(lang[optionName] || optionName));
127
166
  }
128
167
  // add input
129
- if (value !== '') {
130
- createElement(INPUT, {
131
- name: inputName,
132
- value: value[0],
133
- type: value[1],
134
- className: PREFIX + 'popup-field'
135
- }, void 0, parentDiv).setAttribute(PREFIX + 'data-name', option);
136
- }
168
+ input = createElement(INPUT, {
169
+ name: inputName,
170
+ value: inputAttributes.value,
171
+ type: inputAttributes.type,
172
+ className: PREFIX + 'popup-field'
173
+ }, void 0, parentDiv);
174
+ input.setAttribute(PREFIX + 'data-name', option);
175
+ return input;
137
176
  },
138
177
  /**
139
178
  * Create button.
@@ -151,35 +190,41 @@ H.Popup.prototype = {
151
190
  * @return {Highcharts.HTMLDOMElement}
152
191
  * HTML button
153
192
  */
154
- addButton: function (parentDiv, label, type, callback, fieldsDiv) {
193
+ addButton: function (parentDiv, label, type, fieldsDiv, callback) {
155
194
  var _self = this, closePopup = this.closePopup, getFields = this.getFields, button;
156
195
  button = createElement(BUTTON, void 0, void 0, parentDiv);
157
196
  button.appendChild(doc.createTextNode(label));
158
- ['click', 'touchstart'].forEach(function (eventName) {
159
- addEvent(button, eventName, function () {
160
- closePopup.call(_self);
161
- return callback(getFields(fieldsDiv, type));
197
+ if (callback) {
198
+ ['click', 'touchstart'].forEach(function (eventName) {
199
+ addEvent(button, eventName, function () {
200
+ closePopup.call(_self);
201
+ return callback(getFields(fieldsDiv, type));
202
+ });
162
203
  });
163
- });
204
+ }
164
205
  return button;
165
206
  },
166
207
  /**
167
- * Get values from all inputs and create JSON.
208
+ * Get values from all inputs and selections then create JSON.
209
+ *
168
210
  * @private
169
- * @param {Highcharts.HTMLDOMElement} - container where inputs are created
170
- * @param {string} - add | edit | remove
171
- * @return {Highcharts.PopupFieldsObject} - fields
211
+ *
212
+ * @param {Highcharts.HTMLDOMElement} parentDiv
213
+ * The container where inputs and selections are created.
214
+ *
215
+ * @param {string} type
216
+ * Type of the popup bookmark (add|edit|remove).
172
217
  */
173
218
  getFields: function (parentDiv, type) {
174
- var inputList = parentDiv.querySelectorAll('input'), optionSeries = '#' + PREFIX + 'select-series > option:checked', optionVolume = '#' + PREFIX + 'select-volume > option:checked', linkedTo = parentDiv.querySelectorAll(optionSeries)[0], volumeTo = parentDiv.querySelectorAll(optionVolume)[0], seriesId, param, fieldsOutput;
219
+ var inputList = Array.prototype.slice.call(parentDiv.querySelectorAll(INPUT)), selectList = Array.prototype.slice.call(parentDiv.querySelectorAll(SELECT)), optionSeries = '#' + PREFIX + 'select-series > option:checked', optionVolume = '#' + PREFIX + 'select-volume > option:checked', linkedTo = parentDiv.querySelectorAll(optionSeries)[0], volumeTo = parentDiv.querySelectorAll(optionVolume)[0];
220
+ var fieldsOutput;
175
221
  fieldsOutput = {
176
222
  actionType: type,
177
- linkedTo: linkedTo && linkedTo.getAttribute('value'),
223
+ linkedTo: linkedTo && linkedTo.getAttribute('value') || '',
178
224
  fields: {}
179
225
  };
180
- [].forEach.call(inputList, function (input) {
181
- param = input.getAttribute(PREFIX + 'data-name');
182
- seriesId = input.getAttribute(PREFIX + 'data-series-id');
226
+ inputList.forEach(function (input) {
227
+ var param = input.getAttribute(PREFIX + 'data-name'), seriesId = input.getAttribute(PREFIX + 'data-series-id');
183
228
  // params
184
229
  if (seriesId) {
185
230
  fieldsOutput.seriesId = input.value;
@@ -192,8 +237,18 @@ H.Popup.prototype = {
192
237
  fieldsOutput.type = input.value;
193
238
  }
194
239
  });
240
+ selectList.forEach(function (select) {
241
+ var id = select.id;
242
+ // Get inputs only for the parameters, not for series and volume.
243
+ if (id !== PREFIX + 'select-series' &&
244
+ id !== PREFIX + 'select-volume') {
245
+ var parameter = id.split('highcharts-select-')[1];
246
+ fieldsOutput.fields[parameter] = select.value;
247
+ }
248
+ });
195
249
  if (volumeTo) {
196
- fieldsOutput.fields['params.volumeSeriesID'] = volumeTo.getAttribute('value');
250
+ fieldsOutput.fields['params.volumeSeriesID'] = volumeTo
251
+ .getAttribute('value') || '';
197
252
  }
198
253
  return fieldsOutput;
199
254
  },
@@ -206,7 +261,7 @@ H.Popup.prototype = {
206
261
  .querySelectorAll('.' + PREFIX + 'popup-close')[0];
207
262
  this.formType = void 0;
208
263
  // reset content
209
- popupDiv.innerHTML = '';
264
+ popupDiv.innerHTML = AST.emptyHTML;
210
265
  // reset toolbar styles if exists
211
266
  if (popupDiv.className.indexOf(toolbarClass) >= 0) {
212
267
  popupDiv.classList.remove(toolbarClass);
@@ -295,13 +350,13 @@ H.Popup.prototype = {
295
350
  // Basic shapes:
296
351
  options.shapes && options.shapes[0].type)));
297
352
  // add buttons
298
- button = this.addButton(popupDiv, lang.removeButton || 'remove', 'remove', callback, popupDiv);
353
+ button = this.addButton(popupDiv, lang.removeButton || 'remove', 'remove', popupDiv, callback);
299
354
  button.className += ' ' + PREFIX + 'annotation-remove-button';
300
355
  button.style['background-image'] = 'url(' +
301
356
  this.iconsURL + 'destroy.svg)';
302
- button = this.addButton(popupDiv, lang.editButton || 'edit', 'edit', function () {
357
+ button = this.addButton(popupDiv, lang.editButton || 'edit', 'edit', popupDiv, function () {
303
358
  showForm.call(_self, 'annotation-edit', chart, options, callback);
304
- }, popupDiv);
359
+ });
305
360
  button.className += ' ' + PREFIX + 'annotation-edit-button';
306
361
  button.style['background-image'] = 'url(' +
307
362
  this.iconsURL + 'edit.svg)';
@@ -331,15 +386,15 @@ H.Popup.prototype = {
331
386
  lhsCol.appendChild(doc.createTextNode(lang[options.langKey] || options.langKey || ''));
332
387
  // left column
333
388
  lhsCol = createElement(DIV, {
334
- className: PREFIX + 'popup-lhs-col ' + PREFIX + 'popup-lhs-full'
335
- }, null, popupDiv);
389
+ className: (PREFIX + 'popup-lhs-col ' + PREFIX + 'popup-lhs-full')
390
+ }, void 0, popupDiv);
336
391
  bottomRow = createElement(DIV, {
337
392
  className: PREFIX + 'popup-bottom-row'
338
- }, null, popupDiv);
393
+ }, void 0, popupDiv);
339
394
  this.annotations.addFormFields.call(this, lhsCol, chart, '', options, [], true);
340
395
  this.addButton(bottomRow, isInit ?
341
396
  (lang.addButton || 'add') :
342
- (lang.saveButton || 'save'), isInit ? 'add' : 'save', callback, popupDiv);
397
+ (lang.saveButton || 'save'), isInit ? 'add' : 'save', popupDiv, callback);
343
398
  },
344
399
  /**
345
400
  * Create annotation's form fields.
@@ -407,6 +462,10 @@ H.Popup.prototype = {
407
462
  }, void 0, genInput[2]).appendChild(doc.createTextNode(genInput[1]));
408
463
  }
409
464
  else {
465
+ genInput[4] = {
466
+ value: genInput[4][0],
467
+ type: genInput[4][1]
468
+ };
410
469
  addInput.apply(genInput[0], genInput.splice(1));
411
470
  }
412
471
  });
@@ -431,131 +490,400 @@ H.Popup.prototype = {
431
490
  .querySelectorAll('.' + PREFIX + 'tab-item-content');
432
491
  // ADD tab
433
492
  this.addColsContainer(tabsContainers[0]);
493
+ indicators.addSearchBox.call(this, chart, tabsContainers[0]);
434
494
  indicators.addIndicatorList.call(this, chart, tabsContainers[0], 'add');
435
495
  buttonParentDiv = tabsContainers[0]
436
496
  .querySelectorAll('.' + PREFIX + 'popup-rhs-col')[0];
437
- this.addButton(buttonParentDiv, lang.addButton || 'add', 'add', callback, buttonParentDiv);
497
+ this.addButton(buttonParentDiv, lang.addButton || 'add', 'add', buttonParentDiv, callback);
438
498
  // EDIT tab
439
499
  this.addColsContainer(tabsContainers[1]);
440
500
  indicators.addIndicatorList.call(this, chart, tabsContainers[1], 'edit');
441
501
  buttonParentDiv = tabsContainers[1]
442
502
  .querySelectorAll('.' + PREFIX + 'popup-rhs-col')[0];
443
- this.addButton(buttonParentDiv, lang.saveButton || 'save', 'edit', callback, buttonParentDiv);
444
- this.addButton(buttonParentDiv, lang.removeButton || 'remove', 'remove', callback, buttonParentDiv);
503
+ this.addButton(buttonParentDiv, lang.saveButton || 'save', 'edit', buttonParentDiv, callback);
504
+ this.addButton(buttonParentDiv, lang.removeButton || 'remove', 'remove', buttonParentDiv, callback);
505
+ },
506
+ /**
507
+ * Filter object of series which are not indicators.
508
+ * If the filter string exists, check against it.
509
+ *
510
+ * @private
511
+ *
512
+ * @param {Highcharts.FilteredSeries} series
513
+ * All series are available in the plotOptions.
514
+ *
515
+ * @param {string|undefined} filter
516
+ * Applied filter string from the input.
517
+ * For the first iteration, it's an empty string.
518
+ *
519
+ * @return {Array<Highcharts.FilteredSeries>} filteredSeriesArray
520
+ * Returns array of filtered series based on filter string.
521
+ */
522
+ filterSeries: function (series, filter) {
523
+ var popup = this, indicators = popup.indicators, lang = popup.chart && popup.chart.options.lang, indicatorAliases = lang &&
524
+ lang.navigation &&
525
+ lang.navigation.popup &&
526
+ lang.navigation.popup.indicatorAliases;
527
+ var filteredSeriesArray = [], filteredSeries;
528
+ objectEach(series, function (series, value) {
529
+ var seriesOptions = series.options;
530
+ // Allow only indicators.
531
+ if (series.params || seriesOptions &&
532
+ seriesOptions.params) {
533
+ var _a = indicators.getNameType(series, value), indicatorFullName = _a.indicatorFullName, indicatorType = _a.indicatorType;
534
+ if (filter) {
535
+ // Replace invalid characters.
536
+ var validFilter = filter.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
537
+ var regex = new RegExp(validFilter, 'i'), alias = indicatorAliases &&
538
+ indicatorAliases[indicatorType] &&
539
+ indicatorAliases[indicatorType].join(' ') || '';
540
+ if (indicatorFullName.match(regex) ||
541
+ alias.match(regex)) {
542
+ filteredSeries = {
543
+ indicatorFullName: indicatorFullName,
544
+ indicatorType: indicatorType,
545
+ series: series
546
+ };
547
+ filteredSeriesArray.push(filteredSeries);
548
+ }
549
+ }
550
+ else {
551
+ filteredSeries = {
552
+ indicatorFullName: indicatorFullName,
553
+ indicatorType: indicatorType,
554
+ series: series
555
+ };
556
+ filteredSeriesArray.push(filteredSeries);
557
+ }
558
+ }
559
+ });
560
+ return filteredSeriesArray;
561
+ },
562
+ /**
563
+ * Filter an array of series and map its names and types.
564
+ *
565
+ * @private
566
+ *
567
+ * @param {Highcharts.FilteredSeries} series
568
+ * All series that are available in the plotOptions.
569
+ *
570
+ * @return {Array<Highcharts.FilteredSeries>} filteredSeriesArray
571
+ * Returns array of filtered series based on filter string.
572
+ */
573
+ filterSeriesArray: function (series) {
574
+ var filteredSeriesArray = [], filteredSeries;
575
+ // Allow only indicators.
576
+ series.forEach(function (series) {
577
+ var seriesOptions = series.options;
578
+ if (series.is('sma')) {
579
+ filteredSeries = {
580
+ indicatorFullName: series.name,
581
+ indicatorType: series.type,
582
+ series: series
583
+ };
584
+ filteredSeriesArray.push(filteredSeries);
585
+ }
586
+ });
587
+ return filteredSeriesArray;
445
588
  },
446
589
  /**
447
590
  * Create HTML list of all indicators (ADD mode) or added indicators
448
591
  * (EDIT mode).
592
+ *
449
593
  * @private
594
+ *
595
+ * @param {Highcharts.AnnotationChart} chart
596
+ * The chart object.
597
+ *
598
+ * @param {string} [optionName]
599
+ * Name of the option into which selection is being added.
600
+ *
601
+ * @param {HTMLDOMElement} [parentDiv]
602
+ * HTML parent element.
603
+ *
604
+ * @param {string} listType
605
+ * Type of list depending on the selected bookmark.
606
+ * Might be 'add' or 'edit'.
607
+ *
608
+ * @param {string|undefined} filter
609
+ * Applied filter string from the input.
610
+ * For the first iteration, it's an empty string.
450
611
  */
451
- addIndicatorList: function (chart, parentDiv, listType) {
452
- var _self = this, lhsCol = parentDiv.querySelectorAll('.' + PREFIX + 'popup-lhs-col')[0], rhsCol = parentDiv.querySelectorAll('.' + PREFIX + 'popup-rhs-col')[0], isEdit = listType === 'edit', series = (isEdit ?
612
+ addIndicatorList: function (chart, parentDiv, listType, filter) {
613
+ var popup = this, indicators = popup.indicators, lang = popup.lang, lhsCol = parentDiv.querySelectorAll('.' + PREFIX + 'popup-lhs-col')[0], rhsCol = parentDiv.querySelectorAll('.' + PREFIX + 'popup-rhs-col')[0], isEdit = listType === 'edit', addFormFields = this.indicators.addFormFields, series = (isEdit ?
453
614
  chart.series : // EDIT mode
454
- chart.options.plotOptions // ADD mode
455
- ), addFormFields = this.indicators.addFormFields, rhsColWrapper, indicatorList, item;
456
- if (!chart) {
615
+ chart.options.plotOptions || {} // ADD mode
616
+ );
617
+ if (!chart && series) {
457
618
  return;
458
619
  }
459
- // create wrapper for list
620
+ var rhsColWrapper, indicatorList, item, filteredSeriesArray = [];
621
+ // Filter and sort the series.
622
+ if (!isEdit && !isArray(series)) {
623
+ // Apply filters only for the 'add' indicator list.
624
+ filteredSeriesArray = indicators.filterSeries.call(this, series, filter);
625
+ }
626
+ else if (isArray(series)) {
627
+ filteredSeriesArray = indicators.filterSeriesArray.call(this, series);
628
+ }
629
+ // Sort indicators alphabeticaly.
630
+ stableSort(filteredSeriesArray, function (a, b) {
631
+ var seriesAName = a.indicatorFullName.toLowerCase(), seriesBName = b.indicatorFullName.toLowerCase();
632
+ return (seriesAName < seriesBName) ?
633
+ -1 : (seriesAName > seriesBName) ? 1 : 0;
634
+ });
635
+ // If the list exists remove it from the DOM
636
+ // in order to create a new one with different filters.
637
+ if (lhsCol.children[1]) {
638
+ lhsCol.children[1].remove();
639
+ }
640
+ // Create wrapper for list.
460
641
  indicatorList = createElement(UL, {
461
642
  className: PREFIX + 'indicator-list'
462
- }, null, lhsCol);
463
- rhsColWrapper = rhsCol
464
- .querySelectorAll('.' + PREFIX + 'popup-rhs-col-wrapper')[0];
465
- objectEach(series, function (serie, value) {
466
- var seriesOptions = serie.options;
467
- if (serie.params ||
468
- seriesOptions && seriesOptions.params) {
469
- var indicatorNameType_1 = _self.indicators.getNameType(serie, value), indicatorType_1 = indicatorNameType_1.type;
470
- item = createElement(LI, {
471
- className: PREFIX + 'indicator-list'
472
- }, void 0, indicatorList);
473
- item.appendChild(doc.createTextNode(indicatorNameType_1.name));
474
- ['click', 'touchstart'].forEach(function (eventName) {
475
- addEvent(item, eventName, function () {
476
- addFormFields.call(_self, chart, isEdit ? serie : series[indicatorType_1], indicatorNameType_1.type, rhsColWrapper);
477
- // add hidden input with series.id
478
- if (isEdit && serie.options) {
479
- createElement(INPUT, {
480
- type: 'hidden',
481
- name: PREFIX + 'id-' + indicatorType_1,
482
- value: serie.options.id
483
- }, null, rhsColWrapper)
484
- .setAttribute(PREFIX + 'data-series-id', serie.options.id);
485
- }
486
- });
643
+ }, void 0, lhsCol);
644
+ rhsColWrapper = rhsCol.querySelectorAll('.' + PREFIX + 'popup-rhs-col-wrapper')[0];
645
+ filteredSeriesArray.forEach(function (seriesSet) {
646
+ var indicatorFullName = seriesSet.indicatorFullName, indicatorType = seriesSet.indicatorType, series = seriesSet.series;
647
+ item = createElement(LI, {
648
+ className: PREFIX + 'indicator-list'
649
+ }, void 0, indicatorList);
650
+ item.appendChild(doc.createTextNode(indicatorFullName));
651
+ ['click', 'touchstart'].forEach(function (eventName) {
652
+ addEvent(item, eventName, function () {
653
+ var button = rhsColWrapper.parentNode
654
+ .children[1];
655
+ addFormFields.call(popup, chart, series, indicatorType, rhsColWrapper);
656
+ if (button) {
657
+ button.style.display = 'block';
658
+ }
659
+ // add hidden input with series.id
660
+ if (isEdit && series.options) {
661
+ createElement(INPUT, {
662
+ type: 'hidden',
663
+ name: PREFIX + 'id-' + indicatorType,
664
+ value: series.options.id
665
+ }, void 0, rhsColWrapper).setAttribute(PREFIX + 'data-series-id', series.options.id);
666
+ }
487
667
  });
488
- }
668
+ });
489
669
  });
490
670
  // select first item from the list
491
671
  if (indicatorList.childNodes.length > 0) {
492
672
  indicatorList.childNodes[0].click();
493
673
  }
674
+ else if (!isEdit) {
675
+ AST.setElementHTML(rhsColWrapper.parentNode.children[0], lang.noFilterMatch || '');
676
+ rhsColWrapper.parentNode.children[1]
677
+ .style.display = 'none';
678
+ }
679
+ },
680
+ /**
681
+ * Add searchbox HTML element and its' label.
682
+ *
683
+ * @private
684
+ *
685
+ * @param {Highcharts.AnnotationChart} chart
686
+ * The chart object.
687
+ *
688
+ * @param {HTMLDOMElement} parentDiv
689
+ * HTML parent element.
690
+ */
691
+ addSearchBox: function (chart, parentDiv) {
692
+ var popup = this, lhsCol = parentDiv.querySelectorAll('.' + PREFIX + 'popup-lhs-col')[0], options = 'searchIndicators', inputAttributes = {
693
+ value: '',
694
+ type: 'text',
695
+ htmlFor: 'search-indicators',
696
+ labelClassName: 'highcharts-input-search-indicators-label'
697
+ }, clearFilterText = this.lang.clearFilter, inputWrapper = createElement(DIV, {
698
+ className: 'highcharts-input-wrapper'
699
+ }, void 0, lhsCol);
700
+ var handleInputChange = function (inputText) {
701
+ // Apply some filters.
702
+ popup.indicators.addIndicatorList.call(popup, chart, popup.container, 'add', inputText);
703
+ };
704
+ // Add input field with the label and button.
705
+ var input = this.addInput(options, INPUT, inputWrapper, inputAttributes), button = createElement(A, {
706
+ textContent: clearFilterText
707
+ }, void 0, inputWrapper);
708
+ input.classList.add('highcharts-input-search-indicators');
709
+ button.classList.add('clear-filter-button');
710
+ // Add input change events.
711
+ addEvent(input, 'input', function (e) {
712
+ handleInputChange(this.value);
713
+ // Show clear filter button.
714
+ if (this.value.length) {
715
+ button.style.display = 'inline-block';
716
+ }
717
+ else {
718
+ button.style.display = 'none';
719
+ }
720
+ });
721
+ // Add clear filter click event.
722
+ ['click', 'touchstart'].forEach(function (eventName) {
723
+ addEvent(button, eventName, function () {
724
+ // Clear the input.
725
+ input.value = '';
726
+ handleInputChange('');
727
+ // Hide clear filter button- no longer nececary.
728
+ button.style.display = 'none';
729
+ });
730
+ });
731
+ },
732
+ /**
733
+ * Add selection HTML element and its' label.
734
+ *
735
+ * @private
736
+ *
737
+ * @param {string} indicatorType
738
+ * Type of the indicator i.e. sma, ema...
739
+ *
740
+ * @param {string} [optionName]
741
+ * Name of the option into which selection is being added.
742
+ *
743
+ * @param {HTMLDOMElement} [parentDiv]
744
+ * HTML parent element.
745
+ */
746
+ addSelection: function (indicatorType, optionName, parentDiv) {
747
+ var optionParamList = optionName.split('.'), labelText = optionParamList[optionParamList.length - 1];
748
+ var selectName = PREFIX + optionName + '-type-' + indicatorType, lang = this.lang, selectBox;
749
+ // Add a label for the selection box.
750
+ createElement(LABEL, {
751
+ htmlFor: selectName
752
+ }, null, parentDiv).appendChild(doc.createTextNode(lang[labelText] || optionName));
753
+ // Create a selection box.
754
+ selectBox = createElement(SELECT, {
755
+ name: selectName,
756
+ className: PREFIX + 'popup-field',
757
+ id: PREFIX + 'select-' + optionName
758
+ }, null, parentDiv);
759
+ selectBox.setAttribute('id', PREFIX + 'select-' + optionName);
760
+ return selectBox;
761
+ },
762
+ /**
763
+ * Get and add selection options.
764
+ *
765
+ * @private
766
+ *
767
+ * @param {Highcharts.AnnotationChart} chart
768
+ * The chart object.
769
+ *
770
+ * @param {string} [optionName]
771
+ * Name of the option into which selection is being added.
772
+ *
773
+ * @param {HTMLSelectElement} [selectBox]
774
+ * HTML select box element to which the options are being added.
775
+ *
776
+ * @param {string|undefined} indicatorType
777
+ * Type of the indicator i.e. sma, ema...
778
+ *
779
+ * @param {string|undefined} parameterName
780
+ * Name of the parameter which should be applied.
781
+ *
782
+ * @param {string|undefined} selectedOption
783
+ * Default value in dropdown.
784
+ */
785
+ addSelectionOptions: function (chart, optionName, selectBox, indicatorType, parameterName, selectedOption, currentSeries) {
786
+ var popup = this;
787
+ // Get and apply selection options for the possible series.
788
+ if (optionName === 'series' || optionName === 'volume') {
789
+ // List all series which have id - mandatory for indicator.
790
+ chart.series.forEach(function (series) {
791
+ var seriesOptions = series.options, seriesName = seriesOptions.name ||
792
+ seriesOptions.params ?
793
+ series.name :
794
+ seriesOptions.id || '';
795
+ if (seriesOptions.id !== PREFIX + 'navigator-series' &&
796
+ seriesOptions.id !== (currentSeries &&
797
+ currentSeries.options &&
798
+ currentSeries.options.id)) {
799
+ if (!defined(selectedOption) &&
800
+ optionName === 'volume' &&
801
+ series.type === 'column') {
802
+ selectedOption = seriesOptions.id;
803
+ }
804
+ createElement(OPTION, {
805
+ value: seriesOptions.id
806
+ }, void 0, selectBox).appendChild(doc.createTextNode(seriesName));
807
+ }
808
+ });
809
+ }
810
+ else if (indicatorType && parameterName) {
811
+ // Get and apply options for the possible parameters.
812
+ var dropdownKey = parameterName + '-' + indicatorType, parameterOption = dropdownParameters[dropdownKey];
813
+ parameterOption.forEach(function (element) {
814
+ createElement(OPTION, {
815
+ value: element
816
+ }, void 0, selectBox).appendChild(doc.createTextNode(element));
817
+ });
818
+ }
819
+ // Add the default dropdown value if defined.
820
+ if (defined(selectedOption)) {
821
+ selectBox.value = selectedOption;
822
+ }
494
823
  },
495
824
  /**
496
825
  * Extract full name and type of requested indicator.
826
+ *
497
827
  * @private
828
+ *
498
829
  * @param {Highcharts.Series} series
499
- * Series which name is needed. (EDIT mode - defaultOptions.series, ADD
500
- * mode - indicator series).
501
- * @param {string} - indicator type like: sma, ema, etc.
502
- * @return {Object} - series name and type like: sma, ema, etc.
830
+ * Series which name is needed(EDITmode - defaultOptions.series,
831
+ * ADDmode - indicator series).
832
+ *
833
+ * @param {string} [indicatorType]
834
+ * Type of the indicator i.e. sma, ema...
835
+ *
836
+ * @return {Highcharts.Dictionary<string>}
837
+ * Full name and series type.
503
838
  */
504
- getNameType: function (series, type) {
505
- var options = series.options, seriesTypes = H.seriesTypes,
839
+ getNameType: function (series, indicatorType) {
840
+ var options = series.options, seriesTypes = H.seriesTypes;
506
841
  // add mode
507
- seriesName = seriesTypes[type] &&
508
- seriesTypes[type].prototype.nameBase || type.toUpperCase(), seriesType = type;
842
+ var seriesName = (seriesTypes[indicatorType] &&
843
+ seriesTypes[indicatorType].prototype.nameBase) ||
844
+ indicatorType.toUpperCase(), seriesType = indicatorType;
509
845
  // edit
510
846
  if (options && options.type) {
511
847
  seriesType = series.options.type;
512
848
  seriesName = series.name;
513
849
  }
514
850
  return {
515
- name: seriesName,
516
- type: seriesType
851
+ indicatorFullName: seriesName,
852
+ indicatorType: seriesType
517
853
  };
518
854
  },
519
855
  /**
520
- * List all series with unique ID. Its mandatory for indicators to set
521
- * correct linking.
856
+ * Create the selection box for the series,
857
+ * add options and apply the default one.
858
+ *
522
859
  * @private
523
- * @param {string} type
524
- * Indicator type like: sma, ema, etc.
525
- * @param {string} optionName
526
- * Type of select i.e series or volume.
527
- * @param {Highcharts.Chart} chart
528
- * Chart
529
- * @param {Highcharts.HTMLDOMElement} parentDiv
530
- * Element where created HTML list is added
531
- * @param {string} selectedOption
532
- * optional param for default value in dropdown
860
+ *
861
+ * @param {string} indicatorType
862
+ * Type of the indicator i.e. sma, ema...
863
+ *
864
+ * @param {string} [optionName]
865
+ * Name of the option into which selection is being added.
866
+ *
867
+ * @param {Highcharts.AnnotationChart} chart
868
+ * The chart object.
869
+ *
870
+ * @param {HTMLDOMElement} [parentDiv]
871
+ * HTML parent element.
872
+ *
873
+ * @param {string|undefined} selectedOption
874
+ * Default value in dropdown.
533
875
  */
534
- listAllSeries: function (type, optionName, chart, parentDiv, selectedOption) {
535
- var selectName = PREFIX + optionName + '-type-' + type, lang = this.lang, selectBox, seriesOptions;
876
+ listAllSeries: function (indicatorType, optionName, chart, parentDiv, currentSeries, selectedOption) {
877
+ var popup = this, indicators = popup.indicators;
878
+ // Won't work without the chart.
536
879
  if (!chart) {
537
880
  return;
538
881
  }
539
- createElement(LABEL, {
540
- htmlFor: selectName
541
- }, null, parentDiv).appendChild(doc.createTextNode(lang[optionName] || optionName));
542
- // select type
543
- selectBox = createElement(SELECT, {
544
- name: selectName,
545
- className: PREFIX + 'popup-field'
546
- }, null, parentDiv);
547
- selectBox.setAttribute('id', PREFIX + 'select-' + optionName);
548
- // list all series which have id - mandatory for creating indicator
549
- chart.series.forEach(function (serie) {
550
- seriesOptions = serie.options;
551
- if (!seriesOptions.params &&
552
- seriesOptions.id &&
553
- seriesOptions.id !== PREFIX + 'navigator-series') {
554
- createElement(OPTION, {
555
- value: seriesOptions.id
556
- }, null, selectBox).appendChild(doc.createTextNode(seriesOptions.name || seriesOptions.id));
557
- }
558
- });
882
+ // Add selection boxes.
883
+ var selectBox = indicators.addSelection.call(popup, indicatorType, optionName, parentDiv);
884
+ // Add possible dropdown options.
885
+ indicators.addSelectionOptions.call(popup, chart, optionName, selectBox, void 0, void 0, void 0, currentSeries);
886
+ // Add the default dropdown value if defined.
559
887
  if (defined(selectedOption)) {
560
888
  selectBox.value = selectedOption;
561
889
  }
@@ -579,21 +907,21 @@ H.Popup.prototype = {
579
907
  addFormFields: function (chart, series, seriesType, rhsColWrapper) {
580
908
  var fields = series.params || series.options.params, getNameType = this.indicators.getNameType;
581
909
  // reset current content
582
- rhsColWrapper.innerHTML = '';
910
+ rhsColWrapper.innerHTML = AST.emptyHTML;
583
911
  // create title (indicator name in the right column)
584
912
  createElement(H3, {
585
913
  className: PREFIX + 'indicator-title'
586
- }, void 0, rhsColWrapper).appendChild(doc.createTextNode(getNameType(series, seriesType).name));
914
+ }, void 0, rhsColWrapper).appendChild(doc.createTextNode(getNameType(series, seriesType).indicatorFullName));
587
915
  // input type
588
916
  createElement(INPUT, {
589
917
  type: 'hidden',
590
918
  name: PREFIX + 'type-' + seriesType,
591
919
  value: seriesType
592
- }, null, rhsColWrapper);
920
+ }, void 0, rhsColWrapper);
593
921
  // list all series with id
594
- this.indicators.listAllSeries.call(this, seriesType, 'series', chart, rhsColWrapper, series.linkedParent && fields.volumeSeriesID);
922
+ this.indicators.listAllSeries.call(this, seriesType, 'series', chart, rhsColWrapper, series, series.linkedParent && series.linkedParent.options.id);
595
923
  if (fields.volumeSeriesID) {
596
- this.indicators.listAllSeries.call(this, seriesType, 'volume', chart, rhsColWrapper, series.linkedParent && series.linkedParent.options.id);
924
+ this.indicators.listAllSeries.call(this, seriesType, 'volume', chart, rhsColWrapper, series, series.linkedParent && fields.volumeSeriesID);
597
925
  }
598
926
  // add param fields
599
927
  this.indicators.addParamInputs.call(this, chart, 'params', fields, seriesType, rhsColWrapper);
@@ -615,23 +943,39 @@ H.Popup.prototype = {
615
943
  * Element where created HTML list is added
616
944
  */
617
945
  addParamInputs: function (chart, parentNode, fields, type, parentDiv) {
618
- var _self = this, addParamInputs = this.indicators.addParamInputs, addInput = this.addInput, parentFullName;
946
+ var popup = this, indicators = popup.indicators;
947
+ var addParamInputs = this.indicators.addParamInputs, addInput = this.addInput, parentFullName;
619
948
  if (!chart) {
620
949
  return;
621
950
  }
622
951
  objectEach(fields, function (value, fieldName) {
623
952
  // create name like params.styles.fontSize
624
953
  parentFullName = parentNode + '.' + fieldName;
625
- if (value !== void 0) { // skip if field is unnecessary, #15362
954
+ if (defined(value) && // skip if field is unnecessary, #15362
955
+ parentFullName) {
626
956
  if (isObject(value)) {
627
- addInput.call(// (15733) 'Periods' has an arrayed value. Label must be created here.
628
- _self, parentFullName, type, parentDiv, '');
629
- addParamInputs.call(_self, chart, parentFullName, value, type, parentDiv);
957
+ // (15733) 'Periods' has an arrayed value. Label must be
958
+ // created here.
959
+ addInput.call(popup, parentFullName, type, parentDiv, {});
960
+ addParamInputs.call(popup, chart, parentFullName, value, type, parentDiv);
961
+ }
962
+ // If the option is listed in dropdown enum,
963
+ // add the selection box for it.
964
+ if (parentFullName in DropdownProperties) {
965
+ // Add selection boxes.
966
+ var selectBox = indicators.addSelection.call(popup, type, parentFullName, parentDiv);
967
+ // Add possible dropdown options.
968
+ indicators.addSelectionOptions.call(popup, chart, parentNode, selectBox, type, fieldName, value);
630
969
  }
631
970
  else if (
632
- // skip volume field which is created by addFormFields
633
- parentFullName !== 'params.volumeSeriesID') {
634
- addInput.call(_self, parentFullName, type, parentDiv, [value, 'text'] // all inputs are text type
971
+ // Skip volume field which is created by addFormFields.
972
+ parentFullName !== 'params.volumeSeriesID' &&
973
+ !isArray(value) // Skip params declared in array.
974
+ ) {
975
+ addInput.call(popup, parentFullName, type, parentDiv, {
976
+ value: value,
977
+ type: 'text'
978
+ } // all inputs are text type
635
979
  );
636
980
  }
637
981
  }
@@ -707,8 +1051,10 @@ H.Popup.prototype = {
707
1051
  addContentItem: function () {
708
1052
  var popupDiv = this.popup.container;
709
1053
  return createElement(DIV, {
710
- className: PREFIX + 'tab-item-content ' + PREFIX + 'no-mousewheel' // #12100
711
- }, null, popupDiv);
1054
+ // #12100
1055
+ className: PREFIX + 'tab-item-content ' +
1056
+ PREFIX + 'no-mousewheel'
1057
+ }, void 0, popupDiv);
712
1058
  },
713
1059
  /**
714
1060
  * Add click event to each tab
@@ -765,7 +1111,7 @@ addEvent(NavigationBindings, 'showPopup', function (config) {
765
1111
  this.popup = new H.Popup(this.chart.container, (this.chart.options.navigation.iconsURL ||
766
1112
  (this.chart.options.stockTools &&
767
1113
  this.chart.options.stockTools.gui.iconsURL) ||
768
- 'https://code.highcharts.com/9.2.1/gfx/stock-icons/'), this.chart);
1114
+ 'https://code.highcharts.com/9.3.2/gfx/stock-icons/'), this.chart);
769
1115
  }
770
1116
  this.popup.showForm(config.formType, this.chart, config.options, config.onSubmit);
771
1117
  });