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
@@ -15,19 +15,49 @@ import H from '../Globals.js';
15
15
  var dateFormats = H.dateFormats;
16
16
  import U from '../Utilities.js';
17
17
  var addEvent = U.addEvent, defined = U.defined, erase = U.erase, find = U.find, isArray = U.isArray, isNumber = U.isNumber, merge = U.merge, pick = U.pick, timeUnits = U.timeUnits, wrap = U.wrap;
18
+ /* *
19
+ *
20
+ * Enums
21
+ *
22
+ * */
23
+ /**
24
+ * Enum for which side the axis is on. Maps to axis.side.
25
+ * @private
26
+ */
27
+ var GridAxisSide;
28
+ (function (GridAxisSide) {
29
+ GridAxisSide[GridAxisSide["top"] = 0] = "top";
30
+ GridAxisSide[GridAxisSide["right"] = 1] = "right";
31
+ GridAxisSide[GridAxisSide["bottom"] = 2] = "bottom";
32
+ GridAxisSide[GridAxisSide["left"] = 3] = "left";
33
+ })(GridAxisSide || (GridAxisSide = {}));
34
+ /* *
35
+ *
36
+ * Constants
37
+ *
38
+ * */
39
+ var composedClasses = [];
18
40
  /* *
19
41
  *
20
42
  * Functions
21
43
  *
22
44
  * */
23
- /* eslint-disable require-jsdoc */
45
+ /**
46
+ * @private
47
+ */
24
48
  function argsToArray(args) {
25
49
  return Array.prototype.slice.call(args, 1);
26
50
  }
51
+ /**
52
+ * @private
53
+ */
27
54
  function isObject(x) {
28
55
  // Always use strict mode
29
56
  return U.isObject(x, true);
30
57
  }
