highcharts 9.3.3 → 10.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (917) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +19 -2
  3. package/css/highcharts.scss +17 -2
  4. package/css/themes/dark-unica.css +19 -2
  5. package/css/themes/grid-light.css +19 -2
  6. package/css/themes/sand-signika.css +19 -2
  7. package/es-modules/Accessibility/A11yI18n.js +4 -4
  8. package/es-modules/Accessibility/Accessibility.js +3 -4
  9. package/es-modules/Accessibility/Components/AnnotationsA11y.js +3 -3
  10. package/es-modules/Accessibility/Components/ContainerComponent.js +11 -10
  11. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +18 -11
  12. package/es-modules/Accessibility/Components/LegendComponent.js +34 -26
  13. package/es-modules/Accessibility/Components/MenuComponent.js +7 -6
  14. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -3
  15. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
  16. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  17. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +3 -2
  18. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
  19. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +96 -39
  20. package/es-modules/Accessibility/Components/ZoomComponent.js +43 -80
  21. package/es-modules/Accessibility/FocusBorder.js +6 -5
  22. package/es-modules/Accessibility/HighContrastMode.js +3 -3
  23. package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
  24. package/es-modules/Accessibility/Options/{Options.js → A11yDefaults.js} +72 -4
  25. package/es-modules/Accessibility/Options/DeprecatedOptions.js +12 -2
  26. package/es-modules/Accessibility/Options/{LangOptions.js → LangDefaults.js} +46 -31
  27. package/es-modules/Accessibility/ProxyElement.js +14 -6
  28. package/es-modules/Accessibility/ProxyProvider.js +10 -2
  29. package/es-modules/Accessibility/Utils/ChartUtilities.js +10 -5
  30. package/es-modules/Core/Animation/Fx.js +1 -1
  31. package/es-modules/Core/Axis/Axis.js +197 -91
  32. package/es-modules/Core/Axis/AxisDefaults.js +8 -8
  33. package/es-modules/Core/Axis/Color/ColorAxis.js +26 -7
  34. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +3 -3
  35. package/es-modules/Core/Axis/DateTimeAxis.js +5 -3
  36. package/es-modules/Core/Axis/GridAxis.js +821 -821
  37. package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  38. package/es-modules/Core/Axis/OrdinalAxis.js +26 -3
  39. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
  40. package/es-modules/Core/Axis/StackingAxis.js +0 -1
  41. package/es-modules/Core/Axis/Tick.js +22 -18
  42. package/es-modules/Core/Axis/TreeGridTick.js +13 -2
  43. package/es-modules/Core/Axis/ZAxis.js +3 -1
  44. package/es-modules/Core/Chart/Chart.js +27 -8
  45. package/es-modules/Core/Chart/Chart3D.js +1 -11
  46. package/es-modules/Core/Chart/ChartDefaults.js +46 -14
  47. package/es-modules/Core/Chart/GanttChart.js +3 -1
  48. package/es-modules/Core/Chart/MapChart.js +4 -7
  49. package/es-modules/Core/Chart/StockChart.js +7 -5
  50. package/es-modules/Core/Color/Color.js +1 -1
  51. package/es-modules/Core/DefaultOptions.js +19 -15
  52. package/es-modules/Core/Geometry/PolygonClip.js +84 -0
  53. package/es-modules/Core/Globals.js +4 -18
  54. package/es-modules/Core/HttpUtilities.js +46 -39
  55. package/es-modules/Core/Legend/Legend.js +14 -12
  56. package/es-modules/Core/MSPointer.js +3 -1
  57. package/es-modules/Core/Navigator.js +16 -13
  58. package/es-modules/Core/Pointer.js +16 -12
  59. package/es-modules/Core/Renderer/HTML/AST.js +68 -8
  60. package/es-modules/Core/Renderer/HTML/HTMLElement.js +3 -1
  61. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +3 -1
  62. package/es-modules/Core/Renderer/SVG/SVGElement.js +54 -70
  63. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
  64. package/es-modules/Core/Renderer/SVG/SVGLabel.js +3 -1
  65. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +60 -55
  66. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +4 -2
  67. package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
  68. package/es-modules/Core/Scrollbar.js +9 -5
  69. package/es-modules/Core/ScrollbarDefaults.js +8 -8
  70. package/es-modules/Core/Series/DataLabel.js +67 -38
  71. package/es-modules/Core/Series/Point.js +11 -2
  72. package/es-modules/Core/Series/Series.js +57 -27
  73. package/es-modules/Core/Series/Series3D.js +3 -1
  74. package/es-modules/Core/Series/SeriesDefaults.js +7 -4
  75. package/es-modules/Core/Time.js +6 -7
  76. package/es-modules/Core/Tooltip.js +17 -34
  77. package/es-modules/Core/Utilities.js +33 -33
  78. package/es-modules/Data/DataConverter.js +1 -1
  79. package/es-modules/Data/DataTable.js +12 -10
  80. package/es-modules/Data/Modifiers/ChainModifier.js +3 -1
  81. package/es-modules/Data/Modifiers/GroupModifier.js +3 -1
  82. package/es-modules/Data/Modifiers/InvertModifier.js +9 -7
  83. package/es-modules/Data/Modifiers/RangeModifier.js +3 -1
  84. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +3 -1
  85. package/es-modules/Data/Modifiers/SortModifier.js +3 -1
  86. package/es-modules/Data/Parsers/CSVParser.js +3 -1
  87. package/es-modules/Data/Parsers/DataParser.js +1 -1
  88. package/es-modules/Data/Parsers/GoogleSheetsParser.js +3 -2
  89. package/es-modules/Data/Parsers/HTMLTableParser.js +3 -1
  90. package/es-modules/Data/Stores/CSVStore.js +8 -5
  91. package/es-modules/Data/Stores/GoogleSheetsStore.js +3 -1
  92. package/es-modules/Data/Stores/HTMLTableStore.js +3 -1
  93. package/es-modules/Extensions/Annotations/{Annotations.js → Annotation.js} +30 -11
  94. package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
  95. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  96. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +5 -2
  97. package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
  98. package/es-modules/Extensions/Annotations/NavigationBindings.js +16 -5
  99. package/es-modules/Extensions/Annotations/Popup.js +2 -2
  100. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +18 -12
  101. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -2
  102. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +4 -2
  103. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +5 -3
  104. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +4 -2
  105. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +4 -2
  106. package/es-modules/Extensions/Annotations/Types/Measure.js +4 -2
  107. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +4 -2
  108. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
  109. package/es-modules/Extensions/Annotations/Types/Tunnel.js +5 -2
  110. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +4 -2
  111. package/es-modules/Extensions/Boost/BoostAttach.js +5 -1
  112. package/es-modules/Extensions/Boost/BoostInit.js +9 -3
  113. package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
  114. package/es-modules/Extensions/Boost/Boostables.js +1 -0
  115. package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
  116. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  117. package/es-modules/Extensions/BoostCanvas.js +11 -5
  118. package/es-modules/Extensions/Breadcrumbs.js +898 -0
  119. package/es-modules/Extensions/CurrentDateIndication.js +1 -1
  120. package/es-modules/Extensions/Data.js +661 -613
  121. package/es-modules/Extensions/DataGrouping.js +8 -3
  122. package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
  123. package/es-modules/Extensions/DownloadURL.js +3 -3
  124. package/es-modules/Extensions/DragPanes.js +1 -1
  125. package/es-modules/Extensions/DraggablePoints.js +9 -7
  126. package/es-modules/Extensions/Drilldown.js +152 -97
  127. package/es-modules/Extensions/ExportData.js +58 -9
  128. package/es-modules/Extensions/Exporting/Exporting.js +34 -23
  129. package/es-modules/Extensions/Exporting/ExportingDefaults.js +56 -8
  130. package/es-modules/Extensions/FullScreen.js +121 -54
  131. package/es-modules/Extensions/GeoJSON.js +149 -125
  132. package/es-modules/Extensions/MarkerClusters.js +36 -22
  133. package/es-modules/Extensions/NoDataToDisplay.js +1 -1
  134. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
  135. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  136. package/es-modules/Extensions/Oldie/Oldie.js +2 -2
  137. package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
  138. package/es-modules/Extensions/Pane.js +3 -3
  139. package/es-modules/Extensions/ParallelCoordinates.js +1 -1
  140. package/es-modules/Extensions/PatternFill.js +14 -2
  141. package/es-modules/Extensions/RangeSelector.js +29 -18
  142. package/es-modules/Extensions/ScrollablePlotArea.js +8 -4
  143. package/es-modules/Extensions/{SeriesLabel.js → SeriesLabel/SeriesLabel.js} +262 -384
  144. package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +124 -0
  145. package/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +67 -0
  146. package/es-modules/Extensions/Sonification/Earcon.js +1 -1
  147. package/es-modules/Extensions/Stacking.js +5 -4
  148. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  149. package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
  150. package/es-modules/Maps/MapNavigation.js +49 -12
  151. package/es-modules/Maps/MapPointer.js +16 -0
  152. package/es-modules/Maps/MapUtilities.js +56 -0
  153. package/es-modules/Maps/MapView.js +619 -137
  154. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
  155. package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
  156. package/es-modules/Maps/Projection.js +182 -88
  157. package/es-modules/Maps/Projections/EqualEarth.js +15 -6
  158. package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
  159. package/es-modules/Maps/Projections/Miller.js +23 -10
  160. package/es-modules/Maps/Projections/Orthographic.js +21 -10
  161. package/es-modules/Maps/Projections/WebMercator.js +25 -13
  162. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +79 -0
  163. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +591 -0
  164. package/es-modules/Series/Area/AreaSeries.js +21 -14
  165. package/es-modules/Series/AreaRange/AreaRangePoint.js +24 -11
  166. package/es-modules/Series/AreaRange/AreaRangeSeries.js +154 -147
  167. package/es-modules/Series/AreaSpline/AreaSplineSeries.js +45 -41
  168. package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +43 -43
  169. package/es-modules/Series/Bar/BarSeries.js +3 -1
  170. package/es-modules/Series/Bellcurve/BellcurveSeries.js +3 -1
  171. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +4 -2
  172. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
  173. package/es-modules/Series/Bubble/BubblePoint.js +3 -1
  174. package/es-modules/Series/Bubble/BubbleSeries.js +15 -6
  175. package/es-modules/Series/Bullet/BulletPoint.js +3 -1
  176. package/es-modules/Series/Bullet/BulletSeries.js +4 -3
  177. package/es-modules/Series/Candlestick/CandlestickSeries.js +5 -3
  178. package/es-modules/Series/CenteredUtilities.js +8 -2
  179. package/es-modules/Series/ColorMapComposition.js +111 -0
  180. package/es-modules/Series/Column/ColumnSeries.js +10 -7
  181. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +3 -1
  182. package/es-modules/Series/ColumnRange/ColumnRangePoint.js +17 -13
  183. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +60 -57
  184. package/es-modules/Series/Cylinder/CylinderPoint.js +3 -1
  185. package/es-modules/Series/Cylinder/CylinderSeries.js +3 -1
  186. package/es-modules/Series/DataModifyComposition.js +1 -0
  187. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
  188. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +5 -3
  189. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -1
  190. package/es-modules/Series/DrawPointUtilities.js +87 -0
  191. package/es-modules/Series/Dumbbell/DumbbellPoint.js +3 -1
  192. package/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
  193. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +4 -2
  194. package/es-modules/Series/Flags/FlagsPoint.js +4 -1
  195. package/es-modules/Series/Flags/FlagsSeries.js +13 -16
  196. package/es-modules/Series/Funnel/FunnelSeries.js +5 -3
  197. package/es-modules/Series/Funnel3D/Funnel3DPoint.js +3 -1
  198. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +3 -1
  199. package/es-modules/Series/Gantt/GanttPoint.js +3 -1
  200. package/es-modules/Series/Gantt/GanttSeries.js +3 -1
  201. package/es-modules/Series/Gauge/GaugePoint.js +3 -1
  202. package/es-modules/Series/Gauge/GaugeSeries.js +196 -174
  203. package/es-modules/Series/HLC/HLCPoint.js +3 -1
  204. package/es-modules/Series/HLC/HLCSeries.js +4 -2
  205. package/es-modules/Series/Heatmap/HeatmapPoint.js +7 -5
  206. package/es-modules/Series/Heatmap/HeatmapSeries.js +29 -33
  207. package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
  208. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -1
  209. package/es-modules/Series/Histogram/HistogramSeries.js +3 -1
  210. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +3 -1
  211. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +11 -9
  212. package/es-modules/Series/Item/ItemPoint.js +3 -1
  213. package/es-modules/Series/Item/ItemSeries.js +3 -1
  214. package/es-modules/Series/Line/LineSeries.js +4 -2
  215. package/es-modules/Series/Lollipop/LollipopPoint.js +3 -1
  216. package/es-modules/Series/Lollipop/LollipopSeries.js +4 -2
  217. package/es-modules/Series/Map/MapPoint.js +32 -7
  218. package/es-modules/Series/Map/MapSeries.js +298 -189
  219. package/es-modules/Series/MapBubble/MapBubblePoint.js +19 -25
  220. package/es-modules/Series/MapBubble/MapBubbleSeries.js +61 -2
  221. package/es-modules/Series/MapLine/MapLineSeries.js +18 -1
  222. package/es-modules/Series/MapPoint/MapPointPoint.js +6 -10
  223. package/es-modules/Series/MapPoint/MapPointSeries.js +50 -16
  224. package/es-modules/Series/Networkgraph/Networkgraph.js +3 -1
  225. package/es-modules/Series/NodesComposition.js +101 -49
  226. package/es-modules/Series/OHLC/OHLCPoint.js +3 -1
  227. package/es-modules/Series/OHLC/OHLCSeries.js +10 -1
  228. package/es-modules/Series/Organization/OrganizationPoint.js +71 -3
  229. package/es-modules/Series/Organization/OrganizationSeries.js +84 -28
  230. package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +0 -2
  231. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +3 -1
  232. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
  233. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -1
  234. package/es-modules/Series/Pie/PieDataLabel.js +4 -2
  235. package/es-modules/Series/Pie/PiePoint.js +15 -6
  236. package/es-modules/Series/Pie/PieSeries.js +51 -37
  237. package/es-modules/Series/Pie3D/Pie3DPoint.js +3 -1
  238. package/es-modules/Series/Pie3D/Pie3DSeries.js +22 -1
  239. package/es-modules/Series/PolarComposition.js +819 -0
  240. package/es-modules/Series/Polygon/PolygonSeries.js +3 -1
  241. package/es-modules/Series/Pyramid/PyramidSeries.js +3 -1
  242. package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +3 -1
  243. package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
  244. package/es-modules/Series/Sankey/SankeyPoint.js +40 -2
  245. package/es-modules/Series/Sankey/SankeySeries.js +35 -136
  246. package/es-modules/Series/Scatter/ScatterSeries.js +11 -6
  247. package/es-modules/Series/Scatter3D/Scatter3DPoint.js +3 -1
  248. package/es-modules/Series/Scatter3D/Scatter3DSeries.js +3 -1
  249. package/es-modules/Series/SeriesOnPointComposition.js +391 -0
  250. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +5 -3
  251. package/es-modules/Series/Spline/SplineSeries.js +13 -4
  252. package/es-modules/Series/Streamgraph/StreamgraphSeries.js +3 -1
  253. package/es-modules/Series/Sunburst/SunburstPoint.js +3 -3
  254. package/es-modules/Series/Sunburst/SunburstSeries.js +21 -5
  255. package/es-modules/Series/Tilemap/TilemapPoint.js +3 -1
  256. package/es-modules/Series/Tilemap/TilemapSeries.js +3 -1
  257. package/es-modules/Series/Timeline/TimelinePoint.js +3 -1
  258. package/es-modules/Series/Timeline/TimelineSeries.js +6 -4
  259. package/es-modules/Series/Treemap/TreemapPoint.js +8 -4
  260. package/es-modules/Series/Treemap/TreemapSeries.js +97 -87
  261. package/es-modules/Series/VariablePie/VariablePieSeries.js +3 -1
  262. package/es-modules/Series/Variwide/VariwidePoint.js +3 -1
  263. package/es-modules/Series/Variwide/VariwideSeries.js +3 -1
  264. package/es-modules/Series/Vector/VectorSeries.js +3 -1
  265. package/es-modules/Series/Venn/VennPoint.js +5 -5
  266. package/es-modules/Series/Venn/VennSeries.js +9 -6
  267. package/es-modules/Series/Waterfall/WaterfallPoint.js +3 -1
  268. package/es-modules/Series/Waterfall/WaterfallSeries.js +16 -12
  269. package/es-modules/Series/Windbarb/WindbarbPoint.js +3 -1
  270. package/es-modules/Series/Windbarb/WindbarbSeries.js +3 -1
  271. package/es-modules/Series/Wordcloud/WordcloudPoint.js +6 -6
  272. package/es-modules/Series/Wordcloud/WordcloudSeries.js +11 -8
  273. package/es-modules/Series/XRange/XRangePoint.js +3 -1
  274. package/es-modules/Series/XRange/XRangeSeries.js +3 -1
  275. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -1
  276. package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
  277. package/es-modules/Stock/Indicators/AO/AOIndicator.js +5 -3
  278. package/es-modules/Stock/Indicators/APO/APOIndicator.js +3 -1
  279. package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +3 -1
  280. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -1
  281. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +3 -1
  282. package/es-modules/Stock/Indicators/BB/BBIndicator.js +6 -4
  283. package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +3 -1
  284. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +3 -1
  285. package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +3 -1
  286. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +3 -1
  287. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +3 -1
  288. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +13 -7
  289. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +3 -1
  290. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -1
  291. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +3 -1
  292. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +3 -1
  293. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +3 -1
  294. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +3 -1
  295. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +3 -1
  296. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +3 -1
  297. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +3 -1
  298. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +3 -1
  299. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +26 -13
  300. package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +3 -1
  301. package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +3 -1
  302. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +85 -95
  303. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +3 -1
  304. package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +3 -1
  305. package/es-modules/Stock/Indicators/PC/PCIndicator.js +3 -1
  306. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +3 -1
  307. package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +3 -1
  308. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +3 -1
  309. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +3 -1
  310. package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +3 -1
  311. package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +3 -1
  312. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +3 -1
  313. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +12 -3
  314. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +3 -1
  315. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +3 -1
  316. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +6 -4
  317. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +3 -1
  318. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +3 -1
  319. package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +3 -1
  320. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +3 -1
  321. package/es-modules/Stock/Indicators/VBP/VBPPoint.js +3 -1
  322. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +3 -1
  323. package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +3 -1
  324. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +3 -1
  325. package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +3 -1
  326. package/es-modules/Stock/StockToolsBindings.js +51 -43
  327. package/es-modules/Stock/StockToolsGui.js +1 -1
  328. package/es-modules/masters/highcharts-3d.src.js +1 -1
  329. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  330. package/es-modules/masters/highcharts-more.src.js +4 -4
  331. package/es-modules/masters/highcharts.src.js +1 -1
  332. package/es-modules/masters/highmaps.src.js +1 -1
  333. package/es-modules/masters/highstock.src.js +1 -1
  334. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  335. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  336. package/es-modules/masters/indicators/ao.src.js +1 -1
  337. package/es-modules/masters/indicators/apo.src.js +1 -1
  338. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  339. package/es-modules/masters/indicators/aroon.src.js +1 -1
  340. package/es-modules/masters/indicators/atr.src.js +1 -1
  341. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  342. package/es-modules/masters/indicators/cci.src.js +1 -1
  343. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  344. package/es-modules/masters/indicators/cmf.src.js +1 -1
  345. package/es-modules/masters/indicators/cmo.src.js +1 -1
  346. package/es-modules/masters/indicators/dema.src.js +1 -1
  347. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  348. package/es-modules/masters/indicators/dmi.src.js +1 -1
  349. package/es-modules/masters/indicators/dpo.src.js +1 -1
  350. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  351. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  352. package/es-modules/masters/indicators/indicators.src.js +1 -1
  353. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  354. package/es-modules/masters/indicators/klinger.src.js +1 -1
  355. package/es-modules/masters/indicators/macd.src.js +1 -1
  356. package/es-modules/masters/indicators/mfi.src.js +1 -1
  357. package/es-modules/masters/indicators/momentum.src.js +1 -1
  358. package/es-modules/masters/indicators/natr.src.js +1 -1
  359. package/es-modules/masters/indicators/obv.src.js +1 -1
  360. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  361. package/es-modules/masters/indicators/ppo.src.js +1 -1
  362. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  363. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  364. package/es-modules/masters/indicators/psar.src.js +1 -1
  365. package/es-modules/masters/indicators/regressions.src.js +1 -1
  366. package/es-modules/masters/indicators/roc.src.js +1 -1
  367. package/es-modules/masters/indicators/rsi.src.js +1 -1
  368. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  369. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  370. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  371. package/es-modules/masters/indicators/tema.src.js +1 -1
  372. package/es-modules/masters/indicators/trendline.src.js +1 -1
  373. package/es-modules/masters/indicators/trix.src.js +1 -1
  374. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  375. package/es-modules/masters/indicators/vwap.src.js +1 -1
  376. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  377. package/es-modules/masters/indicators/wma.src.js +1 -1
  378. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  379. package/es-modules/masters/modules/accessibility.src.js +1 -1
  380. package/es-modules/masters/modules/annotations-advanced.src.js +2 -2
  381. package/es-modules/masters/modules/annotations.src.js +2 -2
  382. package/es-modules/masters/modules/arc-diagram.src.js +14 -0
  383. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  384. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  385. package/es-modules/masters/modules/boost.src.js +1 -1
  386. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  387. package/es-modules/masters/modules/bullet.src.js +1 -1
  388. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  389. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  390. package/es-modules/masters/modules/cylinder.src.js +1 -1
  391. package/es-modules/masters/modules/data.src.js +2 -1
  392. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  393. package/es-modules/masters/modules/debugger.src.js +1 -1
  394. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  395. package/es-modules/masters/modules/dotplot.src.js +1 -1
  396. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  397. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  398. package/es-modules/masters/modules/drilldown.src.js +2 -1
  399. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  400. package/es-modules/masters/modules/export-data.src.js +1 -1
  401. package/es-modules/masters/modules/exporting.src.js +1 -1
  402. package/es-modules/masters/modules/full-screen.src.js +1 -1
  403. package/es-modules/masters/modules/funnel.src.js +1 -1
  404. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  405. package/es-modules/masters/modules/gantt.src.js +1 -1
  406. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  407. package/es-modules/masters/modules/heatmap.src.js +1 -1
  408. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  409. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  410. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  411. package/es-modules/masters/modules/item-series.src.js +1 -1
  412. package/es-modules/masters/modules/lollipop.src.js +1 -1
  413. package/es-modules/masters/modules/map.src.js +5 -1
  414. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  415. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  416. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  417. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  418. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  419. package/es-modules/masters/modules/oldie.src.js +1 -1
  420. package/es-modules/masters/modules/organization.src.js +1 -1
  421. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  422. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  423. package/es-modules/masters/modules/pareto.src.js +1 -1
  424. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  425. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  426. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  427. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  428. package/es-modules/masters/modules/sankey.src.js +1 -1
  429. package/es-modules/masters/modules/series-label.src.js +5 -2
  430. package/es-modules/masters/modules/series-on-point.src.js +16 -0
  431. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  432. package/es-modules/masters/modules/sonification.src.js +2 -6
  433. package/es-modules/masters/modules/static-scale.src.js +1 -1
  434. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  435. package/es-modules/masters/modules/stock.src.js +1 -1
  436. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  437. package/es-modules/masters/modules/sunburst.src.js +1 -1
  438. package/es-modules/masters/modules/tilemap.src.js +1 -1
  439. package/es-modules/masters/modules/timeline.src.js +1 -1
  440. package/es-modules/masters/modules/treegrid.src.js +1 -1
  441. package/es-modules/masters/modules/treemap.src.js +5 -1
  442. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  443. package/es-modules/masters/modules/variwide.src.js +1 -1
  444. package/es-modules/masters/modules/vector.src.js +1 -1
  445. package/es-modules/masters/modules/venn.src.js +1 -1
  446. package/es-modules/masters/modules/windbarb.src.js +1 -1
  447. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  448. package/es-modules/masters/modules/xrange.src.js +1 -1
  449. package/es-modules/masters/themes/avocado.src.js +1 -1
  450. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  451. package/es-modules/masters/themes/brand-light.src.js +1 -1
  452. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  453. package/es-modules/masters/themes/dark-green.src.js +1 -1
  454. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  455. package/es-modules/masters/themes/gray.src.js +1 -1
  456. package/es-modules/masters/themes/grid-light.src.js +1 -1
  457. package/es-modules/masters/themes/grid.src.js +1 -1
  458. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  459. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  460. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  461. package/es-modules/masters/themes/skies.src.js +1 -1
  462. package/es-modules/masters/themes/sunset.src.js +1 -1
  463. package/highcharts-3d.js +99 -98
  464. package/highcharts-3d.js.map +1 -1
  465. package/highcharts-3d.src.js +51 -21
  466. package/highcharts-gantt.js +811 -801
  467. package/highcharts-gantt.js.map +1 -1
  468. package/highcharts-gantt.src.js +2020 -1607
  469. package/highcharts-more.d.ts +10 -0
  470. package/highcharts-more.js +194 -194
  471. package/highcharts-more.js.map +1 -1
  472. package/highcharts-more.src.d.ts +10 -0
  473. package/highcharts-more.src.js +3512 -3364
  474. package/highcharts.d.ts +12336 -965
  475. package/highcharts.js +595 -586
  476. package/highcharts.js.map +1 -1
  477. package/highcharts.src.d.ts +12336 -965
  478. package/highcharts.src.js +1047 -665
  479. package/highmaps.js +763 -728
  480. package/highmaps.js.map +1 -1
  481. package/highmaps.src.js +4482 -2639
  482. package/highstock.js +798 -788
  483. package/highstock.js.map +1 -1
  484. package/highstock.src.js +1177 -739
  485. package/indicators/acceleration-bands.d.ts +1 -17
  486. package/indicators/acceleration-bands.js +11 -11
  487. package/indicators/acceleration-bands.js.map +1 -1
  488. package/indicators/acceleration-bands.src.d.ts +1 -17
  489. package/indicators/acceleration-bands.src.js +99 -100
  490. package/indicators/accumulation-distribution.js +5 -5
  491. package/indicators/accumulation-distribution.js.map +1 -1
  492. package/indicators/accumulation-distribution.src.js +11 -2
  493. package/indicators/ao.js +6 -6
  494. package/indicators/ao.js.map +1 -1
  495. package/indicators/ao.src.js +13 -4
  496. package/indicators/apo.js +5 -5
  497. package/indicators/apo.js.map +1 -1
  498. package/indicators/apo.src.js +11 -2
  499. package/indicators/aroon-oscillator.d.ts +1 -17
  500. package/indicators/aroon-oscillator.js +10 -10
  501. package/indicators/aroon-oscillator.js.map +1 -1
  502. package/indicators/aroon-oscillator.src.d.ts +1 -17
  503. package/indicators/aroon-oscillator.src.js +99 -100
  504. package/indicators/aroon.d.ts +1 -17
  505. package/indicators/aroon.js +11 -11
  506. package/indicators/aroon.js.map +1 -1
  507. package/indicators/aroon.src.d.ts +1 -17
  508. package/indicators/aroon.src.js +99 -100
  509. package/indicators/atr.js +5 -5
  510. package/indicators/atr.js.map +1 -1
  511. package/indicators/atr.src.js +11 -2
  512. package/indicators/bollinger-bands.d.ts +1 -17
  513. package/indicators/bollinger-bands.js +11 -12
  514. package/indicators/bollinger-bands.js.map +1 -1
  515. package/indicators/bollinger-bands.src.d.ts +1 -17
  516. package/indicators/bollinger-bands.src.js +102 -103
  517. package/indicators/cci.js +5 -5
  518. package/indicators/cci.js.map +1 -1
  519. package/indicators/cci.src.js +11 -2
  520. package/indicators/chaikin.js +8 -8
  521. package/indicators/chaikin.js.map +1 -1
  522. package/indicators/chaikin.src.js +11 -2
  523. package/indicators/cmf.js +6 -6
  524. package/indicators/cmf.js.map +1 -1
  525. package/indicators/cmf.src.js +11 -2
  526. package/indicators/cmo.js +5 -5
  527. package/indicators/cmo.js.map +1 -1
  528. package/indicators/cmo.src.js +11 -2
  529. package/indicators/dema.js +5 -5
  530. package/indicators/dema.js.map +1 -1
  531. package/indicators/dema.src.js +11 -2
  532. package/indicators/disparity-index.js +6 -6
  533. package/indicators/disparity-index.js.map +1 -1
  534. package/indicators/disparity-index.src.js +11 -2
  535. package/indicators/dmi.js +12 -12
  536. package/indicators/dmi.js.map +1 -1
  537. package/indicators/dmi.src.js +109 -106
  538. package/indicators/dpo.js +5 -5
  539. package/indicators/dpo.js.map +1 -1
  540. package/indicators/dpo.src.js +11 -2
  541. package/indicators/ema.js +2 -1
  542. package/indicators/ema.js.map +1 -1
  543. package/indicators/ema.src.js +10 -1
  544. package/indicators/ichimoku-kinko-hyo.js +16 -16
  545. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  546. package/indicators/ichimoku-kinko-hyo.src.js +11 -2
  547. package/indicators/indicators-all.d.ts +1 -17
  548. package/indicators/indicators-all.js +198 -196
  549. package/indicators/indicators-all.js.map +1 -1
  550. package/indicators/indicators-all.src.d.ts +1 -17
  551. package/indicators/indicators-all.src.js +151 -129
  552. package/indicators/indicators.js +13 -12
  553. package/indicators/indicators.js.map +1 -1
  554. package/indicators/indicators.src.js +21 -5
  555. package/indicators/keltner-channels.d.ts +1 -17
  556. package/indicators/keltner-channels.js +11 -11
  557. package/indicators/keltner-channels.js.map +1 -1
  558. package/indicators/keltner-channels.src.d.ts +1 -17
  559. package/indicators/keltner-channels.src.js +99 -100
  560. package/indicators/klinger.js +14 -14
  561. package/indicators/klinger.js.map +1 -1
  562. package/indicators/klinger.src.js +99 -100
  563. package/indicators/macd.js +13 -11
  564. package/indicators/macd.js.map +1 -1
  565. package/indicators/macd.src.js +35 -14
  566. package/indicators/mfi.js +6 -6
  567. package/indicators/mfi.js.map +1 -1
  568. package/indicators/mfi.src.js +11 -2
  569. package/indicators/momentum.js +5 -5
  570. package/indicators/momentum.js.map +1 -1
  571. package/indicators/momentum.src.js +11 -2
  572. package/indicators/natr.js +5 -4
  573. package/indicators/natr.js.map +1 -1
  574. package/indicators/natr.src.js +11 -2
  575. package/indicators/obv.js +5 -5
  576. package/indicators/obv.js.map +1 -1
  577. package/indicators/obv.src.js +11 -2
  578. package/indicators/pivot-points.js +11 -11
  579. package/indicators/pivot-points.js.map +1 -1
  580. package/indicators/pivot-points.src.js +11 -2
  581. package/indicators/ppo.js +5 -5
  582. package/indicators/ppo.js.map +1 -1
  583. package/indicators/ppo.src.js +11 -2
  584. package/indicators/price-channel.d.ts +1 -17
  585. package/indicators/price-channel.js +11 -11
  586. package/indicators/price-channel.js.map +1 -1
  587. package/indicators/price-channel.src.d.ts +1 -17
  588. package/indicators/price-channel.src.js +99 -100
  589. package/indicators/price-envelopes.js +8 -8
  590. package/indicators/price-envelopes.js.map +1 -1
  591. package/indicators/price-envelopes.src.js +11 -2
  592. package/indicators/psar.js +7 -6
  593. package/indicators/psar.js.map +1 -1
  594. package/indicators/psar.src.js +11 -2
  595. package/indicators/regressions.js +12 -12
  596. package/indicators/regressions.js.map +1 -1
  597. package/indicators/regressions.src.js +11 -2
  598. package/indicators/roc.js +5 -5
  599. package/indicators/roc.js.map +1 -1
  600. package/indicators/roc.src.js +11 -2
  601. package/indicators/rsi.js +6 -5
  602. package/indicators/rsi.js.map +1 -1
  603. package/indicators/rsi.src.js +11 -2
  604. package/indicators/slow-stochastic.js +5 -5
  605. package/indicators/slow-stochastic.js.map +1 -1
  606. package/indicators/slow-stochastic.src.js +11 -2
  607. package/indicators/stochastic.d.ts +1 -17
  608. package/indicators/stochastic.js +12 -12
  609. package/indicators/stochastic.js.map +1 -1
  610. package/indicators/stochastic.src.d.ts +1 -17
  611. package/indicators/stochastic.src.js +99 -100
  612. package/indicators/supertrend.js +10 -10
  613. package/indicators/supertrend.js.map +1 -1
  614. package/indicators/supertrend.src.js +14 -5
  615. package/indicators/tema.js +6 -6
  616. package/indicators/tema.js.map +1 -1
  617. package/indicators/tema.src.js +11 -2
  618. package/indicators/trendline.js +5 -5
  619. package/indicators/trendline.js.map +1 -1
  620. package/indicators/trendline.src.js +11 -2
  621. package/indicators/trix.js +4 -4
  622. package/indicators/trix.js.map +1 -1
  623. package/indicators/trix.src.js +11 -2
  624. package/indicators/volume-by-price.js +17 -17
  625. package/indicators/volume-by-price.js.map +1 -1
  626. package/indicators/volume-by-price.src.js +11 -2
  627. package/indicators/vwap.js +5 -5
  628. package/indicators/vwap.js.map +1 -1
  629. package/indicators/vwap.src.js +11 -2
  630. package/indicators/williams-r.js +6 -5
  631. package/indicators/williams-r.js.map +1 -1
  632. package/indicators/williams-r.src.js +11 -2
  633. package/indicators/wma.js +5 -5
  634. package/indicators/wma.js.map +1 -1
  635. package/indicators/wma.src.js +11 -2
  636. package/indicators/zigzag.js +6 -6
  637. package/indicators/zigzag.js.map +1 -1
  638. package/indicators/zigzag.src.js +11 -2
  639. package/lib/jspdf.js +299 -184
  640. package/lib/jspdf.src.js +25266 -18067
  641. package/lib/svg2pdf.js +35 -31
  642. package/lib/svg2pdf.src.js +5721 -4179
  643. package/modules/accessibility.js +242 -237
  644. package/modules/accessibility.js.map +1 -1
  645. package/modules/accessibility.src.js +599 -390
  646. package/modules/annotations-advanced.js +192 -192
  647. package/modules/annotations-advanced.js.map +1 -1
  648. package/modules/annotations-advanced.src.js +96 -47
  649. package/modules/annotations.js +126 -126
  650. package/modules/annotations.js.map +1 -1
  651. package/modules/annotations.src.js +67 -25
  652. package/modules/arc-diagram.js +25 -0
  653. package/modules/arc-diagram.js.map +1 -0
  654. package/modules/arc-diagram.src.js +778 -0
  655. package/modules/arrow-symbols.js +4 -3
  656. package/modules/arrow-symbols.js.map +1 -1
  657. package/modules/arrow-symbols.src.js +11 -2
  658. package/modules/boost-canvas.js +16 -15
  659. package/modules/boost-canvas.js.map +1 -1
  660. package/modules/boost-canvas.src.js +22 -7
  661. package/modules/boost.js +81 -79
  662. package/modules/boost.js.map +1 -1
  663. package/modules/boost.src.js +90 -51
  664. package/modules/broken-axis.js +13 -13
  665. package/modules/broken-axis.js.map +1 -1
  666. package/modules/broken-axis.src.js +11 -2
  667. package/modules/bullet.js +9 -9
  668. package/modules/bullet.js.map +1 -1
  669. package/modules/bullet.src.js +12 -6
  670. package/modules/coloraxis.js +24 -24
  671. package/modules/coloraxis.js.map +1 -1
  672. package/modules/coloraxis.src.js +37 -11
  673. package/modules/current-date-indicator.js +5 -4
  674. package/modules/current-date-indicator.js.map +1 -1
  675. package/modules/current-date-indicator.src.js +12 -3
  676. package/modules/cylinder.js +11 -11
  677. package/modules/cylinder.js.map +1 -1
  678. package/modules/cylinder.src.js +11 -2
  679. package/modules/data.d.ts +12 -12
  680. package/modules/data.js +33 -33
  681. package/modules/data.js.map +1 -1
  682. package/modules/data.src.d.ts +12 -12
  683. package/modules/data.src.js +906 -846
  684. package/modules/datagrouping.js +21 -20
  685. package/modules/datagrouping.js.map +1 -1
  686. package/modules/datagrouping.src.js +19 -5
  687. package/modules/debugger.js +8 -7
  688. package/modules/debugger.js.map +1 -1
  689. package/modules/debugger.src.js +15 -2
  690. package/modules/dependency-wheel.js +12 -11
  691. package/modules/dependency-wheel.js.map +1 -1
  692. package/modules/dependency-wheel.src.js +14 -5
  693. package/modules/dotplot.js +6 -6
  694. package/modules/dotplot.js.map +1 -1
  695. package/modules/dotplot.src.js +11 -2
  696. package/modules/drag-panes.js +10 -10
  697. package/modules/drag-panes.js.map +1 -1
  698. package/modules/drag-panes.src.js +12 -3
  699. package/modules/draggable-points.js +35 -34
  700. package/modules/draggable-points.js.map +1 -1
  701. package/modules/draggable-points.src.js +20 -9
  702. package/modules/drilldown.d.ts +19 -0
  703. package/modules/drilldown.js +37 -25
  704. package/modules/drilldown.js.map +1 -1
  705. package/modules/drilldown.src.d.ts +19 -0
  706. package/modules/drilldown.src.js +1124 -108
  707. package/modules/dumbbell.d.ts +4 -0
  708. package/modules/dumbbell.js +17 -17
  709. package/modules/dumbbell.js.map +1 -1
  710. package/modules/dumbbell.src.d.ts +4 -0
  711. package/modules/dumbbell.src.js +34 -13
  712. package/modules/export-data.js +24 -21
  713. package/modules/export-data.js.map +1 -1
  714. package/modules/export-data.src.js +87 -14
  715. package/modules/exporting.d.ts +8 -8
  716. package/modules/exporting.js +39 -39
  717. package/modules/exporting.js.map +1 -1
  718. package/modules/exporting.src.d.ts +8 -8
  719. package/modules/exporting.src.js +270 -135
  720. package/modules/full-screen.js +8 -7
  721. package/modules/full-screen.js.map +1 -1
  722. package/modules/full-screen.src.js +135 -58
  723. package/modules/funnel.js +12 -12
  724. package/modules/funnel.js.map +1 -1
  725. package/modules/funnel.src.js +13 -4
  726. package/modules/funnel3d.js +21 -21
  727. package/modules/funnel3d.js.map +1 -1
  728. package/modules/funnel3d.src.js +11 -2
  729. package/modules/gantt.js +218 -217
  730. package/modules/gantt.js.map +1 -1
  731. package/modules/gantt.src.js +983 -943
  732. package/modules/grid-axis.js +23 -23
  733. package/modules/grid-axis.js.map +1 -1
  734. package/modules/grid-axis.src.js +900 -890
  735. package/modules/heatmap.js +40 -39
  736. package/modules/heatmap.js.map +1 -1
  737. package/modules/heatmap.src.js +160 -113
  738. package/modules/heikinashi.js +8 -8
  739. package/modules/heikinashi.js.map +1 -1
  740. package/modules/heikinashi.src.js +11 -2
  741. package/modules/histogram-bellcurve.js +13 -13
  742. package/modules/histogram-bellcurve.js.map +1 -1
  743. package/modules/histogram-bellcurve.src.js +11 -2
  744. package/modules/hollowcandlestick.js +9 -9
  745. package/modules/hollowcandlestick.js.map +1 -1
  746. package/modules/hollowcandlestick.src.js +19 -10
  747. package/modules/item-series.js +12 -12
  748. package/modules/item-series.js.map +1 -1
  749. package/modules/item-series.src.js +11 -2
  750. package/modules/lollipop.js +7 -7
  751. package/modules/lollipop.js.map +1 -1
  752. package/modules/lollipop.src.js +12 -3
  753. package/modules/map.d.ts +80 -43
  754. package/modules/map.js +171 -144
  755. package/modules/map.js.map +1 -1
  756. package/modules/map.src.d.ts +80 -43
  757. package/modules/map.src.js +8292 -6822
  758. package/modules/marker-clusters.js +36 -36
  759. package/modules/marker-clusters.js.map +1 -1
  760. package/modules/marker-clusters.src.js +48 -28
  761. package/modules/networkgraph.d.ts +1 -12
  762. package/modules/networkgraph.js +46 -45
  763. package/modules/networkgraph.js.map +1 -1
  764. package/modules/networkgraph.src.d.ts +1 -12
  765. package/modules/networkgraph.src.js +127 -55
  766. package/modules/no-data-to-display.js +5 -5
  767. package/modules/no-data-to-display.js.map +1 -1
  768. package/modules/no-data-to-display.src.js +12 -3
  769. package/modules/offline-exporting.js +20 -18
  770. package/modules/offline-exporting.js.map +1 -1
  771. package/modules/offline-exporting.src.js +129 -28
  772. package/modules/oldie-polyfills.js +7 -7
  773. package/modules/oldie-polyfills.js.map +1 -1
  774. package/modules/oldie-polyfills.src.js +11 -2
  775. package/modules/oldie.js +30 -30
  776. package/modules/oldie.js.map +1 -1
  777. package/modules/oldie.src.js +13 -4
  778. package/modules/organization.js +16 -14
  779. package/modules/organization.js.map +1 -1
  780. package/modules/organization.src.js +168 -34
  781. package/modules/overlapping-datalabels.js +3 -2
  782. package/modules/overlapping-datalabels.js.map +1 -1
  783. package/modules/overlapping-datalabels.src.js +11 -2
  784. package/modules/parallel-coordinates.js +11 -11
  785. package/modules/parallel-coordinates.js.map +1 -1
  786. package/modules/parallel-coordinates.src.js +12 -3
  787. package/modules/pareto.js +7 -7
  788. package/modules/pareto.js.map +1 -1
  789. package/modules/pareto.src.js +11 -2
  790. package/modules/pathfinder.js +31 -31
  791. package/modules/pathfinder.js.map +1 -1
  792. package/modules/pathfinder.src.js +11 -2
  793. package/modules/pattern-fill.js +15 -14
  794. package/modules/pattern-fill.js.map +1 -1
  795. package/modules/pattern-fill.src.js +25 -3
  796. package/modules/price-indicator.js +5 -5
  797. package/modules/price-indicator.js.map +1 -1
  798. package/modules/price-indicator.src.js +11 -2
  799. package/modules/pyramid3d.js +4 -4
  800. package/modules/pyramid3d.js.map +1 -1
  801. package/modules/pyramid3d.src.js +11 -2
  802. package/modules/sankey.d.ts +1 -12
  803. package/modules/sankey.js +32 -29
  804. package/modules/sankey.js.map +1 -1
  805. package/modules/sankey.src.d.ts +1 -12
  806. package/modules/sankey.src.js +422 -207
  807. package/modules/series-label.js +18 -17
  808. package/modules/series-label.js.map +1 -1
  809. package/modules/series-label.src.js +482 -386
  810. package/modules/series-on-point.js +18 -0
  811. package/modules/series-on-point.js.map +1 -0
  812. package/modules/series-on-point.src.js +464 -0
  813. package/modules/solid-gauge.js +10 -10
  814. package/modules/solid-gauge.js.map +1 -1
  815. package/modules/solid-gauge.src.js +15 -6
  816. package/modules/sonification.js +59 -59
  817. package/modules/sonification.js.map +1 -1
  818. package/modules/sonification.src.js +13 -8
  819. package/modules/static-scale.js +5 -4
  820. package/modules/static-scale.js.map +1 -1
  821. package/modules/static-scale.src.js +11 -2
  822. package/modules/stock-tools.js +167 -167
  823. package/modules/stock-tools.js.map +1 -1
  824. package/modules/stock-tools.src.js +118 -67
  825. package/modules/stock.js +205 -204
  826. package/modules/stock.js.map +1 -1
  827. package/modules/stock.src.js +141 -76
  828. package/modules/streamgraph.js +5 -4
  829. package/modules/streamgraph.js.map +1 -1
  830. package/modules/streamgraph.src.js +11 -2
  831. package/modules/sunburst.d.ts +3 -0
  832. package/modules/sunburst.js +73 -60
  833. package/modules/sunburst.js.map +1 -1
  834. package/modules/sunburst.src.d.ts +3 -0
  835. package/modules/sunburst.src.js +1391 -406
  836. package/modules/tilemap.js +17 -17
  837. package/modules/tilemap.js.map +1 -1
  838. package/modules/tilemap.src.js +11 -2
  839. package/modules/timeline.js +18 -18
  840. package/modules/timeline.js.map +1 -1
  841. package/modules/timeline.src.js +14 -5
  842. package/modules/treegrid.js +57 -56
  843. package/modules/treegrid.js.map +1 -1
  844. package/modules/treegrid.src.js +913 -892
  845. package/modules/treemap.d.ts +3 -0
  846. package/modules/treemap.js +54 -41
  847. package/modules/treemap.js.map +1 -1
  848. package/modules/treemap.src.d.ts +3 -0
  849. package/modules/treemap.src.js +1229 -255
  850. package/modules/variable-pie.js +9 -9
  851. package/modules/variable-pie.js.map +1 -1
  852. package/modules/variable-pie.src.js +11 -2
  853. package/modules/variwide.js +12 -12
  854. package/modules/variwide.js.map +1 -1
  855. package/modules/variwide.src.js +11 -2
  856. package/modules/vector.js +8 -7
  857. package/modules/vector.js.map +1 -1
  858. package/modules/vector.src.js +11 -2
  859. package/modules/venn.js +31 -31
  860. package/modules/venn.js.map +1 -1
  861. package/modules/venn.src.js +88 -105
  862. package/modules/windbarb.js +15 -15
  863. package/modules/windbarb.js.map +1 -1
  864. package/modules/windbarb.src.js +11 -2
  865. package/modules/wordcloud.js +23 -23
  866. package/modules/wordcloud.js.map +1 -1
  867. package/modules/wordcloud.src.js +92 -109
  868. package/modules/xrange.js +16 -16
  869. package/modules/xrange.js.map +1 -1
  870. package/modules/xrange.src.js +11 -2
  871. package/package.json +1 -1
  872. package/themes/avocado.js +4 -3
  873. package/themes/avocado.js.map +1 -1
  874. package/themes/avocado.src.js +11 -2
  875. package/themes/brand-dark.js +9 -8
  876. package/themes/brand-dark.js.map +1 -1
  877. package/themes/brand-dark.src.js +11 -2
  878. package/themes/brand-light.js +8 -8
  879. package/themes/brand-light.js.map +1 -1
  880. package/themes/brand-light.src.js +11 -2
  881. package/themes/dark-blue.js +9 -8
  882. package/themes/dark-blue.js.map +1 -1
  883. package/themes/dark-blue.src.js +11 -2
  884. package/themes/dark-green.js +9 -8
  885. package/themes/dark-green.js.map +1 -1
  886. package/themes/dark-green.src.js +11 -2
  887. package/themes/dark-unica.js +8 -7
  888. package/themes/dark-unica.js.map +1 -1
  889. package/themes/dark-unica.src.js +11 -2
  890. package/themes/gray.js +9 -8
  891. package/themes/gray.js.map +1 -1
  892. package/themes/gray.src.js +11 -2
  893. package/themes/grid-light.js +5 -4
  894. package/themes/grid-light.js.map +1 -1
  895. package/themes/grid-light.src.js +11 -2
  896. package/themes/grid.js +5 -5
  897. package/themes/grid.js.map +1 -1
  898. package/themes/grid.src.js +11 -2
  899. package/themes/high-contrast-dark.js +7 -7
  900. package/themes/high-contrast-dark.js.map +1 -1
  901. package/themes/high-contrast-dark.src.js +21 -12
  902. package/themes/high-contrast-light.js +3 -3
  903. package/themes/high-contrast-light.js.map +1 -1
  904. package/themes/high-contrast-light.src.js +21 -12
  905. package/themes/sand-signika.js +5 -5
  906. package/themes/sand-signika.js.map +1 -1
  907. package/themes/sand-signika.src.js +11 -2
  908. package/themes/skies.js +5 -5
  909. package/themes/skies.js.map +1 -1
  910. package/themes/skies.src.js +11 -2
  911. package/themes/sunset.js +3 -3
  912. package/themes/sunset.js.map +1 -1
  913. package/themes/sunset.src.js +11 -2
  914. package/es-modules/Extensions/Polar.js +0 -740
  915. package/es-modules/Maps/ProjectionDefinition.js +0 -9
  916. package/es-modules/Series/ColorMapMixin.js +0 -84
  917. package/es-modules/Series/DrawPointComposition.js +0 -111
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts Gantt JS v9.3.3 (2022-02-01)
2
+ * @license Highcharts Gantt JS v10.2.0 (2022-07-05)
3
3
  *
