highcharts 10.0.0 → 10.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (942) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +10 -20
  3. package/css/themes/dark-unica.css +10 -20
  4. package/css/themes/grid-light.css +10 -20
  5. package/css/themes/sand-signika.css +10 -20
  6. package/es-modules/Accessibility/A11yI18n.js +4 -4
  7. package/es-modules/Accessibility/Accessibility.js +8 -3
  8. package/es-modules/Accessibility/Components/AnnotationsA11y.js +3 -3
  9. package/es-modules/Accessibility/Components/ContainerComponent.js +11 -10
  10. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +18 -11
  11. package/es-modules/Accessibility/Components/LegendComponent.js +11 -11
  12. package/es-modules/Accessibility/Components/MenuComponent.js +3 -1
  13. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +3 -1
  14. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +3 -1
  15. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -17
  16. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +35 -10
  17. package/es-modules/Accessibility/Components/ZoomComponent.js +30 -70
  18. package/es-modules/Accessibility/FocusBorder.js +6 -5
  19. package/es-modules/Accessibility/HighContrastMode.js +1 -1
  20. package/es-modules/Accessibility/KeyboardNavigation.js +2 -2
  21. package/es-modules/Accessibility/Options/{Options.js → A11yDefaults.js} +73 -5
  22. package/es-modules/Accessibility/Options/DeprecatedOptions.js +12 -2
  23. package/es-modules/Accessibility/Options/{LangOptions.js → LangDefaults.js} +46 -31
  24. package/es-modules/Accessibility/Utils/ChartUtilities.js +10 -5
  25. package/es-modules/Core/Animation/Fx.js +1 -1
  26. package/es-modules/Core/Axis/Axis.js +51 -46
  27. package/es-modules/Core/Axis/Axis3D.js +1 -1
  28. package/es-modules/Core/Axis/AxisDefaults.js +9 -9
  29. package/es-modules/Core/Axis/BrokenAxis.js +1 -1
  30. package/es-modules/Core/Axis/Color/ColorAxis.js +4 -2
  31. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +7 -3
  32. package/es-modules/Core/Axis/DateTimeAxis.js +5 -3
  33. package/es-modules/Core/Axis/GridAxis.js +821 -822
  34. package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  35. package/es-modules/Core/Axis/NavigatorAxis.js +2 -2
  36. package/es-modules/Core/Axis/OrdinalAxis.js +26 -3
  37. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
  38. package/es-modules/Core/Axis/RadialAxis.js +1 -1
  39. package/es-modules/Core/Axis/Stacking/StackItem.js +262 -0
  40. package/es-modules/Core/Axis/Stacking/StackingAxis.js +468 -0
  41. package/es-modules/Core/Axis/Tick.js +22 -18
  42. package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +732 -0
  43. package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +313 -0
  44. package/es-modules/Core/Axis/WaterfallAxis.js +1 -1
  45. package/es-modules/Core/Axis/ZAxis.js +76 -71
  46. package/es-modules/Core/Chart/Chart.js +42 -9
  47. package/es-modules/Core/Chart/Chart3D.js +2 -2
  48. package/es-modules/Core/Chart/ChartDefaults.js +165 -5
  49. package/es-modules/Core/Chart/GanttChart.js +3 -1
  50. package/es-modules/Core/Chart/MapChart.js +3 -1
  51. package/es-modules/Core/Chart/StockChart.js +12 -8
  52. package/es-modules/Core/Color/Color.js +1 -1
  53. package/es-modules/Core/DefaultOptions.js +19 -16
  54. package/es-modules/Core/Geometry/CircleUtilities.js +4 -4
  55. package/es-modules/Core/Globals.js +2 -1
  56. package/es-modules/Core/HttpUtilities.js +39 -37
  57. package/es-modules/Core/Legend/Legend.js +4 -4
  58. package/es-modules/Core/MSPointer.js +3 -1
  59. package/es-modules/{Extensions → Core}/Math3D.js +48 -43
  60. package/es-modules/Core/Navigator.js +31 -14
  61. package/es-modules/Core/Pointer.js +8 -10
  62. package/es-modules/Core/Renderer/HTML/AST.js +13 -7
  63. package/es-modules/Core/Renderer/HTML/HTMLElement.js +3 -1
  64. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +3 -1
  65. package/es-modules/Core/Renderer/SVG/SVGElement.js +132 -192
  66. package/es-modules/Core/Renderer/SVG/SVGLabel.js +32 -28
  67. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +50 -45
  68. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +5 -3
  69. package/es-modules/Core/Renderer/SVG/TextBuilder.js +5 -3
  70. package/es-modules/Core/Scrollbar.js +12 -6
  71. package/es-modules/Core/ScrollbarDefaults.js +8 -8
  72. package/es-modules/Core/Series/DataLabel.js +63 -40
  73. package/es-modules/Core/Series/Point.js +11 -2
  74. package/es-modules/Core/Series/Series.js +60 -43
  75. package/es-modules/Core/Series/Series3D.js +4 -2
  76. package/es-modules/Core/Series/SeriesDefaults.js +11 -6
  77. package/es-modules/Core/Series/SeriesRegistry.js +6 -29
  78. package/es-modules/Core/Time.js +6 -7
  79. package/es-modules/Core/Tooltip.js +17 -6
  80. package/es-modules/Core/Utilities.js +7 -9
  81. package/es-modules/Data/DataConverter.js +6 -1
  82. package/es-modules/Data/DataPromise.js +1 -1
  83. package/es-modules/Data/DataSeriesComposition.js +288 -0
  84. package/es-modules/Data/DataSeriesConverter.js +1 -1
  85. package/es-modules/Data/DataTable.js +14 -12
  86. package/es-modules/Data/Modifiers/ChainModifier.js +4 -2
  87. package/es-modules/Data/Modifiers/DataModifier.js +1 -1
  88. package/es-modules/Data/Modifiers/GroupModifier.js +4 -2
  89. package/es-modules/Data/Modifiers/InvertModifier.js +10 -8
  90. package/es-modules/Data/Modifiers/RangeModifier.js +4 -2
  91. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +4 -2
  92. package/es-modules/Data/Modifiers/SortModifier.js +4 -2
  93. package/es-modules/Data/Parsers/CSVParser.js +3 -1
  94. package/es-modules/Data/Parsers/DataParser.js +2 -2
  95. package/es-modules/Data/Parsers/GoogleSheetsParser.js +3 -2
  96. package/es-modules/Data/Parsers/HTMLTableParser.js +3 -1
  97. package/es-modules/Data/Stores/CSVStore.js +8 -5
  98. package/es-modules/Data/Stores/DataStore.js +1 -1
  99. package/es-modules/Data/Stores/GoogleSheetsStore.js +3 -1
  100. package/es-modules/Data/Stores/HTMLTableStore.js +3 -1
  101. package/es-modules/Extensions/Annotations/Annotation.js +652 -0
  102. package/es-modules/Extensions/Annotations/AnnotationChart.js +291 -0
  103. package/es-modules/Extensions/Annotations/AnnotationDefaults.js +624 -0
  104. package/es-modules/Extensions/Annotations/ControlPoint.js +89 -64
  105. package/es-modules/Extensions/Annotations/{Mixins/ControllableMixin.js → Controllables/Controllable.js} +300 -241
  106. package/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +63 -50
  107. package/es-modules/Extensions/Annotations/Controllables/ControllableDefaults.js +95 -0
  108. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +95 -63
  109. package/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +50 -44
  110. package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +95 -78
  111. package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +167 -51
  112. package/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +53 -52
  113. package/es-modules/Extensions/Annotations/{Mixins/EventEmitterMixin.js → EventEmitter.js} +136 -116
  114. package/es-modules/Extensions/Annotations/MockPoint.js +210 -145
  115. package/es-modules/Extensions/Annotations/NavigationBindings.js +272 -663
  116. package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +396 -0
  117. package/es-modules/Extensions/Annotations/NavigationBindingsUtilities.js +98 -0
  118. package/es-modules/Extensions/Annotations/Popup/Popup.js +295 -0
  119. package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +177 -0
  120. package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +81 -0
  121. package/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +609 -0
  122. package/es-modules/Extensions/Annotations/Popup/PopupTabs.js +134 -0
  123. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +23 -23
  124. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +15 -21
  125. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +14 -12
  126. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +33 -23
  127. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +67 -65
  128. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +14 -21
  129. package/es-modules/Extensions/Annotations/Types/Measure.js +259 -251
  130. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +15 -19
  131. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +24 -19
  132. package/es-modules/Extensions/Annotations/Types/Tunnel.js +17 -15
  133. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +15 -17
  134. package/es-modules/Extensions/Boost/Boost.js +320 -15
  135. package/es-modules/Extensions/Boost/BoostChart.js +245 -0
  136. package/es-modules/Extensions/Boost/BoostSeries.js +927 -0
  137. package/es-modules/Extensions/Boost/BoostableMap.js +21 -5
  138. package/es-modules/Extensions/Boost/Boostables.js +13 -2
  139. package/es-modules/Extensions/Boost/NamedColors.js +15 -6
  140. package/es-modules/Extensions/Boost/WGLDrawMode.js +36 -0
  141. package/es-modules/Extensions/Boost/WGLRenderer.js +288 -295
  142. package/es-modules/Extensions/Boost/WGLShader.js +370 -376
  143. package/es-modules/Extensions/Boost/WGLVertexBuffer.js +192 -0
  144. package/es-modules/Extensions/BoostCanvas.js +70 -48
  145. package/es-modules/Extensions/Breadcrumbs.js +37 -9
  146. package/es-modules/Extensions/CurrentDateIndication.js +1 -1
  147. package/es-modules/Extensions/Data.js +638 -602
  148. package/es-modules/Extensions/DataGrouping.js +68 -28
  149. package/es-modules/Extensions/Debugger/Debugger.js +60 -22
  150. package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
  151. package/es-modules/Extensions/DownloadURL.js +3 -3
  152. package/es-modules/Extensions/DragPanes.js +1 -1
  153. package/es-modules/Extensions/DraggablePoints.js +4 -3
  154. package/es-modules/Extensions/Drilldown.js +15 -14
  155. package/es-modules/Extensions/{ExportData.js → ExportData/ExportData.js} +358 -498
  156. package/es-modules/Extensions/ExportData/ExportDataDefaults.js +272 -0
  157. package/es-modules/Extensions/Exporting/Exporting.js +30 -17
  158. package/es-modules/Extensions/Exporting/ExportingDefaults.js +10 -8
  159. package/es-modules/Extensions/Exporting/Fullscreen.js +352 -0
  160. package/es-modules/Extensions/GeoJSON.js +3 -4
  161. package/es-modules/Extensions/MarkerClusters.js +5 -3
  162. package/es-modules/Extensions/NoDataToDisplay.js +1 -1
  163. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  164. package/es-modules/Extensions/Oldie/Oldie.js +2 -2
  165. package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
  166. package/es-modules/Extensions/Pane.js +3 -3
  167. package/es-modules/Extensions/ParallelCoordinates.js +12 -8
  168. package/es-modules/Extensions/PatternFill.js +14 -2
  169. package/es-modules/Extensions/RangeSelector.js +29 -18
  170. package/es-modules/Extensions/ScrollablePlotArea.js +4 -4
  171. package/es-modules/Extensions/{SeriesLabel.js → SeriesLabel/SeriesLabel.js} +264 -386
  172. package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +124 -0
  173. package/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +67 -0
  174. package/es-modules/Extensions/Sonification/ChartSonify.js +1 -1
  175. package/es-modules/Extensions/Sonification/Earcon.js +1 -1
  176. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  177. package/es-modules/Extensions/Themes/HighContrastLight.js +9 -9
  178. package/es-modules/Maps/MapNavigation.js +3 -7
  179. package/es-modules/Maps/MapPointer.js +1 -1
  180. package/es-modules/Maps/MapView.js +31 -19
  181. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +1 -1
  182. package/es-modules/Maps/MapViewOptionsDefault.js +3 -1
  183. package/es-modules/Maps/Projection.js +13 -11
  184. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +3 -1
  185. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +12 -2
  186. package/es-modules/Series/Area/AreaSeries.js +21 -14
  187. package/es-modules/Series/{Area3DSeries.js → Area3D/Area3DSeries.js} +42 -20
  188. package/es-modules/Series/AreaRange/AreaRangePoint.js +24 -11
  189. package/es-modules/Series/AreaRange/AreaRangeSeries.js +162 -149
  190. package/es-modules/Series/AreaSpline/AreaSplineSeries.js +45 -41
  191. package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +43 -43
  192. package/es-modules/Series/Bar/BarSeries.js +3 -1
  193. package/es-modules/Series/Bellcurve/BellcurveSeries.js +3 -1
  194. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +4 -2
  195. package/es-modules/Series/Bubble/BubbleLegendComposition.js +223 -231
  196. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
  197. package/es-modules/Series/Bubble/BubbleLegendItem.js +46 -45
  198. package/es-modules/Series/Bubble/BubblePoint.js +3 -1
  199. package/es-modules/Series/Bubble/BubbleSeries.js +96 -68
  200. package/es-modules/Series/Bullet/BulletPoint.js +3 -1
  201. package/es-modules/Series/Bullet/BulletSeries.js +4 -3
  202. package/es-modules/Series/Candlestick/CandlestickSeries.js +5 -3
  203. package/es-modules/Series/CenteredUtilities.js +8 -2
  204. package/es-modules/Series/ColorMapComposition.js +111 -0
  205. package/es-modules/Series/Column/ColumnSeries.js +8 -4
  206. package/es-modules/Series/Column3D/Column3DComposition.js +2 -2
  207. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +4 -2
  208. package/es-modules/Series/ColumnRange/ColumnRangePoint.js +17 -13
  209. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +60 -57
  210. package/es-modules/Series/Cylinder/CylinderComposition.js +1 -1
  211. package/es-modules/Series/Cylinder/CylinderPoint.js +3 -1
  212. package/es-modules/Series/Cylinder/CylinderSeries.js +3 -1
  213. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +27 -12
  214. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +19 -3
  215. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -1
  216. package/es-modules/Series/DragNodesComposition.js +166 -0
  217. package/es-modules/Series/DrawPointUtilities.js +87 -0
  218. package/es-modules/Series/Dumbbell/DumbbellPoint.js +3 -1
  219. package/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
  220. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +4 -2
  221. package/es-modules/Series/Flags/FlagsPoint.js +4 -1
  222. package/es-modules/Series/Flags/FlagsSeries.js +13 -16
  223. package/es-modules/Series/Funnel/FunnelSeries.js +5 -3
  224. package/es-modules/Series/Funnel3D/Funnel3DPoint.js +3 -1
  225. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +4 -2
  226. package/es-modules/Series/Gantt/GanttPoint.js +3 -1
  227. package/es-modules/Series/Gantt/GanttSeries.js +4 -2
  228. package/es-modules/Series/Gauge/GaugePoint.js +3 -1
  229. package/es-modules/Series/Gauge/GaugeSeries.js +196 -174
  230. package/es-modules/Series/GraphLayoutComposition.js +130 -0
  231. package/es-modules/Series/HLC/HLCPoint.js +3 -1
  232. package/es-modules/Series/HLC/HLCSeries.js +4 -2
  233. package/es-modules/Series/Heatmap/HeatmapPoint.js +7 -5
  234. package/es-modules/Series/Heatmap/HeatmapSeries.js +34 -34
  235. package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
  236. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -1
  237. package/es-modules/Series/Histogram/HistogramSeries.js +3 -1
  238. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +3 -1
  239. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +11 -9
  240. package/es-modules/Series/Item/ItemPoint.js +3 -1
  241. package/es-modules/Series/Item/ItemSeries.js +3 -1
  242. package/es-modules/Series/Line/LineSeries.js +4 -2
  243. package/es-modules/Series/Lollipop/LollipopPoint.js +24 -12
  244. package/es-modules/Series/Lollipop/LollipopSeries.js +18 -11
  245. package/es-modules/Series/Map/MapPoint.js +8 -6
  246. package/es-modules/Series/Map/MapSeries.js +115 -28
  247. package/es-modules/Series/MapBubble/MapBubblePoint.js +18 -18
  248. package/es-modules/Series/MapBubble/MapBubbleSeries.js +69 -21
  249. package/es-modules/Series/MapLine/MapLineSeries.js +18 -1
  250. package/es-modules/Series/MapPoint/MapPointPoint.js +4 -2
  251. package/es-modules/Series/MapPoint/MapPointSeries.js +14 -2
  252. package/es-modules/Series/Networkgraph/EulerIntegration.js +199 -0
  253. package/es-modules/Series/Networkgraph/NetworkgraphPoint.js +290 -0
  254. package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +401 -0
  255. package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +545 -0
  256. package/es-modules/Series/Networkgraph/QuadTree.js +66 -272
  257. package/es-modules/Series/Networkgraph/QuadTreeNode.js +271 -0
  258. package/es-modules/Series/Networkgraph/{Layouts.js → ReingoldFruchtermanLayout.js} +240 -259
  259. package/es-modules/Series/Networkgraph/VerletIntegration.js +193 -0
  260. package/es-modules/Series/NodesComposition.js +45 -40
  261. package/es-modules/Series/OHLC/OHLCPoint.js +3 -1
  262. package/es-modules/Series/OHLC/OHLCSeries.js +3 -1
  263. package/es-modules/Series/Organization/OrganizationPoint.js +3 -1
  264. package/es-modules/Series/Organization/OrganizationSeries.js +14 -4
  265. package/es-modules/Series/PackedBubble/PackedBubbleIntegration.js +81 -0
  266. package/es-modules/Series/PackedBubble/{PackedBubbleComposition.js → PackedBubbleLayout.js} +114 -79
  267. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +5 -3
  268. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +200 -571
  269. package/es-modules/Series/PackedBubble/PackedBubbleSeriesDefaults.js +394 -0
  270. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -1
  271. package/es-modules/Series/Pie/PieDataLabel.js +4 -2
  272. package/es-modules/Series/Pie/PiePoint.js +3 -1
  273. package/es-modules/Series/Pie/PieSeries.js +54 -38
  274. package/es-modules/Series/Pie3D/Pie3DPoint.js +3 -1
  275. package/es-modules/Series/Pie3D/Pie3DSeries.js +3 -1
  276. package/es-modules/Series/PolarComposition.js +819 -0
  277. package/es-modules/Series/Polygon/PolygonSeries.js +3 -1
  278. package/es-modules/Series/Pyramid/PyramidSeries.js +3 -1
  279. package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +3 -1
  280. package/es-modules/Series/Sankey/SankeyPoint.js +3 -1
  281. package/es-modules/Series/Sankey/SankeySeries.js +38 -10
  282. package/es-modules/Series/Scatter/ScatterSeries.js +14 -6
  283. package/es-modules/Series/Scatter3D/Scatter3DPoint.js +3 -1
  284. package/es-modules/Series/Scatter3D/Scatter3DSeries.js +4 -2
  285. package/es-modules/Series/SeriesOnPointComposition.js +395 -0
  286. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +6 -4
  287. package/es-modules/Series/Spline/SplineSeries.js +13 -4
  288. package/es-modules/Series/Streamgraph/StreamgraphSeries.js +3 -1
  289. package/es-modules/Series/Sunburst/SunburstPoint.js +8 -9
  290. package/es-modules/Series/Sunburst/SunburstSeries.js +32 -5
  291. package/es-modules/Series/Tilemap/TilemapPoint.js +3 -1
  292. package/es-modules/Series/Tilemap/TilemapSeries.js +3 -1
  293. package/es-modules/Series/Timeline/TimelinePoint.js +3 -1
  294. package/es-modules/Series/Timeline/TimelineSeries.js +8 -4
  295. package/es-modules/Series/Treemap/TreemapPoint.js +8 -4
  296. package/es-modules/Series/Treemap/TreemapSeries.js +12 -10
  297. package/es-modules/Series/VariablePie/VariablePieSeries.js +3 -1
  298. package/es-modules/Series/Variwide/VariwidePoint.js +3 -1
  299. package/es-modules/Series/Variwide/VariwideSeries.js +3 -1
  300. package/es-modules/Series/Vector/VectorSeries.js +5 -5
  301. package/es-modules/Series/Venn/VennPoint.js +5 -5
  302. package/es-modules/Series/Venn/VennSeries.js +9 -6
  303. package/es-modules/Series/Waterfall/WaterfallPoint.js +3 -1
  304. package/es-modules/Series/Waterfall/WaterfallSeries.js +14 -12
  305. package/es-modules/Series/Windbarb/WindbarbPoint.js +3 -1
  306. package/es-modules/Series/Windbarb/WindbarbSeries.js +3 -1
  307. package/es-modules/Series/Wordcloud/WordcloudPoint.js +6 -6
  308. package/es-modules/Series/Wordcloud/WordcloudSeries.js +12 -9
  309. package/es-modules/Series/Wordcloud/WordcloudUtils.js +1 -1
  310. package/es-modules/Series/XRange/XRangePoint.js +57 -46
  311. package/es-modules/Series/XRange/XRangeSeries.js +124 -274
  312. package/es-modules/Series/XRange/XRangeSeriesDefaults.js +211 -0
  313. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +13 -3
  314. package/es-modules/Stock/Indicators/AD/ADIndicator.js +8 -1
  315. package/es-modules/Stock/Indicators/AO/AOIndicator.js +27 -14
  316. package/es-modules/Stock/Indicators/APO/APOIndicator.js +9 -2
  317. package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +19 -4
  318. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +18 -3
  319. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +9 -3
  320. package/es-modules/Stock/Indicators/BB/BBIndicator.js +11 -5
  321. package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +19 -4
  322. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +23 -1
  323. package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +18 -2
  324. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +10 -3
  325. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +28 -1
  326. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +18 -7
  327. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +22 -9
  328. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -1
  329. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +13 -1
  330. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +37 -16
  331. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +28 -1
  332. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +15 -2
  333. package/es-modules/Stock/Indicators/LinearRegression/{LinearRegression.js → LinearRegressionIndicator.js} +14 -2
  334. package/es-modules/Stock/Indicators/LinearRegressionAngle/{LinearRegressionAngle.js → LinearRegressionAngleIndicator.js} +15 -8
  335. package/es-modules/Stock/Indicators/LinearRegressionIntercept/{LinearRegressionIntercept.js → LinearRegressionInterceptIndicator.js} +14 -2
  336. package/es-modules/Stock/Indicators/LinearRegressionSlopes/{LinearRegressionSlopes.js → LinearRegressionSlopesIndicator.js} +14 -2
  337. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +47 -23
  338. package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +26 -11
  339. package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +33 -3
  340. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +85 -95
  341. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +19 -2
  342. package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +13 -1
  343. package/es-modules/Stock/Indicators/PC/PCIndicator.js +16 -9
  344. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +17 -5
  345. package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +19 -4
  346. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +19 -7
  347. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +19 -13
  348. package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +28 -1
  349. package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +18 -3
  350. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +23 -3
  351. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +4 -2
  352. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +28 -1
  353. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +18 -1
  354. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +23 -7
  355. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +3 -1
  356. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +28 -1
  357. package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +17 -5
  358. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +35 -4
  359. package/es-modules/Stock/Indicators/VBP/VBPPoint.js +9 -7
  360. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +14 -2
  361. package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +33 -3
  362. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +13 -1
  363. package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +14 -2
  364. package/es-modules/Stock/StockToolbar.js +568 -0
  365. package/es-modules/Stock/StockTools.js +256 -0
  366. package/es-modules/Stock/StockToolsBindings.js +140 -647
  367. package/es-modules/Stock/StockToolsDefaults.js +1190 -0
  368. package/es-modules/Stock/StockToolsGui.js +150 -1771
  369. package/es-modules/Stock/StockToolsUtilities.js +423 -0
  370. package/es-modules/masters/highcharts-3d.src.js +5 -4
  371. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  372. package/es-modules/masters/highcharts-more.src.js +7 -6
  373. package/es-modules/masters/highcharts.src.js +5 -2
  374. package/es-modules/masters/highmaps.src.js +1 -1
  375. package/es-modules/masters/highstock.src.js +1 -1
  376. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  377. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  378. package/es-modules/masters/indicators/ao.src.js +1 -1
  379. package/es-modules/masters/indicators/apo.src.js +1 -1
  380. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  381. package/es-modules/masters/indicators/aroon.src.js +1 -1
  382. package/es-modules/masters/indicators/atr.src.js +1 -1
  383. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  384. package/es-modules/masters/indicators/cci.src.js +1 -1
  385. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  386. package/es-modules/masters/indicators/cmf.src.js +1 -1
  387. package/es-modules/masters/indicators/cmo.src.js +1 -1
  388. package/es-modules/masters/indicators/dema.src.js +1 -1
  389. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  390. package/es-modules/masters/indicators/dmi.src.js +1 -1
  391. package/es-modules/masters/indicators/dpo.src.js +1 -1
  392. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  393. package/es-modules/masters/indicators/indicators-all.src.js +5 -7
  394. package/es-modules/masters/indicators/indicators.src.js +1 -1
  395. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  396. package/es-modules/masters/indicators/klinger.src.js +1 -1
  397. package/es-modules/masters/indicators/macd.src.js +1 -1
  398. package/es-modules/masters/indicators/mfi.src.js +1 -1
  399. package/es-modules/masters/indicators/momentum.src.js +1 -1
  400. package/es-modules/masters/indicators/natr.src.js +1 -1
  401. package/es-modules/masters/indicators/obv.src.js +1 -1
  402. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  403. package/es-modules/masters/indicators/ppo.src.js +1 -1
  404. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  405. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  406. package/es-modules/masters/indicators/psar.src.js +1 -1
  407. package/es-modules/masters/indicators/regressions.src.js +5 -5
  408. package/es-modules/masters/indicators/roc.src.js +1 -1
  409. package/es-modules/masters/indicators/rsi.src.js +1 -1
  410. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  411. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  412. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  413. package/es-modules/masters/indicators/tema.src.js +1 -1
  414. package/es-modules/masters/indicators/trendline.src.js +1 -1
  415. package/es-modules/masters/indicators/trix.src.js +1 -1
  416. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  417. package/es-modules/masters/indicators/vwap.src.js +1 -1
  418. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  419. package/es-modules/masters/indicators/wma.src.js +1 -1
  420. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  421. package/es-modules/masters/modules/accessibility.src.js +1 -1
  422. package/es-modules/masters/modules/annotations-advanced.src.js +6 -4
  423. package/es-modules/masters/modules/annotations.src.js +6 -4
  424. package/es-modules/masters/modules/arc-diagram.src.js +1 -1
  425. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  426. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  427. package/es-modules/masters/modules/boost.src.js +6 -2
  428. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  429. package/es-modules/masters/modules/bullet.src.js +1 -1
  430. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  431. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  432. package/es-modules/masters/modules/cylinder.src.js +1 -1
  433. package/es-modules/masters/modules/data.src.js +2 -1
  434. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  435. package/es-modules/masters/modules/debugger.src.js +5 -3
  436. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  437. package/es-modules/masters/modules/dotplot.src.js +1 -1
  438. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  439. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  440. package/es-modules/masters/modules/drilldown.src.js +1 -1
  441. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  442. package/es-modules/masters/modules/export-data.src.js +5 -2
  443. package/es-modules/masters/modules/exporting.src.js +1 -2
  444. package/es-modules/masters/modules/full-screen.src.js +6 -2
  445. package/es-modules/masters/modules/funnel.src.js +1 -1
  446. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  447. package/es-modules/masters/modules/gantt.src.js +3 -2
  448. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  449. package/es-modules/masters/modules/heatmap.src.js +1 -1
  450. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  451. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  452. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  453. package/es-modules/masters/modules/item-series.src.js +1 -1
  454. package/es-modules/masters/modules/lollipop.src.js +1 -1
  455. package/es-modules/masters/modules/map.src.js +2 -2
  456. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  457. package/es-modules/masters/modules/networkgraph.src.js +5 -2
  458. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  459. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  460. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  461. package/es-modules/masters/modules/oldie.src.js +1 -1
  462. package/es-modules/masters/modules/organization.src.js +1 -1
  463. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  464. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  465. package/es-modules/masters/modules/pareto.src.js +1 -1
  466. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  467. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  468. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  469. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  470. package/es-modules/masters/modules/sankey.src.js +1 -1
  471. package/es-modules/masters/modules/series-label.src.js +5 -2
  472. package/es-modules/masters/modules/series-on-point.src.js +16 -0
  473. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  474. package/es-modules/masters/modules/sonification.src.js +2 -6
  475. package/es-modules/masters/modules/static-scale.src.js +1 -1
  476. package/es-modules/masters/modules/stock-tools.src.js +10 -3
  477. package/es-modules/masters/modules/stock.src.js +1 -1
  478. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  479. package/es-modules/masters/modules/sunburst.src.js +1 -1
  480. package/es-modules/masters/modules/tilemap.src.js +1 -1
  481. package/es-modules/masters/modules/timeline.src.js +1 -1
  482. package/es-modules/masters/modules/treegrid.src.js +2 -2
  483. package/es-modules/masters/modules/treemap.src.js +1 -1
  484. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  485. package/es-modules/masters/modules/variwide.src.js +1 -1
  486. package/es-modules/masters/modules/vector.src.js +1 -1
  487. package/es-modules/masters/modules/venn.src.js +1 -1
  488. package/es-modules/masters/modules/windbarb.src.js +1 -1
  489. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  490. package/es-modules/masters/modules/xrange.src.js +5 -2
  491. package/es-modules/masters/themes/avocado.src.js +1 -1
  492. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  493. package/es-modules/masters/themes/brand-light.src.js +1 -1
  494. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  495. package/es-modules/masters/themes/dark-green.src.js +1 -1
  496. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  497. package/es-modules/masters/themes/gray.src.js +1 -1
  498. package/es-modules/masters/themes/grid-light.src.js +1 -1
  499. package/es-modules/masters/themes/grid.src.js +1 -1
  500. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  501. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  502. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  503. package/es-modules/masters/themes/skies.src.js +1 -1
  504. package/es-modules/masters/themes/sunset.src.js +1 -1
  505. package/highcharts-3d.js +98 -99
  506. package/highcharts-3d.js.map +1 -1
  507. package/highcharts-3d.src.js +233 -212
  508. package/highcharts-gantt.js +809 -805
  509. package/highcharts-gantt.js.map +1 -1
  510. package/highcharts-gantt.src.js +3817 -3470
  511. package/highcharts-more.d.ts +15 -8
  512. package/highcharts-more.js +201 -195
  513. package/highcharts-more.js.map +1 -1
  514. package/highcharts-more.src.d.ts +15 -8
  515. package/highcharts-more.src.js +7994 -7461
  516. package/highcharts.d.ts +11364 -1136
  517. package/highcharts.js +593 -591
  518. package/highcharts.js.map +1 -1
  519. package/highcharts.src.d.ts +11364 -1136
  520. package/highcharts.src.js +1408 -1117
  521. package/highmaps.js +762 -758
  522. package/highmaps.js.map +1 -1
  523. package/highmaps.src.js +2237 -1721
  524. package/highstock.js +796 -792
  525. package/highstock.js.map +1 -1
  526. package/highstock.src.js +1617 -1224
  527. package/indicators/acceleration-bands.d.ts +1 -17
  528. package/indicators/acceleration-bands.js +11 -12
  529. package/indicators/acceleration-bands.js.map +1 -1
  530. package/indicators/acceleration-bands.src.d.ts +1 -17
  531. package/indicators/acceleration-bands.src.js +99 -101
  532. package/indicators/accumulation-distribution.js +1 -1
  533. package/indicators/accumulation-distribution.js.map +1 -1
  534. package/indicators/accumulation-distribution.src.js +6 -1
  535. package/indicators/ao.js +6 -6
  536. package/indicators/ao.js.map +1 -1
  537. package/indicators/ao.src.js +25 -16
  538. package/indicators/apo.js +1 -1
  539. package/indicators/apo.js.map +1 -1
  540. package/indicators/apo.src.js +6 -1
  541. package/indicators/aroon-oscillator.d.ts +1 -17
  542. package/indicators/aroon-oscillator.js +10 -10
  543. package/indicators/aroon-oscillator.js.map +1 -1
  544. package/indicators/aroon-oscillator.src.d.ts +1 -17
  545. package/indicators/aroon-oscillator.src.js +95 -101
  546. package/indicators/aroon.d.ts +1 -17
  547. package/indicators/aroon.js +11 -11
  548. package/indicators/aroon.js.map +1 -1
  549. package/indicators/aroon.src.d.ts +1 -17
  550. package/indicators/aroon.src.js +104 -101
  551. package/indicators/atr.js +1 -1
  552. package/indicators/atr.js.map +1 -1
  553. package/indicators/atr.src.js +17 -4
  554. package/indicators/bollinger-bands.d.ts +1 -17
  555. package/indicators/bollinger-bands.js +11 -12
  556. package/indicators/bollinger-bands.js.map +1 -1
  557. package/indicators/bollinger-bands.src.d.ts +1 -17
  558. package/indicators/bollinger-bands.src.js +97 -103
  559. package/indicators/cci.js +1 -1
  560. package/indicators/cci.js.map +1 -1
  561. package/indicators/cci.src.js +17 -4
  562. package/indicators/chaikin.js +8 -8
  563. package/indicators/chaikin.js.map +1 -1
  564. package/indicators/chaikin.src.js +13 -5
  565. package/indicators/cmf.js +1 -1
  566. package/indicators/cmf.js.map +1 -1
  567. package/indicators/cmf.src.js +21 -1
  568. package/indicators/cmo.js +1 -1
  569. package/indicators/cmo.js.map +1 -1
  570. package/indicators/cmo.src.js +16 -2
  571. package/indicators/dema.js +1 -1
  572. package/indicators/dema.js.map +1 -1
  573. package/indicators/dema.src.js +26 -1
  574. package/indicators/disparity-index.js +1 -1
  575. package/indicators/disparity-index.src.js +1 -1
  576. package/indicators/dmi.js +12 -12
  577. package/indicators/dmi.js.map +1 -1
  578. package/indicators/dmi.src.js +104 -105
  579. package/indicators/dpo.js +1 -1
  580. package/indicators/dpo.js.map +1 -1
  581. package/indicators/dpo.src.js +20 -9
  582. package/indicators/ichimoku-kinko-hyo.js +1 -1
  583. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  584. package/indicators/ichimoku-kinko-hyo.src.js +35 -16
  585. package/indicators/indicators-all.d.ts +1 -17
  586. package/indicators/indicators-all.js +200 -199
  587. package/indicators/indicators-all.js.map +1 -1
  588. package/indicators/indicators-all.src.d.ts +1 -17
  589. package/indicators/indicators-all.src.js +882 -284
  590. package/indicators/indicators.js +1 -1
  591. package/indicators/indicators.js.map +1 -1
  592. package/indicators/indicators.src.js +12 -2
  593. package/indicators/keltner-channels.d.ts +1 -17
  594. package/indicators/keltner-channels.js +11 -12
  595. package/indicators/keltner-channels.js.map +1 -1
  596. package/indicators/keltner-channels.src.d.ts +1 -17
  597. package/indicators/keltner-channels.src.js +114 -99
  598. package/indicators/klinger.js +14 -14
  599. package/indicators/klinger.js.map +1 -1
  600. package/indicators/klinger.src.js +101 -102
  601. package/indicators/macd.js +10 -9
  602. package/indicators/macd.js.map +1 -1
  603. package/indicators/macd.src.js +46 -25
  604. package/indicators/mfi.js +1 -1
  605. package/indicators/mfi.js.map +1 -1
  606. package/indicators/mfi.src.js +24 -11
  607. package/indicators/momentum.js +1 -1
  608. package/indicators/momentum.js.map +1 -1
  609. package/indicators/momentum.src.js +31 -3
  610. package/indicators/natr.js +1 -1
  611. package/indicators/natr.js.map +1 -1
  612. package/indicators/natr.src.js +17 -3
  613. package/indicators/obv.js +1 -1
  614. package/indicators/obv.js.map +1 -1
  615. package/indicators/obv.src.js +11 -1
  616. package/indicators/pivot-points.js +1 -1
  617. package/indicators/pivot-points.js.map +1 -1
  618. package/indicators/pivot-points.src.js +32 -19
  619. package/indicators/ppo.js +1 -1
  620. package/indicators/ppo.js.map +1 -1
  621. package/indicators/ppo.src.js +15 -5
  622. package/indicators/price-channel.d.ts +1 -17
  623. package/indicators/price-channel.js +11 -11
  624. package/indicators/price-channel.js.map +1 -1
  625. package/indicators/price-channel.src.d.ts +1 -17
  626. package/indicators/price-channel.src.js +102 -107
  627. package/indicators/price-envelopes.js +1 -1
  628. package/indicators/price-envelopes.js.map +1 -1
  629. package/indicators/price-envelopes.src.js +26 -1
  630. package/indicators/psar.js +1 -1
  631. package/indicators/psar.js.map +1 -1
  632. package/indicators/psar.src.js +17 -4
  633. package/indicators/regressions.js +12 -11
  634. package/indicators/regressions.js.map +1 -1
  635. package/indicators/regressions.src.js +50 -15
  636. package/indicators/roc.js +1 -1
  637. package/indicators/roc.js.map +1 -1
  638. package/indicators/roc.src.js +16 -3
  639. package/indicators/rsi.js +1 -1
  640. package/indicators/rsi.js.map +1 -1
  641. package/indicators/rsi.src.js +21 -3
  642. package/indicators/slow-stochastic.js +1 -1
  643. package/indicators/slow-stochastic.js.map +1 -1
  644. package/indicators/slow-stochastic.src.js +26 -1
  645. package/indicators/stochastic.d.ts +1 -17
  646. package/indicators/stochastic.js +12 -12
  647. package/indicators/stochastic.js.map +1 -1
  648. package/indicators/stochastic.src.d.ts +1 -17
  649. package/indicators/stochastic.src.js +104 -99
  650. package/indicators/supertrend.js +7 -7
  651. package/indicators/supertrend.js.map +1 -1
  652. package/indicators/supertrend.src.js +21 -9
  653. package/indicators/tema.js +1 -1
  654. package/indicators/tema.src.js +1 -1
  655. package/indicators/trendline.js +1 -1
  656. package/indicators/trendline.js.map +1 -1
  657. package/indicators/trendline.src.js +15 -5
  658. package/indicators/trix.js +1 -1
  659. package/indicators/trix.js.map +1 -1
  660. package/indicators/trix.src.js +26 -1
  661. package/indicators/volume-by-price.js +17 -17
  662. package/indicators/volume-by-price.js.map +1 -1
  663. package/indicators/volume-by-price.src.js +38 -10
  664. package/indicators/vwap.js +1 -1
  665. package/indicators/vwap.js.map +1 -1
  666. package/indicators/vwap.src.js +12 -2
  667. package/indicators/williams-r.js +1 -1
  668. package/indicators/williams-r.js.map +1 -1
  669. package/indicators/williams-r.src.js +11 -1
  670. package/indicators/wma.js +1 -1
  671. package/indicators/wma.js.map +1 -1
  672. package/indicators/wma.src.js +31 -3
  673. package/indicators/zigzag.js +1 -1
  674. package/indicators/zigzag.js.map +1 -1
  675. package/indicators/zigzag.src.js +12 -2
  676. package/modules/accessibility.js +246 -242
  677. package/modules/accessibility.js.map +1 -1
  678. package/modules/accessibility.src.js +797 -664
  679. package/modules/annotations-advanced.d.ts +1 -1
  680. package/modules/annotations-advanced.js +193 -192
  681. package/modules/annotations-advanced.js.map +1 -1
  682. package/modules/annotations-advanced.src.d.ts +1 -1
  683. package/modules/annotations-advanced.src.js +9229 -8589
  684. package/modules/annotations.d.ts +1 -1
  685. package/modules/annotations.js +128 -126
  686. package/modules/annotations.js.map +1 -1
  687. package/modules/annotations.src.d.ts +1 -1
  688. package/modules/annotations.src.js +6190 -5528
  689. package/modules/arc-diagram.js +7 -7
  690. package/modules/arc-diagram.js.map +1 -1
  691. package/modules/arc-diagram.src.js +10 -2
  692. package/modules/arrow-symbols.js +1 -1
  693. package/modules/arrow-symbols.src.js +1 -1
  694. package/modules/boost-canvas.d.ts +19 -0
  695. package/modules/boost-canvas.js +81 -15
  696. package/modules/boost-canvas.js.map +1 -1
  697. package/modules/boost-canvas.src.d.ts +19 -0
  698. package/modules/boost-canvas.src.js +3342 -52
  699. package/modules/boost.d.ts +8 -26
  700. package/modules/boost.js +88 -80
  701. package/modules/boost.js.map +1 -1
  702. package/modules/boost.src.d.ts +8 -26
  703. package/modules/boost.src.js +2435 -1889
  704. package/modules/broken-axis.js +2 -2
  705. package/modules/broken-axis.js.map +1 -1
  706. package/modules/broken-axis.src.js +2 -2
  707. package/modules/bullet.js +1 -1
  708. package/modules/bullet.js.map +1 -1
  709. package/modules/bullet.src.js +2 -5
  710. package/modules/coloraxis.js +2 -2
  711. package/modules/coloraxis.js.map +1 -1
  712. package/modules/coloraxis.src.js +9 -5
  713. package/modules/current-date-indicator.js +1 -1
  714. package/modules/current-date-indicator.src.js +2 -2
  715. package/modules/cylinder.js +9 -9
  716. package/modules/cylinder.js.map +1 -1
  717. package/modules/cylinder.src.js +2 -2
  718. package/modules/data.d.ts +12 -12
  719. package/modules/data.js +33 -34
  720. package/modules/data.js.map +1 -1
  721. package/modules/data.src.d.ts +12 -12
  722. package/modules/data.src.js +862 -829
  723. package/modules/datagrouping.d.ts +22 -0
  724. package/modules/datagrouping.js +9 -9
  725. package/modules/datagrouping.js.map +1 -1
  726. package/modules/datagrouping.src.d.ts +22 -0
  727. package/modules/datagrouping.src.js +69 -29
  728. package/modules/debugger.js +8 -6
  729. package/modules/debugger.js.map +1 -1
  730. package/modules/debugger.src.js +85 -40
  731. package/modules/dependency-wheel.js +12 -12
  732. package/modules/dependency-wheel.js.map +1 -1
  733. package/modules/dependency-wheel.src.js +41 -14
  734. package/modules/dotplot.js +1 -1
  735. package/modules/dotplot.src.js +1 -1
  736. package/modules/drag-panes.js +1 -1
  737. package/modules/drag-panes.src.js +2 -2
  738. package/modules/draggable-points.js +5 -5
  739. package/modules/draggable-points.js.map +1 -1
  740. package/modules/draggable-points.src.js +5 -4
  741. package/modules/drilldown.d.ts +0 -10
  742. package/modules/drilldown.js +37 -37
  743. package/modules/drilldown.js.map +1 -1
  744. package/modules/drilldown.src.d.ts +0 -10
  745. package/modules/drilldown.src.js +59 -25
  746. package/modules/dumbbell.d.ts +4 -0
  747. package/modules/dumbbell.js +17 -17
  748. package/modules/dumbbell.js.map +1 -1
  749. package/modules/dumbbell.src.d.ts +4 -0
  750. package/modules/dumbbell.src.js +24 -12
  751. package/modules/export-data.js +25 -22
  752. package/modules/export-data.js.map +1 -1
  753. package/modules/export-data.src.js +641 -469
  754. package/modules/exporting.d.ts +8 -8
  755. package/modules/exporting.js +39 -39
  756. package/modules/exporting.js.map +1 -1
  757. package/modules/exporting.src.d.ts +8 -8
  758. package/modules/exporting.src.js +442 -319
  759. package/modules/full-screen.js +8 -8
  760. package/modules/full-screen.js.map +1 -1
  761. package/modules/full-screen.src.js +196 -78
  762. package/modules/funnel.js +1 -1
  763. package/modules/funnel.src.js +3 -3
  764. package/modules/funnel3d.js +2 -2
  765. package/modules/funnel3d.js.map +1 -1
  766. package/modules/funnel3d.src.js +2 -2
  767. package/modules/gantt.js +219 -217
  768. package/modules/gantt.js.map +1 -1
  769. package/modules/gantt.src.js +2420 -2364
  770. package/modules/grid-axis.js +23 -23
  771. package/modules/grid-axis.js.map +1 -1
  772. package/modules/grid-axis.src.js +890 -891
  773. package/modules/heatmap.js +40 -40
  774. package/modules/heatmap.js.map +1 -1
  775. package/modules/heatmap.src.js +137 -108
  776. package/modules/heikinashi.js +1 -1
  777. package/modules/heikinashi.src.js +1 -1
  778. package/modules/histogram-bellcurve.js +1 -1
  779. package/modules/histogram-bellcurve.src.js +1 -1
  780. package/modules/hollowcandlestick.js +1 -1
  781. package/modules/hollowcandlestick.src.js +9 -9
  782. package/modules/item-series.js +1 -1
  783. package/modules/item-series.src.js +1 -1
  784. package/modules/lollipop.js +6 -6
  785. package/modules/lollipop.js.map +1 -1
  786. package/modules/lollipop.src.js +37 -22
  787. package/modules/map.d.ts +3 -3
  788. package/modules/map.js +171 -169
  789. package/modules/map.js.map +1 -1
  790. package/modules/map.src.d.ts +3 -3
  791. package/modules/map.src.js +830 -605
  792. package/modules/marker-clusters.js +1 -1
  793. package/modules/marker-clusters.js.map +1 -1
  794. package/modules/marker-clusters.src.js +4 -6
  795. package/modules/networkgraph.d.ts +1 -17
  796. package/modules/networkgraph.js +55 -50
  797. package/modules/networkgraph.js.map +1 -1
  798. package/modules/networkgraph.src.d.ts +1 -17
  799. package/modules/networkgraph.src.js +2339 -2008
  800. package/modules/no-data-to-display.js +1 -1
  801. package/modules/no-data-to-display.src.js +2 -2
  802. package/modules/offline-exporting.js +3 -3
  803. package/modules/offline-exporting.js.map +1 -1
  804. package/modules/offline-exporting.src.js +5 -5
  805. package/modules/oldie-polyfills.js +1 -1
  806. package/modules/oldie-polyfills.src.js +1 -1
  807. package/modules/oldie.js +2 -2
  808. package/modules/oldie.src.js +3 -3
  809. package/modules/organization.js +15 -15
  810. package/modules/organization.js.map +1 -1
  811. package/modules/organization.src.js +12 -4
  812. package/modules/overlapping-datalabels.js +1 -1
  813. package/modules/overlapping-datalabels.src.js +1 -1
  814. package/modules/parallel-coordinates.js +11 -11
  815. package/modules/parallel-coordinates.js.map +1 -1
  816. package/modules/parallel-coordinates.src.js +14 -9
  817. package/modules/pareto.js +1 -1
  818. package/modules/pareto.src.js +1 -1
  819. package/modules/pathfinder.js +1 -1
  820. package/modules/pathfinder.src.js +1 -1
  821. package/modules/pattern-fill.js +15 -14
  822. package/modules/pattern-fill.js.map +1 -1
  823. package/modules/pattern-fill.src.js +15 -2
  824. package/modules/price-indicator.js +1 -1
  825. package/modules/price-indicator.src.js +1 -1
  826. package/modules/pyramid3d.js +1 -1
  827. package/modules/pyramid3d.src.js +1 -1
  828. package/modules/sankey.d.ts +1 -17
  829. package/modules/sankey.js +32 -32
  830. package/modules/sankey.js.map +1 -1
  831. package/modules/sankey.src.d.ts +1 -17
  832. package/modules/sankey.src.js +102 -57
  833. package/modules/series-label.js +18 -18
  834. package/modules/series-label.js.map +1 -1
  835. package/modules/series-label.src.js +474 -387
  836. package/modules/series-on-point.js +18 -0
  837. package/modules/series-on-point.js.map +1 -0
  838. package/modules/series-on-point.src.js +468 -0
  839. package/modules/solid-gauge.js +4 -4
  840. package/modules/solid-gauge.js.map +1 -1
  841. package/modules/solid-gauge.src.js +6 -6
  842. package/modules/sonification.d.ts +2 -2
  843. package/modules/sonification.js +1 -1
  844. package/modules/sonification.js.map +1 -1
  845. package/modules/sonification.src.d.ts +2 -2
  846. package/modules/sonification.src.js +4 -8
  847. package/modules/static-scale.js +1 -1
  848. package/modules/static-scale.src.js +1 -1
  849. package/modules/stock-tools.d.ts +1 -23
  850. package/modules/stock-tools.js +109 -179
  851. package/modules/stock-tools.js.map +1 -1
  852. package/modules/stock-tools.src.d.ts +1 -23
  853. package/modules/stock-tools.src.js +2652 -6347
  854. package/modules/stock.d.ts +8 -0
  855. package/modules/stock.js +205 -204
  856. package/modules/stock.js.map +1 -1
  857. package/modules/stock.src.d.ts +8 -0
  858. package/modules/stock.src.js +208 -106
  859. package/modules/streamgraph.js +1 -1
  860. package/modules/streamgraph.src.js +1 -1
  861. package/modules/sunburst.js +73 -73
  862. package/modules/sunburst.js.map +1 -1
  863. package/modules/sunburst.src.js +251 -193
  864. package/modules/tilemap.js +1 -1
  865. package/modules/tilemap.src.js +1 -1
  866. package/modules/timeline.js +1 -1
  867. package/modules/timeline.js.map +1 -1
  868. package/modules/timeline.src.js +6 -4
  869. package/modules/treegrid.js +57 -57
  870. package/modules/treegrid.js.map +1 -1
  871. package/modules/treegrid.src.js +1908 -1901
  872. package/modules/treemap.js +54 -53
  873. package/modules/treemap.js.map +1 -1
  874. package/modules/treemap.src.js +217 -183
  875. package/modules/variable-pie.js +1 -1
  876. package/modules/variable-pie.src.js +1 -1
  877. package/modules/variwide.js +1 -1
  878. package/modules/variwide.src.js +1 -1
  879. package/modules/vector.js +2 -2
  880. package/modules/vector.js.map +1 -1
  881. package/modules/vector.src.js +3 -5
  882. package/modules/venn.js +31 -31
  883. package/modules/venn.js.map +1 -1
  884. package/modules/venn.src.js +82 -111
  885. package/modules/windbarb.js +1 -1
  886. package/modules/windbarb.src.js +1 -1
  887. package/modules/wordcloud.js +23 -23
  888. package/modules/wordcloud.js.map +1 -1
  889. package/modules/wordcloud.src.js +84 -113
  890. package/modules/xrange.js +17 -17
  891. package/modules/xrange.js.map +1 -1
  892. package/modules/xrange.src.js +411 -397
  893. package/package.json +1 -1
  894. package/themes/avocado.js +1 -1
  895. package/themes/avocado.src.js +1 -1
  896. package/themes/brand-dark.js +1 -1
  897. package/themes/brand-dark.src.js +1 -1
  898. package/themes/brand-light.js +1 -1
  899. package/themes/brand-light.src.js +1 -1
  900. package/themes/dark-blue.js +1 -1
  901. package/themes/dark-blue.src.js +1 -1
  902. package/themes/dark-green.js +1 -1
  903. package/themes/dark-green.src.js +1 -1
  904. package/themes/dark-unica.js +1 -1
  905. package/themes/dark-unica.src.js +1 -1
  906. package/themes/gray.js +1 -1
  907. package/themes/gray.src.js +1 -1
  908. package/themes/grid-light.js +1 -1
  909. package/themes/grid-light.src.js +1 -1
  910. package/themes/grid.js +1 -1
  911. package/themes/grid.src.js +1 -1
  912. package/themes/high-contrast-dark.js +2 -2
  913. package/themes/high-contrast-dark.src.js +11 -11
  914. package/themes/high-contrast-light.js +2 -2
  915. package/themes/high-contrast-light.src.js +10 -10
  916. package/themes/sand-signika.js +1 -1
  917. package/themes/sand-signika.src.js +1 -1
  918. package/themes/skies.js +1 -1
  919. package/themes/skies.src.js +1 -1
  920. package/themes/sunset.js +1 -1
  921. package/themes/sunset.src.js +1 -1
  922. package/es-modules/Core/Axis/StackingAxis.js +0 -216
  923. package/es-modules/Core/Axis/TreeGridAxis.js +0 -720
  924. package/es-modules/Core/Axis/TreeGridTick.js +0 -317
  925. package/es-modules/Extensions/Annotations/Annotations.js +0 -1449
  926. package/es-modules/Extensions/Annotations/Mixins/MarkerMixin.js +0 -179
  927. package/es-modules/Extensions/Annotations/Popup.js +0 -1123
  928. package/es-modules/Extensions/Boost/BoostAttach.js +0 -150
  929. package/es-modules/Extensions/Boost/BoostInit.js +0 -323
  930. package/es-modules/Extensions/Boost/BoostOptions.js +0 -245
  931. package/es-modules/Extensions/Boost/BoostOverrides.js +0 -386
  932. package/es-modules/Extensions/Boost/BoostUtils.js +0 -255
  933. package/es-modules/Extensions/Boost/WGLVBuffer.js +0 -153
  934. package/es-modules/Extensions/FullScreen.js +0 -240
  935. package/es-modules/Extensions/Polar.js +0 -740
  936. package/es-modules/Extensions/Stacking.js +0 -517
  937. package/es-modules/Series/ColorMapMixin.js +0 -84
  938. package/es-modules/Series/DrawPointComposition.js +0 -114
  939. package/es-modules/Series/Networkgraph/DraggableNodes.js +0 -132
  940. package/es-modules/Series/Networkgraph/Integrations.js +0 -348
  941. package/es-modules/Series/Networkgraph/Networkgraph.js +0 -1178
  942. package/es-modules/Series/XRange/XRangeComposition.js +0 -49
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highmaps JS v10.0.0 (2022-03-07)
2
+ * @license Highmaps JS v10.2.1 (2022-08-29)
3
3
  *
