highcharts 10.2.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 (763) 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/Accessibility.js +6 -0
  7. package/es-modules/Accessibility/Components/LegendComponent.js +8 -8
  8. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +3 -2
  9. package/es-modules/Accessibility/Options/A11yDefaults.js +1 -1
  10. package/es-modules/Core/Axis/Axis.js +3 -0
  11. package/es-modules/Core/Axis/Axis3D.js +1 -1
  12. package/es-modules/Core/Axis/AxisDefaults.js +1 -1
  13. package/es-modules/Core/Axis/BrokenAxis.js +1 -1
  14. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +4 -0
  15. package/es-modules/Core/Axis/NavigatorAxis.js +2 -2
  16. package/es-modules/Core/Axis/OrdinalAxis.js +2 -2
  17. package/es-modules/Core/Axis/RadialAxis.js +1 -1
  18. package/es-modules/Core/Axis/Stacking/StackItem.js +262 -0
  19. package/es-modules/Core/Axis/Stacking/StackingAxis.js +468 -0
  20. package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +732 -0
  21. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +313 -0
  22. package/es-modules/Core/Axis/WaterfallAxis.js +1 -1
  23. package/es-modules/Core/Axis/ZAxis.js +73 -70
  24. package/es-modules/Core/Chart/Chart.js +16 -2
  25. package/es-modules/Core/Chart/Chart3D.js +2 -2
  26. package/es-modules/Core/Chart/ChartDefaults.js +151 -2
  27. package/es-modules/Core/Chart/StockChart.js +5 -3
  28. package/es-modules/Core/DefaultOptions.js +2 -1
  29. package/es-modules/Core/Geometry/CircleUtilities.js +4 -4
  30. package/es-modules/Core/Globals.js +2 -1
  31. package/es-modules/{Extensions → Core}/Math3D.js +48 -43
  32. package/es-modules/Core/Navigator.js +24 -7
  33. package/es-modules/Core/Pointer.js +7 -9
  34. package/es-modules/Core/Renderer/HTML/AST.js +4 -1
  35. package/es-modules/Core/Renderer/SVG/SVGElement.js +103 -163
  36. package/es-modules/Core/Renderer/SVG/SVGLabel.js +29 -27
  37. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +3 -3
  38. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +1 -1
  39. package/es-modules/Core/Renderer/SVG/TextBuilder.js +5 -3
  40. package/es-modules/Core/Scrollbar.js +3 -1
  41. package/es-modules/Core/Series/DataLabel.js +8 -6
  42. package/es-modules/Core/Series/Point.js +2 -2
  43. package/es-modules/Core/Series/Series.js +36 -31
  44. package/es-modules/Core/Series/Series3D.js +1 -1
  45. package/es-modules/Core/Series/SeriesDefaults.js +8 -3
  46. package/es-modules/Core/Series/SeriesRegistry.js +6 -29
  47. package/es-modules/Core/Tooltip.js +14 -3
  48. package/es-modules/Core/Utilities.js +1 -3
  49. package/es-modules/Data/DataConverter.js +5 -0
  50. package/es-modules/Data/DataPromise.js +1 -1
  51. package/es-modules/Data/DataSeriesComposition.js +288 -0
  52. package/es-modules/Data/DataSeriesConverter.js +1 -1
  53. package/es-modules/Data/DataTable.js +2 -2
  54. package/es-modules/Data/Modifiers/ChainModifier.js +1 -1
  55. package/es-modules/Data/Modifiers/DataModifier.js +1 -1
  56. package/es-modules/Data/Modifiers/GroupModifier.js +1 -1
  57. package/es-modules/Data/Modifiers/InvertModifier.js +1 -1
  58. package/es-modules/Data/Modifiers/RangeModifier.js +1 -1
  59. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +1 -1
  60. package/es-modules/Data/Modifiers/SortModifier.js +1 -1
  61. package/es-modules/Data/Parsers/DataParser.js +1 -1
  62. package/es-modules/Data/Stores/DataStore.js +1 -1
  63. package/es-modules/Extensions/Annotations/Annotation.js +347 -1156
  64. package/es-modules/Extensions/Annotations/AnnotationChart.js +291 -0
  65. package/es-modules/Extensions/Annotations/AnnotationDefaults.js +624 -0
  66. package/es-modules/Extensions/Annotations/ControlPoint.js +89 -64
  67. package/es-modules/Extensions/Annotations/{Mixins/ControllableMixin.js → Controllables/Controllable.js} +300 -241
  68. package/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +63 -50
  69. package/es-modules/Extensions/Annotations/Controllables/ControllableDefaults.js +95 -0
  70. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +90 -61
  71. package/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +50 -44
  72. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +95 -78
  73. package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +167 -51
  74. package/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +53 -52
  75. package/es-modules/Extensions/Annotations/{Mixins/EventEmitterMixin.js → EventEmitter.js} +136 -116
  76. package/es-modules/Extensions/Annotations/MockPoint.js +210 -145
  77. package/es-modules/Extensions/Annotations/NavigationBindings.js +272 -674
  78. package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +396 -0
  79. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +98 -0
  80. package/es-modules/Extensions/Annotations/Popup/Popup.js +295 -0
  81. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +177 -0
  82. package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +81 -0
  83. package/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +609 -0
  84. package/es-modules/Extensions/Annotations/Popup/PopupTabs.js +134 -0
  85. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +10 -14
  86. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +11 -19
  87. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +10 -10
  88. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +28 -20
  89. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +63 -63
  90. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +10 -19
  91. package/es-modules/Extensions/Annotations/Types/Measure.js +255 -249
  92. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +11 -17
  93. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +20 -17
  94. package/es-modules/Extensions/Annotations/Types/Tunnel.js +12 -13
  95. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +11 -15
  96. package/es-modules/Extensions/Boost/Boost.js +320 -15
  97. package/es-modules/Extensions/Boost/BoostChart.js +245 -0
  98. package/es-modules/Extensions/Boost/BoostSeries.js +927 -0
  99. package/es-modules/Extensions/Boost/BoostableMap.js +21 -5
  100. package/es-modules/Extensions/Boost/Boostables.js +13 -2
  101. package/es-modules/Extensions/Boost/NamedColors.js +15 -6
  102. package/es-modules/Extensions/Boost/WGLDrawMode.js +36 -0
  103. package/es-modules/Extensions/Boost/WGLRenderer.js +288 -295
  104. package/es-modules/Extensions/Boost/WGLShader.js +370 -376
  105. package/es-modules/Extensions/Boost/WGLVertexBuffer.js +192 -0
  106. package/es-modules/Extensions/BoostCanvas.js +62 -46
  107. package/es-modules/Extensions/Breadcrumbs.js +4 -0
  108. package/es-modules/Extensions/DataGrouping.js +65 -27
  109. package/es-modules/Extensions/Debugger/Debugger.js +60 -22
  110. package/es-modules/Extensions/DraggablePoints.js +4 -3
  111. package/es-modules/Extensions/Drilldown.js +7 -8
  112. package/es-modules/Extensions/{ExportData.js → ExportData/ExportData.js} +341 -530
  113. package/es-modules/Extensions/ExportData/ExportDataDefaults.js +272 -0
  114. package/es-modules/Extensions/Exporting/Exporting.js +5 -1
  115. package/es-modules/Extensions/Exporting/ExportingDefaults.js +3 -1
  116. package/es-modules/Extensions/{FullScreen.js → Exporting/Fullscreen.js} +72 -27
  117. package/es-modules/Extensions/MarkerClusters.js +2 -0
  118. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  119. package/es-modules/Extensions/Oldie/Oldie.js +1 -1
  120. package/es-modules/Extensions/ParallelCoordinates.js +11 -7
  121. package/es-modules/Extensions/ScrollablePlotArea.js +1 -1
  122. package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +2 -2
  123. package/es-modules/Extensions/Sonification/ChartSonify.js +1 -1
  124. package/es-modules/Maps/MapPointer.js +1 -1
  125. package/es-modules/Maps/MapView.js +2 -1
  126. package/es-modules/Series/{Area3DSeries.js → Area3D/Area3DSeries.js} +42 -20
  127. package/es-modules/Series/AreaRange/AreaRangeSeries.js +8 -2
  128. package/es-modules/Series/Bubble/BubbleLegendComposition.js +223 -231
  129. package/es-modules/Series/Bubble/BubbleLegendItem.js +46 -45
  130. package/es-modules/Series/Bubble/BubbleSeries.js +85 -66
  131. package/es-modules/Series/Column/ColumnSeries.js +2 -0
  132. package/es-modules/Series/Column3D/Column3DComposition.js +2 -2
  133. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +1 -1
  134. package/es-modules/Series/Cylinder/CylinderComposition.js +1 -1
  135. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +24 -11
  136. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +16 -2
  137. package/es-modules/Series/DragNodesComposition.js +166 -0
  138. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +1 -1
  139. package/es-modules/Series/Gantt/GanttSeries.js +1 -1
  140. package/es-modules/Series/GraphLayoutComposition.js +130 -0
  141. package/es-modules/Series/Heatmap/HeatmapSeries.js +5 -1
  142. package/es-modules/Series/Lollipop/LollipopPoint.js +21 -11
  143. package/es-modules/Series/Lollipop/LollipopSeries.js +15 -10
  144. package/es-modules/Series/Map/MapSeries.js +6 -1
  145. package/es-modules/Series/MapBubble/MapBubblePoint.js +15 -17
  146. package/es-modules/Series/MapBubble/MapBubbleSeries.js +19 -19
  147. package/es-modules/Series/Networkgraph/EulerIntegration.js +199 -0
  148. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +290 -0
  149. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +401 -0
  150. package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +545 -0
  151. package/es-modules/Series/Networkgraph/QuadTree.js +66 -272
  152. package/es-modules/Series/Networkgraph/QuadTreeNode.js +271 -0
  153. package/es-modules/Series/Networkgraph/{Layouts.js → ReingoldFruchtermanLayout.js} +240 -259
  154. package/es-modules/Series/Networkgraph/VerletIntegration.js +193 -0
  155. package/es-modules/Series/Organization/OrganizationSeries.js +9 -1
  156. package/es-modules/Series/PackedBubble/PackedBubbleIntegration.js +81 -0
  157. package/es-modules/Series/PackedBubble/{PackedBubbleComposition.js → PackedBubbleLayout.js} +114 -77
  158. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +2 -2
  159. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +197 -570
  160. package/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +394 -0
  161. package/es-modules/Series/Pie/PieSeries.js +3 -1
  162. package/es-modules/Series/PolarComposition.js +12 -12
  163. package/es-modules/Series/Sankey/SankeySeries.js +13 -1
  164. package/es-modules/Series/Scatter/ScatterSeries.js +4 -1
  165. package/es-modules/Series/Scatter3D/Scatter3DSeries.js +1 -1
  166. package/es-modules/Series/SeriesOnPointComposition.js +5 -1
  167. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +1 -1
  168. package/es-modules/Series/Sunburst/SunburstPoint.js +5 -6
  169. package/es-modules/Series/Sunburst/SunburstSeries.js +24 -2
  170. package/es-modules/Series/Timeline/TimelineSeries.js +2 -0
  171. package/es-modules/Series/Treemap/TreemapSeries.js +3 -3
  172. package/es-modules/Series/Vector/VectorSeries.js +2 -4
  173. package/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -1
  174. package/es-modules/Series/Wordcloud/WordcloudUtils.js +1 -1
  175. package/es-modules/Series/XRange/XRangePoint.js +54 -45
  176. package/es-modules/Series/XRange/XRangeSeries.js +121 -273
  177. package/es-modules/Series/XRange/XRangeSeriesDefaults.js +211 -0
  178. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +10 -2
  179. package/es-modules/Stock/Indicators/AD/ADIndicator.js +5 -0
  180. package/es-modules/Stock/Indicators/AO/AOIndicator.js +22 -11
  181. package/es-modules/Stock/Indicators/APO/APOIndicator.js +6 -1
  182. package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +16 -3
  183. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +15 -2
  184. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +6 -2
  185. package/es-modules/Stock/Indicators/BB/BBIndicator.js +5 -1
  186. package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +16 -3
  187. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +20 -0
  188. package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +15 -1
  189. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +7 -2
  190. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +25 -0
  191. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +5 -0
  192. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +19 -8
  193. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +10 -0
  194. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +34 -15
  195. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +25 -0
  196. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +12 -1
  197. package/es-modules/Stock/Indicators/LinearRegression/{LinearRegression.js → LinearRegressionIndicator.js} +11 -1
  198. package/es-modules/Stock/Indicators/LinearRegressionAngle/{LinearRegressionAngle.js → LinearRegressionAngleIndicator.js} +12 -7
  199. package/es-modules/Stock/Indicators/LinearRegressionIntercept/{LinearRegressionIntercept.js → LinearRegressionInterceptIndicator.js} +11 -1
  200. package/es-modules/Stock/Indicators/LinearRegressionSlopes/{LinearRegressionSlopes.js → LinearRegressionSlopesIndicator.js} +11 -1
  201. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +21 -10
  202. package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +23 -10
  203. package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +30 -2
  204. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +16 -1
  205. package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +10 -0
  206. package/es-modules/Stock/Indicators/PC/PCIndicator.js +13 -8
  207. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +14 -4
  208. package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +16 -3
  209. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +16 -6
  210. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +16 -12
  211. package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +25 -0
  212. package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +15 -2
  213. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +20 -2
  214. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
  215. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +25 -0
  216. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +15 -0
  217. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +17 -3
  218. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +25 -0
  219. package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +14 -4
  220. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +32 -3
  221. package/es-modules/Stock/Indicators/VBP/VBPPoint.js +6 -6
  222. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +11 -1
  223. package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +30 -2
  224. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +10 -0
  225. package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +11 -1
  226. package/es-modules/Stock/StockToolbar.js +568 -0
  227. package/es-modules/Stock/StockTools.js +256 -0
  228. package/es-modules/Stock/StockToolsBindings.js +114 -629
  229. package/es-modules/Stock/StockToolsDefaults.js +1190 -0
  230. package/es-modules/Stock/StockToolsGui.js +150 -1771
  231. package/es-modules/Stock/StockToolsUtilities.js +423 -0
  232. package/es-modules/masters/highcharts-3d.src.js +5 -4
  233. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  234. package/es-modules/masters/highcharts-more.src.js +4 -3
  235. package/es-modules/masters/highcharts.src.js +5 -2
  236. package/es-modules/masters/highmaps.src.js +1 -1
  237. package/es-modules/masters/highstock.src.js +1 -1
  238. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  239. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  240. package/es-modules/masters/indicators/ao.src.js +1 -1
  241. package/es-modules/masters/indicators/apo.src.js +1 -1
  242. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  243. package/es-modules/masters/indicators/aroon.src.js +1 -1
  244. package/es-modules/masters/indicators/atr.src.js +1 -1
  245. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  246. package/es-modules/masters/indicators/cci.src.js +1 -1
  247. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  248. package/es-modules/masters/indicators/cmf.src.js +1 -1
  249. package/es-modules/masters/indicators/cmo.src.js +1 -1
  250. package/es-modules/masters/indicators/dema.src.js +1 -1
  251. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  252. package/es-modules/masters/indicators/dmi.src.js +1 -1
  253. package/es-modules/masters/indicators/dpo.src.js +1 -1
  254. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  255. package/es-modules/masters/indicators/indicators-all.src.js +5 -7
  256. package/es-modules/masters/indicators/indicators.src.js +1 -1
  257. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  258. package/es-modules/masters/indicators/klinger.src.js +1 -1
  259. package/es-modules/masters/indicators/macd.src.js +1 -1
  260. package/es-modules/masters/indicators/mfi.src.js +1 -1
  261. package/es-modules/masters/indicators/momentum.src.js +1 -1
  262. package/es-modules/masters/indicators/natr.src.js +1 -1
  263. package/es-modules/masters/indicators/obv.src.js +1 -1
  264. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  265. package/es-modules/masters/indicators/ppo.src.js +1 -1
  266. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  267. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  268. package/es-modules/masters/indicators/psar.src.js +1 -1
  269. package/es-modules/masters/indicators/regressions.src.js +5 -5
  270. package/es-modules/masters/indicators/roc.src.js +1 -1
  271. package/es-modules/masters/indicators/rsi.src.js +1 -1
  272. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  273. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  274. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  275. package/es-modules/masters/indicators/tema.src.js +1 -1
  276. package/es-modules/masters/indicators/trendline.src.js +1 -1
  277. package/es-modules/masters/indicators/trix.src.js +1 -1
  278. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  279. package/es-modules/masters/indicators/vwap.src.js +1 -1
  280. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  281. package/es-modules/masters/indicators/wma.src.js +1 -1
  282. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  283. package/es-modules/masters/modules/accessibility.src.js +1 -1
  284. package/es-modules/masters/modules/annotations-advanced.src.js +6 -4
  285. package/es-modules/masters/modules/annotations.src.js +6 -4
  286. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  287. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  288. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  289. package/es-modules/masters/modules/boost.src.js +6 -2
  290. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  291. package/es-modules/masters/modules/bullet.src.js +1 -1
  292. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  293. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  294. package/es-modules/masters/modules/cylinder.src.js +1 -1
  295. package/es-modules/masters/modules/data.src.js +1 -1
  296. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  297. package/es-modules/masters/modules/debugger.src.js +5 -3
  298. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  299. package/es-modules/masters/modules/dotplot.src.js +1 -1
  300. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  301. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  302. package/es-modules/masters/modules/drilldown.src.js +1 -1
  303. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  304. package/es-modules/masters/modules/export-data.src.js +5 -2
  305. package/es-modules/masters/modules/exporting.src.js +1 -2
  306. package/es-modules/masters/modules/full-screen.src.js +6 -2
  307. package/es-modules/masters/modules/funnel.src.js +1 -1
  308. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  309. package/es-modules/masters/modules/gantt.src.js +3 -2
  310. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  311. package/es-modules/masters/modules/heatmap.src.js +1 -1
  312. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  313. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  314. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  315. package/es-modules/masters/modules/item-series.src.js +1 -1
  316. package/es-modules/masters/modules/lollipop.src.js +1 -1
  317. package/es-modules/masters/modules/map.src.js +2 -2
  318. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  319. package/es-modules/masters/modules/networkgraph.src.js +5 -2
  320. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  321. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  322. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  323. package/es-modules/masters/modules/oldie.src.js +1 -1
  324. package/es-modules/masters/modules/organization.src.js +1 -1
  325. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  326. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  327. package/es-modules/masters/modules/pareto.src.js +1 -1
  328. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  329. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  330. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  331. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  332. package/es-modules/masters/modules/sankey.src.js +1 -1
  333. package/es-modules/masters/modules/series-label.src.js +1 -1
  334. package/es-modules/masters/modules/series-on-point.src.js +1 -1
  335. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  336. package/es-modules/masters/modules/sonification.src.js +1 -1
  337. package/es-modules/masters/modules/static-scale.src.js +1 -1
  338. package/es-modules/masters/modules/stock-tools.src.js +10 -3
  339. package/es-modules/masters/modules/stock.src.js +1 -1
  340. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  341. package/es-modules/masters/modules/sunburst.src.js +1 -1
  342. package/es-modules/masters/modules/tilemap.src.js +1 -1
  343. package/es-modules/masters/modules/timeline.src.js +1 -1
  344. package/es-modules/masters/modules/treegrid.src.js +2 -2
  345. package/es-modules/masters/modules/treemap.src.js +1 -1
  346. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  347. package/es-modules/masters/modules/variwide.src.js +1 -1
  348. package/es-modules/masters/modules/vector.src.js +1 -1
  349. package/es-modules/masters/modules/venn.src.js +1 -1
  350. package/es-modules/masters/modules/windbarb.src.js +1 -1
  351. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  352. package/es-modules/masters/modules/xrange.src.js +5 -2
  353. package/es-modules/masters/themes/avocado.src.js +1 -1
  354. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  355. package/es-modules/masters/themes/brand-light.src.js +1 -1
  356. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  357. package/es-modules/masters/themes/dark-green.src.js +1 -1
  358. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  359. package/es-modules/masters/themes/gray.src.js +1 -1
  360. package/es-modules/masters/themes/grid-light.src.js +1 -1
  361. package/es-modules/masters/themes/grid.src.js +1 -1
  362. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  363. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  364. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  365. package/es-modules/masters/themes/skies.src.js +1 -1
  366. package/es-modules/masters/themes/sunset.src.js +1 -1
  367. package/highcharts-3d.js +98 -99
  368. package/highcharts-3d.js.map +1 -1
  369. package/highcharts-3d.src.js +232 -211
  370. package/highcharts-gantt.js +808 -809
  371. package/highcharts-gantt.js.map +1 -1
  372. package/highcharts-gantt.src.js +2308 -2136
  373. package/highcharts-more.d.ts +5 -8
  374. package/highcharts-more.js +201 -194
  375. package/highcharts-more.js.map +1 -1
  376. package/highcharts-more.src.d.ts +5 -8
  377. package/highcharts-more.src.js +3671 -3275
  378. package/highcharts.d.ts +1400 -885
  379. package/highcharts.js +593 -595
  380. package/highcharts.js.map +1 -1
  381. package/highcharts.src.d.ts +1400 -885
  382. package/highcharts.src.js +847 -716
  383. package/highmaps.js +762 -763
  384. package/highmaps.js.map +1 -1
  385. package/highmaps.src.js +1288 -1129
  386. package/highstock.js +796 -798
  387. package/highstock.js.map +1 -1
  388. package/highstock.src.js +953 -762
  389. package/indicators/acceleration-bands.js +1 -1
  390. package/indicators/acceleration-bands.js.map +1 -1
  391. package/indicators/acceleration-bands.src.js +11 -3
  392. package/indicators/accumulation-distribution.js +1 -1
  393. package/indicators/accumulation-distribution.js.map +1 -1
  394. package/indicators/accumulation-distribution.src.js +6 -1
  395. package/indicators/ao.js +6 -6
  396. package/indicators/ao.js.map +1 -1
  397. package/indicators/ao.src.js +23 -14
  398. package/indicators/apo.js +1 -1
  399. package/indicators/apo.js.map +1 -1
  400. package/indicators/apo.src.js +6 -1
  401. package/indicators/aroon-oscillator.js +10 -10
  402. package/indicators/aroon-oscillator.js.map +1 -1
  403. package/indicators/aroon-oscillator.src.js +7 -3
  404. package/indicators/aroon.js +1 -1
  405. package/indicators/aroon.js.map +1 -1
  406. package/indicators/aroon.src.js +16 -3
  407. package/indicators/atr.js +1 -1
  408. package/indicators/atr.js.map +1 -1
  409. package/indicators/atr.src.js +17 -4
  410. package/indicators/bollinger-bands.js +1 -1
  411. package/indicators/bollinger-bands.js.map +1 -1
  412. package/indicators/bollinger-bands.src.js +6 -2
  413. package/indicators/cci.js +1 -1
  414. package/indicators/cci.js.map +1 -1
  415. package/indicators/cci.src.js +17 -4
  416. package/indicators/chaikin.js +8 -8
  417. package/indicators/chaikin.js.map +1 -1
  418. package/indicators/chaikin.src.js +13 -5
  419. package/indicators/cmf.js +1 -1
  420. package/indicators/cmf.js.map +1 -1
  421. package/indicators/cmf.src.js +21 -1
  422. package/indicators/cmo.js +1 -1
  423. package/indicators/cmo.js.map +1 -1
  424. package/indicators/cmo.src.js +16 -2
  425. package/indicators/dema.js +1 -1
  426. package/indicators/dema.js.map +1 -1
  427. package/indicators/dema.src.js +26 -1
  428. package/indicators/disparity-index.js +1 -1
  429. package/indicators/disparity-index.src.js +1 -1
  430. package/indicators/dmi.js +1 -1
  431. package/indicators/dmi.js.map +1 -1
  432. package/indicators/dmi.src.js +6 -1
  433. package/indicators/dpo.js +1 -1
  434. package/indicators/dpo.js.map +1 -1
  435. package/indicators/dpo.src.js +20 -9
  436. package/indicators/ichimoku-kinko-hyo.js +1 -1
  437. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  438. package/indicators/ichimoku-kinko-hyo.src.js +35 -16
  439. package/indicators/indicators-all.js +199 -199
  440. package/indicators/indicators-all.js.map +1 -1
  441. package/indicators/indicators-all.src.js +754 -162
  442. package/indicators/indicators.js +1 -1
  443. package/indicators/indicators.js.map +1 -1
  444. package/indicators/indicators.src.js +12 -2
  445. package/indicators/keltner-channels.js +1 -1
  446. package/indicators/keltner-channels.js.map +1 -1
  447. package/indicators/keltner-channels.src.js +26 -1
  448. package/indicators/klinger.js +12 -12
  449. package/indicators/klinger.js.map +1 -1
  450. package/indicators/klinger.src.js +13 -4
  451. package/indicators/macd.js +1 -1
  452. package/indicators/macd.js.map +1 -1
  453. package/indicators/macd.src.js +22 -13
  454. package/indicators/mfi.js +1 -1
  455. package/indicators/mfi.js.map +1 -1
  456. package/indicators/mfi.src.js +24 -11
  457. package/indicators/momentum.js +1 -1
  458. package/indicators/momentum.js.map +1 -1
  459. package/indicators/momentum.src.js +31 -3
  460. package/indicators/natr.js +1 -1
  461. package/indicators/natr.js.map +1 -1
  462. package/indicators/natr.src.js +17 -3
  463. package/indicators/obv.js +1 -1
  464. package/indicators/obv.js.map +1 -1
  465. package/indicators/obv.src.js +11 -1
  466. package/indicators/pivot-points.js +1 -1
  467. package/indicators/pivot-points.js.map +1 -1
  468. package/indicators/pivot-points.src.js +32 -19
  469. package/indicators/ppo.js +1 -1
  470. package/indicators/ppo.js.map +1 -1
  471. package/indicators/ppo.src.js +15 -5
  472. package/indicators/price-channel.js +1 -1
  473. package/indicators/price-channel.js.map +1 -1
  474. package/indicators/price-channel.src.js +14 -9
  475. package/indicators/price-envelopes.js +1 -1
  476. package/indicators/price-envelopes.js.map +1 -1
  477. package/indicators/price-envelopes.src.js +26 -1
  478. package/indicators/psar.js +1 -1
  479. package/indicators/psar.js.map +1 -1
  480. package/indicators/psar.src.js +17 -4
  481. package/indicators/regressions.js +12 -11
  482. package/indicators/regressions.js.map +1 -1
  483. package/indicators/regressions.src.js +50 -15
  484. package/indicators/roc.js +1 -1
  485. package/indicators/roc.js.map +1 -1
  486. package/indicators/roc.src.js +16 -3
  487. package/indicators/rsi.js +1 -1
  488. package/indicators/rsi.js.map +1 -1
  489. package/indicators/rsi.src.js +21 -3
  490. package/indicators/slow-stochastic.js +1 -1
  491. package/indicators/slow-stochastic.js.map +1 -1
  492. package/indicators/slow-stochastic.src.js +26 -1
  493. package/indicators/stochastic.js +1 -1
  494. package/indicators/stochastic.js.map +1 -1
  495. package/indicators/stochastic.src.js +16 -1
  496. package/indicators/supertrend.js +7 -7
  497. package/indicators/supertrend.js.map +1 -1
  498. package/indicators/supertrend.src.js +18 -6
  499. package/indicators/tema.js +1 -1
  500. package/indicators/tema.src.js +1 -1
  501. package/indicators/trendline.js +1 -1
  502. package/indicators/trendline.js.map +1 -1
  503. package/indicators/trendline.src.js +15 -5
  504. package/indicators/trix.js +1 -1
  505. package/indicators/trix.js.map +1 -1
  506. package/indicators/trix.src.js +26 -1
  507. package/indicators/volume-by-price.js +17 -17
  508. package/indicators/volume-by-price.js.map +1 -1
  509. package/indicators/volume-by-price.src.js +38 -10
  510. package/indicators/vwap.js +1 -1
  511. package/indicators/vwap.js.map +1 -1
  512. package/indicators/vwap.src.js +12 -2
  513. package/indicators/williams-r.js +1 -1
  514. package/indicators/williams-r.js.map +1 -1
  515. package/indicators/williams-r.src.js +11 -1
  516. package/indicators/wma.js +1 -1
  517. package/indicators/wma.js.map +1 -1
  518. package/indicators/wma.src.js +31 -3
  519. package/indicators/zigzag.js +1 -1
  520. package/indicators/zigzag.js.map +1 -1
  521. package/indicators/zigzag.src.js +12 -2
  522. package/modules/accessibility.js +183 -182
  523. package/modules/accessibility.js.map +1 -1
  524. package/modules/accessibility.src.js +559 -554
  525. package/modules/annotations-advanced.d.ts +1 -1
  526. package/modules/annotations-advanced.js +193 -192
  527. package/modules/annotations-advanced.js.map +1 -1
  528. package/modules/annotations-advanced.src.d.ts +1 -1
  529. package/modules/annotations-advanced.src.js +9263 -8654
  530. package/modules/annotations.d.ts +1 -1
  531. package/modules/annotations.js +128 -126
  532. package/modules/annotations.js.map +1 -1
  533. package/modules/annotations.src.d.ts +1 -1
  534. package/modules/annotations.src.js +6699 -6063
  535. package/modules/arc-diagram.js +1 -1
  536. package/modules/arc-diagram.src.js +1 -1
  537. package/modules/arrow-symbols.js +1 -1
  538. package/modules/arrow-symbols.src.js +1 -1
  539. package/modules/boost-canvas.d.ts +19 -0
  540. package/modules/boost-canvas.js +81 -16
  541. package/modules/boost-canvas.js.map +1 -1
  542. package/modules/boost-canvas.src.d.ts +19 -0
  543. package/modules/boost-canvas.src.js +3334 -50
  544. package/modules/boost.d.ts +8 -26
  545. package/modules/boost.js +84 -77
  546. package/modules/boost.js.map +1 -1
  547. package/modules/boost.src.d.ts +8 -26
  548. package/modules/boost.src.js +2423 -1888
  549. package/modules/broken-axis.js +2 -2
  550. package/modules/broken-axis.js.map +1 -1
  551. package/modules/broken-axis.src.js +2 -2
  552. package/modules/bullet.js +1 -1
  553. package/modules/bullet.src.js +1 -1
  554. package/modules/coloraxis.js +1 -1
  555. package/modules/coloraxis.js.map +1 -1
  556. package/modules/coloraxis.src.js +5 -1
  557. package/modules/current-date-indicator.js +1 -1
  558. package/modules/current-date-indicator.src.js +1 -1
  559. package/modules/cylinder.js +9 -9
  560. package/modules/cylinder.js.map +1 -1
  561. package/modules/cylinder.src.js +2 -2
  562. package/modules/data.js +1 -1
  563. package/modules/data.src.js +1 -1
  564. package/modules/datagrouping.d.ts +22 -0
  565. package/modules/datagrouping.js +4 -4
  566. package/modules/datagrouping.js.map +1 -1
  567. package/modules/datagrouping.src.d.ts +22 -0
  568. package/modules/datagrouping.src.js +66 -28
  569. package/modules/debugger.js +6 -5
  570. package/modules/debugger.js.map +1 -1
  571. package/modules/debugger.src.js +81 -40
  572. package/modules/dependency-wheel.js +12 -12
  573. package/modules/dependency-wheel.js.map +1 -1
  574. package/modules/dependency-wheel.src.js +41 -14
  575. package/modules/dotplot.js +1 -1
  576. package/modules/dotplot.src.js +1 -1
  577. package/modules/drag-panes.js +1 -1
  578. package/modules/drag-panes.src.js +1 -1
  579. package/modules/draggable-points.js +5 -5
  580. package/modules/draggable-points.js.map +1 -1
  581. package/modules/draggable-points.src.js +5 -4
  582. package/modules/drilldown.d.ts +0 -10
  583. package/modules/drilldown.js +29 -29
  584. package/modules/drilldown.js.map +1 -1
  585. package/modules/drilldown.src.d.ts +0 -10
  586. package/modules/drilldown.src.js +12 -9
  587. package/modules/dumbbell.js +1 -1
  588. package/modules/dumbbell.src.js +1 -1
  589. package/modules/export-data.js +25 -24
  590. package/modules/export-data.js.map +1 -1
  591. package/modules/export-data.src.js +607 -499
  592. package/modules/exporting.js +38 -38
  593. package/modules/exporting.js.map +1 -1
  594. package/modules/exporting.src.js +559 -507
  595. package/modules/full-screen.js +8 -8
  596. package/modules/full-screen.js.map +1 -1
  597. package/modules/full-screen.src.js +76 -26
  598. package/modules/funnel.js +1 -1
  599. package/modules/funnel.src.js +1 -1
  600. package/modules/funnel3d.js +2 -2
  601. package/modules/funnel3d.js.map +1 -1
  602. package/modules/funnel3d.src.js +2 -2
  603. package/modules/gantt.js +217 -216
  604. package/modules/gantt.js.map +1 -1
  605. package/modules/gantt.src.js +1481 -1440
  606. package/modules/grid-axis.js +1 -1
  607. package/modules/grid-axis.src.js +1 -1
  608. package/modules/heatmap.js +1 -1
  609. package/modules/heatmap.js.map +1 -1
  610. package/modules/heatmap.src.js +10 -2
  611. package/modules/heikinashi.js +1 -1
  612. package/modules/heikinashi.src.js +1 -1
  613. package/modules/histogram-bellcurve.js +1 -1
  614. package/modules/histogram-bellcurve.src.js +1 -1
  615. package/modules/hollowcandlestick.js +1 -1
  616. package/modules/hollowcandlestick.src.js +1 -1
  617. package/modules/item-series.js +1 -1
  618. package/modules/item-series.src.js +1 -1
  619. package/modules/lollipop.js +6 -6
  620. package/modules/lollipop.js.map +1 -1
  621. package/modules/lollipop.src.js +37 -22
  622. package/modules/map.d.ts +3 -3
  623. package/modules/map.js +171 -171
  624. package/modules/map.js.map +1 -1
  625. package/modules/map.src.d.ts +3 -3
  626. package/modules/map.src.js +442 -414
  627. package/modules/marker-clusters.js +1 -1
  628. package/modules/marker-clusters.js.map +1 -1
  629. package/modules/marker-clusters.src.js +3 -1
  630. package/modules/networkgraph.js +55 -50
  631. package/modules/networkgraph.js.map +1 -1
  632. package/modules/networkgraph.src.js +2259 -1938
  633. package/modules/no-data-to-display.js +1 -1
  634. package/modules/no-data-to-display.src.js +1 -1
  635. package/modules/offline-exporting.js +2 -2
  636. package/modules/offline-exporting.src.js +2 -2
  637. package/modules/oldie-polyfills.js +1 -1
  638. package/modules/oldie-polyfills.src.js +1 -1
  639. package/modules/oldie.js +2 -2
  640. package/modules/oldie.src.js +2 -2
  641. package/modules/organization.js +15 -15
  642. package/modules/organization.js.map +1 -1
  643. package/modules/organization.src.js +10 -2
  644. package/modules/overlapping-datalabels.js +1 -1
  645. package/modules/overlapping-datalabels.src.js +1 -1
  646. package/modules/parallel-coordinates.js +11 -11
  647. package/modules/parallel-coordinates.js.map +1 -1
  648. package/modules/parallel-coordinates.src.js +13 -8
  649. package/modules/pareto.js +1 -1
  650. package/modules/pareto.src.js +1 -1
  651. package/modules/pathfinder.js +1 -1
  652. package/modules/pathfinder.src.js +1 -1
  653. package/modules/pattern-fill.js +1 -1
  654. package/modules/pattern-fill.src.js +1 -1
  655. package/modules/price-indicator.js +1 -1
  656. package/modules/price-indicator.src.js +1 -1
  657. package/modules/pyramid3d.js +1 -1
  658. package/modules/pyramid3d.src.js +1 -1
  659. package/modules/sankey.js +1 -1
  660. package/modules/sankey.js.map +1 -1
  661. package/modules/sankey.src.js +14 -2
  662. package/modules/series-label.js +5 -5
  663. package/modules/series-label.js.map +1 -1
  664. package/modules/series-label.src.js +3 -3
  665. package/modules/series-on-point.js +1 -1
  666. package/modules/series-on-point.js.map +1 -1
  667. package/modules/series-on-point.src.js +6 -2
  668. package/modules/solid-gauge.js +1 -1
  669. package/modules/solid-gauge.src.js +2 -2
  670. package/modules/sonification.d.ts +2 -2
  671. package/modules/sonification.js +1 -1
  672. package/modules/sonification.src.d.ts +2 -2
  673. package/modules/sonification.src.js +2 -2
  674. package/modules/static-scale.js +1 -1
  675. package/modules/static-scale.src.js +1 -1
  676. package/modules/stock-tools.d.ts +1 -23
  677. package/modules/stock-tools.js +109 -179
  678. package/modules/stock-tools.js.map +1 -1
  679. package/modules/stock-tools.src.d.ts +1 -23
  680. package/modules/stock-tools.src.js +2605 -6335
  681. package/modules/stock.d.ts +8 -0
  682. package/modules/stock.js +105 -105
  683. package/modules/stock.js.map +1 -1
  684. package/modules/stock.src.d.ts +8 -0
  685. package/modules/stock.src.js +105 -45
  686. package/modules/streamgraph.js +1 -1
  687. package/modules/streamgraph.src.js +1 -1
  688. package/modules/sunburst.js +72 -72
  689. package/modules/sunburst.js.map +1 -1
  690. package/modules/sunburst.src.js +38 -12
  691. package/modules/tilemap.js +1 -1
  692. package/modules/tilemap.src.js +1 -1
  693. package/modules/timeline.js +1 -1
  694. package/modules/timeline.js.map +1 -1
  695. package/modules/timeline.src.js +3 -1
  696. package/modules/treegrid.js +57 -57
  697. package/modules/treegrid.js.map +1 -1
  698. package/modules/treegrid.src.js +1022 -1014
  699. package/modules/treemap.js +1 -1
  700. package/modules/treemap.js.map +1 -1
  701. package/modules/treemap.src.js +8 -4
  702. package/modules/variable-pie.js +1 -1
  703. package/modules/variable-pie.src.js +1 -1
  704. package/modules/variwide.js +1 -1
  705. package/modules/variwide.src.js +1 -1
  706. package/modules/vector.js +2 -2
  707. package/modules/vector.js.map +1 -1
  708. package/modules/vector.src.js +3 -5
  709. package/modules/venn.js +1 -1
  710. package/modules/venn.src.js +5 -5
  711. package/modules/windbarb.js +1 -1
  712. package/modules/windbarb.src.js +1 -1
  713. package/modules/wordcloud.js +1 -1
  714. package/modules/wordcloud.src.js +3 -3
  715. package/modules/xrange.js +17 -17
  716. package/modules/xrange.js.map +1 -1
  717. package/modules/xrange.src.js +411 -397
  718. package/package.json +1 -1
  719. package/themes/avocado.js +1 -1
  720. package/themes/avocado.src.js +1 -1
  721. package/themes/brand-dark.js +1 -1
  722. package/themes/brand-dark.src.js +1 -1
  723. package/themes/brand-light.js +1 -1
  724. package/themes/brand-light.src.js +1 -1
  725. package/themes/dark-blue.js +1 -1
  726. package/themes/dark-blue.src.js +1 -1
  727. package/themes/dark-green.js +1 -1
  728. package/themes/dark-green.src.js +1 -1
  729. package/themes/dark-unica.js +1 -1
  730. package/themes/dark-unica.src.js +1 -1
  731. package/themes/gray.js +1 -1
  732. package/themes/gray.src.js +1 -1
  733. package/themes/grid-light.js +1 -1
  734. package/themes/grid-light.src.js +1 -1
  735. package/themes/grid.js +1 -1
  736. package/themes/grid.src.js +1 -1
  737. package/themes/high-contrast-dark.js +1 -1
  738. package/themes/high-contrast-dark.src.js +1 -1
  739. package/themes/high-contrast-light.js +1 -1
  740. package/themes/high-contrast-light.src.js +1 -1
  741. package/themes/sand-signika.js +1 -1
  742. package/themes/sand-signika.src.js +1 -1
  743. package/themes/skies.js +1 -1
  744. package/themes/skies.src.js +1 -1
  745. package/themes/sunset.js +1 -1
  746. package/themes/sunset.src.js +1 -1
  747. package/es-modules/Core/Axis/StackingAxis.js +0 -215
  748. package/es-modules/Core/Axis/TreeGridAxis.js +0 -720
  749. package/es-modules/Core/Axis/TreeGridTick.js +0 -317
  750. package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
  751. package/es-modules/Extensions/Annotations/Mixins/MarkerMixin.js +0 -179
  752. package/es-modules/Extensions/Annotations/Popup.js +0 -1123
  753. package/es-modules/Extensions/Boost/BoostAttach.js +0 -154
  754. package/es-modules/Extensions/Boost/BoostInit.js +0 -324
  755. package/es-modules/Extensions/Boost/BoostOptions.js +0 -245
  756. package/es-modules/Extensions/Boost/BoostOverrides.js +0 -386
  757. package/es-modules/Extensions/Boost/BoostUtils.js +0 -255
  758. package/es-modules/Extensions/Boost/WGLVBuffer.js +0 -153
  759. package/es-modules/Extensions/Stacking.js +0 -517
  760. package/es-modules/Series/Networkgraph/DraggableNodes.js +0 -132
  761. package/es-modules/Series/Networkgraph/Integrations.js +0 -348
  762. package/es-modules/Series/Networkgraph/Networkgraph.js +0 -1180
  763. package/es-modules/Series/XRange/XRangeComposition.js +0 -49
