highcharts 9.3.3 → 10.2.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 (917) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +19 -2
  3. package/css/highcharts.scss +17 -2
  4. package/css/themes/dark-unica.css +19 -2
  5. package/css/themes/grid-light.css +19 -2
  6. package/css/themes/sand-signika.css +19 -2
  7. package/es-modules/Accessibility/A11yI18n.js +4 -4
  8. package/es-modules/Accessibility/Accessibility.js +3 -4
  9. package/es-modules/Accessibility/Components/AnnotationsA11y.js +3 -3
  10. package/es-modules/Accessibility/Components/ContainerComponent.js +11 -10
  11. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +18 -11
  12. package/es-modules/Accessibility/Components/LegendComponent.js +34 -26
  13. package/es-modules/Accessibility/Components/MenuComponent.js +7 -6
  14. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -3
  15. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
  16. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  17. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +3 -2
  18. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
  19. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +96 -39
  20. package/es-modules/Accessibility/Components/ZoomComponent.js +43 -80
  21. package/es-modules/Accessibility/FocusBorder.js +6 -5
  22. package/es-modules/Accessibility/HighContrastMode.js +3 -3
  23. package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
  24. package/es-modules/Accessibility/Options/{Options.js → A11yDefaults.js} +72 -4
  25. package/es-modules/Accessibility/Options/DeprecatedOptions.js +12 -2
  26. package/es-modules/Accessibility/Options/{LangOptions.js → LangDefaults.js} +46 -31
  27. package/es-modules/Accessibility/ProxyElement.js +14 -6
  28. package/es-modules/Accessibility/ProxyProvider.js +10 -2
  29. package/es-modules/Accessibility/Utils/ChartUtilities.js +10 -5
  30. package/es-modules/Core/Animation/Fx.js +1 -1
  31. package/es-modules/Core/Axis/Axis.js +197 -91
  32. package/es-modules/Core/Axis/AxisDefaults.js +8 -8
  33. package/es-modules/Core/Axis/Color/ColorAxis.js +26 -7
  34. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +3 -3
  35. package/es-modules/Core/Axis/DateTimeAxis.js +5 -3
  36. package/es-modules/Core/Axis/GridAxis.js +821 -821
  37. package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  38. package/es-modules/Core/Axis/OrdinalAxis.js +26 -3
  39. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
  40. package/es-modules/Core/Axis/StackingAxis.js +0 -1
  41. package/es-modules/Core/Axis/Tick.js +22 -18
  42. package/es-modules/Core/Axis/TreeGridTick.js +13 -2
  43. package/es-modules/Core/Axis/ZAxis.js +3 -1
  44. package/es-modules/Core/Chart/Chart.js +27 -8
  45. package/es-modules/Core/Chart/Chart3D.js +1 -11
  46. package/es-modules/Core/Chart/ChartDefaults.js +46 -14
  47. package/es-modules/Core/Chart/GanttChart.js +3 -1
  48. package/es-modules/Core/Chart/MapChart.js +4 -7
  49. package/es-modules/Core/Chart/StockChart.js +7 -5
  50. package/es-modules/Core/Color/Color.js +1 -1
  51. package/es-modules/Core/DefaultOptions.js +19 -15
  52. package/es-modules/Core/Geometry/PolygonClip.js +84 -0
  53. package/es-modules/Core/Globals.js +4 -18
  54. package/es-modules/Core/HttpUtilities.js +46 -39
  55. package/es-modules/Core/Legend/Legend.js +14 -12
  56. package/es-modules/Core/MSPointer.js +3 -1
  57. package/es-modules/Core/Navigator.js +16 -13
  58. package/es-modules/Core/Pointer.js +16 -12
  59. package/es-modules/Core/Renderer/HTML/AST.js +68 -8
  60. package/es-modules/Core/Renderer/HTML/HTMLElement.js +3 -1
  61. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +3 -1
  62. package/es-modules/Core/Renderer/SVG/SVGElement.js +54 -70
  63. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
  64. package/es-modules/Core/Renderer/SVG/SVGLabel.js +3 -1
  65. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +60 -55
  66. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +4 -2
  67. package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
  68. package/es-modules/Core/Scrollbar.js +9 -5
  69. package/es-modules/Core/ScrollbarDefaults.js +8 -8
  70. package/es-modules/Core/Series/DataLabel.js +67 -38
  71. package/es-modules/Core/Series/Point.js +11 -2
  72. package/es-modules/Core/Series/Series.js +57 -27
  73. package/es-modules/Core/Series/Series3D.js +3 -1
  74. package/es-modules/Core/Series/SeriesDefaults.js +7 -4
  75. package/es-modules/Core/Time.js +6 -7
  76. package/es-modules/Core/Tooltip.js +17 -34
  77. package/es-modules/Core/Utilities.js +33 -33
  78. package/es-modules/Data/DataConverter.js +1 -1
  79. package/es-modules/Data/DataTable.js +12 -10
  80. package/es-modules/Data/Modifiers/ChainModifier.js +3 -1
  81. package/es-modules/Data/Modifiers/GroupModifier.js +3 -1
  82. package/es-modules/Data/Modifiers/InvertModifier.js +9 -7
  83. package/es-modules/Data/Modifiers/RangeModifier.js +3 -1
  84. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +3 -1
  85. package/es-modules/Data/Modifiers/SortModifier.js +3 -1
  86. package/es-modules/Data/Parsers/CSVParser.js +3 -1
  87. package/es-modules/Data/Parsers/DataParser.js +1 -1
  88. package/es-modules/Data/Parsers/GoogleSheetsParser.js +3 -2
  89. package/es-modules/Data/Parsers/HTMLTableParser.js +3 -1
  90. package/es-modules/Data/Stores/CSVStore.js +8 -5
  91. package/es-modules/Data/Stores/GoogleSheetsStore.js +3 -1
  92. package/es-modules/Data/Stores/HTMLTableStore.js +3 -1
  93. package/es-modules/Extensions/Annotations/{Annotations.js → Annotation.js} +30 -11
  94. package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
  95. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  96. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +5 -2
  97. package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
  98. package/es-modules/Extensions/Annotations/NavigationBindings.js +16 -5
  99. package/es-modules/Extensions/Annotations/Popup.js +2 -2
  100. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +18 -12
  101. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -2
  102. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +4 -2
  103. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +5 -3
  104. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +4 -2
  105. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +4 -2
  106. package/es-modules/Extensions/Annotations/Types/Measure.js +4 -2
  107. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +4 -2
  108. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
  109. package/es-modules/Extensions/Annotations/Types/Tunnel.js +5 -2
  110. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +4 -2
  111. package/es-modules/Extensions/Boost/BoostAttach.js +5 -1
  112. package/es-modules/Extensions/Boost/BoostInit.js +9 -3
  113. package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
  114. package/es-modules/Extensions/Boost/Boostables.js +1 -0
  115. package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
  116. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  117. package/es-modules/Extensions/BoostCanvas.js +11 -5
  118. package/es-modules/Extensions/Breadcrumbs.js +898 -0
  119. package/es-modules/Extensions/CurrentDateIndication.js +1 -1
  120. package/es-modules/Extensions/Data.js +661 -613
  121. package/es-modules/Extensions/DataGrouping.js +8 -3
  122. package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
  123. package/es-modules/Extensions/DownloadURL.js +3 -3
  124. package/es-modules/Extensions/DragPanes.js +1 -1
  125. package/es-modules/Extensions/DraggablePoints.js +9 -7
  126. package/es-modules/Extensions/Drilldown.js +152 -97
  127. package/es-modules/Extensions/ExportData.js +58 -9
  128. package/es-modules/Extensions/Exporting/Exporting.js +34 -23
  129. package/es-modules/Extensions/Exporting/ExportingDefaults.js +56 -8
  130. package/es-modules/Extensions/FullScreen.js +121 -54
  131. package/es-modules/Extensions/GeoJSON.js +149 -125
  132. package/es-modules/Extensions/MarkerClusters.js +36 -22
  133. package/es-modules/Extensions/NoDataToDisplay.js +1 -1
  134. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
  135. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  136. package/es-modules/Extensions/Oldie/Oldie.js +2 -2
  137. package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
  138. package/es-modules/Extensions/Pane.js +3 -3
  139. package/es-modules/Extensions/ParallelCoordinates.js +1 -1
  140. package/es-modules/Extensions/PatternFill.js +14 -2
  141. package/es-modules/Extensions/RangeSelector.js +29 -18
  142. package/es-modules/Extensions/ScrollablePlotArea.js +8 -4
  143. package/es-modules/Extensions/{SeriesLabel.js → SeriesLabel/SeriesLabel.js} +262 -384
  144. package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +124 -0
  145. package/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +67 -0
  146. package/es-modules/Extensions/Sonification/Earcon.js +1 -1
  147. package/es-modules/Extensions/Stacking.js +5 -4
  148. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  149. package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
  150. package/es-modules/Maps/MapNavigation.js +49 -12
  151. package/es-modules/Maps/MapPointer.js +16 -0
  152. package/es-modules/Maps/MapUtilities.js +56 -0
  153. package/es-modules/Maps/MapView.js +619 -137
  154. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
  155. package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
  156. package/es-modules/Maps/Projection.js +182 -88
  157. package/es-modules/Maps/Projections/EqualEarth.js +15 -6
  158. package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
  159. package/es-modules/Maps/Projections/Miller.js +23 -10
  160. package/es-modules/Maps/Projections/Orthographic.js +21 -10
  161. package/es-modules/Maps/Projections/WebMercator.js +25 -13
  162. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +79 -0
  163. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +591 -0
  164. package/es-modules/Series/Area/AreaSeries.js +21 -14
  165. package/es-modules/Series/AreaRange/AreaRangePoint.js +24 -11
  166. package/es-modules/Series/AreaRange/AreaRangeSeries.js +154 -147
  167. package/es-modules/Series/AreaSpline/AreaSplineSeries.js +45 -41
  168. package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +43 -43
  169. package/es-modules/Series/Bar/BarSeries.js +3 -1
  170. package/es-modules/Series/Bellcurve/BellcurveSeries.js +3 -1
  171. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +4 -2
  172. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
  173. package/es-modules/Series/Bubble/BubblePoint.js +3 -1
  174. package/es-modules/Series/Bubble/BubbleSeries.js +15 -6
  175. package/es-modules/Series/Bullet/BulletPoint.js +3 -1
  176. package/es-modules/Series/Bullet/BulletSeries.js +4 -3
  177. package/es-modules/Series/Candlestick/CandlestickSeries.js +5 -3
  178. package/es-modules/Series/CenteredUtilities.js +8 -2
  179. package/es-modules/Series/ColorMapComposition.js +111 -0
  180. package/es-modules/Series/Column/ColumnSeries.js +10 -7
  181. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +3 -1
  182. package/es-modules/Series/ColumnRange/ColumnRangePoint.js +17 -13
  183. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +60 -57
  184. package/es-modules/Series/Cylinder/CylinderPoint.js +3 -1
  185. package/es-modules/Series/Cylinder/CylinderSeries.js +3 -1
  186. package/es-modules/Series/DataModifyComposition.js +1 -0
  187. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
  188. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +5 -3
  189. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -1
  190. package/es-modules/Series/DrawPointUtilities.js +87 -0
  191. package/es-modules/Series/Dumbbell/DumbbellPoint.js +3 -1
  192. package/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
  193. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +4 -2
  194. package/es-modules/Series/Flags/FlagsPoint.js +4 -1
  195. package/es-modules/Series/Flags/FlagsSeries.js +13 -16
  196. package/es-modules/Series/Funnel/FunnelSeries.js +5 -3
  197. package/es-modules/Series/Funnel3D/Funnel3DPoint.js +3 -1
  198. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +3 -1
  199. package/es-modules/Series/Gantt/GanttPoint.js +3 -1
  200. package/es-modules/Series/Gantt/GanttSeries.js +3 -1
  201. package/es-modules/Series/Gauge/GaugePoint.js +3 -1
  202. package/es-modules/Series/Gauge/GaugeSeries.js +196 -174
  203. package/es-modules/Series/HLC/HLCPoint.js +3 -1
  204. package/es-modules/Series/HLC/HLCSeries.js +4 -2
  205. package/es-modules/Series/Heatmap/HeatmapPoint.js +7 -5
  206. package/es-modules/Series/Heatmap/HeatmapSeries.js +29 -33
  207. package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
  208. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -1
  209. package/es-modules/Series/Histogram/HistogramSeries.js +3 -1
  210. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +3 -1
  211. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +11 -9
  212. package/es-modules/Series/Item/ItemPoint.js +3 -1
  213. package/es-modules/Series/Item/ItemSeries.js +3 -1
  214. package/es-modules/Series/Line/LineSeries.js +4 -2
  215. package/es-modules/Series/Lollipop/LollipopPoint.js +3 -1
  216. package/es-modules/Series/Lollipop/LollipopSeries.js +4 -2
  217. package/es-modules/Series/Map/MapPoint.js +32 -7
  218. package/es-modules/Series/Map/MapSeries.js +298 -189
  219. package/es-modules/Series/MapBubble/MapBubblePoint.js +19 -25
  220. package/es-modules/Series/MapBubble/MapBubbleSeries.js +61 -2
  221. package/es-modules/Series/MapLine/MapLineSeries.js +18 -1
  222. package/es-modules/Series/MapPoint/MapPointPoint.js +6 -10
  223. package/es-modules/Series/MapPoint/MapPointSeries.js +50 -16
  224. package/es-modules/Series/Networkgraph/Networkgraph.js +3 -1
  225. package/es-modules/Series/NodesComposition.js +101 -49
  226. package/es-modules/Series/OHLC/OHLCPoint.js +3 -1
  227. package/es-modules/Series/OHLC/OHLCSeries.js +10 -1
  228. package/es-modules/Series/Organization/OrganizationPoint.js +71 -3
  229. package/es-modules/Series/Organization/OrganizationSeries.js +84 -28
  230. package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +0 -2
  231. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +3 -1
  232. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
  233. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -1
  234. package/es-modules/Series/Pie/PieDataLabel.js +4 -2
  235. package/es-modules/Series/Pie/PiePoint.js +15 -6
  236. package/es-modules/Series/Pie/PieSeries.js +51 -37
  237. package/es-modules/Series/Pie3D/Pie3DPoint.js +3 -1
  238. package/es-modules/Series/Pie3D/Pie3DSeries.js +22 -1
  239. package/es-modules/Series/PolarComposition.js +819 -0
  240. package/es-modules/Series/Polygon/PolygonSeries.js +3 -1
  241. package/es-modules/Series/Pyramid/PyramidSeries.js +3 -1
  242. package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +3 -1
  243. package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
  244. package/es-modules/Series/Sankey/SankeyPoint.js +40 -2
  245. package/es-modules/Series/Sankey/SankeySeries.js +35 -136
  246. package/es-modules/Series/Scatter/ScatterSeries.js +11 -6
  247. package/es-modules/Series/Scatter3D/Scatter3DPoint.js +3 -1
  248. package/es-modules/Series/Scatter3D/Scatter3DSeries.js +3 -1
  249. package/es-modules/Series/SeriesOnPointComposition.js +391 -0
  250. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +5 -3
  251. package/es-modules/Series/Spline/SplineSeries.js +13 -4
  252. package/es-modules/Series/Streamgraph/StreamgraphSeries.js +3 -1
  253. package/es-modules/Series/Sunburst/SunburstPoint.js +3 -3
  254. package/es-modules/Series/Sunburst/SunburstSeries.js +21 -5
  255. package/es-modules/Series/Tilemap/TilemapPoint.js +3 -1
  256. package/es-modules/Series/Tilemap/TilemapSeries.js +3 -1
  257. package/es-modules/Series/Timeline/TimelinePoint.js +3 -1
  258. package/es-modules/Series/Timeline/TimelineSeries.js +6 -4
  259. package/es-modules/Series/Treemap/TreemapPoint.js +8 -4
  260. package/es-modules/Series/Treemap/TreemapSeries.js +97 -87
  261. package/es-modules/Series/VariablePie/VariablePieSeries.js +3 -1
  262. package/es-modules/Series/Variwide/VariwidePoint.js +3 -1
  263. package/es-modules/Series/Variwide/VariwideSeries.js +3 -1
  264. package/es-modules/Series/Vector/VectorSeries.js +3 -1
  265. package/es-modules/Series/Venn/VennPoint.js +5 -5
  266. package/es-modules/Series/Venn/VennSeries.js +9 -6
  267. package/es-modules/Series/Waterfall/WaterfallPoint.js +3 -1
  268. package/es-modules/Series/Waterfall/WaterfallSeries.js +16 -12
  269. package/es-modules/Series/Windbarb/WindbarbPoint.js +3 -1
  270. package/es-modules/Series/Windbarb/WindbarbSeries.js +3 -1
  271. package/es-modules/Series/Wordcloud/WordcloudPoint.js +6 -6
  272. package/es-modules/Series/Wordcloud/WordcloudSeries.js +11 -8
  273. package/es-modules/Series/XRange/XRangePoint.js +3 -1
  274. package/es-modules/Series/XRange/XRangeSeries.js +3 -1
  275. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -1
  276. package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
  277. package/es-modules/Stock/Indicators/AO/AOIndicator.js +5 -3
  278. package/es-modules/Stock/Indicators/APO/APOIndicator.js +3 -1
  279. package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +3 -1
  280. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -1
  281. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +3 -1
  282. package/es-modules/Stock/Indicators/BB/BBIndicator.js +6 -4
  283. package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +3 -1
  284. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +3 -1
  285. package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +3 -1
  286. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +3 -1
  287. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +3 -1
  288. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +13 -7
  289. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +3 -1
  290. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -1
  291. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +3 -1
  292. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +3 -1
  293. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +3 -1
  294. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +3 -1
  295. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +3 -1
  296. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +3 -1
  297. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +3 -1
  298. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +3 -1
  299. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +26 -13
  300. package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +3 -1
  301. package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +3 -1
  302. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +85 -95
  303. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +3 -1
  304. package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +3 -1
  305. package/es-modules/Stock/Indicators/PC/PCIndicator.js +3 -1
  306. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +3 -1
  307. package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +3 -1
  308. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +3 -1
  309. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +3 -1
  310. package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +3 -1
  311. package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +3 -1
  312. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +3 -1
  313. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +12 -3
  314. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +3 -1
  315. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +3 -1
  316. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +6 -4
  317. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +3 -1
  318. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +3 -1
  319. package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +3 -1
  320. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +3 -1
  321. package/es-modules/Stock/Indicators/VBP/VBPPoint.js +3 -1
  322. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +3 -1
  323. package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +3 -1
  324. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +3 -1
  325. package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +3 -1
  326. package/es-modules/Stock/StockToolsBindings.js +51 -43
  327. package/es-modules/Stock/StockToolsGui.js +1 -1
  328. package/es-modules/masters/highcharts-3d.src.js +1 -1
  329. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  330. package/es-modules/masters/highcharts-more.src.js +4 -4
  331. package/es-modules/masters/highcharts.src.js +1 -1
  332. package/es-modules/masters/highmaps.src.js +1 -1
  333. package/es-modules/masters/highstock.src.js +1 -1
  334. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  335. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  336. package/es-modules/masters/indicators/ao.src.js +1 -1
  337. package/es-modules/masters/indicators/apo.src.js +1 -1
  338. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  339. package/es-modules/masters/indicators/aroon.src.js +1 -1
  340. package/es-modules/masters/indicators/atr.src.js +1 -1
  341. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  342. package/es-modules/masters/indicators/cci.src.js +1 -1
  343. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  344. package/es-modules/masters/indicators/cmf.src.js +1 -1
  345. package/es-modules/masters/indicators/cmo.src.js +1 -1
  346. package/es-modules/masters/indicators/dema.src.js +1 -1
  347. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  348. package/es-modules/masters/indicators/dmi.src.js +1 -1
  349. package/es-modules/masters/indicators/dpo.src.js +1 -1
  350. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  351. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  352. package/es-modules/masters/indicators/indicators.src.js +1 -1
  353. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  354. package/es-modules/masters/indicators/klinger.src.js +1 -1
  355. package/es-modules/masters/indicators/macd.src.js +1 -1
  356. package/es-modules/masters/indicators/mfi.src.js +1 -1
  357. package/es-modules/masters/indicators/momentum.src.js +1 -1
  358. package/es-modules/masters/indicators/natr.src.js +1 -1
  359. package/es-modules/masters/indicators/obv.src.js +1 -1
  360. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  361. package/es-modules/masters/indicators/ppo.src.js +1 -1
  362. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  363. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  364. package/es-modules/masters/indicators/psar.src.js +1 -1
  365. package/es-modules/masters/indicators/regressions.src.js +1 -1
  366. package/es-modules/masters/indicators/roc.src.js +1 -1
  367. package/es-modules/masters/indicators/rsi.src.js +1 -1
  368. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  369. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  370. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  371. package/es-modules/masters/indicators/tema.src.js +1 -1
  372. package/es-modules/masters/indicators/trendline.src.js +1 -1
  373. package/es-modules/masters/indicators/trix.src.js +1 -1
  374. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  375. package/es-modules/masters/indicators/vwap.src.js +1 -1
  376. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  377. package/es-modules/masters/indicators/wma.src.js +1 -1
  378. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  379. package/es-modules/masters/modules/accessibility.src.js +1 -1
  380. package/es-modules/masters/modules/annotations-advanced.src.js +2 -2
  381. package/es-modules/masters/modules/annotations.src.js +2 -2
  382. package/es-modules/masters/modules/arc-diagram.src.js +14 -0
  383. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  384. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  385. package/es-modules/masters/modules/boost.src.js +1 -1
  386. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  387. package/es-modules/masters/modules/bullet.src.js +1 -1
  388. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  389. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  390. package/es-modules/masters/modules/cylinder.src.js +1 -1
  391. package/es-modules/masters/modules/data.src.js +2 -1
  392. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  393. package/es-modules/masters/modules/debugger.src.js +1 -1
  394. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  395. package/es-modules/masters/modules/dotplot.src.js +1 -1
  396. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  397. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  398. package/es-modules/masters/modules/drilldown.src.js +2 -1
  399. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  400. package/es-modules/masters/modules/export-data.src.js +1 -1
  401. package/es-modules/masters/modules/exporting.src.js +1 -1
  402. package/es-modules/masters/modules/full-screen.src.js +1 -1
  403. package/es-modules/masters/modules/funnel.src.js +1 -1
  404. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  405. package/es-modules/masters/modules/gantt.src.js +1 -1
  406. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  407. package/es-modules/masters/modules/heatmap.src.js +1 -1
  408. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  409. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  410. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  411. package/es-modules/masters/modules/item-series.src.js +1 -1
  412. package/es-modules/masters/modules/lollipop.src.js +1 -1
  413. package/es-modules/masters/modules/map.src.js +5 -1
  414. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  415. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  416. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  417. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  418. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  419. package/es-modules/masters/modules/oldie.src.js +1 -1
  420. package/es-modules/masters/modules/organization.src.js +1 -1
  421. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  422. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  423. package/es-modules/masters/modules/pareto.src.js +1 -1
  424. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  425. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  426. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  427. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  428. package/es-modules/masters/modules/sankey.src.js +1 -1
  429. package/es-modules/masters/modules/series-label.src.js +5 -2
  430. package/es-modules/masters/modules/series-on-point.src.js +16 -0
  431. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  432. package/es-modules/masters/modules/sonification.src.js +2 -6
  433. package/es-modules/masters/modules/static-scale.src.js +1 -1
  434. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  435. package/es-modules/masters/modules/stock.src.js +1 -1
  436. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  437. package/es-modules/masters/modules/sunburst.src.js +1 -1
  438. package/es-modules/masters/modules/tilemap.src.js +1 -1
  439. package/es-modules/masters/modules/timeline.src.js +1 -1
  440. package/es-modules/masters/modules/treegrid.src.js +1 -1
  441. package/es-modules/masters/modules/treemap.src.js +5 -1
  442. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  443. package/es-modules/masters/modules/variwide.src.js +1 -1
  444. package/es-modules/masters/modules/vector.src.js +1 -1
  445. package/es-modules/masters/modules/venn.src.js +1 -1
  446. package/es-modules/masters/modules/windbarb.src.js +1 -1
  447. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  448. package/es-modules/masters/modules/xrange.src.js +1 -1
  449. package/es-modules/masters/themes/avocado.src.js +1 -1
  450. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  451. package/es-modules/masters/themes/brand-light.src.js +1 -1
  452. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  453. package/es-modules/masters/themes/dark-green.src.js +1 -1
  454. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  455. package/es-modules/masters/themes/gray.src.js +1 -1
  456. package/es-modules/masters/themes/grid-light.src.js +1 -1
  457. package/es-modules/masters/themes/grid.src.js +1 -1
  458. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  459. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  460. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  461. package/es-modules/masters/themes/skies.src.js +1 -1
  462. package/es-modules/masters/themes/sunset.src.js +1 -1
  463. package/highcharts-3d.js +99 -98
  464. package/highcharts-3d.js.map +1 -1
  465. package/highcharts-3d.src.js +51 -21
  466. package/highcharts-gantt.js +811 -801
  467. package/highcharts-gantt.js.map +1 -1
  468. package/highcharts-gantt.src.js +2020 -1607
  469. package/highcharts-more.d.ts +10 -0
  470. package/highcharts-more.js +194 -194
  471. package/highcharts-more.js.map +1 -1
  472. package/highcharts-more.src.d.ts +10 -0
  473. package/highcharts-more.src.js +3512 -3364
  474. package/highcharts.d.ts +12336 -965
  475. package/highcharts.js +595 -586
  476. package/highcharts.js.map +1 -1
  477. package/highcharts.src.d.ts +12336 -965
  478. package/highcharts.src.js +1047 -665
  479. package/highmaps.js +763 -728
  480. package/highmaps.js.map +1 -1
  481. package/highmaps.src.js +4482 -2639
  482. package/highstock.js +798 -788
  483. package/highstock.js.map +1 -1
  484. package/highstock.src.js +1177 -739
  485. package/indicators/acceleration-bands.d.ts +1 -17
  486. package/indicators/acceleration-bands.js +11 -11
  487. package/indicators/acceleration-bands.js.map +1 -1
  488. package/indicators/acceleration-bands.src.d.ts +1 -17
  489. package/indicators/acceleration-bands.src.js +99 -100
  490. package/indicators/accumulation-distribution.js +5 -5
  491. package/indicators/accumulation-distribution.js.map +1 -1
  492. package/indicators/accumulation-distribution.src.js +11 -2
  493. package/indicators/ao.js +6 -6
  494. package/indicators/ao.js.map +1 -1
  495. package/indicators/ao.src.js +13 -4
  496. package/indicators/apo.js +5 -5
  497. package/indicators/apo.js.map +1 -1
  498. package/indicators/apo.src.js +11 -2
  499. package/indicators/aroon-oscillator.d.ts +1 -17
  500. package/indicators/aroon-oscillator.js +10 -10
  501. package/indicators/aroon-oscillator.js.map +1 -1
  502. package/indicators/aroon-oscillator.src.d.ts +1 -17
  503. package/indicators/aroon-oscillator.src.js +99 -100
  504. package/indicators/aroon.d.ts +1 -17
  505. package/indicators/aroon.js +11 -11
  506. package/indicators/aroon.js.map +1 -1
  507. package/indicators/aroon.src.d.ts +1 -17
  508. package/indicators/aroon.src.js +99 -100
  509. package/indicators/atr.js +5 -5
  510. package/indicators/atr.js.map +1 -1
  511. package/indicators/atr.src.js +11 -2
  512. package/indicators/bollinger-bands.d.ts +1 -17
  513. package/indicators/bollinger-bands.js +11 -12
  514. package/indicators/bollinger-bands.js.map +1 -1
  515. package/indicators/bollinger-bands.src.d.ts +1 -17
  516. package/indicators/bollinger-bands.src.js +102 -103
  517. package/indicators/cci.js +5 -5
  518. package/indicators/cci.js.map +1 -1
  519. package/indicators/cci.src.js +11 -2
  520. package/indicators/chaikin.js +8 -8
  521. package/indicators/chaikin.js.map +1 -1
  522. package/indicators/chaikin.src.js +11 -2
  523. package/indicators/cmf.js +6 -6
  524. package/indicators/cmf.js.map +1 -1
  525. package/indicators/cmf.src.js +11 -2
  526. package/indicators/cmo.js +5 -5
  527. package/indicators/cmo.js.map +1 -1
  528. package/indicators/cmo.src.js +11 -2
  529. package/indicators/dema.js +5 -5
  530. package/indicators/dema.js.map +1 -1
  531. package/indicators/dema.src.js +11 -2
  532. package/indicators/disparity-index.js +6 -6
  533. package/indicators/disparity-index.js.map +1 -1
  534. package/indicators/disparity-index.src.js +11 -2
  535. package/indicators/dmi.js +12 -12
  536. package/indicators/dmi.js.map +1 -1
  537. package/indicators/dmi.src.js +109 -106
  538. package/indicators/dpo.js +5 -5
  539. package/indicators/dpo.js.map +1 -1
  540. package/indicators/dpo.src.js +11 -2
  541. package/indicators/ema.js +2 -1
  542. package/indicators/ema.js.map +1 -1
  543. package/indicators/ema.src.js +10 -1
  544. package/indicators/ichimoku-kinko-hyo.js +16 -16
  545. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  546. package/indicators/ichimoku-kinko-hyo.src.js +11 -2
  547. package/indicators/indicators-all.d.ts +1 -17
  548. package/indicators/indicators-all.js +198 -196
  549. package/indicators/indicators-all.js.map +1 -1
  550. package/indicators/indicators-all.src.d.ts +1 -17
  551. package/indicators/indicators-all.src.js +151 -129
  552. package/indicators/indicators.js +13 -12
  553. package/indicators/indicators.js.map +1 -1
  554. package/indicators/indicators.src.js +21 -5
  555. package/indicators/keltner-channels.d.ts +1 -17
  556. package/indicators/keltner-channels.js +11 -11
  557. package/indicators/keltner-channels.js.map +1 -1
  558. package/indicators/keltner-channels.src.d.ts +1 -17
  559. package/indicators/keltner-channels.src.js +99 -100
  560. package/indicators/klinger.js +14 -14
  561. package/indicators/klinger.js.map +1 -1
  562. package/indicators/klinger.src.js +99 -100
  563. package/indicators/macd.js +13 -11
  564. package/indicators/macd.js.map +1 -1
  565. package/indicators/macd.src.js +35 -14
  566. package/indicators/mfi.js +6 -6
  567. package/indicators/mfi.js.map +1 -1
  568. package/indicators/mfi.src.js +11 -2
  569. package/indicators/momentum.js +5 -5
  570. package/indicators/momentum.js.map +1 -1
  571. package/indicators/momentum.src.js +11 -2
  572. package/indicators/natr.js +5 -4
  573. package/indicators/natr.js.map +1 -1
  574. package/indicators/natr.src.js +11 -2
  575. package/indicators/obv.js +5 -5
  576. package/indicators/obv.js.map +1 -1
  577. package/indicators/obv.src.js +11 -2
  578. package/indicators/pivot-points.js +11 -11
  579. package/indicators/pivot-points.js.map +1 -1
  580. package/indicators/pivot-points.src.js +11 -2
  581. package/indicators/ppo.js +5 -5
  582. package/indicators/ppo.js.map +1 -1
  583. package/indicators/ppo.src.js +11 -2
  584. package/indicators/price-channel.d.ts +1 -17
  585. package/indicators/price-channel.js +11 -11
  586. package/indicators/price-channel.js.map +1 -1
  587. package/indicators/price-channel.src.d.ts +1 -17
  588. package/indicators/price-channel.src.js +99 -100
  589. package/indicators/price-envelopes.js +8 -8
  590. package/indicators/price-envelopes.js.map +1 -1
  591. package/indicators/price-envelopes.src.js +11 -2
  592. package/indicators/psar.js +7 -6
  593. package/indicators/psar.js.map +1 -1
  594. package/indicators/psar.src.js +11 -2
  595. package/indicators/regressions.js +12 -12
  596. package/indicators/regressions.js.map +1 -1
  597. package/indicators/regressions.src.js +11 -2
  598. package/indicators/roc.js +5 -5
  599. package/indicators/roc.js.map +1 -1
  600. package/indicators/roc.src.js +11 -2
  601. package/indicators/rsi.js +6 -5
  602. package/indicators/rsi.js.map +1 -1
  603. package/indicators/rsi.src.js +11 -2
  604. package/indicators/slow-stochastic.js +5 -5
  605. package/indicators/slow-stochastic.js.map +1 -1
  606. package/indicators/slow-stochastic.src.js +11 -2
  607. package/indicators/stochastic.d.ts +1 -17
  608. package/indicators/stochastic.js +12 -12
  609. package/indicators/stochastic.js.map +1 -1
  610. package/indicators/stochastic.src.d.ts +1 -17
  611. package/indicators/stochastic.src.js +99 -100
  612. package/indicators/supertrend.js +10 -10
  613. package/indicators/supertrend.js.map +1 -1
  614. package/indicators/supertrend.src.js +14 -5
  615. package/indicators/tema.js +6 -6
  616. package/indicators/tema.js.map +1 -1
  617. package/indicators/tema.src.js +11 -2
  618. package/indicators/trendline.js +5 -5
  619. package/indicators/trendline.js.map +1 -1
  620. package/indicators/trendline.src.js +11 -2
  621. package/indicators/trix.js +4 -4
  622. package/indicators/trix.js.map +1 -1
  623. package/indicators/trix.src.js +11 -2
  624. package/indicators/volume-by-price.js +17 -17
  625. package/indicators/volume-by-price.js.map +1 -1
  626. package/indicators/volume-by-price.src.js +11 -2
  627. package/indicators/vwap.js +5 -5
  628. package/indicators/vwap.js.map +1 -1
  629. package/indicators/vwap.src.js +11 -2
  630. package/indicators/williams-r.js +6 -5
  631. package/indicators/williams-r.js.map +1 -1
  632. package/indicators/williams-r.src.js +11 -2
  633. package/indicators/wma.js +5 -5
  634. package/indicators/wma.js.map +1 -1
  635. package/indicators/wma.src.js +11 -2
  636. package/indicators/zigzag.js +6 -6
  637. package/indicators/zigzag.js.map +1 -1
  638. package/indicators/zigzag.src.js +11 -2
  639. package/lib/jspdf.js +299 -184
  640. package/lib/jspdf.src.js +25266 -18067
  641. package/lib/svg2pdf.js +35 -31
  642. package/lib/svg2pdf.src.js +5721 -4179
  643. package/modules/accessibility.js +242 -237
  644. package/modules/accessibility.js.map +1 -1
  645. package/modules/accessibility.src.js +599 -390
  646. package/modules/annotations-advanced.js +192 -192
  647. package/modules/annotations-advanced.js.map +1 -1
  648. package/modules/annotations-advanced.src.js +96 -47
  649. package/modules/annotations.js +126 -126
  650. package/modules/annotations.js.map +1 -1
  651. package/modules/annotations.src.js +67 -25
  652. package/modules/arc-diagram.js +25 -0
  653. package/modules/arc-diagram.js.map +1 -0
  654. package/modules/arc-diagram.src.js +778 -0
  655. package/modules/arrow-symbols.js +4 -3
  656. package/modules/arrow-symbols.js.map +1 -1
  657. package/modules/arrow-symbols.src.js +11 -2
  658. package/modules/boost-canvas.js +16 -15
  659. package/modules/boost-canvas.js.map +1 -1
  660. package/modules/boost-canvas.src.js +22 -7
  661. package/modules/boost.js +81 -79
  662. package/modules/boost.js.map +1 -1
  663. package/modules/boost.src.js +90 -51
  664. package/modules/broken-axis.js +13 -13
  665. package/modules/broken-axis.js.map +1 -1
  666. package/modules/broken-axis.src.js +11 -2
  667. package/modules/bullet.js +9 -9
  668. package/modules/bullet.js.map +1 -1
  669. package/modules/bullet.src.js +12 -6
  670. package/modules/coloraxis.js +24 -24
  671. package/modules/coloraxis.js.map +1 -1
  672. package/modules/coloraxis.src.js +37 -11
  673. package/modules/current-date-indicator.js +5 -4
  674. package/modules/current-date-indicator.js.map +1 -1
  675. package/modules/current-date-indicator.src.js +12 -3
  676. package/modules/cylinder.js +11 -11
  677. package/modules/cylinder.js.map +1 -1
  678. package/modules/cylinder.src.js +11 -2
  679. package/modules/data.d.ts +12 -12
  680. package/modules/data.js +33 -33
  681. package/modules/data.js.map +1 -1
  682. package/modules/data.src.d.ts +12 -12
  683. package/modules/data.src.js +906 -846
  684. package/modules/datagrouping.js +21 -20
  685. package/modules/datagrouping.js.map +1 -1
  686. package/modules/datagrouping.src.js +19 -5
  687. package/modules/debugger.js +8 -7
  688. package/modules/debugger.js.map +1 -1
  689. package/modules/debugger.src.js +15 -2
  690. package/modules/dependency-wheel.js +12 -11
  691. package/modules/dependency-wheel.js.map +1 -1
  692. package/modules/dependency-wheel.src.js +14 -5
  693. package/modules/dotplot.js +6 -6
  694. package/modules/dotplot.js.map +1 -1
  695. package/modules/dotplot.src.js +11 -2
  696. package/modules/drag-panes.js +10 -10
  697. package/modules/drag-panes.js.map +1 -1
  698. package/modules/drag-panes.src.js +12 -3
  699. package/modules/draggable-points.js +35 -34
  700. package/modules/draggable-points.js.map +1 -1
  701. package/modules/draggable-points.src.js +20 -9
  702. package/modules/drilldown.d.ts +19 -0
  703. package/modules/drilldown.js +37 -25
  704. package/modules/drilldown.js.map +1 -1
  705. package/modules/drilldown.src.d.ts +19 -0
  706. package/modules/drilldown.src.js +1124 -108
  707. package/modules/dumbbell.d.ts +4 -0
  708. package/modules/dumbbell.js +17 -17
  709. package/modules/dumbbell.js.map +1 -1
  710. package/modules/dumbbell.src.d.ts +4 -0
  711. package/modules/dumbbell.src.js +34 -13
  712. package/modules/export-data.js +24 -21
  713. package/modules/export-data.js.map +1 -1
  714. package/modules/export-data.src.js +87 -14
  715. package/modules/exporting.d.ts +8 -8
  716. package/modules/exporting.js +39 -39
  717. package/modules/exporting.js.map +1 -1
  718. package/modules/exporting.src.d.ts +8 -8
  719. package/modules/exporting.src.js +270 -135
  720. package/modules/full-screen.js +8 -7
  721. package/modules/full-screen.js.map +1 -1
  722. package/modules/full-screen.src.js +135 -58
  723. package/modules/funnel.js +12 -12
  724. package/modules/funnel.js.map +1 -1
  725. package/modules/funnel.src.js +13 -4
  726. package/modules/funnel3d.js +21 -21
  727. package/modules/funnel3d.js.map +1 -1
  728. package/modules/funnel3d.src.js +11 -2
  729. package/modules/gantt.js +218 -217
  730. package/modules/gantt.js.map +1 -1
  731. package/modules/gantt.src.js +983 -943
  732. package/modules/grid-axis.js +23 -23
  733. package/modules/grid-axis.js.map +1 -1
  734. package/modules/grid-axis.src.js +900 -890
  735. package/modules/heatmap.js +40 -39
  736. package/modules/heatmap.js.map +1 -1
  737. package/modules/heatmap.src.js +160 -113
  738. package/modules/heikinashi.js +8 -8
  739. package/modules/heikinashi.js.map +1 -1
  740. package/modules/heikinashi.src.js +11 -2
  741. package/modules/histogram-bellcurve.js +13 -13
  742. package/modules/histogram-bellcurve.js.map +1 -1
  743. package/modules/histogram-bellcurve.src.js +11 -2
  744. package/modules/hollowcandlestick.js +9 -9
  745. package/modules/hollowcandlestick.js.map +1 -1
  746. package/modules/hollowcandlestick.src.js +19 -10
  747. package/modules/item-series.js +12 -12
  748. package/modules/item-series.js.map +1 -1
  749. package/modules/item-series.src.js +11 -2
  750. package/modules/lollipop.js +7 -7
  751. package/modules/lollipop.js.map +1 -1
  752. package/modules/lollipop.src.js +12 -3
  753. package/modules/map.d.ts +80 -43
  754. package/modules/map.js +171 -144
  755. package/modules/map.js.map +1 -1
  756. package/modules/map.src.d.ts +80 -43
  757. package/modules/map.src.js +8292 -6822
  758. package/modules/marker-clusters.js +36 -36
  759. package/modules/marker-clusters.js.map +1 -1
  760. package/modules/marker-clusters.src.js +48 -28
  761. package/modules/networkgraph.d.ts +1 -12
  762. package/modules/networkgraph.js +46 -45
  763. package/modules/networkgraph.js.map +1 -1
  764. package/modules/networkgraph.src.d.ts +1 -12
  765. package/modules/networkgraph.src.js +127 -55
  766. package/modules/no-data-to-display.js +5 -5
  767. package/modules/no-data-to-display.js.map +1 -1
  768. package/modules/no-data-to-display.src.js +12 -3
  769. package/modules/offline-exporting.js +20 -18
  770. package/modules/offline-exporting.js.map +1 -1
  771. package/modules/offline-exporting.src.js +129 -28
  772. package/modules/oldie-polyfills.js +7 -7
  773. package/modules/oldie-polyfills.js.map +1 -1
  774. package/modules/oldie-polyfills.src.js +11 -2
  775. package/modules/oldie.js +30 -30
  776. package/modules/oldie.js.map +1 -1
  777. package/modules/oldie.src.js +13 -4
  778. package/modules/organization.js +16 -14
  779. package/modules/organization.js.map +1 -1
  780. package/modules/organization.src.js +168 -34
  781. package/modules/overlapping-datalabels.js +3 -2
  782. package/modules/overlapping-datalabels.js.map +1 -1
  783. package/modules/overlapping-datalabels.src.js +11 -2
  784. package/modules/parallel-coordinates.js +11 -11
  785. package/modules/parallel-coordinates.js.map +1 -1
  786. package/modules/parallel-coordinates.src.js +12 -3
  787. package/modules/pareto.js +7 -7
  788. package/modules/pareto.js.map +1 -1
  789. package/modules/pareto.src.js +11 -2
  790. package/modules/pathfinder.js +31 -31
  791. package/modules/pathfinder.js.map +1 -1
  792. package/modules/pathfinder.src.js +11 -2
  793. package/modules/pattern-fill.js +15 -14
  794. package/modules/pattern-fill.js.map +1 -1
  795. package/modules/pattern-fill.src.js +25 -3
  796. package/modules/price-indicator.js +5 -5
  797. package/modules/price-indicator.js.map +1 -1
  798. package/modules/price-indicator.src.js +11 -2
  799. package/modules/pyramid3d.js +4 -4
  800. package/modules/pyramid3d.js.map +1 -1
  801. package/modules/pyramid3d.src.js +11 -2
  802. package/modules/sankey.d.ts +1 -12
  803. package/modules/sankey.js +32 -29
  804. package/modules/sankey.js.map +1 -1
  805. package/modules/sankey.src.d.ts +1 -12
  806. package/modules/sankey.src.js +422 -207
  807. package/modules/series-label.js +18 -17
  808. package/modules/series-label.js.map +1 -1
  809. package/modules/series-label.src.js +482 -386
  810. package/modules/series-on-point.js +18 -0
  811. package/modules/series-on-point.js.map +1 -0
  812. package/modules/series-on-point.src.js +464 -0
  813. package/modules/solid-gauge.js +10 -10
  814. package/modules/solid-gauge.js.map +1 -1
  815. package/modules/solid-gauge.src.js +15 -6
  816. package/modules/sonification.js +59 -59
  817. package/modules/sonification.js.map +1 -1
  818. package/modules/sonification.src.js +13 -8
  819. package/modules/static-scale.js +5 -4
  820. package/modules/static-scale.js.map +1 -1
  821. package/modules/static-scale.src.js +11 -2
  822. package/modules/stock-tools.js +167 -167
  823. package/modules/stock-tools.js.map +1 -1
  824. package/modules/stock-tools.src.js +118 -67
  825. package/modules/stock.js +205 -204
  826. package/modules/stock.js.map +1 -1
  827. package/modules/stock.src.js +141 -76
  828. package/modules/streamgraph.js +5 -4
  829. package/modules/streamgraph.js.map +1 -1
  830. package/modules/streamgraph.src.js +11 -2
  831. package/modules/sunburst.d.ts +3 -0
  832. package/modules/sunburst.js +73 -60
  833. package/modules/sunburst.js.map +1 -1
  834. package/modules/sunburst.src.d.ts +3 -0
  835. package/modules/sunburst.src.js +1391 -406
  836. package/modules/tilemap.js +17 -17
  837. package/modules/tilemap.js.map +1 -1
  838. package/modules/tilemap.src.js +11 -2
  839. package/modules/timeline.js +18 -18
  840. package/modules/timeline.js.map +1 -1
  841. package/modules/timeline.src.js +14 -5
  842. package/modules/treegrid.js +57 -56
  843. package/modules/treegrid.js.map +1 -1
  844. package/modules/treegrid.src.js +913 -892
  845. package/modules/treemap.d.ts +3 -0
  846. package/modules/treemap.js +54 -41
  847. package/modules/treemap.js.map +1 -1
  848. package/modules/treemap.src.d.ts +3 -0
  849. package/modules/treemap.src.js +1229 -255
  850. package/modules/variable-pie.js +9 -9
  851. package/modules/variable-pie.js.map +1 -1
  852. package/modules/variable-pie.src.js +11 -2
  853. package/modules/variwide.js +12 -12
  854. package/modules/variwide.js.map +1 -1
  855. package/modules/variwide.src.js +11 -2
  856. package/modules/vector.js +8 -7
  857. package/modules/vector.js.map +1 -1
  858. package/modules/vector.src.js +11 -2
  859. package/modules/venn.js +31 -31
  860. package/modules/venn.js.map +1 -1
  861. package/modules/venn.src.js +88 -105
  862. package/modules/windbarb.js +15 -15
  863. package/modules/windbarb.js.map +1 -1
  864. package/modules/windbarb.src.js +11 -2
  865. package/modules/wordcloud.js +23 -23
  866. package/modules/wordcloud.js.map +1 -1
  867. package/modules/wordcloud.src.js +92 -109
  868. package/modules/xrange.js +16 -16
  869. package/modules/xrange.js.map +1 -1
  870. package/modules/xrange.src.js +11 -2
  871. package/package.json +1 -1
  872. package/themes/avocado.js +4 -3
  873. package/themes/avocado.js.map +1 -1
  874. package/themes/avocado.src.js +11 -2
  875. package/themes/brand-dark.js +9 -8
  876. package/themes/brand-dark.js.map +1 -1
  877. package/themes/brand-dark.src.js +11 -2
  878. package/themes/brand-light.js +8 -8
  879. package/themes/brand-light.js.map +1 -1
  880. package/themes/brand-light.src.js +11 -2
  881. package/themes/dark-blue.js +9 -8
  882. package/themes/dark-blue.js.map +1 -1
  883. package/themes/dark-blue.src.js +11 -2
  884. package/themes/dark-green.js +9 -8
  885. package/themes/dark-green.js.map +1 -1
  886. package/themes/dark-green.src.js +11 -2
  887. package/themes/dark-unica.js +8 -7
  888. package/themes/dark-unica.js.map +1 -1
  889. package/themes/dark-unica.src.js +11 -2
  890. package/themes/gray.js +9 -8
  891. package/themes/gray.js.map +1 -1
  892. package/themes/gray.src.js +11 -2
  893. package/themes/grid-light.js +5 -4
  894. package/themes/grid-light.js.map +1 -1
  895. package/themes/grid-light.src.js +11 -2
  896. package/themes/grid.js +5 -5
  897. package/themes/grid.js.map +1 -1
  898. package/themes/grid.src.js +11 -2
  899. package/themes/high-contrast-dark.js +7 -7
  900. package/themes/high-contrast-dark.js.map +1 -1
  901. package/themes/high-contrast-dark.src.js +21 -12
  902. package/themes/high-contrast-light.js +3 -3
  903. package/themes/high-contrast-light.js.map +1 -1
  904. package/themes/high-contrast-light.src.js +21 -12
  905. package/themes/sand-signika.js +5 -5
  906. package/themes/sand-signika.js.map +1 -1
  907. package/themes/sand-signika.src.js +11 -2
  908. package/themes/skies.js +5 -5
  909. package/themes/skies.js.map +1 -1
  910. package/themes/skies.src.js +11 -2
  911. package/themes/sunset.js +3 -3
  912. package/themes/sunset.js.map +1 -1
  913. package/themes/sunset.src.js +11 -2
  914. package/es-modules/Extensions/Polar.js +0 -740
  915. package/es-modules/Maps/ProjectionDefinition.js +0 -9
  916. package/es-modules/Series/ColorMapMixin.js +0 -84
  917. package/es-modules/Series/DrawPointComposition.js +0 -111
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts Gantt JS v9.3.3 (2022-02-01)
2
+ * @license Highcharts Gantt JS v10.2.0 (2022-07-05)
3
3
  *