4
4
  * Highmaps as a plugin for Highcharts or Highcharts Stock.
5
5
  *
@@ -638,7 +638,7 @@
638
638
  * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
639
639
  * @product highcharts highstock highmaps
640
640
  */
641
- color: "#999999" /* neutralColor40 */
641
+ color: "#999999" /* Palette.neutralColor40 */
642
642
  },
643
643
  /**
644
644
  * The axis labels show the number for each tick.
@@ -680,7 +680,7 @@
680
680
  * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
681
681
  * @product highcharts highstock highmaps
682
682
  */
683
- minColor: "#e6ebf5" /* highlightColor10 */,
683
+ minColor: "#e6ebf5" /* Palette.highlightColor10 */,
684
684
  /**
685
685
  * The color to represent the maximum of the color axis. Unless
686
686
  * [dataClasses](#colorAxis.dataClasses) or
@@ -699,7 +699,7 @@
699
699
  * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
700
700
  * @product highcharts highstock highmaps
701
701
  */
702
- maxColor: "#003399" /* highlightColor100 */,
702
+ maxColor: "#003399" /* Palette.highlightColor100 */,
703
703
  /**
704
704
  * Color stops for the gradient of a scalar color axis. Use this in
705
705
  * cases where a linear gradient between a `minColor` and `maxColor`
@@ -707,6 +707,10 @@
707
707
  * first item is a float between 0 and 1 assigning the relative
708
708
  * position in the gradient, and the second item is the color.
709
709
  *
710
+ * @sample highcharts/coloraxis/coloraxis-stops/
711
+ * Color axis stops
712
+ * @sample highcharts/coloraxis/color-key-with-stops/
713
+ * Color axis stops with custom colorKey
710
714
  * @sample {highmaps} maps/demo/heatmap/
711
715
  * Heatmap with three color stops
712
716
  *
@@ -1440,7 +1444,7 @@
1440
1444
  setState: noop,
1441
1445
  isDataClass: true,
1442
1446
  setVisible: function () {
1443
- vis = axis.visible = !vis;
1447
+ this.visible = vis = axis.visible = !vis;
1444
1448
  axis.series.forEach(function (series) {
1445
1449
  series.points.forEach(function (point) {
1446
1450
  if (point.dataClass === i) {
@@ -1776,7 +1780,6 @@
1776
1780
  * */