58
+ /**
59
+ * @private
60
+ */
31
61
  function applyGridOptions(axis) {
32
62
  var options = axis.options;
33
63
  // Center-align by default
@@ -52,893 +82,857 @@ function applyGridOptions(axis) {
52
82
  options.labels.rotation = 0;
53
83
  }
54
84
  /**
55
- * Axis with grid support.
85
+ * Extends axis class with grid support.
56
86
  * @private
57
87
  */
58
- var GridAxis;
59
- (function (GridAxis) {
60
- /* *
61
- *
62
- * Declarations
63
- *
64
- * */
65
- /**
66
- * Enum for which side the axis is on. Maps to axis.side.
67
- * @private
68
- */
69
- var Side;
70
- (function (Side) {
71
- Side[Side["top"] = 0] = "top";
72
- Side[Side["right"] = 1] = "right";
73
- Side[Side["bottom"] = 2] = "bottom";
74
- Side[Side["left"] = 3] = "left";
75
- })(Side = GridAxis.Side || (GridAxis.Side = {}));
76
- /* *
77
- *
78
- * Functions
79
- *
80
- * */
81
- /* eslint-disable valid-jsdoc */
82
- /**
83
- * Extends axis class with grid support.
84
- * @private
85
- */
86
- function compose(AxisClass, ChartClass, TickClass) {
87
- if (AxisClass.keepProps.indexOf('grid') === -1) {
88
- AxisClass.keepProps.push('grid');
89
- AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
90
- wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
91
- // Add event handlers
92
- addEvent(AxisClass, 'init', onInit);
93
- addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
94
- addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
95
- addEvent(AxisClass, 'afterInit', onAfterInit);
96
- addEvent(AxisClass, 'afterRender', onAfterRender);
97
- addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
98
- addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
99
- addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
100
- addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
101
- addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
102
- addEvent(AxisClass, 'trimTicks', onTrimTicks);
103
- addEvent(AxisClass, 'destroy', onDestroy);
104
- }
88
+ function compose(AxisClass, ChartClass, TickClass) {
89
+ if (composedClasses.indexOf(AxisClass) === -1) {
90
+ composedClasses.push(AxisClass);
91
+ AxisClass.keepProps.push('grid');
92
+ AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
93
+ wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
94
+ // Add event handlers
95
+ addEvent(AxisClass, 'init', onInit);
96
+ addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
97
+ addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
98
+ addEvent(AxisClass, 'afterInit', onAfterInit);
99
+ addEvent(AxisClass, 'afterRender', onAfterRender);
100
+ addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
101
+ addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
102
+ addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
103
+ addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
104
+ addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
105
+ addEvent(AxisClass, 'trimTicks', onTrimTicks);
106
+ addEvent(AxisClass, 'destroy', onDestroy);
107
+ }
108
+ if (composedClasses.indexOf(ChartClass) === -1) {
105
109
  addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);
110
+ }
111
+ if (composedClasses.indexOf(TickClass) === -1) {
106
112
  addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);
107
113
  addEvent(TickClass, 'labelFormat', onTickLabelFormat);
108
- return AxisClass;
109
114
  }
110
- GridAxis.compose = compose;
111
- /**
112
- * Get the largest label width and height.
113
- *
114
- * @private
115
- * @function Highcharts.Axis#getMaxLabelDimensions
116
- *
117
- * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
118
- * All the ticks on one axis.
119
- *
120
- * @param {Array<number|string>} tickPositions
121
- * All the tick positions on one axis.
122
- *
123
- * @return {Highcharts.SizeObject}
124
- * Object containing the properties height and width.
125
- *
126
- * @todo Move this to the generic axis implementation, as it is used there.
127
- */
128
- function getMaxLabelDimensions(ticks, tickPositions) {
129
- var dimensions = {
130
- width: 0,
131
- height: 0
132
- };
133
- tickPositions.forEach(function (pos) {
134
- var tick = ticks[pos];
135
- var labelHeight = 0, labelWidth = 0, label;
136
- if (isObject(tick)) {
137
- label = isObject(tick.label) ? tick.label : {};
138
- // Find width and height of label
139
- labelHeight = label.getBBox ? label.getBBox().height : 0;
140
- if (label.textStr && !isNumber(label.textPxLength)) {
141
- label.textPxLength = label.getBBox().width;
142
- }
143
- labelWidth = isNumber(label.textPxLength) ?
144
- // Math.round ensures crisp lines
145
- Math.round(label.textPxLength) :
146
- 0;
147
- if (label.textStr) {
148
- // Set the tickWidth same as the label width after ellipsis
149
- // applied #10281
150
- labelWidth = Math.round(label.getBBox().width);
151
- }
152
- // Update the result if width and/or height are larger
153
- dimensions.height = Math.max(labelHeight, dimensions.height);
154
- dimensions.width = Math.max(labelWidth, dimensions.width);
115
+ return AxisClass;
116
+ }
117
+ /**
118
+ * Get the largest label width and height.
119
+ *
120
+ * @private
121
+ * @function Highcharts.Axis#getMaxLabelDimensions
122
+ *
123
+ * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
124
+ * All the ticks on one axis.
125
+ *
126
+ * @param {Array<number|string>} tickPositions
127
+ * All the tick positions on one axis.
128
+ *
129
+ * @return {Highcharts.SizeObject}
130
+ * Object containing the properties height and width.
131
+ *
132
+ * @todo Move this to the generic axis implementation, as it is used there.
133
+ */
134
+ function getMaxLabelDimensions(ticks, tickPositions) {
135
+ var dimensions = {
136
+ width: 0,
137
+ height: 0
138
+ };
139
+ tickPositions.forEach(function (pos) {
140
+ var tick = ticks[pos];
141
+ var labelHeight = 0, labelWidth = 0, label;
142
+ if (isObject(tick)) {
143
+ label = isObject(tick.label) ? tick.label : {};
144
+ // Find width and height of label
145
+ labelHeight = label.getBBox ? label.getBBox().height : 0;
146
+ if (label.textStr && !isNumber(label.textPxLength)) {
147
+ label.textPxLength = label.getBBox().width;
155
148
  }
156
- });
157
- // For tree grid, add indentation
158
- if (this.options.type === 'treegrid' &&
159
- this.treeGrid &&
160
- this.treeGrid.mapOfPosToGridNode) {
161
- var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
162
- dimensions.width += (this.options.labels.indentation *
163
- (treeDepth - 1));
149
+ labelWidth = isNumber(label.textPxLength) ?
150
+ // Math.round ensures crisp lines
151
+ Math.round(label.textPxLength) :
152
+ 0;
153
+ if (label.textStr) {
154
+ // Set the tickWidth same as the label width after ellipsis
155
+ // applied #10281
156
+ labelWidth = Math.round(label.getBBox().width);
157
+ }
158
+ // Update the result if width and/or height are larger
159
+ dimensions.height = Math.max(labelHeight, dimensions.height);
160
+ dimensions.width = Math.max(labelWidth, dimensions.width);
164
161
  }
165
- return dimensions;
162
+ });
163
+ // For tree grid, add indentation
164
+ if (this.options.type === 'treegrid' &&
165
+ this.treeGrid &&
166
+ this.treeGrid.mapOfPosToGridNode) {
167
+ var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
168
+ dimensions.width += (this.options.labels.indentation *
169
+ (treeDepth - 1));
166
170
  }
167
- /**
168
- * Handle columns and getOffset.
169
- * @private
170
- */
171
- function onAfterGetOffset() {
172
- var grid = this.grid;
173
- (grid && grid.columns || []).forEach(function (column) {
174
- column.getOffset();
175
- });
171
+ return dimensions;
172
+ }
173
+ /**
174
+ * Handle columns and getOffset.
175
+ * @private
176
+ */
177
+ function onAfterGetOffset() {
178
+ var grid = this.grid;
179
+ (grid && grid.columns || []).forEach(function (column) {
180
+ column.getOffset();
181
+ });
182
+ }
183
+ /**
184
+ * @private
185
+ */
186
+ function onAfterGetTitlePosition(e) {
187
+ var axis = this;
188
+ var options = axis.options;
189
+ var gridOptions = options.grid || {};
190
+ if (gridOptions.enabled === true) {
191
+ // compute anchor points for each of the title align options
192
+ var axisTitle = axis.axisTitle, axisHeight = axis.height, horiz = axis.horiz, axisLeft = axis.left, offset = axis.offset, opposite = axis.opposite, options_1 = axis.options, axisTop = axis.top, axisWidth = axis.width;
193
+ var tickSize = axis.tickSize();
194
+ var titleWidth = axisTitle && axisTitle.getBBox().width;
195
+ var xOption = options_1.title.x;
196
+ var yOption = options_1.title.y;
197
+ var titleMargin = pick(options_1.title.margin, horiz ? 5 : 10);
198
+ var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize, axisTitle).f;
199
+ var crispCorr = tickSize ? tickSize[0] / 2 : 0;
200
+ // TODO account for alignment
201
+ // the position in the perpendicular direction of the axis
202
+ var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
203
+ (horiz ? 1 : -1) * // horizontal axis reverses the margin
204
+ (opposite ? -1 : 1) * // so does opposite axes
205
+ crispCorr +
206
+ (axis.side === GridAxisSide.bottom ? titleFontSize : 0));
207
+ e.titlePosition.x = horiz ?
208
+ axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
209
+ offAxis + (opposite ? axisWidth : 0) + offset + xOption;
210
+ e.titlePosition.y = horiz ?
211
+ (offAxis -
212
+ (opposite ? axisHeight : 0) +
213
+ (opposite ? titleFontSize : -titleFontSize) / 2 +
214
+ offset +
215
+ yOption) :
216
+ axisTop - titleMargin + yOption;
176
217
  }
177
- /**
178
- * @private
179
- */
180
- function onAfterGetTitlePosition(e) {
181
- var axis = this;
182
- var options = axis.options;
183
- var gridOptions = options.grid || {};
184
- if (gridOptions.enabled === true) {
185
- // compute anchor points for each of the title align options
186
- var axisTitle = axis.axisTitle, axisHeight = axis.height, horiz = axis.horiz, axisLeft = axis.left, offset = axis.offset, opposite = axis.opposite, options_1 = axis.options, axisTop = axis.top, axisWidth = axis.width;
187
- var tickSize = axis.tickSize();
188
- var titleWidth = axisTitle && axisTitle.getBBox().width;
189
- var xOption = options_1.title.x;
190
- var yOption = options_1.title.y;
191
- var titleMargin = pick(options_1.title.margin, horiz ? 5 : 10);
192
- var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize, axisTitle).f;
193
- var crispCorr = tickSize ? tickSize[0] / 2 : 0;
194
- // TODO account for alignment
195
- // the position in the perpendicular direction of the axis
196
- var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
197
- (horiz ? 1 : -1) * // horizontal axis reverses the margin
198
- (opposite ? -1 : 1) * // so does opposite axes
199
- crispCorr +
200
- (axis.side === GridAxis.Side.bottom ? titleFontSize : 0));
201
- e.titlePosition.x = horiz ?
202
- axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
203
- offAxis + (opposite ? axisWidth : 0) + offset + xOption;
204
- e.titlePosition.y = horiz ?
205
- (offAxis -
206
- (opposite ? axisHeight : 0) +
207
- (opposite ? titleFontSize : -titleFontSize) / 2 +
208
- offset +
209
- yOption) :
210
- axisTop - titleMargin + yOption;
211
- }
218
+ }
219
+ /**
220
+ * @private
221
+ */
222
+ function onAfterInit() {
223
+ var axis = this;
224
+ var chart = axis.chart, _a = axis.options.grid, gridOptions = _a === void 0 ? {} : _a, userOptions = axis.userOptions;
225
+ if (gridOptions.enabled) {
226
+ applyGridOptions(axis);
212
227
  }
213
- /**
214
- * @private
215
- */
216
- function onAfterInit() {
217
- var axis = this;
218
- var chart = axis.chart, _a = axis.options.grid, gridOptions = _a === void 0 ? {} : _a, userOptions = axis.userOptions;
219
- if (gridOptions.enabled) {
220
- applyGridOptions(axis);
221
- }
222
- if (gridOptions.columns) {
223
- var columns = axis.grid.columns = [];
224
- var columnIndex = axis.grid.columnIndex = 0;
225
- // Handle columns, each column is a grid axis
226
- while (++columnIndex < gridOptions.columns.length) {
227
- var columnOptions = merge(userOptions, gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
228
- linkedTo: 0,
229
- // Force to behave like category axis
230
- type: 'category',
231
- // Disable by default the scrollbar on the grid axis
232
- scrollbar: {
233
- enabled: false
234
- }
235
- });
236
- delete columnOptions.grid.columns; // Prevent recursion
237
- var column = new Axis(axis.chart, columnOptions);
238
- column.grid.isColumn = true;
239
- column.grid.columnIndex = columnIndex;
240
- // Remove column axis from chart axes array, and place it
241
- // in the columns array.
242
- erase(chart.axes, column);
243
- erase(chart[axis.coll], column);
244
- columns.push(column);
245
- }
228
+ if (gridOptions.columns) {
229
+ var columns = axis.grid.columns = [];
230
+ var columnIndex = axis.grid.columnIndex = 0;
231
+ // Handle columns, each column is a grid axis
232
+ while (++columnIndex < gridOptions.columns.length) {
233
+ var columnOptions = merge(userOptions, gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
234
+ linkedTo: 0,
235
+ // Force to behave like category axis
236
+ type: 'category',
237
+ // Disable by default the scrollbar on the grid axis
238
+ scrollbar: {
239
+ enabled: false
240
+ }
241
+ });
242
+ delete columnOptions.grid.columns; // Prevent recursion
243
+ var column = new Axis(axis.chart, columnOptions);
244
+ column.grid.isColumn = true;
245
+ column.grid.columnIndex = columnIndex;
246
+ // Remove column axis from chart axes array, and place it
247
+ // in the columns array.
248
+ erase(chart.axes, column);
249
+ erase(chart[axis.coll], column);
250
+ columns.push(column);
246
251
  }
247
252
  }
248
- /**
249
- * Draw an extra line on the far side of the outermost axis,
250
- * creating floor/roof/wall of a grid. And some padding.
251
- * ```
252
- * Make this:
253
- * (axis.min) __________________________ (axis.max)
254
- * | | | | |
255
- * Into this:
256
- * (axis.min) __________________________ (axis.max)
257
- * ___|____|____|____|____|__
258
- * ```
259
- * @private
260
- */
261
- function onAfterRender() {
262
- var axis = this, grid = axis.grid, options = axis.options, gridOptions = options.grid || {};
263
- if (gridOptions.enabled === true) {
264
- var min = axis.min || 0, max = axis.max || 0;
265
- // @todo acutual label padding (top, bottom, left, right)
266
- axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
267
- // Remove right wall before rendering if updating
268
- if (axis.rightWall) {
269
- axis.rightWall.destroy();
270
- }
271
- /*
272
- Draw an extra axis line on outer axes
273
- >
274
- Make this: |______|______|______|___
253
+ }
254
+ /**
255
+ * Draw an extra line on the far side of the outermost axis,
256
+ * creating floor/roof/wall of a grid. And some padding.
257
+ * ```
258
+ * Make this:
259
+ * (axis.min) __________________________ (axis.max)
260
+ * | | | | |
261
+ * Into this:
262
+ * (axis.min) __________________________ (axis.max)
263
+ * ___|____|____|____|____|__
264
+ * ```
265
+ * @private
266
+ */
267
+ function onAfterRender() {
268
+ var axis = this, grid = axis.grid, options = axis.options, gridOptions = options.grid || {};
269
+ if (gridOptions.enabled === true) {
270
+ var min = axis.min || 0, max = axis.max || 0;
271
+ // @todo acutual label padding (top, bottom, left, right)
272
+ axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
273
+ // Remove right wall before rendering if updating
274
+ if (axis.rightWall) {
275
+ axis.rightWall.destroy();
276
+ }
277
+ /*
278
+ Draw an extra axis line on outer axes
279
+ >
280
+ Make this: |______|______|______|___
275
281
 
276
- > _________________________
277
- Into this: |______|______|______|__|
278
- */
279
- if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
280
- var lineWidth = options.lineWidth;
281
- if (lineWidth) {
282
- var linePath = axis.getLinePath(lineWidth), startPoint = linePath[0], endPoint = linePath[1],
283
- // Negate distance if top or left axis
284
- // Subtract 1px to draw the line at the end of the tick
285
- tickLength = (axis.tickSize('tick') || [1])[0], distance = (tickLength - 1) * ((axis.side === GridAxis.Side.top ||
286
- axis.side === GridAxis.Side.left) ? -1 : 1);
287
- // If axis is horizontal, reposition line path vertically
288
- if (startPoint[0] === 'M' && endPoint[0] === 'L') {
289
- if (axis.horiz) {
290
- startPoint[2] += distance;
291
- endPoint[2] += distance;
292
- }
293
- else {
294
- startPoint[1] += distance;
295
- endPoint[1] += distance;
296
- }
282
+ > _________________________
283
+ Into this: |______|______|______|__|
284
+ */
285
+ if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
286
+ var lineWidth = options.lineWidth;
287
+ if (lineWidth) {
288
+ var linePath = axis.getLinePath(lineWidth), startPoint = linePath[0], endPoint = linePath[1],
289
+ // Negate distance if top or left axis
290
+ // Subtract 1px to draw the line at the end of the tick
291
+ tickLength = (axis.tickSize('tick') || [1])[0], distance = (tickLength - 1) * ((axis.side === GridAxisSide.top ||
292
+ axis.side === GridAxisSide.left) ? -1 : 1);
293
+ // If axis is horizontal, reposition line path vertically
294
+ if (startPoint[0] === 'M' && endPoint[0] === 'L') {
295
+ if (axis.horiz) {
296
+ startPoint[2] += distance;
297
+ endPoint[2] += distance;
297
298
  }
298
- // If it doesn't exist, add an upper and lower border
299
- // for the vertical grid axis.
300
- if (!axis.horiz && axis.chart.marginRight) {
301
- var upperBorderStartPoint = startPoint, upperBorderEndPoint = [
302
- 'L',
303
- axis.left,
304
- startPoint[2] || 0
305
- ], upperBorderPath = [
306
- upperBorderStartPoint,
307
- upperBorderEndPoint
308
- ], lowerBorderEndPoint = [
309
- 'L',
310
- axis.chart.chartWidth - axis.chart.marginRight,
311
- axis.toPixels(max + axis.tickmarkOffset)
312
- ], lowerBorderStartPoint = [
313
- 'M',
314
- endPoint[1] || 0,
315
- axis.toPixels(max + axis.tickmarkOffset)
316
- ], lowerBorderPath = [
317
- lowerBorderStartPoint,
318
- lowerBorderEndPoint
319
- ];
320
- if (!axis.grid.upperBorder && min % 1 !== 0) {
321
- axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
322
- }
323
- if (axis.grid.upperBorder) {
324
- axis.grid.upperBorder.attr({
325
- stroke: options.lineColor,
326
- 'stroke-width': options.lineWidth
327
- });
328
- axis.grid.upperBorder.animate({
329
- d: upperBorderPath
330
- });
331
- }
332
- if (!axis.grid.lowerBorder && max % 1 !== 0) {
333
- axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
334
- }
335
- if (axis.grid.lowerBorder) {
336
- axis.grid.lowerBorder.attr({
337
- stroke: options.lineColor,
338
- 'stroke-width': options.lineWidth
339
- });
340
- axis.grid.lowerBorder.animate({
341
- d: lowerBorderPath
342
- });
343
- }
299
+ else {
300
+ startPoint[1] += distance;
301
+ endPoint[1] += distance;
344
302
  }
345
- // Render an extra line parallel to the existing axes, to
346
- // close the grid.
347
- if (!axis.grid.axisLineExtra) {
348
- axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
303
+ }
304
+ // If it doesn't exist, add an upper and lower border
305
+ // for the vertical grid axis.
306
+ if (!axis.horiz && axis.chart.marginRight) {
307
+ var upperBorderStartPoint = startPoint, upperBorderEndPoint = [
308
+ 'L',
309
+ axis.left,
310
+ startPoint[2] || 0
311
+ ], upperBorderPath = [
312
+ upperBorderStartPoint,
313
+ upperBorderEndPoint
314
+ ], lowerBorderEndPoint = [
315
+ 'L',
316
+ axis.chart.chartWidth - axis.chart.marginRight,
317
+ axis.toPixels(max + axis.tickmarkOffset)
318
+ ], lowerBorderStartPoint = [
319
+ 'M',
320
+ endPoint[1] || 0,
321
+ axis.toPixels(max + axis.tickmarkOffset)
322
+ ], lowerBorderPath = [
323
+ lowerBorderStartPoint,
324
+ lowerBorderEndPoint
325
+ ];
326
+ if (!axis.grid.upperBorder && min % 1 !== 0) {
327
+ axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
349
328
  }
350
- else {
351
- axis.grid.axisLineExtra.attr({
329
+ if (axis.grid.upperBorder) {
330
+ axis.grid.upperBorder.attr({
352
331
  stroke: options.lineColor,
353
332
  'stroke-width': options.lineWidth
354
333
  });
355
- axis.grid.axisLineExtra.animate({
356
- d: linePath
334
+ axis.grid.upperBorder.animate({
335
+ d: upperBorderPath
357
336
  });
358
337
  }
359
- // show or hide the line depending on options.showEmpty
360
- axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
338
+ if (!axis.grid.lowerBorder && max % 1 !== 0) {
339
+ axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
340
+ }
341
+ if (axis.grid.lowerBorder) {
342
+ axis.grid.lowerBorder.attr({
343
+ stroke: options.lineColor,
344
+ 'stroke-width': options.lineWidth
345
+ });
346
+ axis.grid.lowerBorder.animate({
347
+ d: lowerBorderPath
348
+ });
349
+ }
350
+ }
351
+ // Render an extra line parallel to the existing axes, to
352
+ // close the grid.
353
+ if (!axis.grid.axisLineExtra) {
354
+ axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
361
355
  }
356
+ else {
357
+ axis.grid.axisLineExtra.attr({
358
+ stroke: options.lineColor,
359
+ 'stroke-width': options.lineWidth
360
+ });
361
+ axis.grid.axisLineExtra.animate({
362
+ d: linePath
363
+ });
364
+ }
365
+ // show or hide the line depending on options.showEmpty
366
+ axis.axisLine[axis.showAxis ? 'show' : 'hide']();
362
367
  }
363
- (grid && grid.columns || []).forEach(function (column) {
364
- column.render();
365
- });
366
- // Manipulate the tick mark visibility
367
- // based on the axis.max- allows smooth scrolling.
368
- if (!axis.horiz &&
369
- axis.chart.hasRendered &&
370
- (axis.scrollbar ||
371
- (axis.linkedParent && axis.linkedParent.scrollbar))) {
372
- var tickmarkOffset = axis.tickmarkOffset, lastTick = axis.tickPositions[axis.tickPositions.length - 1], firstTick = axis.tickPositions[0];
373
- var label = void 0;
374
- while ((label = axis.hiddenLabels.pop()) && label.element) {
375
- label.show(); // #15453
368
+ }
369
+ (grid && grid.columns || []).forEach(function (column) { return column.render(); });
370
+ // Manipulate the tick mark visibility
371
+ // based on the axis.max- allows smooth scrolling.
372
+ if (!axis.horiz &&
373
+ axis.chart.hasRendered &&
374
+ (axis.scrollbar ||
375
+ (axis.linkedParent && axis.linkedParent.scrollbar))) {
376
+ var tickmarkOffset = axis.tickmarkOffset, lastTick = axis.tickPositions[axis.tickPositions.length - 1], firstTick = axis.tickPositions[0];
377
+ var label = void 0, tickMark = void 0;
378
+ while ((label = axis.hiddenLabels.pop()) && label.element) {
379
+ label.show(); // #15453
380
+ }
381
+ while ((tickMark = axis.hiddenMarks.pop()) &&
382
+ tickMark.element) {
383
+ tickMark.show(); // #16439
384
+ }
385
+ // Hide/show firts tick label.
386
+ label = axis.ticks[firstTick].label;
387
+ if (label) {
388
+ if (min - firstTick > tickmarkOffset) {
389
+ axis.hiddenLabels.push(label.hide());
376
390
  }
377
- // Hide/show firts tick label.
378
- label = axis.ticks[firstTick].label;
379
- if (label) {
380
- if (min - firstTick > tickmarkOffset) {
381
- axis.hiddenLabels.push(label.hide());
382
- }
383
- else {
384
- label.show();
385
- }
391
+ else {
392
+ label.show();
386
393
  }
387
- // Hide/show last tick mark/label.
388
- label = axis.ticks[lastTick].label;
389
- if (label) {
390
- if (lastTick - max > tickmarkOffset) {
391
- axis.hiddenLabels.push(label.hide());
392
- }
393
- else {
394
- label.show();
395
- }
394
+ }
395
+ // Hide/show last tick mark/label.
396
+ label = axis.ticks[lastTick].label;
397
+ if (label) {
398
+ if (lastTick - max > tickmarkOffset) {
399
+ axis.hiddenLabels.push(label.hide());
396
400
  }
397
- var mark = axis.ticks[lastTick].mark;
398
- if (mark) {
399
- if (lastTick - max < tickmarkOffset &&
400
- lastTick - max > 0 && axis.ticks[lastTick].isLast) {
401
- mark.hide();
402
- }
403
- else if (axis.ticks[lastTick - 1]) {
404
- mark.show();
405
- }
401
+ else {
402
+ label.show();
406
403
  }
407
404
  }
405
+ var mark = axis.ticks[lastTick].mark;
406
+ if (mark &&
407
+ lastTick - max < tickmarkOffset &&
408
+ lastTick - max > 0 && axis.ticks[lastTick].isLast) {
409
+ axis.hiddenMarks.push(mark.hide());
410
+ }
408
411
  }
409
412
  }
410
- /**
411
- * @private
412
- */
413
- function onAfterSetAxisTranslation() {
414
- var axis = this;
415
- var tickInfo = axis.tickPositions && axis.tickPositions.info;
416
- var options = axis.options;
417
- var gridOptions = options.grid || {};
418
- var userLabels = axis.userOptions.labels || {};
419
- // Fire this only for the Gantt type chart, #14868.
420
- if (gridOptions.enabled) {
421
- if (axis.horiz) {
422
- axis.series.forEach(function (series) {
423
- series.options.pointRange = 0;
424
- });
425
- // Lower level time ticks, like hours or minutes, represent
426
- // points in time and not ranges. These should be aligned
427
- // left in the grid cell by default. The same applies to
428
- // years of higher order.
429
- if (tickInfo &&
430
- options.dateTimeLabelFormats &&
431
- options.labels &&
432
- !defined(userLabels.align) &&
433
- (options.dateTimeLabelFormats[tickInfo.unitName]
434
- .range === false ||
435
- tickInfo.count > 1 // years
436
- )) {
437
- options.labels.align = 'left';
438
- if (!defined(userLabels.x)) {
439
- options.labels.x = 3;
440
- }
413
+ }
414
+ /**
415
+ * @private
416
+ */
417
+ function onAfterSetAxisTranslation() {
418
+ var axis = this;
419
+ var tickInfo = axis.tickPositions && axis.tickPositions.info;
420
+ var options = axis.options;
421
+ var gridOptions = options.grid || {};
422
+ var userLabels = axis.userOptions.labels || {};
423
+ // Fire this only for the Gantt type chart, #14868.
424
+ if (gridOptions.enabled) {
425
+ if (axis.horiz) {
426
+ axis.series.forEach(function (series) {
427
+ series.options.pointRange = 0;
428
+ });
429
+ // Lower level time ticks, like hours or minutes, represent
430
+ // points in time and not ranges. These should be aligned
431
+ // left in the grid cell by default. The same applies to
432
+ // years of higher order.
433
+ if (tickInfo &&
434
+ options.dateTimeLabelFormats &&
435
+ options.labels &&
436
+ !defined(userLabels.align) &&
437
+ (options.dateTimeLabelFormats[tickInfo.unitName]
438
+ .range === false ||
439
+ tickInfo.count > 1 // years
440
+ )) {
441
+ options.labels.align = 'left';
442
+ if (!defined(userLabels.x)) {
443
+ options.labels.x = 3;
441
444
  }
442
445
  }
443
- else {
444
- // Don't trim ticks which not in min/max range but
445
- // they are still in the min/max plus tickInterval.
446
- if (this.options.type !== 'treegrid' &&
447
- axis.grid &&
448
- axis.grid.columns) {
449
- this.minPointOffset = this.tickInterval;
450
- }
446
+ }
447
+ else {
448
+ // Don't trim ticks which not in min/max range but
449
+ // they are still in the min/max plus tickInterval.
450
+ if (this.options.type !== 'treegrid' &&
451
+ axis.grid &&
452
+ axis.grid.columns) {
453
+ this.minPointOffset = this.tickInterval;
451
454
  }
452
455
  }
453
456
  }
454
- /**
455
- * Creates a left and right wall on horizontal axes:
456
- * - Places leftmost tick at the start of the axis, to create a left
457
- * wall
458
- * - Ensures that the rightmost tick is at the end of the axis, to
459
- * create a right wall.
460
- * @private
461
- */
462
- function onAfterSetOptions(e) {
463
- var options = this.options, userOptions = e.userOptions, gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
464
- var gridAxisOptions;
465
- if (gridOptions.enabled === true) {
466
- // Merge the user options into default grid axis options so
467
- // that when a user option is set, it takes presedence.
468
- gridAxisOptions = merge(true, {
469
- className: ('highcharts-grid-axis ' + (userOptions.className || '')),
470
- dateTimeLabelFormats: {
471
- hour: {
472
- list: ['%H:%M', '%H']
473
- },
474
- day: {
475
- list: ['%A, %e. %B', '%a, %e. %b', '%E']
476
- },
477
- week: {
478
- list: ['Week %W', 'W%W']
479
- },
480
- month: {
481
- list: ['%B', '%b', '%o']
482
- }
483
- },
484
- grid: {
485
- borderWidth: 1
457
+ }
458
+ /**
459
+ * Creates a left and right wall on horizontal axes:
460
+ * - Places leftmost tick at the start of the axis, to create a left
461
+ * wall
462
+ * - Ensures that the rightmost tick is at the end of the axis, to
463
+ * create a right wall.
464
+ * @private
465
+ */
466
+ function onAfterSetOptions(e) {
467
+ var options = this.options, userOptions = e.userOptions, gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
468
+ var gridAxisOptions;
469
+ if (gridOptions.enabled === true) {
470
+ // Merge the user options into default grid axis options so
471
+ // that when a user option is set, it takes presedence.
472
+ gridAxisOptions = merge(true, {
473
+ className: ('highcharts-grid-axis ' + (userOptions.className || '')),
474
+ dateTimeLabelFormats: {
475
+ hour: {
476
+ list: ['%H:%M', '%H']
486
477
  },
487
- labels: {
488
- padding: 2,
489
- style: {
490
- fontSize: '13px'
491
- }
478
+ day: {
479
+ list: ['%A, %e. %B', '%a, %e. %b', '%E']
492
480
  },
493
- margin: 0,
494
- title: {
495
- text: null,
496
- reserveSpace: false,
497
- rotation: 0
481
+ week: {
482
+ list: ['Week %W', 'W%W']
498
483
  },
499
- // In a grid axis, only allow one unit of certain types,
500
- // for example we shouln't have one grid cell spanning
501
- // two days.
502
- units: [[
503
- 'millisecond',
504
- [1, 10, 100]
505
- ], [
506
- 'second',
507
- [1, 10]
508
- ], [
509
- 'minute',
510
- [1, 5, 15]
511
- ], [
512
- 'hour',
513
- [1, 6]
514
- ], [
515
- 'day',
516
- [1]
517
- ], [
518
- 'week',
519
- [1]
520
- ], [
521
- 'month',
522
- [1]
523
- ], [
524
- 'year',
525
- null
526
- ]]
527
- }, userOptions);
528
- // X-axis specific options
529
- if (this.coll === 'xAxis') {
530
- // For linked axes, tickPixelInterval is used only if
531
- // the tickPositioner below doesn't run or returns
532
- // undefined (like multiple years)
533
- if (defined(userOptions.linkedTo) &&
534
- !defined(userOptions.tickPixelInterval)) {
535
- gridAxisOptions.tickPixelInterval = 350;
484
+ month: {
485
+ list: ['%B', '%b', '%o']
536
486
  }
537
- // For the secondary grid axis, use the primary axis'
538
- // tick intervals and return ticks one level higher.
539
- if (
540
- // Check for tick pixel interval in options
541
- !defined(userOptions.tickPixelInterval) &&
542
- // Only for linked axes
543
- defined(userOptions.linkedTo) &&
544
- !defined(userOptions.tickPositioner) &&
545
- !defined(userOptions.tickInterval)) {
546
- gridAxisOptions.tickPositioner = function (min, max) {
547
- var parentInfo = (this.linkedParent &&
548
- this.linkedParent.tickPositions &&
549
- this.linkedParent.tickPositions.info);
550
- if (parentInfo) {
551
- var units = (gridAxisOptions.units || []);
552
- var unitIdx = void 0, count = void 0, unitName = void 0;
553
- for (var i = 0; i < units.length; i++) {
554
- if (units[i][0] ===
555
- parentInfo.unitName) {
556
- unitIdx = i;
557
- break;
558
- }
559
- }
560
- // Get the first allowed count on the next
561
- // unit.
562
- if (units[unitIdx + 1]) {
563
- unitName = units[unitIdx + 1][0];
564
- count =
565
- (units[unitIdx + 1][1] || [1])[0];
566
- // In case the base X axis shows years, make
567
- // the secondary axis show ten times the
568
- // years (#11427)
569
- }
570
- else if (parentInfo.unitName === 'year') {
571
- unitName = 'year';
572
- count = parentInfo.count * 10;
573
- }
574
- var unitRange = timeUnits[unitName];
575
- this.tickInterval = unitRange * count;
576
- return this.getTimeTicks({
577
- unitRange: unitRange,
578
- count: count,
579
- unitName: unitName
580
- }, min, max, this.options.startOfWeek);
581
- }
582
- };
487
+ },
488
+ grid: {
489
+ borderWidth: 1
490
+ },
491
+ labels: {
492
+ padding: 2,
493
+ style: {
494
+ fontSize: '13px'
583
495
  }
496
+ },
497
+ margin: 0,
498
+ title: {
499
+ text: null,
500
+ reserveSpace: false,
501
+ rotation: 0
502
+ },
503
+ // In a grid axis, only allow one unit of certain types,
504
+ // for example we shouln't have one grid cell spanning
505
+ // two days.
506
+ units: [[
507
+ 'millisecond',
508
+ [1, 10, 100]
509
+ ], [
510
+ 'second',
511
+ [1, 10]
512
+ ], [
513
+ 'minute',
514
+ [1, 5, 15]
515
+ ], [
516
+ 'hour',
517
+ [1, 6]
518
+ ], [
519
+ 'day',
520
+ [1]
521
+ ], [
522
+ 'week',
523
+ [1]
524
+ ], [
525
+ 'month',
526
+ [1]
527
+ ], [
528
+ 'year',
529
+ null
530
+ ]]
531
+ }, userOptions);
532
+ // X-axis specific options
533
+ if (this.coll === 'xAxis') {
534
+ // For linked axes, tickPixelInterval is used only if
535
+ // the tickPositioner below doesn't run or returns
536
+ // undefined (like multiple years)
537
+ if (defined(userOptions.linkedTo) &&
538
+ !defined(userOptions.tickPixelInterval)) {
539
+ gridAxisOptions.tickPixelInterval = 350;
584
540
  }
585
- // Now merge the combined options into the axis options
586
- merge(true, this.options, gridAxisOptions);
587
- if (this.horiz) {
588
- /* _________________________
589
- Make this: ___|_____|_____|_____|__|
590
- ^ ^
591
- _________________________
592
- Into this: |_____|_____|_____|_____|
593
- ^ ^ */
594
- options.minPadding = pick(userOptions.minPadding, 0);
595
- options.maxPadding = pick(userOptions.maxPadding, 0);
596
- }
597
- // If borderWidth is set, then use its value for tick and
598
- // line width.
599
- if (isNumber(options.grid.borderWidth)) {
600
- options.tickWidth = options.lineWidth =
601
- gridOptions.borderWidth;
541
+ // For the secondary grid axis, use the primary axis'
542
+ // tick intervals and return ticks one level higher.
543
+ if (
544
+ // Check for tick pixel interval in options
545
+ !defined(userOptions.tickPixelInterval) &&
546
+ // Only for linked axes
547
+ defined(userOptions.linkedTo) &&
548
+ !defined(userOptions.tickPositioner) &&
549
+ !defined(userOptions.tickInterval)) {
550
+ gridAxisOptions.tickPositioner = function (min, max) {
551
+ var parentInfo = (this.linkedParent &&
552
+ this.linkedParent.tickPositions &&
553
+ this.linkedParent.tickPositions.info);
554
+ if (parentInfo) {
555
+ var units = (gridAxisOptions.units || []);
556
+ var unitIdx = void 0, count = 1, unitName = 'year';
557
+ for (var i = 0; i < units.length; i++) {
558
+ var unit_1 = units[i];
559
+ if (unit_1 && unit_1[0] === parentInfo.unitName) {
560
+ unitIdx = i;
561
+ break;
562
+ }
563
+ }
564
+ // Get the first allowed count on the next unit.
565
+ var unit = (isNumber(unitIdx) && units[unitIdx + 1]);
566
+ if (unit) {
567
+ unitName = unit[0] || 'year';
568
+ var counts = unit[1];
569
+ count = counts && counts[0] || 1;
570
+ // In case the base X axis shows years, make the
571
+ // secondary axis show ten times the years (#11427)
572
+ }
573
+ else if (parentInfo.unitName === 'year') {
574
+ // unitName is 'year'
575
+ count = parentInfo.count * 10;
576
+ }
577
+ var unitRange = timeUnits[unitName];
578
+ this.tickInterval = unitRange * count;
579
+ return this.chart.time.getTimeTicks({ unitRange: unitRange, count: count, unitName: unitName }, min, max, this.options.startOfWeek);
580
+ }
581
+ };
602
582
  }
603
583
  }
604
- }
605
- /**
606
- * @private
607
- */
608
- function onAfterSetOptions2(e) {
609
- var axis = this;
610
- var userOptions = e.userOptions;
611
- var gridOptions = userOptions && userOptions.grid || {};
612
- var columns = gridOptions.columns;
613
- // Add column options to the parent axis. Children has their column
614
- // options set on init in onGridAxisAfterInit.
615
- if (gridOptions.enabled && columns) {
616
- merge(true, axis.options, columns[columns.length - 1]);
584
+ // Now merge the combined options into the axis options
585
+ merge(true, this.options, gridAxisOptions);
586
+ if (this.horiz) {
587
+ /* _________________________
588
+ Make this: ___|_____|_____|_____|__|
589
+ ^ ^
590
+ _________________________
591
+ Into this: |_____|_____|_____|_____|
592
+ ^ ^ */
593
+ options.minPadding = pick(userOptions.minPadding, 0);
594
+ options.maxPadding = pick(userOptions.maxPadding, 0);
595
+ }
596
+ // If borderWidth is set, then use its value for tick and
597
+ // line width.
598
+ if (isNumber(options.grid.borderWidth)) {
599
+ options.tickWidth = options.lineWidth =
600
+ gridOptions.borderWidth;
617
601
  }
618
602
  }
619
- /**
620
- * Handle columns and setScale.
621
- * @private
622
- */
623
- function onAfterSetScale() {
624
- var axis = this;
625
- (axis.grid.columns || []).forEach(function (column) {
626
- column.setScale();
627
- });
603
+ }
604
+ /**
605
+ * @private
606
+ */
607
+ function onAfterSetOptions2(e) {
608
+ var axis = this;
609
+ var userOptions = e.userOptions;
610
+ var gridOptions = userOptions && userOptions.grid || {};
611
+ var columns = gridOptions.columns;
612
+ // Add column options to the parent axis. Children has their column
613
+ // options set on init in onGridAxisAfterInit.
614
+ if (gridOptions.enabled && columns) {
615
+ merge(true, axis.options, columns[columns.length - 1]);
628
616
  }
629
- /**
630
- * Draw vertical axis ticks extra long to create cell floors and roofs.
631
- * Overrides the tickLength for vertical axes.
632
- * @private
633
- */
634
- function onAfterTickSize(e) {
635
- var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
636
- var _a = this, horiz = _a.horiz, maxLabelDimensions = _a.maxLabelDimensions, _b = _a.options.grid, gridOptions = _b === void 0 ? {} : _b;
637
- if (gridOptions.enabled && maxLabelDimensions) {
638
- var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
639
- var distance = horiz ?
640
- (gridOptions.cellHeight ||
641
- labelPadding + maxLabelDimensions.height) :
642
- labelPadding + maxLabelDimensions.width;
643
- if (isArray(e.tickSize)) {
644
- e.tickSize[0] = distance;
645
- }
646
- else {
647
- e.tickSize = [distance, 0];
648
- }
617
+ }
618
+ /**
619
+ * Handle columns and setScale.
620
+ * @private
621
+ */
622
+ function onAfterSetScale() {
623
+ var axis = this;
624
+ (axis.grid.columns || []).forEach(function (column) { return column.setScale(); });
625
+ }
626
+ /**
627
+ * Draw vertical axis ticks extra long to create cell floors and roofs.
628
+ * Overrides the tickLength for vertical axes.
629
+ * @private
630
+ */
631
+ function onAfterTickSize(e) {
632
+ var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
633
+ var _a = this, horiz = _a.horiz, maxLabelDimensions = _a.maxLabelDimensions, _b = _a.options.grid, gridOptions = _b === void 0 ? {} : _b;
634
+ if (gridOptions.enabled && maxLabelDimensions) {
635
+ var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
636
+ var distance = horiz ?
637
+ (gridOptions.cellHeight ||
638
+ labelPadding + maxLabelDimensions.height) :
639
+ labelPadding + maxLabelDimensions.width;
640
+ if (isArray(e.tickSize)) {
641
+ e.tickSize[0] = distance;
642
+ }
643
+ else {
644
+ e.tickSize = [distance, 0];
649
645
  }
650
646
  }
651
- /**
652
- * @private
653
- */
654
- function onChartAfterSetChartSize() {
655
- this.axes.forEach(function (axis) {
656
- (axis.grid && axis.grid.columns || []).forEach(function (column) {
657
- column.setAxisSize();
658
- column.setAxisTranslation();
659
- });
647
+ }
648
+ /**
649
+ * @private
650
+ */
651
+ function onChartAfterSetChartSize() {
652
+ this.axes.forEach(function (axis) {
653
+ (axis.grid && axis.grid.columns || []).forEach(function (column) {
654
+ column.setAxisSize();
655
+ column.setAxisTranslation();
660
656
  });
657
+ });
658
+ }
659
+ /**
660
+ * @private
661
+ */
662
+ function onDestroy(e) {
663
+ var grid = this.grid;
664
+ (grid.columns || []).forEach(function (column) { return column.destroy(e.keepEvents); });
665
+ grid.columns = void 0;
666
+ }
667
+ /**
668
+ * Wraps axis init to draw cell walls on vertical axes.
669
+ * @private
670
+ */
671
+ function onInit(e) {
672
+ var axis = this;
673
+ var userOptions = e.userOptions || {};
674
+ var gridOptions = userOptions.grid || {};
675
+ if (gridOptions.enabled && defined(gridOptions.borderColor)) {
676
+ userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
661
677
  }
662
- /**
663
- * @private
664
- */
665
- function onDestroy(e) {
666
- var grid = this.grid;
667
- (grid.columns || []).forEach(function (column) {
668
- column.destroy(e.keepEvents);
669
- });
670
- grid.columns = void 0;
678
+ if (!axis.grid) {
679
+ axis.grid = new GridAxisAdditions(axis);
671
680
  }
672
- /**
673
- * Wraps axis init to draw cell walls on vertical axes.
674
- * @private
675
- */
676
- function onInit(e) {
677
- var axis = this;
678
- var userOptions = e.userOptions || {};
679
- var gridOptions = userOptions.grid || {};
680
- if (gridOptions.enabled && defined(gridOptions.borderColor)) {
681
- userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
681
+ axis.hiddenLabels = [];
682
+ axis.hiddenMarks = [];
683
+ }
684
+ /**
685
+ * Center tick labels in cells.
686
+ * @private
687
+ */
688
+ function onTickAfterGetLabelPosition(e) {
689
+ var tick = this, label = tick.label, axis = tick.axis, reversed = axis.reversed, chart = axis.chart, options = axis.options, gridOptions = options.grid || {}, labelOpts = axis.options.labels, align = labelOpts.align,
690
+ // verticalAlign is currently not supported for axis.labels.
691
+ verticalAlign = 'middle', // labelOpts.verticalAlign,
692
+ side = GridAxisSide[axis.side], tickmarkOffset = e.tickmarkOffset, tickPositions = axis.tickPositions, tickPos = tick.pos - tickmarkOffset, nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
693
+ tickPositions[e.index + 1] - tickmarkOffset :
694
+ (axis.max || 0) + tickmarkOffset), tickSize = axis.tickSize('tick'), tickWidth = tickSize ? tickSize[0] : 0, crispCorr = tickSize ? tickSize[1] / 2 : 0;
695
+ var labelHeight, lblMetrics, lines, bottom, top, left, right;
696
+ // Only center tick labels in grid axes
697
+ if (gridOptions.enabled === true) {
698
+ // Calculate top and bottom positions of the cell.
699
+ if (side === 'top') {
700
+ bottom = axis.top + axis.offset;
701
+ top = bottom - tickWidth;
682
702
  }
683
- if (!axis.grid) {
684
- axis.grid = new Additions(axis);
703
+ else if (side === 'bottom') {
704
+ top = chart.chartHeight - axis.bottom + axis.offset;
705
+ bottom = top + tickWidth;
685
706
  }
686
- axis.hiddenLabels = [];
687
- }
688
- /**
689
- * Center tick labels in cells.
690
- * @private
691
- */
692
- function onTickAfterGetLabelPosition(e) {
693
- var tick = this, label = tick.label, axis = tick.axis, reversed = axis.reversed, chart = axis.chart, options = axis.options, gridOptions = options.grid || {}, labelOpts = axis.options.labels, align = labelOpts.align,
694
- // verticalAlign is currently not supported for axis.labels.
695
- verticalAlign = 'middle', // labelOpts.verticalAlign,
696
- side = GridAxis.Side[axis.side], tickmarkOffset = e.tickmarkOffset, tickPositions = axis.tickPositions, tickPos = tick.pos - tickmarkOffset, nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
697
- tickPositions[e.index + 1] - tickmarkOffset :
698
- (axis.max || 0) + tickmarkOffset), tickSize = axis.tickSize('tick'), tickWidth = tickSize ? tickSize[0] : 0, crispCorr = tickSize ? tickSize[1] / 2 : 0;
699
- var labelHeight, lblMetrics, lines, bottom, top, left, right;
700
- // Only center tick labels in grid axes
701
- if (gridOptions.enabled === true) {
702
- // Calculate top and bottom positions of the cell.
703
- if (side === 'top') {
704
- bottom = axis.top + axis.offset;
705
- top = bottom - tickWidth;
706
- }
707
- else if (side === 'bottom') {
708
- top = chart.chartHeight - axis.bottom + axis.offset;
709
- bottom = top + tickWidth;
710
- }
711
- else {
712
- bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
713
- top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
714
- }
715
- // Calculate left and right positions of the cell.
716
- if (side === 'right') {
717
- left = chart.chartWidth - axis.right + axis.offset;
718
- right = left + tickWidth;
719
- }
720
- else if (side === 'left') {
721
- right = axis.left + axis.offset;
722
- left = right - tickWidth;
723
- }
724
- else {
725
- left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
726
- right = Math.min(// #15742
727
- Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
728
- }
729
- tick.slotWidth = right - left;
730
- // Calculate the positioning of the label based on
731
- // alignment.
732
- e.pos.x = (align === 'left' ?
733
- left :
734
- align === 'right' ?
735
- right :
736
- left + ((right - left) / 2) // default to center
737
- );
738
- e.pos.y = (verticalAlign === 'top' ?
739
- top :
740
- verticalAlign === 'bottom' ?
741
- bottom :
742
- top + ((bottom - top) / 2) // default to middle
743
- );
744
- lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
745
- labelHeight = label ? label.getBBox().height : 0;
746
- // Adjustment to y position to align the label correctly.
747
- // Would be better to have a setter or similar for this.
748
- if (!labelOpts.useHTML) {
749
- lines = Math.round(labelHeight / lblMetrics.h);
750
- e.pos.y += (
751
- // Center the label
752
- // TODO: why does this actually center the label?
753
- ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
754
- // Adjust for height of additional lines.
755
- -(((lines - 1) * lblMetrics.h) / 2));
756
- }
757
- else {
758
- e.pos.y += (
759
- // Readjust yCorr in htmlUpdateTransform
760
- lblMetrics.b +
761
- // Adjust for height of html label
762
- -(labelHeight / 2));
763
- }
764
- e.pos.x += (axis.horiz && labelOpts.x) || 0;
707
+ else {
708
+ bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
709
+ top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
765
710
  }
766
- }
767
- /**
768
- * @private
769
- */
770
- function onTickLabelFormat(ctx) {
771
- var axis = ctx.axis, value = ctx.value;
772
- if (axis.options.grid &&
773
- axis.options.grid.enabled) {
774
- var tickPos = axis.tickPositions;
775
- var series = (axis.linkedParent || axis).series[0];
776
- var isFirst = value === tickPos[0];
777
- var isLast = value === tickPos[tickPos.length - 1];
778
- var point = series && find(series.options.data, function (p) {
779
- return p[axis.isXAxis ? 'x' : 'y'] === value;
780
- });
781
- var pointCopy = void 0;
782
- if (point && series.is('gantt')) {
783
- // For the Gantt set point aliases to the pointCopy
784
- // to do not change the original point
785
- pointCopy = merge(point);
786
- H.seriesTypes.gantt.prototype.pointClass
787
- .setGanttPointAliases(pointCopy);
788
- }
789
- // Make additional properties available for the
790
- // formatter
791
- ctx.isFirst = isFirst;
792
- ctx.isLast = isLast;
793
- ctx.point = pointCopy;
711
+ // Calculate left and right positions of the cell.
712
+ if (side === 'right') {
713
+ left = chart.chartWidth - axis.right + axis.offset;
714
+ right = left + tickWidth;
794
715
  }
716
+ else if (side === 'left') {
717
+ right = axis.left + axis.offset;
718
+ left = right - tickWidth;
719
+ }
720
+ else {
721
+ left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
722
+ right = Math.min(// #15742
723
+ Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
724
+ }
725
+ tick.slotWidth = right - left;
726
+ // Calculate the positioning of the label based on
727
+ // alignment.
728
+ e.pos.x = (align === 'left' ?
729
+ left :
730
+ align === 'right' ?
731
+ right :
732
+ left + ((right - left) / 2) // default to center
733
+ );
734
+ e.pos.y = (verticalAlign === 'top' ?
735
+ top :
736
+ verticalAlign === 'bottom' ?
737
+ bottom :
738
+ top + ((bottom - top) / 2) // default to middle
739
+ );
740
+ lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
741
+ labelHeight = label ? label.getBBox().height : 0;
742
+ // Adjustment to y position to align the label correctly.
743
+ // Would be better to have a setter or similar for this.
744
+ if (!labelOpts.useHTML) {
745
+ lines = Math.round(labelHeight / lblMetrics.h);
746
+ e.pos.y += (
747
+ // Center the label
748
+ // TODO: why does this actually center the label?
749
+ ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
750
+ // Adjust for height of additional lines.
751
+ -(((lines - 1) * lblMetrics.h) / 2));
752
+ }
753
+ else {
754
+ e.pos.y += (
755
+ // Readjust yCorr in htmlUpdateTransform
756
+ lblMetrics.b +
757
+ // Adjust for height of html label
758
+ -(labelHeight / 2));
759
+ }
760
+ e.pos.x += (axis.horiz && labelOpts.x) || 0;
795
761
  }
796
- /**
797
- * Makes tick labels which are usually ignored in a linked axis
798
- * displayed if they are within range of linkedParent.min.
799
- * ```
800
- * _____________________________
801
- * | | | | |
802
- * Make this: | | 2 | 3 | 4 |
803
- * |___|_______|_______|_______|
804
- * ^
805
- * _____________________________
806
- * | | | | |
807
- * Into this: | 1 | 2 | 3 | 4 |
808
- * |___|_______|_______|_______|
809
- * ^
810
- * ```
811
- * @private
812
- * @todo Does this function do what the drawing says? Seems to affect
813
- * ticks and not the labels directly?
814
- */
815
- function onTrimTicks() {
816
- var axis = this;
817
- var options = axis.options;
818
- var gridOptions = options.grid || {};
819
- var categoryAxis = axis.categories;
820
- var tickPositions = axis.tickPositions;
821
- var firstPos = tickPositions[0];
822
- var lastPos = tickPositions[tickPositions.length - 1];
823
- var linkedMin = axis.linkedParent && axis.linkedParent.min;
824
- var linkedMax = axis.linkedParent && axis.linkedParent.max;
825
- var min = linkedMin || axis.min;
826
- var max = linkedMax || axis.max;
827
- var tickInterval = axis.tickInterval;
828
- var endMoreThanMin = (firstPos < min &&
829
- firstPos + tickInterval > min);
830
- var startLessThanMax = (lastPos > max &&
831
- lastPos - tickInterval < max);
832
- if (gridOptions.enabled === true &&
833
- !categoryAxis &&
834
- (axis.horiz || axis.isLinked)) {
835
- if (endMoreThanMin && !options.startOnTick) {
836
- tickPositions[0] = min;
837
- }
838
- if (startLessThanMax && !options.endOnTick) {
839
- tickPositions[tickPositions.length - 1] = max;
840
- }
762
+ }
763
+ /**
764
+ * @private
765
+ */
766
+ function onTickLabelFormat(ctx) {
767
+ var axis = ctx.axis, value = ctx.value;
768
+ if (axis.options.grid &&
769
+ axis.options.grid.enabled) {
770
+ var tickPos = axis.tickPositions;
771
+ var series = (axis.linkedParent || axis).series[0];
772
+ var isFirst = value === tickPos[0];
773
+ var isLast = value === tickPos[tickPos.length - 1];
774
+ var point = series && find(series.options.data, function (p) {
775
+ return p[axis.isXAxis ? 'x' : 'y'] === value;
776
+ });
777
+ var pointCopy = void 0;
778
+ if (point && series.is('gantt')) {
779
+ // For the Gantt set point aliases to the pointCopy
780
+ // to do not change the original point
781
+ pointCopy = merge(point);
782
+ H.seriesTypes.gantt.prototype.pointClass
783
+ .setGanttPointAliases(pointCopy);
841
784
  }
785
+ // Make additional properties available for the
786
+ // formatter
787
+ ctx.isFirst = isFirst;
788
+ ctx.isLast = isLast;
789
+ ctx.point = pointCopy;
842
790
  }
843
- /**
844
- * Avoid altering tickInterval when reserving space.
845
- * @private
846
- */
847
- function wrapUnsquish(proceed) {
848
- var axis = this;
849
- var _a = axis.options.grid, gridOptions = _a === void 0 ? {} : _a;
850
- if (gridOptions.enabled === true && axis.categories) {
851
- return axis.tickInterval;
791
+ }
792
+ /**
793
+ * Makes tick labels which are usually ignored in a linked axis
794
+ * displayed if they are within range of linkedParent.min.
795
+ * ```
796
+ * _____________________________
797
+ * | | | | |
798
+ * Make this: | | 2 | 3 | 4 |
799
+ * |___|_______|_______|_______|
800
+ * ^
801
+ * _____________________________
802
+ * | | | | |
803
+ * Into this: | 1 | 2 | 3 | 4 |
804
+ * |___|_______|_______|_______|
805
+ * ^
806
+ * ```
807
+ * @private
808
+ * @todo Does this function do what the drawing says? Seems to affect
809
+ * ticks and not the labels directly?
810
+ */
811
+ function onTrimTicks() {
812
+ var axis = this;
813
+ var options = axis.options;
814
+ var gridOptions = options.grid || {};
815
+ var categoryAxis = axis.categories;
816
+ var tickPositions = axis.tickPositions;
817
+ var firstPos = tickPositions[0];
818
+ var lastPos = tickPositions[tickPositions.length - 1];
819
+ var linkedMin = axis.linkedParent && axis.linkedParent.min;
820
+ var linkedMax = axis.linkedParent && axis.linkedParent.max;
821
+ var min = linkedMin || axis.min;
822
+ var max = linkedMax || axis.max;
823
+ var tickInterval = axis.tickInterval;
824
+ var endMoreThanMin = (firstPos < min &&
825
+ firstPos + tickInterval > min);
826
+ var startLessThanMax = (lastPos > max &&
827
+ lastPos - tickInterval < max);
828
+ if (gridOptions.enabled === true &&
829
+ !categoryAxis &&
830
+ (axis.horiz || axis.isLinked)) {
831
+ if (endMoreThanMin && !options.startOnTick) {
832
+ tickPositions[0] = min;
833
+ }
834
+ if (startLessThanMax && !options.endOnTick) {
835
+ tickPositions[tickPositions.length - 1] = max;
852
836
  }
853
- return proceed.apply(axis, argsToArray(arguments));
854
837
  }
838
+ }
839
+ /**
840
+ * Avoid altering tickInterval when reserving space.
841
+ * @private
842
+ */
843
+ function wrapUnsquish(proceed) {
844
+ var axis = this;
845
+ var _a = axis.options.grid, gridOptions = _a === void 0 ? {} : _a;
846
+ if (gridOptions.enabled === true && axis.categories) {
847
+ return axis.tickInterval;
848
+ }
849
+ return proceed.apply(axis, argsToArray(arguments));
850
+ }
851
+ /* *
852
+ *
853
+ * Class
854
+ *
855
+ * */
856
+ /**
857
+ * Additions for grid axes.
858
+ * @private
859
+ * @class
860
+ */
861
+ var GridAxisAdditions = /** @class */ (function () {
855
862
  /* *
863
+ *
864
+ * Constructors
865
+ *
866
+ * */
867
+ function GridAxisAdditions(axis) {
868
+ this.axis = axis;
869
+ }
870
+ /* *
871
+ *
872
+ * Functions
873
+ *
874
+ * */
875
+ /**
876
+ * Checks if an axis is the outer axis in its dimension. Since
877
+ * axes are placed outwards in order, the axis with the highest
878
+ * index is the outermost axis.
856
879
  *
857
- * Class
880
+ * Example: If there are multiple x-axes at the top of the chart,
881
+ * this function returns true if the axis supplied is the last
882
+ * of the x-axes.
858
883
  *
859
- * */
860
- /**
861
- * Additions for grid axes.
862
884
  * @private
863
- * @class
885
+ *
886
+ * @return {boolean}
887
+ * True if the axis is the outermost axis in its dimension; false if
888
+ * not.
864
889
  */
865
- var Additions = /** @class */ (function () {
866
- /* *
867
- *
868
- * Constructors
869
- *
870
- * */
871
- function Additions(axis) {
872
- this.axis = axis;
873
- }
874
- /* *
875
- *
876
- * Functions
877
- *
878
- * */
879
- /**
880
- * Checks if an axis is the outer axis in its dimension. Since
881
- * axes are placed outwards in order, the axis with the highest
882
- * index is the outermost axis.
883
- *
884
- * Example: If there are multiple x-axes at the top of the chart,
885
- * this function returns true if the axis supplied is the last
886
- * of the x-axes.
887
- *
888
- * @private
889
- *
890
- * @return {boolean}
891
- * True if the axis is the outermost axis in its dimension; false if
892
- * not.
893
- */
894
- Additions.prototype.isOuterAxis = function () {
895
- var axis = this.axis;
896
- var chart = axis.chart;
897
- var columnIndex = axis.grid.columnIndex;
898
- var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
899
- axis.grid.columns);
900
- var parentAxis = columnIndex ? axis.linkedParent : axis;
901
- var thisIndex = -1, lastIndex = 0;
902
- chart[axis.coll].forEach(function (otherAxis, index) {
903
- if (otherAxis.side === axis.side &&
904
- !otherAxis.options.isInternal) {
905
- lastIndex = index;
906
- if (otherAxis === parentAxis) {
907
- // Get the index of the axis in question
908
- thisIndex = index;
909
- }
890
+ GridAxisAdditions.prototype.isOuterAxis = function () {
891
+ var axis = this.axis;
892
+ var chart = axis.chart;
893
+ var columnIndex = axis.grid.columnIndex;
894
+ var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
895
+ axis.grid.columns);
896
+ var parentAxis = columnIndex ? axis.linkedParent : axis;
897
+ var thisIndex = -1, lastIndex = 0;
898
+ (chart[axis.coll] || []).forEach(function (otherAxis, index) {
899
+ if (otherAxis.side === axis.side &&
900
+ !otherAxis.options.isInternal) {
901
+ lastIndex = index;
902
+ if (otherAxis === parentAxis) {
903
+ // Get the index of the axis in question
904
+ thisIndex = index;
910
905
  }
911
- });
912
- return (lastIndex === thisIndex &&
913
- (isNumber(columnIndex) ?
914
- columns.length === columnIndex :
915
- true));
916
- };
917
- /**
918
- * Add extra border based on the provided path.
919
- * @private
920
- * @param {SVGPath} path
921
- * The path of the border.
922
- * @return {Highcharts.SVGElement}
923
- * Border
924
- */
925
- Additions.prototype.renderBorder = function (path) {
926
- var axis = this.axis, renderer = axis.chart.renderer, options = axis.options, extraBorderLine = renderer.path(path)
927
- .addClass('highcharts-axis-line')
928
- .add(axis.axisBorder);
929
- if (!renderer.styledMode) {
930
- extraBorderLine.attr({
931
- stroke: options.lineColor,
932
- 'stroke-width': options.lineWidth,
933
- zIndex: 7
934
- });
935
906
  }
936
- return extraBorderLine;
937
- };
938
- return Additions;
939
- }());
940
- GridAxis.Additions = Additions;
941
- })(GridAxis || (GridAxis = {}));
907
+ });
908
+ return (lastIndex === thisIndex &&
909
+ (isNumber(columnIndex) ?
910
+ columns.length === columnIndex :
911
+ true));
912
+ };
913
+ /**
914
+ * Add extra border based on the provided path.
915
+ * @private
916
+ * @param {SVGPath} path
917
+ * The path of the border.
918
+ * @return {Highcharts.SVGElement}
919
+ * Border
920
+ */
921
+ GridAxisAdditions.prototype.renderBorder = function (path) {
922
+ var axis = this.axis, renderer = axis.chart.renderer, options = axis.options, extraBorderLine = renderer.path(path)
923
+ .addClass('highcharts-axis-line')
924
+ .add(axis.axisBorder);
925
+ if (!renderer.styledMode) {
926
+ extraBorderLine.attr({
927
+ stroke: options.lineColor,
928
+ 'stroke-width': options.lineWidth,
929
+ zIndex: 7
930
+ });
931
+ }
932
+ return extraBorderLine;
933
+ };
934
+ return GridAxisAdditions;
935
+ }());
942
936
  /* *
943
937
  *
944
938
  * Registry
@@ -950,7 +944,10 @@ dateFormats.E = function (timestamp) {
950
944
  };
951
945
  // Adds week date format
952
946
  dateFormats.W = function (timestamp) {
953
- var d = new this.Date(timestamp);
947
+ var time = this, d = new this.Date(timestamp), unitsToOmit = ['Hours', 'Milliseconds', 'Minutes', 'Seconds'];
948
+ unitsToOmit.forEach(function (format) {
949
+ time.set(format, d, 0);
950
+ });
954
951
  var firstDay = (this.get('Day', d) + 6) % 7;
955
952
  var thursday = new this.Date(d.valueOf());
956
953
  this.set('Date', thursday, this.get('Date', d) - firstDay + 3);
@@ -967,6 +964,9 @@ dateFormats.W = function (timestamp) {
967
964
  * Default Export
968
965
  *
969
966
  * */
967
+ var GridAxis = {
968
+ compose: compose
969
+ };
970
970
  export default GridAxis;
971
971
  /* *
972
972
  *