@ntlab/ntjs-assets 2.0.21 → 2.0.22

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 (402) hide show
  1. package/assets/js/cdn.json +1 -1
  2. package/assets/js/highcharts/css/highcharts.css +74 -0
  3. package/assets/js/highcharts/es-modules/Accessibility/Components/LegendComponent.js +1 -1
  4. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +1 -1
  5. package/assets/js/highcharts/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +9 -2
  6. package/assets/js/highcharts/es-modules/Core/Axis/Axis.js +25 -15
  7. package/assets/js/highcharts/es-modules/Core/Axis/AxisDefaults.js +3 -2
  8. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxis.js +1 -1
  9. package/assets/js/highcharts/es-modules/Core/Axis/Color/ColorAxisDefaults.js +2 -2
  10. package/assets/js/highcharts/es-modules/Core/Axis/GridAxis.js +1 -1
  11. package/assets/js/highcharts/es-modules/Core/Axis/OrdinalAxis.js +1 -1
  12. package/assets/js/highcharts/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +10 -0
  13. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxis.js +19 -113
  14. package/assets/js/highcharts/es-modules/Core/Axis/RadialAxisDefaults.js +128 -0
  15. package/assets/js/highcharts/es-modules/Core/Axis/Tick.js +9 -13
  16. package/assets/js/highcharts/es-modules/Core/Chart/Chart.js +21 -17
  17. package/assets/js/highcharts/es-modules/Core/Chart/ChartDefaults.js +4 -2
  18. package/assets/js/highcharts/es-modules/Core/Chart/StockChart.js +5 -9
  19. package/assets/js/highcharts/es-modules/Core/Defaults.js +180 -91
  20. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGElement.js +50 -28
  21. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGLabel.js +6 -3
  22. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/SVGRenderer.js +38 -80
  23. package/assets/js/highcharts/es-modules/Core/Renderer/SVG/Symbols.js +9 -5
  24. package/assets/js/highcharts/es-modules/Core/Series/DataLabel.js +17 -10
  25. package/assets/js/highcharts/es-modules/Core/Series/Point.js +4 -3
  26. package/assets/js/highcharts/es-modules/Core/Series/Series.js +24 -15
  27. package/assets/js/highcharts/es-modules/Core/Series/SeriesDefaults.js +15 -0
  28. package/assets/js/highcharts/es-modules/Core/Templating.js +4 -1
  29. package/assets/js/highcharts/es-modules/Core/Tooltip.js +17 -55
  30. package/assets/js/highcharts/es-modules/Core/Utilities.js +16 -0
  31. package/assets/js/highcharts/es-modules/Data/Converters/CSVConverter.js +1 -1
  32. package/assets/js/highcharts/es-modules/Data/DataCursor.js +34 -16
  33. package/assets/js/highcharts/es-modules/Data/DataPool.js +1 -1
  34. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/Controllable.js +3 -0
  35. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +0 -3
  36. package/assets/js/highcharts/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +0 -3
  37. package/assets/js/highcharts/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
  38. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +2 -0
  39. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/CrookedLine.js +1 -0
  40. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Fibonacci.js +4 -2
  41. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +2 -1
  42. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/InfinityLine.js +2 -1
  43. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Measure.js +4 -3
  44. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -5
  45. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/TimeCycles.js +2 -1
  46. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/Tunnel.js +4 -2
  47. package/assets/js/highcharts/es-modules/Extensions/Annotations/Types/VerticalLine.js +2 -1
  48. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostChart.js +11 -3
  49. package/assets/js/highcharts/es-modules/Extensions/Boost/BoostSeries.js +7 -4
  50. package/assets/js/highcharts/es-modules/Extensions/Boost/WGLRenderer.js +11 -2
  51. package/assets/js/highcharts/es-modules/Extensions/Data.js +3 -3
  52. package/assets/js/highcharts/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +1 -0
  53. package/assets/js/highcharts/es-modules/Extensions/DownloadURL.js +3 -0
  54. package/assets/js/highcharts/es-modules/Extensions/DragPanes/AxisResizer.js +1 -2
  55. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DragDropProps.js +17 -0
  56. package/assets/js/highcharts/es-modules/Extensions/DraggablePoints/DraggablePoints.js +1 -0
  57. package/assets/js/highcharts/es-modules/Extensions/Drilldown/Drilldown.js +14 -14
  58. package/assets/js/highcharts/es-modules/Extensions/Exporting/Exporting.js +13 -18
  59. package/assets/js/highcharts/es-modules/Extensions/Exporting/ExportingDefaults.js +8 -6
  60. package/assets/js/highcharts/es-modules/Extensions/OfflineExporting/OfflineExporting.js +38 -30
  61. package/assets/js/highcharts/es-modules/Extensions/Pane/PaneDefaults.js +11 -0
  62. package/assets/js/highcharts/es-modules/Extensions/RegexLimits.js +1 -0
  63. package/assets/js/highcharts/es-modules/Extensions/ScrollablePlotArea.js +19 -17
  64. package/assets/js/highcharts/es-modules/Extensions/Themes/BrandDark.js +13 -1
  65. package/assets/js/highcharts/es-modules/Maps/MapNavigation.js +5 -3
  66. package/assets/js/highcharts/es-modules/Maps/MapView.js +5 -5
  67. package/assets/js/highcharts/es-modules/Maps/Projection.js +39 -20
  68. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +10 -231
  69. package/assets/js/highcharts/es-modules/Series/ArcDiagram/ArcDiagramSeriesDefaults.js +245 -0
  70. package/assets/js/highcharts/es-modules/Series/Area/AreaSeries.js +2 -222
  71. package/assets/js/highcharts/es-modules/Series/Area/AreaSeriesDefaults.js +239 -0
  72. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeries.js +0 -133
  73. package/assets/js/highcharts/es-modules/Series/AreaRange/AreaRangeSeriesDefaults.js +273 -0
  74. package/assets/js/highcharts/es-modules/Series/BoxPlot/BoxPlotSeries.js +36 -38
  75. package/assets/js/highcharts/es-modules/Series/Bubble/BubbleSeries.js +17 -6
  76. package/assets/js/highcharts/es-modules/Series/Candlestick/CandlestickSeries.js +9 -11
  77. package/assets/js/highcharts/es-modules/Series/ColorMapComposition.js +28 -4
  78. package/assets/js/highcharts/es-modules/Series/Column/ColumnDataLabel.js +1 -1
  79. package/assets/js/highcharts/es-modules/Series/Column/ColumnSeries.js +25 -30
  80. package/assets/js/highcharts/es-modules/Series/DataModifyComposition.js +26 -2
  81. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeries.js +37 -27
  82. package/assets/js/highcharts/es-modules/Series/DotPlot/DotPlotSeriesDefaults.js +3 -2
  83. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeries.js +1 -39
  84. package/assets/js/highcharts/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +29 -0
  85. package/assets/js/highcharts/es-modules/Series/Flags/FlagsSeries.js +2 -1
  86. package/assets/js/highcharts/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +3 -10
  87. package/assets/js/highcharts/es-modules/Series/HLC/HLCSeries.js +4 -5
  88. package/assets/js/highcharts/es-modules/Series/MapLine/MapLineSeriesDefaults.js +7 -6
  89. package/assets/js/highcharts/es-modules/Series/MapPoint/MapPointSeriesDefaults.js +17 -11
  90. package/assets/js/highcharts/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +1 -1
  91. package/assets/js/highcharts/es-modules/Series/Networkgraph/ReingoldFruchtermanLayout.js +1 -1
  92. package/assets/js/highcharts/es-modules/Series/OHLC/OHLCSeries.js +3 -5
  93. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeries.js +17 -19
  94. package/assets/js/highcharts/es-modules/Series/Organization/OrganizationSeriesDefaults.js +1 -1
  95. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -3
  96. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -3
  97. package/assets/js/highcharts/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +0 -1
  98. package/assets/js/highcharts/es-modules/Series/Pyramid/PyramidSeriesDefaults.js +3 -3
  99. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeries.js +5 -6
  100. package/assets/js/highcharts/es-modules/Series/Sankey/SankeySeriesDefaults.js +1 -1
  101. package/assets/js/highcharts/es-modules/Series/SeriesOnPointComposition.js +2 -2
  102. package/assets/js/highcharts/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +1 -1
  103. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphLink.js +12 -7
  104. package/assets/js/highcharts/es-modules/Series/Treegraph/TreegraphSeries.js +8 -9
  105. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeries.js +8 -8
  106. package/assets/js/highcharts/es-modules/Series/Treemap/TreemapSeriesDefaults.js +1 -1
  107. package/assets/js/highcharts/es-modules/Series/Variwide/VariwideSeries.js +4 -4
  108. package/assets/js/highcharts/es-modules/Series/Venn/VennSeriesDefaults.js +2 -2
  109. package/assets/js/highcharts/es-modules/Series/Waterfall/WaterfallSeries.js +11 -12
  110. package/assets/js/highcharts/es-modules/Series/XRange/XRangeSeries.js +4 -4
  111. package/assets/js/highcharts/es-modules/Stock/Navigator/Navigator.js +2 -5
  112. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorDefaults.js +11 -0
  113. package/assets/js/highcharts/es-modules/Stock/Navigator/NavigatorSymbols.js +9 -10
  114. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelector.js +162 -187
  115. package/assets/js/highcharts/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +32 -74
  116. package/assets/js/highcharts/es-modules/Stock/Scrollbar/Scrollbar.js +6 -7
  117. package/assets/js/highcharts/es-modules/masters/highcharts-more.src.js +2 -0
  118. package/assets/js/highcharts/highcharts-3d.js +1 -1
  119. package/assets/js/highcharts/highcharts-3d.src.js +1 -1
  120. package/assets/js/highcharts/highcharts-gantt.js +3 -3
  121. package/assets/js/highcharts/highcharts-gantt.src.js +2008 -906
  122. package/assets/js/highcharts/highcharts-more.js +2 -2
  123. package/assets/js/highcharts/highcharts-more.src.js +234 -313
  124. package/assets/js/highcharts/highcharts.js +3 -3
  125. package/assets/js/highcharts/highcharts.src.js +743 -616
  126. package/assets/js/highcharts/highmaps.js +3 -3
  127. package/assets/js/highcharts/highmaps.src.js +862 -673
  128. package/assets/js/highcharts/highstock.js +3 -3
  129. package/assets/js/highcharts/highstock.src.js +1016 -935
  130. package/assets/js/highcharts/indicators/acceleration-bands.js +1 -1
  131. package/assets/js/highcharts/indicators/acceleration-bands.src.js +1 -1
  132. package/assets/js/highcharts/indicators/accumulation-distribution.js +1 -1
  133. package/assets/js/highcharts/indicators/accumulation-distribution.src.js +1 -1
  134. package/assets/js/highcharts/indicators/ao.js +1 -1
  135. package/assets/js/highcharts/indicators/ao.src.js +1 -1
  136. package/assets/js/highcharts/indicators/apo.js +1 -1
  137. package/assets/js/highcharts/indicators/apo.src.js +1 -1
  138. package/assets/js/highcharts/indicators/aroon-oscillator.js +1 -1
  139. package/assets/js/highcharts/indicators/aroon-oscillator.src.js +1 -1
  140. package/assets/js/highcharts/indicators/aroon.js +1 -1
  141. package/assets/js/highcharts/indicators/aroon.src.js +1 -1
  142. package/assets/js/highcharts/indicators/atr.js +1 -1
  143. package/assets/js/highcharts/indicators/atr.src.js +1 -1
  144. package/assets/js/highcharts/indicators/bollinger-bands.js +1 -1
  145. package/assets/js/highcharts/indicators/bollinger-bands.src.js +1 -1
  146. package/assets/js/highcharts/indicators/cci.js +1 -1
  147. package/assets/js/highcharts/indicators/cci.src.js +1 -1
  148. package/assets/js/highcharts/indicators/chaikin.js +1 -1
  149. package/assets/js/highcharts/indicators/chaikin.src.js +1 -1
  150. package/assets/js/highcharts/indicators/cmf.js +1 -1
  151. package/assets/js/highcharts/indicators/cmf.src.js +1 -1
  152. package/assets/js/highcharts/indicators/cmo.js +1 -1
  153. package/assets/js/highcharts/indicators/cmo.src.js +1 -1
  154. package/assets/js/highcharts/indicators/dema.js +1 -1
  155. package/assets/js/highcharts/indicators/dema.src.js +1 -1
  156. package/assets/js/highcharts/indicators/disparity-index.js +1 -1
  157. package/assets/js/highcharts/indicators/disparity-index.src.js +1 -1
  158. package/assets/js/highcharts/indicators/dmi.js +1 -1
  159. package/assets/js/highcharts/indicators/dmi.src.js +1 -1
  160. package/assets/js/highcharts/indicators/dpo.js +1 -1
  161. package/assets/js/highcharts/indicators/dpo.src.js +1 -1
  162. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.js +1 -1
  163. package/assets/js/highcharts/indicators/ichimoku-kinko-hyo.src.js +1 -1
  164. package/assets/js/highcharts/indicators/indicators-all.js +1 -1
  165. package/assets/js/highcharts/indicators/indicators-all.src.js +1 -1
  166. package/assets/js/highcharts/indicators/indicators.js +1 -1
  167. package/assets/js/highcharts/indicators/indicators.src.js +1 -1
  168. package/assets/js/highcharts/indicators/keltner-channels.js +1 -1
  169. package/assets/js/highcharts/indicators/keltner-channels.src.js +1 -1
  170. package/assets/js/highcharts/indicators/klinger.js +1 -1
  171. package/assets/js/highcharts/indicators/klinger.src.js +1 -1
  172. package/assets/js/highcharts/indicators/macd.js +1 -1
  173. package/assets/js/highcharts/indicators/macd.src.js +1 -1
  174. package/assets/js/highcharts/indicators/mfi.js +1 -1
  175. package/assets/js/highcharts/indicators/mfi.src.js +1 -1
  176. package/assets/js/highcharts/indicators/momentum.js +1 -1
  177. package/assets/js/highcharts/indicators/momentum.src.js +1 -1
  178. package/assets/js/highcharts/indicators/natr.js +1 -1
  179. package/assets/js/highcharts/indicators/natr.src.js +1 -1
  180. package/assets/js/highcharts/indicators/obv.js +1 -1
  181. package/assets/js/highcharts/indicators/obv.src.js +1 -1
  182. package/assets/js/highcharts/indicators/pivot-points.js +1 -1
  183. package/assets/js/highcharts/indicators/pivot-points.src.js +1 -1
  184. package/assets/js/highcharts/indicators/ppo.js +1 -1
  185. package/assets/js/highcharts/indicators/ppo.src.js +1 -1
  186. package/assets/js/highcharts/indicators/price-channel.js +1 -1
  187. package/assets/js/highcharts/indicators/price-channel.src.js +1 -1
  188. package/assets/js/highcharts/indicators/price-envelopes.js +1 -1
  189. package/assets/js/highcharts/indicators/price-envelopes.src.js +1 -1
  190. package/assets/js/highcharts/indicators/psar.js +1 -1
  191. package/assets/js/highcharts/indicators/psar.src.js +1 -1
  192. package/assets/js/highcharts/indicators/regressions.js +1 -1
  193. package/assets/js/highcharts/indicators/regressions.src.js +1 -1
  194. package/assets/js/highcharts/indicators/roc.js +1 -1
  195. package/assets/js/highcharts/indicators/roc.src.js +1 -1
  196. package/assets/js/highcharts/indicators/rsi.js +1 -1
  197. package/assets/js/highcharts/indicators/rsi.src.js +1 -1
  198. package/assets/js/highcharts/indicators/slow-stochastic.js +1 -1
  199. package/assets/js/highcharts/indicators/slow-stochastic.src.js +1 -1
  200. package/assets/js/highcharts/indicators/stochastic.js +1 -1
  201. package/assets/js/highcharts/indicators/stochastic.src.js +1 -1
  202. package/assets/js/highcharts/indicators/supertrend.js +1 -1
  203. package/assets/js/highcharts/indicators/supertrend.src.js +1 -1
  204. package/assets/js/highcharts/indicators/tema.js +1 -1
  205. package/assets/js/highcharts/indicators/tema.src.js +1 -1
  206. package/assets/js/highcharts/indicators/trendline.js +1 -1
  207. package/assets/js/highcharts/indicators/trendline.src.js +1 -1
  208. package/assets/js/highcharts/indicators/trix.js +1 -1
  209. package/assets/js/highcharts/indicators/trix.src.js +1 -1
  210. package/assets/js/highcharts/indicators/volume-by-price.js +1 -1
  211. package/assets/js/highcharts/indicators/volume-by-price.src.js +1 -1
  212. package/assets/js/highcharts/indicators/vwap.js +1 -1
  213. package/assets/js/highcharts/indicators/vwap.src.js +1 -1
  214. package/assets/js/highcharts/indicators/williams-r.js +1 -1
  215. package/assets/js/highcharts/indicators/williams-r.src.js +1 -1
  216. package/assets/js/highcharts/indicators/wma.js +1 -1
  217. package/assets/js/highcharts/indicators/wma.src.js +1 -1
  218. package/assets/js/highcharts/indicators/zigzag.js +1 -1
  219. package/assets/js/highcharts/indicators/zigzag.src.js +1 -1
  220. package/assets/js/highcharts/modules/accessibility.js +2 -2
  221. package/assets/js/highcharts/modules/accessibility.src.js +39 -28
  222. package/assets/js/highcharts/modules/annotations-advanced.js +2 -2
  223. package/assets/js/highcharts/modules/annotations-advanced.src.js +46 -31
  224. package/assets/js/highcharts/modules/annotations.js +2 -2
  225. package/assets/js/highcharts/modules/annotations.src.js +12 -15
  226. package/assets/js/highcharts/modules/arc-diagram.js +2 -2
  227. package/assets/js/highcharts/modules/arc-diagram.src.js +258 -233
  228. package/assets/js/highcharts/modules/arrow-symbols.js +1 -1
  229. package/assets/js/highcharts/modules/arrow-symbols.src.js +1 -1
  230. package/assets/js/highcharts/modules/boost-canvas.js +2 -2
  231. package/assets/js/highcharts/modules/boost-canvas.src.js +30 -10
  232. package/assets/js/highcharts/modules/boost.js +2 -2
  233. package/assets/js/highcharts/modules/boost.src.js +30 -10
  234. package/assets/js/highcharts/modules/broken-axis.js +1 -1
  235. package/assets/js/highcharts/modules/broken-axis.src.js +1 -1
  236. package/assets/js/highcharts/modules/bullet.js +1 -1
  237. package/assets/js/highcharts/modules/bullet.src.js +1 -1
  238. package/assets/js/highcharts/modules/coloraxis.js +2 -2
  239. package/assets/js/highcharts/modules/coloraxis.src.js +4 -4
  240. package/assets/js/highcharts/modules/current-date-indicator.js +1 -1
  241. package/assets/js/highcharts/modules/current-date-indicator.src.js +1 -1
  242. package/assets/js/highcharts/modules/cylinder.js +1 -1
  243. package/assets/js/highcharts/modules/cylinder.src.js +1 -1
  244. package/assets/js/highcharts/modules/data-tools.js +2 -2
  245. package/assets/js/highcharts/modules/data-tools.src.js +37 -19
  246. package/assets/js/highcharts/modules/data.js +1 -1
  247. package/assets/js/highcharts/modules/data.src.js +4 -4
  248. package/assets/js/highcharts/modules/datagrouping.js +2 -2
  249. package/assets/js/highcharts/modules/datagrouping.src.js +2 -1
  250. package/assets/js/highcharts/modules/debugger.js +1 -1
  251. package/assets/js/highcharts/modules/debugger.src.js +1 -1
  252. package/assets/js/highcharts/modules/dependency-wheel.js +1 -1
  253. package/assets/js/highcharts/modules/dependency-wheel.src.js +1 -1
  254. package/assets/js/highcharts/modules/dotplot.js +2 -2
  255. package/assets/js/highcharts/modules/dotplot.src.js +41 -30
  256. package/assets/js/highcharts/modules/drag-panes.js +2 -2
  257. package/assets/js/highcharts/modules/drag-panes.src.js +2 -3
  258. package/assets/js/highcharts/modules/draggable-points.js +2 -2
  259. package/assets/js/highcharts/modules/draggable-points.src.js +19 -1
  260. package/assets/js/highcharts/modules/drilldown.js +2 -2
  261. package/assets/js/highcharts/modules/drilldown.src.js +15 -15
  262. package/assets/js/highcharts/modules/dumbbell.js +2 -2
  263. package/assets/js/highcharts/modules/dumbbell.src.js +31 -40
  264. package/assets/js/highcharts/modules/export-data.js +2 -2
  265. package/assets/js/highcharts/modules/export-data.src.js +4 -1
  266. package/assets/js/highcharts/modules/exporting.js +2 -2
  267. package/assets/js/highcharts/modules/exporting.src.js +22 -25
  268. package/assets/js/highcharts/modules/flowmap.js +1 -1
  269. package/assets/js/highcharts/modules/flowmap.src.js +1 -1
  270. package/assets/js/highcharts/modules/full-screen.js +1 -1
  271. package/assets/js/highcharts/modules/full-screen.src.js +1 -1
  272. package/assets/js/highcharts/modules/funnel.js +2 -2
  273. package/assets/js/highcharts/modules/funnel.src.js +4 -4
  274. package/assets/js/highcharts/modules/funnel3d.js +1 -1
  275. package/assets/js/highcharts/modules/funnel3d.src.js +1 -1
  276. package/assets/js/highcharts/modules/gantt.js +2 -2
  277. package/assets/js/highcharts/modules/gantt.src.js +1266 -291
  278. package/assets/js/highcharts/modules/geoheatmap.js +1 -1
  279. package/assets/js/highcharts/modules/geoheatmap.src.js +4 -11
  280. package/assets/js/highcharts/modules/grid-axis.js +2 -2
  281. package/assets/js/highcharts/modules/grid-axis.src.js +2 -2
  282. package/assets/js/highcharts/modules/heatmap.js +2 -2
  283. package/assets/js/highcharts/modules/heatmap.src.js +32 -9
  284. package/assets/js/highcharts/modules/heikinashi.js +1 -1
  285. package/assets/js/highcharts/modules/heikinashi.src.js +1 -1
  286. package/assets/js/highcharts/modules/histogram-bellcurve.js +1 -1
  287. package/assets/js/highcharts/modules/histogram-bellcurve.src.js +1 -1
  288. package/assets/js/highcharts/modules/hollowcandlestick.js +1 -1
  289. package/assets/js/highcharts/modules/hollowcandlestick.src.js +1 -1
  290. package/assets/js/highcharts/modules/item-series.js +1 -1
  291. package/assets/js/highcharts/modules/item-series.src.js +1 -1
  292. package/assets/js/highcharts/modules/lollipop.js +1 -1
  293. package/assets/js/highcharts/modules/lollipop.src.js +1 -1
  294. package/assets/js/highcharts/modules/map.js +2 -2
  295. package/assets/js/highcharts/modules/map.src.js +120 -58
  296. package/assets/js/highcharts/modules/marker-clusters.js +1 -1
  297. package/assets/js/highcharts/modules/marker-clusters.src.js +1 -1
  298. package/assets/js/highcharts/modules/mouse-wheel-zoom.js +1 -1
  299. package/assets/js/highcharts/modules/mouse-wheel-zoom.src.js +1 -1
  300. package/assets/js/highcharts/modules/navigator.js +2 -2
  301. package/assets/js/highcharts/modules/navigator.src.js +28 -24
  302. package/assets/js/highcharts/modules/networkgraph.js +2 -2
  303. package/assets/js/highcharts/modules/networkgraph.src.js +3 -3
  304. package/assets/js/highcharts/modules/no-data-to-display.js +1 -1
  305. package/assets/js/highcharts/modules/no-data-to-display.src.js +1 -1
  306. package/assets/js/highcharts/modules/offline-exporting.js +2 -2
  307. package/assets/js/highcharts/modules/offline-exporting.src.js +43 -32
  308. package/assets/js/highcharts/modules/organization.js +2 -2
  309. package/assets/js/highcharts/modules/organization.src.js +19 -21
  310. package/assets/js/highcharts/modules/overlapping-datalabels.js +1 -1
  311. package/assets/js/highcharts/modules/overlapping-datalabels.src.js +1 -1
  312. package/assets/js/highcharts/modules/parallel-coordinates.js +1 -1
  313. package/assets/js/highcharts/modules/parallel-coordinates.src.js +1 -1
  314. package/assets/js/highcharts/modules/pareto.js +1 -1
  315. package/assets/js/highcharts/modules/pareto.src.js +1 -1
  316. package/assets/js/highcharts/modules/pathfinder.js +1 -1
  317. package/assets/js/highcharts/modules/pathfinder.src.js +1 -1
  318. package/assets/js/highcharts/modules/pattern-fill.js +1 -1
  319. package/assets/js/highcharts/modules/pattern-fill.src.js +1 -1
  320. package/assets/js/highcharts/modules/pictorial.js +1 -1
  321. package/assets/js/highcharts/modules/pictorial.src.js +1 -1
  322. package/assets/js/highcharts/modules/price-indicator.js +1 -1
  323. package/assets/js/highcharts/modules/price-indicator.src.js +1 -1
  324. package/assets/js/highcharts/modules/pyramid3d.js +1 -1
  325. package/assets/js/highcharts/modules/pyramid3d.src.js +1 -1
  326. package/assets/js/highcharts/modules/sankey.js +2 -2
  327. package/assets/js/highcharts/modules/sankey.src.js +7 -8
  328. package/assets/js/highcharts/modules/series-label.js +1 -1
  329. package/assets/js/highcharts/modules/series-label.src.js +1 -1
  330. package/assets/js/highcharts/modules/series-on-point.js +2 -2
  331. package/assets/js/highcharts/modules/series-on-point.src.js +3 -3
  332. package/assets/js/highcharts/modules/solid-gauge.js +1 -1
  333. package/assets/js/highcharts/modules/solid-gauge.src.js +1 -1
  334. package/assets/js/highcharts/modules/sonification.js +2 -2
  335. package/assets/js/highcharts/modules/sonification.src.js +4 -1
  336. package/assets/js/highcharts/modules/static-scale.js +1 -1
  337. package/assets/js/highcharts/modules/static-scale.src.js +1 -1
  338. package/assets/js/highcharts/modules/stock-tools.js +2 -2
  339. package/assets/js/highcharts/modules/stock-tools.src.js +3 -3
  340. package/assets/js/highcharts/modules/stock.js +2 -2
  341. package/assets/js/highcharts/modules/stock.src.js +274 -320
  342. package/assets/js/highcharts/modules/streamgraph.js +1 -1
  343. package/assets/js/highcharts/modules/streamgraph.src.js +1 -1
  344. package/assets/js/highcharts/modules/sunburst.js +2 -2
  345. package/assets/js/highcharts/modules/sunburst.src.js +39 -16
  346. package/assets/js/highcharts/modules/tiledwebmap.js +1 -1
  347. package/assets/js/highcharts/modules/tiledwebmap.src.js +1 -1
  348. package/assets/js/highcharts/modules/tilemap.js +1 -1
  349. package/assets/js/highcharts/modules/tilemap.src.js +1 -1
  350. package/assets/js/highcharts/modules/timeline.js +1 -1
  351. package/assets/js/highcharts/modules/timeline.src.js +1 -1
  352. package/assets/js/highcharts/modules/treegraph.js +2 -2
  353. package/assets/js/highcharts/modules/treegraph.src.js +21 -17
  354. package/assets/js/highcharts/modules/treegrid.js +2 -2
  355. package/assets/js/highcharts/modules/treegrid.src.js +2 -2
  356. package/assets/js/highcharts/modules/treemap.js +2 -2
  357. package/assets/js/highcharts/modules/treemap.src.js +38 -15
  358. package/assets/js/highcharts/modules/variable-pie.js +1 -1
  359. package/assets/js/highcharts/modules/variable-pie.src.js +1 -1
  360. package/assets/js/highcharts/modules/variwide.js +2 -2
  361. package/assets/js/highcharts/modules/variwide.src.js +5 -5
  362. package/assets/js/highcharts/modules/vector.js +1 -1
  363. package/assets/js/highcharts/modules/vector.src.js +1 -1
  364. package/assets/js/highcharts/modules/venn.js +1 -1
  365. package/assets/js/highcharts/modules/venn.src.js +3 -3
  366. package/assets/js/highcharts/modules/windbarb.js +1 -1
  367. package/assets/js/highcharts/modules/windbarb.src.js +1 -1
  368. package/assets/js/highcharts/modules/wordcloud.js +1 -1
  369. package/assets/js/highcharts/modules/wordcloud.src.js +1 -1
  370. package/assets/js/highcharts/modules/xrange.js +2 -2
  371. package/assets/js/highcharts/modules/xrange.src.js +5 -5
  372. package/assets/js/highcharts/standalone-navigator.js +2 -2
  373. package/assets/js/highcharts/standalone-navigator.src.js +769 -638
  374. package/assets/js/highcharts/themes/avocado.js +1 -1
  375. package/assets/js/highcharts/themes/avocado.src.js +1 -1
  376. package/assets/js/highcharts/themes/brand-dark.js +2 -2
  377. package/assets/js/highcharts/themes/brand-dark.src.js +14 -2
  378. package/assets/js/highcharts/themes/brand-light.js +1 -1
  379. package/assets/js/highcharts/themes/brand-light.src.js +1 -1
  380. package/assets/js/highcharts/themes/dark-blue.js +1 -1
  381. package/assets/js/highcharts/themes/dark-blue.src.js +1 -1
  382. package/assets/js/highcharts/themes/dark-green.js +1 -1
  383. package/assets/js/highcharts/themes/dark-green.src.js +1 -1
  384. package/assets/js/highcharts/themes/dark-unica.js +1 -1
  385. package/assets/js/highcharts/themes/dark-unica.src.js +1 -1
  386. package/assets/js/highcharts/themes/gray.js +1 -1
  387. package/assets/js/highcharts/themes/gray.src.js +1 -1
  388. package/assets/js/highcharts/themes/grid-light.js +1 -1
  389. package/assets/js/highcharts/themes/grid-light.src.js +1 -1
  390. package/assets/js/highcharts/themes/grid.js +1 -1
  391. package/assets/js/highcharts/themes/grid.src.js +1 -1
  392. package/assets/js/highcharts/themes/high-contrast-dark.js +1 -1
  393. package/assets/js/highcharts/themes/high-contrast-dark.src.js +1 -1
  394. package/assets/js/highcharts/themes/high-contrast-light.js +1 -1
  395. package/assets/js/highcharts/themes/high-contrast-light.src.js +1 -1
  396. package/assets/js/highcharts/themes/sand-signika.js +1 -1
  397. package/assets/js/highcharts/themes/sand-signika.src.js +1 -1
  398. package/assets/js/highcharts/themes/skies.js +1 -1
  399. package/assets/js/highcharts/themes/skies.src.js +1 -1
  400. package/assets/js/highcharts/themes/sunset.js +1 -1
  401. package/assets/js/highcharts/themes/sunset.src.js +1 -1
  402. package/package.json +1 -1
