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
@@ -501,7 +501,7 @@ AST.emptyHTML = emptyHTML;
501
501
  /**
502
502
  * Allow all custom SVG and HTML attributes, references and tags (together
503
503
  * with potentially harmful ones) to be added to the DOM from the chart
504
- * configuration. In other words, disable the the allow-listing which is the
504
+ * configuration. In other words, disable the allow-listing which is the
505
505
  * primary functionality of the AST.
506
506
  *
507
507
  * WARNING: Setting this property to `true` while allowing untrusted user
@@ -8,11 +8,98 @@
8
8
  *
9
9
  * */
10
10
  'use strict';
11
+ import AST from './AST.js';
11
12
  import H from '../../Globals.js';
12
13
  const { composed } = H;
13
14
  import SVGElement from '../SVG/SVGElement.js';
14
15
  import U from '../../Utilities.js';
15
- const { css, defined, extend, pushUnique, pInt } = U;
16
+ const { attr, css, createElement, defined, extend, pInt, pushUnique } = U;
17
+ /**
18
+ * The opacity and visibility properties are set as attributes on the main
19
+ * element and SVG groups, and as identical CSS properties on the HTML element
20
+ * and the ancestry divs. (#3542)
21
+ *
22
+ * @private
23
+ */
24
+ function commonSetter(value, key, elem) {
25
+ const style = this.div?.style || elem.style;
26
+ SVGElement.prototype[`${key}Setter`].call(this, value, key, elem);
27
+ if (style) {
28
+ style[key] = value;
29
+ }
30
+ }
31
+ /**
32
+ * Decorate each SVG group in the ancestry line. Each SVG `g` element that
33
+ * contains children with useHTML, will receive a `div` element counterpart to
34
+ * contain the HTML span. These div elements are translated and styled like
35
+ * original `g` counterparts.
36
+ *
37
+ * @private
38
+ */
39
+ const decorateSVGGroup = (g, container) => {
40
+ if (!g.div) {
41
+ const className = attr(g.element, 'class'), cssProto = g.css;
42
+ // Create the parallel HTML group
43
+ const div = createElement('div', className ? { className } : void 0, {
44
+ // Add HTML specific styles
45
+ position: 'absolute',
46
+ left: `${g.translateX || 0}px`,
47
+ top: `${g.translateY || 0}px`,
48
+ // Add pre-existing styles
49
+ ...g.styles,
50
+ // Add g attributes that correspond to CSS
51
+ display: g.display,
52
+ opacity: g.opacity,
53
+ visibility: g.visibility
54
+ },
55
+ // The top group is appended to container
56
+ g.parentGroup?.div || container);
57
+ g.classSetter = (value, key, element) => {
58
+ element.setAttribute('class', value);
59
+ div.className = value;
60
+ };
61
+ /**
62
+ * Common translate setter for X and Y on the HTML group.
63
+ *
64
+ * Reverted the fix for #6957 due to positioning problems and offline
65
+ * export (#7254, #7280, #7529)
66
+ * @private
67
+ */
68
+ g.translateXSetter = g.translateYSetter = (value, key) => {
69
+ g[key] = value;
70
+ div.style[key === 'translateX' ? 'left' : 'top'] = `${value}px`;
71
+ g.doTransform = true;
72
+ };
73
+ g.opacitySetter = g.visibilitySetter = commonSetter;
74
+ // Extend the parent group's css function by updating the parallel div
75
+ // counterpart with the same style.
76
+ g.css = (styles) => {
77
+ // Call the base css method. The `parentGroup` can be either an
78
+ // SVGElement or an SVGLabel, in which the css method is extended
79
+ // (#19200).
80
+ cssProto.call(g, styles);
81
+ // #6794
82
+ if (styles.cursor) {
83
+ div.style.cursor = styles.cursor;
84
+ }
85
+ // #18821
86
+ if (styles.pointerEvents) {
87
+ div.style.pointerEvents = styles.pointerEvents;
88
+ }
89
+ return g;
90
+ };
91
+ // Event handling
92
+ g.on = function () {
93
+ SVGElement.prototype.on.apply({
94
+ element: div,
95
+ onEvents: g.onEvents
96
+ }, arguments);
97
+ return g;
98
+ };
99
+ g.div = div;
100
+ }
101
+ return g.div;
102
+ };
16
103
  /* *
17
104
  *
18
105
  * Class
@@ -25,27 +112,45 @@ class HTMLElement extends SVGElement {
25
112
  *
26
113
  * */
