highcharts 11.3.0 → 11.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (773) hide show
  1. package/README.md +1 -1
  2. package/bower.json +1 -1
  3. package/css/annotations/popup.css +27 -19
  4. package/css/stocktools/gui.css +19 -7
  5. package/es-modules/Accessibility/A11yI18n.js +4 -6
  6. package/es-modules/Accessibility/Accessibility.js +8 -6
  7. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +11 -6
  8. package/es-modules/Accessibility/Components/LegendComponent.js +4 -4
  9. package/es-modules/Accessibility/Components/MenuComponent.js +3 -6
  10. package/es-modules/Accessibility/Components/NavigatorComponent.js +6 -3
  11. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +4 -7
  12. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +18 -3
  13. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +5 -3
  14. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +4 -4
  15. package/es-modules/Accessibility/FocusBorder.js +5 -5
  16. package/es-modules/Accessibility/HighContrastMode.js +22 -13
  17. package/es-modules/Accessibility/HighContrastTheme.js +2 -6
  18. package/es-modules/Accessibility/KeyboardNavigation.js +17 -8
  19. package/es-modules/Accessibility/Options/A11yDefaults.js +11 -1
  20. package/es-modules/Accessibility/ProxyElement.js +4 -4
  21. package/es-modules/Accessibility/ProxyProvider.js +8 -2
  22. package/es-modules/Accessibility/Utils/DOMElementProvider.js +8 -0
  23. package/es-modules/Accessibility/Utils/EventProvider.js +9 -0
  24. package/es-modules/Core/Animation/Fx.js +3 -3
  25. package/es-modules/Core/Axis/Axis.js +43 -97
  26. package/es-modules/Core/Axis/Axis3DComposition.js +5 -5
  27. package/es-modules/Core/Axis/Axis3DDefaults.js +1 -1
  28. package/es-modules/Core/Axis/AxisDefaults.js +18 -7
  29. package/es-modules/Core/Axis/BrokenAxis.js +4 -6
  30. package/es-modules/Core/Axis/Color/ColorAxis.js +2 -1
  31. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -5
  32. package/es-modules/Core/Axis/DateTimeAxis.js +3 -5
  33. package/es-modules/Core/Axis/GridAxis.js +7 -7
  34. package/es-modules/Core/Axis/LogarithmicAxis.js +2 -4
  35. package/es-modules/Core/Axis/NavigatorAxisComposition.js +26 -22
  36. package/es-modules/Core/Axis/OrdinalAxis.js +97 -53
  37. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
  38. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +4 -5
  39. package/es-modules/Core/Axis/RadialAxis.js +5 -5
  40. package/es-modules/Core/Axis/ScrollbarAxis.js +2 -2
  41. package/es-modules/Core/Axis/Stacking/StackItem.js +8 -4
  42. package/es-modules/Core/Axis/Stacking/StackingAxis.js +3 -5
  43. package/es-modules/Core/Axis/Tick.js +16 -7
  44. package/es-modules/Core/Axis/Tick3DComposition.js +2 -2
  45. package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +4 -8
  46. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -6
  47. package/es-modules/Core/Axis/WaterfallAxis.js +3 -3
  48. package/es-modules/Core/Axis/ZAxis.js +6 -11
  49. package/es-modules/Core/Chart/Chart.js +201 -176
  50. package/es-modules/Core/Chart/Chart3D.js +1 -1
  51. package/es-modules/Core/Chart/ChartDefaults.js +7 -0
  52. package/es-modules/Core/Chart/GanttChart.js +2 -2
  53. package/es-modules/Core/Chart/MapChart.js +12 -2
  54. package/es-modules/Core/Chart/StockChart.js +12 -11
  55. package/es-modules/Core/Color/Color.js +3 -3
  56. package/es-modules/Core/Color/Palettes.js +2 -2
  57. package/es-modules/Core/Defaults.js +18 -15
  58. package/es-modules/Core/Geometry/CircleUtilities.js +3 -3
  59. package/es-modules/Core/Globals.js +2 -2
  60. package/es-modules/Core/HttpUtilities.js +4 -4
  61. package/es-modules/Core/Legend/Legend.js +6 -6
  62. package/es-modules/Core/MSPointer.js +7 -7
  63. package/es-modules/Core/Pointer.js +230 -245
  64. package/es-modules/Core/Renderer/HTML/AST.js +1 -1
  65. package/es-modules/Core/Renderer/HTML/HTMLElement.js +213 -26
  66. package/es-modules/Core/Renderer/RendererUtilities.js +1 -1
  67. package/es-modules/Core/Renderer/SVG/SVGElement.js +85 -52
  68. package/es-modules/Core/Renderer/SVG/SVGLabel.js +14 -11
  69. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +17 -14
  70. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +8 -7
  71. package/es-modules/Core/Renderer/SVG/Symbols.js +1 -1
  72. package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
  73. package/es-modules/Core/Responsive.js +5 -6
  74. package/es-modules/Core/Series/DataLabel.js +70 -90
  75. package/es-modules/Core/Series/DataSeriesComposition.js +1 -1
  76. package/es-modules/Core/Series/DataSeriesConverter.js +2 -2
  77. package/es-modules/Core/Series/Point.js +48 -40
  78. package/es-modules/Core/Series/Series.js +61 -51
  79. package/es-modules/Core/Series/Series3D.js +2 -2
  80. package/es-modules/Core/Series/SeriesRegistry.js +10 -2
  81. package/es-modules/Core/Templating.js +1 -1
  82. package/es-modules/Core/Time.js +12 -7
  83. package/es-modules/Core/Tooltip.js +19 -17
  84. package/es-modules/Core/Utilities.js +54 -26
  85. package/es-modules/Data/Connectors/CSVConnector.js +2 -2
  86. package/es-modules/Data/Connectors/DataConnector.js +4 -2
  87. package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
  88. package/es-modules/Data/Connectors/HTMLTableConnector.js +2 -2
  89. package/es-modules/Data/Connectors/JSONConnector.js +3 -5
  90. package/es-modules/Data/Converters/CSVConverter.js +1 -3
  91. package/es-modules/Data/Converters/DataConverter.js +8 -2
  92. package/es-modules/Data/Converters/HTMLTableConverter.js +1 -3
  93. package/es-modules/Data/Converters/JSONConverter.js +1 -0
  94. package/es-modules/Data/DataTable.js +1 -2
  95. package/es-modules/Data/Formula/FormulaProcessor.js +4 -2
  96. package/es-modules/Data/Modifiers/DataModifier.js +15 -3
  97. package/es-modules/Extensions/Annotations/Annotation.js +6 -7
  98. package/es-modules/Extensions/Annotations/AnnotationChart.js +4 -5
  99. package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
  100. package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
  101. package/es-modules/Extensions/Annotations/ControlTarget.js +1 -1
  102. package/es-modules/Extensions/Annotations/Controllables/Controllable.js +7 -3
  103. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +3 -3
  104. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +8 -9
  105. package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +3 -4
  106. package/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
  107. package/es-modules/Extensions/Annotations/NavigationBindings.js +29 -18
  108. package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +6 -6
  109. package/es-modules/Extensions/Annotations/Popup/Popup.js +1 -1
  110. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +10 -6
  111. package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +2 -2
  112. package/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +31 -31
  113. package/es-modules/Extensions/Annotations/Popup/PopupTabs.js +1 -1
  114. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +14 -11
  115. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +1 -1
  116. package/es-modules/Extensions/Annotations/Types/Measure.js +1 -1
  117. package/es-modules/Extensions/ArrowSymbols.js +7 -13
  118. package/es-modules/Extensions/Boost/Boost.js +39 -7
  119. package/es-modules/Extensions/Boost/BoostChart.js +4 -4
  120. package/es-modules/Extensions/Boost/BoostSeries.js +58 -13
  121. package/es-modules/Extensions/Boost/WGLRenderer.js +3 -3
  122. package/es-modules/Extensions/Boost/WGLVertexBuffer.js +1 -1
  123. package/es-modules/Extensions/BoostCanvas.js +5 -4
  124. package/es-modules/Extensions/BorderRadius.js +5 -4
  125. package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +9 -9
  126. package/es-modules/Extensions/CurrentDateIndication.js +1 -1
  127. package/es-modules/Extensions/Data.js +11 -11
  128. package/es-modules/Extensions/DataGrouping/DataGrouping.js +1 -1
  129. package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +8 -9
  130. package/es-modules/Extensions/DataGrouping/DataGroupingDefaults.js +1 -1
  131. package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +6 -7
  132. package/es-modules/Extensions/Debugger/Debugger.js +1 -1
  133. package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
  134. package/es-modules/Extensions/DragPanes/AxisResizer.js +13 -16
  135. package/es-modules/Extensions/DragPanes/DragPanes.js +2 -4
  136. package/es-modules/Extensions/DraggablePoints/DragDropDefaults.js +2 -1
  137. package/es-modules/Extensions/DraggablePoints/DragDropUtilities.js +1 -1
  138. package/es-modules/Extensions/DraggablePoints/DraggableChart.js +4 -4
  139. package/es-modules/Extensions/DraggablePoints/DraggablePoints.js +8 -9
  140. package/es-modules/Extensions/Drilldown/Drilldown.js +11 -9
  141. package/es-modules/Extensions/Drilldown/DrilldownSeries.js +5 -6
  142. package/es-modules/Extensions/ExportData/ExportData.js +27 -18
  143. package/es-modules/Extensions/Exporting/Exporting.js +25 -20
  144. package/es-modules/Extensions/Exporting/ExportingDefaults.js +1 -1
  145. package/es-modules/Extensions/Exporting/Fullscreen.js +5 -10
  146. package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +26 -21
  147. package/es-modules/Extensions/MarkerClusters/MarkerClusterSymbols.js +2 -12
  148. package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +3 -3
  149. package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +51 -161
  150. package/es-modules/Extensions/NoDataToDisplay/NoDataToDisplay.js +3 -5
  151. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +5 -6
  152. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  153. package/es-modules/Extensions/OverlappingDataLabels.js +21 -49
  154. package/es-modules/Extensions/Pane/PaneComposition.js +3 -5
  155. package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -4
  156. package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +5 -6
  157. package/es-modules/Extensions/ParallelCoordinates/ParallelSeries.js +1 -1
  158. package/es-modules/Extensions/PatternFill.js +19 -22
  159. package/es-modules/Extensions/PriceIndication.js +1 -1
  160. package/es-modules/Extensions/ScrollablePlotArea.js +218 -292
  161. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +26 -18
  162. package/es-modules/Extensions/Sonification/Options.js +1 -0
  163. package/es-modules/Extensions/Sonification/SonificationSpeaker.js +2 -2
  164. package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
  165. package/es-modules/Extensions/StaticScale.js +3 -5
  166. package/es-modules/Gantt/Legacy.js +1 -1
  167. package/es-modules/Gantt/Pathfinder.js +2 -2
  168. package/es-modules/Gantt/PathfinderComposition.js +3 -5
  169. package/es-modules/Gantt/Tree.js +3 -3
  170. package/es-modules/Maps/GeoJSONComposition.js +20 -13
  171. package/es-modules/Maps/MapNavigation.js +2 -2
  172. package/es-modules/Maps/MapPointer.js +3 -19
  173. package/es-modules/Maps/MapSymbols.js +3 -9
  174. package/es-modules/Maps/MapView.js +134 -74
  175. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +5 -4
  176. package/es-modules/Series/Area/AreaSeries.js +2 -4
  177. package/es-modules/Series/Area3D/Area3DSeries.js +1 -1
  178. package/es-modules/Series/AreaRange/AreaRangePoint.js +2 -2
  179. package/es-modules/Series/AreaRange/AreaRangeSeries.js +2 -3
  180. package/es-modules/Series/AreaSpline/AreaSplineSeries.js +1 -1
  181. package/es-modules/Series/Bar/BarSeries.js +1 -1
  182. package/es-modules/Series/Bellcurve/BellcurveSeries.js +1 -1
  183. package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +4 -0
  184. package/es-modules/Series/Bubble/BubbleLegendComposition.js +1 -1
  185. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +2 -2
  186. package/es-modules/Series/Bubble/BubbleLegendItem.js +3 -3
  187. package/es-modules/Series/Bubble/BubbleSeries.js +1 -1
  188. package/es-modules/Series/Bullet/BulletSeriesDefaults.js +2 -2
  189. package/es-modules/Series/Candlestick/CandlestickSeries.js +2 -2
  190. package/es-modules/Series/Candlestick/CandlestickSeriesDefaults.js +1 -5
  191. package/es-modules/Series/ColorMapComposition.js +1 -1
  192. package/es-modules/Series/Column/ColumnDataLabel.js +2 -2
  193. package/es-modules/Series/Column/ColumnSeries.js +20 -22
  194. package/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -1
  195. package/es-modules/Series/Column3D/Column3DComposition.js +1 -1
  196. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +2 -1
  197. package/es-modules/Series/Cylinder/CylinderComposition.js +9 -9
  198. package/es-modules/Series/DataModifyComposition.js +5 -5
  199. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +3 -2
  200. package/es-modules/Series/DependencyWheel/DependencyWheelSeriesDefaults.js +1 -1
  201. package/es-modules/Series/DragNodesComposition.js +7 -7
  202. package/es-modules/Series/DrawPointUtilities.js +0 -2
  203. package/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +1 -1
  204. package/es-modules/Series/Funnel/FunnelSeries.js +1 -1
  205. package/es-modules/Series/Funnel3D/Funnel3DComposition.js +6 -6
  206. package/es-modules/Series/Funnel3D/Funnel3DSeriesDefaults.js +2 -2
  207. package/es-modules/Series/Funnel3D/SVGElement3DFunnel.js +1 -1
  208. package/es-modules/Series/Gantt/GanttSeries.js +0 -1
  209. package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +5 -5
  210. package/es-modules/Series/GraphLayoutComposition.js +1 -1
  211. package/es-modules/Series/Heatmap/HeatmapSeries.js +2 -2
  212. package/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -1
  213. package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
  214. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -3
  215. package/es-modules/Series/HeikinAshi/HeikinAshiSeriesDefaults.js +1 -1
  216. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +2 -2
  217. package/es-modules/Series/Item/ItemSeries.js +1 -1
  218. package/es-modules/Series/Line/LineSeries.js +1 -1
  219. package/es-modules/Series/Lollipop/LollipopSeries.js +3 -1
  220. package/es-modules/Series/Map/MapPoint.js +5 -1
  221. package/es-modules/Series/Map/MapSeries.js +32 -7
  222. package/es-modules/Series/Map/MapSeriesDefaults.js +5 -3
  223. package/es-modules/Series/Networkgraph/EulerIntegration.js +5 -5
  224. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -4
  225. package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +5 -5
  226. package/es-modules/Series/Networkgraph/QuadTree.js +1 -1
  227. package/es-modules/Series/Networkgraph/QuadTreeNode.js +1 -1
  228. package/es-modules/Series/Networkgraph/VerletIntegration.js +9 -9
  229. package/es-modules/Series/NodesComposition.js +1 -1
  230. package/es-modules/Series/OHLC/OHLCSeries.js +1 -1
  231. package/es-modules/Series/OHLC/OHLCSeriesDefaults.js +1 -1
  232. package/es-modules/Series/OnSeriesComposition.js +1 -1
  233. package/es-modules/Series/Organization/OrganizationPoint.js +1 -1
  234. package/es-modules/Series/Organization/OrganizationSeries.js +22 -10
  235. package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +15 -2
  236. package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -5
  237. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
  238. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +6 -10
  239. package/es-modules/Series/Pictorial/PictorialSeries.js +2 -2
  240. package/es-modules/Series/Pie/PieDataLabel.js +2 -2
  241. package/es-modules/Series/Pie/PiePoint.js +1 -1
  242. package/es-modules/Series/Pie/PieSeries.js +10 -1
  243. package/es-modules/Series/Pie/PieSeriesDefaults.js +1 -1
  244. package/es-modules/Series/Pie3D/Pie3DSeries.js +2 -2
  245. package/es-modules/Series/PolarComposition.js +22 -20
  246. package/es-modules/Series/Sankey/SankeyColumnComposition.js +1 -1
  247. package/es-modules/Series/Sankey/SankeySeries.js +8 -8
  248. package/es-modules/Series/Sankey/SankeySeriesDefaults.js +57 -13
  249. package/es-modules/Series/SeriesOnPointComposition.js +3 -3
  250. package/es-modules/Series/Spline/SplineSeries.js +1 -1
  251. package/es-modules/Series/Sunburst/SunburstPoint.js +1 -1
  252. package/es-modules/Series/Sunburst/SunburstSeries.js +2 -7
  253. package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +3 -3
  254. package/es-modules/Series/Sunburst/SunburstUtilities.js +1 -1
  255. package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +23 -25
  256. package/es-modules/Series/Tilemap/TilemapSeries.js +2 -2
  257. package/es-modules/Series/Timeline/TimelineSeries.js +2 -2
  258. package/es-modules/Series/TreeUtilities.js +23 -1
  259. package/es-modules/Series/Treegraph/TreegraphLayout.js +7 -11
  260. package/es-modules/Series/Treegraph/TreegraphPoint.js +1 -0
  261. package/es-modules/Series/Treegraph/TreegraphSeries.js +8 -8
  262. package/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js +39 -2
  263. package/es-modules/Series/Treemap/TreemapSeries.js +4 -2
  264. package/es-modules/Series/Treemap/TreemapUtilities.js +0 -7
  265. package/es-modules/Series/Variwide/VariwideComposition.js +6 -2
  266. package/es-modules/Series/Variwide/VariwideSeries.js +1 -1
  267. package/es-modules/Series/Venn/VennSeries.js +4 -4
  268. package/es-modules/Series/Venn/VennUtils.js +5 -6
  269. package/es-modules/Series/Waterfall/WaterfallSeriesDefaults.js +1 -1
  270. package/es-modules/Series/Windbarb/WindbarbSeries.js +1 -1
  271. package/es-modules/Series/Wordcloud/WordcloudUtils.js +6 -4
  272. package/es-modules/Series/XRange/XRangePoint.js +2 -2
  273. package/es-modules/Series/XRange/XRangeSeries.js +1 -1
  274. package/es-modules/Shared/BaseForm.js +1 -1
  275. package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
  276. package/es-modules/Stock/Indicators/APO/APOIndicator.js +1 -1
  277. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +1 -1
  278. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +1 -1
  279. package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +2 -2
  280. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +1 -1
  281. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +1 -1
  282. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +1 -1
  283. package/es-modules/Stock/Indicators/LinearRegression/LinearRegressionIndicator.js +7 -7
  284. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +9 -9
  285. package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +1 -1
  286. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -1
  287. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +2 -2
  288. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
  289. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +16 -17
  290. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +4 -5
  291. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +1 -1
  292. package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +5 -5
  293. package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +188 -0
  294. package/es-modules/Stock/Navigator/Navigator.js +42 -27
  295. package/es-modules/Stock/Navigator/NavigatorComposition.js +10 -149
  296. package/es-modules/Stock/Navigator/NavigatorDefaults.js +16 -2
  297. package/es-modules/Stock/Navigator/StandaloneNavigator.js +334 -0
  298. package/es-modules/Stock/Navigator/StandaloneNavigatorDefaults.js +64 -0
  299. package/es-modules/Stock/RangeSelector/RangeSelector.js +28 -16
  300. package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +2 -2
  301. package/es-modules/Stock/Scrollbar/Scrollbar.js +10 -10
  302. package/es-modules/Stock/Scrollbar/ScrollbarDefaults.js +1 -3
  303. package/es-modules/Stock/StockTools/StockToolbar.js +6 -5
  304. package/es-modules/Stock/StockTools/StockTools.js +10 -13
  305. package/es-modules/Stock/StockTools/StockToolsBindings.js +35 -35
  306. package/es-modules/Stock/StockTools/StockToolsDefaults.js +2 -1
  307. package/es-modules/Stock/StockTools/StockToolsGui.js +7 -8
  308. package/es-modules/Stock/StockTools/StockToolsUtilities.js +8 -9
  309. package/es-modules/Stock/Utilities/StockUtilities.js +41 -0
  310. package/es-modules/masters/highcharts-3d.src.js +2 -1
  311. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  312. package/es-modules/masters/highcharts-more.src.js +2 -1
  313. package/es-modules/masters/highcharts.src.js +41 -40
  314. package/es-modules/masters/highmaps.src.js +1 -1
  315. package/es-modules/masters/highstock.src.js +1 -1
  316. package/es-modules/masters/indicators/acceleration-bands.src.js +3 -1
  317. package/es-modules/masters/indicators/accumulation-distribution.src.js +3 -1
  318. package/es-modules/masters/indicators/ao.src.js +3 -1
  319. package/es-modules/masters/indicators/apo.src.js +3 -1
  320. package/es-modules/masters/indicators/aroon-oscillator.src.js +3 -1
  321. package/es-modules/masters/indicators/aroon.src.js +3 -1
  322. package/es-modules/masters/indicators/atr.src.js +3 -1
  323. package/es-modules/masters/indicators/bollinger-bands.src.js +3 -1
  324. package/es-modules/masters/indicators/cci.src.js +3 -1
  325. package/es-modules/masters/indicators/chaikin.src.js +3 -1
  326. package/es-modules/masters/indicators/cmf.src.js +3 -1
  327. package/es-modules/masters/indicators/cmo.src.js +3 -1
  328. package/es-modules/masters/indicators/dema.src.js +3 -1
  329. package/es-modules/masters/indicators/disparity-index.src.js +3 -1
  330. package/es-modules/masters/indicators/dmi.src.js +3 -1
  331. package/es-modules/masters/indicators/dpo.src.js +3 -1
  332. package/es-modules/masters/indicators/ema.src.js +2 -0
  333. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +3 -1
  334. package/es-modules/masters/indicators/indicators-all.src.js +3 -1
  335. package/es-modules/masters/indicators/indicators.src.js +7 -1
  336. package/es-modules/masters/indicators/keltner-channels.src.js +3 -1
  337. package/es-modules/masters/indicators/klinger.src.js +3 -1
  338. package/es-modules/masters/indicators/macd.src.js +3 -1
  339. package/es-modules/masters/indicators/mfi.src.js +3 -1
  340. package/es-modules/masters/indicators/momentum.src.js +3 -1
  341. package/es-modules/masters/indicators/natr.src.js +3 -1
  342. package/es-modules/masters/indicators/obv.src.js +3 -1
  343. package/es-modules/masters/indicators/pivot-points.src.js +3 -1
  344. package/es-modules/masters/indicators/ppo.src.js +3 -1
  345. package/es-modules/masters/indicators/price-channel.src.js +3 -1
  346. package/es-modules/masters/indicators/price-envelopes.src.js +3 -1
  347. package/es-modules/masters/indicators/psar.src.js +3 -1
  348. package/es-modules/masters/indicators/regressions.src.js +3 -1
  349. package/es-modules/masters/indicators/roc.src.js +3 -1
  350. package/es-modules/masters/indicators/rsi.src.js +3 -1
  351. package/es-modules/masters/indicators/slow-stochastic.src.js +3 -1
  352. package/es-modules/masters/indicators/stochastic.src.js +3 -1
  353. package/es-modules/masters/indicators/supertrend.src.js +3 -1
  354. package/es-modules/masters/indicators/tema.src.js +3 -1
  355. package/es-modules/masters/indicators/trendline.src.js +3 -1
  356. package/es-modules/masters/indicators/trix.src.js +3 -1
  357. package/es-modules/masters/indicators/volume-by-price.src.js +3 -1
  358. package/es-modules/masters/indicators/vwap.src.js +3 -1
  359. package/es-modules/masters/indicators/williams-r.src.js +3 -1
  360. package/es-modules/masters/indicators/wma.src.js +3 -1
  361. package/es-modules/masters/indicators/zigzag.src.js +3 -1
  362. package/es-modules/masters/modules/accessibility.src.js +4 -1
  363. package/es-modules/masters/modules/annotations-advanced.src.js +3 -5
  364. package/es-modules/masters/modules/annotations.src.js +6 -3
  365. package/es-modules/masters/modules/arc-diagram.src.js +3 -1
  366. package/es-modules/masters/modules/arrow-symbols.src.js +2 -1
  367. package/es-modules/masters/modules/boost-canvas.src.js +2 -1
  368. package/es-modules/masters/modules/boost.src.js +3 -2
  369. package/es-modules/masters/modules/broken-axis.src.js +4 -3
  370. package/es-modules/masters/modules/bullet.src.js +3 -1
  371. package/es-modules/masters/modules/coloraxis.src.js +4 -3
  372. package/es-modules/masters/modules/current-date-indicator.src.js +2 -1
  373. package/es-modules/masters/modules/cylinder.src.js +3 -1
  374. package/es-modules/masters/modules/data-tools.src.js +9 -8
  375. package/es-modules/masters/modules/data.src.js +9 -8
  376. package/es-modules/masters/modules/datagrouping.src.js +7 -5
  377. package/es-modules/masters/modules/debugger.src.js +3 -2
  378. package/es-modules/masters/modules/dependency-wheel.src.js +3 -1
  379. package/es-modules/masters/modules/dotplot.src.js +3 -1
  380. package/es-modules/masters/modules/drag-panes.src.js +2 -1
  381. package/es-modules/masters/modules/draggable-points.src.js +2 -1
  382. package/es-modules/masters/modules/drilldown.src.js +3 -2
  383. package/es-modules/masters/modules/dumbbell.src.js +3 -1
  384. package/es-modules/masters/modules/export-data.src.js +5 -4
  385. package/es-modules/masters/modules/exporting.src.js +6 -5
  386. package/es-modules/masters/modules/flowmap.src.js +3 -1
  387. package/es-modules/masters/modules/full-screen.src.js +4 -3
  388. package/es-modules/masters/modules/funnel.src.js +2 -1
  389. package/es-modules/masters/modules/funnel3d.src.js +4 -3
  390. package/es-modules/masters/modules/gantt.src.js +15 -17
  391. package/es-modules/masters/modules/geoheatmap.src.js +3 -1
  392. package/es-modules/masters/modules/grid-axis.src.js +2 -1
  393. package/es-modules/masters/modules/heatmap.src.js +3 -5
  394. package/es-modules/masters/modules/heikinashi.src.js +2 -1
  395. package/es-modules/masters/modules/histogram-bellcurve.src.js +3 -1
  396. package/es-modules/masters/modules/hollowcandlestick.src.js +3 -1
  397. package/es-modules/masters/modules/item-series.src.js +3 -1
  398. package/es-modules/masters/modules/lollipop.src.js +3 -1
  399. package/es-modules/masters/modules/map.src.js +15 -10
  400. package/es-modules/masters/modules/marker-clusters.src.js +2 -1
  401. package/es-modules/masters/modules/mouse-wheel-zoom.src.js +4 -2
  402. package/es-modules/masters/modules/navigator.src.d.ts +1 -0
  403. package/es-modules/masters/modules/navigator.src.js +19 -0
  404. package/es-modules/masters/modules/networkgraph.src.js +2 -1
  405. package/es-modules/masters/modules/no-data-to-display.src.js +2 -1
  406. package/es-modules/masters/modules/offline-exporting.src.js +4 -3
  407. package/es-modules/masters/modules/organization.src.js +3 -1
  408. package/es-modules/masters/modules/overlapping-datalabels.src.js +4 -2
  409. package/es-modules/masters/modules/parallel-coordinates.src.js +2 -1
  410. package/es-modules/masters/modules/pareto.src.js +3 -1
  411. package/es-modules/masters/modules/pathfinder.src.js +4 -3
  412. package/es-modules/masters/modules/pattern-fill.src.js +2 -1
  413. package/es-modules/masters/modules/pictorial.src.js +3 -1
  414. package/es-modules/masters/modules/price-indicator.src.js +2 -1
  415. package/es-modules/masters/modules/pyramid3d.src.js +3 -1
  416. package/es-modules/masters/modules/sankey.src.js +3 -1
  417. package/es-modules/masters/modules/series-label.src.js +2 -1
  418. package/es-modules/masters/modules/series-on-point.src.js +2 -1
  419. package/es-modules/masters/modules/solid-gauge.src.js +3 -1
  420. package/es-modules/masters/modules/sonification.src.js +2 -1
  421. package/es-modules/masters/modules/static-scale.src.js +2 -1
  422. package/es-modules/masters/modules/stock-tools.src.js +5 -3
  423. package/es-modules/masters/modules/stock.src.js +20 -15
  424. package/es-modules/masters/modules/streamgraph.src.js +3 -1
  425. package/es-modules/masters/modules/sunburst.src.js +4 -3
  426. package/es-modules/masters/modules/tiledwebmap.src.js +5 -4
  427. package/es-modules/masters/modules/tilemap.src.js +2 -1
  428. package/es-modules/masters/modules/timeline.src.js +3 -1
  429. package/es-modules/masters/modules/treegraph.src.js +3 -1
  430. package/es-modules/masters/modules/treegrid.src.js +2 -2
  431. package/es-modules/masters/modules/treemap.src.js +5 -4
  432. package/es-modules/masters/modules/variable-pie.src.js +3 -1
  433. package/es-modules/masters/modules/variwide.src.js +2 -1
  434. package/es-modules/masters/modules/vector.src.js +3 -1
  435. package/es-modules/masters/modules/venn.src.js +3 -1
  436. package/es-modules/masters/modules/windbarb.src.js +3 -1
  437. package/es-modules/masters/modules/wordcloud.src.js +3 -1
  438. package/es-modules/masters/modules/xrange.src.js +2 -1
  439. package/es-modules/masters/standalone-navigator.src.js +13 -0
  440. package/es-modules/masters/themes/avocado.src.js +2 -1
  441. package/es-modules/masters/themes/brand-dark.src.js +2 -1
  442. package/es-modules/masters/themes/brand-light.src.js +2 -1
  443. package/es-modules/masters/themes/dark-blue.src.js +2 -1
  444. package/es-modules/masters/themes/dark-green.src.js +2 -1
  445. package/es-modules/masters/themes/dark-unica.src.js +2 -1
  446. package/es-modules/masters/themes/gray.src.js +2 -1
  447. package/es-modules/masters/themes/grid-light.src.js +2 -1
  448. package/es-modules/masters/themes/grid.src.js +2 -1
  449. package/es-modules/masters/themes/high-contrast-dark.src.js +2 -1
  450. package/es-modules/masters/themes/high-contrast-light.src.js +2 -1
  451. package/es-modules/masters/themes/sand-signika.src.js +2 -1
  452. package/es-modules/masters/themes/skies.src.js +2 -1
  453. package/es-modules/masters/themes/sunset.src.js +2 -1
  454. package/es-modules/tsconfig.tsbuildinfo +1 -0
  455. package/globals.d.ts +9 -0
  456. package/globals.src.d.ts +9 -0
  457. package/highcharts-3d.js +3 -3
  458. package/highcharts-3d.src.js +32 -33
  459. package/highcharts-gantt.js +4 -4
  460. package/highcharts-gantt.src.js +5703 -5639
  461. package/highcharts-more.d.ts +4 -0
  462. package/highcharts-more.js +3 -3
  463. package/highcharts-more.src.d.ts +4 -0
  464. package/highcharts-more.src.js +88 -87
  465. package/highcharts.d.ts +834 -5365
  466. package/highcharts.js +4 -4
  467. package/highcharts.src.d.ts +834 -5365
  468. package/highcharts.src.js +1583 -1682
  469. package/highmaps.js +4 -4
  470. package/highmaps.src.js +1837 -1835
  471. package/highstock.js +4 -4
  472. package/highstock.src.js +12488 -12510
  473. package/indicators/acceleration-bands.js +3 -3
  474. package/indicators/acceleration-bands.src.js +12 -11
  475. package/indicators/accumulation-distribution.js +3 -3
  476. package/indicators/accumulation-distribution.src.js +6 -3
  477. package/indicators/ao.js +3 -3
  478. package/indicators/ao.src.js +3 -2
  479. package/indicators/apo.js +3 -3
  480. package/indicators/apo.src.js +4 -3
  481. package/indicators/aroon-oscillator.js +3 -3
  482. package/indicators/aroon-oscillator.src.js +12 -11
  483. package/indicators/aroon.js +3 -3
  484. package/indicators/aroon.src.js +13 -12
  485. package/indicators/atr.js +3 -3
  486. package/indicators/atr.src.js +3 -2
  487. package/indicators/bollinger-bands.js +3 -3
  488. package/indicators/bollinger-bands.src.js +12 -11
  489. package/indicators/cci.js +3 -3
  490. package/indicators/cci.src.js +3 -2
  491. package/indicators/chaikin.js +3 -3
  492. package/indicators/chaikin.src.js +7 -4
  493. package/indicators/cmf.js +3 -3
  494. package/indicators/cmf.src.js +4 -3
  495. package/indicators/cmo.js +3 -3
  496. package/indicators/cmo.src.js +5 -4
  497. package/indicators/dema.js +3 -3
  498. package/indicators/dema.src.js +3 -2
  499. package/indicators/disparity-index.js +3 -3
  500. package/indicators/disparity-index.src.js +3 -2
  501. package/indicators/dmi.js +3 -3
  502. package/indicators/dmi.src.js +12 -11
  503. package/indicators/dpo.js +3 -3
  504. package/indicators/dpo.src.js +4 -3
  505. package/indicators/ema.js +1 -1
  506. package/indicators/ema.src.js +2 -1
  507. package/indicators/ichimoku-kinko-hyo.js +3 -3
  508. package/indicators/ichimoku-kinko-hyo.src.js +3 -2
  509. package/indicators/indicators-all.js +3 -3
  510. package/indicators/indicators-all.src.js +63 -60
  511. package/indicators/indicators.js +3 -3
  512. package/indicators/indicators.src.js +286 -3
  513. package/indicators/keltner-channels.js +3 -3
  514. package/indicators/keltner-channels.src.js +12 -11
  515. package/indicators/klinger.js +3 -3
  516. package/indicators/klinger.src.js +13 -12
  517. package/indicators/macd.js +3 -3
  518. package/indicators/macd.src.js +3 -2
  519. package/indicators/mfi.js +3 -3
  520. package/indicators/mfi.src.js +3 -2
  521. package/indicators/momentum.js +3 -3
  522. package/indicators/momentum.src.js +3 -2
  523. package/indicators/natr.js +3 -3
  524. package/indicators/natr.src.js +3 -2
  525. package/indicators/obv.js +3 -3
  526. package/indicators/obv.src.js +4 -3
  527. package/indicators/pivot-points.js +3 -3
  528. package/indicators/pivot-points.src.js +5 -4
  529. package/indicators/ppo.js +3 -3
  530. package/indicators/ppo.src.js +4 -3
  531. package/indicators/price-channel.js +3 -3
  532. package/indicators/price-channel.src.js +12 -11
  533. package/indicators/price-envelopes.js +3 -3
  534. package/indicators/price-envelopes.src.js +12 -11
  535. package/indicators/psar.js +3 -3
  536. package/indicators/psar.src.js +3 -2
  537. package/indicators/regressions.js +3 -3
  538. package/indicators/regressions.src.js +10 -9
  539. package/indicators/roc.js +3 -3
  540. package/indicators/roc.src.js +3 -2
  541. package/indicators/rsi.js +3 -3
  542. package/indicators/rsi.src.js +3 -2
  543. package/indicators/slow-stochastic.js +3 -3
  544. package/indicators/slow-stochastic.src.js +3 -2
  545. package/indicators/stochastic.js +3 -3
  546. package/indicators/stochastic.src.js +12 -11
  547. package/indicators/supertrend.js +3 -3
  548. package/indicators/supertrend.src.js +20 -19
  549. package/indicators/tema.js +3 -3
  550. package/indicators/tema.src.js +3 -2
  551. package/indicators/trendline.js +3 -3
  552. package/indicators/trendline.src.js +3 -2
  553. package/indicators/trix.js +3 -3
  554. package/indicators/trix.src.js +3 -2
  555. package/indicators/volume-by-price.js +3 -3
  556. package/indicators/volume-by-price.src.js +8 -7
  557. package/indicators/vwap.js +3 -3
  558. package/indicators/vwap.src.js +3 -2
  559. package/indicators/williams-r.js +3 -3
  560. package/indicators/williams-r.src.js +4 -3
  561. package/indicators/wma.js +3 -3
  562. package/indicators/wma.src.js +3 -2
  563. package/indicators/zigzag.js +3 -3
  564. package/indicators/zigzag.src.js +8 -7
  565. package/lib/svg2pdf.js +7 -7
  566. package/lib/svg2pdf.src.js +185 -150
  567. package/modules/accessibility.js +3 -3
  568. package/modules/accessibility.src.js +664 -2793
  569. package/modules/annotations-advanced.d.ts +3 -0
  570. package/modules/annotations-advanced.js +3 -3
  571. package/modules/annotations-advanced.src.d.ts +3 -0
  572. package/modules/annotations-advanced.src.js +2949 -2920
  573. package/modules/annotations.d.ts +0 -3
  574. package/modules/annotations.js +3 -3
  575. package/modules/annotations.src.d.ts +0 -3
  576. package/modules/annotations.src.js +2926 -2905
  577. package/modules/arc-diagram.js +3 -3
  578. package/modules/arc-diagram.src.js +8 -6
  579. package/modules/arrow-symbols.js +3 -3
  580. package/modules/arrow-symbols.src.js +10 -13
  581. package/modules/boost-canvas.js +3 -3
  582. package/modules/boost-canvas.src.js +73 -26
  583. package/modules/boost.js +3 -3
  584. package/modules/boost.src.js +108 -30
  585. package/modules/broken-axis.js +3 -3
  586. package/modules/broken-axis.src.js +9 -9
  587. package/modules/bullet.js +3 -3
  588. package/modules/bullet.src.js +5 -4
  589. package/modules/coloraxis.js +3 -3
  590. package/modules/coloraxis.src.js +10 -9
  591. package/modules/current-date-indicator.js +3 -3
  592. package/modules/current-date-indicator.src.js +3 -2
  593. package/modules/cylinder.js +3 -3
  594. package/modules/cylinder.src.js +12 -11
  595. package/modules/data-tools.js +3 -3
  596. package/modules/data-tools.src.js +53 -36
  597. package/modules/data.d.ts +2 -2
  598. package/modules/data.js +3 -3
  599. package/modules/data.src.d.ts +2 -2
  600. package/modules/data.src.js +24 -23
  601. package/modules/datagrouping.js +3 -3
  602. package/modules/datagrouping.src.js +25 -23
  603. package/modules/debugger.js +3 -3
  604. package/modules/debugger.src.js +6 -5
  605. package/modules/dependency-wheel.js +3 -3
  606. package/modules/dependency-wheel.src.js +7 -5
  607. package/modules/dotplot.js +3 -3
  608. package/modules/dotplot.src.js +3 -2
  609. package/modules/drag-panes.js +3 -3
  610. package/modules/drag-panes.src.js +19 -21
  611. package/modules/draggable-points.js +3 -3
  612. package/modules/draggable-points.src.js +18 -16
  613. package/modules/drilldown.js +3 -3
  614. package/modules/drilldown.src.js +29 -26
  615. package/modules/dumbbell.js +3 -3
  616. package/modules/dumbbell.src.js +5 -4
  617. package/modules/export-data.js +3 -3
  618. package/modules/export-data.src.js +33 -22
  619. package/modules/exporting.d.ts +1 -1
  620. package/modules/exporting.js +3 -3
  621. package/modules/exporting.src.d.ts +1 -1
  622. package/modules/exporting.src.js +40 -39
  623. package/modules/flowmap.js +3 -3
  624. package/modules/flowmap.src.js +3 -2
  625. package/modules/full-screen.js +3 -3
  626. package/modules/full-screen.src.js +9 -13
  627. package/modules/funnel.js +3 -3
  628. package/modules/funnel.src.js +3 -2
  629. package/modules/funnel3d.js +3 -3
  630. package/modules/funnel3d.src.js +12 -12
  631. package/modules/gantt.d.ts +3 -4
  632. package/modules/gantt.js +3 -3
  633. package/modules/gantt.src.d.ts +3 -4
  634. package/modules/gantt.src.js +4165 -4002
  635. package/modules/geoheatmap.js +3 -3
  636. package/modules/geoheatmap.src.js +8 -7
  637. package/modules/grid-axis.js +3 -3
  638. package/modules/grid-axis.src.js +9 -8
  639. package/modules/heatmap.d.ts +2 -2
  640. package/modules/heatmap.js +3 -3
  641. package/modules/heatmap.src.d.ts +2 -2
  642. package/modules/heatmap.src.js +21 -15
  643. package/modules/heikinashi.js +3 -3
  644. package/modules/heikinashi.src.js +9 -6
  645. package/modules/histogram-bellcurve.js +3 -3
  646. package/modules/histogram-bellcurve.src.js +4 -3
  647. package/modules/hollowcandlestick.js +3 -3
  648. package/modules/hollowcandlestick.src.js +5 -4
  649. package/modules/item-series.js +3 -3
  650. package/modules/item-series.src.js +4 -3
  651. package/modules/lollipop.js +3 -3
  652. package/modules/lollipop.src.js +6 -3
  653. package/modules/map.d.ts +22 -1
  654. package/modules/map.js +3 -3
  655. package/modules/map.src.d.ts +22 -1
  656. package/modules/map.src.js +256 -155
  657. package/modules/marker-clusters.js +3 -3
  658. package/modules/marker-clusters.src.js +35 -37
  659. package/modules/mouse-wheel-zoom.js +3 -3
  660. package/modules/mouse-wheel-zoom.src.js +55 -163
  661. package/modules/navigator.d.ts +148 -0
  662. package/modules/navigator.js +9 -0
  663. package/modules/navigator.src.d.ts +148 -0
  664. package/modules/navigator.src.js +3921 -0
  665. package/modules/networkgraph.d.ts +2 -2
  666. package/modules/networkgraph.js +3 -3
  667. package/modules/networkgraph.src.d.ts +2 -2
  668. package/modules/networkgraph.src.js +36 -35
  669. package/modules/no-data-to-display.js +3 -3
  670. package/modules/no-data-to-display.src.js +6 -6
  671. package/modules/offline-exporting.js +3 -3
  672. package/modules/offline-exporting.src.js +10 -10
  673. package/modules/organization.js +3 -3
  674. package/modules/organization.src.js +41 -15
  675. package/modules/overlapping-datalabels.js +3 -3
  676. package/modules/overlapping-datalabels.src.js +4 -2
  677. package/modules/parallel-coordinates.js +3 -3
  678. package/modules/parallel-coordinates.src.js +12 -12
  679. package/modules/pareto.js +3 -3
  680. package/modules/pareto.src.js +3 -2
  681. package/modules/pathfinder.js +3 -3
  682. package/modules/pathfinder.src.js +18 -22
  683. package/modules/pattern-fill.js +3 -3
  684. package/modules/pattern-fill.src.js +22 -23
  685. package/modules/pictorial.js +3 -3
  686. package/modules/pictorial.src.js +25 -26
  687. package/modules/price-indicator.js +3 -3
  688. package/modules/price-indicator.src.js +3 -2
  689. package/modules/pyramid3d.js +3 -3
  690. package/modules/pyramid3d.src.js +3 -2
  691. package/modules/sankey.js +3 -3
  692. package/modules/sankey.src.js +93 -26
  693. package/modules/series-label.js +3 -3
  694. package/modules/series-label.src.js +28 -19
  695. package/modules/series-on-point.js +3 -3
  696. package/modules/series-on-point.src.js +5 -4
  697. package/modules/solid-gauge.js +3 -3
  698. package/modules/solid-gauge.src.js +3 -2
  699. package/modules/sonification.d.ts +2 -2
  700. package/modules/sonification.js +3 -3
  701. package/modules/sonification.src.d.ts +2 -2
  702. package/modules/sonification.src.js +8 -6
  703. package/modules/static-scale.js +3 -3
  704. package/modules/static-scale.src.js +6 -6
  705. package/modules/stock-tools.js +3 -3
  706. package/modules/stock-tools.src.js +109 -96
  707. package/modules/stock.d.ts +1 -1
  708. package/modules/stock.js +3 -3
  709. package/modules/stock.src.d.ts +1 -1
  710. package/modules/stock.src.js +10762 -10685
  711. package/modules/streamgraph.js +3 -3
  712. package/modules/streamgraph.src.js +3 -2
  713. package/modules/sunburst.js +3 -3
  714. package/modules/sunburst.src.js +50 -37
  715. package/modules/tiledwebmap.js +4 -4
  716. package/modules/tiledwebmap.src.js +28 -29
  717. package/modules/tilemap.js +3 -3
  718. package/modules/tilemap.src.js +4 -3
  719. package/modules/timeline.js +3 -3
  720. package/modules/timeline.src.js +5 -4
  721. package/modules/treegraph.js +3 -3
  722. package/modules/treegraph.src.js +58 -23
  723. package/modules/treegrid.js +3 -3
  724. package/modules/treegrid.src.js +49 -33
  725. package/modules/treemap.js +3 -3
  726. package/modules/treemap.src.js +44 -26
  727. package/modules/variable-pie.js +3 -3
  728. package/modules/variable-pie.src.js +3 -2
  729. package/modules/variwide.js +3 -3
  730. package/modules/variwide.src.js +9 -4
  731. package/modules/vector.js +3 -3
  732. package/modules/vector.src.js +3 -2
  733. package/modules/venn.js +3 -3
  734. package/modules/venn.src.js +16 -17
  735. package/modules/windbarb.js +3 -3
  736. package/modules/windbarb.src.js +5 -4
  737. package/modules/wordcloud.js +3 -3
  738. package/modules/wordcloud.src.js +10 -8
  739. package/modules/xrange.js +3 -3
  740. package/modules/xrange.src.js +5 -4
  741. package/package.json +1 -1
  742. package/standalone-navigator.js +2 -0
  743. package/standalone-navigator.src.js +49402 -0
  744. package/themes/avocado.js +3 -3
  745. package/themes/avocado.src.js +2 -1
  746. package/themes/brand-dark.js +3 -3
  747. package/themes/brand-dark.src.js +2 -1
  748. package/themes/brand-light.js +3 -3
  749. package/themes/brand-light.src.js +2 -1
  750. package/themes/dark-blue.js +3 -3
  751. package/themes/dark-blue.src.js +2 -1
  752. package/themes/dark-green.js +3 -3
  753. package/themes/dark-green.src.js +2 -1
  754. package/themes/dark-unica.js +3 -3
  755. package/themes/dark-unica.src.js +2 -1
  756. package/themes/gray.js +3 -3
  757. package/themes/gray.src.js +2 -1
  758. package/themes/grid-light.js +3 -3
  759. package/themes/grid-light.src.js +2 -1
  760. package/themes/grid.js +3 -3
  761. package/themes/grid.src.js +2 -1
  762. package/themes/high-contrast-dark.js +3 -3
  763. package/themes/high-contrast-dark.src.js +2 -1
  764. package/themes/high-contrast-light.js +3 -3
  765. package/themes/high-contrast-light.src.js +2 -1
  766. package/themes/sand-signika.js +3 -3
  767. package/themes/sand-signika.src.js +2 -1
  768. package/themes/skies.js +3 -3
  769. package/themes/skies.src.js +2 -1
  770. package/themes/sunset.js +3 -3
  771. package/themes/sunset.src.js +2 -1
  772. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +0 -259
  773. package/lib/canvg.js +0 -8