1777
1781
  var doc = H.doc;
1778
1782
  var addEvent = U.addEvent,
1779
- defined = U.defined,
1780
1783
  extend = U.extend,
1781
1784
  isNumber = U.isNumber,
1782
1785
  merge = U.merge,
@@ -1841,9 +1844,6 @@
1841
1844
  chart = this.chart,
1842
1845
  o = chart.options.mapNavigation,
1843
1846
  attr,
1844
- states,
1845
- hoverStates,
1846
- selectStates,
1847
1847
  outerHandler = function (e) {
1848
1848
  this.handler.call(chart,
1849
1849
  e);
@@ -1872,13 +1872,9 @@
1872
1872
  attr = buttonOptions.theme;
1873
1873
  attr.style = merge(buttonOptions.theme.style, buttonOptions.style // #3203
1874
1874
  );
1875
- states = attr.states;
1876
- hoverStates = states && states.hover;
1877
- selectStates = states && states.select;
1878
- delete attr.states;
1879
1875
  }
1880
1876
  var button = chart.renderer
1881
- .button(buttonOptions.text || '', 0, 0, outerHandler, attr, hoverStates, selectStates, void 0, n === 'zoomIn' ? 'topbutton' : 'bottombutton')
1877
+ .button(buttonOptions.text || '', 0, 0, outerHandler, attr, void 0, void 0, void 0, n === 'zoomIn' ? 'topbutton' : 'bottombutton')
1882
1878
  .addClass('highcharts-map-navigation highcharts-' + {
1883
1879
  zoomIn: 'zoom-in',
1884
1880
  zoomOut: 'zoom-out'
@@ -2188,7 +2184,7 @@
2188
2184
  var mapNavigation = this.chart.options.mapNavigation;
2189
2185
  // Pinch status
2190
2186
  if (pick(mapNavigation.enableTouchZoom, mapNavigation.enabled)) {
2191
- this.chart.options.chart.pinchType = 'xy';
2187
+ this.chart.options.chart.zooming.pinchType = 'xy';
2192
2188
  }
2193
2189
  proceed.apply(this, [].slice.call(arguments, 1));
2194
2190
  });
@@ -2204,7 +2200,7 @@
2204
2200
  });
2205
2201
 
2206
2202
  });
