highcharts 10.0.0 → 10.2.1

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