@@ -11,9 +11,9 @@
11
11
  import Color from './Color/Color.js';
12
12
  const { parse: color } = Color;
13
13
  import H from './Globals.js';
14
- const { charts, composed, noop } = H;
14
+ const { charts, composed } = H;
15
15
  import U from './Utilities.js';
16
- const { addEvent, attr, css, defined, extend, find, fireEvent, isNumber, isObject, objectEach, offset, pick, pushUnique, splat } = U;
16
+ const { addEvent, attr, css, extend, find, fireEvent, isNumber, isObject, objectEach, offset, pick, pushUnique, splat } = U;
17
17
  /* *
18
18
  *
19
19
  * Class
@@ -119,22 +119,24 @@ class Pointer {
119
119
  shapeType: 'rect'
120
120
  };
121
121
  fireEvent(this, 'getSelectionMarkerAttrs', e, (e) => {
122
- const { chart, mouseDownX = 0, mouseDownY = 0, zoomHor, zoomVert } = this, attrs = e.attrs;
122
+ const { chart, zoomHor, zoomVert } = this, { mouseDownX = 0, mouseDownY = 0 } = chart, attrs = e.attrs;
123
123
  let size;
124
124
  attrs.x = chart.plotLeft;
125
125
  attrs.y = chart.plotTop;
126
126
  attrs.width = zoomHor ? 1 : chart.plotWidth;
127
127
  attrs.height = zoomVert ? 1 : chart.plotHeight;
128
- // Adjust the width of the selection marker
128
+ // Adjust the width of the selection marker. Firefox needs at
129
+ // least one pixel width or height in order to return a bounding
130
+ // box.
129
131
  if (zoomHor) {
130
132
  size = chartX - mouseDownX;
131
- attrs.width = Math.abs(size);
133
+ attrs.width = Math.max(1, Math.abs(size));
132
134
  attrs.x = (size > 0 ? 0 : size) + mouseDownX;
133
135
  }
134
136
  // Adjust the height of the selection marker
135
137
  if (zoomVert) {
136
138
  size = chartY - mouseDownY;
137
- attrs.height = Math.abs(size);
139
+ attrs.height = Math.max(1, Math.abs(size));
138
140
  attrs.y = (size > 0 ? 0 : size) + mouseDownY;
139
141
  }
140
142
  });
@@ -147,9 +149,9 @@ class Pointer {
147
149
  * @function Highcharts.Pointer#drag
148
150
  */