@@ -15,6 +15,7 @@ import H from '../../Core/Globals.js';
15
15
  import RangeSelectorComposition from './RangeSelectorComposition.js';
16
16
  import SVGElement from '../../Core/Renderer/SVG/SVGElement.js';
17
17
  import U from '../../Core/Utilities.js';
18
+ import OrdinalAxis from '../../Core/Axis/OrdinalAxis.js';
18
19
  const { addEvent, createElement, css, defined, destroyObjectProperties, discardElement, extend, fireEvent, isNumber, merge, objectEach, pad, pick, pInt, splat } = U;
19
20
  /* *
20
21
  *
@@ -80,7 +81,6 @@ class RangeSelector {
80
81
  constructor(chart) {
81
82
  this.buttonOptions = RangeSelector.prototype.defaultButtons;
82
83
  this.initialButtonGroupWidth = 0;
83
- this.chart = chart;
84
84
  this.init(chart);
85
85
  }
86
86
  /* *
@@ -101,7 +101,7 @@ class RangeSelector {
101
101
  clickButton(i, redraw) {
102
102
  const rangeSelector = this, chart = rangeSelector.chart, rangeOptions = rangeSelector.buttonOptions[i], baseAxis = chart.xAxis[0], unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || baseAxis || {}, type = rangeOptions.type, dataGrouping = rangeOptions.dataGrouping;
103
103
  let dataMin = unionExtremes.dataMin, dataMax = unionExtremes.dataMax, newMin, newMax = baseAxis && Math.round(Math.min(baseAxis.max, pick(dataMax, baseAxis.max))), // #1568
104
- baseXAxisOptions, range = rangeOptions._range, rangeMin, minSetting, rangeSetting, ctx, ytdExtremes, addOffsetMin = true;
104
+ baseXAxisOptions, range = rangeOptions._range, rangeMin, ctx, ytdExtremes, addOffsetMin = true;
105
105
  // Chart has no data, base series is removed
106
106
  if (dataMin === null || dataMax === null) {
107
107
  return;
@@ -199,16 +199,20 @@ class RangeSelector {
199
199
  // Update the chart
200
200
  if (!baseAxis) {
201
201
  // Axis not yet instantiated. Temporarily set min and range
202
- // options and remove them on chart load (#4317).
202
+ // options and axes once defined and remove them on
203
+ // chart load (#4317 & #20529).
203
204
  baseXAxisOptions = splat(chart.options.xAxis)[0];
204
- rangeSetting = baseXAxisOptions.range;
205
- baseXAxisOptions.range = range;
206
- minSetting = baseXAxisOptions.min;
207
- baseXAxisOptions.min = rangeMin;
205
+ const axisRangeUpdateEvent = addEvent(chart, 'afterGetAxes', function () {
206
+ const xAxis = chart.xAxis[0];
207
+ xAxis.range = xAxis.options.range = range;
208
+ xAxis.min = xAxis.options.min = rangeMin;
209
+ });
208
210
  addEvent(chart, 'load', function resetMinAndRange() {
211
+ const xAxis = chart.xAxis[0];
209
212
  chart.setFixedRange(rangeOptions._range);
210
- baseXAxisOptions.range = rangeSetting;
211
- baseXAxisOptions.min = minSetting;
213
+ xAxis.options.range = baseXAxisOptions.range;
214
+ xAxis.options.min = baseXAxisOptions.min;
215
+ axisRangeUpdateEvent(); // Remove event
212
216
  });
213
217
  }
214
218
  else {
@@ -282,6 +286,7 @@ class RangeSelector {
282
286
  });
283
287
  }
284
288
  }));
289
+ this.createElements();
285
290
  }
286
291
  /**
287
292
  * Dynamically update the range selector buttons after a new range has been
@@ -291,25 +296,25 @@ class RangeSelector {
291
296
  * @function Highcharts.RangeSelector#updateButtonStates
292
297
  */