2207
- _registerModule(_modules, 'Series/ColorMapMixin.js', [_modules['Core/Globals.js'], _modules['Core/Series/Point.js'], _modules['Core/Utilities.js']], function (H, Point, U) {
2203
+ _registerModule(_modules, 'Series/ColorMapComposition.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {
2208
2204
  /* *
2209
2205
  *
2210
2206
  * (c) 2010-2021 Torstein Honsi
@@ -2214,66 +2210,92 @@
2214
2210
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2215
2211
  *
2216
2212
  * */
2217
- // @todo cleanup & reduction - consider composition
2218
- var noop = H.noop,
2219
- seriesTypes = H.seriesTypes;
2220
- var defined = U.defined,
2221
- addEvent = U.addEvent;
2222
- // Move points to the top of the z-index order when hovered
2223
- addEvent(Point, 'afterSetState', function (e) {
2224
- var point = this;
2225
- if (point.moveToTopOnHover && point.graphic) {
2226
- point.graphic.attr({
2227
- zIndex: e && e.state === 'hover' ? 1 : 0
2228
- });
2229
- }
2230
- });
2231
- /**
2232
- * Mixin for maps and heatmaps
2213
+ var columnProto = SeriesRegistry.seriesTypes.column.prototype;
2214
+ var addEvent = U.addEvent,
2215
+ defined = U.defined;
2216
+ /* *
2233
2217
  *
2234
- * @private
2235
- * @mixin Highcharts.colorMapPointMixin
2236
- */
2237
- var PointMixin = {
2218
+ * Composition
2219
+ *
2220
+ * */
2221
+ var ColorMapComposition;
2222
+ (function (ColorMapComposition) {
2223
+ /* *
2224
+ *
2225
+ * Declarations
2226
+ *
2227
+ * */
2228
+ /* *
2229
+ *
2230
+ * Constants
2231
+ *
2232
+ * */
2233
+ var composedClasses = [];
2234
+ ColorMapComposition.pointMembers = {
2238
2235
  dataLabelOnNull: true,
2239
2236
  moveToTopOnHover: true,
2240
- /* eslint-disable valid-jsdoc */
2241
- /**
2242
- * Color points have a value option that determines whether or not it is
2243
- * a null point
2244
- * @private
2245
- */
2246
- isValid: function () {
2247
- // undefined is allowed
2248
- return (this.value !== null &&
2249
- this.value !== Infinity &&
2250
- this.value !== -Infinity);
2251
- }
2252
- /* eslint-enable valid-jsdoc */
2253
- };
2254
- /**
2255
- * @private
2256
- * @mixin Highcharts.colorMapSeriesMixin
2257
- */
2258
- var SeriesMixin = {
2259
- pointArrayMap: ['value'],
2237
+ isValid: pointIsValid
2238
+ };
2239
+ ColorMapComposition.seriesMembers = {
2240
+ colorKey: 'value',
2260
2241
  axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
2261
- trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
2262
- getSymbol: noop,
2263
2242
  parallelArrays: ['x', 'y', 'value'],
2264
- colorKey: 'value',
2265
- pointAttribs: seriesTypes.column.prototype.pointAttribs,
2266
- /* eslint-disable valid-jsdoc */
2267
- /**
2268
- * Get the color attibutes to apply on the graphic
2269
- * @private
2270
- * @function Highcharts.colorMapSeriesMixin.colorAttribs
2271
- * @param {Highcharts.Point} point
2272
- * @return {Highcharts.SVGAttributes}
2273
- * The SVG attributes
2274
- */
2275
- colorAttribs: function (point) {
2276
- var ret = {};
2243
+ pointArrayMap: ['value'],
2244
+ trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
2245
+ colorAttribs: seriesColorAttribs,
2246
+ pointAttribs: columnProto.pointAttribs
2247
+ };
2248
+ /* *
2249
+ *
2250
+ * Functions
2251
+ *
2252
+ * */
2253
+ /**
2254
+ * @private
2255
+ */
2256
+ function compose(SeriesClass) {
2257
+ var PointClass = SeriesClass.prototype.pointClass;
2258
+ if (composedClasses.indexOf(PointClass) === -1) {
2259
+ composedClasses.push(PointClass);
2260
+ addEvent(PointClass, 'afterSetState', onPointAfterSetState);
2261
+ }
2262
+ return SeriesClass;
2263
+ }
2264
+ ColorMapComposition.compose = compose;
2265
+ /**
2266
+ * Move points to the top of the z-index order when hovered.
2267
+ * @private
2268
+ */
2269
+ function onPointAfterSetState(e) {
2270
+ var point = this;
2271
+ if (point.moveToTopOnHover && point.graphic) {
2272
+ point.graphic.attr({
2273
+ zIndex: e && e.state === 'hover' ? 1 : 0
2274
+ });
2275
+ }
2276
+ }
2277
+ /**
2278
+ * Color points have a value option that determines whether or not it is
2279
+ * a null point
2280
+ * @private
2281
+ */
2282
+ function pointIsValid() {
2283
+ return (this.value !== null &&
2284
+ this.value !== Infinity &&
2285
+ this.value !== -Infinity &&
2286
+ // undefined is allowed, but NaN is not (#17279)
2287
+ (this.value === void 0 || !isNaN(this.value)));
2288
+ }
2289
+ /**
2290
+ * Get the color attibutes to apply on the graphic
2291
+ * @private
2292
+ * @function Highcharts.colorMapSeriesMixin.colorAttribs
2293
+ * @param {Highcharts.Point} point
2294
+ * @return {Highcharts.SVGAttributes}
2295
+ * The SVG attributes
2296
+ */
2297
+ function seriesColorAttribs(point) {
2298
+ var ret = {};
2277
2299
  if (defined(point.color) &&
2278
2300
  (!point.state || point.state === 'normal') // #15746
2279
2301
  ) {
@@ -2281,13 +2303,14 @@
2281
2303
  }
2282
2304
  return ret;
2283
2305
  }
2284
- };
2285
- var ColorMapMixin = {
2286
- PointMixin: PointMixin,
2287
- SeriesMixin: SeriesMixin
2288
- };
2306
+ })(ColorMapComposition || (ColorMapComposition = {}));
2307
+ /* *
2308
+ *
2309
+ * Default Export
2310
+ *
2311
+ * */
2289
2312
 
2290
- return ColorMapMixin;
2313
+ return ColorMapComposition;
2291
2314
  });
2292
2315
  _registerModule(_modules, 'Maps/MapSymbols.js', [_modules['Core/Renderer/SVG/SVGRenderer.js']], function (SVGRenderer) {
2293
2316
  /* *
@@ -2616,7 +2639,7 @@
2616
2639
 
2617
2640
  return MapUtilities;
2618
2641
  });
2619
- _registerModule(_modules, 'Series/Map/MapPoint.js', [_modules['Series/ColorMapMixin.js'], _modules['Maps/MapUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColorMapMixin, MapUtilities, SeriesRegistry, U) {
2642
+ _registerModule(_modules, 'Series/Map/MapPoint.js', [_modules['Series/ColorMapComposition.js'], _modules['Maps/MapUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (ColorMapComposition, MapUtilities, SeriesRegistry, U) {
2620
2643
  /* *
2621
2644
  *
2622
2645
  * (c) 2010-2021 Torstein Honsi
@@ -2747,7 +2770,7 @@
2747
2770
  */
2748
2771
  MapPoint.prototype.onMouseOver = function (e) {
2749
2772
  U.clearTimeout(this.colorInterval);
2750
- if (this.value !== null || this.series.options.nullInteraction) {
2773
+ if (!this.isNull || this.series.options.nullInteraction) {
2751
2774
  _super.prototype.onMouseOver.call(this, e);
2752
2775
  }
2753
2776
  else {
@@ -2777,9 +2800,9 @@
2777
2800
  return MapPoint;
2778
2801
  }(ScatterSeries.prototype.pointClass));
2779
2802
  extend(MapPoint.prototype, {
2780
- dataLabelOnNull: ColorMapMixin.PointMixin.dataLabelOnNull,
2781
- isValid: ColorMapMixin.PointMixin.isValid,
2782
- moveToTopOnHover: ColorMapMixin.PointMixin.moveToTopOnHover
2803
+ dataLabelOnNull: ColorMapComposition.pointMembers.dataLabelOnNull,
2804
+ moveToTopOnHover: ColorMapComposition.pointMembers.moveToTopOnHover,
2805
+ isValid: ColorMapComposition.pointMembers.isValid
2783
2806
  });
2784
2807
  /* *
2785
2808
  *
@@ -2872,8 +2895,10 @@
2872
2895
  * @type {string}
2873
2896
  * @sample maps/mapview/projection-explorer
2874
2897
  * Projection explorer
2875
- * @sample maps/mapview/projection-custom
2898
+ * @sample maps/mapview/projection-custom-proj4js
2876
2899
  * Custom UTM projection definition
2900
+ * @sample maps/mapview/projection-custom-d3geo
2901
+ * Custom Robinson projection definition
2877
2902
  * @sample maps/demo/topojson-projection
2878
2903
  * Orthographic projection
2879
2904
  */
@@ -2962,7 +2987,7 @@
2962
2987
  * Inset border options
2963
2988
  * @type {Highcharts.ColorType}
2964
2989
  */
2965
- borderColor: "#cccccc" /* neutralColor20 */,
2990
+ borderColor: "#cccccc" /* Palette.neutralColor20 */,
2966
2991
  /**
2967
2992
  * The pixel border width of the insets.
2968
2993
  *
@@ -3086,7 +3111,7 @@
3086
3111
 
3087
3112
  return defaultOptions;
3088
3113
  });
3089
- _registerModule(_modules, 'Extensions/GeoJSON.js', [_modules['Core/Chart/Chart.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Maps/MapUtilities.js'], _modules['Core/Utilities.js']], function (Chart, F, H, MU, U) {
3114
+ _registerModule(_modules, 'Extensions/GeoJSON.js', [_modules['Core/Chart/Chart.js'], _modules['Core/FormatUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (Chart, F, H, U) {
3090
3115
  /* *
3091
3116
  *
3092
3117
  * (c) 2010-2021 Torstein Honsi
@@ -3098,7 +3123,6 @@
3098
3123
  * */
3099
3124
  var format = F.format;
3100
3125
  var win = H.win;
3101
- var pointInPolygon = MU.pointInPolygon;
3102
3126
  var error = U.error,
3103
3127
  extend = U.extend,
3104
3128
  merge = U.merge,
@@ -3369,7 +3393,7 @@
3369
3393
  sinAngle = transform.sinAngle ||
3370
3394
  (transform.rotation && Math.sin(transform.rotation)),
3371
3395
  // Note: Inverted sinAngle to reverse rotation direction
3372
- projected = win.proj4(transform.crs, 'WGS84',
3396
+ projected = proj4(transform.crs, 'WGS84',
3373
3397
  transform.rotation ? {
3374
3398
  x: normalized.x * cosAngle + normalized.y * -sinAngle,
3375
3399
  y: normalized.x * sinAngle + normalized.y * cosAngle
@@ -3484,7 +3508,8 @@
3484
3508
  copyrightUrl: topology.copyrightUrl,
3485
3509
  features: features,
3486
3510
  'hc-recommended-mapview': object['hc-recommended-mapview'],
3487
- bbox: topology.bbox
3511
+ bbox: topology.bbox,
3512
+ title: topology.title
3488
3513
  };
3489
3514
  object['hc-decoded-geojson'] = geojson;
3490
3515
  return geojson;
@@ -3997,14 +4022,19 @@
3997
4022
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
3998
4023
  *
3999
4024
  * */
4000
- var __spreadArrays = (this && this.__spreadArrays) || function () {
4001
- for (var s = 0,
4002
- i = 0,
4003
- il = arguments.length; i < il; i++) s += arguments[i].length;
4004
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
4005
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
4006
- r[k] = a[j];
4007
- return r;
4025
+ var __spreadArray = (this && this.__spreadArray) || function (to,
4026
+ from,
4027
+ pack) {
4028
+ if (pack || arguments.length === 2) for (var i = 0,
4029
+ l = from.length,
4030
+ ar; i < l; i++) {
4031
+ if (ar || !(i in from)) {
4032
+ if (!ar) ar = Array.prototype.slice.call(from, 0,
4033
+ i);
4034
+ ar[i] = from[i];
4035
+ }
4036
+ }
4037
+ return to.concat(ar || Array.prototype.slice.call(from));
4008
4038
  };
4009
4039
  var clipLineString = PC.clipLineString,
4010
4040
  clipPolygon = PC.clipPolygon;
@@ -4133,7 +4163,7 @@
4133
4163
  var greatCircle = Projection.greatCircle(poly[i],
4134
4164
  poly[i + 1]);
4135
4165
  if (greatCircle.length) {
4136
- poly.splice.apply(poly, __spreadArrays([i + 1, 0], greatCircle));
4166
+ poly.splice.apply(poly, __spreadArray([i + 1, 0], greatCircle, false));
4137
4167
  }
4138
4168
  }
4139
4169
  }
@@ -4300,13 +4330,14 @@
4300
4330
  var lonMinus = wrapLon(antimeridian -
4301
4331
  intersections[i].direction * floatCorrection);
4302
4332
  var slice = poly.splice.apply(poly,
4303
- __spreadArrays([index,
4333
+ __spreadArray([index,
4304
4334
  intersections[i + 1].i - index],
4305
4335
  Projection.greatCircle([lonPlus,
4306
4336
  intersections[i].lat],
4307
4337
  [lonPlus,
4308
4338
  intersections[i + 1].lat],
4309
- true)));
4339
+ true),
4340
+ false));
4310
4341
  // Add interpolated points close to the cut
4311
4342
  slice.push.apply(slice, Projection.greatCircle([lonMinus, intersections[i + 1].lat], [lonMinus, intersections[i].lat], true));
4312
4343
  polygons.push(slice);
@@ -4339,8 +4370,8 @@
4339
4370
  polarSegment.push([lon, polarLatitude]);
4340
4371
  }
4341
4372
  polarSegment.push.apply(polarSegment, Projection.greatCircle([lon2, polarLatitude], [lon2, polarIntersection.lat], true));
4342
- poly_1.splice.apply(poly_1, __spreadArrays([indexOf,
4343
- 0], polarSegment));
4373
+ poly_1.splice.apply(poly_1, __spreadArray([indexOf,
4374
+ 0], polarSegment, false));
4344
4375
  break;
4345
4376
  }
4346
4377
  }
@@ -4607,14 +4638,19 @@
4607
4638
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
4608
4639
  };
4609
4640
  })();