package/highcharts.src.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v10.2.0 (2022-07-05)
2
+ * @license Highcharts JS v10.2.1 (2022-08-29)
3
3
  *
4
4
  * (c) 2009-2021 Torstein Honsi
5
5
  *
@@ -55,6 +55,7 @@
55
55
  * */
56
56
  /**
57
57
  * Shared Highcharts properties.
58
+ * @private
58
59
  */
59
60
  var Globals;
60
61
  (function (Globals) {
@@ -63,7 +64,7 @@
63
64
  * Constants
64
65
  *
65
66
  * */
66
- Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '10.2.0', Globals.win = (typeof window !== 'undefined' ?
67
+ Globals.SVG_NS = 'http://www.w3.org/2000/svg', Globals.product = 'Highcharts', Globals.version = '10.2.1', Globals.win = (typeof window !== 'undefined' ?
67
68
  window :
68
69
  {}), // eslint-disable-line node/no-unsupported-features/es-builtins
69
70
  Globals.doc = Globals.win.document, Globals.svg = (Globals.doc &&
@@ -1179,7 +1180,7 @@
1179
1180
  }
1180
1181
  // Otherwise, get the computed style
1181
1182
  var css = win.getComputedStyle(el,
1182
- undefined); // eslint-disable-line no-undefined
1183
+ void 0); // eslint-disable-line no-undefined
1183
1184
  if (css) {
1184
1185
  style = css.getPropertyValue(prop);
1185
1186
  if (pick(toInt, prop !== 'opacity')) {
@@ -1304,8 +1305,6 @@
1304
1305
  *
1305
1306
  * @param {T} [ctx]
1306
1307
  * The context.
1307
- *
1308
- * @return {void}
1309
1308
  */
1310
1309
  function objectEach(obj, fn, ctx) {
1311
1310
  /* eslint-enable valid-jsdoc */
@@ -2642,6 +2641,7 @@
2642
2641
  * @default {highstock} x
2643
2642
  * @since 3.0
2644
2643
  * @product highcharts highstock gantt
2644
+ * @deprecated
2645
2645
  * @validvalue ["x", "y", "xy"]
2646
2646
  * @apioption chart.pinchType
2647
2647
  */
@@ -2760,6 +2760,7 @@
2760
2760
  /**
2761
2761
  * The button that appears after a selection zoom, allowing the user
2762
2762
  * to reset zoom.
2763
+ * @deprecated
2763
2764
  */
2764
2765
  resetZoomButton: {
2765
2766
  /**
@@ -2773,6 +2774,7 @@
2773
2774
  *
2774
2775
  * @type {Highcharts.ButtonRelativeToValue}
2775
2776
  * @default plot
2777
+ * @deprecated
2776
2778
  * @since 2.2
2777
2779
  * @apioption chart.resetZoomButton.relativeTo
2778
2780
  */
@@ -2789,10 +2791,14 @@
2789
2791
  * Theming the button
2790
2792
  *
2791
2793
  * @type {Highcharts.SVGAttributes}
2794
+ * @deprecated
2792
2795
  * @since 2.2
2793
2796
  */
2794
2797
  theme: {
2795
- /** @internal */
2798
+ /**
2799
+ * @internal
2800
+ * @deprecated
2801
+ */
2796
2802
  zIndex: 6
2797
2803
  },
2798
2804
  /**
@@ -2806,26 +2812,31 @@
2806
2812
  * Above the plot area
2807
2813
  *
2808
2814
  * @type {Highcharts.AlignObject}
2815
+ * @deprecated
2809
2816
  * @since 2.2
2810
2817
  */
2811
2818
  position: {
2812
2819
  /**
2813
2820
  * The horizontal alignment of the button.
2821
+ * @deprecated
2814
2822
  */
2815
2823
  align: 'right',
2816
2824
  /**
2817
2825
  * The horizontal offset of the button.
2826
+ * @deprecated
2818
2827
  */
2819
2828
  x: -10,
2820
2829
  /**
2821
2830
  * The vertical alignment of the button.
2822
2831
  *
2823
2832
  * @type {Highcharts.VerticalAlignValue}
2833
+ * @deprecated
2824
2834
  * @default top
2825
2835
  * @apioption chart.resetZoomButton.position.verticalAlign
2826
2836
  */
2827
2837
  /**
2828
2838
  * The vertical offset of the button.
2839
+ * @deprecated
2829
2840
  */
2830
2841
  y: 10
2831
2842
  }
@@ -3107,6 +3118,7 @@
3107
3118
  *
3108
3119
  * @type {string}
3109
3120
  * @validvalue ["x", "y", "xy"]
3121
+ * @deprecated
3110
3122
  * @apioption chart.zoomType
3111
3123
  */
3112
3124
  /**
@@ -3116,12 +3128,148 @@
3116
3128
  * However, `zoomBySingleTouch` will interfere with touch-dragging the
3117
3129
  * chart to read the tooltip. And especially when vertical zooming is
3118
3130
  * enabled, it will make it hard to scroll vertically on the page.
3119
- * @since 9.0.0
3131
+ * @since 9.0.0
3120
3132
  * @sample highcharts/chart/zoombysingletouch
3121
3133
  * Zoom by single touch enabled, with buttons to toggle
3122
3134
  * @product highcharts highstock gantt
3135
+ * @deprecated
3123
3136
  */
3124
3137
  zoomBySingleTouch: false,
3138
+ /**
3139
+ * Chart zooming options.
3140
+ * @since 10.2.1
3141
+ */
3142
+ zooming: {
3143
+ /**
3144
+ * Equivalent to [type](#chart.zooming.type), but for multitouch
3145
+ * gestures only. By default, the `pinchType` is the same as the
3146
+ * `type` setting. However, pinching can be enabled separately in
3147
+ * some cases, for example in stock charts where a mouse drag pans the
3148
+ * chart, while pinching is enabled. When [tooltip.followTouchMove](
3149
+ * #tooltip.followTouchMove) is true, pinchType only applies to
3150
+ * two-finger touches.
3151
+ *
3152
+ * @type {string}
3153
+ * @default {highcharts} undefined
3154
+ * @default {highstock} x
3155
+ * @product highcharts highstock gantt
3156
+ * @since 10.2.1
3157
+ * @validvalue ["x", "y", "xy"]
3158
+ * @apioption chart.zooming.pinchType
3159
+ */
3160
+ /**
3161
+ * Decides in what dimensions the user can zoom by dragging the mouse.
3162
+ * Can be one of `x`, `y` or `xy`.
3163
+ *
3164
+ * @type {string}
3165
+ * @default {highcharts} undefined
3166
+ * @product highcharts highstock gantt
3167
+ * @validvalue ["x", "y", "xy"]
3168
+ * @since 10.2.1
3169
+ * @apioption chart.zooming.type
3170
+ */
3171
+ /**
3172
+ * Set a key to hold when dragging to zoom the chart. This is useful to
3173
+ * avoid zooming while moving points. Should be set different than
3174
+ * [chart.panKey](#chart.panKey).
3175
+ *
3176
+ * @type {string}
3177
+ * @default {highcharts} undefined
3178
+ * @since 10.2.1
3179
+ * @validvalue ["alt", "ctrl", "meta", "shift"]
3180
+ * @requires modules/draggable-points
3181
+ * @apioption chart.zooming.key
3182
+ */
3183
+ /**
3184
+ * Enables zooming by a single touch, in combination with
3185
+ * [chart.zooming.type](#chart.zooming.type). When enabled, two-finger
3186
+ * pinch will still work as set up by [chart.zooming.pinchType]
3187
+ * (#chart.zooming.pinchType). However, `singleTouch` will interfere
3188
+ * with touch-dragging the chart to read the tooltip. And especially
3189
+ * when vertical zooming is enabled, it will make it hard to scroll
3190
+ * vertically on the page.
3191
+ * @sample highcharts/chart/zoombysingletouch
3192
+ * Zoom by single touch enabled, with buttons to toggle
3193
+ * @product highcharts highstock gantt
3194
+ * @since 10.2.1
3195
+ */
3196
+ singleTouch: false,
3197
+ /**
3198
+ * The button that appears after a selection zoom, allowing the user
3199
+ * to reset zoom.
3200
+ * @since 10.2.1
3201
+ */
3202
+ resetButton: {
3203
+ /**
3204
+ * What frame the button placement should be related to. Can be
3205
+ * either `plotBox` or `spacingBox`.
3206
+ *
3207
+ * @sample {highcharts} highcharts/chart/resetzoombutton-relativeto/
3208
+ * Relative to the chart
3209
+ * @sample {highstock} highcharts/chart/resetzoombutton-relativeto/
3210
+ * Relative to the chart
3211
+ *
3212
+ * @type {Highcharts.ButtonRelativeToValue}
3213
+ * @default plot
3214
+ * @since 10.2.1
3215
+ * @apioption chart.zooming.resetButton.relativeTo
3216
+ */
3217
+ /**
3218
+ * A collection of attributes for the button. The object takes SVG
3219
+ * attributes like `fill`, `stroke`, `stroke-width` or `r`, the
3220
+ * border radius. The theme also supports `style`, a collection of
3221
+ * CSS properties for the text. Equivalent attributes for the hover
3222
+ * state are given in `theme.states.hover`.
3223
+ *
3224
+ * @sample {highcharts} highcharts/chart/resetzoombutton-theme/
3225
+ * Theming the button
3226
+ * @sample {highstock} highcharts/chart/resetzoombutton-theme/
3227
+ * Theming the button
3228
+ *
3229
+ * @type {Highcharts.SVGAttributes}
3230
+ * @since 10.2.1
3231
+ */
3232
+ theme: {
3233
+ /** @internal */
3234
+ zIndex: 6
3235
+ },
3236
+ /**
3237
+ * The position of the button.
3238
+ *
3239
+ * @sample {highcharts} highcharts/chart/resetzoombutton-position/
3240
+ * Above the plot area
3241
+ * @sample {highstock} highcharts/chart/resetzoombutton-position/
3242
+ * Above the plot area
3243
+ * @sample {highmaps} highcharts/chart/resetzoombutton-position/
3244
+ * Above the plot area
3245
+ *
3246
+ * @type {Highcharts.AlignObject}
3247
+ * @since 10.2.1
3248
+ */
3249
+ position: {
3250
+ /**
3251
+ * The horizontal alignment of the button.
3252
+ */
3253
+ align: 'right',
3254
+ /**
3255
+ * The horizontal offset of the button.
3256
+ */
3257
+ x: -10,
3258
+ /**
3259
+ * The vertical alignment of the button.
3260
+ *
3261
+ * @type {Highcharts.VerticalAlignValue}
3262
+ * @since 10.2.1
3263
+ * @default top
3264
+ * @apioption chart.zooming.resetButton.position.verticalAlign
3265
+ */
3266
+ /**
3267
+ * The vertical offset of the button.
3268
+ */
3269
+ y: 10
3270
+ }
3271
+ }
3272
+ },
3125
3273
  /**
3126
3274
  * An explicit width for the chart. By default (when `null`) the width
3127
3275
  * is calculated from the offset width of the containing element.
@@ -4520,6 +4668,7 @@
4520
4668
  * @type {Highcharts.Options}
4521
4669
  */ /**
4522
4670
  * @optionparent
4671
+ * @private
4523
4672
  */
4524
4673
  var defaultOptions = {
4525
4674
  /**
@@ -4552,7 +4701,7 @@
4552
4701
  * @sample {highcharts} highcharts/chart/colors/
4553
4702
  * Assign a global color theme
4554
4703
  *
4555
- * @type {Array<Highcharts.ColorString>}
4704
+ * @type {Array<(Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject)>}
4556
4705
  * @default ["#7cb5ec", "#434348", "#90ed7d", "#f7a35c", "#8085e9",
4557
4706
  * "#f15c80", "#e4d354", "#2b908f", "#f45b5b", "#91e8e1"]
4558
4707
  */
@@ -8112,7 +8261,8 @@
8112
8261
  .trim()
8113
8262
  // The style attribute throws a warning when parsing when CSP is
8114
8263
  // enabled (#6884), so use an alias and pick it up below
8115
- .replace(/ style="/g, ' data-style="');
8264
+ // Make all quotation marks parse correctly to DOM (#17627)
8265
+ .replace(/ style=(["'])/g, ' data-style=$1');
8116
8266
  var doc;
8117
8267
  if (hasValidDOMParser) {
8118
8268
  doc = new DOMParser().parseFromString(trustedTypesPolicy ?
@@ -8237,6 +8387,7 @@
8237
8387
  'target',
8238
8388
  'tabindex',
8239
8389
  'text-align',
8390
+ 'text-anchor',
8240
8391
  'textAnchor',
8241
8392
  'textLength',
8242
8393
  'title',
@@ -8337,6 +8488,7 @@
8337
8488
  'svg',
8338
8489
  'table',
8339
8490
  'text',
8491
+ 'textPath',
8340
8492
  'thead',
8341
8493
  'tbody',
8342
8494
  'tspan',
@@ -8835,7 +8987,7 @@
8835
8987
 
8836
8988
  return RendererUtilities;
8837
8989
  });
8838
- _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, AST, Color, H, U) {
8990
+ _registerModule(_modules, 'Core/Renderer/SVG/SVGElement.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (A, Color, H, U) {
8839
8991
  /* *
8840
8992
  *
8841
8993
  * (c) 2010-2021 Torstein Honsi
@@ -8870,6 +9022,7 @@
8870
9022
  objectEach = U.objectEach,
8871
9023
  pick = U.pick,
8872
9024
  pInt = U.pInt,
9025
+ removeEvent = U.removeEvent,
8873
9026
  syncTimeout = U.syncTimeout,
8874
9027
  uniqueKey = U.uniqueKey;
8875
9028
  /* *
@@ -9287,27 +9440,32 @@
9287
9440
  });
9288
9441
  // For each of the tspans and text nodes, create a copy in the
9289
9442
  // outline.
9290
- [].forEach.call(elem.childNodes, function (childNode) {
9443
+ var parentElem = elem.querySelector('textPath') || elem;
9444
+ [].forEach.call(parentElem.childNodes, function (childNode) {
9291
9445
  var clone = childNode.cloneNode(true);
9292
9446
  if (clone.removeAttribute) {
9293
- ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone.removeAttribute(prop); });
9447
+ ['fill', 'stroke', 'stroke-width', 'stroke'].forEach(function (prop) { return clone
9448
+ .removeAttribute(prop); });
9294
9449
  }
9295
9450
  outline_1.appendChild(clone);
9296
9451
  });
9452
+ // Collect the sum of dy from all children, included nested ones
9453
+ var totalHeight_1 = 0;
9454
+ [].forEach.call(parentElem.querySelectorAll('text tspan'), function (element) {
9455
+ totalHeight_1 += Number(element.getAttribute('dy'));
9456
+ });
9297
9457
  // Insert an absolutely positioned break before the original text
9298
9458
  // to keep it in place
9299
- var br_1 = doc.createElementNS(SVG_NS, 'tspan');
9300
- br_1.textContent = '\u200B';
9301
- // Copy x and y if not null
9302
- ['x', 'y'].forEach(function (key) {
9303
- var value = elem.getAttribute(key);
9304
- if (value) {
9305
- br_1.setAttribute(key, value);
9306
- }
9459
+ var br = doc.createElementNS(SVG_NS, 'tspan');
9460
+ br.textContent = '\u200B';
9461
+ // Reset the position for the following text
9462
+ attr(br, {
9463
+ x: Number(elem.getAttribute('x')),
9464
+ dy: -totalHeight_1
9307
9465
  });
9308
9466
  // Insert the outline
9309
- outline_1.appendChild(br_1);
9310
- elem.insertBefore(outline_1, elem.firstChild);
9467
+ outline_1.appendChild(br);
9468
+ parentElem.insertBefore(outline_1, parentElem.firstChild);
9311
9469
  }
9312
9470
  };
9313
9471
  /**
@@ -9797,42 +9955,6 @@
9797
9955
  }, this);
9798
9956
  this.shadows = void 0;
9799
9957
  };
9800
- /**
9801
- * @private
9802
- */
9803
- SVGElement.prototype.destroyTextPath = function (elem, path) {
9804
- var textElement = elem.getElementsByTagName('text')[0];
9805
- var childNodes;
9806
- if (textElement) {
9807
- // Remove textPath attributes
9808
- textElement.removeAttribute('dx');
9809
- textElement.removeAttribute('dy');
9810
- // Remove ID's:
9811
- path.element.setAttribute('id', '');
9812
- // Check if textElement includes textPath,
9813
- if (this.textPathWrapper &&
9814
- textElement.getElementsByTagName('textPath').length) {
9815
- // Move nodes to <text>
9816
- childNodes = this.textPathWrapper.element.childNodes;
9817
- // Now move all <tspan>'s and text nodes to the <textPath> node
9818
- while (childNodes.length) {
9819
- textElement.appendChild(childNodes[0]);
9820
- }
9821
- // Remove <textPath> from the DOM
9822
- textElement.removeChild(this.textPathWrapper.element);
9823
- }
9824
- }
9825
- else if (elem.getAttribute('dx') || elem.getAttribute('dy')) {
9826
- // Remove textPath attributes from elem
9827
- // to get correct text-outline position
9828
- elem.removeAttribute('dx');
9829
- elem.removeAttribute('dy');
9830
- }
9831
- if (this.textPathWrapper) {
9832
- // Set textPathWrapper to undefined and destroy it
9833
- this.textPathWrapper = this.textPathWrapper.destroy();
9834
- }
9835
- };
9836
9958
  /**
9837
9959
  * @private
9838
9960
  * @function Highcharts.SVGElement#dSettter
@@ -9991,9 +10113,12 @@
9991
10113
  // SVG: use extend because IE9 is not allowed to change
9992
10114
  // width and height in case of rotation (below)
9993
10115
  extend({}, element.getBBox()) : {
9994
- // Legacy IE in export mode
10116
+ // HTML elements with `exporting.allowHTML` and
10117
+ // legacy IE in export mode
9995
10118
  width: element.offsetWidth,
9996
- height: element.offsetHeight
10119
+ height: element.offsetHeight,
10120
+ x: 0,
10121
+ y: 0
9997
10122
  };
9998
10123
  // #3842
9999
10124
  if (isFunction(toggleTextShadowShim)) {
@@ -10298,26 +10423,27 @@
10298
10423
  return this;
10299
10424
  };
10300
10425
  /**
10301
- * @private
10426
+ * Set a text path for a `text` or `label` element, allowing the text to
10427
+ * flow along a path.
10428
+ *
10429
+ * In order to unset the path for an existing element, call `setTextPath`
10430
+ * with `{ enabled: false }` as the second argument.
10431
+ *
10432
+ * @sample highcharts/members/renderer-textpath/ Text path demonstrated
10433
+ *
10302
10434
  * @function Highcharts.SVGElement#setTextPath
10303
- * @param {Highcharts.SVGElement} path
10304
- * Path to follow.
10435
+ *
10436
+ * @param {Highcharts.SVGElement|undefined} path
10437
+ * Path to follow. If undefined, it allows changing options for the
10438
+ * existing path.
10439
+ *
10305
10440
  * @param {Highcharts.DataLabelsTextPathOptionsObject} textPathOptions
10306
- * Options.
10307
- * @return {Highcharts.SVGElement}
10308
- * Returns the SVGElement for chaining.
10441
+ * Options.
10442
+ *
10443
+ * @return {Highcharts.SVGElement} Returns the SVGElement for chaining.
10309
10444
  */
10310
10445
  SVGElement.prototype.setTextPath = function (path, textPathOptions) {
10311
- var elem = this.element,
10312
- textNode = this.text ? this.text.element : elem,
10313
- attribsMap = {
10314
- textAnchor: 'text-anchor'
10315
- };
10316
- var adder = false,
10317
- textPathElement,
10318
- textPathId,
10319
- textPathWrapper = this.textPathWrapper,
10320
- firstTime = !textPathWrapper;
10446
+ var _this = this;
10321
10447
  // Defaults
10322
10448
  textPathOptions = merge(true, {
10323
10449
  enabled: true,
@@ -10327,109 +10453,70 @@
10327
10453
  textAnchor: 'middle'
10328
10454
  }
10329
10455
  }, textPathOptions);
10330
- var attrs = AST.filterUserAttributes(textPathOptions.attributes);
10331
- if (path && textPathOptions && textPathOptions.enabled) {
10332
- // In case of fixed width for a text, string is rebuilt
10333
- // (e.g. ellipsis is applied), so we need to rebuild textPath too
10334
- if (textPathWrapper &&
10335
- textPathWrapper.element.parentNode === null) {
10336
- // When buildText functionality was triggered again
10337
- // and deletes textPathWrapper parentNode
10338
- firstTime = true;
10339
- textPathWrapper = textPathWrapper.destroy();
10340
- }
10341
- else if (textPathWrapper) {
10342
- // Case after drillup when spans were added into
10343
- // the DOM outside the textPathWrapper parentGroup
10344
- this.removeTextOutline.call(textPathWrapper.parentGroup);
10345
- }
10346
- // label() has padding, text() doesn't
10347
- if (this.options && this.options.padding) {
10348
- attrs.dx = -this.options.padding;
10349
- }
10350
- if (!textPathWrapper) {
10351
- // Create <textPath>, defer the DOM adder
10352
- this.textPathWrapper = textPathWrapper =
10353
- this.renderer.createElement('textPath');
10354
- adder = true;
10355
- }
10356
- textPathElement = textPathWrapper.element;
10357
- // Set ID for the path
10358
- textPathId = path.element.getAttribute('id');
10359
- if (!textPathId) {
10360
- path.element.setAttribute('id', textPathId = uniqueKey());
10361
- }
10362
- // Change DOM structure, by placing <textPath> tag in <text>
10363
- if (firstTime) {
10364
- // Adjust the position
10365
- textNode.setAttribute('y', 0); // Firefox
10366
- if (isNumber(attrs.dx)) {
10367
- textNode.setAttribute('x', -attrs.dx);
10368
- }
10369
- // Move all <tspan>'s and text nodes to the <textPath> node. Do
10370
- // not move other elements like <title> or <path>
10371
- var childNodes = [].slice.call(textNode.childNodes);
10372
- for (var i = 0; i < childNodes.length; i++) {
10373
- var childNode = childNodes[i];
10374
- if (childNode.nodeType === win.Node.TEXT_NODE ||
10375
- childNode.nodeName === 'tspan') {
10376
- textPathElement.appendChild(childNode);
10456
+ var url = this.renderer.url,
10457
+ textWrapper = this.text || this,
10458
+ textPath = textWrapper.textPath,
10459
+ attributes = textPathOptions.attributes,
10460
+ enabled = textPathOptions.enabled;
10461
+ path = path || (textPath && textPath.path);
10462
+ // Remove previously added event
10463
+ if (textPath) {
10464
+ textPath.undo();
10465
+ }
10466
+ if (path && enabled) {
10467
+ var undo = addEvent(textWrapper, 'afterModifyTree',
10468
+ function (e) {
10469
+ if (path && enabled) {
10470
+ // Set ID for the path
10471
+ var textPathId = path.attr('id');
10472
+ if (!textPathId) {
10473
+ path.attr('id', textPathId = uniqueKey());
10474
+ }
10475
+ // Set attributes for the <text>
10476
+ var textAttribs = {
10477
+ // dx/dy options must by set on <text> (parent), the
10478
+ // rest should be set on <textPath>
10479
+ x: 0,
10480
+ y: 0
10481
+ };
10482
+ if (defined(attributes.dx)) {
10483
+ textAttribs.dx = attributes.dx;
10484
+ delete attributes.dx;
10377
10485
  }
10486
+ if (defined(attributes.dy)) {
10487
+ textAttribs.dy = attributes.dy;
10488
+ delete attributes.dy;
10489
+ }
10490
+ textWrapper.attr(textAttribs);
10491
+ // Handle label properties
10492
+ _this.attr({ transform: '' });
10493
+ if (_this.box) {
10494
+ _this.box = _this.box.destroy();
10495
+ }
10496
+ // Wrap the nodes in a textPath
10497
+ var children = e.nodes.slice(0);
10498
+ e.nodes.length = 0;
10499
+ e.nodes[0] = {
10500
+ tagName: 'textPath',
10501
+ attributes: extend(attributes, {
10502
+ 'text-anchor': attributes.textAnchor,
10503
+ href: "" + url + "#".concat(textPathId)
10504
+ }),
10505
+ children: children
10506
+ };
10378
10507
  }
10379
- }
10380
- // Add <textPath> to the DOM
10381
- if (adder && textPathWrapper) {
10382
- textPathWrapper.add({ element: textNode });
10383
- }
10384
- // Set basic options:
10385
- // Use `setAttributeNS` because Safari needs this..
10386
- textPathElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', this.renderer.url + '#' + textPathId);
10387
- // Presentation attributes:
10388
- // dx/dy options must by set on <text> (parent),
10389
- // the rest should be set on <textPath>
10390
- if (defined(attrs.dy)) {
10391
- textPathElement.parentNode
10392
- .setAttribute('dy', attrs.dy);
10393
- delete attrs.dy;
10394
- }
10395
- if (defined(attrs.dx)) {
10396
- textPathElement.parentNode
10397
- .setAttribute('dx', attrs.dx);
10398
- delete attrs.dx;
10399
- }
10400
- // Additional attributes
10401
- objectEach(attrs, function (val, key) {
10402
- textPathElement.setAttribute(attribsMap[key] || key, val);
10403
10508
  });
10404
- // Remove translation, text that follows path does not need that
10405
- elem.removeAttribute('transform');
10406
- // Remove shadows and text outlines
10407
- this.removeTextOutline.call(textPathWrapper);
10408
- // Remove background and border for label(), see #10545
10409
- // Alternatively, we can disable setting background rects in
10410
- // series.drawDataLabels()
10411
- if (this.text && !this.renderer.styledMode) {
10412
- this.attr({
10413
- fill: 'none',
10414
- 'stroke-width': 0
10415
- });
10416
- }
10417
- // Disable some functions
10418
- this.updateTransform = noop;
10419
- this.applyTextOutline = noop;
10420
- }
10421
- else if (textPathWrapper) {
10422
- // Reset to prototype
10423
- delete this.updateTransform;
10424
- delete this.applyTextOutline;
10425
- // Restore DOM structure:
10426
- this.destroyTextPath(elem, path);
10427
- // Bring attributes back
10428
- this.updateTransform();
10429
- // Set textOutline back for text()
10430
- if (this.options && this.options.rotation) {
10431
- this.applyTextOutline(this.options.style.textOutline);
10432
- }
10509
+ // Set the reference
10510
+ textWrapper.textPath = { path: path, undo: undo };
10511
+ }
10512
+ else {
10513
+ textWrapper.attr({ dx: 0, dy: 0 });
10514
+ delete textWrapper.textPath;
10515
+ }
10516
+ if (this.added) {
10517
+ // Rebuild text after added
10518
+ textWrapper.textCache = '';
10519
+ this.renderer.buildText(textWrapper);
10433
10520
  }
10434
10521
  return this;
10435
10522
  };
@@ -10811,7 +10898,7 @@
10811
10898
  if (defined(scaleX) || defined(scaleY)) {
10812
10899
  transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');
10813
10900
  }
10814
- if (transform.length) {
10901
+ if (transform.length && !(wrapper.text || wrapper).textPath) {
10815
10902
  element.setAttribute('transform', transform.join(' '));
10816
10903
  }
10817
10904
  };
@@ -11062,6 +11149,12 @@
11062
11149
  * @name Highcharts.SVGAttributes#d
11063
11150
  * @type {string|Highcharts.SVGPathArray|undefined}
11064
11151
  */ /**
11152
+ * @name Highcharts.SVGAttributes#dx
11153
+ * @type {number|undefined}
11154
+ */ /**
11155
+ * @name Highcharts.SVGAttributes#dy
11156
+ * @type {number|undefined}
11157
+ */ /**
11065
11158
  * @name Highcharts.SVGAttributes#fill
11066
11159
  * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject|undefined}
11067
11160
  */ /**
@@ -11474,7 +11567,8 @@
11474
11567
  * the new bounding box and reflect it in the border box.
11475
11568
  */
11476
11569
  SVGLabel.prototype.updateBoxSize = function () {
11477
- var style = this.text.element.style,
11570
+ var text = this.text,
11571
+ style = text.element.style,
11478
11572
  attribs = {},
11479
11573
  padding = this.padding,
11480
11574
  // #12165 error when width is null (auto)
@@ -11482,14 +11576,14 @@
11482
11576
  // #3295 && 3514 box failure when string equals 0
11483
11577
  bBox = this.bBox = (((!isNumber(this.widthSetting) ||
11484
11578
  !isNumber(this.heightSetting) ||
11485
- this.textAlign) && defined(this.text.textStr)) ?
11486
- this.text.getBBox() :
11579
+ this.textAlign) && defined(text.textStr)) ?
11580
+ text.getBBox() :
11487
11581
  SVGLabel.emptyBBox);
11488
11582
  var crispAdjust;
11489
11583
  this.width = this.getPaddedWidth();
11490
11584
  this.height = (this.heightSetting || bBox.height || 0) + 2 * padding;
11491
11585
  var metrics = this.renderer.fontMetrics(style && style.fontSize,
11492
- this.text);
11586
+ text);
11493
11587
  // Update the label-scoped y offset. Math.min because of inline
11494
11588
  // style (#9400)
11495
11589
  this.baselineOffset = padding + Math.min(
@@ -11502,7 +11596,7 @@
11502
11596
  if (this.heightSetting) {
11503
11597
  this.baselineOffset += (this.heightSetting - metrics.h) / 2;
11504
11598
  }
11505
- if (this.needsBox) {
11599
+ if (this.needsBox && !text.textPath) {
11506
11600
  // Create the border box if it is not already present
11507
11601
  if (!this.box) {
11508
11602
  // Symbol definition exists (#5324)
@@ -11532,32 +11626,34 @@
11532
11626
  */
11533
11627
  SVGLabel.prototype.updateTextPadding = function () {
11534
11628
  var text = this.text;
11535
- this.updateBoxSize();
11536
- // Determine y based on the baseline
11537
- var textY = this.baseline ? 0 : this.baselineOffset;
11538
- var textX = pick(this.paddingLeft,
11539
- this.padding);
11540
- // compensate for alignment
11541
- if (defined(this.widthSetting) &&
11542
- this.bBox &&
11543
- (this.textAlign === 'center' || this.textAlign === 'right')) {
11544
- textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);
11545
- }
11546
- // update if anything changed
11547
- if (textX !== text.x || textY !== text.y) {
11548
- text.attr('x', textX);
11549
- // #8159 - prevent misplaced data labels in treemap
11550
- // (useHTML: true)
11551
- if (text.hasBoxWidthChanged) {
11552
- this.bBox = text.getBBox(true);
11553
- }
11554
- if (typeof textY !== 'undefined') {
11555
- text.attr('y', textY);
11556
- }
11557
- }
11558
- // record current values
11559
- text.x = textX;
11560
- text.y = textY;
11629
+ if (!text.textPath) {
11630
+ this.updateBoxSize();
11631
+ // Determine y based on the baseline
11632
+ var textY = this.baseline ? 0 : this.baselineOffset;
11633
+ var textX = pick(this.paddingLeft,
11634
+ this.padding);
11635
+ // compensate for alignment
11636
+ if (defined(this.widthSetting) &&
11637
+ this.bBox &&
11638
+ (this.textAlign === 'center' || this.textAlign === 'right')) {
11639
+ textX += { center: 0.5, right: 1 }[this.textAlign] * (this.widthSetting - this.bBox.width);
11640
+ }
11641
+ // update if anything changed
11642
+ if (textX !== text.x || textY !== text.y) {
11643
+ text.attr('x', textX);
11644
+ // #8159 - prevent misplaced data labels in treemap
11645
+ // (useHTML: true)
11646
+ if (text.hasBoxWidthChanged) {
11647
+ this.bBox = text.getBBox(true);
11648
+ }
11649
+ if (typeof textY !== 'undefined') {
11650
+ text.attr('y', textY);
11651
+ }
11652
+ }
11653
+ // record current values
11654
+ text.x = textX;
11655
+ text.y = textY;
11656
+ }
11561
11657
  };
11562
11658
  SVGLabel.prototype.widthSetter = function (value) {
11563
11659
  // width:auto => null
@@ -11859,6 +11955,7 @@
11859
11955
  win = H.win;
11860
11956
  var attr = U.attr,
11861
11957
  extend = U.extend,
11958
+ fireEvent = U.fireEvent,
11862
11959
  isString = U.isString,
11863
11960
  objectEach = U.objectEach,
11864
11961
  pick = U.pick;
@@ -11919,6 +12016,7 @@
11919
12016
  if (!hasMarkup &&
11920
12017
  !this.ellipsis &&
11921
12018
  !this.width &&
12019
+ !wrapper.textPath &&
11922
12020
  (textStr.indexOf(' ') === -1 ||
11923
12021
  (this.noWrap && !regexMatchBreaks.test(textStr)))) {
11924
12022
  textNode.appendChild(doc.createTextNode(this.unescapeEntities(textStr)));
@@ -11935,7 +12033,7 @@
11935
12033
  // Step 2. Do as many as we can of the modifications to the tree
11936
12034
  // structure before it is added to the DOM
11937
12035
  this.modifyTree(ast.nodes);
11938
- ast.addToDOM(wrapper.element);
12036
+ ast.addToDOM(textNode);
11939
12037
  // Step 3. Some modifications can't be done until the structure is
11940
12038
  // in the DOM, because we need to read computed metrics.
11941
12039
  this.modifyDOM();
@@ -12193,6 +12291,7 @@
12193
12291
  }
12194
12292
  };
12195
12293
  nodes.forEach(modifyChild);
12294
+ fireEvent(this.svgElement, 'afterModifyTree', { nodes: nodes });
12196
12295
  };
12197
12296
  /*
12198
12297
  * Truncate the text node contents to a given length. Used when the css
@@ -12206,7 +12305,7 @@
12206
12305
  rotation = svgElement.rotation;
12207
12306
  // Cache the lengths to avoid checking the same twice
12208
12307
  var lengths = [];
12209
- // Word wrap can not be truncated to shorter than one word, ellipsis
12308
+ // Word wrap cannot be truncated to shorter than one word, ellipsis
12210
12309
  // text can be completely blank.
12211
12310
  var minIndex = words ? 1 : 0;
12212
12311
  var maxIndex = (text || words || '').length;
@@ -12524,7 +12623,7 @@
12524
12623
  this.url = this.getReferenceURL();
12525
12624
  // Add description
12526
12625
  var desc = this.createElement('desc').add();
12527
- desc.element.appendChild(doc.createTextNode('Created with Highcharts 10.2.0'));
12626
+ desc.element.appendChild(doc.createTextNode('Created with Highcharts 10.2.1'));
12528
12627
  renderer.defs = this.createElement('defs').add();
12529
12628
  renderer.allowHTML = allowHTML;
12530
12629
  renderer.forExport = forExport;
@@ -12849,7 +12948,7 @@
12849
12948
  * The shape type.
12850
12949
  *
12851
12950
  * @param {boolean} [useHTML=false]
12852
- * Wether to use HTML to render the label.
12951
+ * Whether to use HTML to render the label.
12853
12952
  *
12854
12953
  * @return {Highcharts.SVGElement}
12855
12954
  * The button element.
@@ -13976,7 +14075,7 @@
13976
14075
  * coordinates it should be pinned to.
13977
14076
  *
13978
14077
  * @param {boolean} [useHTML=false]
13979
- * Wether to use HTML to render the label.
14078
+ * Whether to use HTML to render the label.
13980
14079
  *
13981
14080
  * @param {boolean} [baseline=false]
13982
14081
  * Whether to position the label relative to the text baseline,
@@ -17669,7 +17768,7 @@
17669
17768
  formatter: function () {
17670
17769
  var numberFormatter = this.axis.chart.numberFormatter;
17671
17770
  /* eslint-enable valid-jsdoc */
17672
- return numberFormatter(this.total, -1);
17771
+ return numberFormatter(this.total || 0, -1);
17673
17772
  },
17674
17773
  /**
17675
17774
  * CSS styles for the label.
@@ -19693,6 +19792,9 @@
19693
19792
  // Backwards mapping is much faster than array searching (#7725)
19694
19793
  this.names.keys[point.name] = x;
19695
19794
  }
19795
+ else if (point.x) {
19796
+ x = point.x; // #17438
19797
+ }
19696
19798
  return x;
19697
19799
  };
19698
19800
  /**
@@ -24342,11 +24444,22 @@
24342
24444
  return this.label;
24343
24445
  };
24344
24446
  /**
24345
- * Place the tooltip in a chart without spilling over
24346
- * and not covering the point it self.
24447
+ * Place the tooltip in a chart without spilling over and not covering the
24448
+ * point itself.
24347
24449
  *
24348
- * @private
24349
24450
  * @function Highcharts.Tooltip#getPosition
24451
+ *
24452
+ * @param {number} boxWidth
24453
+ * Width of the tooltip box.
24454
+ *
24455
+ * @param {number} boxHeight
24456
+ * Height of the tooltip box.
24457
+ *
24458
+ * @param {Highcharts.Point} point
24459
+ * Tooltip related point.
24460
+ *
24461
+ * @return {Highcharts.PositionObject}
24462
+ * Recommended position of the tooltip.
24350
24463
  */
24351
24464
  Tooltip.prototype.getPosition = function (boxWidth, boxHeight, point) {
24352
24465
  var chart = this.chart,
@@ -25487,7 +25600,7 @@
25487
25600
  * point. For other axes it holds the X value.
25488
25601
  *
25489
25602
  * @name Highcharts.Point#category
25490
- * @type {string}
25603
+ * @type {number|string}
25491
25604
  */
25492
25605
  this.category = void 0;
25493
25606
  /**
@@ -25851,7 +25964,7 @@
25851
25964
  props.push('graphic', 'upperGraphic', 'shadowGroup');
25852
25965
  }
25853
25966
  if (kinds.dataLabel) {
25854
- props.push('dataLabel', 'dataLabelUpper', 'connector');
25967
+ props.push('dataLabel', 'dataLabelPath', 'dataLabelUpper', 'connector');
25855
25968
  }
25856
25969
  i = props.length;
25857
25970
  while (i--) {
@@ -27367,10 +27480,8 @@
27367
27480
  // Only search on hovered series if it has stickyTracking false
27368
27481
  [hoverSeries] :
27369
27482
  // Filter what series to look in.
27370
- series.filter(function (s) {
27371
- return eventArgs.filter ? eventArgs.filter(s) : filter(s) &&
27372
- s.stickyTracking;
27373
- });
27483
+ series.filter(function (s) { return s.stickyTracking &&
27484
+ (eventArgs.filter || filter)(s); });
27374
27485
  // Use existing hovered point or find the one closest to coordinates.
27375
27486
  var hoverPoint = useExisting || !e ?
27376
27487
  existingHoverPoint :
@@ -27398,8 +27509,8 @@
27398
27509
  * Boost returns a minimal point. Convert it to a usable
27399
27510
  * point for tooltip and states.
27400
27511
  */
27401
- if (s.chart.isBoosting) {
27402
- point = s.getPoint(point);
27512
+ if (s.boosted && s.boost) {
27513
+ point = s.boost.getPoint(point);
27403
27514
  }
27404
27515
  hoverPoints.push(point);
27405
27516
  }
@@ -28303,7 +28414,7 @@
28303
28414
  * @function Highcharts.Pointer#touchSelect
28304
28415
  */
28305
28416
  Pointer.prototype.touchSelect = function (e) {
28306
- return Boolean(this.chart.options.chart.zoomBySingleTouch &&
28417
+ return Boolean(this.chart.options.chart.zooming.singleTouch &&
28307
28418
  e.touches &&
28308
28419
  e.touches.length === 1);
28309
28420
  };
@@ -28317,12 +28428,12 @@
28317
28428
  var chart = this.chart,
28318
28429
  options = chart.options.chart,
28319
28430
  inverted = chart.inverted;
28320
- var zoomType = options.zoomType || '',
28431
+ var zoomType = options.zooming.type || '',
28321
28432
  zoomX,
28322
28433
  zoomY;
28323
28434
  // Look for the pinchType option
28324
28435
  if (/touch/.test(e.type)) {
28325
- zoomType = pick(options.pinchType, zoomType);
28436
+ zoomType = pick(options.zooming.pinchType, zoomType);
28326
28437
  }
28327
28438
  this.zoomX = zoomX = /x/.test(zoomType);
28328
28439
  this.zoomY = zoomY = /y/.test(zoomType);
@@ -30056,46 +30167,23 @@
30056
30167
  * Functions
30057
30168
  *
30058
30169
  * */
30059
- /* eslint-disable valid-jsdoc */
30060
- /**
30061
- * Internal function to initialize an individual series.
30062
- * @private
30063
- */
30064
- function getSeries(chart, options) {
30065
- if (options === void 0) { options = {}; }
30066
- var optionsChart = chart.options.chart,
30067
- type = (options.type ||
30068
- optionsChart.type ||
30069
- optionsChart.defaultSeriesType ||
30070
- ''),
30071
- SeriesClass = SeriesRegistry.seriesTypes[type];
30072
- // No such series type
30073
- if (!SeriesRegistry) {
30074
- error(17, true, chart, { missingModuleFor: type });
30075
- }
30076
- var series = new SeriesClass();
30077
- if (typeof series.init === 'function') {
30078
- series.init(chart, options);
30079
- }
30080
- return series;
30081
- }
30082
- SeriesRegistry.getSeries = getSeries;
30083
30170
  /**
30084
30171
  * Registers class pattern of a series.
30085
30172
  *
30086
30173
  * @private
30087
30174
  */
30088
- function registerSeriesType(seriesType, seriesClass) {
30175
+ function registerSeriesType(seriesType, SeriesClass) {
30089
30176
  var defaultPlotOptions = defaultOptions.plotOptions || {},
30090
- seriesOptions = seriesClass.defaultOptions;
30091
- if (!seriesClass.prototype.pointClass) {
30092
- seriesClass.prototype.pointClass = Point;
30177
+ seriesOptions = SeriesClass.defaultOptions,
30178
+ seriesProto = SeriesClass.prototype;
30179
+ seriesProto.type = seriesType;
30180
+ if (!seriesProto.pointClass) {
30181
+ seriesProto.pointClass = Point;
30093
30182
  }
30094
- seriesClass.prototype.type = seriesType;
30095
30183
  if (seriesOptions) {
30096
30184
  defaultPlotOptions[seriesType] = seriesOptions;
30097
30185
  }
30098
- SeriesRegistry.seriesTypes[seriesType] = seriesClass;
30186
+ SeriesRegistry.seriesTypes[seriesType] = SeriesClass;
30099
30187
  }
30100
30188
  SeriesRegistry.registerSeriesType = registerSeriesType;
30101
30189
  /**
@@ -30140,7 +30228,6 @@
30140
30228
  return SeriesRegistry.seriesTypes[type];
30141
30229
  }
30142
30230
  SeriesRegistry.seriesType = seriesType;
30143
- /* eslint-enable valid-jsdoc */
30144
30231
  })(SeriesRegistry || (SeriesRegistry = {}));
30145
30232
  /* *
30146
30233
  *
@@ -30389,6 +30476,15 @@
30389
30476
  this.labelCollectors = [];
30390
30477
  this.callback = callback;
30391
30478
  this.isResizing = 0;
30479
+ var zooming = optionsChart.zooming = optionsChart.zooming || {};
30480
+ // Other options have no default so just pick
30481
+ if (userOptions.chart && !userOptions.chart.zooming) {
30482
+ zooming.resetButton = optionsChart.resetZoomButton;
30483
+ }
30484
+ zooming.key = pick(zooming.key, optionsChart.zoomKey);
30485
+ zooming.pinchType = pick(zooming.pinchType, optionsChart.pinchType);
30486
+ zooming.singleTouch = pick(zooming.singleTouch, optionsChart.zoomBySingleTouch);
30487
+ zooming.type = pick(zooming.type, optionsChart.zoomType);
30392
30488
  /**
30393
30489
  * The options structure for the chart after merging
30394
30490
  * {@link #defaultOptions} and {@link #userOptions}. It contains
@@ -32820,7 +32916,7 @@
32820
32916
  Chart.prototype.showResetZoom = function () {
32821
32917
  var chart = this,
32822
32918
  lang = defaultOptions.lang,
32823
- btnOptions = chart.options.chart.resetZoomButton,
32919
+ btnOptions = chart.options.chart.zooming.resetButton,
32824
32920
  theme = btnOptions.theme,
32825
32921
  alignTo = (btnOptions.relativeTo === 'chart' ||
32826
32922
  btnOptions.relativeTo === 'spacingBox' ?
@@ -33065,6 +33161,8 @@
33065
33161
  *
33066
33162
  * Note: We need to define these references after initializers are bound to
33067
33163
  * chart's prototype.
33164
+ *
33165
+ * @private
33068
33166
  */
33069
33167
  collectionsWithInit: {
33070
33168
  // collectionName: [ initializingMethod, [extraArguments] ]
@@ -33075,6 +33173,7 @@
33075
33173
  /**
33076
33174
  * These collections (arrays) implement update() methods with support for
33077
33175
  * one-to-one option.
33176
+ * @private
33078
33177
  */
33079
33178
  collectionsWithUpdate: [
33080
33179
  'xAxis',
@@ -33084,6 +33183,7 @@
33084
33183
  /**
33085
33184
  * These properties cause isDirtyBox to be set to true when updating. Can be
33086
33185
  * extended from plugins.
33186
+ * @private
33087
33187
  */
33088
33188
  propsRequireDirtyBox: [
33089
33189
  'backgroundColor',
@@ -33100,7 +33200,7 @@
33100
33200
  /**
33101
33201
  * These properties require a full reflow of chart elements, best
33102
33202
  * implemented through running `Chart.setSize` internally (#8190).
33103
- * @type {Array}
33203
+ * @private
33104
33204
  */
33105
33205
  propsRequireReflow: [
33106
33206
  'margin',
@@ -33117,6 +33217,7 @@
33117
33217
  /**
33118
33218
  * These properties cause all series to be updated when updating. Can be
33119
33219
  * extended from plugins.
33220
+ * @private
33120
33221
  */
33121
33222
  propsRequireUpdateSeries: [
33122
33223
  'chart.inverted',
@@ -33789,6 +33890,9 @@
33789
33890
  /**
33790
33891
  * The line cap used for line ends and line joins on the graph.
33791
33892
  *
33893
+ * @sample highcharts/series-line/linecap/
33894
+ * Line cap comparison
33895
+ *
33792
33896
  * @type {Highcharts.SeriesLinecapValue}
33793
33897
  * @default round
33794
33898
  * @product highcharts highstock
@@ -35190,13 +35294,13 @@
35190
35294
  */
35191
35295
  x: 0,
35192
35296
  /**
35193
- * The Z index of the data labels. The default Z index puts it above
35194
- * the series. Use a Z index of 2 to display it behind the series.
35297
+ * The z index of the data labels. Use a `zIndex` of 6 to display it above
35298
+ * the series, or use a `zIndex` of 2 to display it behind the series.
35195
35299
  *
35196
35300
  * @type {number}
35197
35301
  * @default 6
35198
35302
  * @since 2.3.5
35199
- * @apioption plotOptions.series.dataLabels.z
35303
+ * @apioption plotOptions.series.dataLabels.zIndex
35200
35304
  */
35201
35305
  /**
35202
35306
  * The y position offset of the label relative to the point in
@@ -35634,6 +35738,8 @@
35634
35738
  *
35635
35739
  * @sample highcharts/coloraxis/custom-color-key/
35636
35740
  * Custom color key
35741
+ * @sample highcharts/coloraxis/color-key-with-stops/
35742
+ * Custom colorKey with color axis stops
35637
35743
  * @sample highcharts/coloraxis/changed-default-color-key/
35638
35744
  * Changed default color key
35639
35745
  *
@@ -35675,7 +35781,7 @@
35675
35781
 
35676
35782
  return seriesDefaults;
35677
35783
  });
35678
- _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, D, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {
35784
+ _registerModule(_modules, 'Core/Series/Series.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Foundation.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/Point.js'], _modules['Core/Series/SeriesDefaults.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Utilities.js']], function (A, DO, F, H, LegendSymbol, Point, SeriesDefaults, SeriesRegistry, SVGElement, U) {
35679
35785
  /* *
35680
35786
  *
35681
35787
  * (c) 2010-2021 Torstein Honsi
@@ -35687,7 +35793,7 @@
35687
35793
  * */
35688
35794
  var animObject = A.animObject,
35689
35795
  setAnimation = A.setAnimation;
35690
- var defaultOptions = D.defaultOptions;
35796
+ var defaultOptions = DO.defaultOptions;
35691
35797
  var registerEventOptions = F.registerEventOptions;
35692
35798
  var hasTouch = H.hasTouch,
35693
35799
  svg = H.svg,
@@ -36386,7 +36492,7 @@
36386
36492
  };
36387
36493
  /**
36388
36494
  * Internal function called from setData. If the point count is the same
36389
- * as is was, or if there are overlapping X values, just run
36495
+ * as it was, or if there are overlapping X values, just run
36390
36496
  * Point.update which is cheaper, allows animation, and keeps references
36391
36497
  * to points. This also allows adding or removing points if the X-es
36392
36498
  * don't match.
@@ -36552,6 +36658,7 @@
36552
36658
  * `false` to prevent.
36553
36659
  */
36554
36660
  Series.prototype.setData = function (data, redraw, animation, updatePoints) {
36661
+ if (redraw === void 0) { redraw = true; }
36555
36662
  var series = this,
36556
36663
  oldData = series.points,
36557
36664
  oldDataLength = (oldData && oldData.length) || 0,
@@ -36584,7 +36691,6 @@
36584
36691
  }
36585
36692
  data = copiedData || data || [];
36586
36693
  var dataLength = data.length;
36587
- redraw = pick(redraw, true);
36588
36694
  if (dataSorting && dataSorting.enabled) {
36589
36695
  data = this.sortData(data);
36590
36696
  }
@@ -36599,7 +36705,7 @@
36599
36705
  series.visible &&
36600
36706
  // Soft updating has no benefit in boost, and causes JS error
36601
36707
  // (#8355)
36602
- !series.isSeriesBoosting) {
36708
+ !series.boosted) {
36603
36709
  updatedData = this.updateData(data, animation);
36604
36710
  }
36605
36711
  if (!updatedData) {
@@ -36990,26 +37096,6 @@
36990
37096
  else {
36991
37097
  // splat the y data in case of ohlc data array
36992
37098
  point = (new PointClass()).init(series, [processedXData[i]].concat(splat(processedYData[i])));
36993
- /**
36994
- * Highcharts Stock only. If a point object is created by data
36995
- * grouping, it doesn't reflect actual points in the raw
36996
- * data. In this case, the `dataGroup` property holds
36997
- * information that points back to the raw data.
36998
- *
36999
- * - `dataGroup.start` is the index of the first raw data
37000
- * point in the group.
37001
- *
37002
- * - `dataGroup.length` is the amount of points in the
37003
- * group.
37004
- *
37005
- * @product highstock
37006
- *
37007
- * @name Highcharts.Point#dataGroup
37008
- * @type {Highcharts.DataGroupingInfoObject|undefined}
37009
- *
37010
- * @sample stock/members/point-datagroup
37011
- * Click to inspect raw data points
37012
- */
37013
37099
  point.dataGroup = series.groupMap[groupCropStartIndex + i];
37014
37100
  if (point.dataGroup.options) {
37015
37101
  point.options = point.dataGroup.options;
@@ -37902,8 +37988,8 @@
37902
37988
  clips = (this.clips || []),
37903
37989
  graph = this.graph,
37904
37990
  area = this.area,
37905
- chartSizeMax = Math.max(chart.chartWidth,
37906
- chart.chartHeight),
37991
+ plotSizeMax = Math.max(chart.plotWidth,
37992
+ chart.plotHeight),
37907
37993
  axis = this[(this.zoneAxis || 'y') + 'Axis'],
37908
37994
  inverted = chart.inverted;
37909
37995
  var translatedFrom,
@@ -37940,8 +38026,8 @@
37940
38026
  translatedFrom = reversed ?
37941
38027
  (horiz ? chart.plotWidth : 0) :
37942
38028
  (horiz ? 0 : (axis.toPixels(extremes.min) || 0));
37943
- translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, chartSizeMax);
37944
- translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, chartSizeMax);
38029
+ translatedFrom = clamp(pick(translatedTo, translatedFrom), 0, plotSizeMax);
38030
+ translatedTo = clamp(Math.round(axis.toPixels(pick(threshold.value, extremes.max), true) || 0), 0, plotSizeMax);
37945
38031
  if (ignoreZones) {
37946
38032
  translatedFrom = translatedTo =
37947
38033
  axis.toPixels(extremes.max);
@@ -37954,7 +38040,7 @@
37954
38040
  x: inverted ? pxPosMax : pxPosMin,
37955
38041
  y: 0,
37956
38042
  width: pxRange,
37957
- height: chartSizeMax
38043
+ height: plotSizeMax
37958
38044
  };
37959
38045
  if (!horiz) {
37960
38046
  clipAttr.x = chart.plotHeight - clipAttr.x;
@@ -37964,7 +38050,7 @@
37964
38050
  clipAttr = {
37965
38051
  x: 0,
37966
38052
  y: inverted ? pxPosMax : pxPosMin,
37967
- width: chartSizeMax,
38053
+ width: plotSizeMax,
37968
38054
  height: pxRange
37969
38055
  };
37970
38056
  if (horiz) {
@@ -38418,7 +38504,7 @@
38418
38504
  }
38419
38505
  if (tree[sideB]) {
38420
38506
  // compare distance to current best to splitting point to
38421
- // decide wether to check side B or not
38507
+ // decide whether to check side B or not
38422
38508
  if (Math.sqrt(tdist * tdist) < ret[kdComparer]) {
38423
38509
  nPoint2 = _search(search, tree[sideB], depth + 1, dimensions);
38424
38510
  ret = (nPoint2[kdComparer] <
@@ -39347,6 +39433,31 @@
39347
39433
  return this.chart.isInsidePlot(plotX, plotY, options);
39348
39434
  };
39349
39435
  Series.defaultOptions = SeriesDefaults;
39436
+ /**
39437
+ * Registry of all available series types.
39438
+ *
39439
+ * @name Highcharts.Series.types
39440
+ * @type {Highcharts.Dictionary<typeof_Highcharts.Series>}
39441
+ */
39442
+ Series.types = SeriesRegistry.seriesTypes;
39443
+ /* *
39444
+ *
39445
+ * Static Functions
39446
+ *
39447
+ * */
39448
+ /**
39449
+ * Registers a series class to be accessible via `Series.types`.
39450
+ *
39451
+ * @function Highcharts.Series.registerType
39452
+ *
39453
+ * @param {string} seriesType
39454
+ * The series type as an identifier string in lower case.
39455
+ *
39456
+ * @param {Function} SeriesClass
39457
+ * The series class as a class pattern or a constructor function with
39458
+ * prototype.
39459
+ */
39460
+ Series.registerType = SeriesRegistry.registerSeriesType;
39350
39461
  return Series;
39351
39462
  }());
39352
39463
  extend(Series.prototype, {
@@ -40095,7 +40206,7 @@
40095
40206
  * Scrollable plot area
40096
40207
  * @sample highcharts/chart/scrollable-plotarea-vertical
40097
40208
  * Vertically scrollable plot area
40098
- * @sample {gantt} highcharts/chart/scrollable-plotarea-vertical
40209
+ * @sample {gantt} gantt/chart/scrollable-plotarea-vertical
40099
40210
  * Gantt chart with vertically scrollable plot area
40100
40211
  *
40101
40212
  * @since 6.1.0
@@ -40150,7 +40261,7 @@
40150
40261
  (''); // keep doclets above in transpiled file
40151
40262
 
40152
40263
  });
40153
- _registerModule(_modules, 'Core/Axis/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Utilities.js']], function (A, Axis, U) {
40264
+ _registerModule(_modules, 'Core/Axis/Stacking/StackItem.js', [_modules['Core/FormatUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (FU, SeriesRegistry, U) {
40154
40265
  /* *
40155
40266
  *
40156
40267
  * (c) 2010-2021 Torstein Honsi
@@ -40160,264 +40271,28 @@
40160
40271
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
40161
40272
  *
40162
40273
  * */
40163
- var getDeferredAnimation = A.getDeferredAnimation;
40164
- var addEvent = U.addEvent,
40165
- destroyObjectProperties = U.destroyObjectProperties,
40166
- fireEvent = U.fireEvent,
40167
- isNumber = U.isNumber,
40168
- objectEach = U.objectEach;
40169
- /* *
40170
- *
40171
- * Composition
40172
- *
40173
- * */
40174
- /**
40175
- * @private
40176
- */
40177
- var StackingAxis;
40178
- (function (StackingAxis) {
40179
- /* *
40180
- *
40181
- * Declarations
40182
- *
40183
- * */
40184
- /* *
40185
- *
40186
- * Constants
40187
- *
40188
- * */
40189
- var composedClasses = [];
40190
- /* *
40191
- *
40192
- * Functions
40193
- *
40194
- * */
40195
- /* eslint-disable valid-jsdoc */
40196
- /**
40197
- * Extends axis with stacking support.
40198
- * @private
40199
- */
40200
- function compose(AxisClass) {
40201
- if (composedClasses.indexOf(AxisClass) === -1) {
40202
- composedClasses.push(AxisClass);
40203
- addEvent(AxisClass, 'init', onInit);
40204
- addEvent(AxisClass, 'destroy', onDestroy);
40205
- }
40206
- return AxisClass;
40207
- }
40208
- StackingAxis.compose = compose;
40209
- /**
40210
- * @private
40211
- */
40212
- function onDestroy() {
40213
- var stacking = this.stacking;
40214
- if (!stacking) {
40215
- return;
40216
- }
40217
- var stacks = stacking.stacks;
40218
- // Destroy each stack total
40219
- objectEach(stacks, function (stack, stackKey) {
40220
- destroyObjectProperties(stack);
40221
- stacks[stackKey] = null;
40222
- });
40223
- if (stacking &&
40224
- stacking.stackTotalGroup) {
40225
- stacking.stackTotalGroup.destroy();
40226
- }
40227
- }
40228
- /**
40229
- * @private
40230
- */
40231
- function onInit() {
40232
- var axis = this;
40233
- if (!axis.stacking) {
40234
- axis.stacking = new Additions(axis);
40235
- }
40236
- }
40237
- /* *
40238
- *
40239
- * Class
40240
- *
40241
- * */
40242
- /**
40243
- * Adds stacking support to axes.
40244
- * @private
40245
- * @class
40246
- */
40247
- var Additions = /** @class */ (function () {
40248
- /* *
40249
- *
40250
- * Constructors
40251
- *
40252
- * */
40253
- function Additions(axis) {
40254
- this.oldStacks = {};
40255
- this.stacks = {};
40256
- this.stacksTouched = 0;
40257
- this.axis = axis;
40258
- }
40259
- /* *
40260
- *
40261
- * Functions
40262
- *
40263
- * */
40264
- /**
40265
- * Build the stacks from top down
40266
- * @private
40267
- */
40268
- Additions.prototype.buildStacks = function () {
40269
- var stacking = this;
40270
- var axis = stacking.axis;
40271
- var axisSeries = axis.series;
40272
- var reversedStacks = axis.options.reversedStacks;
40273
- var len = axisSeries.length;
40274
- var actualSeries,
40275
- i;
40276
- if (!axis.isXAxis) {
40277
- stacking.usePercentage = false;
40278
- i = len;
40279
- while (i--) {
40280
- actualSeries = axisSeries[reversedStacks ? i : len - i - 1];
40281
- actualSeries.setStackedPoints();
40282
- actualSeries.setGroupedPoints();
40283
- }
40284
- // Loop up again to compute percent and stream stack
40285
- for (i = 0; i < len; i++) {
40286
- axisSeries[i].modifyStacks();
40287
- }
40288
- fireEvent(axis, 'afterBuildStacks');
40289
- }
40290
- };
40291
- /**
40292
- * @private
40293
- */
40294
- Additions.prototype.cleanStacks = function () {
40295
- var stacking = this,
40296
- axis = stacking.axis;
40297
- var stacks;
40298
- if (!axis.isXAxis) {
40299
- if (stacking.oldStacks) {
40300
- stacks = stacking.stacks = stacking.oldStacks;
40301
- }
40302
- // reset stacks
40303
- objectEach(stacks, function (type) {
40304
- objectEach(type, function (stack) {
40305
- stack.cumulative = stack.total;
40306
- });
40307
- });
40308
- }
40309
- };
40310
- /**
40311
- * Set all the stacks to initial states and destroy unused ones.
40312
- * @private
40313
- */
40314
- Additions.prototype.resetStacks = function () {
40315
- var stacking = this,
40316
- axis = stacking.axis,
40317
- stacks = stacking.stacks;
40318
- if (!axis.isXAxis) {
40319
- objectEach(stacks, function (type) {
40320
- objectEach(type, function (stack, x) {
40321
- // Clean up memory after point deletion (#1044, #4320)
40322
- if (isNumber(stack.touched) &&
40323
- stack.touched < stacking.stacksTouched) {
40324
- stack.destroy();
40325
- delete type[x];
40326
- // Reset stacks
40327
- }
40328
- else {
40329
- stack.total = null;
40330
- stack.cumulative = null;
40331
- }
40332
- });
40333
- });
40334
- }
40335
- };
40336
- /**
40337
- * @private
40338
- */
40339
- Additions.prototype.renderStackTotals = function () {
40340
- var stacking = this,
40341
- axis = stacking.axis,
40342
- chart = axis.chart,
40343
- renderer = chart.renderer,
40344
- stacks = stacking.stacks,
40345
- stackLabelsAnim = axis.options.stackLabels &&
40346
- axis.options.stackLabels.animation,
40347
- animationConfig = getDeferredAnimation(chart,
40348
- stackLabelsAnim || false),
40349
- stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||
40350
- renderer
40351
- .g('stack-labels')
40352
- .attr({
40353
- zIndex: 6,
40354
- opacity: 0
40355
- })
40356
- .add());
40357
- // plotLeft/Top will change when y axis gets wider so we need to
40358
- // translate the stackTotalGroup at every render call. See bug #506
40359
- // and #516
40360
- stackTotalGroup.translate(chart.plotLeft, chart.plotTop);
40361
- // Render each stack total
40362
- objectEach(stacks, function (type) {
40363
- objectEach(type, function (stack) {
40364
- stack.render(stackTotalGroup);
40365
- });
40366
- });
40367
- stackTotalGroup.animate({
40368
- opacity: 1
40369
- }, animationConfig);
40370
- };
40371
- return Additions;
40372
- }());
40373
- StackingAxis.Additions = Additions;
40374
- })(StackingAxis || (StackingAxis = {}));
40375
- /* *
40376
- *
40377
- * Default Export
40378
- *
40379
- * */
40380
-
40381
- return StackingAxis;
40382
- });
40383
- _registerModule(_modules, 'Extensions/Stacking.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Chart/Chart.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Axis/StackingAxis.js'], _modules['Core/Utilities.js']], function (Axis, Chart, F, H, Series, StackingAxis, U) {
40384
- /* *
40385
- *
40386
- * (c) 2010-2021 Torstein Honsi
40387
- *
40388
- * License: www.highcharts.com/license
40389
- *
40390
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
40391
- *
40392
- * */
40393
- var format = F.format;
40394
- var correctFloat = U.correctFloat,
40395
- defined = U.defined,
40274
+ var format = FU.format;
40275
+ var Series = SeriesRegistry.series;
40276
+ var defined = U.defined,
40396
40277
  destroyObjectProperties = U.destroyObjectProperties,
40397
- isArray = U.isArray,
40398
40278
  isNumber = U.isNumber,
40399
- objectEach = U.objectEach,
40400
40279
  pick = U.pick;
40401
40280
  /* *
40402
40281
  *
40403
40282
  * Class
40404
40283
  *
40405
40284
  * */
40406
- /* eslint-disable no-invalid-this, valid-jsdoc */
40407
40285
  /**
40408
40286
  * The class for stacks. Each stack, on a specific X value and either negative
40409
40287
  * or positive, has its own stack item.
40410
- *
40411
40288
  * @private
40412
- * @class
40413
- * @name Highcharts.StackItem
40414
- * @param {Highcharts.Axis} axis
40415
- * @param {Highcharts.YAxisStackLabelsOptions} options
40416
- * @param {boolean} isNegative
40417
- * @param {number} x
40418
- * @param {Highcharts.OptionsStackingValue} [stackOption]
40419
40289
  */
40420
40290
  var StackItem = /** @class */ (function () {
40291
+ /* *
40292
+ *
40293
+ * Constructor
40294
+ *
40295
+ * */
40421
40296
  function StackItem(axis, options, isNegative, x, stackOption) {
40422
40297
  var inverted = axis.chart.inverted;
40423
40298
  this.axis = axis;
@@ -40429,6 +40304,7 @@
40429
40304
  this.x = x;
40430
40305
  // Initialize total value
40431
40306
  this.total = null;
40307
+ this.cumulative = null;
40432
40308
  // This will keep each points' extremes stored by series.index and point
40433
40309
  // index
40434
40310
  this.points = {};
@@ -40454,23 +40330,18 @@
40454
40330
  }
40455
40331
  /**
40456
40332
  * @private
40457
- * @function Highcharts.StackItem#destroy
40458
40333
  */
40459
40334
  StackItem.prototype.destroy = function () {
40460
40335
  destroyObjectProperties(this, this.axis);
40461
40336
  };
40462
40337
  /**
40463
40338
  * Renders the stack total label and adds it to the stack label group.
40464
- *
40465
40339
  * @private
40466
- * @function Highcharts.StackItem#render
40467
- * @param {Highcharts.SVGElement} group
40468
40340
  */
40469
40341
  StackItem.prototype.render = function (group) {
40470
40342
  var chart = this.axis.chart,
40471
40343
  options = this.options,
40472
40344
  formatOption = options.format,
40473
- attr = {},
40474
40345
  str = formatOption ? // format the text in the label
40475
40346
  format(formatOption,
40476
40347
  this,
@@ -40485,14 +40356,14 @@
40485
40356
  // Create new label
40486
40357
  this.label = chart.renderer
40487
40358
  .label(str, null, null, options.shape, null, null, options.useHTML, false, 'stack-labels');
40488
- attr = {
40489
- r: options.borderRadius || 0,
40490
- text: str,
40491
- rotation: options.rotation,
40492
- // set default padding to 5 as it is in datalabels #12308
40493
- padding: pick(options.padding, 5),
40494
- visibility: 'hidden' // hidden until setOffset is called
40495
- };
40359
+ var attr = {
40360
+ r: options.borderRadius || 0,
40361
+ text: str,
40362
+ rotation: options.rotation,
40363
+ // set default padding to 5 as it is in datalabels #12308
40364
+ padding: pick(options.padding, 5),
40365
+ visibility: 'hidden' // hidden until setOffset is called
40366
+ };
40496
40367
  if (!chart.styledMode) {
40497
40368
  attr.fill = options.backgroundColor;
40498
40369
  attr.stroke = options.borderColor;
@@ -40510,49 +40381,39 @@
40510
40381
  /**
40511
40382
  * Sets the offset that the stack has from the x value and repositions the
40512
40383
  * label.
40513
- *
40514
40384
  * @private
40515
- * @function Highcarts.StackItem#setOffset
40516
- * @param {number} xOffset
40517
- * @param {number} xWidth
40518
- * @param {number} [boxBottom]
40519
- * @param {number} [boxTop]
40520
- * @param {number} [defaultX]
40521
40385
  */
40522
40386
  StackItem.prototype.setOffset = function (xOffset, xWidth, boxBottom, boxTop, defaultX) {
40523
- var stackItem = this,
40524
- axis = stackItem.axis,
40387
+ var axis = this.axis,
40525
40388
  chart = axis.chart,
40526
40389
  // stack value translated mapped to chart coordinates
40527
40390
  y = axis.translate(axis.stacking.usePercentage ?
40528
40391
  100 :
40529
40392
  (boxTop ?
40530
40393
  boxTop :
40531
- stackItem.total), 0, 0, 0, 1),
40394
+ this.total), 0, 0, 0, 1),
40532
40395
  yZero = axis.translate(boxBottom ? boxBottom : 0), // stack origin
40533
- // stack height:
40534
- h = defined(y) && Math.abs(y - yZero),
40535
40396
  // x position:
40536
40397
  x = pick(defaultX,
40537
- chart.xAxis[0].translate(stackItem.x)) +
40398
+ chart.xAxis[0].translate(this.x)) +
40538
40399
  xOffset,
40539
- stackBox = defined(y) && stackItem.getStackBox(chart,
40540
- stackItem,
40400
+ stackBox = defined(y) && this.getStackBox(chart,
40401
+ this,
40541
40402
  x,
40542
40403
  y,
40543
- xWidth,
40544
- h,
40404
+ xWidth,
40405
+ // stack height:
40406
+ Math.abs(y - yZero),
40545
40407
  axis),
40546
- label = stackItem.label,
40547
- isNegative = stackItem.isNegative,
40548
- isJustify = pick(stackItem.options.overflow, 'justify') === 'justify',
40549
- textAlign = stackItem.textAlign,
40550
- visible;
40408
+ label = this.label,
40409
+ isNegative = this.isNegative,
40410
+ textAlign = this.textAlign;
40551
40411
  if (label && stackBox) {
40552
40412
  var bBox = label.getBBox(),
40553
- padding = label.padding,
40554
- boxOffsetX = void 0,
40555
- boxOffsetY = void 0;
40413
+ padding = label.padding;
40414
+ var boxOffsetX = void 0,
40415
+ isJustify = pick(this.options.overflow, 'justify') === 'justify',
40416
+ visible = void 0;
40556
40417
  if (textAlign === 'left') {
40557
40418
  boxOffsetX = chart.inverted ? -padding : padding;
40558
40419
  }
@@ -40569,18 +40430,18 @@
40569
40430
  bBox.width / 2;
40570
40431
  }
40571
40432
  }
40572
- boxOffsetY = chart.inverted ?
40573
- bBox.height / 2 : (isNegative ? -padding : bBox.height);
40433
+ var boxOffsetY = chart.inverted ?
40434
+ bBox.height / 2 : (isNegative ? -padding : bBox.height);
40574
40435
  // Reset alignOptions property after justify #12337
40575
- stackItem.alignOptions.x = pick(stackItem.options.x, 0);
40576
- stackItem.alignOptions.y = pick(stackItem.options.y, 0);
40436
+ this.alignOptions.x = pick(this.options.x, 0);
40437
+ this.alignOptions.y = pick(this.options.y, 0);
40577
40438
  // Set the stackBox position
40578
40439
  stackBox.x -= boxOffsetX;
40579
40440
  stackBox.y -= boxOffsetY;
40580
40441
  // Align the label to the box
40581
- label.align(stackItem.alignOptions, null, stackBox);
40442
+ label.align(this.alignOptions, null, stackBox);
40582
40443
  // Check if label is inside the plotArea #12294
40583
- if (chart.isInsidePlot(label.alignAttr.x + boxOffsetX - stackItem.alignOptions.x, label.alignAttr.y + boxOffsetY - stackItem.alignOptions.y)) {
40444
+ if (chart.isInsidePlot(label.alignAttr.x + boxOffsetX - this.alignOptions.x, label.alignAttr.y + boxOffsetY - this.alignOptions.y)) {
40584
40445
  label.show();
40585
40446
  }
40586
40447
  else {
@@ -40590,13 +40451,13 @@
40590
40451
  }
40591
40452
  if (isJustify) {
40592
40453
  // Justify stackLabel into the stackBox
40593
- Series.prototype.justifyDataLabel.call(this.axis, label, stackItem.alignOptions, label.alignAttr, bBox, stackBox);
40454
+ Series.prototype.justifyDataLabel.call(this.axis, label, this.alignOptions, label.alignAttr, bBox, stackBox);
40594
40455
  }
40595
40456
  label.attr({
40596
40457
  x: label.alignAttr.x,
40597
40458
  y: label.alignAttr.y
40598
40459
  });
40599
- if (pick(!isJustify && stackItem.options.crop, true)) {
40460
+ if (pick(!isJustify && this.options.crop, true)) {
40600
40461
  visible =
40601
40462
  isNumber(label.x) &&
40602
40463
  isNumber(label.y) &&
@@ -40634,13 +40495,92 @@
40634
40495
  };
40635
40496
  return StackItem;
40636
40497
  }());
40498
+ /* *
40499
+ *
40500
+ * Default Export
40501
+ *
40502
+ * */
40503
+ /* *
40504
+ *
40505
+ * API Declarations
40506
+ *
40507
+ * */
40508
+ /**
40509
+ * Stack of data points
40510
+ *
40511
+ * @product highcharts
40512
+ *
40513
+ * @interface Highcharts.StackItemObject
40514
+ */ /**
40515
+ * Alignment settings
40516
+ * @name Highcharts.StackItemObject#alignOptions
40517
+ * @type {Highcharts.AlignObject}
40518
+ */ /**
40519
+ * Related axis
40520
+ * @name Highcharts.StackItemObject#axis
40521
+ * @type {Highcharts.Axis}
40522
+ */ /**
40523
+ * Cumulative value of the stacked data points
40524
+ * @name Highcharts.StackItemObject#cumulative
40525
+ * @type {number}
40526
+ */ /**
40527
+ * True if on the negative side
40528
+ * @name Highcharts.StackItemObject#isNegative
40529
+ * @type {boolean}
40530
+ */ /**
40531
+ * Related SVG element
40532
+ * @name Highcharts.StackItemObject#label
40533
+ * @type {Highcharts.SVGElement}
40534
+ */ /**
40535
+ * Related stack options
40536
+ * @name Highcharts.StackItemObject#options
40537
+ * @type {Highcharts.YAxisStackLabelsOptions}
40538
+ */ /**
40539
+ * Total value of the stacked data points
40540
+ * @name Highcharts.StackItemObject#total
40541
+ * @type {number}
40542
+ */ /**
40543
+ * Shared x value of the stack
40544
+ * @name Highcharts.StackItemObject#x
40545
+ * @type {number}
40546
+ */
40547
+ ''; // keeps doclets above in JS file
40548
+
40549
+ return StackItem;
40550
+ });
40551
+ _registerModule(_modules, 'Core/Axis/Stacking/StackingAxis.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Utilities.js']], function (A, Axis, SeriesRegistry, StackItem, U) {
40552
+ /* *
40553
+ *
40554
+ * (c) 2010-2021 Torstein Honsi
40555
+ *
40556
+ * License: www.highcharts.com/license
40557
+ *
40558
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
40559
+ *
40560
+ * */
40561
+ var getDeferredAnimation = A.getDeferredAnimation;
40562
+ var seriesProto = SeriesRegistry.series.prototype;
40563
+ var addEvent = U.addEvent,
40564
+ correctFloat = U.correctFloat,
40565
+ defined = U.defined,
40566
+ destroyObjectProperties = U.destroyObjectProperties,
40567
+ fireEvent = U.fireEvent,
40568
+ isArray = U.isArray,
40569
+ isNumber = U.isNumber,
40570
+ objectEach = U.objectEach,
40571
+ pick = U.pick;
40572
+ /* *
40573
+ *
40574
+ * Functions
40575
+ *
40576
+ * */
40637
40577
  /**
40638
40578
  * Generate stacks for each series and calculate stacks total values
40639
40579
  *
40640
40580
  * @private
40641
40581
  * @function Highcharts.Chart#getStacks
40642
40582
  */
40643
- Chart.prototype.getStacks = function () {
40583
+ function chartGetStacks() {
40644
40584
  var chart = this,
40645
40585
  inverted = chart.inverted;
40646
40586
  // reset stacks for each yAxis
@@ -40662,10 +40602,111 @@
40662
40602
  ].join(',');
40663
40603
  }
40664
40604
  });
40665
- };
40666
- // Stacking methods defined on the Axis prototype
40667
- StackingAxis.compose(Axis);
40668
- // Stacking methods defined for Series prototype
40605
+ }
40606
+ /**
40607
+ * @private
40608
+ */
40609
+ function onAxisDestroy() {
40610
+ var stacking = this.stacking;
40611
+ if (!stacking) {
40612
+ return;
40613
+ }
40614
+ var stacks = stacking.stacks;
40615
+ // Destroy each stack total
40616
+ objectEach(stacks, function (stack, stackKey) {
40617
+ destroyObjectProperties(stack);
40618
+ stacks[stackKey] = null;
40619
+ });
40620
+ if (stacking &&
40621
+ stacking.stackTotalGroup) {
40622
+ stacking.stackTotalGroup.destroy();
40623
+ }
40624
+ }
40625
+ /**
40626
+ * @private
40627
+ */
40628
+ function onAxisInit() {
40629
+ var axis = this;
40630
+ if (!axis.stacking) {
40631
+ axis.stacking = new AxisAdditions(axis);
40632
+ }
40633
+ }
40634
+ /**
40635
+ * Get stack indicator, according to it's x-value, to determine points with the
40636
+ * same x-value
40637
+ *
40638
+ * @private
40639
+ * @function Highcharts.Series#getStackIndicator
40640
+ */
40641
+ function seriesGetStackIndicator(stackIndicator, x, index, key) {
40642
+ // Update stack indicator, when:
40643
+ // first point in a stack || x changed || stack type (negative vs positive)
40644
+ // changed:
40645
+ if (!defined(stackIndicator) ||
40646
+ stackIndicator.x !== x ||
40647
+ (key && stackIndicator.stackKey !== key)) {
40648
+ stackIndicator = {
40649
+ x: x,
40650
+ index: 0,
40651
+ key: key,
40652
+ stackKey: key
40653
+ };
40654
+ }
40655
+ else {
40656
+ (stackIndicator).index++;
40657
+ }
40658
+ stackIndicator.key =
40659
+ [index, x, stackIndicator.index].join(',');
40660
+ return stackIndicator;
40661
+ }
40662
+ /**
40663
+ * Iterate over all stacks and compute the absolute values to percent
40664
+ *
40665
+ * @private
40666
+ * @function Highcharts.Series#modifyStacks
40667
+ */
40668
+ function seriesModifyStacks() {
40669
+ var series = this,
40670
+ yAxis = series.yAxis,
40671
+ stackKey = series.stackKey,
40672
+ stacks = yAxis.stacking.stacks,
40673
+ processedXData = series.processedXData,
40674
+ stacking = series.options.stacking,
40675
+ stacker = series[stacking + 'Stacker'];
40676
+ var stackIndicator;
40677
+ if (stacker) { // Modifier function exists (Series.percentStacker etc.)
40678
+ [stackKey, '-' + stackKey].forEach(function (key) {
40679
+ var i = processedXData.length,
40680
+ x,
40681
+ stack,
40682
+ pointExtremes;
40683
+ while (i--) {
40684
+ x = processedXData[i];
40685
+ stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);
40686
+ stack = stacks[key] && stacks[key][x];
40687
+ pointExtremes =
40688
+ stack && stack.points[stackIndicator.key];
40689
+ if (pointExtremes) {
40690
+ stacker.call(series, pointExtremes, stack, i);
40691
+ }
40692
+ }
40693
+ });
40694
+ }
40695
+ }
40696
+ /**
40697
+ * Modifier function for percent stacks. Blows up the stack to 100%.
40698
+ *
40699
+ * @private
40700
+ * @function Highcharts.Series#percentStacker
40701
+ */
40702
+ function seriesPercentStacker(pointExtremes, stack, i) {
40703
+ var totalFactor = stack.total ? 100 / stack.total : 0;
40704
+ // Y bottom value
40705
+ pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);
40706
+ // Y value
40707
+ pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);
40708
+ this.stackedYData[i] = pointExtremes[1];
40709
+ }
40669
40710
  /**
40670
40711
  * Set grouped points in a stack-like object. When `centerInCategory` is true,
40671
40712
  * and `stacking` is not enabled, we need a pseudo (horizontal) stack in order
@@ -40675,7 +40716,7 @@
40675
40716
  * @function Highcharts.Series#setStackedPoints
40676
40717
  * @return {void}
40677
40718
  */
40678
- Series.prototype.setGroupedPoints = function () {
40719
+ function seriesSetGroupedPoints() {
40679
40720
  var stacking = this.yAxis.stacking;
40680
40721
  if (this.options.centerInCategory &&
40681
40722
  (this.is('column') || this.is('columnrange')) &&
@@ -40684,7 +40725,7 @@
40684
40725
  !this.options.stacking &&
40685
40726
  // With only one series, we don't need to consider centerInCategory
40686
40727
  this.chart.series.length > 1) {
40687
- Series.prototype.setStackedPoints.call(this, 'group');
40728
+ seriesProto.setStackedPoints.call(this, 'group');
40688
40729
  // After updating, if we now have proper stacks, we must delete the group
40689
40730
  // pseudo stacks (#14986)
40690
40731
  }
@@ -40696,20 +40737,29 @@
40696
40737
  }
40697
40738
  });
40698
40739
  }
40699
- };
40740
+ }
40700
40741
  /**
40701
40742
  * Adds series' points value to corresponding stack
40702
40743
  *
40703
40744
  * @private
40704
40745
  * @function Highcharts.Series#setStackedPoints
40705
40746
  */
40706
- Series.prototype.setStackedPoints = function (stackingParam) {
40747
+ function seriesSetStackedPoints(stackingParam) {
40707
40748
  var stacking = stackingParam || this.options.stacking;
40708
40749
  if (!stacking || (this.visible !== true &&
40709
40750
  this.chart.options.chart.ignoreHiddenSeries !== false)) {
40710
40751
  return;
40711
40752
  }
40712
- var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? "" + series.type + ",".concat(stacking) : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks, stackIndicator, isNegative, stack, other, key, pointKey, i, x, y;
40753
+ var series = this, xData = series.processedXData, yData = series.processedYData, stackedYData = [], yDataLength = yData.length, seriesOptions = series.options, threshold = seriesOptions.threshold, stackThreshold = pick(seriesOptions.startFromThreshold && threshold, 0), stackOption = seriesOptions.stack, stackKey = stackingParam ? "" + series.type + ",".concat(stacking) : series.stackKey, negKey = '-' + stackKey, negStacks = series.negStacks, yAxis = series.yAxis, stacks = yAxis.stacking.stacks, oldStacks = yAxis.stacking.oldStacks;
40754
+ var stackIndicator,
40755
+ isNegative,
40756
+ stack,
40757
+ other,
40758
+ key,
40759
+ pointKey,
40760
+ i,
40761
+ x,
40762
+ y;
40713
40763
  yAxis.stacking.stacksTouched += 1;
40714
40764
  // loop over the non-null y values and read them into a local array
40715
40765
  for (i = 0; i < yDataLength; i++) {
@@ -40734,7 +40784,7 @@
40734
40784
  stacks[key][x].total = null;
40735
40785
  }
40736
40786
  else {
40737
- stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, isNegative, x, stackOption);
40787
+ stacks[key][x] = new StackItem(yAxis, yAxis.options.stackLabels, !!isNegative, x, stackOption);
40738
40788
  }
40739
40789
  }
40740
40790
  // If the StackItem doesn't exist, create it first
@@ -40811,130 +40861,195 @@
40811
40861
  }
40812
40862
  // Reset old stacks
40813
40863
  yAxis.stacking.oldStacks = {};
40814
- };
40815
- /**
40816
- * Iterate over all stacks and compute the absolute values to percent
40864
+ }
40865
+ /* *
40866
+ *
40867
+ * Classes
40817
40868
  *
40869
+ * */
40870
+ /**
40871
+ * Adds stacking support to axes.
40818
40872
  * @private
40819
- * @function Highcharts.Series#modifyStacks
40873
+ * @class
40820
40874
  */
40821
- Series.prototype.modifyStacks = function () {
40822
- var series = this,
40823
- yAxis = series.yAxis,
40824
- stackKey = series.stackKey,
40825
- stacks = yAxis.stacking.stacks,
40826
- processedXData = series.processedXData,
40827
- stackIndicator,
40828
- stacking = series.options.stacking;
40829
- if (series[stacking + 'Stacker']) { // Modifier function exists
40830
- [stackKey, '-' + stackKey].forEach(function (key) {
40831
- var i = processedXData.length,
40832
- x,
40833
- stack,
40834
- pointExtremes;
40875
+ var AxisAdditions = /** @class */ (function () {
40876
+ /* *
40877
+ *
40878
+ * Constructors
40879
+ *
40880
+ * */
40881
+ function AxisAdditions(axis) {
40882
+ this.oldStacks = {};
40883
+ this.stacks = {};
40884
+ this.stacksTouched = 0;
40885
+ this.axis = axis;
40886
+ }
40887
+ /* *
40888
+ *
40889
+ * Functions
40890
+ *
40891
+ * */
40892
+ /**
40893
+ * Build the stacks from top down
40894
+ * @private
40895
+ */
40896
+ AxisAdditions.prototype.buildStacks = function () {
40897
+ var stacking = this;
40898
+ var axis = stacking.axis;
40899
+ var axisSeries = axis.series;
40900
+ var reversedStacks = axis.options.reversedStacks;
40901
+ var len = axisSeries.length;
40902
+ var actualSeries,
40903
+ i;
40904
+ if (!axis.isXAxis) {
40905
+ stacking.usePercentage = false;
40906
+ i = len;
40835
40907
  while (i--) {
40836
- x = processedXData[i];
40837
- stackIndicator = series.getStackIndicator(stackIndicator, x, series.index, key);
40838
- stack = stacks[key] && stacks[key][x];
40839
- pointExtremes =
40840
- stack && stack.points[stackIndicator.key];
40841
- if (pointExtremes) {
40842
- series[stacking + 'Stacker'](pointExtremes, stack, i);
40843
- }
40908
+ actualSeries = axisSeries[reversedStacks ? i : len - i - 1];
40909
+ actualSeries.setStackedPoints();
40910
+ actualSeries.setGroupedPoints();
40911
+ }
40912
+ // Loop up again to compute percent and stream stack
40913
+ for (i = 0; i < len; i++) {
40914
+ axisSeries[i].modifyStacks();
40844
40915
  }
40916
+ fireEvent(axis, 'afterBuildStacks');
40917
+ }
40918
+ };
40919
+ /**
40920
+ * @private
40921
+ */
40922
+ AxisAdditions.prototype.cleanStacks = function () {
40923
+ var stacking = this,
40924
+ axis = stacking.axis;
40925
+ var stacks;
40926
+ if (!axis.isXAxis) {
40927
+ if (stacking.oldStacks) {
40928
+ stacks = stacking.stacks = stacking.oldStacks;
40929
+ }
40930
+ // reset stacks
40931
+ objectEach(stacks, function (type) {
40932
+ objectEach(type, function (stack) {
40933
+ stack.cumulative = stack.total;
40934
+ });
40935
+ });
40936
+ }
40937
+ };
40938
+ /**
40939
+ * Set all the stacks to initial states and destroy unused ones.
40940
+ * @private
40941
+ */
40942
+ AxisAdditions.prototype.resetStacks = function () {
40943
+ var stacking = this,
40944
+ axis = stacking.axis,
40945
+ stacks = stacking.stacks;
40946
+ if (!axis.isXAxis) {
40947
+ objectEach(stacks, function (type) {
40948
+ objectEach(type, function (stack, x) {
40949
+ // Clean up memory after point deletion (#1044, #4320)
40950
+ if (isNumber(stack.touched) &&
40951
+ stack.touched < stacking.stacksTouched) {
40952
+ stack.destroy();
40953
+ delete type[x];
40954
+ // Reset stacks
40955
+ }
40956
+ else {
40957
+ stack.total = null;
40958
+ stack.cumulative = null;
40959
+ }
40960
+ });
40961
+ });
40962
+ }
40963
+ };
40964
+ /**
40965
+ * @private
40966
+ */
40967
+ AxisAdditions.prototype.renderStackTotals = function () {
40968
+ var stacking = this,
40969
+ axis = stacking.axis,
40970
+ chart = axis.chart,
40971
+ renderer = chart.renderer,
40972
+ stacks = stacking.stacks,
40973
+ stackLabelsAnim = axis.options.stackLabels &&
40974
+ axis.options.stackLabels.animation,
40975
+ animationConfig = getDeferredAnimation(chart,
40976
+ stackLabelsAnim || false),
40977
+ stackTotalGroup = stacking.stackTotalGroup = (stacking.stackTotalGroup ||
40978
+ renderer
40979
+ .g('stack-labels')
40980
+ .attr({
40981
+ zIndex: 6,
40982
+ opacity: 0
40983
+ })
40984
+ .add());
40985
+ // plotLeft/Top will change when y axis gets wider so we need to
40986
+ // translate the stackTotalGroup at every render call. See bug #506
40987
+ // and #516
40988
+ stackTotalGroup.translate(chart.plotLeft, chart.plotTop);
40989
+ // Render each stack total
40990
+ objectEach(stacks, function (type) {
40991
+ objectEach(type, function (stack) {
40992
+ stack.render(stackTotalGroup);
40993
+ });
40845
40994
  });
40846
- }
40847
- };
40848
- /**
40849
- * Modifier function for percent stacks. Blows up the stack to 100%.
40995
+ stackTotalGroup.animate({
40996
+ opacity: 1
40997
+ }, animationConfig);
40998
+ };
40999
+ return AxisAdditions;
41000
+ }());
41001
+ /* *
40850
41002
  *
40851
- * @private
40852
- * @function Highcharts.Series#percentStacker
40853
- */
40854
- Series.prototype.percentStacker = function (pointExtremes, stack, i) {
40855
- var totalFactor = stack.total ? 100 / stack.total : 0;
40856
- // Y bottom value
40857
- pointExtremes[0] = correctFloat(pointExtremes[0] * totalFactor);
40858
- // Y value
40859
- pointExtremes[1] = correctFloat(pointExtremes[1] * totalFactor);
40860
- this.stackedYData[i] = pointExtremes[1];
40861
- };
40862
- /**
40863
- * Get stack indicator, according to it's x-value, to determine points with the
40864
- * same x-value
41003
+ * Composition
40865
41004
  *
40866
- * @private
40867
- * @function Highcharts.Series#getStackIndicator
40868
- */
40869
- Series.prototype.getStackIndicator = function (stackIndicator, x, index, key) {
40870
- // Update stack indicator, when:
40871
- // first point in a stack || x changed || stack type (negative vs positive)
40872
- // changed:
40873
- if (!defined(stackIndicator) ||
40874
- stackIndicator.x !== x ||
40875
- (key && stackIndicator.stackKey !== key)) {
40876
- stackIndicator = {
40877
- x: x,
40878
- index: 0,
40879
- key: key,
40880
- stackKey: key
40881
- };
40882
- }
40883
- else {
40884
- (stackIndicator).index++;
41005
+ * */
41006
+ var StackingAxis;
41007
+ (function (StackingAxis) {
41008
+ /* *
41009
+ *
41010
+ * Constants
41011
+ *
41012
+ * */
41013
+ var composedClasses = [];
41014
+ /* *
41015
+ *
41016
+ * Functions
41017
+ *
41018
+ * */
41019
+ /**
41020
+ * Extends axis with stacking support.
41021
+ * @private
41022
+ */
41023
+ function compose(AxisClass, ChartClass, SeriesClass) {
41024
+ if (composedClasses.indexOf(AxisClass) === -1) {
41025
+ composedClasses.push(AxisClass);
41026
+ addEvent(AxisClass, 'init', onAxisInit);
41027
+ addEvent(AxisClass, 'destroy', onAxisDestroy);
41028
+ }
41029
+ if (composedClasses.indexOf(ChartClass) === -1) {
41030
+ composedClasses.push(ChartClass);
41031
+ var chartProto = ChartClass.prototype;
41032
+ chartProto.getStacks = chartGetStacks;
41033
+ }
41034
+ if (composedClasses.indexOf(SeriesClass) === -1) {
41035
+ composedClasses.push(SeriesClass);
41036
+ var seriesProto_1 = SeriesClass.prototype;
41037
+ seriesProto_1.getStackIndicator = seriesGetStackIndicator;
41038
+ seriesProto_1.modifyStacks = seriesModifyStacks;
41039
+ seriesProto_1.percentStacker = seriesPercentStacker;
41040
+ seriesProto_1.setGroupedPoints = seriesSetGroupedPoints;
41041
+ seriesProto_1.setStackedPoints = seriesSetStackedPoints;
41042
+ }
40885
41043
  }
40886
- stackIndicator.key =
40887
- [index, x, stackIndicator.index].join(',');
40888
- return stackIndicator;
40889
- };
40890
- H.StackItem = StackItem; // @todo -> master
41044
+ StackingAxis.compose = compose;
41045
+ })(StackingAxis || (StackingAxis = {}));
40891
41046
  /* *
40892
41047
  *
40893
41048
  * Default Export
40894
41049
  *
40895
41050
  * */
40896
- /**
40897
- * Stack of data points
40898
- *
40899
- * @product highcharts
40900
- *
40901
- * @interface Highcharts.StackItemObject
40902
- */ /**
40903
- * Alignment settings
40904
- * @name Highcharts.StackItemObject#alignOptions
40905
- * @type {Highcharts.AlignObject}
40906
- */ /**
40907
- * Related axis
40908
- * @name Highcharts.StackItemObject#axis
40909
- * @type {Highcharts.Axis}
40910
- */ /**
40911
- * Cumulative value of the stacked data points
40912
- * @name Highcharts.StackItemObject#cumulative
40913
- * @type {number}
40914
- */ /**
40915
- * True if on the negative side
40916
- * @name Highcharts.StackItemObject#isNegative
40917
- * @type {boolean}
40918
- */ /**
40919
- * Related SVG element
40920
- * @name Highcharts.StackItemObject#label
40921
- * @type {Highcharts.SVGElement}
40922
- */ /**
40923
- * Related stack options
40924
- * @name Highcharts.StackItemObject#options
40925
- * @type {Highcharts.YAxisStackLabelsOptions}
40926
- */ /**
40927
- * Total value of the stacked data points
40928
- * @name Highcharts.StackItemObject#total
40929
- * @type {number}
40930
- */ /**
40931
- * Shared x value of the stack
40932
- * @name Highcharts.StackItemObject#x
40933
- * @type {number}
40934
- */
40935
- ''; // keeps doclets above in JS file
40936
41051
 
40937
- return H.StackItem;
41052
+ return StackingAxis;
40938
41053
  });
40939
41054
  _registerModule(_modules, 'Series/Line/LineSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Series, SeriesRegistry, U) {
40940
41055
  /* *
@@ -43327,6 +43442,8 @@
43327
43442
  * lineWidth, marker, step, useOhlcData
43328
43443
  * @product highcharts highstock
43329
43444
  * @optionparent plotOptions.column
43445
+ *
43446
+ * @private
43330
43447
  */
43331
43448
  ColumnSeries.defaultOptions = merge(Series.defaultOptions, {
43332
43449
  /**
@@ -43880,6 +43997,7 @@
43880
43997
  extend = U.extend,
43881
43998
  fireEvent = U.fireEvent,
43882
43999
  isArray = U.isArray,
44000
+ isString = U.isString,
43883
44001
  merge = U.merge,
43884
44002
  objectEach = U.objectEach,
43885
44003
  pick = U.pick,
@@ -44123,7 +44241,13 @@
44123
44241
  seriesOptions = series.options,
44124
44242
  points = series.points,
44125
44243
  hasRendered = series.hasRendered || 0,
44126
- renderer = chart.renderer;
44244
+ renderer = chart.renderer,
44245
+ _a = chart.options.chart,
44246
+ backgroundColor = _a.backgroundColor,
44247
+ plotBackgroundColor = _a.plotBackgroundColor,
44248
+ contrastColor = renderer.getContrast((isString(plotBackgroundColor) && plotBackgroundColor) ||
44249
+ (isString(backgroundColor) && backgroundColor) ||
44250
+ "#000000" /* Palette.neutralColor100 */);
44127
44251
  var seriesDlOptions = seriesOptions.dataLabels,
44128
44252
  pointOptions,
44129
44253
  dataLabelsGroup;
@@ -44210,7 +44334,7 @@
44210
44334
  labelDistance < 0 ||
44211
44335
  !!seriesOptions.stacking ?
44212
44336
  point.contrastColor :
44213
- "#000000" /* Palette.neutralColor100 */;
44337
+ contrastColor;
44214
44338
  }
44215
44339
  else {
44216
44340
  delete point.contrastColor;
@@ -44315,9 +44439,6 @@
44315
44439
  // read text bounding box
44316
44440
  dataLabel.css(style).shadow(labelOptions.shadow);
44317
44441
  }
44318
- if (!dataLabel.added) {
44319
- dataLabel.add(dataLabelsGroup);
44320
- }
44321
44442
  if (labelOptions.textPath && !labelOptions.useHTML) {
44322
44443
  dataLabel.setTextPath((point.getDataLabelPath &&
44323
44444
  point.getDataLabelPath(dataLabel)) || point.graphic, labelOptions.textPath);
@@ -44327,6 +44448,9 @@
44327
44448
  point.dataLabelPath = (point.dataLabelPath.destroy());
44328
44449
  }
44329
44450
  }
44451
+ if (!dataLabel.added) {
44452
+ dataLabel.add(dataLabelsGroup);
44453
+ }
44330
44454
  // Now the data label is created and placed at 0,0, so
44331
44455
  // we need to align it
44332
44456
  series.alignDataLabel(point, dataLabel, labelOptions, null, isNew);
@@ -45024,9 +45148,12 @@
45024
45148
  * series, in a scatter plot the series.name by default shows in the
45025
45149
  * headerFormat and point.x and point.y in the pointFormat.
45026
45150
  *
45027
- * @product highcharts highstock
45151
+ * @product highcharts highstock highmaps
45028
45152
  */
45029
45153
  tooltip: {
45154
+ /**
45155
+ * @product highcharts highstock
45156
+ */
45030
45157
  headerFormat: '<span style="color:{point.color}">\u25CF</span> ' +
45031
45158
  '<span style="font-size: 10px"> {series.name}</span><br/>',
45032
45159
  pointFormat: 'x: <b>{point.x}</b><br/>y: <b>{point.y}</b><br/>'
@@ -46056,6 +46183,8 @@
46056
46183
  * boostBlending
46057
46184
  * @product highcharts highmaps
46058
46185
  * @optionparent plotOptions.pie
46186
+ *
46187
+ * @private
46059
46188
  */
46060
46189
  PieSeries.defaultOptions = merge(Series.defaultOptions, {
46061
46190
  /**
@@ -46164,7 +46293,7 @@
46164
46293
  /**
46165
46294
  * Alignment method for data labels. Possible values are:
46166
46295
  *
46167
- * - `toPlotEdges`: Each label touches the nearest vertical edge of
46296
+ * - `plotEdges`: Each label touches the nearest vertical edge of
46168
46297
  * the plot area.
46169
46298
  *
46170
46299
  * - `connectors`: Connectors have the same x position and the
@@ -47796,7 +47925,7 @@
47796
47925
 
47797
47926
  return Responsive;
47798
47927
  });
47799
- _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, DefaultOptions, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {
47928
+ _registerModule(_modules, 'masters/highcharts.src.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Renderer/HTML/AST.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Renderer/RendererUtilities.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Renderer/HTML/HTMLElement.js'], _modules['Core/Renderer/HTML/HTMLRenderer.js'], _modules['Core/Axis/Axis.js'], _modules['Core/Axis/DateTimeAxis.js'], _modules['Core/Axis/LogarithmicAxis.js'], _modules['Core/Axis/PlotLineOrBand/PlotLineOrBand.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Tooltip.js'], _modules['Core/Series/Point.js'], _modules['Core/Pointer.js'], _modules['Core/MSPointer.js'], _modules['Core/Legend/Legend.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Axis/Stacking/StackingAxis.js'], _modules['Core/Axis/Stacking/StackItem.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Column/ColumnSeries.js'], _modules['Series/Column/ColumnDataLabel.js'], _modules['Series/Pie/PieSeries.js'], _modules['Series/Pie/PieDataLabel.js'], _modules['Core/Series/DataLabel.js'], _modules['Core/Responsive.js'], _modules['Core/Color/Color.js'], _modules['Core/Time.js']], function (Highcharts, Utilities, DefaultOptions, Fx, Animation, AST, FormatUtilities, RendererUtilities, SVGElement, SVGRenderer, HTMLElement, HTMLRenderer, Axis, DateTimeAxis, LogarithmicAxis, PlotLineOrBand, Tick, Tooltip, Point, Pointer, MSPointer, Legend, Chart, StackingAxis, StackItem, Series, SeriesRegistry, ColumnSeries, ColumnDataLabel, PieSeries, PieDataLabel, DataLabel, Responsive, Color, Time) {
47800
47929
 
47801
47930
  var G = Highcharts;
47802
47931
  // Animation
@@ -47817,6 +47946,7 @@
47817
47946
  G.Point = Point;
47818
47947
  G.Pointer = (MSPointer.isRequired() ? MSPointer : Pointer);
47819
47948
  G.Series = Series;
47949
+ G.StackItem = StackItem;
47820
47950
  G.SVGElement = SVGElement;
47821
47951
  G.SVGRenderer = SVGRenderer;
47822
47952
  G.Tick = Tick;
@@ -47892,6 +48022,7 @@
47892
48022
  PieDataLabel.compose(PieSeries);
47893
48023
  PlotLineOrBand.compose(Axis);
47894
48024
  Responsive.compose(Chart);
48025
+ StackingAxis.compose(Axis, Chart, Series);
47895
48026
  // Default Export
47896
48027
 
47897
48028
  return G;