4
4
  * Tree Grid
5
5
  *
@@ -7,7 +7,6 @@
7
7
  *
8
8
  * License: www.highcharts.com/license
9
9
  */
10
- 'use strict';
11
10
  (function (factory) {
12
11
  if (typeof module === 'object' && module.exports) {
13
12
  factory['default'] = factory;
@@ -22,10 +21,20 @@
22
21
  factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
23
22
  }
24
23
  }(function (Highcharts) {
24
+ 'use strict';
25
25
  var _modules = Highcharts ? Highcharts._modules : {};
26
26
  function _registerModule(obj, path, args, fn) {
27
27
  if (!obj.hasOwnProperty(path)) {
28
28
  obj[path] = fn.apply(null, args);
29
+
30
+ if (typeof CustomEvent === 'function') {
31
+ window.dispatchEvent(
32
+ new CustomEvent(
33
+ 'HighchartsModuleLoaded',
34
+ { detail: { path: path, module: obj[path] }
35
+ })
36
+ );
37
+ }
29
38
  }
30
39
  }
31
40
  _registerModule(_modules, 'Core/Axis/BrokenAxis.js', [_modules['Extensions/Stacking.js'], _modules['Core/Utilities.js']], function (StackItem, U) {
@@ -696,19 +705,49 @@
696
705
  pick = U.pick,
697
706
  timeUnits = U.timeUnits,
698
707
  wrap = U.wrap;
708
+ /* *
709
+ *
710
+ * Enums
711
+ *
712
+ * */
713
+ /**
714
+ * Enum for which side the axis is on. Maps to axis.side.
715
+ * @private
716
+ */
717
+ var GridAxisSide;
718
+ (function (GridAxisSide) {
719
+ GridAxisSide[GridAxisSide["top"] = 0] = "top";
720
+ GridAxisSide[GridAxisSide["right"] = 1] = "right";
721
+ GridAxisSide[GridAxisSide["bottom"] = 2] = "bottom";
722
+ GridAxisSide[GridAxisSide["left"] = 3] = "left";
723
+ })(GridAxisSide || (GridAxisSide = {}));
724
+ /* *
725
+ *
726
+ * Constants
727
+ *
728
+ * */
729
+ var composedClasses = [];
699
730
  /* *
700
731
  *
701
732
  * Functions
702
733
  *
703
734
  * */
704
- /* eslint-disable require-jsdoc */
735
+ /**
736
+ * @private
737
+ */
705
738
  function argsToArray(args) {
706
739
  return Array.prototype.slice.call(args, 1);
707
740
  }
741
+ /**
742
+ * @private
743
+ */
708
744
  function isObject(x) {
709
745
  // Always use strict mode
710
746
  return U.isObject(x, true);
711
747
  }
748
+ /**
749
+ * @private
750
+ */
712
751
  function applyGridOptions(axis) {
713
752
  var options = axis.options;
714
753
  // Center-align by default
@@ -733,960 +772,925 @@
733
772
  options.labels.rotation = 0;
734
773
  }
735
774
  /**
736
- * Axis with grid support.
775
+ * Extends axis class with grid support.
737
776
  * @private
738
777
  */
739
- var GridAxis;
740
- (function (GridAxis) {
741
- /* *
742
- *
743
- * Declarations
744
- *
745
- * */
746
- /**
747
- * Enum for which side the axis is on. Maps to axis.side.
748
- * @private
749
- */
750
- var Side;
751
- (function (Side) {
752
- Side[Side["top"] = 0] = "top";
753
- Side[Side["right"] = 1] = "right";
754
- Side[Side["bottom"] = 2] = "bottom";
755
- Side[Side["left"] = 3] = "left";
756
- })(Side = GridAxis.Side || (GridAxis.Side = {}));
757
- /* *
758
- *
759
- * Functions
760
- *
761
- * */
762
- /* eslint-disable valid-jsdoc */
763
- /**
764
- * Extends axis class with grid support.
765
- * @private
766
- */
767
- function compose(AxisClass, ChartClass, TickClass) {
768
- if (AxisClass.keepProps.indexOf('grid') === -1) {
769
- AxisClass.keepProps.push('grid');
770
- AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
771
- wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
772
- // Add event handlers
773
- addEvent(AxisClass, 'init', onInit);
774
- addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
775
- addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
776
- addEvent(AxisClass, 'afterInit', onAfterInit);
777
- addEvent(AxisClass, 'afterRender', onAfterRender);
778
- addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
779
- addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
780
- addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
781
- addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
782
- addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
783
- addEvent(AxisClass, 'trimTicks', onTrimTicks);
784
- addEvent(AxisClass, 'destroy', onDestroy);
785
- }
778
+ function compose(AxisClass, ChartClass, TickClass) {
779
+ if (composedClasses.indexOf(AxisClass) === -1) {
780
+ composedClasses.push(AxisClass);
781
+ AxisClass.keepProps.push('grid');
782
+ AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
783
+ wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
784
+ // Add event handlers
785
+ addEvent(AxisClass, 'init', onInit);
786
+ addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
787
+ addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
788
+ addEvent(AxisClass, 'afterInit', onAfterInit);
789
+ addEvent(AxisClass, 'afterRender', onAfterRender);
790
+ addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
791
+ addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
792
+ addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
793
+ addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
794
+ addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
795
+ addEvent(AxisClass, 'trimTicks', onTrimTicks);
796
+ addEvent(AxisClass, 'destroy', onDestroy);
797
+ }
798
+ if (composedClasses.indexOf(ChartClass) === -1) {
786
799
  addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);
800
+ }
801
+ if (composedClasses.indexOf(TickClass) === -1) {
787
802
  addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);
788
803
  addEvent(TickClass, 'labelFormat', onTickLabelFormat);
789
- return AxisClass;
790
804
  }
791
- GridAxis.compose = compose;
792
- /**
793
- * Get the largest label width and height.
794
- *
795
- * @private
796
- * @function Highcharts.Axis#getMaxLabelDimensions
797
- *
798
- * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
799
- * All the ticks on one axis.
800
- *
801
- * @param {Array<number|string>} tickPositions
802
- * All the tick positions on one axis.
803
- *
804
- * @return {Highcharts.SizeObject}
805
- * Object containing the properties height and width.
806
- *
807
- * @todo Move this to the generic axis implementation, as it is used there.
808
- */
809
- function getMaxLabelDimensions(ticks, tickPositions) {
810
- var dimensions = {
811
- width: 0,
812
- height: 0
813
- };
814
- tickPositions.forEach(function (pos) {
815
- var tick = ticks[pos];
816
- var labelHeight = 0,
817
- labelWidth = 0,
818
- label;
819
- if (isObject(tick)) {
820
- label = isObject(tick.label) ? tick.label : {};
821
- // Find width and height of label
822
- labelHeight = label.getBBox ? label.getBBox().height : 0;
823
- if (label.textStr && !isNumber(label.textPxLength)) {
824
- label.textPxLength = label.getBBox().width;
825
- }
826
- labelWidth = isNumber(label.textPxLength) ?
827
- // Math.round ensures crisp lines
828
- Math.round(label.textPxLength) :
829
- 0;
830
- if (label.textStr) {
831
- // Set the tickWidth same as the label width after ellipsis
832
- // applied #10281
833
- labelWidth = Math.round(label.getBBox().width);
834
- }
835
- // Update the result if width and/or height are larger
836
- dimensions.height = Math.max(labelHeight, dimensions.height);
837
- dimensions.width = Math.max(labelWidth, dimensions.width);
805
+ return AxisClass;
806
+ }
807
+ /**
808
+ * Get the largest label width and height.
809
+ *
810
+ * @private
811
+ * @function Highcharts.Axis#getMaxLabelDimensions
812
+ *
813
+ * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
814
+ * All the ticks on one axis.
815
+ *
816
+ * @param {Array<number|string>} tickPositions
817
+ * All the tick positions on one axis.
818
+ *
819
+ * @return {Highcharts.SizeObject}
820
+ * Object containing the properties height and width.
821
+ *
822
+ * @todo Move this to the generic axis implementation, as it is used there.
823
+ */
824
+ function getMaxLabelDimensions(ticks, tickPositions) {
825
+ var dimensions = {
826
+ width: 0,
827
+ height: 0
828
+ };
829
+ tickPositions.forEach(function (pos) {
830
+ var tick = ticks[pos];
831
+ var labelHeight = 0,
832
+ labelWidth = 0,
833
+ label;
834
+ if (isObject(tick)) {
835
+ label = isObject(tick.label) ? tick.label : {};
836
+ // Find width and height of label
837
+ labelHeight = label.getBBox ? label.getBBox().height : 0;
838
+ if (label.textStr && !isNumber(label.textPxLength)) {
839
+ label.textPxLength = label.getBBox().width;
838
840
  }
839
- });
840
- // For tree grid, add indentation
841
- if (this.options.type === 'treegrid' &&
842
- this.treeGrid &&
843
- this.treeGrid.mapOfPosToGridNode) {
844
- var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
845
- dimensions.width += (this.options.labels.indentation *
846
- (treeDepth - 1));
841
+ labelWidth = isNumber(label.textPxLength) ?
842
+ // Math.round ensures crisp lines
843
+ Math.round(label.textPxLength) :
844
+ 0;
845
+ if (label.textStr) {
846
+ // Set the tickWidth same as the label width after ellipsis
847
+ // applied #10281
848
+ labelWidth = Math.round(label.getBBox().width);
849
+ }
850
+ // Update the result if width and/or height are larger
851
+ dimensions.height = Math.max(labelHeight, dimensions.height);
852
+ dimensions.width = Math.max(labelWidth, dimensions.width);
847
853
  }
848
- return dimensions;
854
+ });
855
+ // For tree grid, add indentation
856
+ if (this.options.type === 'treegrid' &&
857
+ this.treeGrid &&
858
+ this.treeGrid.mapOfPosToGridNode) {
859
+ var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
860
+ dimensions.width += (this.options.labels.indentation *
861
+ (treeDepth - 1));
849
862
  }
850
- /**
851
- * Handle columns and getOffset.
852
- * @private
853
- */
854
- function onAfterGetOffset() {
855
- var grid = this.grid;
856
- (grid && grid.columns || []).forEach(function (column) {
857
- column.getOffset();
858
- });
863
+ return dimensions;
864
+ }
865
+ /**
866
+ * Handle columns and getOffset.
867
+ * @private
868
+ */
869
+ function onAfterGetOffset() {
870
+ var grid = this.grid;
871
+ (grid && grid.columns || []).forEach(function (column) {
872
+ column.getOffset();
873
+ });
874
+ }
875
+ /**
876
+ * @private
877
+ */
878
+ function onAfterGetTitlePosition(e) {
879
+ var axis = this;
880
+ var options = axis.options;
881
+ var gridOptions = options.grid || {};
882
+ if (gridOptions.enabled === true) {
883
+ // compute anchor points for each of the title align options
884
+ var axisTitle = axis.axisTitle,
885
+ axisHeight = axis.height,
886
+ horiz = axis.horiz,
887
+ axisLeft = axis.left,
888
+ offset = axis.offset,
889
+ opposite = axis.opposite,
890
+ options_1 = axis.options,
891
+ axisTop = axis.top,
892
+ axisWidth = axis.width;
893
+ var tickSize = axis.tickSize();
894
+ var titleWidth = axisTitle && axisTitle.getBBox().width;
895
+ var xOption = options_1.title.x;
896
+ var yOption = options_1.title.y;
897
+ var titleMargin = pick(options_1.title.margin,
898
+ horiz ? 5 : 10);
899
+ var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize,
900
+ axisTitle).f;
901
+ var crispCorr = tickSize ? tickSize[0] / 2 : 0;
902
+ // TODO account for alignment
903
+ // the position in the perpendicular direction of the axis
904
+ var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
905
+ (horiz ? 1 : -1) * // horizontal axis reverses the margin
906
+ (opposite ? -1 : 1) * // so does opposite axes
907
+ crispCorr +
908
+ (axis.side === GridAxisSide.bottom ? titleFontSize : 0));
909
+ e.titlePosition.x = horiz ?
910
+ axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
911
+ offAxis + (opposite ? axisWidth : 0) + offset + xOption;
912
+ e.titlePosition.y = horiz ?
913
+ (offAxis -
914
+ (opposite ? axisHeight : 0) +
915
+ (opposite ? titleFontSize : -titleFontSize) / 2 +
916
+ offset +
917
+ yOption) :
918
+ axisTop - titleMargin + yOption;
859
919
  }
860
- /**
861
- * @private
862
- */
863
- function onAfterGetTitlePosition(e) {
864
- var axis = this;
865
- var options = axis.options;
866
- var gridOptions = options.grid || {};
867
- if (gridOptions.enabled === true) {
868
- // compute anchor points for each of the title align options
869
- var axisTitle = axis.axisTitle,
870
- axisHeight = axis.height,
871
- horiz = axis.horiz,
872
- axisLeft = axis.left,
873
- offset = axis.offset,
874
- opposite = axis.opposite,
875
- options_1 = axis.options,
876
- axisTop = axis.top,
877
- axisWidth = axis.width;
878
- var tickSize = axis.tickSize();
879
- var titleWidth = axisTitle && axisTitle.getBBox().width;
880
- var xOption = options_1.title.x;
881
- var yOption = options_1.title.y;
882
- var titleMargin = pick(options_1.title.margin,
883
- horiz ? 5 : 10);
884
- var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize,
885
- axisTitle).f;
886
- var crispCorr = tickSize ? tickSize[0] / 2 : 0;
887
- // TODO account for alignment
888
- // the position in the perpendicular direction of the axis
889
- var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
890
- (horiz ? 1 : -1) * // horizontal axis reverses the margin
891
- (opposite ? -1 : 1) * // so does opposite axes
892
- crispCorr +
893
- (axis.side === GridAxis.Side.bottom ? titleFontSize : 0));
894
- e.titlePosition.x = horiz ?
895
- axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
896
- offAxis + (opposite ? axisWidth : 0) + offset + xOption;
897
- e.titlePosition.y = horiz ?
898
- (offAxis -
899
- (opposite ? axisHeight : 0) +
900
- (opposite ? titleFontSize : -titleFontSize) / 2 +
901
- offset +
902
- yOption) :
903
- axisTop - titleMargin + yOption;
904
- }
920
+ }
921
+ /**
922
+ * @private
923
+ */
924
+ function onAfterInit() {
925
+ var axis = this;
926
+ var chart = axis.chart,
927
+ _a = axis.options.grid,
928
+ gridOptions = _a === void 0 ? {} : _a,
929
+ userOptions = axis.userOptions;
930
+ if (gridOptions.enabled) {
931
+ applyGridOptions(axis);
905
932
  }
906
- /**
907
- * @private
908
- */
909
- function onAfterInit() {
910
- var axis = this;
911
- var chart = axis.chart,
912
- _a = axis.options.grid,
913
- gridOptions = _a === void 0 ? {} : _a,
914
- userOptions = axis.userOptions;
915
- if (gridOptions.enabled) {
916
- applyGridOptions(axis);
917
- }
918
- if (gridOptions.columns) {
919
- var columns = axis.grid.columns = [];
920
- var columnIndex = axis.grid.columnIndex = 0;
921
- // Handle columns, each column is a grid axis
922
- while (++columnIndex < gridOptions.columns.length) {
923
- var columnOptions = merge(userOptions,
924
- gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
925
- linkedTo: 0,
926
- // Force to behave like category axis
927
- type: 'category',
928
- // Disable by default the scrollbar on the grid axis
929
- scrollbar: {
930
- enabled: false
931
- }
932
- });
933
- delete columnOptions.grid.columns; // Prevent recursion
934
- var column = new Axis(axis.chart,
935
- columnOptions);
936
- column.grid.isColumn = true;
937
- column.grid.columnIndex = columnIndex;
938
- // Remove column axis from chart axes array, and place it
939
- // in the columns array.
940
- erase(chart.axes, column);
941
- erase(chart[axis.coll], column);
942
- columns.push(column);
943
- }
933
+ if (gridOptions.columns) {
934
+ var columns = axis.grid.columns = [];
935
+ var columnIndex = axis.grid.columnIndex = 0;
936
+ // Handle columns, each column is a grid axis
937
+ while (++columnIndex < gridOptions.columns.length) {
938
+ var columnOptions = merge(userOptions,
939
+ gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
940
+ linkedTo: 0,
941
+ // Force to behave like category axis
942
+ type: 'category',
943
+ // Disable by default the scrollbar on the grid axis
944
+ scrollbar: {
945
+ enabled: false
946
+ }
947
+ });
948
+ delete columnOptions.grid.columns; // Prevent recursion
949
+ var column = new Axis(axis.chart,
950
+ columnOptions);
951
+ column.grid.isColumn = true;
952
+ column.grid.columnIndex = columnIndex;
953
+ // Remove column axis from chart axes array, and place it
954
+ // in the columns array.
955
+ erase(chart.axes, column);
956
+ erase(chart[axis.coll], column);
957
+ columns.push(column);
944
958
  }
945
959
  }
946
- /**
947
- * Draw an extra line on the far side of the outermost axis,
948
- * creating floor/roof/wall of a grid. And some padding.
949
- * ```
950
- * Make this:
951
- * (axis.min) __________________________ (axis.max)
952
- * | | | | |
953
- * Into this:
954
- * (axis.min) __________________________ (axis.max)
955
- * ___|____|____|____|____|__
956
- * ```
957
- * @private
958
- */
959
- function onAfterRender() {
960
- var axis = this,
961
- grid = axis.grid,
962
- options = axis.options,
963
- gridOptions = options.grid || {};
964
- if (gridOptions.enabled === true) {
965
- var min = axis.min || 0,
966
- max = axis.max || 0;
967
- // @todo acutual label padding (top, bottom, left, right)
968
- axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
969
- // Remove right wall before rendering if updating
970
- if (axis.rightWall) {
971
- axis.rightWall.destroy();
972
- }
973
- /*
974
- Draw an extra axis line on outer axes
975
- >
976
- Make this: |______|______|______|___
960
+ }
961
+ /**
962
+ * Draw an extra line on the far side of the outermost axis,
963
+ * creating floor/roof/wall of a grid. And some padding.
964
+ * ```
965
+ * Make this:
966
+ * (axis.min) __________________________ (axis.max)
967
+ * | | | | |
968
+ * Into this:
969
+ * (axis.min) __________________________ (axis.max)
970
+ * ___|____|____|____|____|__
971
+ * ```
972
+ * @private
973
+ */
974
+ function onAfterRender() {
975
+ var axis = this,
976
+ grid = axis.grid,
977
+ options = axis.options,
978
+ gridOptions = options.grid || {};
979
+ if (gridOptions.enabled === true) {
980
+ var min = axis.min || 0,
981
+ max = axis.max || 0;
982
+ // @todo acutual label padding (top, bottom, left, right)
983
+ axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
984
+ // Remove right wall before rendering if updating
985
+ if (axis.rightWall) {
986
+ axis.rightWall.destroy();
987
+ }
988
+ /*
989
+ Draw an extra axis line on outer axes
990
+ >
991
+ Make this: |______|______|______|___
977
992
 
978
- > _________________________
979
- Into this: |______|______|______|__|
980
- */
981
- if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
982
- var lineWidth = options.lineWidth;
983
- if (lineWidth) {
984
- var linePath = axis.getLinePath(lineWidth),
985
- startPoint = linePath[0],
986
- endPoint = linePath[1],
987
- // Negate distance if top or left axis
988
- // Subtract 1px to draw the line at the end of the tick
989
- tickLength = (axis.tickSize('tick') || [1])[0],
990
- distance = (tickLength - 1) * ((axis.side === GridAxis.Side.top ||
991
- axis.side === GridAxis.Side.left) ? -1 : 1);
992
- // If axis is horizontal, reposition line path vertically
993
- if (startPoint[0] === 'M' && endPoint[0] === 'L') {
994
- if (axis.horiz) {
995
- startPoint[2] += distance;
996
- endPoint[2] += distance;
997
- }
998
- else {
999
- startPoint[1] += distance;
1000
- endPoint[1] += distance;
1001
- }
993
+ > _________________________
994
+ Into this: |______|______|______|__|
995
+ */
996
+ if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
997
+ var lineWidth = options.lineWidth;
998
+ if (lineWidth) {
999
+ var linePath = axis.getLinePath(lineWidth),
1000
+ startPoint = linePath[0],
1001
+ endPoint = linePath[1],
1002
+ // Negate distance if top or left axis
1003
+ // Subtract 1px to draw the line at the end of the tick
1004
+ tickLength = (axis.tickSize('tick') || [1])[0],
1005
+ distance = (tickLength - 1) * ((axis.side === GridAxisSide.top ||
1006
+ axis.side === GridAxisSide.left) ? -1 : 1);
1007
+ // If axis is horizontal, reposition line path vertically
1008
+ if (startPoint[0] === 'M' && endPoint[0] === 'L') {
1009
+ if (axis.horiz) {
1010
+ startPoint[2] += distance;
1011
+ endPoint[2] += distance;
1002
1012
  }
1003
- // If it doesn't exist, add an upper and lower border
1004
- // for the vertical grid axis.
1005
- if (!axis.horiz && axis.chart.marginRight) {
1006
- var upperBorderStartPoint = startPoint,
1007
- upperBorderEndPoint = [
1008
- 'L',
1009
- axis.left,
1010
- startPoint[2] || 0
1011
- ],
1012
- upperBorderPath = [
1013
- upperBorderStartPoint,
1014
- upperBorderEndPoint
1015
- ],
1016
- lowerBorderEndPoint = [
1017
- 'L',
1018
- axis.chart.chartWidth - axis.chart.marginRight,
1019
- axis.toPixels(max + axis.tickmarkOffset)
1020
- ],
1021
- lowerBorderStartPoint = [
1022
- 'M',
1023
- endPoint[1] || 0,
1024
- axis.toPixels(max + axis.tickmarkOffset)
1025
- ],
1026
- lowerBorderPath = [
1027
- lowerBorderStartPoint,
1028
- lowerBorderEndPoint
1029
- ];
1030
- if (!axis.grid.upperBorder && min % 1 !== 0) {
1031
- axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
1032
- }
1033
- if (axis.grid.upperBorder) {
1034
- axis.grid.upperBorder.attr({
1035
- stroke: options.lineColor,
1036
- 'stroke-width': options.lineWidth
1037
- });
1038
- axis.grid.upperBorder.animate({
1039
- d: upperBorderPath
1040
- });
1041
- }
1042
- if (!axis.grid.lowerBorder && max % 1 !== 0) {
1043
- axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
1044
- }
1045
- if (axis.grid.lowerBorder) {
1046
- axis.grid.lowerBorder.attr({
1047
- stroke: options.lineColor,
1048
- 'stroke-width': options.lineWidth
1049
- });
1050
- axis.grid.lowerBorder.animate({
1051
- d: lowerBorderPath
1052
- });
1053
- }
1013
+ else {
1014
+ startPoint[1] += distance;
1015
+ endPoint[1] += distance;
1054
1016
  }
1055
- // Render an extra line parallel to the existing axes, to
1056
- // close the grid.
1057
- if (!axis.grid.axisLineExtra) {
1058
- axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
1017
+ }
1018
+ // If it doesn't exist, add an upper and lower border
1019
+ // for the vertical grid axis.
1020
+ if (!axis.horiz && axis.chart.marginRight) {
1021
+ var upperBorderStartPoint = startPoint,
1022
+ upperBorderEndPoint = [
1023
+ 'L',
1024
+ axis.left,
1025
+ startPoint[2] || 0
1026
+ ],
1027
+ upperBorderPath = [
1028
+ upperBorderStartPoint,
1029
+ upperBorderEndPoint
1030
+ ],
1031
+ lowerBorderEndPoint = [
1032
+ 'L',
1033
+ axis.chart.chartWidth - axis.chart.marginRight,
1034
+ axis.toPixels(max + axis.tickmarkOffset)
1035
+ ],
1036
+ lowerBorderStartPoint = [
1037
+ 'M',
1038
+ endPoint[1] || 0,
1039
+ axis.toPixels(max + axis.tickmarkOffset)
1040
+ ],
1041
+ lowerBorderPath = [
1042
+ lowerBorderStartPoint,
1043
+ lowerBorderEndPoint
1044
+ ];
1045
+ if (!axis.grid.upperBorder && min % 1 !== 0) {
1046
+ axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
1059
1047
  }
1060
- else {
1061
- axis.grid.axisLineExtra.attr({
1048
+ if (axis.grid.upperBorder) {
1049
+ axis.grid.upperBorder.attr({
1050
+ stroke: options.lineColor,
1051
+ 'stroke-width': options.lineWidth
1052
+ });
1053
+ axis.grid.upperBorder.animate({
1054
+ d: upperBorderPath
1055
+ });
1056
+ }
1057
+ if (!axis.grid.lowerBorder && max % 1 !== 0) {
1058
+ axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
1059
+ }
1060
+ if (axis.grid.lowerBorder) {
1061
+ axis.grid.lowerBorder.attr({
1062
1062
  stroke: options.lineColor,
1063
1063
  'stroke-width': options.lineWidth
1064
1064
  });
1065
- axis.grid.axisLineExtra.animate({
1066
- d: linePath
1065
+ axis.grid.lowerBorder.animate({
1066
+ d: lowerBorderPath
1067
1067
  });
1068
1068
  }
1069
- // show or hide the line depending on options.showEmpty
1070
- axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
1071
1069
  }
1070
+ // Render an extra line parallel to the existing axes, to
1071
+ // close the grid.
1072
+ if (!axis.grid.axisLineExtra) {
1073
+ axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
1074
+ }
1075
+ else {
1076
+ axis.grid.axisLineExtra.attr({
1077
+ stroke: options.lineColor,
1078
+ 'stroke-width': options.lineWidth
1079
+ });
1080
+ axis.grid.axisLineExtra.animate({
1081
+ d: linePath
1082
+ });
1083
+ }
1084
+ // show or hide the line depending on options.showEmpty
1085
+ axis.axisLine[axis.showAxis ? 'show' : 'hide']();
1072
1086
  }
1073
- (grid && grid.columns || []).forEach(function (column) {
1074
- column.render();
1075
- });
1076
- // Manipulate the tick mark visibility
1077
- // based on the axis.max- allows smooth scrolling.
1078
- if (!axis.horiz &&
1079
- axis.chart.hasRendered &&
1080
- (axis.scrollbar ||
1081
- (axis.linkedParent && axis.linkedParent.scrollbar))) {
1082
- var tickmarkOffset = axis.tickmarkOffset,
1083
- lastTick = axis.tickPositions[axis.tickPositions.length - 1],
1084
- firstTick = axis.tickPositions[0];
1085
- var label = void 0;
1086
- while ((label = axis.hiddenLabels.pop()) && label.element) {
1087
- label.show(); // #15453
1087
+ }
1088
+ (grid && grid.columns || []).forEach(function (column) { return column.render(); });
1089
+ // Manipulate the tick mark visibility
1090
+ // based on the axis.max- allows smooth scrolling.
1091
+ if (!axis.horiz &&
1092
+ axis.chart.hasRendered &&
1093
+ (axis.scrollbar ||
1094
+ (axis.linkedParent && axis.linkedParent.scrollbar))) {
1095
+ var tickmarkOffset = axis.tickmarkOffset,
1096
+ lastTick = axis.tickPositions[axis.tickPositions.length - 1],
1097
+ firstTick = axis.tickPositions[0];
1098
+ var label = void 0,
1099
+ tickMark = void 0;
1100
+ while ((label = axis.hiddenLabels.pop()) && label.element) {
1101
+ label.show(); // #15453
1102
+ }
1103
+ while ((tickMark = axis.hiddenMarks.pop()) &&
1104
+ tickMark.element) {
1105
+ tickMark.show(); // #16439
1106
+ }
1107
+ // Hide/show firts tick label.
1108
+ label = axis.ticks[firstTick].label;
1109
+ if (label) {
1110
+ if (min - firstTick > tickmarkOffset) {
1111
+ axis.hiddenLabels.push(label.hide());
1088
1112
  }
1089
- // Hide/show firts tick label.
1090
- label = axis.ticks[firstTick].label;
1091
- if (label) {
1092
- if (min - firstTick > tickmarkOffset) {
1093
- axis.hiddenLabels.push(label.hide());
1094
- }
1095
- else {
1096
- label.show();
1097
- }
1113
+ else {
1114
+ label.show();
1098
1115
  }
1099
- // Hide/show last tick mark/label.
1100
- label = axis.ticks[lastTick].label;
1101
- if (label) {
1102
- if (lastTick - max > tickmarkOffset) {
1103
- axis.hiddenLabels.push(label.hide());
1104
- }
1105
- else {
1106
- label.show();
1107
- }
1116
+ }
1117
+ // Hide/show last tick mark/label.
1118
+ label = axis.ticks[lastTick].label;
1119
+ if (label) {
1120
+ if (lastTick - max > tickmarkOffset) {
1121
+ axis.hiddenLabels.push(label.hide());
1108
1122
  }
1109
- var mark = axis.ticks[lastTick].mark;
1110
- if (mark) {
1111
- if (lastTick - max < tickmarkOffset &&
1112
- lastTick - max > 0 && axis.ticks[lastTick].isLast) {
1113
- mark.hide();
1114
- }
1115
- else if (axis.ticks[lastTick - 1]) {
1116
- mark.show();
1117
- }
1123
+ else {
1124
+ label.show();
1118
1125
  }
1119
1126
  }
1127
+ var mark = axis.ticks[lastTick].mark;
1128
+ if (mark &&
1129
+ lastTick - max < tickmarkOffset &&
1130
+ lastTick - max > 0 && axis.ticks[lastTick].isLast) {
1131
+ axis.hiddenMarks.push(mark.hide());
1132
+ }
1120
1133
  }
1121
1134
  }
1122
- /**
1123
- * @private
1124
- */
1125
- function onAfterSetAxisTranslation() {
1126
- var axis = this;
1127
- var tickInfo = axis.tickPositions && axis.tickPositions.info;
1128
- var options = axis.options;
1129
- var gridOptions = options.grid || {};
1130
- var userLabels = axis.userOptions.labels || {};
1131
- // Fire this only for the Gantt type chart, #14868.
1132
- if (gridOptions.enabled) {
1133
- if (axis.horiz) {
1134
- axis.series.forEach(function (series) {
1135
- series.options.pointRange = 0;
1136
- });
1137
- // Lower level time ticks, like hours or minutes, represent
1138
- // points in time and not ranges. These should be aligned
1139
- // left in the grid cell by default. The same applies to
1140
- // years of higher order.
1141
- if (tickInfo &&
1142
- options.dateTimeLabelFormats &&
1143
- options.labels &&
1144
- !defined(userLabels.align) &&
1145
- (options.dateTimeLabelFormats[tickInfo.unitName]
1146
- .range === false ||
1147
- tickInfo.count > 1 // years
1148
- )) {
1149
- options.labels.align = 'left';
1150
- if (!defined(userLabels.x)) {
1151
- options.labels.x = 3;
1152
- }
1135
+ }
1136
+ /**
1137
+ * @private
1138
+ */
1139
+ function onAfterSetAxisTranslation() {
1140
+ var axis = this;
1141
+ var tickInfo = axis.tickPositions && axis.tickPositions.info;
1142
+ var options = axis.options;
1143
+ var gridOptions = options.grid || {};
1144
+ var userLabels = axis.userOptions.labels || {};
1145
+ // Fire this only for the Gantt type chart, #14868.
1146
+ if (gridOptions.enabled) {
1147
+ if (axis.horiz) {
1148
+ axis.series.forEach(function (series) {
1149
+ series.options.pointRange = 0;
1150
+ });
1151
+ // Lower level time ticks, like hours or minutes, represent
1152
+ // points in time and not ranges. These should be aligned
1153
+ // left in the grid cell by default. The same applies to
1154
+ // years of higher order.
1155
+ if (tickInfo &&
1156
+ options.dateTimeLabelFormats &&
1157
+ options.labels &&
1158
+ !defined(userLabels.align) &&
1159
+ (options.dateTimeLabelFormats[tickInfo.unitName]
1160
+ .range === false ||
1161
+ tickInfo.count > 1 // years
1162
+ )) {
1163
+ options.labels.align = 'left';
1164
+ if (!defined(userLabels.x)) {
1165
+ options.labels.x = 3;
1153
1166
  }
1154
1167
  }
1155
- else {
1156
- // Don't trim ticks which not in min/max range but
1157
- // they are still in the min/max plus tickInterval.
1158
- if (this.options.type !== 'treegrid' &&
1159
- axis.grid &&
1160
- axis.grid.columns) {
1161
- this.minPointOffset = this.tickInterval;
1162
- }
1168
+ }
1169
+ else {
1170
+ // Don't trim ticks which not in min/max range but
1171
+ // they are still in the min/max plus tickInterval.
1172
+ if (this.options.type !== 'treegrid' &&
1173
+ axis.grid &&
1174
+ axis.grid.columns) {
1175
+ this.minPointOffset = this.tickInterval;
1163
1176
  }
1164
1177
  }
1165
1178
  }
1166
- /**
1167
- * Creates a left and right wall on horizontal axes:
1168
- * - Places leftmost tick at the start of the axis, to create a left
1169
- * wall
1170
- * - Ensures that the rightmost tick is at the end of the axis, to
1171
- * create a right wall.
1172
- * @private
1173
- */
1174
- function onAfterSetOptions(e) {
1175
- var options = this.options,
1176
- userOptions = e.userOptions,
1177
- gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
1178
- var gridAxisOptions;
1179
- if (gridOptions.enabled === true) {
1180
- // Merge the user options into default grid axis options so
1181
- // that when a user option is set, it takes presedence.
1182
- gridAxisOptions = merge(true, {
1183
- className: ('highcharts-grid-axis ' + (userOptions.className || '')),
1184
- dateTimeLabelFormats: {
1185
- hour: {
1186
- list: ['%H:%M', '%H']
1187
- },
1188
- day: {
1189
- list: ['%A, %e. %B', '%a, %e. %b', '%E']
1190
- },
1191
- week: {
1192
- list: ['Week %W', 'W%W']
1193
- },
1194
- month: {
1195
- list: ['%B', '%b', '%o']
1196
- }
1197
- },
1198
- grid: {
1199
- borderWidth: 1
1179
+ }
1180
+ /**
1181
+ * Creates a left and right wall on horizontal axes:
1182
+ * - Places leftmost tick at the start of the axis, to create a left
1183
+ * wall
1184
+ * - Ensures that the rightmost tick is at the end of the axis, to
1185
+ * create a right wall.
1186
+ * @private
1187
+ */
1188
+ function onAfterSetOptions(e) {
1189
+ var options = this.options,
1190
+ userOptions = e.userOptions,
1191
+ gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
1192
+ var gridAxisOptions;
1193
+ if (gridOptions.enabled === true) {
1194
+ // Merge the user options into default grid axis options so
1195
+ // that when a user option is set, it takes presedence.
1196
+ gridAxisOptions = merge(true, {
1197
+ className: ('highcharts-grid-axis ' + (userOptions.className || '')),
1198
+ dateTimeLabelFormats: {
1199
+ hour: {
1200
+ list: ['%H:%M', '%H']
1200
1201
  },
1201
- labels: {
1202
- padding: 2,
1203
- style: {
1204
- fontSize: '13px'
1205
- }
1202
+ day: {
1203
+ list: ['%A, %e. %B', '%a, %e. %b', '%E']
1206
1204
  },
1207
- margin: 0,
1208
- title: {
1209
- text: null,
1210
- reserveSpace: false,
1211
- rotation: 0
1205
+ week: {
1206
+ list: ['Week %W', 'W%W']
1212
1207
  },
1213
- // In a grid axis, only allow one unit of certain types,
1214
- // for example we shouln't have one grid cell spanning
1215
- // two days.
1216
- units: [[
1217
- 'millisecond',
1218
- [1, 10, 100]
1219
- ], [
1220
- 'second',
1221
- [1, 10]
1222
- ], [
1223
- 'minute',
1224
- [1, 5, 15]
1225
- ], [
1226
- 'hour',
1227
- [1, 6]
1228
- ], [
1229
- 'day',
1230
- [1]
1231
- ], [
1232
- 'week',
1233
- [1]
1234
- ], [
1235
- 'month',
1236
- [1]
1237
- ], [
1238
- 'year',
1239
- null
1240
- ]]
1241
- }, userOptions);
1242
- // X-axis specific options
1243
- if (this.coll === 'xAxis') {
1244
- // For linked axes, tickPixelInterval is used only if
1245
- // the tickPositioner below doesn't run or returns
1246
- // undefined (like multiple years)
1247
- if (defined(userOptions.linkedTo) &&
1248
- !defined(userOptions.tickPixelInterval)) {
1249
- gridAxisOptions.tickPixelInterval = 350;
1208
+ month: {
1209
+ list: ['%B', '%b', '%o']
1250
1210
  }
1251
- // For the secondary grid axis, use the primary axis'
1252
- // tick intervals and return ticks one level higher.
1253
- if (
1254
- // Check for tick pixel interval in options
1255
- !defined(userOptions.tickPixelInterval) &&
1256
- // Only for linked axes
1257
- defined(userOptions.linkedTo) &&
1258
- !defined(userOptions.tickPositioner) &&
1259
- !defined(userOptions.tickInterval)) {
1260
- gridAxisOptions.tickPositioner = function (min, max) {
1261
- var parentInfo = (this.linkedParent &&
1262
- this.linkedParent.tickPositions &&
1263
- this.linkedParent.tickPositions.info);
1264
- if (parentInfo) {
1265
- var units = (gridAxisOptions.units || []);
1266
- var unitIdx = void 0,
1267
- count = void 0,
1268
- unitName = void 0;
1269
- for (var i = 0; i < units.length; i++) {
1270
- if (units[i][0] ===
1271
- parentInfo.unitName) {
1272
- unitIdx = i;
1273
- break;
1274
- }
1275
- }
1276
- // Get the first allowed count on the next
1277
- // unit.
1278
- if (units[unitIdx + 1]) {
1279
- unitName = units[unitIdx + 1][0];
1280
- count =
1281
- (units[unitIdx + 1][1] || [1])[0];
1282
- // In case the base X axis shows years, make
1283
- // the secondary axis show ten times the
1284
- // years (#11427)
1285
- }
1286
- else if (parentInfo.unitName === 'year') {
1287
- unitName = 'year';
1288
- count = parentInfo.count * 10;
1289
- }
1290
- var unitRange = timeUnits[unitName];
1291
- this.tickInterval = unitRange * count;
1292
- return this.getTimeTicks({
1293
- unitRange: unitRange,
1294
- count: count,
1295
- unitName: unitName
1296
- }, min, max, this.options.startOfWeek);
1297
- }
1298
- };
1211
+ },
1212
+ grid: {
1213
+ borderWidth: 1
1214
+ },
1215
+ labels: {
1216
+ padding: 2,
1217
+ style: {
1218
+ fontSize: '13px'
1299
1219
  }
1220
+ },
1221
+ margin: 0,
1222
+ title: {
1223
+ text: null,
1224
+ reserveSpace: false,
1225
+ rotation: 0
1226
+ },
1227
+ // In a grid axis, only allow one unit of certain types,
1228
+ // for example we shouln't have one grid cell spanning
1229
+ // two days.
1230
+ units: [[
1231
+ 'millisecond',
1232
+ [1, 10, 100]
1233
+ ], [
1234
+ 'second',
1235
+ [1, 10]
1236
+ ], [
1237
+ 'minute',
1238
+ [1, 5, 15]
1239
+ ], [
1240
+ 'hour',
1241
+ [1, 6]
1242
+ ], [
1243
+ 'day',
1244
+ [1]
1245
+ ], [
1246
+ 'week',
1247
+ [1]
1248
+ ], [
1249
+ 'month',
1250
+ [1]
1251
+ ], [
1252
+ 'year',
1253
+ null
1254
+ ]]
1255
+ }, userOptions);
1256
+ // X-axis specific options
1257
+ if (this.coll === 'xAxis') {
1258
+ // For linked axes, tickPixelInterval is used only if
1259
+ // the tickPositioner below doesn't run or returns
1260
+ // undefined (like multiple years)
1261
+ if (defined(userOptions.linkedTo) &&
1262
+ !defined(userOptions.tickPixelInterval)) {
1263
+ gridAxisOptions.tickPixelInterval = 350;
1300
1264
  }
1301
- // Now merge the combined options into the axis options
1302
- merge(true, this.options, gridAxisOptions);
1303
- if (this.horiz) {
1304
- /* _________________________
1305
- Make this: ___|_____|_____|_____|__|
1306
- ^ ^
1307
- _________________________
1308
- Into this: |_____|_____|_____|_____|
1309
- ^ ^ */
1310
- options.minPadding = pick(userOptions.minPadding, 0);
1311
- options.maxPadding = pick(userOptions.maxPadding, 0);
1312
- }
1313
- // If borderWidth is set, then use its value for tick and
1314
- // line width.
1315
- if (isNumber(options.grid.borderWidth)) {
1316
- options.tickWidth = options.lineWidth =
1317
- gridOptions.borderWidth;
1265
+ // For the secondary grid axis, use the primary axis'
1266
+ // tick intervals and return ticks one level higher.
1267
+ if (
1268
+ // Check for tick pixel interval in options
1269
+ !defined(userOptions.tickPixelInterval) &&
1270
+ // Only for linked axes
1271
+ defined(userOptions.linkedTo) &&
1272
+ !defined(userOptions.tickPositioner) &&
1273
+ !defined(userOptions.tickInterval)) {
1274
+ gridAxisOptions.tickPositioner = function (min, max) {
1275
+ var parentInfo = (this.linkedParent &&
1276
+ this.linkedParent.tickPositions &&
1277
+ this.linkedParent.tickPositions.info);
1278
+ if (parentInfo) {
1279
+ var units = (gridAxisOptions.units || []);
1280
+ var unitIdx = void 0,
1281
+ count = 1,
1282
+ unitName = 'year';
1283
+ for (var i = 0; i < units.length; i++) {
1284
+ var unit_1 = units[i];
1285
+ if (unit_1 && unit_1[0] === parentInfo.unitName) {
1286
+ unitIdx = i;
1287
+ break;
1288
+ }
1289
+ }
1290
+ // Get the first allowed count on the next unit.
1291
+ var unit = (isNumber(unitIdx) && units[unitIdx + 1]);
1292
+ if (unit) {
1293
+ unitName = unit[0] || 'year';
1294
+ var counts = unit[1];
1295
+ count = counts && counts[0] || 1;
1296
+ // In case the base X axis shows years, make the
1297
+ // secondary axis show ten times the years (#11427)
1298
+ }
1299
+ else if (parentInfo.unitName === 'year') {
1300
+ // unitName is 'year'
1301
+ count = parentInfo.count * 10;
1302
+ }
1303
+ var unitRange = timeUnits[unitName];
1304
+ this.tickInterval = unitRange * count;
1305
+ return this.chart.time.getTimeTicks({ unitRange: unitRange, count: count, unitName: unitName }, min, max, this.options.startOfWeek);
1306
+ }
1307
+ };
1318
1308
  }
1319
1309
  }
1320
- }
1321
- /**
1322
- * @private
1323
- */
1324
- function onAfterSetOptions2(e) {
1325
- var axis = this;
1326
- var userOptions = e.userOptions;
1327
- var gridOptions = userOptions && userOptions.grid || {};
1328
- var columns = gridOptions.columns;
1329
- // Add column options to the parent axis. Children has their column
1330
- // options set on init in onGridAxisAfterInit.
1331
- if (gridOptions.enabled && columns) {
1332
- merge(true, axis.options, columns[columns.length - 1]);
1310
+ // Now merge the combined options into the axis options
1311
+ merge(true, this.options, gridAxisOptions);
1312
+ if (this.horiz) {
1313
+ /* _________________________
1314
+ Make this: ___|_____|_____|_____|__|
1315
+ ^ ^
1316
+ _________________________
1317
+ Into this: |_____|_____|_____|_____|
1318
+ ^ ^ */
1319
+ options.minPadding = pick(userOptions.minPadding, 0);
1320
+ options.maxPadding = pick(userOptions.maxPadding, 0);
1321
+ }
1322
+ // If borderWidth is set, then use its value for tick and
1323
+ // line width.
1324
+ if (isNumber(options.grid.borderWidth)) {
1325
+ options.tickWidth = options.lineWidth =
1326
+ gridOptions.borderWidth;
1333
1327
  }
1334
1328
  }
1335
- /**
1336
- * Handle columns and setScale.
1337
- * @private
1338
- */
1339
- function onAfterSetScale() {
1340
- var axis = this;
1341
- (axis.grid.columns || []).forEach(function (column) {
1342
- column.setScale();
1343
- });
1329
+ }
1330
+ /**
1331
+ * @private
1332
+ */
1333
+ function onAfterSetOptions2(e) {
1334
+ var axis = this;
1335
+ var userOptions = e.userOptions;
1336
+ var gridOptions = userOptions && userOptions.grid || {};
1337
+ var columns = gridOptions.columns;
1338
+ // Add column options to the parent axis. Children has their column
1339
+ // options set on init in onGridAxisAfterInit.
1340
+ if (gridOptions.enabled && columns) {
1341
+ merge(true, axis.options, columns[columns.length - 1]);
1344
1342
  }
1345
- /**
1346
- * Draw vertical axis ticks extra long to create cell floors and roofs.
1347
- * Overrides the tickLength for vertical axes.
1348
- * @private
1349
- */
1350
- function onAfterTickSize(e) {
1351
- var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
1352
- var _a = this,
1353
- horiz = _a.horiz,
1354
- maxLabelDimensions = _a.maxLabelDimensions,
1355
- _b = _a.options.grid,
1356
- gridOptions = _b === void 0 ? {} : _b;
1357
- if (gridOptions.enabled && maxLabelDimensions) {
1358
- var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
1359
- var distance = horiz ?
1360
- (gridOptions.cellHeight ||
1361
- labelPadding + maxLabelDimensions.height) :
1362
- labelPadding + maxLabelDimensions.width;
1363
- if (isArray(e.tickSize)) {
1364
- e.tickSize[0] = distance;
1365
- }
1366
- else {
1367
- e.tickSize = [distance, 0];
1368
- }
1343
+ }
1344
+ /**
1345
+ * Handle columns and setScale.
1346
+ * @private
1347
+ */
1348
+ function onAfterSetScale() {
1349
+ var axis = this;
1350
+ (axis.grid.columns || []).forEach(function (column) { return column.setScale(); });
1351
+ }
1352
+ /**
1353
+ * Draw vertical axis ticks extra long to create cell floors and roofs.
1354
+ * Overrides the tickLength for vertical axes.
1355
+ * @private
1356
+ */
1357
+ function onAfterTickSize(e) {
1358
+ var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
1359
+ var _a = this,
1360
+ horiz = _a.horiz,
1361
+ maxLabelDimensions = _a.maxLabelDimensions,
1362
+ _b = _a.options.grid,
1363
+ gridOptions = _b === void 0 ? {} : _b;
1364
+ if (gridOptions.enabled && maxLabelDimensions) {
1365
+ var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
1366
+ var distance = horiz ?
1367
+ (gridOptions.cellHeight ||
1368
+ labelPadding + maxLabelDimensions.height) :
1369
+ labelPadding + maxLabelDimensions.width;
1370
+ if (isArray(e.tickSize)) {
1371
+ e.tickSize[0] = distance;
1372
+ }
1373
+ else {
1374
+ e.tickSize = [distance, 0];
1369
1375
  }
1370
1376
  }
1371
- /**
1372
- * @private
1373
- */
1374
- function onChartAfterSetChartSize() {
1375
- this.axes.forEach(function (axis) {
1376
- (axis.grid && axis.grid.columns || []).forEach(function (column) {
1377
- column.setAxisSize();
1378
- column.setAxisTranslation();
1379
- });
1377
+ }
1378
+ /**
1379
+ * @private
1380
+ */
1381
+ function onChartAfterSetChartSize() {
1382
+ this.axes.forEach(function (axis) {
1383
+ (axis.grid && axis.grid.columns || []).forEach(function (column) {
1384
+ column.setAxisSize();
1385
+ column.setAxisTranslation();
1380
1386
  });
1387
+ });
1388
+ }
1389
+ /**
1390
+ * @private
1391
+ */
1392
+ function onDestroy(e) {
1393
+ var grid = this.grid;
1394
+ (grid.columns || []).forEach(function (column) { return column.destroy(e.keepEvents); });
1395
+ grid.columns = void 0;
1396
+ }
1397
+ /**
1398
+ * Wraps axis init to draw cell walls on vertical axes.
1399
+ * @private
1400
+ */
1401
+ function onInit(e) {
1402
+ var axis = this;
1403
+ var userOptions = e.userOptions || {};
1404
+ var gridOptions = userOptions.grid || {};
1405
+ if (gridOptions.enabled && defined(gridOptions.borderColor)) {
1406
+ userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
1381
1407
  }
1382
- /**
1383
- * @private
1384
- */
1385
- function onDestroy(e) {
1386
- var grid = this.grid;
1387
- (grid.columns || []).forEach(function (column) {
1388
- column.destroy(e.keepEvents);
1389
- });
1390
- grid.columns = void 0;
1408
+ if (!axis.grid) {
1409
+ axis.grid = new GridAxisAdditions(axis);
1391
1410
  }
1392
- /**
1393
- * Wraps axis init to draw cell walls on vertical axes.
1394
- * @private
1395
- */
1396
- function onInit(e) {
1397
- var axis = this;
1398
- var userOptions = e.userOptions || {};
1399
- var gridOptions = userOptions.grid || {};
1400
- if (gridOptions.enabled && defined(gridOptions.borderColor)) {
1401
- userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
1411
+ axis.hiddenLabels = [];
1412
+ axis.hiddenMarks = [];
1413
+ }
1414
+ /**
1415
+ * Center tick labels in cells.
1416
+ * @private
1417
+ */
1418
+ function onTickAfterGetLabelPosition(e) {
1419
+ var tick = this,
1420
+ label = tick.label,
1421
+ axis = tick.axis,
1422
+ reversed = axis.reversed,
1423
+ chart = axis.chart,
1424
+ options = axis.options,
1425
+ gridOptions = options.grid || {},
1426
+ labelOpts = axis.options.labels,
1427
+ align = labelOpts.align,
1428
+ // verticalAlign is currently not supported for axis.labels.
1429
+ verticalAlign = 'middle', // labelOpts.verticalAlign,
1430
+ side = GridAxisSide[axis.side],
1431
+ tickmarkOffset = e.tickmarkOffset,
1432
+ tickPositions = axis.tickPositions,
1433
+ tickPos = tick.pos - tickmarkOffset,
1434
+ nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
1435
+ tickPositions[e.index + 1] - tickmarkOffset :
1436
+ (axis.max || 0) + tickmarkOffset),
1437
+ tickSize = axis.tickSize('tick'),
1438
+ tickWidth = tickSize ? tickSize[0] : 0,
1439
+ crispCorr = tickSize ? tickSize[1] / 2 : 0;
1440
+ var labelHeight,
1441
+ lblMetrics,
1442
+ lines,
1443
+ bottom,
1444
+ top,
1445
+ left,
1446
+ right;
1447
+ // Only center tick labels in grid axes
1448
+ if (gridOptions.enabled === true) {
1449
+ // Calculate top and bottom positions of the cell.
1450
+ if (side === 'top') {
1451
+ bottom = axis.top + axis.offset;
1452
+ top = bottom - tickWidth;
1402
1453
  }
1403
- if (!axis.grid) {
1404
- axis.grid = new Additions(axis);
1454
+ else if (side === 'bottom') {
1455
+ top = chart.chartHeight - axis.bottom + axis.offset;
1456
+ bottom = top + tickWidth;
1405
1457
  }
1406
- axis.hiddenLabels = [];
1407
- }
1408
- /**
1409
- * Center tick labels in cells.
1410
- * @private
1411
- */
1412
- function onTickAfterGetLabelPosition(e) {
1413
- var tick = this,
1414
- label = tick.label,
1415
- axis = tick.axis,
1416
- reversed = axis.reversed,
1417
- chart = axis.chart,
1418
- options = axis.options,
1419
- gridOptions = options.grid || {},
1420
- labelOpts = axis.options.labels,
1421
- align = labelOpts.align,
1422
- // verticalAlign is currently not supported for axis.labels.
1423
- verticalAlign = 'middle', // labelOpts.verticalAlign,
1424
- side = GridAxis.Side[axis.side],
1425
- tickmarkOffset = e.tickmarkOffset,
1426
- tickPositions = axis.tickPositions,
1427
- tickPos = tick.pos - tickmarkOffset,
1428
- nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
1429
- tickPositions[e.index + 1] - tickmarkOffset :
1430
- (axis.max || 0) + tickmarkOffset),
1431
- tickSize = axis.tickSize('tick'),
1432
- tickWidth = tickSize ? tickSize[0] : 0,
1433
- crispCorr = tickSize ? tickSize[1] / 2 : 0;
1434
- var labelHeight,
1435
- lblMetrics,
1436
- lines,
1437
- bottom,
1438
- top,
1439
- left,
1440
- right;
1441
- // Only center tick labels in grid axes
1442
- if (gridOptions.enabled === true) {
1443
- // Calculate top and bottom positions of the cell.
1444
- if (side === 'top') {
1445
- bottom = axis.top + axis.offset;
1446
- top = bottom - tickWidth;
1447
- }
1448
- else if (side === 'bottom') {
1449
- top = chart.chartHeight - axis.bottom + axis.offset;
1450
- bottom = top + tickWidth;
1451
- }
1452
- else {
1453
- bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
1454
- top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
1455
- }
1456
- // Calculate left and right positions of the cell.
1457
- if (side === 'right') {
1458
- left = chart.chartWidth - axis.right + axis.offset;
1459
- right = left + tickWidth;
1460
- }
1461
- else if (side === 'left') {
1462
- right = axis.left + axis.offset;
1463
- left = right - tickWidth;
1464
- }
1465
- else {
1466
- left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
1467
- right = Math.min(// #15742
1468
- Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
1469
- }
1470
- tick.slotWidth = right - left;
1471
- // Calculate the positioning of the label based on
1472
- // alignment.
1473
- e.pos.x = (align === 'left' ?
1474
- left :
1475
- align === 'right' ?
1476
- right :
1477
- left + ((right - left) / 2) // default to center
1478
- );
1479
- e.pos.y = (verticalAlign === 'top' ?
1480
- top :
1481
- verticalAlign === 'bottom' ?
1482
- bottom :
1483
- top + ((bottom - top) / 2) // default to middle
1484
- );
1485
- lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
1486
- labelHeight = label ? label.getBBox().height : 0;
1487
- // Adjustment to y position to align the label correctly.
1488
- // Would be better to have a setter or similar for this.
1489
- if (!labelOpts.useHTML) {
1490
- lines = Math.round(labelHeight / lblMetrics.h);
1491
- e.pos.y += (
1492
- // Center the label
1493
- // TODO: why does this actually center the label?
1494
- ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
1495
- // Adjust for height of additional lines.
1496
- -(((lines - 1) * lblMetrics.h) / 2));
1497
- }
1498
- else {
1499
- e.pos.y += (
1500
- // Readjust yCorr in htmlUpdateTransform
1501
- lblMetrics.b +
1502
- // Adjust for height of html label
1503
- -(labelHeight / 2));
1504
- }
1505
- e.pos.x += (axis.horiz && labelOpts.x) || 0;
1458
+ else {
1459
+ bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
1460
+ top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
1506
1461
  }
1507
- }
1508
- /**
1509
- * @private
1510
- */
1511
- function onTickLabelFormat(ctx) {
1512
- var axis = ctx.axis,
1513
- value = ctx.value;
1514
- if (axis.options.grid &&
1515
- axis.options.grid.enabled) {
1516
- var tickPos = axis.tickPositions;
1517
- var series = (axis.linkedParent || axis).series[0];
1518
- var isFirst = value === tickPos[0];
1519
- var isLast = value === tickPos[tickPos.length - 1];
1520
- var point = series && find(series.options.data,
1521
- function (p) {
1522
- return p[axis.isXAxis ? 'x' : 'y'] === value;
1523
- });
1524
- var pointCopy = void 0;
1525
- if (point && series.is('gantt')) {
1526
- // For the Gantt set point aliases to the pointCopy
1527
- // to do not change the original point
1528
- pointCopy = merge(point);
1529
- H.seriesTypes.gantt.prototype.pointClass
1530
- .setGanttPointAliases(pointCopy);
1531
- }
1532
- // Make additional properties available for the
1533
- // formatter
1534
- ctx.isFirst = isFirst;
1535
- ctx.isLast = isLast;
1536
- ctx.point = pointCopy;
1462
+ // Calculate left and right positions of the cell.
1463
+ if (side === 'right') {
1464
+ left = chart.chartWidth - axis.right + axis.offset;
1465
+ right = left + tickWidth;
1466
+ }
1467
+ else if (side === 'left') {
1468
+ right = axis.left + axis.offset;
1469
+ left = right - tickWidth;
1470
+ }
1471
+ else {
1472
+ left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
1473
+ right = Math.min(// #15742
1474
+ Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
1475
+ }
1476
+ tick.slotWidth = right - left;
1477
+ // Calculate the positioning of the label based on
1478
+ // alignment.
1479
+ e.pos.x = (align === 'left' ?
1480
+ left :
1481
+ align === 'right' ?
1482
+ right :
1483
+ left + ((right - left) / 2) // default to center
1484
+ );
1485
+ e.pos.y = (verticalAlign === 'top' ?
1486
+ top :
1487
+ verticalAlign === 'bottom' ?
1488
+ bottom :
1489
+ top + ((bottom - top) / 2) // default to middle
1490
+ );
1491
+ lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
1492
+ labelHeight = label ? label.getBBox().height : 0;
1493
+ // Adjustment to y position to align the label correctly.
1494
+ // Would be better to have a setter or similar for this.
1495
+ if (!labelOpts.useHTML) {
1496
+ lines = Math.round(labelHeight / lblMetrics.h);
1497
+ e.pos.y += (
1498
+ // Center the label
1499
+ // TODO: why does this actually center the label?
1500
+ ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
1501
+ // Adjust for height of additional lines.
1502
+ -(((lines - 1) * lblMetrics.h) / 2));
1537
1503
  }
1504
+ else {
1505
+ e.pos.y += (
1506
+ // Readjust yCorr in htmlUpdateTransform
1507
+ lblMetrics.b +
1508
+ // Adjust for height of html label
1509
+ -(labelHeight / 2));
1510
+ }
1511
+ e.pos.x += (axis.horiz && labelOpts.x) || 0;
1538
1512
  }
1539
- /**
1540
- * Makes tick labels which are usually ignored in a linked axis
1541
- * displayed if they are within range of linkedParent.min.
1542
- * ```
1543
- * _____________________________
1544
- * | | | | |
1545
- * Make this: | | 2 | 3 | 4 |
1546
- * |___|_______|_______|_______|
1547
- * ^
1548
- * _____________________________
1549
- * | | | | |
1550
- * Into this: | 1 | 2 | 3 | 4 |
1551
- * |___|_______|_______|_______|
1552
- * ^
1553
- * ```
1554
- * @private
1555
- * @todo Does this function do what the drawing says? Seems to affect
1556
- * ticks and not the labels directly?
1557
- */
1558
- function onTrimTicks() {
1559
- var axis = this;
1560
- var options = axis.options;
1561
- var gridOptions = options.grid || {};
1562
- var categoryAxis = axis.categories;
1563
- var tickPositions = axis.tickPositions;
1564
- var firstPos = tickPositions[0];
1565
- var lastPos = tickPositions[tickPositions.length - 1];
1566
- var linkedMin = axis.linkedParent && axis.linkedParent.min;
1567
- var linkedMax = axis.linkedParent && axis.linkedParent.max;
1568
- var min = linkedMin || axis.min;
1569
- var max = linkedMax || axis.max;
1570
- var tickInterval = axis.tickInterval;
1571
- var endMoreThanMin = (firstPos < min &&
1572
- firstPos + tickInterval > min);
1573
- var startLessThanMax = (lastPos > max &&
1574
- lastPos - tickInterval < max);
1575
- if (gridOptions.enabled === true &&
1576
- !categoryAxis &&
1577
- (axis.horiz || axis.isLinked)) {
1578
- if (endMoreThanMin && !options.startOnTick) {
1579
- tickPositions[0] = min;
1580
- }
1581
- if (startLessThanMax && !options.endOnTick) {
1582
- tickPositions[tickPositions.length - 1] = max;
1583
- }
1513
+ }
1514
+ /**
1515
+ * @private
1516
+ */
1517
+ function onTickLabelFormat(ctx) {
1518
+ var axis = ctx.axis,
1519
+ value = ctx.value;
1520
+ if (axis.options.grid &&
1521
+ axis.options.grid.enabled) {
1522
+ var tickPos = axis.tickPositions;
1523
+ var series = (axis.linkedParent || axis).series[0];
1524
+ var isFirst = value === tickPos[0];
1525
+ var isLast = value === tickPos[tickPos.length - 1];
1526
+ var point = series && find(series.options.data,
1527
+ function (p) {
1528
+ return p[axis.isXAxis ? 'x' : 'y'] === value;
1529
+ });
1530
+ var pointCopy = void 0;
1531
+ if (point && series.is('gantt')) {
1532
+ // For the Gantt set point aliases to the pointCopy
1533
+ // to do not change the original point
1534
+ pointCopy = merge(point);
1535
+ H.seriesTypes.gantt.prototype.pointClass
1536
+ .setGanttPointAliases(pointCopy);
1584
1537
  }
1538
+ // Make additional properties available for the
1539
+ // formatter
1540
+ ctx.isFirst = isFirst;
1541
+ ctx.isLast = isLast;
1542
+ ctx.point = pointCopy;
1585
1543
  }
1586
- /**
1587
- * Avoid altering tickInterval when reserving space.
1588
- * @private
1589
- */
1590
- function wrapUnsquish(proceed) {
1591
- var axis = this;
1592
- var _a = axis.options.grid,
1593
- gridOptions = _a === void 0 ? {} : _a;
1594
- if (gridOptions.enabled === true && axis.categories) {
1595
- return axis.tickInterval;
1544
+ }
1545
+ /**
1546
+ * Makes tick labels which are usually ignored in a linked axis
1547
+ * displayed if they are within range of linkedParent.min.
1548
+ * ```
1549
+ * _____________________________
1550
+ * | | | | |
1551
+ * Make this: | | 2 | 3 | 4 |
1552
+ * |___|_______|_______|_______|
1553
+ * ^
1554
+ * _____________________________
1555
+ * | | | | |
1556
+ * Into this: | 1 | 2 | 3 | 4 |
1557
+ * |___|_______|_______|_______|
1558
+ * ^
1559
+ * ```
1560
+ * @private
1561
+ * @todo Does this function do what the drawing says? Seems to affect
1562
+ * ticks and not the labels directly?
1563
+ */
1564
+ function onTrimTicks() {
1565
+ var axis = this;
1566
+ var options = axis.options;
1567
+ var gridOptions = options.grid || {};
1568
+ var categoryAxis = axis.categories;
1569
+ var tickPositions = axis.tickPositions;
1570
+ var firstPos = tickPositions[0];
1571
+ var lastPos = tickPositions[tickPositions.length - 1];
1572
+ var linkedMin = axis.linkedParent && axis.linkedParent.min;
1573
+ var linkedMax = axis.linkedParent && axis.linkedParent.max;
1574
+ var min = linkedMin || axis.min;
1575
+ var max = linkedMax || axis.max;
1576
+ var tickInterval = axis.tickInterval;
1577
+ var endMoreThanMin = (firstPos < min &&
1578
+ firstPos + tickInterval > min);
1579
+ var startLessThanMax = (lastPos > max &&
1580
+ lastPos - tickInterval < max);
1581
+ if (gridOptions.enabled === true &&
1582
+ !categoryAxis &&
1583
+ (axis.horiz || axis.isLinked)) {
1584
+ if (endMoreThanMin && !options.startOnTick) {
1585
+ tickPositions[0] = min;
1596
1586
  }
1597
- return proceed.apply(axis, argsToArray(arguments));
1587
+ if (startLessThanMax && !options.endOnTick) {
1588
+ tickPositions[tickPositions.length - 1] = max;
1589
+ }
1590
+ }
1591
+ }
1592
+ /**
1593
+ * Avoid altering tickInterval when reserving space.
1594
+ * @private
1595
+ */
1596
+ function wrapUnsquish(proceed) {
1597
+ var axis = this;
1598
+ var _a = axis.options.grid,
1599
+ gridOptions = _a === void 0 ? {} : _a;
1600
+ if (gridOptions.enabled === true && axis.categories) {
1601
+ return axis.tickInterval;
1602
+ }
1603
+ return proceed.apply(axis, argsToArray(arguments));
1604
+ }
1605
+ /* *
1606
+ *
1607
+ * Class
1608
+ *
1609
+ * */
1610
+ /**
1611
+ * Additions for grid axes.
1612
+ * @private
1613
+ * @class
1614
+ */
1615
+ var GridAxisAdditions = /** @class */ (function () {
1616
+ /* *
1617
+ *
1618
+ * Constructors
1619
+ *
1620
+ * */
1621
+ function GridAxisAdditions(axis) {
1622
+ this.axis = axis;
1598
1623
  }
1599
1624
  /* *
1625
+ *
1626
+ * Functions
1627
+ *
1628
+ * */
1629
+ /**
1630
+ * Checks if an axis is the outer axis in its dimension. Since
1631
+ * axes are placed outwards in order, the axis with the highest
1632
+ * index is the outermost axis.
1600
1633
  *
1601
- * Class
1634
+ * Example: If there are multiple x-axes at the top of the chart,
1635
+ * this function returns true if the axis supplied is the last
1636
+ * of the x-axes.
1602
1637
  *
1603
- * */
1604
- /**
1605
- * Additions for grid axes.
1606
1638
  * @private
1607
- * @class
1639
+ *
1640
+ * @return {boolean}
1641
+ * True if the axis is the outermost axis in its dimension; false if
1642
+ * not.
1608
1643
  */
1609
- var Additions = /** @class */ (function () {
1610
- /* *
1611
- *
1612
- * Constructors
1613
- *
1614
- * */
1615
- function Additions(axis) {
1616
- this.axis = axis;
1617
- }
1618
- /* *
1619
- *
1620
- * Functions
1621
- *
1622
- * */
1623
- /**
1624
- * Checks if an axis is the outer axis in its dimension. Since
1625
- * axes are placed outwards in order, the axis with the highest
1626
- * index is the outermost axis.
1627
- *
1628
- * Example: If there are multiple x-axes at the top of the chart,
1629
- * this function returns true if the axis supplied is the last
1630
- * of the x-axes.
1631
- *
1632
- * @private
1633
- *
1634
- * @return {boolean}
1635
- * True if the axis is the outermost axis in its dimension; false if
1636
- * not.
1637
- */
1638
- Additions.prototype.isOuterAxis = function () {
1639
- var axis = this.axis;
1640
- var chart = axis.chart;
1641
- var columnIndex = axis.grid.columnIndex;
1642
- var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
1643
- axis.grid.columns);
1644
- var parentAxis = columnIndex ? axis.linkedParent : axis;
1645
- var thisIndex = -1,
1646
- lastIndex = 0;
1647
- chart[axis.coll].forEach(function (otherAxis, index) {
1648
- if (otherAxis.side === axis.side &&
1649
- !otherAxis.options.isInternal) {
1650
- lastIndex = index;
1651
- if (otherAxis === parentAxis) {
1652
- // Get the index of the axis in question
1653
- thisIndex = index;
1654
- }
1644
+ GridAxisAdditions.prototype.isOuterAxis = function () {
1645
+ var axis = this.axis;
1646
+ var chart = axis.chart;
1647
+ var columnIndex = axis.grid.columnIndex;
1648
+ var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
1649
+ axis.grid.columns);
1650
+ var parentAxis = columnIndex ? axis.linkedParent : axis;
1651
+ var thisIndex = -1,
1652
+ lastIndex = 0;
1653
+ (chart[axis.coll] || []).forEach(function (otherAxis, index) {
1654
+ if (otherAxis.side === axis.side &&
1655
+ !otherAxis.options.isInternal) {
1656
+ lastIndex = index;
1657
+ if (otherAxis === parentAxis) {
1658
+ // Get the index of the axis in question
1659
+ thisIndex = index;
1655
1660
  }
1656
- });
1657
- return (lastIndex === thisIndex &&
1658
- (isNumber(columnIndex) ?
1659
- columns.length === columnIndex :
1660
- true));
1661
- };
1662
- /**
1663
- * Add extra border based on the provided path.
1664
- * @private
1665
- * @param {SVGPath} path
1666
- * The path of the border.
1667
- * @return {Highcharts.SVGElement}
1668
- * Border
1669
- */
1670
- Additions.prototype.renderBorder = function (path) {
1671
- var axis = this.axis,
1672
- renderer = axis.chart.renderer,
1673
- options = axis.options,
1674
- extraBorderLine = renderer.path(path)
1675
- .addClass('highcharts-axis-line')
1676
- .add(axis.axisBorder);
1677
- if (!renderer.styledMode) {
1678
- extraBorderLine.attr({
1679
- stroke: options.lineColor,
1680
- 'stroke-width': options.lineWidth,
1681
- zIndex: 7
1682
- });
1683
1661
  }
1684
- return extraBorderLine;
1685
- };
1686
- return Additions;
1687
- }());
1688
- GridAxis.Additions = Additions;
1689
- })(GridAxis || (GridAxis = {}));
1662
+ });
1663
+ return (lastIndex === thisIndex &&
1664
+ (isNumber(columnIndex) ?
1665
+ columns.length === columnIndex :
1666
+ true));
1667
+ };
1668
+ /**
1669
+ * Add extra border based on the provided path.
1670
+ * @private
1671
+ * @param {SVGPath} path
1672
+ * The path of the border.
1673
+ * @return {Highcharts.SVGElement}
1674
+ * Border
1675
+ */
1676
+ GridAxisAdditions.prototype.renderBorder = function (path) {
1677
+ var axis = this.axis,
1678
+ renderer = axis.chart.renderer,
1679
+ options = axis.options,
1680
+ extraBorderLine = renderer.path(path)
1681
+ .addClass('highcharts-axis-line')
1682
+ .add(axis.axisBorder);
1683
+ if (!renderer.styledMode) {
1684
+ extraBorderLine.attr({
1685
+ stroke: options.lineColor,
1686
+ 'stroke-width': options.lineWidth,
1687
+ zIndex: 7
1688
+ });
1689
+ }
1690
+ return extraBorderLine;
1691
+ };
1692
+ return GridAxisAdditions;
1693
+ }());
1690
1694
  /* *
1691
1695
  *
1692
1696
  * Registry
@@ -1698,7 +1702,10 @@
1698
1702
  };
1699
1703
  // Adds week date format
1700
1704
  dateFormats.W = function (timestamp) {
1701
- var d = new this.Date(timestamp);
1705
+ var time = this, d = new this.Date(timestamp), unitsToOmit = ['Hours', 'Milliseconds', 'Minutes', 'Seconds'];
1706
+ unitsToOmit.forEach(function (format) {
1707
+ time.set(format, d, 0);
1708
+ });
1702
1709
  var firstDay = (this.get('Day',
1703
1710
  d) + 6) % 7;
1704
1711
  var thursday = new this.Date(d.valueOf());
@@ -1717,6 +1724,9 @@
1717
1724
  * Default Export
1718
1725
  *
1719
1726
  * */
1727
+ var GridAxis = {
1728
+ compose: compose
1729
+ };
1720
1730
  /* *
1721
1731
  *
1722
1732
  * API Options
@@ -2045,13 +2055,13 @@
2045
2055
  .add(params.group);
2046
2056
  }
2047
2057
  // Set the new position, and show or hide
2048
- icon.attr({ y: shouldRender ? 0 : -9999 }); // #14904, #1338
2058
+ icon[shouldRender ? 'show' : 'hide'](); // #14904, #1338
2049
2059
  // Presentational attributes
2050
2060
  if (!renderer.styledMode) {
2051
2061
  icon
2052
2062
  .attr({
2053
2063
  cursor: 'pointer',
2054
- 'fill': pick(params.color, "#666666" /* neutralColor60 */),
2064
+ 'fill': pick(params.color, "#666666" /* Palette.neutralColor60 */),
2055
2065
  'stroke-width': 1,
2056
2066
  stroke: options.lineColor,
2057
2067
  strokeWidth: options.lineWidth || 0
@@ -2227,6 +2237,17 @@
2227
2237
  brokenAxis.setBreaks(breaks, pick(redraw, true));
2228
2238
  }
2229
2239
  };
2240
+ /**
2241
+ * Destroy remaining labelIcon if exist.
2242
+ *
2243
+ * @private
2244
+ * @function Highcharts.Tick#destroy
2245
+ */
2246
+ Additions.prototype.destroy = function () {
2247
+ if (this.labelIcon) {
2248
+ this.labelIcon.destroy();
2249
+ }
2250
+ };
2230
2251
  /**
2231
2252
  * Expand the grid cell. Used when axis is of type treegrid.
2232
2253
  *