4610
- var __spreadArrays = (this && this.__spreadArrays) || function () {
4611
- for (var s = 0,
4612
- i = 0,
4613
- il = arguments.length; i < il; i++) s += arguments[i].length;
4614
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
4615
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
4616
- r[k] = a[j];
4617
- return r;
4641
+ var __spreadArray = (this && this.__spreadArray) || function (to,
4642
+ from,
4643
+ pack) {
4644
+ if (pack || arguments.length === 2) for (var i = 0,
4645
+ l = from.length,
4646
+ ar; i < l; i++) {
4647
+ if (ar || !(i in from)) {
4648
+ if (!ar) ar = Array.prototype.slice.call(from, 0,
4649
+ i);
4650
+ ar[i] = from[i];
4651
+ }
4652
+ }
4653
+ return to.concat(ar || Array.prototype.slice.call(from));
4618
4654
  };
4619
4655
  var topo2geo = GeoJSONModule.topo2geo;
4620
4656
  var maps = MapChart.maps;
@@ -4622,7 +4658,6 @@
4622
4658
  pointInPolygon = MU.pointInPolygon;
4623
4659
  var addEvent = U.addEvent,
4624
4660
  clamp = U.clamp,
4625
- defined = U.defined,
4626
4661
  fireEvent = U.fireEvent,
4627
4662
  isArray = U.isArray,
4628
4663
  isNumber = U.isNumber,
@@ -4633,7 +4668,8 @@
4633
4668
  relativeLength = U.relativeLength;
4634
4669
  /**
4635
4670
  * The world size in terms of 10k meters in the Web Mercator projection, to
4636
- * match a 256 square tile to zoom level 0
4671
+ * match a 256 square tile to zoom level 0.
4672
+ * @private
4637
4673
  */
4638
4674
  var worldSize = 400.979322;
4639
4675
  var tileSize = 256;
@@ -4693,9 +4729,10 @@
4693
4729
  var recommendedProjection;
4694
4730
  if (!(this instanceof MapViewInset)) {
4695
4731
  // Handle the global map and series-level mapData
4696
- var geoMaps = __spreadArrays([
4732
+ var geoMaps = __spreadArray([
4697
4733
  chart.options.chart.map
4698
- ], (chart.options.series || []).map(function (s) { return s.mapData; })).map(function (mapData) { return _this.getGeoMap(mapData); });
4734
+ ], (chart.options.series || []).map(function (s) { return s.mapData; }),
4735
+ true).map(function (mapData) { return _this.getGeoMap(mapData); });
4699
4736
  var allGeoBounds_1 = [];
4700
4737
  geoMaps.forEach(function (geoMap) {
4701
4738
  if (geoMap) {
@@ -4779,7 +4816,11 @@
4779
4816
  _this.minZoom === _this.zoom // When resizing the chart
4780
4817
  ) {
4781
4818
  _this.fitToBounds(void 0, void 0, false);
4782
- if (isNumber(_this.userOptions.zoom)) {
4819
+ if (
4820
+ // Set zoom only when initializing the chart
4821
+ // (do not overwrite when zooming in/out, #17082)
4822
+ !_this.chart.hasRendered &&
4823
+ isNumber(_this.userOptions.zoom)) {
4783
4824
  _this.zoom = _this.userOptions.zoom;
4784
4825
  }
4785
4826
  if (_this.userOptions.center) {
@@ -4794,7 +4835,7 @@
4794
4835
  var toObject = function (insets) {
4795
4836
  var ob = {};
4796
4837
  insets.forEach(function (inset, i) {
4797
- ob[inset && inset.id || "i" + i] = inset;
4838
+ ob[inset && inset.id || "i".concat(i)] = inset;
4798
4839
  });
4799
4840
  return ob;
4800
4841
  };
@@ -5097,7 +5138,10 @@
5097
5138
  if (typeof this.options.maxZoom === 'number') {
5098
5139
  zoom = Math.min(zoom, this.options.maxZoom);
5099
5140
  }
5100
- this.zoom = zoom;
5141
+ // Use isNumber to prevent Infinity (#17205)
5142
+ if (isNumber(zoom)) {
5143
+ this.zoom = zoom;
5144
+ }
5101
5145
  }
5102
5146
  var bounds = this.getProjectedBounds();
5103
5147
  if (bounds) {
@@ -5238,7 +5282,7 @@
5238
5282
  }
5239
5283
  if (typeof mouseDownX === 'number' &&
5240
5284
  typeof mouseDownY === 'number') {
5241
- var key = mouseDownX + "," + mouseDownY, _a = e.originalEvent, chartX = _a.chartX, chartY = _a.chartY;
5285
+ var key = "" + mouseDownX + ",".concat(mouseDownY), _a = e.originalEvent, chartX = _a.chartX, chartY = _a.chartY;
5242
5286
  // Reset starting position
5243
5287
  if (key !== mouseDownKey) {
5244
5288
  mouseDownKey = key;
@@ -5537,8 +5581,8 @@
5537
5581
  merge(chart.plotBox, { x: 0,
5538
5582
  y: 0 });
5539
5583
  polygon = polygon.map(function (xy) { return [
5540
- relativeLength(xy[0] + "%", relativeTo_1.width, relativeTo_1.x),
5541
- relativeLength(xy[1] + "%", relativeTo_1.height, relativeTo_1.y)
5584
+ relativeLength("" + xy[0] + "%", relativeTo_1.width, relativeTo_1.x),
5585
+ relativeLength("" + xy[1] + "%", relativeTo_1.height, relativeTo_1.y)
5542
5586
  ]; });
5543
5587
  }
5544
5588
  return {
@@ -5603,8 +5647,8 @@
5603
5647
  var x = point[0],
5604
5648
  y = point[1];
5605
5649
  if (options.units === 'percent') {
5606
- x = chart.plotLeft + relativeLength(x + "%", field_1.width, field_1.x);
5607
- y = chart.plotTop + relativeLength(y + "%", field_1.height, field_1.y);
5650
+ x = chart.plotLeft + relativeLength("" + x + "%", field_1.width, field_1.x);
5651
+ y = chart.plotTop + relativeLength("" + y + "%", field_1.height, field_1.y);
5608
5652
  }
5609
5653
  x = Math.floor(x) + crisp_1;
5610
5654
  y = Math.floor(y) + crisp_1;
@@ -5633,7 +5677,7 @@
5633
5677
 
5634
5678
  return MapView;
5635
5679
  });
5636
- _registerModule(_modules, 'Series/Map/MapSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Series/ColorMapMixin.js'], _modules['Series/CenteredUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Chart/MapChart.js'], _modules['Series/Map/MapPoint.js'], _modules['Maps/MapView.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (A, ColorMapMixin, CU, H, LegendSymbol, MapChart, MapPoint, MapView, Series, SeriesRegistry, SVGRenderer, U) {
5680
+ _registerModule(_modules, 'Series/Map/MapSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Series/ColorMapComposition.js'], _modules['Series/CenteredUtilities.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Chart/MapChart.js'], _modules['Series/Map/MapPoint.js'], _modules['Maps/MapView.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (A, ColorMapComposition, CU, H, LegendSymbol, MapChart, MapPoint, MapView, Series, SeriesRegistry, SVGRenderer, U) {
5637
5681
  /* *
5638
5682
  *
5639
5683
  * (c) 2010-2021 Torstein Honsi
@@ -5846,12 +5890,13 @@
5846
5890
  */
5847
5891
  MapSeries.prototype.drawPoints = function () {
5848
5892
  var _this = this;
5849
- var _a = this,
5893
+ var series = this,
5894
+ _a = this,
5850
5895
  chart = _a.chart,
5851
5896
  group = _a.group,
5852
5897
  _b = _a.transformGroups,
5853
- transformGroups = _b === void 0 ? [] : _b;
5854
- var mapView = chart.mapView,
5898
+ transformGroups = _b === void 0 ? [] : _b,
5899
+ mapView = chart.mapView,
5855
5900
  renderer = chart.renderer;
5856
5901
  if (!mapView) {
5857
5902
  return;
@@ -5891,7 +5936,9 @@
5891
5936
  ColumnSeries.prototype.drawPoints.apply(this);
5892
5937
  // Add class names
5893
5938
  this.points.forEach(function (point) {
5894
- if (point.graphic) {
5939
+ var graphic = point.graphic;
5940
+ if (graphic) {
5941
+ var animate_1 = graphic.animate;
5895
5942
  var className = '';
5896
5943
  if (point.name) {
5897
5944
  className +=
@@ -5904,12 +5951,49 @@
5904
5951
  point.properties['hc-key'].toString().toLowerCase();
5905
5952
  }
5906
5953
  if (className) {
5907
- point.graphic.addClass(className);
5954
+ graphic.addClass(className);
5908
5955
  }
5909
5956
  // In styled mode, apply point colors by CSS
5910
5957
  if (chart.styledMode) {
5911
- point.graphic.css(_this.pointAttribs(point, point.selected && 'select' || void 0));
5958
+ graphic.css(_this.pointAttribs(point, point.selected && 'select' || void 0));
5912
5959
  }
5960
+ graphic.animate = function (params, options, complete) {
5961
+ var switchBack = false;
5962
+ // When strokeWidth is animating
5963
+ if (params['stroke-width']) {
5964
+ var strokeWidth = pick(series.getStrokeWidth(series.options), 1 // Styled mode
5965
+ ),
5966
+ inheritedStrokeWidth = (strokeWidth /
5967
+ (chart.mapView &&
5968
+ chart.mapView.getScale() ||
5969
+ 1));
5970
+ // For animating from inherit,
5971
+ // .attr() reads the property as the starting point
5972
+ if (graphic['stroke-width'] === 'inherit') {
5973
+ graphic['stroke-width'] = inheritedStrokeWidth;
5974
+ }
5975
+ // For animating to inherit
5976
+ if (params['stroke-width'] === 'inherit') {
5977
+ params['stroke-width'] = inheritedStrokeWidth;
5978
+ switchBack = true;
5979
+ }
5980
+ }
5981
+ var ret = animate_1.call(graphic,
5982
+ params,
5983
+ options,
5984
+ switchBack ? function () {
5985
+ // Switch back to "inherit" for zooming
5986
+ // to work with the existing logic + complete
5987
+ graphic.attr({
5988
+ 'stroke-width': 'inherit'
5989
+ });
5990
+ // Proceed
5991
+ if (complete) {
5992
+ complete.apply(this, arguments);
5993
+ }
5994
+ } : complete);
5995
+ return ret;
5996
+ };
5913
5997
  }
5914
5998
  });
5915
5999
  }
@@ -5917,8 +6001,7 @@
5917
6001
  transformGroups.forEach(function (transformGroup, i) {
5918
6002
  var view = i === 0 ? mapView : mapView.insets[i - 1],
5919
6003
  svgTransform = view.getSVGTransform(),
5920
- strokeWidth = pick(_this.options[(_this.pointAttrToOptions &&
5921
- _this.pointAttrToOptions['stroke-width']) || 'borderWidth'], 1 // Styled mode
6004
+ strokeWidth = pick(_this.getStrokeWidth(_this.options), 1 // Styled mode
5922
6005
  );
5923
6006
  /*
5924
6007
  Animate or move to the new zoom level. In order to prevent
@@ -5973,8 +6056,7 @@
5973
6056
  */
5974
6057
  MapSeries.prototype.getProjectedBounds = function () {
5975
6058
  if (!this.bounds && this.chart.mapView) {
5976
- var MAX_VALUE = Number.MAX_VALUE,
5977
- _a = this.chart.mapView,
6059
+ var _a = this.chart.mapView,
5978
6060
  insets_1 = _a.insets,
5979
6061
  projection_1 = _a.projection,
5980
6062
  allBounds_1 = [];
@@ -6030,6 +6112,18 @@
6030
6112
  }
6031
6113
  return this.bounds;
6032
6114
  };
6115
+ /**
6116
+ * Return the stroke-width either from a series options or point options
6117
+ * object. This function is used by both the map series where the
6118
+ * `borderWidth` sets the stroke-width, and the mapline series where the
6119
+ * `lineWidth` sets the stroke-width.
6120
+ * @private
6121
+ */
6122
+ MapSeries.prototype.getStrokeWidth = function (options) {
6123
+ var pointAttrToOptions = this.pointAttrToOptions;
6124
+ return options[pointAttrToOptions &&
6125
+ pointAttrToOptions['stroke-width'] || 'borderWidth'];
6126
+ };
6033
6127
  /**
6034
6128
  * Define hasData function for non-cartesian series. Returns true if the
6035
6129
  * series has points at all.
@@ -6054,15 +6148,25 @@
6054
6148
  point,
6055
6149
  state);
6056
6150
  // Individual stroke width
6057
- var pointStrokeWidth = point.options[(this.pointAttrToOptions &&
6058
- this.pointAttrToOptions['stroke-width']) || 'borderWidth'];
6151
+ var pointStrokeWidth = this.getStrokeWidth(point.options);
6152
+ // Handle state specific border or line width
6153
+ if (state) {
6154
+ var stateOptions = merge(this.options.states[state],
6155
+ point.options.states &&
6156
+ point.options.states[state] ||
6157
+ {});
6158
+ pointStrokeWidth = this.getStrokeWidth(stateOptions);
6159
+ }
6059
6160
  if (pointStrokeWidth && mapView) {
6060
6161
  pointStrokeWidth /= mapView.getScale();
6061
6162
  }
6062
6163
  // In order for dash style to avoid being scaled, set the transformed
6063
6164
  // stroke width on the item
6064
- if (attr.dashstyle && mapView && this.options.borderWidth) {
6065
- pointStrokeWidth = this.options.borderWidth / mapView.getScale();
6165
+ var seriesStrokeWidth = this.getStrokeWidth(this.options);
6166
+ if (attr.dashstyle &&
6167
+ mapView &&
6168
+ isNumber(seriesStrokeWidth)) {
6169
+ pointStrokeWidth = seriesStrokeWidth / mapView.getScale();
6066
6170
  }
6067
6171
  attr['stroke-width'] = pick(pointStrokeWidth,
6068
6172
  // By default set the stroke-width on the group element and let all
@@ -6071,14 +6175,29 @@
6071
6175
  'inherit');
6072
6176
  return attr;
6073
6177
  };
6178
+ /**
6179
+ * @private
6180
+ */
6181
+ MapSeries.prototype.updateData = function () {
6182
+ // #16782
6183
+ if (this.processedData) {
6184
+ return false;
6185
+ }
6186
+ return _super.prototype.updateData.apply(this, arguments);
6187
+ };
6074
6188
  /**
6075
6189
  * Extend setData to call processData and generatePoints immediately.
6076
6190
  * @private
6077
6191
  */
6078
- MapSeries.prototype.setData = function () {
6079
- _super.prototype.setData.apply(this, arguments);
6192
+ MapSeries.prototype.setData = function (data, redraw, animation, updatePoints) {
6193
+ if (redraw === void 0) { redraw = true; }
6194
+ delete this.bounds;
6195
+ _super.prototype.setData.call(this, data, false, void 0, updatePoints);
6080
6196
  this.processData();
6081
6197
  this.generatePoints();
6198
+ if (redraw) {
6199
+ this.chart.redraw(animation);
6200
+ }
6082
6201
  };
6083
6202
  /**
6084
6203
  * Extend processData to join in mapData. If the allAreas option is true,
@@ -6263,7 +6382,17 @@
6263
6382
  this.processData();
6264
6383
  this.generatePoints();
6265
6384
  delete this.bounds;
6266
- this.getProjectedBounds();
6385
+ if (mapView &&
6386
+ !mapView.userOptions.center &&
6387
+ !isNumber(mapView.userOptions.zoom)) {
6388
+ // Not only recalculate bounds but also fit view
6389
+ mapView.fitToBounds(void 0, void 0, false); // #17012
6390
+ }
6391
+ else {
6392
+ // If center and zoom is defined in user options, get bounds but
6393
+ // don't change view
6394
+ this.getProjectedBounds();
6395
+ }
6267
6396
  }
6268
6397
  if (mapView) {
6269
6398
  var mainSvgTransform_1 = mapView.getSVGTransform();
@@ -6302,6 +6431,8 @@
6302
6431
  * @excluding marker, cluster
6303
6432
  * @product highmaps
6304
6433
  * @optionparent plotOptions.map
6434
+ *
6435
+ * @private
6305
6436
  */
6306
6437
  MapSeries.defaultOptions = merge(ScatterSeries.defaultOptions, {
6307
6438
  /**
@@ -6312,6 +6443,8 @@
6312
6443
  * US map with world map backdrop
6313
6444
  *
6314
6445
  * @since 10.0.0
6446
+ *
6447
+ * @private
6315
6448
  */
6316
6449
  affectsMapView: true,
6317
6450
  animation: false,
@@ -6346,7 +6479,7 @@
6346
6479
  *
6347
6480
  * @private
6348
6481
  */
6349
- nullColor: "#f7f7f7" /* neutralColor3 */,
6482
+ nullColor: "#f7f7f7" /* Palette.neutralColor3 */,
6350
6483
  /**
6351
6484
  * Whether to allow pointer interaction like tooltips and mouse events
6352
6485
  * on null points.
@@ -6400,7 +6533,7 @@
6400
6533
  *
6401
6534
  * @private
6402
6535
  */
6403
- borderColor: "#cccccc" /* neutralColor20 */,
6536
+ borderColor: "#cccccc" /* Palette.neutralColor20 */,
6404
6537
  /**
6405
6538
  * The border width of each map area.
6406
6539
  *
@@ -6535,7 +6668,7 @@
6535
6668
  * @product highmaps
6536
6669
  * @apioption plotOptions.series.states.select.color
6537
6670
  */
6538
- color: "#cccccc" /* neutralColor20 */
6671
+ color: "#cccccc" /* Palette.neutralColor20 */
6539
6672
  },
6540
6673
  inactive: {
6541
6674
  opacity: 1
@@ -6546,9 +6679,9 @@
6546
6679
  }(ScatterSeries));
6547
6680
  extend(MapSeries.prototype, {
6548
6681
  type: 'map',
6549
- axisTypes: ColorMapMixin.SeriesMixin.axisTypes,
6550
- colorAttribs: ColorMapMixin.SeriesMixin.colorAttribs,
6551
- colorKey: ColorMapMixin.SeriesMixin.colorKey,
6682
+ axisTypes: ColorMapComposition.seriesMembers.axisTypes,
6683
+ colorAttribs: ColorMapComposition.seriesMembers.colorAttribs,
6684
+ colorKey: ColorMapComposition.seriesMembers.colorKey,
6552
6685
  // When tooltip is not shared, this series (and derivatives) requires
6553
6686
  // direct touch/hover. KD-tree does not apply.
6554
6687
  directTouch: true,
@@ -6561,18 +6694,19 @@
6561
6694
  forceDL: true,
6562
6695
  getCenter: CU.getCenter,
6563
6696
  getExtremesFromAll: true,
6564
- getSymbol: ColorMapMixin.SeriesMixin.getSymbol,
6697
+ getSymbol: noop,
6565
6698
  isCartesian: false,
6566
- parallelArrays: ColorMapMixin.SeriesMixin.parallelArrays,
6567
- pointArrayMap: ColorMapMixin.SeriesMixin.pointArrayMap,
6699
+ parallelArrays: ColorMapComposition.seriesMembers.parallelArrays,
6700
+ pointArrayMap: ColorMapComposition.seriesMembers.pointArrayMap,
6568
6701
  pointClass: MapPoint,
6569
6702
  // X axis and Y axis must have same translation slope
6570
6703
  preserveAspectRatio: true,
6571
6704
  searchPoint: noop,
6572
- trackerGroups: ColorMapMixin.SeriesMixin.trackerGroups,
6705
+ trackerGroups: ColorMapComposition.seriesMembers.trackerGroups,
6573
6706
  // Get axis extremes from paths, not values
6574
6707
  useMapGeometry: true
6575
6708
  });
6709
+ ColorMapComposition.compose(MapSeries);
6576
6710
  SeriesRegistry.registerSeriesType('map', MapSeries);
6577
6711
  /* *
6578
6712
  *
@@ -6704,8 +6838,9 @@
6704
6838
  * The geometry type. Can be one of `LineString`, `Polygon`, `MultiLineString`
6705
6839
  * or `MultiPolygon`.
6706
6840
  *
6841
+ * @declare Highcharts.MapGeometryTypeValue
6707
6842
  * @type {string}
6708
- * @since 9.3.0
6843
+ * @since 9.3.0
6709
6844
  * @product highmaps
6710
6845
  * @validvalue ["LineString", "Polygon", "MultiLineString", "MultiPolygon"]
6711
6846
  * @apioption series.map.data.geometry.type
@@ -6992,6 +7127,21 @@
6992
7127
  * @product highmaps
6993
7128
  * @apioption series.mapline.data
6994
7129
  */
7130
+ /**
7131
+ * Pixel width of the mapline line.
7132
+ *
7133
+ * @type {number}
7134
+ * @since 10.2.0
7135
+ * @product highmaps
7136
+ * @apioption plotOptions.mapline.states.hover.lineWidth
7137
+ */
7138
+ /**
7139
+ *
7140
+ * @type {number}
7141
+ * @product highmaps
7142
+ * @excluding borderWidth
7143
+ * @apioption plotOptions.mapline.states.hover
7144
+ */
6995
7145
  ''; // adds doclets above to transpiled file
6996
7146
 
6997
7147
  return MapLineSeries;
@@ -7023,8 +7173,7 @@
7023
7173
  };
7024
7174
  })();
7025
7175
  var ScatterSeries = SeriesRegistry.seriesTypes.scatter;
7026
- var isNumber = U.isNumber,
7027
- merge = U.merge;
7176
+ var isNumber = U.isNumber;
7028
7177
  /* *
7029
7178
  *
7030
7179
  * Class
@@ -7177,6 +7326,10 @@
7177
7326
  this.processData();
7178
7327
  }
7179
7328
  this.generatePoints();
7329
+ if (this.getProjectedBounds && this.isDirtyData) {
7330
+ delete this.bounds;
7331
+ this.getProjectedBounds(); // Added point needs bounds(#16598)
7332
+ }
7180
7333
  // Create map based translation
7181
7334
  if (mapView) {
7182
7335
  var hasCoordinates_1 = mapView.projection.hasCoordinates;
@@ -7236,7 +7389,7 @@
7236
7389
  overflow: false,
7237
7390
  style: {
7238
7391
  /** @internal */
7239
- color: "#000000" /* neutralColor100 */
7392
+ color: "#000000" /* Palette.neutralColor100 */
7240
7393
  }
7241
7394
  }
7242
7395
  });
@@ -7402,6 +7555,12 @@
7402
7555
  * @product highmaps
7403
7556
  * @apioption series.mappoint.data.y
7404
7557
  */
7558
+ /**
7559
+ * @type {number}
7560
+ * @product highmaps
7561
+ * @excluding borderColor, borderWidth
7562
+ * @apioption plotOptions.mappoint
7563
+ */
7405
7564
  ''; // adds doclets above to transpiled file
7406
7565
 
7407
7566
  return MapPointSeries;
@@ -7579,7 +7738,7 @@
7579
7738
  /** @ignore-option */
7580
7739
  fontSize: '10px',
7581
7740
  /** @ignore-option */
7582
- color: "#000000" /* neutralColor100 */
7741
+ color: "#000000" /* Palette.neutralColor100 */
7583
7742
  },
7584
7743
  /**
7585
7744
  * The x position offset of the label relative to the
@@ -7708,28 +7867,11 @@
7708
7867
  merge = U.merge,
7709
7868
  pick = U.pick,
7710
7869
  stableSort = U.stableSort;
7711
- /**
7712
- * @interface Highcharts.BubbleLegendFormatterContextObject
7713
- */ /**
7714
- * The center y position of the range.
7715
- * @name Highcharts.BubbleLegendFormatterContextObject#center
7716
- * @type {number}
7717
- */ /**
7718
- * The radius of the bubble range.
7719
- * @name Highcharts.BubbleLegendFormatterContextObject#radius
7720
- * @type {number}
7721
- */ /**
7722
- * The bubble value.
7723
- * @name Highcharts.BubbleLegendFormatterContextObject#value
7724
- * @type {number}
7725
- */
7726
- ''; // detach doclets above
7727
7870
  /* *
7728
7871
  *
7729
7872
  * Class
7730
7873
  *
7731
7874
  * */
7732
- /* eslint-disable no-invalid-this, valid-jsdoc */
7733
7875
  /**
7734
7876
  * BubbleLegend class.
7735
7877
  *
@@ -7743,7 +7885,17 @@
7743
7885
  * Legend of item.
7744
7886
  */
7745
7887
  var BubbleLegendItem = /** @class */ (function () {
7888
+ /* *
7889
+ *
7890
+ * Constructor
7891
+ *
7892
+ * */
7746
7893
  function BubbleLegendItem(options, legend) {
7894
+ /* *
7895
+ *
7896
+ * Properties
7897
+ *
7898
+ * */
7747
7899
  this.chart = void 0;
7748
7900
  this.fontMetrics = void 0;
7749
7901
  this.legend = void 0;
@@ -7762,15 +7914,14 @@
7762
7914
  this.setState = noop;
7763
7915
  this.init(options, legend);
7764
7916
  }
7917
+ /* *
7918
+ *
7919
+ * Functions
7920
+ *
7921
+ * */
7765
7922
  /**
7766
7923
  * Create basic bubbleLegend properties similar to item in legend.
7767
- *
7768
7924
  * @private
7769
- * @function Highcharts.BubbleLegend#init
7770
- * @param {Highcharts.LegendBubbleLegendOptions} options
7771
- * Bubble legend options
7772
- * @param {Highcharts.Legend} legend
7773
- * Legend
7774
7925
  */
7775
7926
  BubbleLegendItem.prototype.init = function (options, legend) {
7776
7927
  this.options = options;
@@ -7782,9 +7933,9 @@
7782
7933
  * Depending on the position option, add bubbleLegend to legend items.
7783
7934
  *
7784
7935
  * @private
7785
- * @function Highcharts.BubbleLegend#addToLegend
7936
+ *
7786
7937
  * @param {Array<(Highcharts.Point|Highcharts.Series)>} items
7787
- * All legend items
7938
+ * All legend items
7788
7939
  */
7789
7940
  BubbleLegendItem.prototype.addToLegend = function (items) {
7790
7941
  // Insert bubbleLegend into legend items
@@ -7795,7 +7946,7 @@
7795
7946
  * creation.
7796
7947
  *
7797
7948
  * @private
7798
- * @function Highcharts.BubbleLegend#drawLegendSymbol
7949
+ *
7799
7950
  * @param {Highcharts.Legend} legend
7800
7951
  * Legend instance
7801
7952
  */
@@ -7837,9 +7988,7 @@
7837
7988
  };
7838
7989
  /**
7839
7990
  * Set style options for each bubbleLegend range.
7840
- *
7841
7991
  * @private
7842
- * @function Highcharts.BubbleLegend#setOptions
7843
7992
  */
7844
7993
  BubbleLegendItem.prototype.setOptions = function () {
7845
7994
  var ranges = this.ranges,
@@ -7891,9 +8040,10 @@
7891
8040
  * used code from BubbleSeries.js 'getRadius' method.
7892
8041
  *
7893
8042
  * @private
7894
- * @function Highcharts.BubbleLegend#getRangeRadius
8043
+ *
7895
8044
  * @param {number} value
7896
8045
  * Range value
8046
+ *
7897
8047
  * @return {number|null}
7898
8048
  * Radius for one range
7899
8049
  */
@@ -7909,9 +8059,7 @@
7909
8059
  };
7910
8060
  /**
7911
8061
  * Render the legendSymbol group.
7912
- *
7913
8062
  * @private
7914
- * @function Highcharts.BubbleLegend#render
7915
8063
  */
7916
8064
  BubbleLegendItem.prototype.render = function () {
7917
8065
  var renderer = this.chart.renderer,
@@ -7943,7 +8091,7 @@
7943
8091
  * Render one range, consisting of bubble symbol, connector and label.
7944
8092
  *
7945
8093
  * @private
7946
- * @function Highcharts.BubbleLegend#renderRange
8094
+ *
7947
8095
  * @param {Highcharts.LegendBubbleLegendRangesOptions} range
7948
8096
  * Range options
7949
8097
  */
@@ -8024,9 +8172,7 @@
8024
8172
  };
8025
8173
  /**
8026
8174
  * Get the label which takes up the most space.
8027
- *
8028
8175
  * @private
8029
- * @function Highcharts.BubbleLegend#getMaxLabelSize
8030
8176
  */
8031
8177
  BubbleLegendItem.prototype.getMaxLabelSize = function () {
8032
8178
  var labels = this.symbols.labels;
@@ -8048,9 +8194,10 @@
8048
8194
  * Get formatted label for range.
8049
8195
  *
8050
8196
  * @private
8051
- * @function Highcharts.BubbleLegend#formatLabel
8197
+ *
8052
8198
  * @param {Highcharts.LegendBubbleLegendRangesOptions} range
8053
8199
  * Range options
8200
+ *
8054
8201
  * @return {string}
8055
8202
  * Range label text
8056
8203
  */
@@ -8066,9 +8213,7 @@
8066
8213
  /**
8067
8214
  * By using default chart 'hideOverlappingLabels' method, hide or show
8068
8215
  * labels and connectors.
8069
- *
8070
8216
  * @private
8071
- * @function Highcharts.BubbleLegend#hideOverlappingLabels
8072
8217
  */
8073
8218
  BubbleLegendItem.prototype.hideOverlappingLabels = function () {
8074
8219
  var chart = this.chart,
@@ -8091,7 +8236,7 @@
8091
8236
  * Calculate ranges from created series.
8092
8237
  *
8093
8238
  * @private
8094
- * @function Highcharts.BubbleLegend#getRanges
8239
+ *
8095
8240
  * @return {Array<Highcharts.LegendBubbleLegendRangesOptions>}
8096
8241
  * Array of range objects
8097
8242
  */
@@ -8143,7 +8288,7 @@
8143
8288
  * Calculate bubble legend sizes from rendered series.
8144
8289
  *
8145
8290
  * @private
8146
- * @function Highcharts.BubbleLegend#predictBubbleSizes
8291
+ *
8147
8292
  * @return {Array<number,number>}
8148
8293
  * Calculated min and max bubble sizes
8149
8294
  */
@@ -8184,11 +8329,7 @@
8184
8329
  };
8185
8330
  /**
8186
8331
  * Correct ranges with calculated sizes.
8187
- *
8188
8332
  * @private
8189
- * @function Highcharts.BubbleLegend#updateRanges
8190
- * @param {number} min
8191
- * @param {number} max
8192
8333
  */
8193
8334
  BubbleLegendItem.prototype.updateRanges = function (min, max) {
8194
8335
  var bubbleLegendOptions = this.legend.options.bubbleLegend;
@@ -8200,9 +8341,7 @@
8200
8341
  * Because of the possibility of creating another legend line, predicted
8201
8342
  * bubble legend sizes may differ by a few pixels, so it is necessary to
8202
8343
  * correct them.
8203
- *
8204
8344
  * @private
8205
- * @function Highcharts.BubbleLegend#correctSizes
8206
8345
  */
8207
8346
  BubbleLegendItem.prototype.correctSizes = function () {
8208
8347
  var legend = this.legend,
@@ -8224,6 +8363,27 @@
8224
8363
  * Default Export
8225
8364
  *
8226
8365
  * */
8366
+ /* *
8367
+ *
8368
+ * API Declarations
8369
+ *
8370
+ * */
8371
+ /**
8372
+ * @interface Highcharts.BubbleLegendFormatterContextObject
8373
+ */ /**
8374
+ * The center y position of the range.
8375
+ * @name Highcharts.BubbleLegendFormatterContextObject#center
8376
+ * @type {number}
8377
+ */ /**
8378
+ * The radius of the bubble range.
8379
+ * @name Highcharts.BubbleLegendFormatterContextObject#radius
8380
+ * @type {number}
8381
+ */ /**
8382
+ * The bubble value.
8383
+ * @name Highcharts.BubbleLegendFormatterContextObject#value
8384
+ * @type {number}
8385
+ */
8386
+ ''; // detach doclets above
8227
8387
 
8228
8388
  return BubbleLegendItem;
8229
8389
  });
@@ -8245,282 +8405,274 @@
8245
8405
  wrap = U.wrap;
8246
8406
  /* *
8247
8407
  *
8248
- * Namespace
8408
+ * Constants
8249
8409
  *
8250
8410
  * */
8251
- var BubbleLegendComposition;
8252
- (function (BubbleLegendComposition) {
8253
- /* *
8254
- *
8255
- * Constants
8256
- *
8257
- * */
8258
- var composedClasses = [];
8259
- /* *
8260
- *
8261
- * Functions
8262
- *
8263
- * */
8264
- /* eslint-disable valid-jsdoc */
8265
- /**
8266
- * If ranges are not specified, determine ranges from rendered bubble series
8267
- * and render legend again.
8268
- */
8269
- function chartDrawChartBox(proceed, options, callback) {
8270
- var chart = this,
8271
- legend = chart.legend,
8272
- bubbleSeries = getVisibleBubbleSeriesIndex(chart) >= 0;
8273
- var bubbleLegendOptions,
8274
- bubbleSizes;
8275
- if (legend && legend.options.enabled && legend.bubbleLegend &&
8276
- legend.options.bubbleLegend.autoRanges && bubbleSeries) {
8277
- bubbleLegendOptions = legend.bubbleLegend.options;
8278
- bubbleSizes = legend.bubbleLegend.predictBubbleSizes();
8279
- legend.bubbleLegend.updateRanges(bubbleSizes[0], bubbleSizes[1]);
8280
- // Disable animation on init
8411
+ var composedClasses = [];
8412
+ /* *
8413
+ *
8414
+ * Functions
8415
+ *
8416
+ * */
8417
+ /**
8418
+ * If ranges are not specified, determine ranges from rendered bubble series
8419
+ * and render legend again.
8420
+ */
8421
+ function chartDrawChartBox(proceed, options, callback) {
8422
+ var chart = this,
8423
+ legend = chart.legend,
8424
+ bubbleSeries = getVisibleBubbleSeriesIndex(chart) >= 0;
8425
+ var bubbleLegendOptions,
8426
+ bubbleSizes;
8427
+ if (legend && legend.options.enabled && legend.bubbleLegend &&
8428
+ legend.options.bubbleLegend.autoRanges && bubbleSeries) {
8429
+ bubbleLegendOptions = legend.bubbleLegend.options;
8430
+ bubbleSizes = legend.bubbleLegend.predictBubbleSizes();
8431
+ legend.bubbleLegend.updateRanges(bubbleSizes[0], bubbleSizes[1]);
8432
+ // Disable animation on init
8433
+ if (!bubbleLegendOptions.placed) {
8434
+ legend.group.placed = false;
8435
+ legend.allItems.forEach(function (item) {
8436
+ item.legendGroup.translateY = null;
8437
+ });
8438
+ }
8439
+ // Create legend with bubbleLegend
8440
+ legend.render();
8441
+ chart.getMargins();
8442
+ chart.axes.forEach(function (axis) {
8443
+ if (axis.visible) { // #11448
8444
+ axis.render();
8445
+ }
8281
8446
  if (!bubbleLegendOptions.placed) {
8282
- legend.group.placed = false;
8283
- legend.allItems.forEach(function (item) {
8284
- item.legendGroup.translateY = null;
8447
+ axis.setScale();
8448
+ axis.updateNames();
8449
+ // Disable axis animation on init
8450
+ objectEach(axis.ticks, function (tick) {
8451
+ tick.isNew = true;
8452
+ tick.isNewLabel = true;
8285
8453
  });
8286
8454
  }
8287
- // Create legend with bubbleLegend
8455
+ });
8456
+ bubbleLegendOptions.placed = true;
8457
+ // After recalculate axes, calculate margins again.
8458
+ chart.getMargins();
8459
+ // Call default 'drawChartBox' method.
8460
+ proceed.call(chart, options, callback);
8461
+ // Check bubble legend sizes and correct them if necessary.
8462
+ legend.bubbleLegend.correctSizes();
8463
+ // Correct items positions with different dimensions in legend.
8464
+ retranslateItems(legend, getLinesHeights(legend));
8465
+ }
8466
+ else {
8467
+ proceed.call(chart, options, callback);
8468
+ // Allow color change on static bubble legend after click on legend
8469
+ if (legend && legend.options.enabled && legend.bubbleLegend) {
8288
8470
  legend.render();
8289
- chart.getMargins();
8290
- chart.axes.forEach(function (axis) {
8291
- if (axis.visible) { // #11448
8292
- axis.render();
8293
- }
8294
- if (!bubbleLegendOptions.placed) {
8295
- axis.setScale();
8296
- axis.updateNames();
8297
- // Disable axis animation on init
8298
- objectEach(axis.ticks, function (tick) {
8299
- tick.isNew = true;
8300
- tick.isNewLabel = true;
8301
- });
8302
- }
8303
- });
8304
- bubbleLegendOptions.placed = true;
8305
- // After recalculate axes, calculate margins again.
8306
- chart.getMargins();
8307
- // Call default 'drawChartBox' method.
8308
- proceed.call(chart, options, callback);
8309
- // Check bubble legend sizes and correct them if necessary.
8310
- legend.bubbleLegend.correctSizes();
8311
- // Correct items positions with different dimensions in legend.
8312
8471
  retranslateItems(legend, getLinesHeights(legend));
8313
8472
  }
8314
- else {
8315
- proceed.call(chart, options, callback);
8316
- // Allow color change on static bubble legend after click on legend
8317
- if (legend && legend.options.enabled && legend.bubbleLegend) {
8318
- legend.render();
8319
- retranslateItems(legend, getLinesHeights(legend));
8473
+ }
8474
+ }
8475
+ /**
8476
+ * Compose classes for use with Bubble series.
8477
+ * @private
8478
+ *
8479
+ * @param {Highcharts.Chart} ChartClass
8480
+ * Core chart class to use with Bubble series.
8481
+ *
8482
+ * @param {Highcharts.Legend} LegendClass
8483
+ * Core legend class to use with Bubble series.
8484
+ *
8485
+ * @param {Highcharts.Series} SeriesClass
8486
+ * Core series class to use with Bubble series.
8487
+ */
8488
+ function compose(ChartClass, LegendClass, SeriesClass) {
8489
+ if (composedClasses.indexOf(ChartClass) === -1) {
8490
+ composedClasses.push(ChartClass);
8491
+ setOptions({
8492
+ // Set default bubble legend options
8493
+ legend: {
8494
+ bubbleLegend: BubbleLegendDefaults
8320
8495
  }
8321
- }
8496
+ });
8497
+ wrap(ChartClass.prototype, 'drawChartBox', chartDrawChartBox);
8322
8498
  }
8323
- /**
8324
- * Compose classes for use with Bubble series.
8325
- * @private
8326
- *
8327
- * @param {Highcharts.Chart} ChartClass
8328
- * Core chart class to use with Bubble series.
8329
- *
8330
- * @param {Highcharts.Legend} LegendClass
8331
- * Core legend class to use with Bubble series.
8332
- *
8333
- * @param {Highcharts.Series} SeriesClass
8334
- * Core series class to use with Bubble series.
8335
- */
8336
- function compose(ChartClass, LegendClass, SeriesClass) {
8337
- if (composedClasses.indexOf(ChartClass) === -1) {
8338
- composedClasses.push(ChartClass);
8339
- setOptions({
8340
- // Set default bubble legend options
8341
- legend: {
8342
- bubbleLegend: BubbleLegendDefaults
8343
- }
8344
- });
8345
- wrap(ChartClass.prototype, 'drawChartBox', chartDrawChartBox);
8346
- }
8347
- if (composedClasses.indexOf(LegendClass) === -1) {
8348
- composedClasses.push(LegendClass);
8349
- addEvent(LegendClass, 'afterGetAllItems', onLegendAfterGetAllItems);
8350
- }
8351
- if (composedClasses.indexOf(SeriesClass) === -1) {
8352
- composedClasses.push(SeriesClass);
8353
- addEvent(SeriesClass, 'legendItemClick', onSeriesLegendItemClick);
8354
- }
8499
+ if (composedClasses.indexOf(LegendClass) === -1) {
8500
+ composedClasses.push(LegendClass);
8501
+ addEvent(LegendClass, 'afterGetAllItems', onLegendAfterGetAllItems);
8355
8502
  }
8356
- BubbleLegendComposition.compose = compose;
8357
- /**
8358
- * Check if there is at least one visible bubble series.
8359
- *
8360
- * @private
8361
- * @function getVisibleBubbleSeriesIndex
8362
- * @param {Highcharts.Chart} chart
8363
- * Chart to check.
8364
- * @return {number}
8365
- * First visible bubble series index
8366
- */
8367
- function getVisibleBubbleSeriesIndex(chart) {
8368
- var series = chart.series;
8369
- var i = 0;
8370
- while (i < series.length) {
8371
- if (series[i] &&
8372
- series[i].isBubble &&
8373
- series[i].visible &&
8374
- series[i].zData.length) {
8375
- return i;
8376
- }
8377
- i++;
8378
- }
8379
- return -1;
8503
+ if (composedClasses.indexOf(SeriesClass) === -1) {
8504
+ composedClasses.push(SeriesClass);
8505
+ addEvent(SeriesClass, 'legendItemClick', onSeriesLegendItemClick);
8380
8506
  }
8381
- /**
8382
- * Calculate height for each row in legend.
8383
- *
8384
- * @private
8385
- * @function getLinesHeights
8386
- *
8387
- * @param {Highcharts.Legend} legend
8388
- * Legend to calculate from.
8389
- *
8390
- * @return {Array<Highcharts.Dictionary<number>>}
8391
- * Informations about line height and items amount
8392
- */
8393
- function getLinesHeights(legend) {
8394
- var items = legend.allItems,
8395
- lines = [],
8396
- length = items.length;
8397
- var lastLine,
8398
- i = 0,
8399
- j = 0;
8400
- for (i = 0; i < length; i++) {
8401
- if (items[i].legendItemHeight) {
8402
- // for bubbleLegend
8403
- items[i].itemHeight = items[i].legendItemHeight;
8404
- }
8405
- if ( // Line break
8406
- items[i] === items[length - 1] ||
8407
- items[i + 1] &&
8408
- items[i]._legendItemPos[1] !==
8409
- items[i + 1]._legendItemPos[1]) {
8410
- lines.push({ height: 0 });
8411
- lastLine = lines[lines.length - 1];
8412
- // Find the highest item in line
8413
- for (j; j <= i; j++) {
8414
- if (items[j].itemHeight > lastLine.height) {
8415
- lastLine.height = items[j].itemHeight;
8416
- }
8507
+ }
8508
+ /**
8509
+ * Check if there is at least one visible bubble series.
8510
+ *
8511
+ * @private
8512
+ * @function getVisibleBubbleSeriesIndex
8513
+ * @param {Highcharts.Chart} chart
8514
+ * Chart to check.
8515
+ * @return {number}
8516
+ * First visible bubble series index
8517
+ */
8518
+ function getVisibleBubbleSeriesIndex(chart) {
8519
+ var series = chart.series;
8520
+ var i = 0;
8521
+ while (i < series.length) {
8522
+ if (series[i] &&
8523
+ series[i].isBubble &&
8524
+ series[i].visible &&
8525
+ series[i].zData.length) {
8526
+ return i;
8527
+ }
8528
+ i++;
8529
+ }
8530
+ return -1;
8531
+ }
8532
+ /**
8533
+ * Calculate height for each row in legend.
8534
+ *
8535
+ * @private
8536
+ * @function getLinesHeights
8537
+ *
8538
+ * @param {Highcharts.Legend} legend
8539
+ * Legend to calculate from.
8540
+ *
8541
+ * @return {Array<Highcharts.Dictionary<number>>}
8542
+ * Informations about line height and items amount
8543
+ */
8544
+ function getLinesHeights(legend) {
8545
+ var items = legend.allItems,
8546
+ lines = [],
8547
+ length = items.length;
8548
+ var lastLine,
8549
+ i = 0,
8550
+ j = 0;
8551
+ for (i = 0; i < length; i++) {
8552
+ if (items[i].legendItemHeight) {
8553
+ // for bubbleLegend
8554
+ items[i].itemHeight = items[i].legendItemHeight;
8555
+ }
8556
+ if ( // Line break
8557
+ items[i] === items[length - 1] ||
8558
+ items[i + 1] &&
8559
+ items[i]._legendItemPos[1] !==
8560
+ items[i + 1]._legendItemPos[1]) {
8561
+ lines.push({ height: 0 });
8562
+ lastLine = lines[lines.length - 1];
8563
+ // Find the highest item in line
8564
+ for (j; j <= i; j++) {
8565
+ if (items[j].itemHeight > lastLine.height) {
8566
+ lastLine.height = items[j].itemHeight;
8417
8567
  }
8418
- lastLine.step = i;
8419
8568
  }
8569
+ lastLine.step = i;
8420
8570
  }
8421
- return lines;
8422
8571
  }
8423
- /**
8424
- * Start the bubble legend creation process.
8425
- */
8426
- function onLegendAfterGetAllItems(e) {
8427
- var legend = this,
8428
- bubbleLegend = legend.bubbleLegend,
8429
- legendOptions = legend.options,
8430
- options = legendOptions.bubbleLegend,
8431
- bubbleSeriesIndex = getVisibleBubbleSeriesIndex(legend.chart);
8432
- // Remove unnecessary element
8433
- if (bubbleLegend && bubbleLegend.ranges && bubbleLegend.ranges.length) {
8434
- // Allow change the way of calculating ranges in update
8435
- if (options.ranges.length) {
8436
- options.autoRanges =
8437
- !!options.ranges[0].autoRanges;
8438
- }
8439
- // Update bubbleLegend dimensions in each redraw
8440
- legend.destroyItem(bubbleLegend);
8441
- }
8442
- // Create bubble legend
8443
- if (bubbleSeriesIndex >= 0 &&
8444
- legendOptions.enabled &&
8445
- options.enabled) {
8446
- options.seriesIndex = bubbleSeriesIndex;
8447
- legend.bubbleLegend = new BubbleLegendItem(options, legend);
8448
- legend.bubbleLegend.addToLegend(e.allItems);
8449
- }
8572
+ return lines;
8573
+ }
8574
+ /**
8575
+ * Start the bubble legend creation process.
8576
+ */
8577
+ function onLegendAfterGetAllItems(e) {
8578
+ var legend = this,
8579
+ bubbleLegend = legend.bubbleLegend,
8580
+ legendOptions = legend.options,
8581
+ options = legendOptions.bubbleLegend,
8582
+ bubbleSeriesIndex = getVisibleBubbleSeriesIndex(legend.chart);
8583
+ // Remove unnecessary element
8584
+ if (bubbleLegend && bubbleLegend.ranges && bubbleLegend.ranges.length) {
8585
+ // Allow change the way of calculating ranges in update
8586
+ if (options.ranges.length) {
8587
+ options.autoRanges =
8588
+ !!options.ranges[0].autoRanges;
8589
+ }
8590
+ // Update bubbleLegend dimensions in each redraw
8591
+ legend.destroyItem(bubbleLegend);
8450
8592
  }
8451
- /**
8452
- * Toggle bubble legend depending on the visible status of bubble series.
8453
- */
8454
- function onSeriesLegendItemClick() {
8455
- var series = this,
8456
- chart = series.chart,
8457
- visible = series.visible,
8458
- legend = series.chart.legend;
8459
- var status;
8460
- if (legend && legend.bubbleLegend) {
8461
- // Temporary correct 'visible' property
8462
- series.visible = !visible;
8463
- // Save future status for getRanges method
8464
- series.ignoreSeries = visible;
8465
- // Check if at lest one bubble series is visible
8466
- status = getVisibleBubbleSeriesIndex(chart) >= 0;
8467
- // Hide bubble legend if all bubble series are disabled
8468
- if (legend.bubbleLegend.visible !== status) {
8469
- // Show or hide bubble legend
8470
- legend.update({
8471
- bubbleLegend: { enabled: status }
8472
- });
8473
- legend.bubbleLegend.visible = status; // Restore default status
8474
- }
8475
- series.visible = visible;
8476
- }
8593
+ // Create bubble legend
8594
+ if (bubbleSeriesIndex >= 0 &&
8595
+ legendOptions.enabled &&
8596
+ options.enabled) {
8597
+ options.seriesIndex = bubbleSeriesIndex;
8598
+ legend.bubbleLegend = new BubbleLegendItem(options, legend);
8599
+ legend.bubbleLegend.addToLegend(e.allItems);
8477
8600
  }
8478
- /**
8479
- * Correct legend items translation in case of different elements heights.
8480
- *
8481
- * @private
8482
- * @function Highcharts.Legend#retranslateItems
8483
- *
8484
- * @param {Highcharts.Legend} legend
8485
- * Legend to translate in.
8486
- *
8487
- * @param {Array<Highcharts.Dictionary<number>>} lines
8488
- * Informations about line height and items amount
8489
- */
8490
- function retranslateItems(legend, lines) {
8491
- var items = legend.allItems,
8492
- rtl = legend.options.rtl;
8493
- var orgTranslateX,
8494
- orgTranslateY,
8495
- movementX,
8496
- actualLine = 0;
8497
- items.forEach(function (item, index) {
8498
- orgTranslateX = item.legendGroup.translateX;
8499
- orgTranslateY = item._legendItemPos[1];
8500
- movementX = item.movementX;
8501
- if (movementX || (rtl && item.ranges)) {
8502
- movementX = rtl ?
8503
- orgTranslateX - item.options.maxSize / 2 :
8504
- orgTranslateX + movementX;
8505
- item.legendGroup.attr({ translateX: movementX });
8506
- }
8507
- if (index > lines[actualLine].step) {
8508
- actualLine++;
8509
- }
8510
- item.legendGroup.attr({
8511
- translateY: Math.round(orgTranslateY + lines[actualLine].height / 2)
8601
+ }
8602
+ /**
8603
+ * Toggle bubble legend depending on the visible status of bubble series.
8604
+ */
8605
+ function onSeriesLegendItemClick() {
8606
+ var series = this,
8607
+ chart = series.chart,
8608
+ visible = series.visible,
8609
+ legend = series.chart.legend;
8610
+ var status;
8611
+ if (legend && legend.bubbleLegend) {
8612
+ // Temporary correct 'visible' property
8613
+ series.visible = !visible;
8614
+ // Save future status for getRanges method
8615
+ series.ignoreSeries = visible;
8616
+ // Check if at lest one bubble series is visible
8617
+ status = getVisibleBubbleSeriesIndex(chart) >= 0;
8618
+ // Hide bubble legend if all bubble series are disabled
8619
+ if (legend.bubbleLegend.visible !== status) {
8620
+ // Show or hide bubble legend
8621
+ legend.update({
8622
+ bubbleLegend: { enabled: status }
8512
8623
  });
8513
- item._legendItemPos[1] = orgTranslateY +
8514
- lines[actualLine].height / 2;
8515
- });
8624
+ legend.bubbleLegend.visible = status; // Restore default status
8625
+ }
8626
+ series.visible = visible;
8516
8627
  }
8517
- /* eslint-disable valid-jsdoc */
8518
- })(BubbleLegendComposition || (BubbleLegendComposition = {}));
8628
+ }
8629
+ /**
8630
+ * Correct legend items translation in case of different elements heights.
8631
+ *
8632
+ * @private
8633
+ * @function Highcharts.Legend#retranslateItems
8634
+ *
8635
+ * @param {Highcharts.Legend} legend
8636
+ * Legend to translate in.
8637
+ *
8638
+ * @param {Array<Highcharts.Dictionary<number>>} lines
8639
+ * Informations about line height and items amount
8640
+ */
8641
+ function retranslateItems(legend, lines) {
8642
+ var items = legend.allItems,
8643
+ rtl = legend.options.rtl;
8644
+ var orgTranslateX,
8645
+ orgTranslateY,
8646
+ movementX,
8647
+ actualLine = 0;
8648
+ items.forEach(function (item, index) {
8649
+ orgTranslateX = item.legendGroup.translateX;
8650
+ orgTranslateY = item._legendItemPos[1];
8651
+ movementX = item.movementX;
8652
+ if (movementX || (rtl && item.ranges)) {
8653
+ movementX = rtl ?
8654
+ orgTranslateX - item.options.maxSize / 2 :
8655
+ orgTranslateX + movementX;
8656
+ item.legendGroup.attr({ translateX: movementX });
8657
+ }
8658
+ if (index > lines[actualLine].step) {
8659
+ actualLine++;
8660
+ }
8661
+ item.legendGroup.attr({
8662
+ translateY: Math.round(orgTranslateY + lines[actualLine].height / 2)
8663
+ });
8664
+ item._legendItemPos[1] = orgTranslateY +
8665
+ lines[actualLine].height / 2;
8666
+ });
8667
+ }
8519
8668
  /* *
8520
8669
  *
8521
8670
  * Default Export
8522
8671
  *
8523
8672
  * */
8673
+ var BubbleLegendComposition = {
8674
+ compose: compose
8675
+ };
8524
8676
 
8525
8677
  return BubbleLegendComposition;
8526
8678
  });
@@ -8604,7 +8756,7 @@
8604
8756
 
8605
8757
  return BubblePoint;
8606
8758
  });
8607
- _registerModule(_modules, 'Series/Bubble/BubbleSeries.js', [_modules['Core/Axis/Axis.js'], _modules['Series/Bubble/BubbleLegendComposition.js'], _modules['Series/Bubble/BubblePoint.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Series/Series.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (Axis, BubbleLegendComposition, BubblePoint, Color, H, Series, SeriesRegistry, U) {
8759
+ _registerModule(_modules, 'Series/Bubble/BubbleSeries.js', [_modules['Series/Bubble/BubbleLegendComposition.js'], _modules['Series/Bubble/BubblePoint.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (BubbleLegendComposition, BubblePoint, Color, H, SeriesRegistry, U) {
8608
8760
  /* *
8609
8761
  *
8610
8762
  * (c) 2010-2021 Torstein Honsi
@@ -8632,8 +8784,9 @@
8632
8784
  })();
8633
8785
  var color = Color.parse;
8634
8786
  var noop = H.noop;
8635
- var _a = SeriesRegistry.seriesTypes,
8636
- ColumnSeries = _a.column,
8787
+ var Series = SeriesRegistry.series,
8788
+ _a = SeriesRegistry.seriesTypes,
8789
+ columnProto = _a.column.prototype,
8637
8790
  ScatterSeries = _a.scatter;
8638
8791
  var addEvent = U.addEvent,
8639
8792
  arrayMax = U.arrayMax,
@@ -8643,6 +8796,77 @@
8643
8796
  isNumber = U.isNumber,
8644
8797
  merge = U.merge,
8645
8798
  pick = U.pick;
8799
+ /* *
8800
+ *
8801
+ * Constants
8802
+ *
8803
+ * */
8804
+ var composedClasses = [];
8805
+ /* *
8806
+ *
8807
+ * Functions
8808
+ *
8809
+ * */
8810
+ /**
8811
+ * Add logic to pad each axis with the amount of pixels necessary to avoid the
8812
+ * bubbles to overflow.
8813
+ */
8814
+ function axisBeforePadding() {
8815
+ var _this = this;
8816
+ var axisLength = this.len,
8817
+ chart = this.chart,
8818
+ isXAxis = this.isXAxis,
8819
+ dataKey = isXAxis ? 'xData' : 'yData',
8820
+ min = this.min,
8821
+ range = this.max - min;
8822
+ var pxMin = 0,
8823
+ pxMax = axisLength,
8824
+ transA = axisLength / range,
8825
+ hasActiveSeries;
8826
+ // Handle padding on the second pass, or on redraw
8827
+ this.series.forEach(function (series) {
8828
+ if (series.bubblePadding &&
8829
+ (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
8830
+ // Correction for #1673
8831
+ _this.allowZoomOutside = true;
8832
+ hasActiveSeries = true;
8833
+ var data = series[dataKey];
8834
+ if (isXAxis) {
8835
+ (series.onPoint || series).getRadii(0, 0, series);
8836
+ if (series.onPoint) {
8837
+ series.radii = series.onPoint.radii;
8838
+ }
8839
+ }
8840
+ if (range > 0) {
8841
+ var i = data.length;
8842
+ while (i--) {
8843
+ if (isNumber(data[i]) &&
8844
+ _this.dataMin <= data[i] &&
8845
+ data[i] <= _this.max) {
8846
+ var radius = series.radii && series.radii[i] || 0;
8847
+ pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
8848
+ pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
8849
+ }
8850
+ }
8851
+ }
8852
+ }
8853
+ });
8854
+ // Apply the padding to the min and max properties
8855
+ if (hasActiveSeries && range > 0 && !this.logarithmic) {
8856
+ pxMax -= axisLength;
8857
+ transA *= (axisLength +
8858
+ Math.max(0, pxMin) - // #8901
8859
+ Math.min(pxMax, axisLength)) / axisLength;
8860
+ [
8861
+ ['min', 'userMin', pxMin],
8862
+ ['max', 'userMax', pxMax]
8863
+ ].forEach(function (keys) {
8864
+ if (typeof pick(_this.options[keys[0]], _this[keys[1]]) === 'undefined') {
8865
+ _this[keys[0]] += keys[2] / transA;
8866
+ }
8867
+ });
8868
+ }
8869
+ }
8646
8870
  /* *
8647
8871
  *
8648
8872
  * Class
@@ -8672,14 +8896,24 @@
8672
8896
  _this.yData = void 0;
8673
8897
  _this.zData = void 0;
8674
8898
  return _this;
8675
- /* eslint-enable valid-jsdoc */
8676
8899
  }
8900
+ /* *
8901
+ *
8902
+ * Static Functions
8903
+ *
8904
+ * */
8905
+ BubbleSeries.compose = function (AxisClass, ChartClass, LegendClass, SeriesClass) {
8906
+ BubbleLegendComposition.compose(ChartClass, LegendClass, SeriesClass);
8907
+ if (composedClasses.indexOf(AxisClass) === -1) {
8908
+ composedClasses.push(AxisClass);
8909
+ AxisClass.prototype.beforePadding = axisBeforePadding;
8910
+ }
8911
+ };
8677
8912
  /* *
8678
8913
  *
8679
8914
  * Functions
8680
8915
  *
8681
8916
  * */
8682
- /* eslint-disable valid-jsdoc */
8683
8917
  /**
8684
8918
  * Perform animation on the bubbles
8685
8919
  * @private
@@ -8714,11 +8948,11 @@
8714
8948
  */
8715
8949
  BubbleSeries.prototype.getRadii = function () {
8716
8950
  var _this = this;
8951
+ var zData = this.zData,
8952
+ yData = this.yData,
8953
+ radii = [];
8717
8954
  var len,
8718
8955
  i,
8719
- zData = this.zData,
8720
- yData = this.yData,
8721
- radii = [],
8722
8956
  value,
8723
8957
  zExtremes = this.chart.bubbleZExtremes;
8724
8958
  var _a = this.getPxExtremes(),
@@ -8734,7 +8968,7 @@
8734
8968
  this.chart.series.forEach(function (otherSeries) {
8735
8969
  if (otherSeries.bubblePadding && (otherSeries.visible ||
8736
8970
  !_this.chart.options.chart.ignoreHiddenSeries)) {
8737
- var zExtremes_1 = otherSeries.getZExtremes();
8971
+ var zExtremes_1 = (otherSeries.onPoint || otherSeries).getZExtremes();
8738
8972
  if (zExtremes_1) {
8739
8973
  zMin_1 = Math.min(zMin_1 || zExtremes_1.zMin, zExtremes_1.zMin);
8740
8974
  zMax_1 = Math.max(zMax_1 || zExtremes_1.zMax, zExtremes_1.zMax);
@@ -8754,7 +8988,7 @@
8754
8988
  for (i = 0, len = zData.length; i < len; i++) {
8755
8989
  value = zData[i];
8756
8990
  // Separate method to get individual radius for bubbleLegend
8757
- radii.push(this.getRadius(zExtremes.zMin, zExtremes.zMax, minPxSize, maxPxSize, value, yData[i]));
8991
+ radii.push(this.getRadius(zExtremes.zMin, zExtremes.zMax, minPxSize, maxPxSize, value, yData && yData[i]));
8758
8992
  }
8759
8993
  this.radii = radii;
8760
8994
  };
@@ -8765,8 +8999,8 @@
8765
8999
  BubbleSeries.prototype.getRadius = function (zMin, zMax, minSize, maxSize, value, yValue) {
8766
9000
  var options = this.options,
8767
9001
  sizeByArea = options.sizeBy !== 'width',
8768
- zThreshold = options.zThreshold,
8769
- zRange = zMax - zMin,
9002
+ zThreshold = options.zThreshold;
9003
+ var zRange = zMax - zMin,
8770
9004
  pos = 0.5;
8771
9005
  // #8608 - bubble should be visible when z is undefined
8772
9006
  if (yValue === null || value === null) {
@@ -8855,8 +9089,12 @@
8855
9089
  };
8856
9090
  }
8857
9091
  else { // below zThreshold
8858
- // #1691
8859
- point.shapeArgs = point.plotY = point.dlBox = void 0;
9092
+ point.shapeArgs = point.dlBox = void 0; // #1691
9093
+ point.plotY = 0; // #17281
9094
+ point.marker = {
9095
+ width: 0,
9096
+ height: 0
9097
+ };
8860
9098
  }
8861
9099
  }
8862
9100
  };
@@ -8895,7 +9133,6 @@
8895
9133
  }
8896
9134
  }
8897
9135
  };
8898
- BubbleSeries.compose = BubbleLegendComposition.compose;
8899
9136
  /**
8900
9137
  * A bubble series is a three dimensional series type where each point
8901
9138
  * renders an X, Y and Z value. Each points is drawn as a bubble where the
@@ -9134,7 +9371,7 @@
9134
9371
  return BubbleSeries;
9135
9372
  }(ScatterSeries));
9136
9373
  extend(BubbleSeries.prototype, {
9137
- alignDataLabel: ColumnSeries.prototype.alignDataLabel,
9374
+ alignDataLabel: columnProto.alignDataLabel,
9138
9375
  applyZones: noop,
9139
9376
  bubblePadding: true,
9140
9377
  buildKDTree: noop,
@@ -9151,67 +9388,10 @@
9151
9388
  addEvent(BubbleSeries, 'updatedData', function (e) {
9152
9389
  delete e.target.chart.bubbleZExtremes;
9153
9390
  });
9154
- /* *
9155
- *
9156
- * Axis ?
9157
- *
9158
- * */
9159
- // Add logic to pad each axis with the amount of pixels necessary to avoid the
9160
- // bubbles to overflow.
9161
- Axis.prototype.beforePadding = function () {
9162
- var axis = this,
9163
- axisLength = this.len,
9164
- chart = this.chart,
9165
- pxMin = 0,
9166
- pxMax = axisLength,
9167
- isXAxis = this.isXAxis,
9168
- dataKey = isXAxis ? 'xData' : 'yData',
9169
- min = this.min,
9170
- range = this.max - min,
9171
- transA = axisLength / range,
9172
- hasActiveSeries;
9173
- // Handle padding on the second pass, or on redraw
9174
- this.series.forEach(function (series) {
9175
- if (series.bubblePadding &&
9176
- (series.visible || !chart.options.chart.ignoreHiddenSeries)) {
9177
- // Correction for #1673
9178
- axis.allowZoomOutside = true;
9179
- hasActiveSeries = true;
9180
- var data = series[dataKey];
9181
- if (isXAxis) {
9182
- series.getRadii(0, 0, series);
9183
- }
9184
- if (range > 0) {
9185
- var i = data.length;
9186
- while (i--) {
9187
- if (isNumber(data[i]) &&
9188
- axis.dataMin <= data[i] &&
9189
- data[i] <= axis.max) {
9190
- var radius = series.radii && series.radii[i] || 0;
9191
- pxMin = Math.min(((data[i] - min) * transA) - radius, pxMin);
9192
- pxMax = Math.max(((data[i] - min) * transA) + radius, pxMax);
9193
- }
9194
- }
9195
- }
9196
- }
9197
- });
9198
- // Apply the padding to the min and max properties
9199
- if (hasActiveSeries && range > 0 && !this.logarithmic) {
9200
- pxMax -= axisLength;
9201
- transA *= (axisLength +
9202
- Math.max(0, pxMin) - // #8901
9203
- Math.min(pxMax, axisLength)) / axisLength;
9204
- [
9205
- ['min', 'userMin', pxMin],
9206
- ['max', 'userMax', pxMax]
9207
- ].forEach(function (keys) {
9208
- if (typeof pick(axis.options[keys[0]], axis[keys[1]]) === 'undefined') {
9209
- axis[keys[0]] += keys[2] / transA;
9210
- }
9211
- });
9212
- }
9213
- /* eslint-enable valid-jsdoc */
9214
- };
9391
+ // After removing series, delete the chart-level Z extremes cache, #17502.
9392
+ addEvent(BubbleSeries, 'remove', function (e) {
9393
+ delete e.target.chart.bubbleZExtremes;
9394
+ });
9215
9395
  SeriesRegistry.registerSeriesType('bubble', BubbleSeries);
9216
9396
  /* *
9217
9397
  *
@@ -9319,7 +9499,7 @@
9319
9499
 
9320
9500
  return BubbleSeries;
9321
9501
  });
9322
- _registerModule(_modules, 'Series/MapBubble/MapBubblePoint.js', [_modules['Series/Map/MapPoint.js'], _modules['Core/Series/SeriesRegistry.js']], function (MapPoint, SeriesRegistry) {
9502
+ _registerModule(_modules, 'Series/MapBubble/MapBubblePoint.js', [_modules['Series/Bubble/BubblePoint.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (BubblePoint, SeriesRegistry, U) {
9323
9503
  /* *
9324
9504
  *
9325
9505
  * (c) 2010-2021 Torstein Honsi
@@ -9350,9 +9530,8 @@
9350
9530
  * Imports
9351
9531
  *
9352
9532
  * */
9353
- var _a = SeriesRegistry.seriesTypes,
9354
- BubbleSeries = _a.bubble,
9355
- MapSeries = _a.map;
9533
+ var mapPointProto = SeriesRegistry.seriesTypes.map.prototype.pointClass.prototype;
9534
+ var extend = U.extend;
9356
9535
  /* *
9357
9536
  *
9358
9537
  * Class
@@ -9361,27 +9540,22 @@
9361
9540
  var MapBubblePoint = /** @class */ (function (_super) {
9362
9541
  __extends(MapBubblePoint, _super);
9363
9542
  function MapBubblePoint() {
9364
- /* *
9365
- *
9366
- * Functions
9367
- *
9368
- * */
9369
- var _this = _super !== null && _super.apply(this,
9370
- arguments) || this;
9371
- _this.applyOptions = MapSeries.prototype.pointClass.prototype.applyOptions;
9372
- _this.getProjectedBounds = MapPoint.prototype.getProjectedBounds;
9373
- return _this;
9374
- /* eslint-enable valid-jsdoc */
9543
+ return _super !== null && _super.apply(this, arguments) || this;
9375
9544
  }
9376
- /* eslint-disable valid-jsdoc */
9377
- /**
9378
- * @private
9379
- */
9545
+ /* *
9546
+ *
9547
+ * Functions
9548
+ *
9549
+ * */
9380
9550
  MapBubblePoint.prototype.isValid = function () {
9381
9551
  return typeof this.z === 'number';
9382
9552
  };
9383
9553
  return MapBubblePoint;
9384
- }(BubbleSeries.prototype.pointClass));
9554
+ }(BubblePoint));
9555
+ extend(MapBubblePoint.prototype, {
9556
+ applyOptions: mapPointProto.applyOptions,
9557
+ getProjectedBounds: mapPointProto.getProjectedBounds
9558
+ });
9385
9559
  /* *
9386
9560
  *
9387
9561
  * Default Export
@@ -9390,7 +9564,7 @@
9390
9564
 
9391
9565
  return MapBubblePoint;
9392
9566
  });
9393
- _registerModule(_modules, 'Series/MapBubble/MapBubbleSeries.js', [_modules['Series/Bubble/BubbleSeries.js'], _modules['Series/MapBubble/MapBubblePoint.js'], _modules['Series/Map/MapSeries.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (BubbleSeries, MapBubblePoint, MapSeries, SeriesRegistry, H, U) {
9567
+ _registerModule(_modules, 'Series/MapBubble/MapBubbleSeries.js', [_modules['Series/Bubble/BubbleSeries.js'], _modules['Series/MapBubble/MapBubblePoint.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (BubbleSeries, MapBubblePoint, SeriesRegistry, U) {
9394
9568
  /* *
9395
9569
  *
9396
9570
  * (c) 2010-2021 Torstein Honsi
@@ -9416,8 +9590,9 @@
9416
9590
  d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
9417
9591
  };
9418
9592
  })();
9419
- var noop = H.noop;
9420
- var MapPointSeries = SeriesRegistry.seriesTypes.mappoint;
9593
+ var _a = SeriesRegistry.seriesTypes,
9594
+ mapProto = _a.map.prototype,
9595
+ mapPointProto = _a.mappoint.prototype;
9421
9596
  var extend = U.extend,
9422
9597
  merge = U.merge;
9423
9598
  /* *
@@ -9431,10 +9606,18 @@
9431
9606
  * @name Highcharts.seriesTypes.mapbubble
9432
9607
  *
9433
9608
  * @augments Highcharts.Series
9609
+ *
9610
+ * @requires BubbleSeries
9611
+ * @requires MapPointSeries
9434
9612
  */
9435
9613
  var MapBubbleSeries = /** @class */ (function (_super) {
9436
9614
  __extends(MapBubbleSeries, _super);
9437
9615
  function MapBubbleSeries() {
9616
+ /* *
9617
+ *
9618
+ * Static Properties
9619
+ *
9620
+ * */
9438
9621
  var _this = _super !== null && _super.apply(this,
9439
9622
  arguments) || this;
9440
9623
  /* *
@@ -9454,16 +9637,10 @@
9454
9637
  }, compareX, e);
9455
9638
  };
9456
9639
  MapBubbleSeries.prototype.translate = function () {
9457
- MapPointSeries.prototype.translate.call(this);
9640
+ mapPointProto.translate.call(this);
9458
9641
  this.getRadii();
9459
9642
  this.translateBubble();
9460
9643
  };
9461
- /* *
9462
- *
9463
- * Static Properties
9464
- *
9465
- * */
9466
- MapBubbleSeries.compose = BubbleSeries.compose;
9467
9644
  /**
9468
9645
  * A map bubble series is a bubble series laid out on top of a map
9469
9646
  * series, where each bubble is tied to a specific map area.
@@ -9498,15 +9675,61 @@
9498
9675
  * @apioption plotOptions.mapbubble.displayNegative
9499
9676
  */
9500
9677
  /**
9501
- * @sample {highmaps} maps/demo/map-bubble/
9678
+ * Color of the line connecting bubbles. The default value is the same
9679
+ * as series' color.
9680
+ *
9681
+ * In styled mode, the color can be defined by the
9682
+ * [colorIndex](#plotOptions.series.colorIndex) option. Also, the series
9683
+ * color can be set with the `.highcharts-series`,
9684
+ * `.highcharts-color-{n}`, `.highcharts-{type}-series` or
9685
+ * `.highcharts-series-{n}` class, or individual classes given by the
9686
+ * `className` option.
9687
+ *
9688
+ *
9689
+ * @sample {highmaps} maps/demo/spider-map/
9690
+ * Spider map
9691
+ * @sample {highmaps} maps/plotoptions/spider-map-line-color/
9692
+ * Different line color
9693
+ *
9694
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
9695
+ * @apioption plotOptions.mapbubble.lineColor
9696
+ */
9697
+ /**
9698
+ * Pixel width of the line connecting bubbles.
9699
+ *
9700
+ * @sample {highmaps} maps/demo/spider-map/
9701
+ * Spider map
9702
+ *
9703
+ * @product highmaps
9704
+ * @apioption plotOptions.mapbubble.lineWidth
9705
+ */
9706
+ lineWidth: 0,
9707
+ /**
9708
+ * Maximum bubble size. Bubbles will automatically size between the
9709
+ * `minSize` and `maxSize` to reflect the `z` value of each bubble.
9710
+ * Can be either pixels (when no unit is given), or a percentage of
9711
+ * the smallest one of the plot width and height.
9712
+ *
9713
+ * @sample {highmaps} highcharts/plotoptions/bubble-size/
9502
9714
  * Bubble size
9715
+ * @sample {highmaps} maps/demo/spider-map/
9716
+ * Spider map
9503
9717
  *
9718
+ * @product highmaps
9504
9719
  * @apioption plotOptions.mapbubble.maxSize
9505
9720
  */
9506
9721
  /**
9722
+ * Minimum bubble size. Bubbles will automatically size between the
9723
+ * `minSize` and `maxSize` to reflect the `z` value of each bubble.
9724
+ * Can be either pixels (when no unit is given), or a percentage of
9725
+ * the smallest one of the plot width and height.
9726
+ *
9507
9727
  * @sample {highmaps} maps/demo/map-bubble/
9508
9728
  * Bubble size
9729
+ * @sample {highmaps} maps/demo/spider-map/
9730
+ * Spider map
9509
9731
  *
9732
+ * @product highmaps
9510
9733
  * @apioption plotOptions.mapbubble.minSize
9511
9734
  */
9512
9735
  /**
@@ -9584,6 +9807,9 @@
9584
9807
  * @default 0
9585
9808
  * @apioption plotOptions.mapbubble.zThreshold
9586
9809
  */
9810
+ /**
9811
+ * @default 500
9812
+ */
9587
9813
  animationLimit: 500,
9588
9814
  joinBy: 'hc-key',
9589
9815
  tooltip: {
@@ -9595,15 +9821,16 @@
9595
9821
  extend(MapBubbleSeries.prototype, {
9596
9822
  type: 'mapbubble',
9597
9823
  axisTypes: ['colorAxis'],
9598
- getProjectedBounds: MapSeries.prototype.getProjectedBounds,
9824
+ getProjectedBounds: mapProto.getProjectedBounds,
9599
9825
  isCartesian: false,
9600
9826
  // If one single value is passed, it is interpreted as z
9601
9827
  pointArrayMap: ['z'],
9602
9828
  pointClass: MapBubblePoint,
9603
- processData: MapSeries.prototype.processData,
9604
- projectPoint: MapPointSeries.prototype.projectPoint,
9605
- setData: MapSeries.prototype.setData,
9606
- setOptions: MapSeries.prototype.setOptions,
9829
+ processData: mapProto.processData,
9830
+ projectPoint: mapPointProto.projectPoint,
9831
+ setData: mapProto.setData,
9832
+ setOptions: mapProto.setOptions,
9833
+ updateData: mapProto.updateData,
9607
9834
  useMapGeometry: true,
9608
9835
  xyFromShape: true
9609
9836
  });
@@ -9767,27 +9994,27 @@
9767
9994
  seriesOptions.pointPadding, 0),
9768
9995
  cellAttr = {
9769
9996
  x1: clamp(Math.round(xAxis.len -
9770
- (xAxis.translate(point.x - xPad,
9997
+ xAxis.translate(point.x - xPad,
9771
9998
  false,
9772
9999
  true,
9773
10000
  false,
9774
- true, -pointPlacement) || 0)), -xAxis.len, 2 * xAxis.len),
10001
+ true, -pointPlacement)), -xAxis.len, 2 * xAxis.len),
9775
10002
  x2: clamp(Math.round(xAxis.len -
9776
- (xAxis.translate(point.x + xPad,
10003
+ xAxis.translate(point.x + xPad,
9777
10004
  false,
9778
10005
  true,
9779
10006
  false,
9780
- true, -pointPlacement) || 0)), -xAxis.len, 2 * xAxis.len),
9781
- y1: clamp(Math.round((yAxis.translate(point.y - yPad,
10007
+ true, -pointPlacement)), -xAxis.len, 2 * xAxis.len),
10008
+ y1: clamp(Math.round(yAxis.translate(point.y - yPad,
9782
10009
  false,
9783
10010
  true,
9784
10011
  false,
9785
- true) || 0)), -yAxis.len, 2 * yAxis.len),
9786
- y2: clamp(Math.round((yAxis.translate(point.y + yPad,
10012
+ true)), -yAxis.len, 2 * yAxis.len),
10013
+ y2: clamp(Math.round(yAxis.translate(point.y + yPad,
9787
10014
  false,
9788
10015
  true,
9789
10016
  false,
9790
- true) || 0)), -yAxis.len, 2 * yAxis.len)
10017
+ true)), -yAxis.len, 2 * yAxis.len)
9791
10018
  };
9792
10019
  var dimensions = [['width', 'x'], ['height', 'y']];
9793
10020
  // Handle marker's fixed width, and height values including border
@@ -9865,7 +10092,7 @@
9865
10092
 
9866
10093
  return HeatmapPoint;
9867
10094
  });
9868
- _registerModule(_modules, 'Series/Heatmap/HeatmapSeries.js', [_modules['Core/Color/Color.js'], _modules['Series/ColorMapMixin.js'], _modules['Series/Heatmap/HeatmapPoint.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (Color, ColorMapMixin, HeatmapPoint, LegendSymbol, SeriesRegistry, SVGRenderer, U) {
10095
+ _registerModule(_modules, 'Series/Heatmap/HeatmapSeries.js', [_modules['Core/Color/Color.js'], _modules['Series/ColorMapComposition.js'], _modules['Series/Heatmap/HeatmapPoint.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (Color, ColorMapComposition, HeatmapPoint, LegendSymbol, SeriesRegistry, SVGRenderer, U) {
9869
10096
  /* *
9870
10097
  *
9871
10098
  * (c) 2010-2021 Torstein Honsi
@@ -9956,25 +10183,6 @@
9956
10183
  this.points.forEach(function (point) {
9957
10184
  if (point.graphic) {
9958
10185
  point.graphic[_this.chart.styledMode ? 'css' : 'animate'](_this.colorAttribs(point));
9959
- // @todo
9960
- // Applying the border radius here is not optimal. It should
9961
- // be set in the shapeArgs or returned from `markerAttribs`.
9962
- // However, Series.drawPoints does not pick up markerAttribs
9963
- // to be passed over to `renderer.symbol`. Also, image
9964
- // symbols are not positioned by their top left corner like
9965
- // other symbols are. This should be refactored, then we
9966
- // could save ourselves some tests for .hasImage etc. And
9967
- // the evaluation of borderRadius would be moved to
9968
- // `markerAttribs`.
9969
- if (_this.options.borderRadius) {
9970
- point.graphic.attr({
9971
- r: _this.options.borderRadius
9972
- });
9973
- }
9974
- // Saving option for reapplying later
9975
- // when changing point's states (#16165)
9976
- (point.shapeArgs || {}).r = _this.options.borderRadius;
9977
- (point.shapeArgs || {}).d = point.graphic.pathArray;
9978
10186
  if (point.value === null) { // #15708
9979
10187
  point.graphic.addClass('highcharts-null-point');
9980
10188
  }
@@ -10031,6 +10239,18 @@
10031
10239
  this.yAxis.axisPointRange = options.rowsize || 1;
10032
10240
  // Bind new symbol names
10033
10241
  symbols.ellipse = symbols.circle;
10242
+ // @todo
10243
+ //
10244
+ // Setting the border radius here is a workaround. It should be set in
10245
+ // the shapeArgs or returned from `markerAttribs`. However,
10246
+ // Series.drawPoints does not pick up markerAttribs to be passed over to
10247
+ // `renderer.symbol`. Also, image symbols are not positioned by their
10248
+ // top left corner like other symbols are. This should be refactored,
10249
+ // then we could save ourselves some tests for .hasImage etc. And the
10250
+ // evaluation of borderRadius would be moved to `markerAttribs`.
10251
+ if (options.marker) {
10252
+ options.marker.r = options.borderRadius;
10253
+ }
10034
10254
  };
10035
10255
  /**
10036
10256
  * @private
@@ -10165,7 +10385,7 @@
10165
10385
  clientX: (cellAttr.x1 + cellAttr.x2) / 2,
10166
10386
  shapeType: 'path',
10167
10387
  shapeArgs: merge(true, shapeArgs, {
10168
- d: symbols[shape](shapeArgs.x, shapeArgs.y, shapeArgs.width, shapeArgs.height)
10388
+ d: symbols[shape](shapeArgs.x, shapeArgs.y, shapeArgs.width, shapeArgs.height, { r: options.borderRadius })
10169
10389
  })
10170
10390
  };
10171
10391
  if (hasImage) {
@@ -10205,7 +10425,11 @@
10205
10425
  */
10206
10426
  animation: false,
10207
10427
  /**
10208
- * The border radius for each heatmap item.
10428
+ * The border radius for each heatmap item. The border's color and
10429
+ * width can be set in marker options.
10430
+ *
10431
+ * @see [lineColor](#plotOptions.heatmap.marker.lineColor)
10432
+ * @see [lineWidth](#plotOptions.heatmap.marker.lineWidth)
10209
10433
  */
10210
10434
  borderRadius: 0,
10211
10435
  /**
@@ -10270,7 +10494,7 @@
10270
10494
  *
10271
10495
  * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
10272
10496
  */
10273
- nullColor: "#f7f7f7" /* neutralColor3 */,
10497
+ nullColor: "#f7f7f7" /* Palette.neutralColor3 */,
10274
10498
  dataLabels: {
10275
10499
  formatter: function () {
10276
10500
  var numberFormatter = this.series.chart.numberFormatter;
@@ -10451,25 +10675,26 @@
10451
10675
  return HeatmapSeries;
10452
10676
  }(ScatterSeries));
10453
10677
  extend(HeatmapSeries.prototype, {
10678
+ axisTypes: ColorMapComposition.seriesMembers.axisTypes,
10679
+ colorKey: ColorMapComposition.seriesMembers.colorKey,
10680
+ directTouch: true,
10681
+ getExtremesFromAll: true,
10682
+ parallelArrays: ColorMapComposition.seriesMembers.parallelArrays,
10683
+ pointArrayMap: ['y', 'value'],
10684
+ pointClass: HeatmapPoint,
10685
+ trackerGroups: ColorMapComposition.seriesMembers.trackerGroups,
10454
10686
  /**
10455
10687
  * @private
10456
10688
  */
10457
10689
  alignDataLabel: ColumnSeries.prototype.alignDataLabel,
10458
- axisTypes: ColorMapMixin.SeriesMixin.axisTypes,
10459
- colorAttribs: ColorMapMixin.SeriesMixin.colorAttribs,
10460
- colorKey: ColorMapMixin.SeriesMixin.colorKey,
10461
- directTouch: true,
10690
+ colorAttribs: ColorMapComposition.seriesMembers.colorAttribs,
10462
10691
  /**
10463
10692
  * @private
10464
10693
  */
10465
10694
  drawLegendSymbol: LegendSymbol.drawRectangle,
10466
- getExtremesFromAll: true,
10467
- getSymbol: Series.prototype.getSymbol,
10468
- parallelArrays: ColorMapMixin.SeriesMixin.parallelArrays,
10469
- pointArrayMap: ['y', 'value'],
10470
- pointClass: HeatmapPoint,
10471
- trackerGroups: ColorMapMixin.SeriesMixin.trackerGroups
10695
+ getSymbol: Series.prototype.getSymbol
10472
10696
  });
10697
+ ColorMapComposition.compose(HeatmapSeries);
10473
10698
  SeriesRegistry.registerSeriesType('heatmap', HeatmapSeries);
10474
10699
  /* *
10475
10700
  *
@@ -10851,7 +11076,7 @@
10851
11076
  G.maps = MapChart.maps;
10852
11077
  G.Projection = Projection;
10853
11078
  ColorAxis.compose(G.Chart, G.Fx, G.Legend, G.Series);
10854
- MapBubbleSeries.compose(G.Chart, G.Legend, G.Series);
11079
+ MapBubbleSeries.compose(G.Axis, G.Chart, G.Legend, G.Series);
10855
11080
 
10856
11081
  });
10857
11082
  }));