293
298
  updateButtonStates() {
294
- const rangeSelector = this, chart = this.chart, dropdown = this.dropdown, baseAxis = chart.xAxis[0], actualRange = Math.round(baseAxis.max - baseAxis.min), hasNoData = !baseAxis.hasVisibleSeries, day = 24 * 36e5, // A single day in milliseconds
299
+ const rangeSelector = this, chart = this.chart, dropdown = this.dropdown, dropdownLabel = this.dropdownLabel, baseAxis = chart.xAxis[0], actualRange = Math.round(baseAxis.max - baseAxis.min), hasNoData = !baseAxis.hasVisibleSeries, day = 24 * 36e5, // A single day in milliseconds
295
300
  unionExtremes = (chart.scroller &&
296
- chart.scroller.getUnionExtremes()) || baseAxis, dataMin = unionExtremes.dataMin, dataMax = unionExtremes.dataMax, ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, chart.time.useUTC), ytdMin = ytdExtremes.min, ytdMax = ytdExtremes.max, selected = rangeSelector.selected, allButtonsEnabled = rangeSelector.options.allButtonsEnabled, buttons = rangeSelector.buttons;
297
- let selectedExists = isNumber(selected), isSelectedTooGreat = false;
301
+ chart.scroller.getUnionExtremes()) || baseAxis, dataMin = unionExtremes.dataMin, dataMax = unionExtremes.dataMax, ytdExtremes = rangeSelector.getYTDExtremes(dataMax, dataMin, chart.time.useUTC), ytdMin = ytdExtremes.min, ytdMax = ytdExtremes.max, selected = rangeSelector.selected, allButtonsEnabled = rangeSelector.options.allButtonsEnabled, buttonStates = new Array(rangeSelector.buttonOptions.length)
302
+ .fill(0), selectedExists = isNumber(selected), buttons = rangeSelector.buttons;
303
+ let isSelectedTooGreat = false, selectedIndex = null;
298
304
  rangeSelector.buttonOptions.forEach((rangeOptions, i) => {
299
- const range = rangeOptions._range, type = rangeOptions.type, count = rangeOptions.count || 1, button = buttons[i], offsetRange = rangeOptions._offsetMax -
305
+ const range = rangeOptions._range, type = rangeOptions.type, count = rangeOptions.count || 1, offsetRange = rangeOptions._offsetMax -
300
306
  rangeOptions._offsetMin, isSelected = i === selected,
301
- // Disable buttons where the range exceeds what is allowed in
307
+ // Disable buttons where the range exceeds what is allowed i;
302
308
  // the current view
303
309
  isTooGreatRange = range >
304
310
  dataMax - dataMin,
305
311
  // Disable buttons where the range is smaller than the minimum
306
312
  // range
307
313
  isTooSmallRange = range < baseAxis.minRange;
308
- let state = 0,
309
314
  // Do not select the YTD button if not explicitly told so
310
- isYTDButNotSelected = false,
315
+ let isYTDButNotSelected = false,
311
316
  // Disable the All button if we're already showing all
312
- isAllButAlreadyShowingAll = false, isSameRange = range === actualRange;
317
+ isSameRange = range === actualRange;
313
318
  if (isSelected && isTooGreatRange) {
314
319
  isSelectedTooGreat = true;
315
320
  }
@@ -318,8 +323,9 @@ class RangeSelector {
318
323
  range &&
319
324
  actualRange < range) {
320
325
  // Handle ordinal ranges
321
- const positions = baseAxis.ordinal.positions;
322
- if (positions[positions.length - 1] - positions[0] > range) {
326
+ const positions = baseAxis.ordinal.positions, prevOrdinalPosition = OrdinalAxis.Additions.findIndexOf(positions, baseAxis.min, true), nextOrdinalPosition = Math.min(OrdinalAxis.Additions.findIndexOf(positions, baseAxis.max, true) + 1, positions.length - 1);
327
+ if (positions[nextOrdinalPosition] -
328
+ positions[prevOrdinalPosition] > range) {
323
329
  isSameRange = true;
324
330
  }
325
331
  }
@@ -339,9 +345,6 @@ class RangeSelector {
339
345
  else if (type === 'all') {
340
346
  isSameRange = (baseAxis.max - baseAxis.min >=
341
347
  dataMax - dataMin);
342
- isAllButAlreadyShowingAll = (!isSelected &&
343
- selectedExists &&
344
- isSameRange);
345
348
  }
346
349
  // The new zoom area happens to match the range for a button - mark
347
350
  // it selected. This happens when scrolling across an ordinal gap.
@@ -351,38 +354,56 @@ class RangeSelector {
351
354
  !(isSelectedTooGreat && type === 'all') &&
352
355
  (isTooGreatRange ||
353
356
  isTooSmallRange ||
354
- isAllButAlreadyShowingAll ||
355
357
  hasNoData));
356
358
  const select = ((isSelectedTooGreat && type === 'all') ||
357
- (isSelected && isSameRange) ||
358
- (isSameRange && !selectedExists && !isYTDButNotSelected) ||
359
+ (isYTDButNotSelected ? false : isSameRange) ||
359
360
  (isSelected && rangeSelector.frozenStates));
360
361
  if (disable) {
361
- state = 3;
362
+ buttonStates[i] = 3;
362
363
  }
363
364
  else if (select) {
364
- selectedExists = true; // Only one button can be selected
365
- state = 2;
365
+ if (!selectedExists || i === selected) {
366
+ selectedIndex = i;
367
+ }
366
368
  }
367
- // If state has changed, update the button
369
+ });
370
+ if (selectedIndex !== null) {
371
+ buttonStates[selectedIndex] = 2;
372
+ rangeSelector.setSelected(selectedIndex);
373
+ }
374
+ else {
375
+ rangeSelector.setSelected();
376
+ if (dropdownLabel) {
377
+ dropdownLabel.setState(0);
378
+ dropdownLabel.attr({
379
+ text: (defaultOptions.lang.rangeSelectorZoom || '') + ' ▾'
380
+ });
381
+ }
382
+ }
383
+ for (let i = 0; i < buttonStates.length; i++) {
384
+ const state = buttonStates[i];
385
+ const button = buttons[i];
368
386
  if (button.state !== state) {
369
387
  button.setState(state);
370
388
  if (dropdown) {
371
- dropdown.options[i + 1].disabled = disable;
389
+ dropdown.options[i + 1].disabled = (state === 3);
372
390
  if (state === 2) {
391
+ if (dropdownLabel) {
392
+ dropdownLabel.setState(2);
393
+ dropdownLabel.attr({
394
+ text: rangeSelector.buttonOptions[i].text + ' ▾'
395
+ });
396
+ }
373
397
  dropdown.selectedIndex = i + 1;
374
398
  }
375
- }
376
- // Reset (#9209)
377
- if (state === 0 && selected === i) {
378
- rangeSelector.setSelected();
379
- }
380
- else if ((state === 2 && !defined(selected)) ||
381
- isSelectedTooGreat) {
382
- rangeSelector.setSelected(i);
399
+ const bbox = dropdownLabel.getBBox();
400
+ css(dropdown, {
401
+ width: `${bbox.width}px`,
402
+ height: `${bbox.height}px`
403
+ });
383
404
  }
384
405
  }
385
- });
406
+ }
386
407
  }