4
4
  * GridAxis
5
5
  *
@@ -7,7 +7,6 @@
7
7
  *
8
8
  * License: www.highcharts.com/license
9
9
  */
10
- 'use strict';
11
10
  (function (factory) {
12
11
  if (typeof module === 'object' && module.exports) {
13
12
  factory['default'] = factory;
@@ -22,10 +21,20 @@
22
21
  factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
23
22
  }
24
23
  }(function (Highcharts) {
24
+ 'use strict';
25
25
  var _modules = Highcharts ? Highcharts._modules : {};
26
26
  function _registerModule(obj, path, args, fn) {
27
27
  if (!obj.hasOwnProperty(path)) {
28
28
  obj[path] = fn.apply(null, args);
29
+
30
+ if (typeof CustomEvent === 'function') {
31
+ window.dispatchEvent(
32
+ new CustomEvent(
33
+ 'HighchartsModuleLoaded',
34
+ { detail: { path: path, module: obj[path] }
35
+ })
36
+ );
37
+ }
29
38
  }
30
39
  }
31
40
  _registerModule(_modules, 'Core/Axis/GridAxis.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Axis/AxisDefaults.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Axis, AxisDefaults, H, U) {
@@ -50,19 +59,49 @@
50
59
  pick = U.pick,
51
60
  timeUnits = U.timeUnits,
52
61
  wrap = U.wrap;
62
+ /* *
63
+ *
64
+ * Enums
65
+ *
66
+ * */
67
+ /**
68
+ * Enum for which side the axis is on. Maps to axis.side.
69
+ * @private
70
+ */
71
+ var GridAxisSide;
72
+ (function (GridAxisSide) {
73
+ GridAxisSide[GridAxisSide["top"] = 0] = "top";
74
+ GridAxisSide[GridAxisSide["right"] = 1] = "right";
75
+ GridAxisSide[GridAxisSide["bottom"] = 2] = "bottom";
76
+ GridAxisSide[GridAxisSide["left"] = 3] = "left";
77
+ })(GridAxisSide || (GridAxisSide = {}));
78
+ /* *
79
+ *
80
+ * Constants
81
+ *
82
+ * */
83
+ var composedClasses = [];
53
84
  /* *
54
85
  *
55
86
  * Functions
56
87
  *
57
88
  * */
58
- /* eslint-disable require-jsdoc */
89
+ /**
90
+ * @private
91
+ */
59
92
  function argsToArray(args) {
60
93
  return Array.prototype.slice.call(args, 1);
61
94
  }
95
+ /**
96
+ * @private
97
+ */
62
98
  function isObject(x) {
63
99
  // Always use strict mode
64
100
  return U.isObject(x, true);
65
101
  }
102
+ /**
103
+ * @private
104
+ */
66
105
  function applyGridOptions(axis) {
67
106
  var options = axis.options;
68
107
  // Center-align by default
@@ -87,960 +126,925 @@
87
126
  options.labels.rotation = 0;
88
127
  }
89
128
  /**
90
- * Axis with grid support.
129
+ * Extends axis class with grid support.
91
130
  * @private
92
131
  */
93
- var GridAxis;
94
- (function (GridAxis) {
95
- /* *
96
- *
97
- * Declarations
98
- *
99
- * */
100
- /**
101
- * Enum for which side the axis is on. Maps to axis.side.
102
- * @private
103
- */
104
- var Side;
105
- (function (Side) {
106
- Side[Side["top"] = 0] = "top";
107
- Side[Side["right"] = 1] = "right";
108
- Side[Side["bottom"] = 2] = "bottom";
109
- Side[Side["left"] = 3] = "left";
110
- })(Side = GridAxis.Side || (GridAxis.Side = {}));
111
- /* *
112
- *
113
- * Functions
114
- *
115
- * */
116
- /* eslint-disable valid-jsdoc */
117
- /**
118
- * Extends axis class with grid support.
119
- * @private
120
- */
121
- function compose(AxisClass, ChartClass, TickClass) {
122
- if (AxisClass.keepProps.indexOf('grid') === -1) {
123
- AxisClass.keepProps.push('grid');
124
- AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
125
- wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
126
- // Add event handlers
127
- addEvent(AxisClass, 'init', onInit);
128
- addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
129
- addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
130
- addEvent(AxisClass, 'afterInit', onAfterInit);
131
- addEvent(AxisClass, 'afterRender', onAfterRender);
132
- addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
133
- addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
134
- addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
135
- addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
136
- addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
137
- addEvent(AxisClass, 'trimTicks', onTrimTicks);
138
- addEvent(AxisClass, 'destroy', onDestroy);
139
- }
132
+ function compose(AxisClass, ChartClass, TickClass) {
133
+ if (composedClasses.indexOf(AxisClass) === -1) {
134
+ composedClasses.push(AxisClass);
135
+ AxisClass.keepProps.push('grid');
136
+ AxisClass.prototype.getMaxLabelDimensions = getMaxLabelDimensions;
137
+ wrap(AxisClass.prototype, 'unsquish', wrapUnsquish);
138
+ // Add event handlers
139
+ addEvent(AxisClass, 'init', onInit);
140
+ addEvent(AxisClass, 'afterGetOffset', onAfterGetOffset);
141
+ addEvent(AxisClass, 'afterGetTitlePosition', onAfterGetTitlePosition);
142
+ addEvent(AxisClass, 'afterInit', onAfterInit);
143
+ addEvent(AxisClass, 'afterRender', onAfterRender);
144
+ addEvent(AxisClass, 'afterSetAxisTranslation', onAfterSetAxisTranslation);
145
+ addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions);
146
+ addEvent(AxisClass, 'afterSetOptions', onAfterSetOptions2);
147
+ addEvent(AxisClass, 'afterSetScale', onAfterSetScale);
148
+ addEvent(AxisClass, 'afterTickSize', onAfterTickSize);
149
+ addEvent(AxisClass, 'trimTicks', onTrimTicks);
150
+ addEvent(AxisClass, 'destroy', onDestroy);
151
+ }
152
+ if (composedClasses.indexOf(ChartClass) === -1) {
140
153
  addEvent(ChartClass, 'afterSetChartSize', onChartAfterSetChartSize);
154
+ }
155
+ if (composedClasses.indexOf(TickClass) === -1) {
141
156
  addEvent(TickClass, 'afterGetLabelPosition', onTickAfterGetLabelPosition);
142
157
  addEvent(TickClass, 'labelFormat', onTickLabelFormat);
143
- return AxisClass;
144
158
  }
145
- GridAxis.compose = compose;
146
- /**
147
- * Get the largest label width and height.
148
- *
149
- * @private
150
- * @function Highcharts.Axis#getMaxLabelDimensions
151
- *
152
- * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
153
- * All the ticks on one axis.
154
- *
155
- * @param {Array<number|string>} tickPositions
156
- * All the tick positions on one axis.
157
- *
158
- * @return {Highcharts.SizeObject}
159
- * Object containing the properties height and width.
160
- *
161
- * @todo Move this to the generic axis implementation, as it is used there.
162
- */
163
- function getMaxLabelDimensions(ticks, tickPositions) {
164
- var dimensions = {
165
- width: 0,
166
- height: 0
167
- };
168
- tickPositions.forEach(function (pos) {
169
- var tick = ticks[pos];
170
- var labelHeight = 0,
171
- labelWidth = 0,
172
- label;
173
- if (isObject(tick)) {
174
- label = isObject(tick.label) ? tick.label : {};
175
- // Find width and height of label
176
- labelHeight = label.getBBox ? label.getBBox().height : 0;
177
- if (label.textStr && !isNumber(label.textPxLength)) {
178
- label.textPxLength = label.getBBox().width;
179
- }
180
- labelWidth = isNumber(label.textPxLength) ?
181
- // Math.round ensures crisp lines
182
- Math.round(label.textPxLength) :
183
- 0;
184
- if (label.textStr) {
185
- // Set the tickWidth same as the label width after ellipsis
186
- // applied #10281
187
- labelWidth = Math.round(label.getBBox().width);
188
- }
189
- // Update the result if width and/or height are larger
190
- dimensions.height = Math.max(labelHeight, dimensions.height);
191
- dimensions.width = Math.max(labelWidth, dimensions.width);
159
+ return AxisClass;
160
+ }
161
+ /**
162
+ * Get the largest label width and height.
163
+ *
164
+ * @private
165
+ * @function Highcharts.Axis#getMaxLabelDimensions
166
+ *
167
+ * @param {Highcharts.Dictionary<Highcharts.Tick>} ticks
168
+ * All the ticks on one axis.
169
+ *
170
+ * @param {Array<number|string>} tickPositions
171
+ * All the tick positions on one axis.
172
+ *
173
+ * @return {Highcharts.SizeObject}
174
+ * Object containing the properties height and width.
175
+ *
176
+ * @todo Move this to the generic axis implementation, as it is used there.
177
+ */
178
+ function getMaxLabelDimensions(ticks, tickPositions) {
179
+ var dimensions = {
180
+ width: 0,
181
+ height: 0
182
+ };
183
+ tickPositions.forEach(function (pos) {
184
+ var tick = ticks[pos];
185
+ var labelHeight = 0,
186
+ labelWidth = 0,
187
+ label;
188
+ if (isObject(tick)) {
189
+ label = isObject(tick.label) ? tick.label : {};
190
+ // Find width and height of label
191
+ labelHeight = label.getBBox ? label.getBBox().height : 0;
192
+ if (label.textStr && !isNumber(label.textPxLength)) {
193
+ label.textPxLength = label.getBBox().width;
192
194
  }
193
- });
194
- // For tree grid, add indentation
195
- if (this.options.type === 'treegrid' &&
196
- this.treeGrid &&
197
- this.treeGrid.mapOfPosToGridNode) {
198
- var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
199
- dimensions.width += (this.options.labels.indentation *
200
- (treeDepth - 1));
195
+ labelWidth = isNumber(label.textPxLength) ?
196
+ // Math.round ensures crisp lines
197
+ Math.round(label.textPxLength) :
198
+ 0;
199
+ if (label.textStr) {
200
+ // Set the tickWidth same as the label width after ellipsis
201
+ // applied #10281
202
+ labelWidth = Math.round(label.getBBox().width);
203
+ }
204
+ // Update the result if width and/or height are larger
205
+ dimensions.height = Math.max(labelHeight, dimensions.height);
206
+ dimensions.width = Math.max(labelWidth, dimensions.width);
201
207
  }
202
- return dimensions;
208
+ });
209
+ // For tree grid, add indentation
210
+ if (this.options.type === 'treegrid' &&
211
+ this.treeGrid &&
212
+ this.treeGrid.mapOfPosToGridNode) {
213
+ var treeDepth = this.treeGrid.mapOfPosToGridNode[-1].height || 0;
214
+ dimensions.width += (this.options.labels.indentation *
215
+ (treeDepth - 1));
203
216
  }
204
- /**
205
- * Handle columns and getOffset.
206
- * @private
207
- */
208
- function onAfterGetOffset() {
209
- var grid = this.grid;
210
- (grid && grid.columns || []).forEach(function (column) {
211
- column.getOffset();
212
- });
217
+ return dimensions;
218
+ }
219
+ /**
220
+ * Handle columns and getOffset.
221
+ * @private
222
+ */
223
+ function onAfterGetOffset() {
224
+ var grid = this.grid;
225
+ (grid && grid.columns || []).forEach(function (column) {
226
+ column.getOffset();
227
+ });
228
+ }
229
+ /**
230
+ * @private
231
+ */
232
+ function onAfterGetTitlePosition(e) {
233
+ var axis = this;
234
+ var options = axis.options;
235
+ var gridOptions = options.grid || {};
236
+ if (gridOptions.enabled === true) {
237
+ // compute anchor points for each of the title align options
238
+ var axisTitle = axis.axisTitle,
239
+ axisHeight = axis.height,
240
+ horiz = axis.horiz,
241
+ axisLeft = axis.left,
242
+ offset = axis.offset,
243
+ opposite = axis.opposite,
244
+ options_1 = axis.options,
245
+ axisTop = axis.top,
246
+ axisWidth = axis.width;
247
+ var tickSize = axis.tickSize();
248
+ var titleWidth = axisTitle && axisTitle.getBBox().width;
249
+ var xOption = options_1.title.x;
250
+ var yOption = options_1.title.y;
251
+ var titleMargin = pick(options_1.title.margin,
252
+ horiz ? 5 : 10);
253
+ var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize,
254
+ axisTitle).f;
255
+ var crispCorr = tickSize ? tickSize[0] / 2 : 0;
256
+ // TODO account for alignment
257
+ // the position in the perpendicular direction of the axis
258
+ var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
259
+ (horiz ? 1 : -1) * // horizontal axis reverses the margin
260
+ (opposite ? -1 : 1) * // so does opposite axes
261
+ crispCorr +
262
+ (axis.side === GridAxisSide.bottom ? titleFontSize : 0));
263
+ e.titlePosition.x = horiz ?
264
+ axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
265
+ offAxis + (opposite ? axisWidth : 0) + offset + xOption;
266
+ e.titlePosition.y = horiz ?
267
+ (offAxis -
268
+ (opposite ? axisHeight : 0) +
269
+ (opposite ? titleFontSize : -titleFontSize) / 2 +
270
+ offset +
271
+ yOption) :
272
+ axisTop - titleMargin + yOption;
213
273
  }
214
- /**
215
- * @private
216
- */
217
- function onAfterGetTitlePosition(e) {
218
- var axis = this;
219
- var options = axis.options;
220
- var gridOptions = options.grid || {};
221
- if (gridOptions.enabled === true) {
222
- // compute anchor points for each of the title align options
223
- var axisTitle = axis.axisTitle,
224
- axisHeight = axis.height,
225
- horiz = axis.horiz,
226
- axisLeft = axis.left,
227
- offset = axis.offset,
228
- opposite = axis.opposite,
229
- options_1 = axis.options,
230
- axisTop = axis.top,
231
- axisWidth = axis.width;
232
- var tickSize = axis.tickSize();
233
- var titleWidth = axisTitle && axisTitle.getBBox().width;
234
- var xOption = options_1.title.x;
235
- var yOption = options_1.title.y;
236
- var titleMargin = pick(options_1.title.margin,
237
- horiz ? 5 : 10);
238
- var titleFontSize = axis.chart.renderer.fontMetrics(options_1.title.style.fontSize,
239
- axisTitle).f;
240
- var crispCorr = tickSize ? tickSize[0] / 2 : 0;
241
- // TODO account for alignment
242
- // the position in the perpendicular direction of the axis
243
- var offAxis = ((horiz ? axisTop + axisHeight : axisLeft) +
244
- (horiz ? 1 : -1) * // horizontal axis reverses the margin
245
- (opposite ? -1 : 1) * // so does opposite axes
246
- crispCorr +
247
- (axis.side === GridAxis.Side.bottom ? titleFontSize : 0));
248
- e.titlePosition.x = horiz ?
249
- axisLeft - (titleWidth || 0) / 2 - titleMargin + xOption :
250
- offAxis + (opposite ? axisWidth : 0) + offset + xOption;
251
- e.titlePosition.y = horiz ?
252
- (offAxis -
253
- (opposite ? axisHeight : 0) +
254
- (opposite ? titleFontSize : -titleFontSize) / 2 +
255
- offset +
256
- yOption) :
257
- axisTop - titleMargin + yOption;
258
- }
274
+ }
275
+ /**
276
+ * @private
277
+ */
278
+ function onAfterInit() {
279
+ var axis = this;
280
+ var chart = axis.chart,
281
+ _a = axis.options.grid,
282
+ gridOptions = _a === void 0 ? {} : _a,
283
+ userOptions = axis.userOptions;
284
+ if (gridOptions.enabled) {
285
+ applyGridOptions(axis);
259
286
  }
260
- /**
261
- * @private
262
- */
263
- function onAfterInit() {
264
- var axis = this;
265
- var chart = axis.chart,
266
- _a = axis.options.grid,
267
- gridOptions = _a === void 0 ? {} : _a,
268
- userOptions = axis.userOptions;
269
- if (gridOptions.enabled) {
270
- applyGridOptions(axis);
271
- }
272
- if (gridOptions.columns) {
273
- var columns = axis.grid.columns = [];
274
- var columnIndex = axis.grid.columnIndex = 0;
275
- // Handle columns, each column is a grid axis
276
- while (++columnIndex < gridOptions.columns.length) {
277
- var columnOptions = merge(userOptions,
278
- gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
279
- linkedTo: 0,
280
- // Force to behave like category axis
281
- type: 'category',
282
- // Disable by default the scrollbar on the grid axis
283
- scrollbar: {
284
- enabled: false
285
- }
286
- });
287
- delete columnOptions.grid.columns; // Prevent recursion
288
- var column = new Axis(axis.chart,
289
- columnOptions);
290
- column.grid.isColumn = true;
291
- column.grid.columnIndex = columnIndex;
292
- // Remove column axis from chart axes array, and place it
293
- // in the columns array.
294
- erase(chart.axes, column);
295
- erase(chart[axis.coll], column);
296
- columns.push(column);
297
- }
287
+ if (gridOptions.columns) {
288
+ var columns = axis.grid.columns = [];
289
+ var columnIndex = axis.grid.columnIndex = 0;
290
+ // Handle columns, each column is a grid axis
291
+ while (++columnIndex < gridOptions.columns.length) {
292
+ var columnOptions = merge(userOptions,
293
+ gridOptions.columns[gridOptions.columns.length - columnIndex - 1], {
294
+ linkedTo: 0,
295
+ // Force to behave like category axis
296
+ type: 'category',
297
+ // Disable by default the scrollbar on the grid axis
298
+ scrollbar: {
299
+ enabled: false
300
+ }
301
+ });
302
+ delete columnOptions.grid.columns; // Prevent recursion
303
+ var column = new Axis(axis.chart,
304
+ columnOptions);
305
+ column.grid.isColumn = true;
306
+ column.grid.columnIndex = columnIndex;
307
+ // Remove column axis from chart axes array, and place it
308
+ // in the columns array.
309
+ erase(chart.axes, column);
310
+ erase(chart[axis.coll], column);
311
+ columns.push(column);
298
312
  }
299
313
  }
300
- /**
301
- * Draw an extra line on the far side of the outermost axis,
302
- * creating floor/roof/wall of a grid. And some padding.
303
- * ```
304
- * Make this:
305
- * (axis.min) __________________________ (axis.max)
306
- * | | | | |
307
- * Into this:
308
- * (axis.min) __________________________ (axis.max)
309
- * ___|____|____|____|____|__
310
- * ```
311
- * @private
312
- */
313
- function onAfterRender() {
314
- var axis = this,
315
- grid = axis.grid,
316
- options = axis.options,
317
- gridOptions = options.grid || {};
318
- if (gridOptions.enabled === true) {
319
- var min = axis.min || 0,
320
- max = axis.max || 0;
321
- // @todo acutual label padding (top, bottom, left, right)
322
- axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
323
- // Remove right wall before rendering if updating
324
- if (axis.rightWall) {
325
- axis.rightWall.destroy();
326
- }
327
- /*
328
- Draw an extra axis line on outer axes
329
- >
330
- Make this: |______|______|______|___
314
+ }
315
+ /**
316
+ * Draw an extra line on the far side of the outermost axis,
317
+ * creating floor/roof/wall of a grid. And some padding.
318
+ * ```
319
+ * Make this:
320
+ * (axis.min) __________________________ (axis.max)
321
+ * | | | | |
322
+ * Into this:
323
+ * (axis.min) __________________________ (axis.max)
324
+ * ___|____|____|____|____|__
325
+ * ```
326
+ * @private
327
+ */
328
+ function onAfterRender() {
329
+ var axis = this,
330
+ grid = axis.grid,
331
+ options = axis.options,
332
+ gridOptions = options.grid || {};
333
+ if (gridOptions.enabled === true) {
334
+ var min = axis.min || 0,
335
+ max = axis.max || 0;
336
+ // @todo acutual label padding (top, bottom, left, right)
337
+ axis.maxLabelDimensions = axis.getMaxLabelDimensions(axis.ticks, axis.tickPositions);
338
+ // Remove right wall before rendering if updating
339
+ if (axis.rightWall) {
340
+ axis.rightWall.destroy();
341
+ }
342
+ /*
343
+ Draw an extra axis line on outer axes
344
+ >
345
+ Make this: |______|______|______|___
331
346
 
332
- > _________________________
333
- Into this: |______|______|______|__|
334
- */
335
- if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
336
- var lineWidth = options.lineWidth;
337
- if (lineWidth) {
338
- var linePath = axis.getLinePath(lineWidth),
339
- startPoint = linePath[0],
340
- endPoint = linePath[1],
341
- // Negate distance if top or left axis
342
- // Subtract 1px to draw the line at the end of the tick
343
- tickLength = (axis.tickSize('tick') || [1])[0],
344
- distance = (tickLength - 1) * ((axis.side === GridAxis.Side.top ||
345
- axis.side === GridAxis.Side.left) ? -1 : 1);
346
- // If axis is horizontal, reposition line path vertically
347
- if (startPoint[0] === 'M' && endPoint[0] === 'L') {
348
- if (axis.horiz) {
349
- startPoint[2] += distance;
350
- endPoint[2] += distance;
351
- }
352
- else {
353
- startPoint[1] += distance;
354
- endPoint[1] += distance;
355
- }
347
+ > _________________________
348
+ Into this: |______|______|______|__|
349
+ */
350
+ if (axis.grid && axis.grid.isOuterAxis() && axis.axisLine) {
351
+ var lineWidth = options.lineWidth;
352
+ if (lineWidth) {
353
+ var linePath = axis.getLinePath(lineWidth),
354
+ startPoint = linePath[0],
355
+ endPoint = linePath[1],
356
+ // Negate distance if top or left axis
357
+ // Subtract 1px to draw the line at the end of the tick
358
+ tickLength = (axis.tickSize('tick') || [1])[0],
359
+ distance = (tickLength - 1) * ((axis.side === GridAxisSide.top ||
360
+ axis.side === GridAxisSide.left) ? -1 : 1);
361
+ // If axis is horizontal, reposition line path vertically
362
+ if (startPoint[0] === 'M' && endPoint[0] === 'L') {
363
+ if (axis.horiz) {
364
+ startPoint[2] += distance;
365
+ endPoint[2] += distance;
356
366
  }
357
- // If it doesn't exist, add an upper and lower border
358
- // for the vertical grid axis.
359
- if (!axis.horiz && axis.chart.marginRight) {
360
- var upperBorderStartPoint = startPoint,
361
- upperBorderEndPoint = [
362
- 'L',
363
- axis.left,
364
- startPoint[2] || 0
365
- ],
366
- upperBorderPath = [
367
- upperBorderStartPoint,
368
- upperBorderEndPoint
369
- ],
370
- lowerBorderEndPoint = [
371
- 'L',
372
- axis.chart.chartWidth - axis.chart.marginRight,
373
- axis.toPixels(max + axis.tickmarkOffset)
374
- ],
375
- lowerBorderStartPoint = [
376
- 'M',
377
- endPoint[1] || 0,
378
- axis.toPixels(max + axis.tickmarkOffset)
379
- ],
380
- lowerBorderPath = [
381
- lowerBorderStartPoint,
382
- lowerBorderEndPoint
383
- ];
384
- if (!axis.grid.upperBorder && min % 1 !== 0) {
385
- axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
386
- }
387
- if (axis.grid.upperBorder) {
388
- axis.grid.upperBorder.attr({
389
- stroke: options.lineColor,
390
- 'stroke-width': options.lineWidth
391
- });
392
- axis.grid.upperBorder.animate({
393
- d: upperBorderPath
394
- });
395
- }
396
- if (!axis.grid.lowerBorder && max % 1 !== 0) {
397
- axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
398
- }
399
- if (axis.grid.lowerBorder) {
400
- axis.grid.lowerBorder.attr({
401
- stroke: options.lineColor,
402
- 'stroke-width': options.lineWidth
403
- });
404
- axis.grid.lowerBorder.animate({
405
- d: lowerBorderPath
406
- });
407
- }
367
+ else {
368
+ startPoint[1] += distance;
369
+ endPoint[1] += distance;
408
370
  }
409
- // Render an extra line parallel to the existing axes, to
410
- // close the grid.
411
- if (!axis.grid.axisLineExtra) {
412
- axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
371
+ }
372
+ // If it doesn't exist, add an upper and lower border
373
+ // for the vertical grid axis.
374
+ if (!axis.horiz && axis.chart.marginRight) {
375
+ var upperBorderStartPoint = startPoint,
376
+ upperBorderEndPoint = [
377
+ 'L',
378
+ axis.left,
379
+ startPoint[2] || 0
380
+ ],
381
+ upperBorderPath = [
382
+ upperBorderStartPoint,
383
+ upperBorderEndPoint
384
+ ],
385
+ lowerBorderEndPoint = [
386
+ 'L',
387
+ axis.chart.chartWidth - axis.chart.marginRight,
388
+ axis.toPixels(max + axis.tickmarkOffset)
389
+ ],
390
+ lowerBorderStartPoint = [
391
+ 'M',
392
+ endPoint[1] || 0,
393
+ axis.toPixels(max + axis.tickmarkOffset)
394
+ ],
395
+ lowerBorderPath = [
396
+ lowerBorderStartPoint,
397
+ lowerBorderEndPoint
398
+ ];
399
+ if (!axis.grid.upperBorder && min % 1 !== 0) {
400
+ axis.grid.upperBorder = axis.grid.renderBorder(upperBorderPath);
413
401
  }
414
- else {
415
- axis.grid.axisLineExtra.attr({
402
+ if (axis.grid.upperBorder) {
403
+ axis.grid.upperBorder.attr({
404
+ stroke: options.lineColor,
405
+ 'stroke-width': options.lineWidth
406
+ });
407
+ axis.grid.upperBorder.animate({
408
+ d: upperBorderPath
409
+ });
410
+ }
411
+ if (!axis.grid.lowerBorder && max % 1 !== 0) {
412
+ axis.grid.lowerBorder = axis.grid.renderBorder(lowerBorderPath);
413
+ }
414
+ if (axis.grid.lowerBorder) {
415
+ axis.grid.lowerBorder.attr({
416
416
  stroke: options.lineColor,
417
417
  'stroke-width': options.lineWidth
418
418
  });
419
- axis.grid.axisLineExtra.animate({
420
- d: linePath
419
+ axis.grid.lowerBorder.animate({
420
+ d: lowerBorderPath
421
421
  });
422
422
  }
423
- // show or hide the line depending on options.showEmpty
424
- axis.axisLine[axis.showAxis ? 'show' : 'hide'](true);
425
423
  }
424
+ // Render an extra line parallel to the existing axes, to
425
+ // close the grid.
426
+ if (!axis.grid.axisLineExtra) {
427
+ axis.grid.axisLineExtra = axis.grid.renderBorder(linePath);
428
+ }
429
+ else {
430
+ axis.grid.axisLineExtra.attr({
431
+ stroke: options.lineColor,
432
+ 'stroke-width': options.lineWidth
433
+ });
434
+ axis.grid.axisLineExtra.animate({
435
+ d: linePath
436
+ });
437
+ }
438
+ // show or hide the line depending on options.showEmpty
439
+ axis.axisLine[axis.showAxis ? 'show' : 'hide']();
426
440
  }
427
- (grid && grid.columns || []).forEach(function (column) {
428
- column.render();
429
- });
430
- // Manipulate the tick mark visibility
431
- // based on the axis.max- allows smooth scrolling.
432
- if (!axis.horiz &&
433
- axis.chart.hasRendered &&
434
- (axis.scrollbar ||
435
- (axis.linkedParent && axis.linkedParent.scrollbar))) {
436
- var tickmarkOffset = axis.tickmarkOffset,
437
- lastTick = axis.tickPositions[axis.tickPositions.length - 1],
438
- firstTick = axis.tickPositions[0];
439
- var label = void 0;
440
- while ((label = axis.hiddenLabels.pop()) && label.element) {
441
- label.show(); // #15453
441
+ }
442
+ (grid && grid.columns || []).forEach(function (column) { return column.render(); });
443
+ // Manipulate the tick mark visibility
444
+ // based on the axis.max- allows smooth scrolling.
445
+ if (!axis.horiz &&
446
+ axis.chart.hasRendered &&
447
+ (axis.scrollbar ||
448
+ (axis.linkedParent && axis.linkedParent.scrollbar))) {
449
+ var tickmarkOffset = axis.tickmarkOffset,
450
+ lastTick = axis.tickPositions[axis.tickPositions.length - 1],
451
+ firstTick = axis.tickPositions[0];
452
+ var label = void 0,
453
+ tickMark = void 0;
454
+ while ((label = axis.hiddenLabels.pop()) && label.element) {
455
+ label.show(); // #15453
456
+ }
457
+ while ((tickMark = axis.hiddenMarks.pop()) &&
458
+ tickMark.element) {
459
+ tickMark.show(); // #16439
460
+ }
461
+ // Hide/show firts tick label.
462
+ label = axis.ticks[firstTick].label;
463
+ if (label) {
464
+ if (min - firstTick > tickmarkOffset) {
465
+ axis.hiddenLabels.push(label.hide());
442
466
  }
443
- // Hide/show firts tick label.
444
- label = axis.ticks[firstTick].label;
445
- if (label) {
446
- if (min - firstTick > tickmarkOffset) {
447
- axis.hiddenLabels.push(label.hide());
448
- }
449
- else {
450
- label.show();
451
- }
467
+ else {
468
+ label.show();
452
469
  }
453
- // Hide/show last tick mark/label.
454
- label = axis.ticks[lastTick].label;
455
- if (label) {
456
- if (lastTick - max > tickmarkOffset) {
457
- axis.hiddenLabels.push(label.hide());
458
- }
459
- else {
460
- label.show();
461
- }
470
+ }
471
+ // Hide/show last tick mark/label.
472
+ label = axis.ticks[lastTick].label;
473
+ if (label) {
474
+ if (lastTick - max > tickmarkOffset) {
475
+ axis.hiddenLabels.push(label.hide());
462
476
  }
463
- var mark = axis.ticks[lastTick].mark;
464
- if (mark) {
465
- if (lastTick - max < tickmarkOffset &&
466
- lastTick - max > 0 && axis.ticks[lastTick].isLast) {
467
- mark.hide();
468
- }
469
- else if (axis.ticks[lastTick - 1]) {
470
- mark.show();
471
- }
477
+ else {
478
+ label.show();
472
479
  }
473
480
  }
481
+ var mark = axis.ticks[lastTick].mark;
482
+ if (mark &&
483
+ lastTick - max < tickmarkOffset &&
484
+ lastTick - max > 0 && axis.ticks[lastTick].isLast) {
485
+ axis.hiddenMarks.push(mark.hide());
486
+ }
474
487
  }
475
488
  }
476
- /**
477
- * @private
478
- */
479
- function onAfterSetAxisTranslation() {
480
- var axis = this;
481
- var tickInfo = axis.tickPositions && axis.tickPositions.info;
482
- var options = axis.options;
483
- var gridOptions = options.grid || {};
484
- var userLabels = axis.userOptions.labels || {};
485
- // Fire this only for the Gantt type chart, #14868.
486
- if (gridOptions.enabled) {
487
- if (axis.horiz) {
488
- axis.series.forEach(function (series) {
489
- series.options.pointRange = 0;
490
- });
491
- // Lower level time ticks, like hours or minutes, represent
492
- // points in time and not ranges. These should be aligned
493
- // left in the grid cell by default. The same applies to
494
- // years of higher order.
495
- if (tickInfo &&
496
- options.dateTimeLabelFormats &&
497
- options.labels &&
498
- !defined(userLabels.align) &&
499
- (options.dateTimeLabelFormats[tickInfo.unitName]
500
- .range === false ||
501
- tickInfo.count > 1 // years
502
- )) {
503
- options.labels.align = 'left';
504
- if (!defined(userLabels.x)) {
505
- options.labels.x = 3;
506
- }
489
+ }
490
+ /**
491
+ * @private
492
+ */
493
+ function onAfterSetAxisTranslation() {
494
+ var axis = this;
495
+ var tickInfo = axis.tickPositions && axis.tickPositions.info;
496
+ var options = axis.options;
497
+ var gridOptions = options.grid || {};
498
+ var userLabels = axis.userOptions.labels || {};
499
+ // Fire this only for the Gantt type chart, #14868.
500
+ if (gridOptions.enabled) {
501
+ if (axis.horiz) {
502
+ axis.series.forEach(function (series) {
503
+ series.options.pointRange = 0;
504
+ });
505
+ // Lower level time ticks, like hours or minutes, represent
506
+ // points in time and not ranges. These should be aligned
507
+ // left in the grid cell by default. The same applies to
508
+ // years of higher order.
509
+ if (tickInfo &&
510
+ options.dateTimeLabelFormats &&
511
+ options.labels &&
512
+ !defined(userLabels.align) &&
513
+ (options.dateTimeLabelFormats[tickInfo.unitName]
514
+ .range === false ||
515
+ tickInfo.count > 1 // years
516
+ )) {
517
+ options.labels.align = 'left';
518
+ if (!defined(userLabels.x)) {
519
+ options.labels.x = 3;
507
520
  }
508
521
  }
509
- else {
510
- // Don't trim ticks which not in min/max range but
511
- // they are still in the min/max plus tickInterval.
512
- if (this.options.type !== 'treegrid' &&
513
- axis.grid &&
514
- axis.grid.columns) {
515
- this.minPointOffset = this.tickInterval;
516
- }
522
+ }
523
+ else {
524
+ // Don't trim ticks which not in min/max range but
525
+ // they are still in the min/max plus tickInterval.
526
+ if (this.options.type !== 'treegrid' &&
527
+ axis.grid &&
528
+ axis.grid.columns) {
529
+ this.minPointOffset = this.tickInterval;
517
530
  }
518
531
  }
519
532
  }
520
- /**
521
- * Creates a left and right wall on horizontal axes:
522
- * - Places leftmost tick at the start of the axis, to create a left
523
- * wall
524
- * - Ensures that the rightmost tick is at the end of the axis, to
525
- * create a right wall.
526
- * @private
527
- */
528
- function onAfterSetOptions(e) {
529
- var options = this.options,
530
- userOptions = e.userOptions,
531
- gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
532
- var gridAxisOptions;
533
- if (gridOptions.enabled === true) {
534
- // Merge the user options into default grid axis options so
535
- // that when a user option is set, it takes presedence.
536
- gridAxisOptions = merge(true, {
537
- className: ('highcharts-grid-axis ' + (userOptions.className || '')),
538
- dateTimeLabelFormats: {
539
- hour: {
540
- list: ['%H:%M', '%H']
541
- },
542
- day: {
543
- list: ['%A, %e. %B', '%a, %e. %b', '%E']
544
- },
545
- week: {
546
- list: ['Week %W', 'W%W']
547
- },
548
- month: {
549
- list: ['%B', '%b', '%o']
550
- }
551
- },
552
- grid: {
553
- borderWidth: 1
533
+ }
534
+ /**
535
+ * Creates a left and right wall on horizontal axes:
536
+ * - Places leftmost tick at the start of the axis, to create a left
537
+ * wall
538
+ * - Ensures that the rightmost tick is at the end of the axis, to
539
+ * create a right wall.
540
+ * @private
541
+ */
542
+ function onAfterSetOptions(e) {
543
+ var options = this.options,
544
+ userOptions = e.userOptions,
545
+ gridOptions = ((options && isObject(options.grid)) ? options.grid : {});
546
+ var gridAxisOptions;
547
+ if (gridOptions.enabled === true) {
548
+ // Merge the user options into default grid axis options so
549
+ // that when a user option is set, it takes presedence.
550
+ gridAxisOptions = merge(true, {
551
+ className: ('highcharts-grid-axis ' + (userOptions.className || '')),
552
+ dateTimeLabelFormats: {
553
+ hour: {
554
+ list: ['%H:%M', '%H']
554
555
  },
555
- labels: {
556
- padding: 2,
557
- style: {
558
- fontSize: '13px'
559
- }
556
+ day: {
557
+ list: ['%A, %e. %B', '%a, %e. %b', '%E']
560
558
  },
561
- margin: 0,
562
- title: {
563
- text: null,
564
- reserveSpace: false,
565
- rotation: 0
559
+ week: {
560
+ list: ['Week %W', 'W%W']
566
561
  },
567
- // In a grid axis, only allow one unit of certain types,
568
- // for example we shouln't have one grid cell spanning
569
- // two days.
570
- units: [[
571
- 'millisecond',
572
- [1, 10, 100]
573
- ], [
574
- 'second',
575
- [1, 10]
576
- ], [
577
- 'minute',
578
- [1, 5, 15]
579
- ], [
580
- 'hour',
581
- [1, 6]
582
- ], [
583
- 'day',
584
- [1]
585
- ], [
586
- 'week',
587
- [1]
588
- ], [
589
- 'month',
590
- [1]
591
- ], [
592
- 'year',
593
- null
594
- ]]
595
- }, userOptions);
596
- // X-axis specific options
597
- if (this.coll === 'xAxis') {
598
- // For linked axes, tickPixelInterval is used only if
599
- // the tickPositioner below doesn't run or returns
600
- // undefined (like multiple years)
601
- if (defined(userOptions.linkedTo) &&
602
- !defined(userOptions.tickPixelInterval)) {
603
- gridAxisOptions.tickPixelInterval = 350;
562
+ month: {
563
+ list: ['%B', '%b', '%o']
604
564
  }
605
- // For the secondary grid axis, use the primary axis'
606
- // tick intervals and return ticks one level higher.
607
- if (
608
- // Check for tick pixel interval in options
609
- !defined(userOptions.tickPixelInterval) &&
610
- // Only for linked axes
611
- defined(userOptions.linkedTo) &&
612
- !defined(userOptions.tickPositioner) &&
613
- !defined(userOptions.tickInterval)) {
614
- gridAxisOptions.tickPositioner = function (min, max) {
615
- var parentInfo = (this.linkedParent &&
616
- this.linkedParent.tickPositions &&
617
- this.linkedParent.tickPositions.info);
618
- if (parentInfo) {
619
- var units = (gridAxisOptions.units || []);
620
- var unitIdx = void 0,
621
- count = void 0,
622
- unitName = void 0;
623
- for (var i = 0; i < units.length; i++) {
624
- if (units[i][0] ===
625
- parentInfo.unitName) {
626
- unitIdx = i;
627
- break;
628
- }
629
- }
630
- // Get the first allowed count on the next
631
- // unit.
632
- if (units[unitIdx + 1]) {
633
- unitName = units[unitIdx + 1][0];
634
- count =
635
- (units[unitIdx + 1][1] || [1])[0];
636
- // In case the base X axis shows years, make
637
- // the secondary axis show ten times the
638
- // years (#11427)
639
- }
640
- else if (parentInfo.unitName === 'year') {
641
- unitName = 'year';
642
- count = parentInfo.count * 10;
643
- }
644
- var unitRange = timeUnits[unitName];
645
- this.tickInterval = unitRange * count;
646
- return this.getTimeTicks({
647
- unitRange: unitRange,
648
- count: count,
649
- unitName: unitName
650
- }, min, max, this.options.startOfWeek);
651
- }
652
- };
565
+ },
566
+ grid: {
567
+ borderWidth: 1
568
+ },
569
+ labels: {
570
+ padding: 2,
571
+ style: {
572
+ fontSize: '13px'
653
573
  }
574
+ },
575
+ margin: 0,
576
+ title: {
577
+ text: null,
578
+ reserveSpace: false,
579
+ rotation: 0
580
+ },
581
+ // In a grid axis, only allow one unit of certain types,
582
+ // for example we shouln't have one grid cell spanning
583
+ // two days.
584
+ units: [[
585
+ 'millisecond',
586
+ [1, 10, 100]
587
+ ], [
588
+ 'second',
589
+ [1, 10]
590
+ ], [
591
+ 'minute',
592
+ [1, 5, 15]
593
+ ], [
594
+ 'hour',
595
+ [1, 6]
596
+ ], [
597
+ 'day',
598
+ [1]
599
+ ], [
600
+ 'week',
601
+ [1]
602
+ ], [
603
+ 'month',
604
+ [1]
605
+ ], [
606
+ 'year',
607
+ null
608
+ ]]
609
+ }, userOptions);
610
+ // X-axis specific options
611
+ if (this.coll === 'xAxis') {
612
+ // For linked axes, tickPixelInterval is used only if
613
+ // the tickPositioner below doesn't run or returns
614
+ // undefined (like multiple years)
615
+ if (defined(userOptions.linkedTo) &&
616
+ !defined(userOptions.tickPixelInterval)) {
617
+ gridAxisOptions.tickPixelInterval = 350;
654
618
  }
655
- // Now merge the combined options into the axis options
656
- merge(true, this.options, gridAxisOptions);
657
- if (this.horiz) {
658
- /* _________________________
659
- Make this: ___|_____|_____|_____|__|
660
- ^ ^
661
- _________________________
662
- Into this: |_____|_____|_____|_____|
663
- ^ ^ */
664
- options.minPadding = pick(userOptions.minPadding, 0);
665
- options.maxPadding = pick(userOptions.maxPadding, 0);
666
- }
667
- // If borderWidth is set, then use its value for tick and
668
- // line width.
669
- if (isNumber(options.grid.borderWidth)) {
670
- options.tickWidth = options.lineWidth =
671
- gridOptions.borderWidth;
619
+ // For the secondary grid axis, use the primary axis'
620
+ // tick intervals and return ticks one level higher.
621
+ if (
622
+ // Check for tick pixel interval in options
623
+ !defined(userOptions.tickPixelInterval) &&
624
+ // Only for linked axes
625
+ defined(userOptions.linkedTo) &&
626
+ !defined(userOptions.tickPositioner) &&
627
+ !defined(userOptions.tickInterval)) {
628
+ gridAxisOptions.tickPositioner = function (min, max) {
629
+ var parentInfo = (this.linkedParent &&
630
+ this.linkedParent.tickPositions &&
631
+ this.linkedParent.tickPositions.info);
632
+ if (parentInfo) {
633
+ var units = (gridAxisOptions.units || []);
634
+ var unitIdx = void 0,
635
+ count = 1,
636
+ unitName = 'year';
637
+ for (var i = 0; i < units.length; i++) {
638
+ var unit_1 = units[i];
639
+ if (unit_1 && unit_1[0] === parentInfo.unitName) {
640
+ unitIdx = i;
641
+ break;
642
+ }
643
+ }
644
+ // Get the first allowed count on the next unit.
645
+ var unit = (isNumber(unitIdx) && units[unitIdx + 1]);
646
+ if (unit) {
647
+ unitName = unit[0] || 'year';
648
+ var counts = unit[1];
649
+ count = counts && counts[0] || 1;
650
+ // In case the base X axis shows years, make the
651
+ // secondary axis show ten times the years (#11427)
652
+ }
653
+ else if (parentInfo.unitName === 'year') {
654
+ // unitName is 'year'
655
+ count = parentInfo.count * 10;
656
+ }
657
+ var unitRange = timeUnits[unitName];
658
+ this.tickInterval = unitRange * count;
659
+ return this.chart.time.getTimeTicks({ unitRange: unitRange, count: count, unitName: unitName }, min, max, this.options.startOfWeek);
660
+ }
661
+ };
672
662
  }
673
663
  }
674
- }
675
- /**
676
- * @private
677
- */
678
- function onAfterSetOptions2(e) {
679
- var axis = this;
680
- var userOptions = e.userOptions;
681
- var gridOptions = userOptions && userOptions.grid || {};
682
- var columns = gridOptions.columns;
683
- // Add column options to the parent axis. Children has their column
684
- // options set on init in onGridAxisAfterInit.
685
- if (gridOptions.enabled && columns) {
686
- merge(true, axis.options, columns[columns.length - 1]);
664
+ // Now merge the combined options into the axis options
665
+ merge(true, this.options, gridAxisOptions);
666
+ if (this.horiz) {
667
+ /* _________________________
668
+ Make this: ___|_____|_____|_____|__|
669
+ ^ ^
670
+ _________________________
671
+ Into this: |_____|_____|_____|_____|
672
+ ^ ^ */
673
+ options.minPadding = pick(userOptions.minPadding, 0);
674
+ options.maxPadding = pick(userOptions.maxPadding, 0);
675
+ }
676
+ // If borderWidth is set, then use its value for tick and
677
+ // line width.
678
+ if (isNumber(options.grid.borderWidth)) {
679
+ options.tickWidth = options.lineWidth =
680
+ gridOptions.borderWidth;
687
681
  }
688
682
  }
689
- /**
690
- * Handle columns and setScale.
691
- * @private
692
- */
693
- function onAfterSetScale() {
694
- var axis = this;
695
- (axis.grid.columns || []).forEach(function (column) {
696
- column.setScale();
697
- });
683
+ }
684
+ /**
685
+ * @private
686
+ */
687
+ function onAfterSetOptions2(e) {
688
+ var axis = this;
689
+ var userOptions = e.userOptions;
690
+ var gridOptions = userOptions && userOptions.grid || {};
691
+ var columns = gridOptions.columns;
692
+ // Add column options to the parent axis. Children has their column
693
+ // options set on init in onGridAxisAfterInit.
694
+ if (gridOptions.enabled && columns) {
695
+ merge(true, axis.options, columns[columns.length - 1]);
698
696
  }
699
- /**
700
- * Draw vertical axis ticks extra long to create cell floors and roofs.
701
- * Overrides the tickLength for vertical axes.
702
- * @private
703
- */
704
- function onAfterTickSize(e) {
705
- var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
706
- var _a = this,
707
- horiz = _a.horiz,
708
- maxLabelDimensions = _a.maxLabelDimensions,
709
- _b = _a.options.grid,
710
- gridOptions = _b === void 0 ? {} : _b;
711
- if (gridOptions.enabled && maxLabelDimensions) {
712
- var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
713
- var distance = horiz ?
714
- (gridOptions.cellHeight ||
715
- labelPadding + maxLabelDimensions.height) :
716
- labelPadding + maxLabelDimensions.width;
717
- if (isArray(e.tickSize)) {
718
- e.tickSize[0] = distance;
719
- }
720
- else {
721
- e.tickSize = [distance, 0];
722
- }
697
+ }
698
+ /**
699
+ * Handle columns and setScale.
700
+ * @private
701
+ */
702
+ function onAfterSetScale() {
703
+ var axis = this;
704
+ (axis.grid.columns || []).forEach(function (column) { return column.setScale(); });
705
+ }
706
+ /**
707
+ * Draw vertical axis ticks extra long to create cell floors and roofs.
708
+ * Overrides the tickLength for vertical axes.
709
+ * @private
710
+ */
711
+ function onAfterTickSize(e) {
712
+ var defaultLeftAxisOptions = AxisDefaults.defaultLeftAxisOptions;
713
+ var _a = this,
714
+ horiz = _a.horiz,
715
+ maxLabelDimensions = _a.maxLabelDimensions,
716
+ _b = _a.options.grid,
717
+ gridOptions = _b === void 0 ? {} : _b;
718
+ if (gridOptions.enabled && maxLabelDimensions) {
719
+ var labelPadding = (Math.abs(defaultLeftAxisOptions.labels.x) * 2);
720
+ var distance = horiz ?
721
+ (gridOptions.cellHeight ||
722
+ labelPadding + maxLabelDimensions.height) :
723
+ labelPadding + maxLabelDimensions.width;
724
+ if (isArray(e.tickSize)) {
725
+ e.tickSize[0] = distance;
726
+ }
727
+ else {
728
+ e.tickSize = [distance, 0];
723
729
  }
724
730
  }
725
- /**
726
- * @private
727
- */
728
- function onChartAfterSetChartSize() {
729
- this.axes.forEach(function (axis) {
730
- (axis.grid && axis.grid.columns || []).forEach(function (column) {
731
- column.setAxisSize();
732
- column.setAxisTranslation();
733
- });
731
+ }
732
+ /**
733
+ * @private
734
+ */
735
+ function onChartAfterSetChartSize() {
736
+ this.axes.forEach(function (axis) {
737
+ (axis.grid && axis.grid.columns || []).forEach(function (column) {
738
+ column.setAxisSize();
739
+ column.setAxisTranslation();
734
740
  });
741
+ });
742
+ }
743
+ /**
744
+ * @private
745
+ */
746
+ function onDestroy(e) {
747
+ var grid = this.grid;
748
+ (grid.columns || []).forEach(function (column) { return column.destroy(e.keepEvents); });
749
+ grid.columns = void 0;
750
+ }
751
+ /**
752
+ * Wraps axis init to draw cell walls on vertical axes.
753
+ * @private
754
+ */
755
+ function onInit(e) {
756
+ var axis = this;
757
+ var userOptions = e.userOptions || {};
758
+ var gridOptions = userOptions.grid || {};
759
+ if (gridOptions.enabled && defined(gridOptions.borderColor)) {
760
+ userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
735
761
  }
736
- /**
737
- * @private
738
- */
739
- function onDestroy(e) {
740
- var grid = this.grid;
741
- (grid.columns || []).forEach(function (column) {
742
- column.destroy(e.keepEvents);
743
- });
744
- grid.columns = void 0;
762
+ if (!axis.grid) {
763
+ axis.grid = new GridAxisAdditions(axis);
745
764
  }
746
- /**
747
- * Wraps axis init to draw cell walls on vertical axes.
748
- * @private
749
- */
750
- function onInit(e) {
751
- var axis = this;
752
- var userOptions = e.userOptions || {};
753
- var gridOptions = userOptions.grid || {};
754
- if (gridOptions.enabled && defined(gridOptions.borderColor)) {
755
- userOptions.tickColor = userOptions.lineColor = (gridOptions.borderColor);
765
+ axis.hiddenLabels = [];
766
+ axis.hiddenMarks = [];
767
+ }
768
+ /**
769
+ * Center tick labels in cells.
770
+ * @private
771
+ */
772
+ function onTickAfterGetLabelPosition(e) {
773
+ var tick = this,
774
+ label = tick.label,
775
+ axis = tick.axis,
776
+ reversed = axis.reversed,
777
+ chart = axis.chart,
778
+ options = axis.options,
779
+ gridOptions = options.grid || {},
780
+ labelOpts = axis.options.labels,
781
+ align = labelOpts.align,
782
+ // verticalAlign is currently not supported for axis.labels.
783
+ verticalAlign = 'middle', // labelOpts.verticalAlign,
784
+ side = GridAxisSide[axis.side],
785
+ tickmarkOffset = e.tickmarkOffset,
786
+ tickPositions = axis.tickPositions,
787
+ tickPos = tick.pos - tickmarkOffset,
788
+ nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
789
+ tickPositions[e.index + 1] - tickmarkOffset :
790
+ (axis.max || 0) + tickmarkOffset),
791
+ tickSize = axis.tickSize('tick'),
792
+ tickWidth = tickSize ? tickSize[0] : 0,
793
+ crispCorr = tickSize ? tickSize[1] / 2 : 0;
794
+ var labelHeight,
795
+ lblMetrics,
796
+ lines,
797
+ bottom,
798
+ top,
799
+ left,
800
+ right;
801
+ // Only center tick labels in grid axes
802
+ if (gridOptions.enabled === true) {
803
+ // Calculate top and bottom positions of the cell.
804
+ if (side === 'top') {
805
+ bottom = axis.top + axis.offset;
806
+ top = bottom - tickWidth;
756
807
  }
757
- if (!axis.grid) {
758
- axis.grid = new Additions(axis);
808
+ else if (side === 'bottom') {
809
+ top = chart.chartHeight - axis.bottom + axis.offset;
810
+ bottom = top + tickWidth;
759
811
  }
760
- axis.hiddenLabels = [];
761
- }
762
- /**
763
- * Center tick labels in cells.
764
- * @private
765
- */
766
- function onTickAfterGetLabelPosition(e) {
767
- var tick = this,
768
- label = tick.label,
769
- axis = tick.axis,
770
- reversed = axis.reversed,
771
- chart = axis.chart,
772
- options = axis.options,
773
- gridOptions = options.grid || {},
774
- labelOpts = axis.options.labels,
775
- align = labelOpts.align,
776
- // verticalAlign is currently not supported for axis.labels.
777
- verticalAlign = 'middle', // labelOpts.verticalAlign,
778
- side = GridAxis.Side[axis.side],
779
- tickmarkOffset = e.tickmarkOffset,
780
- tickPositions = axis.tickPositions,
781
- tickPos = tick.pos - tickmarkOffset,
782
- nextTickPos = (isNumber(tickPositions[e.index + 1]) ?
783
- tickPositions[e.index + 1] - tickmarkOffset :
784
- (axis.max || 0) + tickmarkOffset),
785
- tickSize = axis.tickSize('tick'),
786
- tickWidth = tickSize ? tickSize[0] : 0,
787
- crispCorr = tickSize ? tickSize[1] / 2 : 0;
788
- var labelHeight,
789
- lblMetrics,
790
- lines,
791
- bottom,
792
- top,
793
- left,
794
- right;
795
- // Only center tick labels in grid axes
796
- if (gridOptions.enabled === true) {
797
- // Calculate top and bottom positions of the cell.
798
- if (side === 'top') {
799
- bottom = axis.top + axis.offset;
800
- top = bottom - tickWidth;
801
- }
802
- else if (side === 'bottom') {
803
- top = chart.chartHeight - axis.bottom + axis.offset;
804
- bottom = top + tickWidth;
805
- }
806
- else {
807
- bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
808
- top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
809
- }
810
- // Calculate left and right positions of the cell.
811
- if (side === 'right') {
812
- left = chart.chartWidth - axis.right + axis.offset;
813
- right = left + tickWidth;
814
- }
815
- else if (side === 'left') {
816
- right = axis.left + axis.offset;
817
- left = right - tickWidth;
818
- }
819
- else {
820
- left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
821
- right = Math.min(// #15742
822
- Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
823
- }
824
- tick.slotWidth = right - left;
825
- // Calculate the positioning of the label based on
826
- // alignment.
827
- e.pos.x = (align === 'left' ?
828
- left :
829
- align === 'right' ?
830
- right :
831
- left + ((right - left) / 2) // default to center
832
- );
833
- e.pos.y = (verticalAlign === 'top' ?
834
- top :
835
- verticalAlign === 'bottom' ?
836
- bottom :
837
- top + ((bottom - top) / 2) // default to middle
838
- );
839
- lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
840
- labelHeight = label ? label.getBBox().height : 0;
841
- // Adjustment to y position to align the label correctly.
842
- // Would be better to have a setter or similar for this.
843
- if (!labelOpts.useHTML) {
844
- lines = Math.round(labelHeight / lblMetrics.h);
845
- e.pos.y += (
846
- // Center the label
847
- // TODO: why does this actually center the label?
848
- ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
849
- // Adjust for height of additional lines.
850
- -(((lines - 1) * lblMetrics.h) / 2));
851
- }
852
- else {
853
- e.pos.y += (
854
- // Readjust yCorr in htmlUpdateTransform
855
- lblMetrics.b +
856
- // Adjust for height of html label
857
- -(labelHeight / 2));
858
- }
859
- e.pos.x += (axis.horiz && labelOpts.x) || 0;
812
+ else {
813
+ bottom = axis.top + axis.len - (axis.translate(reversed ? nextTickPos : tickPos) || 0);
814
+ top = axis.top + axis.len - (axis.translate(reversed ? tickPos : nextTickPos) || 0);
860
815
  }
861
- }
862
- /**
863
- * @private
864
- */
865
- function onTickLabelFormat(ctx) {
866
- var axis = ctx.axis,
867
- value = ctx.value;
868
- if (axis.options.grid &&
869
- axis.options.grid.enabled) {
870
- var tickPos = axis.tickPositions;
871
- var series = (axis.linkedParent || axis).series[0];
872
- var isFirst = value === tickPos[0];
873
- var isLast = value === tickPos[tickPos.length - 1];
874
- var point = series && find(series.options.data,
875
- function (p) {
876
- return p[axis.isXAxis ? 'x' : 'y'] === value;
877
- });
878
- var pointCopy = void 0;
879
- if (point && series.is('gantt')) {
880
- // For the Gantt set point aliases to the pointCopy
881
- // to do not change the original point
882
- pointCopy = merge(point);
883
- H.seriesTypes.gantt.prototype.pointClass
884
- .setGanttPointAliases(pointCopy);
885
- }
886
- // Make additional properties available for the
887
- // formatter
888
- ctx.isFirst = isFirst;
889
- ctx.isLast = isLast;
890
- ctx.point = pointCopy;
816
+ // Calculate left and right positions of the cell.
817
+ if (side === 'right') {
818
+ left = chart.chartWidth - axis.right + axis.offset;
819
+ right = left + tickWidth;
820
+ }
821
+ else if (side === 'left') {
822
+ right = axis.left + axis.offset;
823
+ left = right - tickWidth;
824
+ }
825
+ else {
826
+ left = Math.round(axis.left + (axis.translate(reversed ? nextTickPos : tickPos) || 0)) - crispCorr;
827
+ right = Math.min(// #15742
828
+ Math.round(axis.left + (axis.translate(reversed ? tickPos : nextTickPos) || 0)) - crispCorr, axis.left + axis.len);
829
+ }
830
+ tick.slotWidth = right - left;
831
+ // Calculate the positioning of the label based on
832
+ // alignment.
833
+ e.pos.x = (align === 'left' ?
834
+ left :
835
+ align === 'right' ?
836
+ right :
837
+ left + ((right - left) / 2) // default to center
838
+ );
839
+ e.pos.y = (verticalAlign === 'top' ?
840
+ top :
841
+ verticalAlign === 'bottom' ?
842
+ bottom :
843
+ top + ((bottom - top) / 2) // default to middle
844
+ );
845
+ lblMetrics = chart.renderer.fontMetrics(labelOpts.style.fontSize, label && label.element);
846
+ labelHeight = label ? label.getBBox().height : 0;
847
+ // Adjustment to y position to align the label correctly.
848
+ // Would be better to have a setter or similar for this.
849
+ if (!labelOpts.useHTML) {
850
+ lines = Math.round(labelHeight / lblMetrics.h);
851
+ e.pos.y += (
852
+ // Center the label
853
+ // TODO: why does this actually center the label?
854
+ ((lblMetrics.b - (lblMetrics.h - lblMetrics.f)) / 2) +
855
+ // Adjust for height of additional lines.
856
+ -(((lines - 1) * lblMetrics.h) / 2));
891
857
  }
858
+ else {
859
+ e.pos.y += (
860
+ // Readjust yCorr in htmlUpdateTransform
861
+ lblMetrics.b +
862
+ // Adjust for height of html label
863
+ -(labelHeight / 2));
864
+ }
865
+ e.pos.x += (axis.horiz && labelOpts.x) || 0;
892
866
  }
893
- /**
894
- * Makes tick labels which are usually ignored in a linked axis
895
- * displayed if they are within range of linkedParent.min.
896
- * ```
897
- * _____________________________
898
- * | | | | |
899
- * Make this: | | 2 | 3 | 4 |
900
- * |___|_______|_______|_______|
901
- * ^
902
- * _____________________________
903
- * | | | | |
904
- * Into this: | 1 | 2 | 3 | 4 |
905
- * |___|_______|_______|_______|
906
- * ^
907
- * ```
908
- * @private
909
- * @todo Does this function do what the drawing says? Seems to affect
910
- * ticks and not the labels directly?
911
- */
912
- function onTrimTicks() {
913
- var axis = this;
914
- var options = axis.options;
915
- var gridOptions = options.grid || {};
916
- var categoryAxis = axis.categories;
917
- var tickPositions = axis.tickPositions;
918
- var firstPos = tickPositions[0];
919
- var lastPos = tickPositions[tickPositions.length - 1];
920
- var linkedMin = axis.linkedParent && axis.linkedParent.min;
921
- var linkedMax = axis.linkedParent && axis.linkedParent.max;
922
- var min = linkedMin || axis.min;
923
- var max = linkedMax || axis.max;
924
- var tickInterval = axis.tickInterval;
925
- var endMoreThanMin = (firstPos < min &&
926
- firstPos + tickInterval > min);
927
- var startLessThanMax = (lastPos > max &&
928
- lastPos - tickInterval < max);
929
- if (gridOptions.enabled === true &&
930
- !categoryAxis &&
931
- (axis.horiz || axis.isLinked)) {
932
- if (endMoreThanMin && !options.startOnTick) {
933
- tickPositions[0] = min;
934
- }
935
- if (startLessThanMax && !options.endOnTick) {
936
- tickPositions[tickPositions.length - 1] = max;
937
- }
867
+ }
868
+ /**
869
+ * @private
870
+ */
871
+ function onTickLabelFormat(ctx) {
872
+ var axis = ctx.axis,
873
+ value = ctx.value;
874
+ if (axis.options.grid &&
875
+ axis.options.grid.enabled) {
876
+ var tickPos = axis.tickPositions;
877
+ var series = (axis.linkedParent || axis).series[0];
878
+ var isFirst = value === tickPos[0];
879
+ var isLast = value === tickPos[tickPos.length - 1];
880
+ var point = series && find(series.options.data,
881
+ function (p) {
882
+ return p[axis.isXAxis ? 'x' : 'y'] === value;
883
+ });
884
+ var pointCopy = void 0;
885
+ if (point && series.is('gantt')) {
886
+ // For the Gantt set point aliases to the pointCopy
887
+ // to do not change the original point
888
+ pointCopy = merge(point);
889
+ H.seriesTypes.gantt.prototype.pointClass
890
+ .setGanttPointAliases(pointCopy);
938
891
  }
892
+ // Make additional properties available for the
893
+ // formatter
894
+ ctx.isFirst = isFirst;
895
+ ctx.isLast = isLast;
896
+ ctx.point = pointCopy;
939
897
  }
940
- /**
941
- * Avoid altering tickInterval when reserving space.
942
- * @private
943
- */
944
- function wrapUnsquish(proceed) {
945
- var axis = this;
946
- var _a = axis.options.grid,
947
- gridOptions = _a === void 0 ? {} : _a;
948
- if (gridOptions.enabled === true && axis.categories) {
949
- return axis.tickInterval;
898
+ }
899
+ /**
900
+ * Makes tick labels which are usually ignored in a linked axis
901
+ * displayed if they are within range of linkedParent.min.
902
+ * ```
903
+ * _____________________________
904
+ * | | | | |
905
+ * Make this: | | 2 | 3 | 4 |
906
+ * |___|_______|_______|_______|
907
+ * ^
908
+ * _____________________________
909
+ * | | | | |
910
+ * Into this: | 1 | 2 | 3 | 4 |
911
+ * |___|_______|_______|_______|
912
+ * ^
913
+ * ```
914
+ * @private
915
+ * @todo Does this function do what the drawing says? Seems to affect
916
+ * ticks and not the labels directly?
917
+ */
918
+ function onTrimTicks() {
919
+ var axis = this;
920
+ var options = axis.options;
921
+ var gridOptions = options.grid || {};
922
+ var categoryAxis = axis.categories;
923
+ var tickPositions = axis.tickPositions;
924
+ var firstPos = tickPositions[0];
925
+ var lastPos = tickPositions[tickPositions.length - 1];
926
+ var linkedMin = axis.linkedParent && axis.linkedParent.min;
927
+ var linkedMax = axis.linkedParent && axis.linkedParent.max;
928
+ var min = linkedMin || axis.min;
929
+ var max = linkedMax || axis.max;
930
+ var tickInterval = axis.tickInterval;
931
+ var endMoreThanMin = (firstPos < min &&
932
+ firstPos + tickInterval > min);
933
+ var startLessThanMax = (lastPos > max &&
934
+ lastPos - tickInterval < max);
935
+ if (gridOptions.enabled === true &&
936
+ !categoryAxis &&
937
+ (axis.horiz || axis.isLinked)) {
938
+ if (endMoreThanMin && !options.startOnTick) {
939
+ tickPositions[0] = min;
940
+ }
941
+ if (startLessThanMax && !options.endOnTick) {
942
+ tickPositions[tickPositions.length - 1] = max;
950
943
  }
951
- return proceed.apply(axis, argsToArray(arguments));
944
+ }
945
+ }
946
+ /**
947
+ * Avoid altering tickInterval when reserving space.
948
+ * @private
949
+ */
950
+ function wrapUnsquish(proceed) {
951
+ var axis = this;
952
+ var _a = axis.options.grid,
953
+ gridOptions = _a === void 0 ? {} : _a;
954
+ if (gridOptions.enabled === true && axis.categories) {
955
+ return axis.tickInterval;
956
+ }
957
+ return proceed.apply(axis, argsToArray(arguments));
958
+ }
959
+ /* *
960
+ *
961
+ * Class
962
+ *
963
+ * */
964
+ /**
965
+ * Additions for grid axes.
966
+ * @private
967
+ * @class
968
+ */
969
+ var GridAxisAdditions = /** @class */ (function () {
970
+ /* *
971
+ *
972
+ * Constructors
973
+ *
974
+ * */
975
+ function GridAxisAdditions(axis) {
976
+ this.axis = axis;
952
977
  }
953
978
  /* *
979
+ *
980
+ * Functions
981
+ *
982
+ * */
983
+ /**
984
+ * Checks if an axis is the outer axis in its dimension. Since
985
+ * axes are placed outwards in order, the axis with the highest
986
+ * index is the outermost axis.
954
987
  *
955
- * Class
988
+ * Example: If there are multiple x-axes at the top of the chart,
989
+ * this function returns true if the axis supplied is the last
990
+ * of the x-axes.
956
991
  *
957
- * */
958
- /**
959
- * Additions for grid axes.
960
992
  * @private
961
- * @class
993
+ *
994
+ * @return {boolean}
995
+ * True if the axis is the outermost axis in its dimension; false if
996
+ * not.
962
997
  */
963
- var Additions = /** @class */ (function () {
964
- /* *
965
- *
966
- * Constructors
967
- *
968
- * */
969
- function Additions(axis) {
970
- this.axis = axis;
971
- }
972
- /* *
973
- *
974
- * Functions
975
- *
976
- * */
977
- /**
978
- * Checks if an axis is the outer axis in its dimension. Since
979
- * axes are placed outwards in order, the axis with the highest
980
- * index is the outermost axis.
981
- *
982
- * Example: If there are multiple x-axes at the top of the chart,
983
- * this function returns true if the axis supplied is the last
984
- * of the x-axes.
985
- *
986
- * @private
987
- *
988
- * @return {boolean}
989
- * True if the axis is the outermost axis in its dimension; false if
990
- * not.
991
- */
992
- Additions.prototype.isOuterAxis = function () {
993
- var axis = this.axis;
994
- var chart = axis.chart;
995
- var columnIndex = axis.grid.columnIndex;
996
- var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
997
- axis.grid.columns);
998
- var parentAxis = columnIndex ? axis.linkedParent : axis;
999
- var thisIndex = -1,
1000
- lastIndex = 0;
1001
- chart[axis.coll].forEach(function (otherAxis, index) {
1002
- if (otherAxis.side === axis.side &&
1003
- !otherAxis.options.isInternal) {
1004
- lastIndex = index;
1005
- if (otherAxis === parentAxis) {
1006
- // Get the index of the axis in question
1007
- thisIndex = index;
1008
- }
998
+ GridAxisAdditions.prototype.isOuterAxis = function () {
999
+ var axis = this.axis;
1000
+ var chart = axis.chart;
1001
+ var columnIndex = axis.grid.columnIndex;
1002
+ var columns = (axis.linkedParent && axis.linkedParent.grid.columns ||
1003
+ axis.grid.columns);
1004
+ var parentAxis = columnIndex ? axis.linkedParent : axis;
1005
+ var thisIndex = -1,
1006
+ lastIndex = 0;
1007
+ (chart[axis.coll] || []).forEach(function (otherAxis, index) {
1008
+ if (otherAxis.side === axis.side &&
1009
+ !otherAxis.options.isInternal) {
1010
+ lastIndex = index;
1011
+ if (otherAxis === parentAxis) {
1012
+ // Get the index of the axis in question
1013
+ thisIndex = index;
1009
1014
  }
1010
- });
1011
- return (lastIndex === thisIndex &&
1012
- (isNumber(columnIndex) ?
1013
- columns.length === columnIndex :
1014
- true));
1015
- };
1016
- /**
1017
- * Add extra border based on the provided path.
1018
- * @private
1019
- * @param {SVGPath} path
1020
- * The path of the border.
1021
- * @return {Highcharts.SVGElement}
1022
- * Border
1023
- */
1024
- Additions.prototype.renderBorder = function (path) {
1025
- var axis = this.axis,
1026
- renderer = axis.chart.renderer,
1027
- options = axis.options,
1028
- extraBorderLine = renderer.path(path)
1029
- .addClass('highcharts-axis-line')
1030
- .add(axis.axisBorder);
1031
- if (!renderer.styledMode) {
1032
- extraBorderLine.attr({
1033
- stroke: options.lineColor,
1034
- 'stroke-width': options.lineWidth,
1035
- zIndex: 7
1036
- });
1037
1015
  }
1038
- return extraBorderLine;
1039
- };
1040
- return Additions;
1041
- }());
1042
- GridAxis.Additions = Additions;
1043
- })(GridAxis || (GridAxis = {}));
1016
+ });
1017
+ return (lastIndex === thisIndex &&
1018
+ (isNumber(columnIndex) ?
1019
+ columns.length === columnIndex :
1020
+ true));
1021
+ };
1022
+ /**
1023
+ * Add extra border based on the provided path.
1024
+ * @private
1025
+ * @param {SVGPath} path
1026
+ * The path of the border.
1027
+ * @return {Highcharts.SVGElement}
1028
+ * Border
1029
+ */
1030
+ GridAxisAdditions.prototype.renderBorder = function (path) {
1031
+ var axis = this.axis,
1032
+ renderer = axis.chart.renderer,
1033
+ options = axis.options,
1034
+ extraBorderLine = renderer.path(path)
1035
+ .addClass('highcharts-axis-line')
1036
+ .add(axis.axisBorder);
1037
+ if (!renderer.styledMode) {
1038
+ extraBorderLine.attr({
1039
+ stroke: options.lineColor,
1040
+ 'stroke-width': options.lineWidth,
1041
+ zIndex: 7
1042
+ });
1043
+ }
1044
+ return extraBorderLine;
1045
+ };
1046
+ return GridAxisAdditions;
1047
+ }());
1044
1048
  /* *
1045
1049
  *
1046
1050
  * Registry
@@ -1052,7 +1056,10 @@
1052
1056
  };
1053
1057
  // Adds week date format
1054
1058
  dateFormats.W = function (timestamp) {
1055
- var d = new this.Date(timestamp);
1059
+ var time = this, d = new this.Date(timestamp), unitsToOmit = ['Hours', 'Milliseconds', 'Minutes', 'Seconds'];
1060
+ unitsToOmit.forEach(function (format) {
1061
+ time.set(format, d, 0);
1062
+ });
1056
1063
  var firstDay = (this.get('Day',
1057
1064
  d) + 6) % 7;
1058
1065
  var thursday = new this.Date(d.valueOf());
@@ -1071,6 +1078,9 @@
1071
1078
  * Default Export
1072
1079
  *
1073
1080
  * */
1081
+ var GridAxis = {
1082
+ compose: compose
1083
+ };
1074
1084
  /* *
1075
1085
  *
1076
1086
  * API Options