27
114
  /**
28
- * Modifies SVGElement to support HTML elements.
115
+ * Compose
29
116
  * @private
30
117
  */
31
- static compose(SVGElementClass) {
118
+ static compose(SVGRendererClass) {
32
119
  if (pushUnique(composed, this.compose)) {
33
- const htmlElementProto = HTMLElement.prototype, svgElementProto = SVGElementClass.prototype;
34
- svgElementProto.getSpanCorrection = htmlElementProto
35
- .getSpanCorrection;
36
- svgElementProto.htmlCss = htmlElementProto.htmlCss;
37
- svgElementProto.htmlGetBBox = htmlElementProto.htmlGetBBox;
38
- svgElementProto.htmlUpdateTransform = htmlElementProto
39
- .htmlUpdateTransform;
40
- svgElementProto.setSpanRotation = htmlElementProto.setSpanRotation;
120
+ /**
121
+ * Create a HTML text node. This is used by the SVG renderer `text`
122
+ * and `label` functions through the `useHTML` parameter.
123
+ *
124
+ * @private
125
+ */
126
+ SVGRendererClass.prototype.html = function (str, x, y) {
127
+ return new HTMLElement(this, 'span')
128
+ // Set the default attributes
129
+ .attr({
130
+ text: str,
131
+ x: Math.round(x),
132
+ y: Math.round(y)
133
+ });
134
+ };
41
135
  }
42
- return SVGElementClass;
43
136
  }
44
137
  /* *
45
138
  *
46
139
  * Functions
47
140
  *
48
141
  * */
142
+ constructor(renderer, nodeName) {
143
+ super(renderer, nodeName);
144
+ this.css({
145
+ position: 'absolute',
146
+ ...(renderer.styledMode ? {} : {
147
+ fontFamily: renderer.style.fontFamily,
148
+ fontSize: renderer.style.fontSize
149
+ })
150
+ });
151
+ // Keep the whiteSpace style outside the `HTMLElement.styles` collection
152
+ this.element.style.whiteSpace = 'nowrap';
153
+ }
49
154
  /**
50
155
  * Get the correction in X and Y positioning as the element is rotated.
51
156
  * @private
@@ -58,7 +163,7 @@ class HTMLElement extends SVGElement {
58
163
  * Apply CSS to HTML elements. This is used in text within SVG rendering.
59
164
  * @private
60
165
  */
61
- htmlCss(styles) {
166
+ css(styles) {
62
167
  const { element } = this,
63
168
  // When setting or unsetting the width style, we need to update
64
169
  // transform (#8809)
@@ -79,12 +184,16 @@ class HTMLElement extends SVGElement {
79
184
  css(element, styles);
80
185
  // Now that all styles are applied, to the transform
81
186
  if (doTransform) {
82
- this.htmlUpdateTransform();
187
+ this.updateTransform();
83
188
  }
84
189
  return this;
85
190
  }
86
191
  /**
87
192
  * The useHTML method for calculating the bounding box based on offsets.
193
+ * Called internally from the `SVGElement.getBBox` function and subsequently
194
+ * rotated.
195
+ *
196
+ * @private
88
197
  */
89
198
  htmlGetBBox() {
90
199
  const { element } = this;
@@ -96,17 +205,19 @@ class HTMLElement extends SVGElement {
96
205
  };
97
206
  }
98
207
  /**
208
+ * Batch update styles and attributes related to transform
209
+ *
99
210
  * @private
100
211
  */
101
- htmlUpdateTransform() {
212
+ updateTransform() {
102
213
  // Aligning non added elements is expensive
103
214
  if (!this.added) {
104
215
  this.alignOnAdd = true;
105
216
  return;
106
217
  }
107
- const { element, renderer, rotation, styles, textAlign = 'left', textWidth, translateX = 0, translateY = 0, x = 0, y = 0 } = this, alignCorrection = {
218
+ const { element, renderer, rotation, rotationOriginX, rotationOriginY, styles, textAlign = 'left', textWidth, translateX = 0, translateY = 0, x = 0, y = 0 } = this, alignCorrection = {
108
219
  left: 0, center: 0.5, right: 1
109
- }[textAlign], whiteSpace = styles?.whiteSpace;
220
+ }[textAlign], whiteSpace = styles.whiteSpace;
110
221
  // Get the pixel length of the text
111
222
  const getTextPxLength = () => {
112
223
  if (this.textPxLength) {
@@ -132,7 +243,7 @@ class HTMLElement extends SVGElement {
132
243
  element.innerHTML,
133
244
  textWidth,
134
245
  this.textAlign
135
- ].join(',');
246
+ ].join(','), parentPadding = (this.parentGroup?.padding * -1) || 0;
136
247
  let baseline, hasBoxWidthChanged = false;
137
248
  // Update textWidth. Use the memoized textPxLength if possible, to
138
249
  // avoid the getTextPxLength function using elem.offsetWidth.
@@ -166,7 +277,7 @@ class HTMLElement extends SVGElement {
166
277
  if (defined(rotation) &&
167
278
  ((rotation !== (this.oldRotation || 0)) ||
168
279
  (textAlign !== this.oldAlign))) {
169
- this.setSpanRotation(rotation, alignCorrection, baseline);
280
+ this.setSpanRotation(rotation, parentPadding, parentPadding);
170
281
  }
171
282
  this.getSpanCorrection(
172
283
  // Avoid elem.offsetWidth if we can, it affects rendering
@@ -174,11 +285,13 @@ class HTMLElement extends SVGElement {
174
285
  ((!defined(rotation) && this.textPxLength) || // #7920
175
286
  element.offsetWidth), baseline, alignCorrection);
176
287
  }
177
- // Apply position with correction
178
- css(element, {
179
- left: (x + (this.xCorr || 0)) + 'px',
180
- top: (y + (this.yCorr || 0)) + 'px'
181
- });
288
+ // Apply position with correction and rotation origin
289
+ const { xCorr = 0, yCorr = 0 } = this, rotOriginX = (rotationOriginX ?? x) - xCorr - x - parentPadding, rotOriginY = (rotationOriginY ?? y) - yCorr - y - parentPadding, styles = {
290
+ left: `${x + xCorr}px`,
291
+ top: `${y + yCorr}px`,
292
+ transformOrigin: `${rotOriginX}px ${rotOriginY}px`
293
+ };
294
+ css(element, styles);
182
295
  // Record current text transform
183
296
  this.cTT = currentTextTransform;
184
297
  this.oldRotation = rotation;
@@ -189,16 +302,90 @@ class HTMLElement extends SVGElement {
189
302
  * Set the rotation of an individual HTML span.
190
303
  * @private
191
304
  */
192
- setSpanRotation(rotation, alignCorrection, baseline) {
305
+ setSpanRotation(rotation, originX, originY) {
193
306
  // CSS transform and transform-origin both supported without prefix
194
307
  // since Firefox 16 (2012), IE 10 (2012), Chrome 36 (2014), Safari 9
195
308
  // (2015).;
196
309
  css(this.element, {
197
310
  transform: `rotate(${rotation}deg)`,
198
- transformOrigin: `${alignCorrection * 100}% ${baseline}px`
311
+ transformOrigin: `${originX}% ${originY}px`
199
312
  });
200
313
  }
314
+ /**
315
+ * Add the element to a group wrapper. For HTML elements, a parallel div
316
+ * will be created for each ancenstor SVG `g` element.
317
+ *
318
+ * @private
319
+ */
320
+ add(parentGroup) {
321
+ const container = this.renderer.box
322
+ .parentNode, parents = [];
323
+ let div;
324
+ this.parentGroup = parentGroup;
325
+ // Create a parallel divs to hold the HTML elements
326
+ if (parentGroup) {
327
+ div = parentGroup.div;
328
+ if (!div) {
329
+ // Read the parent chain into an array and read from top
330
+ // down
331
+ let svgGroup = parentGroup;
332
+ while (svgGroup) {
333
+ parents.push(svgGroup);
334
+ // Move up to the next parent group
335
+ svgGroup = svgGroup.parentGroup;
336
+ }
337
+ // Decorate each of the ancestor group elements with a parallel
338
+ // div that reflects translation and styling
339
+ for (const parentGroup of parents.reverse()) {
340
+ div = decorateSVGGroup(parentGroup, container);
341
+ }
342
+ }
343
+ }
344
+ (div || container).appendChild(this.element);
345
+ this.added = true;
346
+ if (this.alignOnAdd) {
347
+ this.updateTransform();
348
+ }
349
+ return this;
350
+ }
351
+ /**
352
+ * Text setter
353
+ * @private
354
+ */
355
+ textSetter(value) {
356
+ if (value !== this.textStr) {
357
+ delete this.bBox;
358
+ delete this.oldTextWidth;
359
+ AST.setElementHTML(this.element, value ?? '');
360
+ this.textStr = value;
361
+ this.doTransform = true;
362
+ }
363
+ }
364
+ /**
365
+ * Align setter
366
+ *
367
+ * @private
368
+ */
369
+ alignSetter(value) {
370
+ this.alignValue = this.textAlign = value;
371
+ this.doTransform = true;
372
+ }
373
+ /**
374
+ * Various setters which rely on update transform
375
+ * @private
376
+ */
377
+ xSetter(value, key) {
378
+ this[key] = value;
379
+ this.doTransform = true;
380
+ }
201
381
  }
382
+ // Some shared setters
383
+ const proto = HTMLElement.prototype;
384
+ proto.visibilitySetter = proto.opacitySetter = commonSetter;
385
+ proto.ySetter =
386
+ proto.rotationSetter =
387
+ proto.rotationOriginXSetter =
388
+ proto.rotationOriginYSetter = proto.xSetter;
202
389
  /* *
203
390
  *
204
391
  * Default Export
@@ -134,7 +134,7 @@ var RendererUtilities;
134
134
  origBoxes[i].pos = box.pos + posInCompositeBox;
135
135
  // If the distance between the position and the target exceeds
136
136
  // maxDistance, abort the loop and decrease the length in
137
- // increments of 10% to recursively reduce the number of
137
+ // increments of 10% to recursively reduce the number of
138
138
  // visible boxes by rank. Once all boxes are within the
139
139
  // maxDistance, we're good.
140
140
  if (typeof maxDistance !== 'undefined' &&
@@ -12,9 +12,9 @@ import A from '../../Animation/AnimationUtilities.js';
12
12
  const { animate, animObject, stop } = A;
13
13
  import Color from '../../Color/Color.js';
14
14
  import H from '../../Globals.js';
15
- const { deg2rad, doc, noop, svg, SVG_NS, win } = H;
15
+ const { deg2rad, doc, svg, SVG_NS, win } = H;
16
16
  import U from '../../Utilities.js';
17
- const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, syncTimeout, uniqueKey } = U;
17
+ const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, replaceNested, syncTimeout, uniqueKey } = U;
18
18
  /* *
19
19
  *
20
20
  * Class
@@ -40,6 +40,10 @@ const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, i
40
40
  * {@link Highcharts.SVGRenderer#g|g}
41
41
  * and more.
42
42
  *
43
+ * See [How to use the SVG Renderer](
44
+ * https://www.highcharts.com/docs/advanced-chart-features/renderer) for a
45
+ * comprehensive tutorial on how to draw SVG elements on a chart.
46
+ *
43
47
  * @class
44
48
  * @name Highcharts.SVGElement
45
49
  */
@@ -202,9 +206,13 @@ class SVGElement {
202
206
  * box is `spacingBox`, it refers to `Renderer.spacingBox` which
203
207
  * holds `width`, `height`, `x` and `y` properties.
204
208
  *
209
+ * @param {boolean} [redraw]
210
+ * Decide if SVGElement should be redrawn with new alignment or
211
+ * just change its attributes.
212
+ *
205
213
  * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.
206
214
  */
207
- align(alignOptions, alignByTranslate, box) {
215
+ align(alignOptions, alignByTranslate, box, redraw = true) {
208
216
  const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects;
209
217
  let x, y, alignTo, alignFactor, vAlignFactor;
210
218
  // First call on instanciate
@@ -225,8 +233,7 @@ class SVGElement {
225
233
  alignByTranslate = this.alignByTranslate;
226
234
  alignTo = this.alignTo;
227
235
  }
228
- box = pick(box, renderer[alignTo], alignTo === 'scrollablePlotBox' ?
229
- renderer.plotBox : void 0, renderer);
236
+ box = pick(box, renderer[alignTo], renderer);
230
237
  // Assign variables
231
238
  const align = alignOptions.align, vAlign = alignOptions.verticalAlign;
232
239
  // default: left align
@@ -258,8 +265,10 @@ class SVGElement {
258
265
  }
259
266
  attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);
260
267
  // Animate only if already placed
261
- this[this.placed ? 'animate' : 'attr'](attribs);
262
- this.placed = true;
268
+ if (redraw) {
269
+ this[this.placed ? 'animate' : 'attr'](attribs);
270
+ this.placed = true;
271
+ }
263
272
  this.alignAttr = attribs;
264
273
  return this;
265
274
  }
@@ -610,7 +619,7 @@ class SVGElement {
610
619
  gradients = renderer.gradients;
611
620
  stops = colorOptions.stops;
612
621
  radialReference = elem.radialReference;
613
- // Keep < 2.2 kompatibility
622
+ // Keep < 2.2 compatibility
614
623
  if (isArray(gradAttr)) {
615
624
  colorOptions[gradName] = gradAttr = {
616
625
  x1: gradAttr[0],
@@ -730,8 +739,8 @@ class SVGElement {
730
739
  styles.width) {
731
740
  textWidth = this.textWidth = pInt(styles.width);
732
741
  }
733
- // store object
734
- this.styles = styles;
742
+ // Store object
743
+ extend(this.styles, styles);
735
744
  if (textWidth && (!svg && this.renderer.forExport)) {
736
745
  delete styles.width;
737
746
  }
@@ -932,7 +941,7 @@ class SVGElement {
932
941
  * @function Highcharts.SVGElement#getBBox
933
942
  *
934
943
  * @param {boolean} [reload]
935
- * Skip the cache and get the updated DOM bouding box.
944
+ * Skip the cache and get the updated DOM bounding box.
936
945
  *
937
946
  * @param {number} [rot]
938
947
  * Override the element's rotation. This is internally used on axis
@@ -944,8 +953,8 @@ class SVGElement {
944
953
  */
945
954
  getBBox(reload, rot) {
946
955
  const wrapper = this, { alignValue, element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = pick(rot, wrapper.rotation, 0), fontSize = renderer.styledMode ? (element &&
947
- SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles && styles.fontSize);
948
- let bBox, width, height, toggleTextShadowShim, cacheKey;
956
+ SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize);
957
+ let bBox, height, toggleTextShadowShim, cacheKey;
949
958
  // Avoid undefined and null (#7316)
950
959
  if (defined(textStr)) {
951
960
  cacheKey = textStr.toString();
@@ -964,8 +973,8 @@ class SVGElement {
964
973
  rotation,
965
974
  wrapper.textWidth,
966
975
  alignValue,
967
- styles && styles.textOverflow,
968
- styles && styles.fontWeight // #12163
976
+ styles.textOverflow,
977
+ styles.fontWeight // #12163
969
978
  ].join(',');
970
979
  }
971
980
  if (cacheKey && !reload) {
@@ -1021,7 +1030,6 @@ class SVGElement {
1021
1030
  }
1022
1031
  // True SVG elements as well as HTML elements in modern browsers
1023
1032
  // using the .useHTML option need to compensated for rotation
1024
- width = bBox.width;
1025
1033
  height = bBox.height;
1026
1034
  // Workaround for wrong bounding box in IE, Edge and Chrome on
1027
1035
  // Windows. With Highcharts' default font, IE and Edge report
@@ -1040,20 +1048,7 @@ class SVGElement {
1040
1048
  }
1041
1049
  // Adjust for rotated text
1042
1050
  if (rotation) {
1043
- const baseline = Number(element.getAttribute('y') || 0) - bBox.y, alignFactor = {
1044
- 'right': 1,
1045
- 'center': 0.5
1046
- }[alignValue || 0] || 0, rad = rotation * deg2rad, rad90 = (rotation - 90) * deg2rad, wCosRad = width * Math.cos(rad), wSinRad = width * Math.sin(rad), cosRad90 = Math.cos(rad90), sinRad90 = Math.sin(rad90),
1047
- // Find the starting point on the left side baseline of
1048
- // the text
1049
- pX = bBox.x + alignFactor * (width - wCosRad), pY = bBox.y + baseline - alignFactor * wSinRad,
1050
- // Find all corners
1051
- aX = pX + baseline * cosRad90, bX = aX + wCosRad, cX = bX - height * cosRad90, dX = cX - wCosRad, aY = pY + baseline * sinRad90, bY = aY + wSinRad, cY = bY - height * sinRad90, dY = cY - wSinRad;
1052
- // Deduct the bounding box from the corners
1053
- bBox.x = Math.min(aX, bX, cX, dX);
1054
- bBox.y = Math.min(aY, bY, cY, dY);
1055
- bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;
1056
- bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;
1051
+ bBox = this.getRotatedBox(bBox, rotation);
1057
1052
  }
1058
1053
  }
1059
1054
  // Cache it. When loading a chart in a hidden iframe in Firefox and
@@ -1070,6 +1065,38 @@ class SVGElement {
1070
1065
  }
1071
1066
  return bBox;
1072
1067
  }
1068
+ /**
1069
+ * Get the rotated box.
1070
+ * @private
1071
+ */
1072
+ getRotatedBox(box, rotation) {
1073
+ const { x: boxX, y: boxY, width, height } = box, { alignValue, translateY, rotationOriginX = 0, rotationOriginY = 0 } = this, alignFactor = {
1074
+ 'right': 1,
1075
+ 'center': 0.5
1076
+ }[alignValue || 0] || 0, baseline = Number(this.element.getAttribute('y') || 0) -
1077
+ (translateY ? 0 : boxY), rad = rotation * deg2rad, rad90 = (rotation - 90) * deg2rad, cosRad = Math.cos(rad), sinRad = Math.sin(rad), wCosRad = width * cosRad, wSinRad = width * sinRad, cosRad90 = Math.cos(rad90), sinRad90 = Math.sin(rad90), [[xOriginCosRad, xOriginSinRad], [yOriginCosRad, yOriginSinRad]] = [
1078
+ rotationOriginX,
1079
+ rotationOriginY
1080
+ ].map((rotOrigin) => [
1081
+ rotOrigin - (rotOrigin * cosRad),
1082
+ rotOrigin * sinRad
1083
+ ]),
1084
+ // Find the starting point on the left side baseline of
1085
+ // the text
1086
+ pX = ((boxX + alignFactor * (width - wCosRad)) +
1087
+ xOriginCosRad + yOriginSinRad), pY = ((boxY + baseline - alignFactor * wSinRad) -
1088
+ xOriginSinRad + yOriginCosRad),
1089
+ // Find all corners
1090
+ aX = pX + baseline * cosRad90, bX = aX + wCosRad, cX = bX - height * cosRad90, dX = cX - wCosRad, aY = pY + baseline * sinRad90, bY = aY + wSinRad, cY = bY - height * sinRad90, dY = cY - wSinRad;
1091
+ // Deduct the bounding box from the corners
1092
+ const x = Math.min(aX, bX, cX, dX), y = Math.min(aY, bY, cY, dY), boxWidth = Math.max(aX, bX, cX, dX) - x, boxHeight = Math.max(aY, bY, cY, dY) - y;
1093
+ return {
1094
+ x,
1095
+ y,
1096
+ width: boxWidth,
1097
+ height: boxHeight
1098
+ };
1099
+ }
1073
1100
  /**
1074
1101
  * Get the computed style. Only in styled mode.
1075
1102
  *
@@ -1146,7 +1173,7 @@ class SVGElement {
1146
1173
  * @name Highcharts.SVGElement#element
1147
1174
  * @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}
1148
1175
  */
1149
- this.element = nodeName === 'span' ?
1176
+ this.element = nodeName === 'span' || nodeName === 'body' ?
1150
1177
  createElement(nodeName) :
1151
1178
  doc.createElementNS(this.SVG_NS, nodeName);
1152
1179
  /**
@@ -1156,6 +1183,7 @@ class SVGElement {
1156
1183
  * @type {Highcharts.SVGRenderer}
1157
1184
  */
1158
1185
  this.renderer = renderer;
1186
+ this.styles = {};
1159
1187
  fireEvent(this, 'afterInit');
1160
1188
  }
1161
1189
  /**
@@ -1437,7 +1465,7 @@ class SVGElement {
1437
1465
  * @function Highcharts.SVGElement#strokeWidth
1438
1466
  *
1439
1467
  * @return {number}
1440
- * The stroke width in pixels. Even if the given stroke widtch (in CSS or by
1468
+ * The stroke width in pixels. Even if the given stroke width (in CSS or by
1441
1469
  * attributes) is based on `em` or other units, the pixel size is returned.
1442
1470
  */
1443
1471
  strokeWidth() {
@@ -1447,21 +1475,21 @@ class SVGElement {
1447
1475
  }
1448
1476
  // In styled mode, read computed stroke width
1449
1477
  const val = this.getStyle('stroke-width');
1450
- let ret = 0, dummy;
1478
+ let ret = 0, tempElement;
1451
1479
  // Read pixel values directly
1452
- if (val.indexOf('px') === val.length - 2) {
1480
+ if (/px$/.test(val)) {
1453
1481
  ret = pInt(val);
1454
1482
  // Other values like em, pt etc need to be measured
1455
1483
  }
1456
1484
  else if (val !== '') {
1457
- dummy = doc.createElementNS(SVG_NS, 'rect');
1458
- attr(dummy, {
1485
+ tempElement = doc.createElementNS(SVG_NS, 'rect');
1486
+ attr(tempElement, {
1459
1487
  width: val,
1460
1488
  'stroke-width': 0
1461
1489
  });
1462
- this.element.parentNode.appendChild(dummy);
1463
- ret = dummy.getBBox().width;
1464
- dummy.parentNode.removeChild(dummy);
1490
+ this.element.parentNode.appendChild(tempElement);
1491
+ ret = tempElement.getBBox().width;
1492
+ tempElement.parentNode.removeChild(tempElement);
1465
1493
  }
1466
1494
  return ret;
1467
1495
  }
@@ -1518,12 +1546,9 @@ class SVGElement {
1518
1546
  el.appendChild(titleNode);
1519
1547
  }
1520
1548
  // Replace text content and escape markup
1521
- titleNode.textContent =
1522
- // #3276, #3895
1523
- String(pick(value, ''))
1524
- .replace(/<[^>]*>/g, '')
1525
- .replace(/&lt;/g, '<')
1526
- .replace(/&gt;/g, '>');
1549
+ titleNode.textContent = replaceNested(// Scan #[73]
1550
+ pick(value, ''), // #3276, #3895
1551
+ [/<[^>]*>/g, '']).replace(/&lt;/g, '<').replace(/&gt;/g, '>');
1527
1552
  }
1528
1553
  /**
1529
1554
  * Bring the element to the front. Alternatively, a new zIndex can be set.
@@ -1570,23 +1595,31 @@ class SVGElement {
1570
1595
  * @function Highcharts.SVGElement#updateTransform
1571
1596
  */
1572
1597
  updateTransform(attrib = 'transform') {
1573
- const { element, matrix, rotation = 0, scaleX, scaleY, translateX = 0, translateY = 0 } = this;
1598
+ const { element, matrix, rotation = 0, rotationOriginX, rotationOriginY, scaleX, scaleY, translateX = 0, translateY = 0 } = this;
1574
1599
  // Apply translate. Nearly all transformed elements have translation,
1575
1600
  // so instead of checking for translate = 0, do it always (#1767,
1576
1601
  // #1846).
1577
1602
  const transform = ['translate(' + translateX + ',' + translateY + ')'];
1578
- // apply matrix
1603
+ // Apply matrix
1579
1604
  if (defined(matrix)) {
1580
1605
  transform.push('matrix(' + matrix.join(',') + ')');
1581
1606
  }
1582
1607
  // Apply rotation
1583
- if (rotation) { // text rotation or inverted chart
1608
+ if (rotation) {
1584
1609
  transform.push('rotate(' + rotation + ' ' +
1585
- pick(this.rotationOriginX, element.getAttribute('x'), 0) +
1610
+ pick(rotationOriginX, element.getAttribute('x'), 0) +
1586
1611
  ' ' +
1587
- pick(this.rotationOriginY, element.getAttribute('y') || 0) + ')');
1612
+ pick(rotationOriginY, element.getAttribute('y') || 0) + ')');
1613
+ // HTML labels rotation (#20685)
1614
+ if (this.text?.element.tagName === 'SPAN') {
1615
+ this.text.attr({
1616
+ rotation,
1617
+ rotationOriginX: (rotationOriginX || 0) - this.padding,
1618
+ rotationOriginY: (rotationOriginY || 0) - this.padding
1619
+ });
1620
+ }
1588
1621
  }
1589
- // apply scale
1622
+ // Apply scale
1590
1623
  if (defined(scaleX) || defined(scaleY)) {
1591
1624
  transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');
1592
1625
  }
@@ -1606,7 +1639,7 @@ class SVGElement {
1606
1639
  *
1607
1640
  */
1608
1641
  visibilitySetter(value, key, element) {
1609
- // IE9-11 doesn't handle visibilty:inherit well, so we remove the
1642
+ // IE9-11 doesn't handle visibility:inherit well, so we remove the
1610
1643
  // attribute instead (#2881, #3909)
1611
1644
  if (value === 'inherit') {
1612
1645
  element.removeAttribute(key);