387
408
  /**
388
409
  * Compute and cache the range for an individual button
@@ -580,12 +601,10 @@ class RangeSelector {
580
601
  /**
581
602
  * @private
582
603
  */
583
- function updateExtremes() {
584
- const { maxInput, minInput } = rangeSelector, chartAxis = chart.xAxis[0], unionExtremes = (chart.scroller && chart.scroller.getUnionExtremes()) || chartAxis, dataMin = unionExtremes.dataMin, dataMax = unionExtremes.dataMax;
604
+ function updateExtremes(name) {
605
+ const { maxInput, minInput } = rangeSelector, chartAxis = chart.xAxis[0], unionExtremes = chart.scroller?.getUnionExtremes() || chartAxis, dataMin = unionExtremes.dataMin, dataMax = unionExtremes.dataMax, currentExtreme = chart.xAxis[0].getExtremes()[name];
585
606
  let value = rangeSelector.getInputValue(name);
586
- if (value !== Number(input.getAttribute('data-hc-time-previous')) &&
587
- isNumber(value)) {
588
- input.setAttribute('data-hc-time-previous', value);
607
+ if (isNumber(value) && value !== currentExtreme) {
589
608
  // Validate the extremes. If it goes beyond the data min or
590
609
  // max, use the actual data extreme (#2438).
591
610
  if (isMin && maxInput && isNumber(dataMin)) {
@@ -682,7 +701,7 @@ class RangeSelector {
682
701
  if (input === H.doc.activeElement) { // Only when focused
683
702
  // Update also when no `change` event is triggered, like when
684
703
  // clicking inside the SVG (#4710)
685
- updateExtremes();
704
+ updateExtremes(name);
686
705
  }
687
706
  // #10404 - move hide and blur outside focus
688
707
  rangeSelector.hideInput(name);
@@ -694,7 +713,7 @@ class RangeSelector {
694
713
  input.onchange = () => {
695
714
  // Update extremes and blur input when clicking date input calendar
696
715
  if (!keyDown) {
697
- updateExtremes();
716
+ updateExtremes(name);
698
717
  rangeSelector.hideInput(name);
699
718
  input.blur();
700
719
  }
@@ -702,14 +721,16 @@ class RangeSelector {
702
721
  input.onkeypress = (event) => {
703
722
  // IE does not fire onchange on enter
704
723
  if (event.keyCode === 13) {
705
- updateExtremes();
724
+ updateExtremes(name);
706
725
  }
707
726
  };
708
727
  input.onkeydown = (event) => {
709
728
  keyDown = true;
710
729
  // Arrow keys
711
- if (event.keyCode === 38 || event.keyCode === 40) {
712
- updateExtremes();
730
+ if (event.key === 'ArrowUp' ||
731
+ event.key === 'ArrowDown' ||
732
+ event.key === 'Tab') {
733
+ updateExtremes(name);
713
734
  }
714
735
  };
715
736
  input.onkeyup = () => {
@@ -752,6 +773,42 @@ class RangeSelector {
752
773
  min
753
774
  };
754
775
  }
776
+ createElements() {
777
+ const chart = this.chart, renderer = chart.renderer, container = chart.container, chartOptions = chart.options, options = chartOptions.rangeSelector, inputEnabled = options.inputEnabled, inputsZIndex = pick(chartOptions.chart.style?.zIndex, 0) + 1;
778
+ if (options.enabled === false) {
779
+ return;
780
+ }
781
+ this.group = renderer.g('range-selector-group')
782
+ .attr({
783
+ zIndex: 7
784
+ })
785
+ .add();
786
+ this.div = createElement('div', void 0, {
787
+ position: 'relative',
788
+ height: 0,
789
+ zIndex: inputsZIndex
790
+ });
791
+ if (this.buttonOptions.length) {
792
+ this.renderButtons();
793
+ }
794
+ // First create a wrapper outside the container in order to make
795
+ // the inputs work and make export correct
796
+ if (container.parentNode) {
797
+ container.parentNode.insertBefore(this.div, container);
798
+ }
799
+ if (inputEnabled) {
800
+ // Create the group to keep the inputs
801
+ this.inputGroup = renderer.g('input-group').add(this.group);
802
+ const minElems = this.drawInput('min');
803
+ this.minDateBox = minElems.dateBox;
804
+ this.minLabel = minElems.label;
805
+ this.minInput = minElems.input;
806
+ const maxElems = this.drawInput('max');
807
+ this.maxDateBox = maxElems.dateBox;
808
+ this.maxLabel = maxElems.label;
809
+ this.maxInput = maxElems.input;
810
+ }
811
+ }
755
812
  /**
756
813
  * Render the range selector including the buttons and the inputs. The first
757
814
  * time render is called, the elements are created and positioned. On
@@ -765,46 +822,12 @@ class RangeSelector {
765
822
  * X axis maximum
766
823
  */
767
824
  render(min, max) {
768
- const chart = this.chart, renderer = chart.renderer, container = chart.container, chartOptions = chart.options, options = chartOptions.rangeSelector,
825
+ const chart = this.chart, chartOptions = chart.options, options = chartOptions.rangeSelector,
769
826
  // Place inputs above the container
770
- inputsZIndex = pick(chartOptions.chart.style &&
771
- chartOptions.chart.style.zIndex, 0) + 1, inputEnabled = options.inputEnabled, rendered = this.rendered;
827
+ inputEnabled = options.inputEnabled;
772
828
  if (options.enabled === false) {
773
829
  return;
774
830
  }
775
- // Create the elements
776
- if (!rendered) {
777
- this.group = renderer.g('range-selector-group')
778
- .attr({
779
- zIndex: 7
780
- })
781
- .add();
782
- this.div = createElement('div', void 0, {
783
- position: 'relative',
784
- height: 0,
785
- zIndex: inputsZIndex
786
- });
787
- if (this.buttonOptions.length) {
788
- this.renderButtons();
789
- }
790
- // First create a wrapper outside the container in order to make
791
- // the inputs work and make export correct
792
- if (container.parentNode) {
793
- container.parentNode.insertBefore(this.div, container);
794
- }
795
- if (inputEnabled) {
796
- // Create the group to keep the inputs
797
- this.inputGroup = renderer.g('input-group').add(this.group);
798
- const minElems = this.drawInput('min');
799
- this.minDateBox = minElems.dateBox;
800
- this.minLabel = minElems.label;
801
- this.minInput = minElems.input;
802
- const maxElems = this.drawInput('max');
803
- this.maxDateBox = maxElems.dateBox;
804
- this.maxLabel = maxElems.label;
805
- this.maxInput = maxElems.input;
806
- }
807
- }
808
831
  if (inputEnabled) {
809
832
  // Set or reset the input values
810
833
  this.setInputValue('min', min);
@@ -836,7 +859,7 @@ class RangeSelector {
836
859
  }
837
860
  }
838
861
  this.alignElements();
839
- this.rendered = true;
862
+ this.updateButtonStates();
840
863
  }
841
864
  /**
842
865
  * Render the range buttons. This only runs the first time, later the
@@ -860,33 +883,39 @@ class RangeSelector {
860
883
  this.buttonGroup = renderer.g('range-selector-buttons').add(this.group);
861
884
  const dropdown = this.dropdown = createElement('select', void 0, {
862
885
  position: 'absolute',
863
- width: '1px',
864
- height: '1px',
865
886
  padding: 0,
866
887
  border: 0,
867
- top: '-9999em',
868
888
  cursor: 'pointer',
869
889
  opacity: 0.0001
870
890
  }, this.div);
891
+ // Create a label for dropdown select element
892
+ const userButtonTheme = chart.userOptions.rangeSelector?.buttonTheme;
893
+ this.dropdownLabel = renderer.button('', 0, 0, () => { }, merge(buttonTheme, {
894
+ 'stroke-width': pick(buttonTheme['stroke-width'], 0),
895
+ width: 'auto',
896
+ paddingLeft: pick(options.buttonTheme.paddingLeft, userButtonTheme?.padding, 8),
897
+ paddingRight: pick(options.buttonTheme.paddingRight, userButtonTheme?.padding, 8)
898
+ }), states && states.hover, states && states.select, states && states.disabled)
899
+ .hide()
900
+ .add(this.group);
871
901
  // Prevent page zoom on iPhone
872
902
  addEvent(dropdown, 'touchstart', () => {
873
903
  dropdown.style.fontSize = '16px';
874
904
  });
875
905
  // Forward events from select to button
876
- [
877
- [H.isMS ? 'mouseover' : 'mouseenter'],
878
- [H.isMS ? 'mouseout' : 'mouseleave'],
879
- ['change', 'click']
880
- ].forEach(([from, to]) => {
881
- addEvent(dropdown, from, () => {
882
- const button = buttons[this.currentButtonIndex()];
883
- if (button) {
884
- fireEvent(button.element, to || from);
885
- }
886
- });
906
+ const mouseOver = H.isMS ? 'mouseover' : 'mouseenter', mouseOut = H.isMS ? 'mouseout' : 'mouseleave';
907
+ addEvent(dropdown, mouseOver, () => {
908
+ fireEvent(this.dropdownLabel.element, mouseOver);
909
+ });
910
+ addEvent(dropdown, mouseOut, () => {
911
+ fireEvent(this.dropdownLabel.element, mouseOut);
912
+ });
913
+ addEvent(dropdown, 'change', () => {
914
+ const button = this.buttons[dropdown.selectedIndex - 1];
915
+ fireEvent(button.element, 'click');
887
916
  });
888
917
  this.zoomText = renderer
889
- .label((lang && lang.rangeSelectorZoom) || '', 0)
918
+ .label(lang.rangeSelectorZoom || '', 0)
890
919
  .attr({
891
920
  padding: options.buttonTheme.padding,
892
921
  height: options.buttonTheme.height,
@@ -978,10 +1007,13 @@ class RangeSelector {
978
1007
  this.initialButtonGroupWidth = width;
979
1008
  }
980
1009
  plotLeft -= chart.spacing[3];
981
- this.updateButtonStates();
982
1010
  // Detect collision between button group and exporting
983
1011
  const xOffsetForExportButton = getXOffsetForExportButton(buttonGroup, buttonPosition);
984
1012
  this.alignButtonGroup(xOffsetForExportButton);
1013
+ if (this.buttonGroup?.translateY) {
1014
+ this.dropdownLabel
1015
+ .attr({ y: this.buttonGroup.translateY });
1016
+ }
985
1017
  // Skip animation
986
1018
  group.placed = buttonGroup.placed = chart.hasLoaded;
987
1019
  }
@@ -1151,7 +1183,7 @@ class RangeSelector {
1151
1183
  return buttonWidth;
1152
1184
  };
1153
1185
  const groupsOverlap = (buttonGroupWidth) => {
1154
- if (inputGroup && buttonGroup) {
1186
+ if (inputGroup?.alignOptions && buttonGroup) {
1155
1187
  const inputGroupX = (inputGroup.alignAttr.translateX +
1156
1188
  inputGroup.alignOptions.x -
1157
1189
  xOffsetForExportButton +
@@ -1159,7 +1191,7 @@ class RangeSelector {
1159
1191
  inputGroup.getBBox().x +
1160
1192
  // 2px padding to not overlap input and label
1161
1193
  2);
1162
- const inputGroupWidth = inputGroup.alignOptions.width;
1194
+ const inputGroupWidth = inputGroup.alignOptions.width || 0;
1163
1195
  const buttonGroupX = buttonGroup.alignAttr.translateX +
1164
1196
  buttonGroup.getBBox().x;
1165
1197
  return (buttonGroupX + buttonGroupWidth > inputGroupX) &&
@@ -1183,7 +1215,7 @@ class RangeSelector {
1183
1215
  };
1184
1216
  if (buttonGroup) {
1185
1217
  if (dropdown === 'always') {
1186
- this.collapseButtons(xOffsetForExportButton);
1218
+ this.collapseButtons();
1187
1219
  if (groupsOverlap(maxButtonWidth())) {
1188
1220
  // Move the inputs down if there is still a collision
1189
1221
  // after collapsing the buttons
@@ -1201,7 +1233,7 @@ class RangeSelector {
1201
1233
  // 20 is minimal spacing between elements
1202
1234
  groupsOverlap(this.initialButtonGroupWidth + 20)) {
1203
1235
  if (dropdown === 'responsive') {
1204
- this.collapseButtons(xOffsetForExportButton);
1236
+ this.collapseButtons();
1205
1237
  if (groupsOverlap(maxButtonWidth())) {
1206
1238
  moveInputsDown();
1207
1239
  }
@@ -1216,7 +1248,7 @@ class RangeSelector {
1216
1248
  }
1217
1249
  else if (buttonGroup && dropdown === 'responsive') {
1218
1250
  if (this.initialButtonGroupWidth > chart.plotWidth) {
1219
- this.collapseButtons(xOffsetForExportButton);
1251
+ this.collapseButtons();
1220
1252
  }
1221
1253
  else {
1222
1254
  this.expandButtons();
@@ -1224,54 +1256,20 @@ class RangeSelector {
1224
1256
  }
1225
1257
  }
1226
1258
  /**
1227
- * Collapse the buttons and put the select element on top.
1259
+ * Collapse the buttons and show the select element.
1228
1260
  *
1229
1261
  * @private
1230
1262
  * @function Highcharts.RangeSelector#collapseButtons
1231
1263
  * @param {number} xOffsetForExportButton
1232
1264
  */
1233
- collapseButtons(xOffsetForExportButton) {
1234
- const { buttons, buttonOptions, chart, dropdown, options, zoomText } = this;
1235
- // If the buttons are already collapsed do nothing.
1265
+ collapseButtons() {
1266
+ const { buttons, zoomText } = this;
1236
1267
  if (this.isCollapsed === true) {
1237
1268
  return;
1238
1269
  }
1239
1270
  this.isCollapsed = true;
1240
- const userButtonTheme = (chart.userOptions.rangeSelector &&
1241
- chart.userOptions.rangeSelector.buttonTheme) || {};
1242
- const getAttribs = (text) => ({
1243
- text: text ? `${text} ▾` : '▾',
1244
- width: 'auto',
1245
- paddingLeft: pick(options.buttonTheme.paddingLeft, userButtonTheme.padding, 8),
1246
- paddingRight: pick(options.buttonTheme.paddingRight, userButtonTheme.padding, 8)
1247
- });
1248
- if (zoomText) {
1249
- zoomText.hide();
1250
- }
1251
- let hasActiveButton = false;
1252
- buttonOptions.forEach((rangeOptions, i) => {
1253
- const button = buttons[i];
1254
- if (button.state !== 2) {
1255
- button.hide();
1256
- }
1257
- else {
1258
- button.show();
1259
- button.attr(getAttribs(rangeOptions.text));
1260
- hasActiveButton = true;
1261
- }
1262
- });
1263
- if (!hasActiveButton) {
1264
- if (dropdown) {
1265
- dropdown.selectedIndex = 0;
1266
- }
1267
- buttons[0].show();
1268
- buttons[0].attr(getAttribs(this.zoomText && this.zoomText.textStr));
1269
- }
1270
- const { align } = options.buttonPosition;
1271
- this.positionButtons();
1272
- if (align === 'right' || align === 'center') {
1273
- this.alignButtonGroup(xOffsetForExportButton, buttons[this.currentButtonIndex()].getBBox().width);
1274
- }
1271
+ zoomText.hide();
1272
+ buttons.forEach((button) => void button.hide());
1275
1273
  this.showDropdown();
1276
1274
  }
1277
1275
  /**
@@ -1281,44 +1279,16 @@ class RangeSelector {
1281
1279
  * @function Highcharts.RangeSelector#expandButtons
1282
1280
  */
1283
1281
  expandButtons() {
1284
- const { buttons, buttonOptions, options, zoomText } = this;
1285
- this.hideDropdown();
1286
- // If buttons are already not collapsed, do nothing.
1282
+ const { buttons, zoomText } = this;
1287
1283
  if (this.isCollapsed === false) {
1288
1284
  return;
1289
1285
  }
1290
1286
  this.isCollapsed = false;
1291
- if (zoomText) {
1292
- zoomText.show();
1293
- }
1294
- buttonOptions.forEach((rangeOptions, i) => {
1295
- const button = buttons[i];
1296
- button.show();
1297
- button.attr({
1298
- text: rangeOptions.text,
1299
- width: options.buttonTheme.width || 28,
1300
- paddingLeft: pick(options.buttonTheme.paddingLeft, 'unset'),
1301
- paddingRight: pick(options.buttonTheme.paddingRight, 'unset')
1302
- });
1303
- if (button.state < 2) {
1304
- button.setState(0);
1305
- }
1306
- });
1287
+ this.hideDropdown();
1288
+ zoomText.show();
1289
+ buttons.forEach((button) => void button.show());
1307
1290
  this.positionButtons();
1308
1291
  }
1309
- /**
1310
- * Get the index of the visible button when the buttons are collapsed.
1311
- *
1312
- * @private
1313
- * @function Highcharts.RangeSelector#currentButtonIndex
1314
- */
1315
- currentButtonIndex() {
1316
- const { dropdown } = this;
1317
- if (dropdown && dropdown.selectedIndex > 0) {
1318
- return dropdown.selectedIndex - 1;
1319
- }
1320
- return 0;
1321
- }
1322
1292
  /**
1323
1293
  * Position the select element on top of the button.
1324
1294
  *
@@ -1326,14 +1296,16 @@ class RangeSelector {
1326
1296
  * @function Highcharts.RangeSelector#showDropdown
1327
1297
  */
1328
1298
  showDropdown() {
1329
- const { buttonGroup, buttons, chart, dropdown } = this;
1299
+ const { buttonGroup, chart, dropdownLabel, dropdown } = this;
1330
1300
  if (buttonGroup && dropdown) {
1331
- const { translateX = 0, translateY = 0 } = buttonGroup, bBox = buttons[this.currentButtonIndex()].getBBox();
1301
+ const { translateX = 0, translateY = 0 } = buttonGroup, left = chart.plotLeft + translateX, top = translateY;
1302
+ dropdownLabel
1303
+ .attr({ x: left, y: top })
1304
+ .show();
1332
1305
  css(dropdown, {
1333
- left: (chart.plotLeft + translateX) + 'px',
1334
- top: (translateY + 0.5) + 'px',
1335
- width: bBox.width + 'px',
1336
- height: bBox.height + 'px'
1306
+ left: left + 'px',
1307
+ top: top + 'px',
1308
+ visibility: 'inherit'
1337
1309
  });
1338
1310
  this.hasVisibleDropdown = true;
1339
1311
  }
@@ -1345,8 +1317,9 @@ class RangeSelector {
1345
1317
  hideDropdown() {
1346
1318
  const { dropdown } = this;
1347
1319
  if (dropdown) {
1320
+ this.dropdownLabel.hide();
1348
1321
  css(dropdown, {
1349
- top: '-9999em',
1322
+ visibility: 'hidden',
1350
1323
  width: '1px',
1351
1324
  height: '1px'
1352
1325
  });
@@ -1401,12 +1374,14 @@ class RangeSelector {
1401
1374
  * @function Highcharts.RangeSelector#update
1402
1375
  * @param {Highcharts.RangeSelectorOptions} options
1403
1376
  */
1404
- update(options) {
1377
+ update(options, redraw = true) {
1405
1378
  const chart = this.chart;
1406
1379
  merge(true, chart.options.rangeSelector, options);
1407
1380
  this.destroy();
1408
1381
  this.init(chart);
1409
- this.render();
1382
+ if (redraw) {
1383
+ this.render();
1384
+ }
1410
1385
  }
1411
1386
  /**
1412
1387
  * Destroys allocated elements.