149
151
  drag(e) {
150
- const chart = this.chart, chartOptions = chart.options.chart, plotLeft = chart.plotLeft, plotTop = chart.plotTop, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, mouseDownX = (this.mouseDownX || 0), mouseDownY = (this.mouseDownY || 0), panningEnabled = isObject(chartOptions.panning) ?
151
- chartOptions.panning && chartOptions.panning.enabled :
152
- chartOptions.panning, panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);
152
+ const { chart } = this, { mouseDownX = 0, mouseDownY = 0 } = chart, { panning, panKey, selectionMarkerFill } = chart.options.chart, plotLeft = chart.plotLeft, plotTop = chart.plotTop, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, panningEnabled = isObject(panning) ?
153
+ panning.enabled :
154
+ panning, panKeyPressed = panKey && e[`${panKey}Key`];
153
155
  let chartX = e.chartX, chartY = e.chartY, clickedInside, selectionMarker = this.selectionMarker;
154
156
  // If the device supports both touch and mouse (like IE11), and we are
155
157
  // touch-dragging inside the plot area, don't handle the mouse event.
@@ -171,7 +173,7 @@ class Pointer {
171
173
  else if (chartY > plotTop + plotHeight) {
172
174
  chartY = plotTop + plotHeight;
173
175
  }
174
- // determine if the mouse has moved more than 10px
176
+ // Determine if the mouse has moved more than 10px
175
177
  this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +
176
178
  Math.pow(mouseDownY - chartY, 2));
177
179
  if (this.hasDragged > 10) {
@@ -179,11 +181,11 @@ class Pointer {
179
181
  visiblePlotOnly: true
180
182
  });
181
183
  const { shapeType, attrs } = this.getSelectionMarkerAttrs(chartX, chartY);
182
- // make a selection
184
+ // Make a selection
183
185
  if ((chart.hasCartesianSeries || chart.mapView) &&
184
- (this.zoomX || this.zoomY) &&
186
+ this.hasZoom &&
185
187
  clickedInside &&
186
- !panKey) {
188
+ !panKeyPressed) {
187
189
  if (!selectionMarker) {
188
190
  this.selectionMarker = selectionMarker =
189
191
  chart.renderer[shapeType]();
@@ -195,7 +197,7 @@ class Pointer {
195
197
  .add();
196
198
  if (!chart.styledMode) {
197
199
  selectionMarker.attr({
198
- fill: chartOptions.selectionMarkerFill ||
200
+ fill: selectionMarkerFill ||
199
201
  color("#334eff" /* Palette.highlightColor80 */)
200
202
  .setOpacity(0.25).get()
201
203
  });
@@ -205,11 +207,9 @@ class Pointer {
205
207
  if (selectionMarker) {
206
208
  selectionMarker.attr(attrs);
207
209
  }
208
- // panning
209
- if (clickedInside &&
210
- !selectionMarker &&
211
- panningEnabled) {
212
- chart.pan(e, chartOptions.panning);
210
+ // Panning
211
+ if (clickedInside && !selectionMarker && panningEnabled) {
212
+ chart.pan(e, panning);
213
213
  }
214
214
  }
215
215
  }
@@ -223,8 +223,8 @@ class Pointer {
223
223
  // Record the start position
224
224
  chart.mouseIsDown = e.type;
225
225
  chart.cancelClick = false;
226
- chart.mouseDownX = this.mouseDownX = e.chartX;
227
- chart.mouseDownY = this.mouseDownY = e.chartY;
226
+ chart.mouseDownX = e.chartX;
227
+ chart.mouseDownY = e.chartY;
228
228
  }
229
229
  /**
230
230
  * Get selection box to calculate extremes
@@ -235,16 +235,9 @@ class Pointer {
235
235
  getSelectionBox(marker) {
236
236
  const e = {
237
237
  args: { marker },
238
- result: {}
238
+ result: marker.getBBox()
239
239
  };
240
- fireEvent(this, 'getSelectionBox', e, (e) => {
241
- e.result = {
242
- x: marker.attr ? +marker.attr('x') : marker.x,
243
- y: marker.attr ? +marker.attr('y') : marker.y,
244
- width: marker.attr ? marker.attr('width') : marker.width,
245
- height: marker.attr ? marker.attr('height') : marker.height
246
- };
247
- });
240
+ fireEvent(this, 'getSelectionBox', e);
248
241
  return e.result;
249
242
  }
250
243
  /**
@@ -253,72 +246,55 @@ class Pointer {
253
246
  * @function Highcharts.Pointer#drop
254
247
  */
255
248
  drop(e) {
256
- const pointer = this, chart = this.chart, hasPinched = this.hasPinched;
257
- if (this.selectionMarker) {
258
- const { x, y, width, height } = this.getSelectionBox(this.selectionMarker);
259
- const selectionData = {
260
- originalEvent: e,
261
- xAxis: [],
262
- yAxis: [],
263
- x,
264
- y,
265
- width,
266
- height
267
- };
268
- // Start by false runZoom, unless when we have a mapView, in
269
- // which case the zoom will be handled in the selection event.
270
- let runZoom = Boolean(chart.mapView);
271
- // a selection has been made
272
- if (this.hasDragged || hasPinched) {
273
- // record each axis' min and max
274
- chart.axes.forEach(function (axis) {
275
- if (axis.zoomEnabled &&
276
- defined(axis.min) &&
277
- (hasPinched ||
278
- pointer[{
279
- xAxis: 'zoomX',
280
- yAxis: 'zoomY'
281
- }[axis.coll]]) &&
282
- isNumber(x) &&
283
- isNumber(y) &&
284
- isNumber(width) &&
285
- isNumber(height)) { // #859, #3569
286
- const horiz = axis.horiz, minPixelPadding = e.type === 'touchend' ?
287
- axis.minPixelPadding :
288
- 0, // #1207, #3075
289
- selectionMin = axis.toValue((horiz ? x : y) + minPixelPadding), selectionMax = axis.toValue((horiz ? x + width : y + height) -
290
- minPixelPadding);
291
- selectionData[axis.coll].push({
292
- axis: axis,
293
- // Min/max for reversed axes
294
- min: Math.min(selectionMin, selectionMax),
295
- max: Math.max(selectionMin, selectionMax)
296
- });
297
- runZoom = true;
298
- }
299
- });
300
- if (runZoom) {
301
- fireEvent(chart, 'selection', selectionData, function (args) {
302
- chart.zoom(extend(args, hasPinched ?
303
- { animation: false } :
304
- null));
305
- });
249
+ const { chart, selectionMarker } = this;
250
+ // During a mouse, touch or mousewheel pan, the `startOnTick` and
251
+ // `endOnTick` options are ignored. Otherwise the zooming or panning
252
+ // would be jumpy, or even not performed because the end ticks would
253
+ // block it. After the touch has ended, we undo this and render again.
254
+ let redraw;
255
+ for (const axis of chart.axes) {
256
+ if (axis.isPanning) {
257
+ axis.isPanning = false;
258
+ if (axis.options.startOnTick ||
259
+ axis.options.endOnTick ||
260
+ axis.series.some((s) => s.boosted)) {
261
+ axis.forceRedraw = true;
262
+ axis.setExtremes(axis.userMin, axis.userMax, false);
263
+ redraw = true;
306
264
  }
307
265
  }
308
- if (isNumber(chart.index)) {
309
- this.selectionMarker = this.selectionMarker.destroy();
266
+ }
267
+ if (redraw) {
268
+ chart.redraw();
269
+ }
270
+ if (selectionMarker && e) {
271
+ // A selection has been made
272
+ if (this.hasDragged) {
273
+ const from = this.getSelectionBox(selectionMarker);
274
+ chart.transform({
275
+ axes: chart.axes.filter((a) => a.zoomEnabled &&
276
+ ((a.coll === 'xAxis' && this.zoomX) ||
277
+ (a.coll === 'yAxis' && this.zoomY))),
278
+ selection: {
279
+ originalEvent: e,
280
+ xAxis: [],
281
+ yAxis: [],
282
+ ...from
283
+ },
284
+ from
285
+ });
310
286
  }
311
- // Reset scaling preview
312
- if (hasPinched) {
313
- this.scaleGroups();
287
+ if (isNumber(chart.index)) {
288
+ this.selectionMarker = selectionMarker.destroy();
314
289
  }
315
290
  }
316
291
  // Reset all. Check isNumber because it may be destroyed on mouse up
317
292
  // (#877)
318
293
  if (chart && isNumber(chart.index)) {
319
294
  css(chart.container, { cursor: chart._cursor });
320
- chart.cancelClick = +this.hasDragged > 10; // #370
321
- chart.mouseIsDown = this.hasDragged = this.hasPinched = false;
295
+ chart.cancelClick = this.hasDragged > 10; // #370
296
+ chart.mouseIsDown = false;
297
+ this.hasDragged = 0;
322
298
  this.pinchDown = [];
323
299
  }
324
300
  }
@@ -344,8 +320,8 @@ class Pointer {
344
320
  let closest;
345
321
  /** @private */
346
322
  function sort(p1, p2) {
347
- const isCloserX = p1.distX - p2.distX, isCloser = p1.dist - p2.dist, isAbove = ((p2.series.group && p2.series.group.zIndex) -
348
- (p1.series.group && p1.series.group.zIndex));
323
+ const isCloserX = p1.distX - p2.distX, isCloser = p1.dist - p2.dist, isAbove = (p2.series.group?.zIndex -
324
+ p1.series.group?.zIndex);
349
325
  let result;
350
326
  // We have two points which are not in the same place on xAxis
351
327
  // and shared tooltip:
@@ -387,10 +363,9 @@ class Pointer {
387
363
  * @function Highcharts.Pointer#getChartCoordinatesFromPoint
388
364
  */
389
365
  getChartCoordinatesFromPoint(point, inverted) {
390
- const series = point.series, xAxis = series.xAxis, yAxis = series.yAxis, shapeArgs = point.shapeArgs;
366
+ const { xAxis, yAxis } = point.series, shapeArgs = point.shapeArgs;
391
367
  if (xAxis && yAxis) {
392
- let x = pick(point.clientX, point.plotX);
393
- let y = point.plotY || 0;
368
+ let x = point.clientX ?? point.plotX ?? 0, y = point.plotY || 0;
394
369
  if (point.isNode &&
395
370
  shapeArgs &&
396
371
  isNumber(shapeArgs.x) &&
@@ -436,8 +411,7 @@ class Pointer {
436
411
  scaleX: 1,
437
412
  scaleY: 1
438
413
  };
439
- const offsetWidth = container.offsetWidth;
440
- const offsetHeight = container.offsetHeight;
414
+ const { offsetHeight, offsetWidth } = container;
441
415
  // #13342 - tooltip was not visible in Chrome, when chart
442
416
  // updates height.
443
417
  if (offsetWidth > 2 && // #13342
@@ -464,12 +438,12 @@ class Pointer {
464
438
  xAxis: [],
465
439
  yAxis: []
466
440
  };
467
- this.chart.axes.forEach(function (axis) {
441
+ for (const axis of this.chart.axes) {
468
442
  coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({
469
- axis: axis,
443
+ axis,
470
444
  value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])
471
445
  });
472
- });
446
+ }
473
447
  return coordinates;
474
448
  }
475
449
  /**
@@ -644,9 +618,7 @@ class Pointer {
644
618
  * tooltip structures.
645
619
  */
646
620
  constructor(chart, options) {
647
- this.hasDragged = false;
648
- this.lastValidTouch = {};
649
- this.pinchDown = [];
621
+ this.hasDragged = 0;
650
622
  this.eventsToUnbind = [];
651
623
  // Store references
652
624
  this.options = options;
@@ -654,7 +626,6 @@ class Pointer {
654
626
  // Do we need to handle click on a touch device?
655
627
  this.runChartClick = Boolean(options.chart.events?.click);
656
628
  this.pinchDown = [];
657
- this.lastValidTouch = {};
658
629
  this.setDOMEvents();
659
630
  fireEvent(this, 'afterInit');
660
631
  }
@@ -679,7 +650,7 @@ class Pointer {
679
650
  */
680
651
  normalize(e, chartPosition) {
681
652
  const touches = e.touches;
682
- // iOS (#2757)
653
+ // Position for iOS (#2757)
683
654
  const ePos = (touches ?
684
655
  touches.length ?
685
656
  touches.item(0) :
@@ -714,19 +685,19 @@ class Pointer {
714
685
  // On tracker click, fire the series and point events. #783, #1583
715
686
  if (hoverPoint &&
716
687
  this.inClass(pEvt.target, 'highcharts-tracker')) {
717
- // the series click event
688
+ // The series click event
718
689
  fireEvent(hoverPoint.series, 'click', extend(pEvt, {
719
690
  point: hoverPoint
720
691
  }));
721
- // the point click event
722
- if (chart.hoverPoint) { // it may be destroyed (#1844)
692
+ // The point click event
693
+ if (chart.hoverPoint) { // It may be destroyed (#1844)
723
694
  hoverPoint.firePointEvent('click', pEvt);
724
695
  }
725
696
  // When clicking outside a tracker, fire a chart event
726
697
  }
727
698
  else {
728
699
  extend(pEvt, this.getCoordinates(pEvt));
729
- // fire a click event in the chart
700
+ // Fire a click event in the chart
730
701
  if (chart.isInsidePlot(pEvt.chartX - plotLeft, pEvt.chartY - plotTop, {
731
702
  visiblePlotOnly: true
732
703
  })) {
@@ -752,9 +723,8 @@ class Pointer {
752
723
  isPrimaryButton) {
753
724
  this.zoomOption(e);
754
725
  // #295, #13737 solve conflict between container drag and chart zoom
755
- if (isPrimaryButton &&
756
- e.preventDefault) {
757
- e.preventDefault();
726
+ if (isPrimaryButton) {
727
+ e.preventDefault?.();
758
728
  }
759
729
  this.dragStart(e);
760
730
  }
@@ -765,16 +735,16 @@ class Pointer {
765
735
  * @function Highcharts.Pointer#onContainerMouseLeave
766
736
  */
767
737
  onContainerMouseLeave(e) {
768
- const chart = charts[pick(Pointer.hoverChartIndex, -1)];
738
+ const { pointer } = charts[pick(Pointer.hoverChartIndex, -1)] || {};
769
739
  e = this.normalize(e);
770
740
  this.onContainerMouseMove(e);
771
741
  // #4886, MS Touch end fires mouseleave but with no related target
772
- if (chart &&
742
+ if (pointer &&
773
743
  e.relatedTarget &&
774
744
  !this.inClass(e.relatedTarget, 'highcharts-tooltip')) {
775
- chart.pointer.reset();
745
+ pointer.reset();
776
746
  // Also reset the chart position, used in #149 fix
777
- chart.pointer.chartPosition = void 0;
747
+ pointer.chartPosition = void 0;
778
748
  }
779
749
  }
780
750
  /**
@@ -782,7 +752,7 @@ class Pointer {
782
752
  * @private
783
753
  * @function Highcharts.Pointer#onContainerMouseEnter
784
754
  */
785
- onContainerMouseEnter(e) {
755
+ onContainerMouseEnter() {
786
756
  delete this.chartPosition;
787
757
  }
788
758
  /**
@@ -820,10 +790,7 @@ class Pointer {
820
790
  * @function Highcharts.Pointer#onDocumentTouchEnd
821
791
  */
822
792
  onDocumentTouchEnd(e) {
823
- const hoverChart = charts[pick(Pointer.hoverChartIndex, -1)];
824
- if (hoverChart) {
825
- hoverChart.pointer.drop(e);
826
- }
793
+ this.onDocumentMouseUp(e);
827
794
  }
828
795
  /**
829
796
  * @private
@@ -878,10 +845,9 @@ class Pointer {
878
845
  * @function Highcharts.Pointer#onDocumentMouseUp
879
846
  */
880
847
  onDocumentMouseUp(e) {
881
- const chart = charts[pick(Pointer.hoverChartIndex, -1)];
882
- if (chart) {
883
- chart.pointer.drop(e);
884
- }
848
+ charts[pick(Pointer.hoverChartIndex, -1)]
849
+ ?.pointer
850
+ ?.drop(e);
885
851
  }
886
852
  /**
887
853
  * Handle touch events with two touches
@@ -889,132 +855,182 @@ class Pointer {
889
855
  * @function Highcharts.Pointer#pinch
890
856
  */
891
857
  pinch(e) {
892
- const self = this, chart = self.chart, pinchDown = self.pinchDown, touches = (e.touches || []), touchesLength = touches.length, lastValidTouch = self.lastValidTouch, hasZoom = self.hasZoom, transform = {}, fireClickEvent = touchesLength === 1 && ((self.inClass(e.target, 'highcharts-tracker') &&
858
+ const pointer = this, { chart, hasZoom, lastTouches } = pointer, touches = [].map.call(e.touches || [],
859
+ // Normalize each touch
860
+ (touch) => pointer.normalize(touch)), touchesLength = touches.length, fireClickEvent = touchesLength === 1 && ((pointer.inClass(e.target, 'highcharts-tracker') &&
893
861
  chart.runTrackerClick) ||
894
- self.runChartClick), clip = {}, tooltip = self.chart.tooltip, followTouchMove = touchesLength === 1 &&
895
- pick((tooltip && tooltip.options.followTouchMove), true);
896
- let selectionMarker = self.selectionMarker;
862
+ pointer.runChartClick), tooltip = chart.tooltip, followTouchMove = touchesLength === 1 &&
863
+ pick(tooltip?.options.followTouchMove, true);
897
864
  // Don't initiate panning until the user has pinched. This prevents us
898
865
  // from blocking page scrolling as users scroll down a long page
899
866
  // (#4210).
900
867
  if (touchesLength > 1) {
901
- self.initiated = true;
868
+ pointer.initiated = true;
902
869
  }
903
870
  else if (followTouchMove) {
904
871
  // #16119: Prevent blocking scroll when single-finger panning is
905
872
  // not enabled
906
- self.initiated = false;
873
+ pointer.initiated = false;
907
874
  }
908
875
  // On touch devices, only proceed to trigger click if a handler is
909
876
  // defined
910
877
  if (hasZoom &&
911
- self.initiated &&
878
+ pointer.initiated &&
912
879
  !fireClickEvent &&
913
880
  e.cancelable !== false) {
914
881
  e.preventDefault();
915
882
  }
916
- // Normalize each touch
917
- [].map.call(touches, function (e) {
918
- return self.normalize(e);
919
- });
920
883
  // Register the touch start position
921
884
  if (e.type === 'touchstart') {
922
- [].forEach.call(touches, function (e, i) {
923
- pinchDown[i] = { chartX: e.chartX, chartY: e.chartY };
924
- });
925
- lastValidTouch.x = [pinchDown[0].chartX, pinchDown[1] &&
926
- pinchDown[1].chartX];
927
- lastValidTouch.y = [pinchDown[0].chartY, pinchDown[1] &&
928
- pinchDown[1].chartY];
929
- // Identify the data bounds in pixels
930
- chart.axes.forEach(function (axis) {
931
- if (axis.zoomEnabled) {
932
- const bounds = chart.bounds[axis.horiz ? 'h' : 'v'], minPixelPadding = axis.minPixelPadding, min = axis.toPixels(Math.min(pick(axis.options.min, axis.dataMin), axis.dataMin)), max = axis.toPixels(Math.max(pick(axis.options.max, axis.dataMax), axis.dataMax)), absMin = Math.min(min, max), absMax = Math.max(min, max);
933
- // Store the bounds for use in the touchmove handler
934
- bounds.min = Math.min(axis.pos, absMin - minPixelPadding);
935
- bounds.max = Math.max(axis.pos + axis.len, absMax + minPixelPadding);
936
- }
937
- });
938
- self.res = true; // reset on next move
885
+ pointer.pinchDown = touches;
886
+ pointer.res = true; // Reset on next move
939
887
  // Optionally move the tooltip on touchmove
940
888
  }
941
889
  else if (followTouchMove) {
942
- this.runPointActions(self.normalize(e));
943
- // Event type is touchmove, handle panning and pinching
890
+ this.runPointActions(pointer.normalize(e));
891
+ // Event type is touchmove, handle panning and pinching. The length can
892
+ // be 0 when releasing, if touchend fires first
944
893
  }
945
- else if (pinchDown.length) { // can be 0 when releasing, if touchend
946
- // fires first
947
- fireEvent(chart, 'touchpan', { originalEvent: e }, () => {
948
- // Set the marker
949
- if (!selectionMarker) {
950
- // @todo It's a mock object, so maybe we need a separate
951
- // interface
952
- self.selectionMarker = selectionMarker = extend({
953
- destroy: noop,
954
- touch: true
955
- }, chart.plotBox);
956
- }
957
- self.pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
958
- self.hasPinched = hasZoom;
959
- // Scale and translate the groups to provide visual feedback
960
- // during pinching
961
- self.scaleGroups(transform, clip);
894
+ else if (lastTouches) {
895
+ fireEvent(chart, 'touchpan', {
896
+ originalEvent: e,
897
+ touches
898
+ }, () => {
899
+ const boxFromTouches = (touches) => {
900
+ const finger0 = touches[0], finger1 = touches[1] || finger0;
901
+ return {
902
+ x: finger0.chartX,
903
+ y: finger0.chartY,
904
+ width: finger1.chartX - finger0.chartX,
905
+ height: finger1.chartY - finger0.chartY
906
+ };
907
+ };
908
+ chart.transform({
909
+ axes: chart.axes
910
+ .filter((axis) => axis.zoomEnabled &&
911
+ ((this.zoomHor && axis.horiz) ||
912
+ (this.zoomVert && !axis.horiz))),
913
+ to: boxFromTouches(touches),
914
+ from: boxFromTouches(lastTouches),
915
+ trigger: e.type
916
+ });
962
917
  });
963
- if (self.res) {
964
- self.res = false;
918
+ if (pointer.res) {
919
+ pointer.res = false;
965
920
  this.reset(false, 0);
966
921
  }
967
922
  }
923
+ pointer.lastTouches = touches;
968
924
  }
969
925
  /**
970
926
  * Run translation operations
971
927
  * @private
972
928
  * @function Highcharts.Pointer#pinchTranslate
973
- */
974
- pinchTranslate(pinchDown, touches, transform, selectionMarker, clip, lastValidTouch) {
929
+ * /
930
+ public pinchTranslate(
931
+ pinchDown: Array<any>,
932
+ touches: Array<PointerEvent>,
933
+ transform: any,
934
+ selectionMarker: any,
935
+ clip: any,
936
+ lastValidTouch: any
937
+ ): void {
975
938
  if (this.zoomHor) {
976
- this.pinchTranslateDirection(true, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
939
+ this.pinchTranslateDirection(
940
+ true,
941
+ pinchDown,
942
+ touches,
943
+ transform,
944
+ selectionMarker,
945
+ clip,
946
+ lastValidTouch
947
+ );
977
948
  }
978
949
  if (this.zoomVert) {
979
- this.pinchTranslateDirection(false, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch);
950
+ this.pinchTranslateDirection(
951
+ false,
952
+ pinchDown,
953
+ touches,
954
+ transform,
955
+ selectionMarker,
956
+ clip,
957
+ lastValidTouch
958
+ );
980
959
  }
981
960
  }
961
+ */
982
962
  /**
983
963
  * Run translation operations for each direction (horizontal and vertical)
984
964
  * independently.
985
965
  * @private
986
966
  * @function Highcharts.Pointer#pinchTranslateDirection
987
- */
988
- pinchTranslateDirection(horiz, pinchDown, touches, transform, selectionMarker, clip, lastValidTouch, forcedScale) {
989
- const chart = this.chart, xy = horiz ? 'x' : 'y', XY = horiz ? 'X' : 'Y', sChartXY = ('chart' + XY), wh = horiz ? 'width' : 'height', plotLeftTop = chart['plot' + (horiz ? 'Left' : 'Top')], inverted = chart.inverted, bounds = chart.bounds[horiz ? 'h' : 'v'], singleTouch = pinchDown.length === 1, touch0Start = pinchDown[0][sChartXY], touch1Start = !singleTouch && pinchDown[1][sChartXY], setScale = function () {
990
- // Don't zoom if fingers are too close on this axis
991
- if (typeof touch1Now === 'number' &&
992
- Math.abs(touch0Start - touch1Start) > 20) {
993
- scale = forcedScale ||
994
- Math.abs(touch0Now - touch1Now) /
967
+ * /
968
+ public pinchTranslateDirection(
969
+ horiz: boolean,
970
+ pinchDown: Array<any>,
971
+ touches: Array<PointerEvent>,
972
+ transform: any,
973
+ selectionMarker: any,
974
+ clip: any,
975
+ lastValidTouch: any,
976
+ forcedScale?: number
977
+ ): void {
978
+ const chart = this.chart,
979
+ xy: ('x'|'y') = horiz ? 'x' : 'y',
980
+ XY: ('X'|'Y') = horiz ? 'X' : 'Y',
981
+ sChartXY: ('chartX'|'chartY') = ('chart' + XY) as any,
982
+ wh = horiz ? 'width' : 'height',
983
+ plotLeftTop = (chart as any)['plot' + (horiz ? 'Left' : 'Top')],
984
+ inverted = chart.inverted,
985
+ bounds = chart.bounds[horiz ? 'h' : 'v'],
986
+ singleTouch = pinchDown.length === 1,
987
+ touch0Start = pinchDown[0][sChartXY],
988
+ touch1Start = !singleTouch && pinchDown[1][sChartXY],
989
+ setScale = function (): void {
990
+ // Don't zoom if fingers are too close on this axis
991
+ if (
992
+ typeof touch1Now === 'number' &&
993
+ Math.abs(touch0Start - touch1Start) > 20
994
+ ) {
995
+ scale = forcedScale ||
996
+ Math.abs(touch0Now - touch1Now) /
995
997
  Math.abs(touch0Start - touch1Start);
996
- }
997
- clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;
998
- selectionWH = chart['plot' + (horiz ? 'Width' : 'Height')] / scale;
999
- };
1000
- let selectionWH, selectionXY, clipXY, scale = forcedScale || 1, touch0Now = touches[0][sChartXY], touch1Now = !singleTouch && touches[1][sChartXY], outOfBounds;
998
+ }
999
+
1000
+ clipXY = ((plotLeftTop - touch0Now) / scale) + touch0Start;
1001
+ selectionWH = (chart as any)[
1002
+ 'plot' + (horiz ? 'Width' : 'Height')
1003
+ ] / scale;
1004
+ };
1005
+
1006
+ let selectionWH: any,
1007
+ selectionXY,
1008
+ clipXY: any,
1009
+ scale = forcedScale || 1,
1010
+ touch0Now = touches[0][sChartXY],
1011
+ touch1Now = !singleTouch && touches[1][sChartXY],
1012
+ outOfBounds;
1013
+
1001
1014
  // Set the scale, first pass
1002
1015
  setScale();
1016
+
1003
1017
  // The clip position (x or y) is altered if out of bounds, the selection
1004
1018
  // position is not
1005
1019
  selectionXY = clipXY;
1020
+
1006
1021
  // Out of bounds
1007
1022
  if (selectionXY < bounds.min) {
1008
1023
  selectionXY = bounds.min;
1009
1024
  outOfBounds = true;
1010
- }
1011
- else if (selectionXY + selectionWH > bounds.max) {
1025
+ } else if (selectionXY + selectionWH > bounds.max) {
1012
1026
  selectionXY = bounds.max - selectionWH;
1013
1027
  outOfBounds = true;
1014
1028
  }
1029
+
1015
1030
  // Is the chart dragged off its bounds, determined by dataMin and
1016
1031
  // dataMax?
1017
1032
  if (outOfBounds) {
1033
+
1018
1034
  // Modify the touchNow position in order to create an elastic drag
1019
1035
  // movement. This indicates to the user that the chart is responsive
1020
1036
  // but can't be dragged further.
@@ -1022,13 +1038,15 @@ class Pointer {
1022
1038
  if (typeof touch1Now === 'number') {
1023
1039
  touch1Now -= 0.8 * (touch1Now - lastValidTouch[xy][1]);
1024
1040
  }
1041
+
1025
1042
  // Set the scale, second pass to adapt to the modified touchNow
1026
1043
  // positions
1027
1044
  setScale();
1028
- }
1029
- else {
1045
+
1046
+ } else {
1030
1047
  lastValidTouch[xy] = [touch0Now, touch1Now];
1031
1048
  }
1049
+
1032
1050
  // Set geometry for clipping, selection and transformation
1033
1051
  if (!inverted) {
1034
1052
  clip[xy] = clipXY - plotLeftTop;
@@ -1037,6 +1055,7 @@ class Pointer {
1037
1055
  const scaleKey = inverted ?
1038
1056
  (horiz ? 'scaleY' : 'scaleX') : 'scale' + XY;
1039
1057
  const transformScale = inverted ? 1 / scale : scale;
1058
+
1040
1059
  selectionMarker[wh] = selectionWH;
1041
1060
  selectionMarker[xy] = selectionXY;
1042
1061
  // Invert scale if needed (#19217)
@@ -1044,6 +1063,7 @@ class Pointer {
1044
1063
  transform['translate' + XY] = (transformScale * plotLeftTop) +
1045
1064
  (touch0Now - (transformScale * touch0Start));
1046
1065
  }
1066
+ */
1047
1067
  /**
1048
1068
  * Reset the tracking by hiding the tooltip, the hover series state and the
1049
1069
  * hover point
@@ -1123,7 +1143,7 @@ class Pointer {
1123
1143
  chart.axes.forEach(function (axis) {
1124
1144
  axis.hideCrosshair();
1125
1145
  });
1126
- pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;
1146
+ chart.hoverPoints = chart.hoverPoint = void 0;
1127
1147
  }
1128
1148
  }
1129
1149
  /**
@@ -1222,12 +1242,9 @@ class Pointer {
1222
1242
  }
1223
1243
  // Start the event listener to pick up the tooltip and crosshairs
1224
1244
  if (!pointer.unDocMouseMove) {
1225
- pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {
1226
- const chart = charts[Pointer.hoverChartIndex];
1227
- if (chart) {
1228
- chart.pointer.onDocumentMouseMove(e);
1229
- }
1230
- });
1245
+ pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', (e) => charts[Pointer.hoverChartIndex ?? -1]
1246
+ ?.pointer
1247
+ ?.onDocumentMouseMove(e));
1231
1248
  pointer.eventsToUnbind.push(pointer.unDocMouseMove);
1232
1249
  }
1233
1250
  // Issues related to crosshair #4927, #5269 #5066, #5658
@@ -1251,34 +1268,6 @@ class Pointer {
1251
1268
  }
1252
1269
  });
1253
1270
  }
1254
- /**
1255
- * Scale series groups to a certain scale and translation.
1256
- * @private
1257
- * @function Highcharts.Pointer#scaleGroups
1258
- */
1259
- scaleGroups(attribs, clip) {
1260
- const chart = this.chart;
1261
- // Scale each series
1262
- chart.series.forEach(function (series) {
1263
- const seriesAttribs = attribs || series.getPlotBox('series'); // #1701 and #19217
1264
- if (series.group &&
1265
- ((series.xAxis && series.xAxis.zoomEnabled) ||
1266
- chart.mapView)) {
1267
- series.group.attr(seriesAttribs);
1268
- if (series.markerGroup) {
1269
- series.markerGroup.attr(
1270
- // #20018
1271
- attribs || series.getPlotBox('marker'));
1272
- series.markerGroup.clip(clip ? chart.clipRect : null);
1273
- }
1274
- if (series.dataLabelsGroup) {
1275
- series.dataLabelsGroup.attr(seriesAttribs);
1276
- }
1277
- }
1278
- });
1279
- // Clip
1280
- chart.clipRect.attr(clip || chart.clipBox);
1281
- }
1282
1271
  /**
1283
1272
  * Set the JS DOM events on the container and document. This method should
1284
1273
  * contain a one-to-one assignment between methods and their handlers. Any
@@ -1292,8 +1281,7 @@ class Pointer {
1292
1281
  container.onmousedown = this.onContainerMouseDown.bind(this);
1293
1282
  container.onmousemove = this.onContainerMouseMove.bind(this);
1294
1283
  container.onclick = this.onContainerClick.bind(this);
1295
- this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)));
1296
- this.eventsToUnbind.push(addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));
1284
+ this.eventsToUnbind.push(addEvent(container, 'mouseenter', this.onContainerMouseEnter.bind(this)), addEvent(container, 'mouseleave', this.onContainerMouseLeave.bind(this)));
1297
1285
  if (!Pointer.unbindDocumentMouseUp) {
1298
1286
  Pointer.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', this.onDocumentMouseUp.bind(this));
1299
1287
  }
@@ -1306,12 +1294,9 @@ class Pointer {
1306
1294
  }));
1307
1295
  parent = parent.parentElement;
1308
1296
  }
1309
- if (H.hasTouch) {
1310
- this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }));
1311
- this.eventsToUnbind.push(addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));
1312
- if (!Pointer.unbindDocumentTouchEnd) {
1313
- Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });
1314
- }
1297
+ this.eventsToUnbind.push(addEvent(container, 'touchstart', this.onContainerTouchStart.bind(this), { passive: false }), addEvent(container, 'touchmove', this.onContainerTouchMove.bind(this), { passive: false }));
1298
+ if (!Pointer.unbindDocumentTouchEnd) {
1299
+ Pointer.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', this.onDocumentTouchEnd.bind(this), { passive: false });
1315
1300
  }
1316
1301
  }
1317
1302
  /**
@@ -1325,7 +1310,7 @@ class Pointer {
1325
1310
  const hoverChart = H.charts[pick(Pointer.hoverChartIndex, -1)];
1326
1311
  if (hoverChart &&
1327
1312
  hoverChart !== chart) {
1328
- hoverChart.pointer.onContainerMouseLeave(e || { relatedTarget: chart.container });
1313
+ hoverChart.pointer?.onContainerMouseLeave(e || { relatedTarget: chart.container });
1329
1314
  }
1330
1315
  if (!hoverChart ||
1331
1316
  !hoverChart.mouseIsDown) {
@@ -1338,8 +1323,8 @@ class Pointer {
1338
1323
  * @function Highcharts.Pointer#touch
1339
1324
  */
1340
1325
  touch(e, start) {
1341
- const chart = this.chart;
1342
- let hasMoved, pinchDown, isInside;
1326
+ const { chart, pinchDown = [] } = this;
1327
+ let hasMoved, isInside;
1343
1328
  this.setHoverChartIndex();
1344
1329
  if (e.touches.length === 1) {
1345
1330
  e = this.normalize(e);
@@ -1356,12 +1341,12 @@ class Pointer {
1356
1341
  // however, the touchmove doesn't fire unless the finger moves
1357
1342
  // more than ~4px. So we emulate this behaviour in Android by
1358
1343
  // checking how much it moved, and cancelling on small
1359
- // distances. #3450.
1344
+ // distances. #3450. Tested and still relevant as of 2024.
1360
1345
  if (e.type === 'touchmove') {
1361
- pinchDown = this.pinchDown;
1362
- hasMoved = pinchDown[0] ? Math.sqrt(// #5266
1363
- Math.pow(pinchDown[0].chartX - e.chartX, 2) +
1364
- Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 4 : false;
1346
+ hasMoved = pinchDown[0] ? // #5266
1347
+ (Math.pow(pinchDown[0].chartX - e.chartX, 2) +
1348
+ Math.pow(pinchDown[0].chartY - e.chartY, 2)) >= 16 :
1349
+ false;
1365
1350
  }
1366
1351
  if (pick(hasMoved, true)) {
1367
1352
  this.pinch(e);
@@ -1394,7 +1379,7 @@ class Pointer {
1394
1379
  * @function Highcharts.Pointer#zoomOption
1395
1380
  */
1396
1381
  zoomOption(e) {
1397
- const chart = this.chart, options = chart.options.chart, inverted = chart.inverted;
1382
+ const chart = this.chart, inverted = chart.inverted;
1398
1383
  let zoomType = chart.zooming.type || '', zoomX, zoomY;
1399
1384
  // Look for the pinchType option
1400
1385
  if (/touch/.test(e.type)) {
@@ -1427,7 +1412,7 @@ class Pointer {
1427
1412
  * @private
1428
1413
  */
1429
1414
  function compose(ChartClass) {
1430
- if (pushUnique(composed, compose)) {
1415
+ if (pushUnique(composed, 'Core.Pointer')) {
1431
1416
  addEvent(ChartClass, 'beforeRender', function () {
1432
1417
  /**
1433
1418
  * The Pointer that keeps track of mouse and touch