highcharts 9.1.1 → 9.2.2

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 (718) hide show
  1. package/bower.json +1 -1
  2. package/css/annotations/popup.css +29 -28
  3. package/css/annotations/popup.scss +29 -27
  4. package/css/highcharts.css +15 -0
  5. package/css/highcharts.scss +12 -0
  6. package/css/stocktools/gui.css +1 -0
  7. package/css/stocktools/gui.scss +1 -0
  8. package/css/themes/dark-unica.css +15 -0
  9. package/css/themes/grid-light.css +15 -0
  10. package/css/themes/sand-signika.css +15 -0
  11. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +8 -2
  12. package/es-modules/Accessibility/Components/LegendComponent.js +19 -8
  13. package/es-modules/Accessibility/Components/MenuComponent.js +19 -13
  14. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +4 -8
  15. package/es-modules/Accessibility/FocusBorder.js +1 -3
  16. package/es-modules/Accessibility/Options/LangOptions.js +3 -3
  17. package/es-modules/Accessibility/Utils/Announcer.js +22 -5
  18. package/es-modules/Accessibility/Utils/ChartUtilities.js +6 -1
  19. package/es-modules/Core/Animation/AnimationUtilities.js +12 -4
  20. package/es-modules/Core/Animation/Fx.js +15 -12
  21. package/es-modules/Core/Axis/Axis.js +25 -13
  22. package/es-modules/Core/Axis/AxisDefaults.js +0 -1
  23. package/es-modules/Core/Axis/BrokenAxis.js +32 -15
  24. package/es-modules/Core/Axis/Color/ColorAxis.js +665 -0
  25. package/es-modules/Core/Axis/Color/ColorAxisComposition.js +237 -0
  26. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +434 -0
  27. package/es-modules/Core/Axis/DateTimeAxis.js +163 -133
  28. package/es-modules/Core/Axis/GridAxis.js +8 -3
  29. package/es-modules/Core/Axis/LogarithmicAxis.js +159 -117
  30. package/es-modules/Core/Axis/OrdinalAxis.js +666 -460
  31. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +874 -0
  32. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +292 -0
  33. package/es-modules/Core/Axis/RadialAxis.js +858 -745
  34. package/es-modules/Core/Axis/ScrollbarAxis.js +7 -0
  35. package/es-modules/Core/Axis/StackingAxis.js +159 -140
  36. package/es-modules/Core/Axis/Tick.js +17 -27
  37. package/es-modules/Core/Chart/Chart.js +24 -38
  38. package/es-modules/Core/Chart/ChartDefaults.js +1 -1
  39. package/es-modules/Core/Chart/StockChart.js +12 -0
  40. package/es-modules/Core/Color/Color.js +96 -104
  41. package/es-modules/Core/DefaultOptions.js +269 -248
  42. package/es-modules/Core/Foundation.js +9 -8
  43. package/es-modules/Core/Geometry/CircleUtilities.js +385 -0
  44. package/es-modules/Core/Geometry/GeometryUtilities.js +83 -0
  45. package/es-modules/Core/Globals.js +23 -1
  46. package/es-modules/{Extensions/Ajax.js → Core/HttpUtilities.js} +86 -42
  47. package/es-modules/Core/{Legend.js → Legend/Legend.js} +142 -116
  48. package/es-modules/{Mixins → Core/Legend}/LegendSymbol.js +54 -38
  49. package/es-modules/Core/Navigator.js +3 -0
  50. package/es-modules/Core/Pointer.js +9 -0
  51. package/es-modules/Core/Renderer/HTML/AST.js +100 -82
  52. package/es-modules/Core/Renderer/HTML/HTMLElement.js +17 -7
  53. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +26 -9
  54. package/es-modules/Core/Renderer/RendererRegistry.js +9 -4
  55. package/es-modules/Core/Renderer/RendererUtilities.js +159 -0
  56. package/es-modules/Core/Renderer/SVG/SVGElement.js +13 -7
  57. package/es-modules/Core/Renderer/SVG/SVGLabel.js +9 -29
  58. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +2 -2
  59. package/es-modules/Core/Renderer/SVG/TextBuilder.js +18 -16
  60. package/es-modules/Core/Responsive.js +166 -148
  61. package/es-modules/Core/Series/DataLabel.js +564 -0
  62. package/es-modules/Core/Series/Point.js +233 -209
  63. package/es-modules/Core/Series/Series.js +174 -2339
  64. package/es-modules/Core/Series/SeriesDefaults.js +2293 -0
  65. package/es-modules/Core/Series/SeriesRegistry.js +3 -9
  66. package/es-modules/Core/Time.js +78 -2
  67. package/es-modules/Core/Tooltip.js +178 -236
  68. package/es-modules/Core/Utilities.js +409 -394
  69. package/es-modules/Extensions/Annotations/Annotations.js +102 -49
  70. package/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +9 -1
  71. package/es-modules/Extensions/Annotations/NavigationBindings.js +30 -25
  72. package/es-modules/Extensions/Annotations/Popup.js +16 -7
  73. package/es-modules/Extensions/Boost/BoostOverrides.js +5 -1
  74. package/es-modules/Extensions/Boost/WGLRenderer.js +5 -4
  75. package/es-modules/Extensions/Boost/WGLVBuffer.js +3 -0
  76. package/es-modules/Extensions/BoostCanvas.js +1 -1
  77. package/es-modules/Extensions/CurrentDateIndication.js +1 -1
  78. package/es-modules/Extensions/Data.js +82 -76
  79. package/es-modules/Extensions/DataGrouping.js +225 -184
  80. package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
  81. package/es-modules/Extensions/DraggablePoints.js +13 -5
  82. package/es-modules/Extensions/Drilldown.js +41 -14
  83. package/es-modules/Extensions/ExportData.js +7 -4
  84. package/es-modules/Extensions/Exporting/Exporting.js +1273 -0
  85. package/es-modules/Extensions/Exporting/ExportingDefaults.js +803 -0
  86. package/es-modules/Extensions/Exporting/ExportingSymbols.js +73 -0
  87. package/es-modules/Extensions/FullScreen.js +7 -5
  88. package/es-modules/Extensions/NoDataToDisplay.js +1 -1
  89. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +617 -0
  90. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +58 -0
  91. package/es-modules/Extensions/Oldie/Oldie.js +1 -1
  92. package/es-modules/Extensions/Pane.js +0 -1
  93. package/es-modules/Extensions/PatternFill.js +23 -10
  94. package/es-modules/Extensions/Polar.js +2 -1
  95. package/es-modules/Extensions/RangeSelector.js +1 -1
  96. package/es-modules/Extensions/Themes/Avocado.js +49 -20
  97. package/es-modules/Extensions/Themes/DarkBlue.js +226 -203
  98. package/es-modules/Extensions/Themes/DarkGreen.js +231 -203
  99. package/es-modules/Extensions/Themes/DarkUnica.js +201 -172
  100. package/es-modules/Extensions/Themes/Gray.js +228 -205
  101. package/es-modules/Extensions/Themes/Grid.js +109 -81
  102. package/es-modules/Extensions/Themes/GridLight.js +83 -55
  103. package/es-modules/Extensions/Themes/HighContrastDark.js +192 -164
  104. package/es-modules/Extensions/Themes/HighContrastLight.js +49 -21
  105. package/es-modules/Extensions/Themes/SandSignika.js +115 -86
  106. package/es-modules/Extensions/Themes/Skies.js +102 -74
  107. package/es-modules/Extensions/Themes/Sunset.js +47 -19
  108. package/es-modules/Mixins/ColorSeries.js +0 -1
  109. package/es-modules/Mixins/MultipleLines.js +6 -0
  110. package/es-modules/Mixins/TreeSeries.js +1 -1
  111. package/es-modules/Series/Area/AreaSeries.js +2 -2
  112. package/es-modules/Series/AreaSpline/AreaSplineSeries.js +2 -2
  113. package/es-modules/Series/Bubble/BubbleLegendComposition.js +279 -0
  114. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +267 -0
  115. package/es-modules/Series/Bubble/BubbleLegendItem.js +472 -0
  116. package/es-modules/Series/Bubble/BubbleSeries.js +6 -2
  117. package/es-modules/Series/Column/ColumnDataLabel.js +109 -0
  118. package/es-modules/Series/Column/ColumnSeries.js +39 -26
  119. package/es-modules/Series/Column3D/Column3DComposition.js +5 -2
  120. package/es-modules/Series/Flags/FlagsSeries.js +8 -1
  121. package/es-modules/Series/Gantt/GanttSeries.js +3 -3
  122. package/es-modules/Series/Heatmap/HeatmapSeries.js +9 -5
  123. package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +60 -0
  124. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +277 -0
  125. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +83 -0
  126. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +370 -0
  127. package/es-modules/Series/Line/LineSeries.js +12 -8
  128. package/es-modules/Series/Map/MapSeries.js +5 -3
  129. package/es-modules/Series/MapBubble/MapBubbleSeries.js +6 -5
  130. package/es-modules/Series/OHLC/OHLCPoint.js +11 -0
  131. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
  132. package/es-modules/Series/Pie/PieDataLabel.js +448 -0
  133. package/es-modules/Series/Pie/PiePoint.js +35 -34
  134. package/es-modules/Series/Pie/PieSeries.js +19 -16
  135. package/es-modules/Series/Polygon/PolygonSeries.js +3 -3
  136. package/es-modules/Series/Sankey/SankeySeries.js +9 -7
  137. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
  138. package/es-modules/Series/Sunburst/SunburstSeries.js +1 -14
  139. package/es-modules/Series/Timeline/TimelinePoint.js +6 -0
  140. package/es-modules/Series/Timeline/TimelineSeries.js +14 -17
  141. package/es-modules/Series/Treemap/TreemapSeries.js +3 -3
  142. package/es-modules/Series/Venn/VennSeries.js +4 -4
  143. package/es-modules/Series/Venn/VennUtils.js +10 -16
  144. package/es-modules/Series/Waterfall/WaterfallSeries.js +40 -35
  145. package/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -0
  146. package/es-modules/Series/XRange/XRangeSeries.js +4 -2
  147. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +92 -75
  148. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +20 -8
  149. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +17 -4
  150. package/es-modules/Stock/StockToolsBindings.js +77 -38
  151. package/es-modules/Stock/StockToolsGui.js +28 -3
  152. package/es-modules/masters/highcharts-3d.src.js +1 -1
  153. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  154. package/es-modules/masters/highcharts-more.src.js +11 -7
  155. package/es-modules/masters/highcharts.src.js +25 -9
  156. package/es-modules/masters/highmaps.src.js +1 -1
  157. package/es-modules/masters/highstock.src.js +1 -1
  158. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  159. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  160. package/es-modules/masters/indicators/ao.src.js +1 -1
  161. package/es-modules/masters/indicators/apo.src.js +1 -1
  162. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  163. package/es-modules/masters/indicators/aroon.src.js +1 -1
  164. package/es-modules/masters/indicators/atr.src.js +1 -1
  165. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  166. package/es-modules/masters/indicators/cci.src.js +1 -1
  167. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  168. package/es-modules/masters/indicators/cmf.src.js +1 -1
  169. package/es-modules/masters/indicators/cmo.src.js +1 -1
  170. package/es-modules/masters/indicators/dema.src.js +1 -1
  171. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  172. package/es-modules/masters/indicators/dmi.src.js +1 -1
  173. package/es-modules/masters/indicators/dpo.src.js +1 -1
  174. package/es-modules/masters/indicators/ema.src.js +1 -1
  175. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  176. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  177. package/es-modules/masters/indicators/indicators.src.js +1 -1
  178. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  179. package/es-modules/masters/indicators/klinger.src.js +1 -1
  180. package/es-modules/masters/indicators/macd.src.js +1 -1
  181. package/es-modules/masters/indicators/mfi.src.js +1 -1
  182. package/es-modules/masters/indicators/momentum.src.js +1 -1
  183. package/es-modules/masters/indicators/natr.src.js +1 -1
  184. package/es-modules/masters/indicators/obv.src.js +1 -1
  185. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  186. package/es-modules/masters/indicators/ppo.src.js +1 -1
  187. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  188. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  189. package/es-modules/masters/indicators/psar.src.js +1 -1
  190. package/es-modules/masters/indicators/regressions.src.js +1 -1
  191. package/es-modules/masters/indicators/roc.src.js +1 -1
  192. package/es-modules/masters/indicators/rsi.src.js +1 -1
  193. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  194. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  195. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  196. package/es-modules/masters/indicators/tema.src.js +1 -1
  197. package/es-modules/masters/indicators/trendline.src.js +1 -1
  198. package/es-modules/masters/indicators/trix.src.js +1 -1
  199. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  200. package/es-modules/masters/indicators/vwap.src.js +1 -1
  201. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  202. package/es-modules/masters/indicators/wma.src.js +1 -1
  203. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  204. package/es-modules/masters/modules/accessibility.src.js +1 -1
  205. package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
  206. package/es-modules/masters/modules/annotations.src.js +1 -1
  207. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  208. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  209. package/es-modules/masters/modules/boost.src.js +1 -1
  210. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  211. package/es-modules/masters/modules/bullet.src.js +1 -1
  212. package/es-modules/masters/modules/coloraxis.src.js +6 -2
  213. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  214. package/es-modules/masters/modules/cylinder.src.js +1 -1
  215. package/es-modules/masters/modules/data.src.js +8 -1
  216. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  217. package/es-modules/masters/modules/debugger.src.js +1 -1
  218. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  219. package/es-modules/masters/modules/dotplot.src.js +1 -1
  220. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  221. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  222. package/es-modules/masters/modules/drilldown.src.js +1 -1
  223. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  224. package/es-modules/masters/modules/export-data.src.js +1 -1
  225. package/es-modules/masters/modules/exporting.src.js +10 -2
  226. package/es-modules/masters/modules/full-screen.src.js +1 -1
  227. package/es-modules/masters/modules/funnel.src.js +1 -1
  228. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  229. package/es-modules/masters/modules/gantt.src.js +9 -4
  230. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  231. package/es-modules/masters/modules/heatmap.src.js +6 -2
  232. package/es-modules/masters/modules/heikinashi.src.js +14 -0
  233. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  234. package/es-modules/masters/modules/hollowcandlestick.src.js +14 -0
  235. package/es-modules/masters/modules/item-series.src.js +1 -1
  236. package/es-modules/masters/modules/lollipop.src.js +1 -1
  237. package/es-modules/masters/modules/map.src.js +10 -6
  238. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  239. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  240. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  241. package/es-modules/masters/modules/offline-exporting.src.js +8 -2
  242. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  243. package/es-modules/masters/modules/oldie.src.js +1 -1
  244. package/es-modules/masters/modules/organization.src.js +1 -1
  245. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  246. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  247. package/es-modules/masters/modules/pareto.src.js +1 -1
  248. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  249. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  250. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  251. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  252. package/es-modules/masters/modules/sankey.src.js +1 -1
  253. package/es-modules/masters/modules/series-label.src.js +1 -1
  254. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  255. package/es-modules/masters/modules/sonification.src.js +1 -1
  256. package/es-modules/masters/modules/static-scale.src.js +1 -1
  257. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  258. package/es-modules/masters/modules/stock.src.js +3 -2
  259. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  260. package/es-modules/masters/modules/sunburst.src.js +1 -1
  261. package/es-modules/masters/modules/tilemap.src.js +1 -1
  262. package/es-modules/masters/modules/timeline.src.js +1 -1
  263. package/es-modules/masters/modules/treegrid.src.js +1 -1
  264. package/es-modules/masters/modules/treemap.src.js +1 -1
  265. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  266. package/es-modules/masters/modules/variwide.src.js +1 -1
  267. package/es-modules/masters/modules/vector.src.js +1 -1
  268. package/es-modules/masters/modules/venn.src.js +1 -1
  269. package/es-modules/masters/modules/windbarb.src.js +1 -1
  270. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  271. package/es-modules/masters/modules/xrange.src.js +1 -1
  272. package/es-modules/masters/themes/avocado.src.js +5 -2
  273. package/es-modules/masters/themes/dark-blue.src.js +5 -2
  274. package/es-modules/masters/themes/dark-green.src.js +5 -2
  275. package/es-modules/masters/themes/dark-unica.src.js +5 -2
  276. package/es-modules/masters/themes/gray.src.js +5 -2
  277. package/es-modules/masters/themes/grid-light.src.js +5 -2
  278. package/es-modules/masters/themes/grid.src.js +5 -2
  279. package/es-modules/masters/themes/high-contrast-dark.src.js +5 -2
  280. package/es-modules/masters/themes/high-contrast-light.src.js +5 -2
  281. package/es-modules/masters/themes/sand-signika.src.js +5 -2
  282. package/es-modules/masters/themes/skies.src.js +5 -2
  283. package/es-modules/masters/themes/sunset.src.js +5 -2
  284. package/gfx/stock-icons/annotations-hidden.svg +1 -1
  285. package/gfx/stock-icons/annotations-visible.svg +2 -2
  286. package/gfx/stock-icons/arrow-bottom.svg +1 -1
  287. package/gfx/stock-icons/arrow-left.svg +1 -1
  288. package/gfx/stock-icons/arrow-line.svg +1 -1
  289. package/gfx/stock-icons/arrow-ray.svg +1 -1
  290. package/gfx/stock-icons/arrow-right.svg +1 -1
  291. package/gfx/stock-icons/arrow-segment.svg +1 -2
  292. package/gfx/stock-icons/circle.svg +1 -1
  293. package/gfx/stock-icons/close.svg +2 -2
  294. package/gfx/stock-icons/crooked-3.svg +1 -1
  295. package/gfx/stock-icons/crooked-5.svg +1 -1
  296. package/gfx/stock-icons/current-price-hide.svg +3 -3
  297. package/gfx/stock-icons/current-price-show.svg +2 -2
  298. package/gfx/stock-icons/destroy.svg +1 -1
  299. package/gfx/stock-icons/drawing.svg +18 -0
  300. package/gfx/stock-icons/edit.svg +1 -1
  301. package/gfx/stock-icons/elliott-3.svg +1 -1
  302. package/gfx/stock-icons/elliott-5.svg +1 -1
  303. package/gfx/stock-icons/ellipse.svg +11 -0
  304. package/gfx/stock-icons/fibonacci-timezone.svg +16 -0
  305. package/gfx/stock-icons/fibonacci.svg +1 -1
  306. package/gfx/stock-icons/flag-basic.svg +1 -1
  307. package/gfx/stock-icons/flag-diamond.svg +2 -2
  308. package/gfx/stock-icons/flag-elipse.svg +1 -1
  309. package/gfx/stock-icons/flag-trapeze.svg +2 -2
  310. package/gfx/stock-icons/fullscreen.svg +4 -4
  311. package/gfx/stock-icons/horizontal-line.svg +1 -1
  312. package/gfx/stock-icons/indicators.svg +3 -3
  313. package/gfx/stock-icons/label.svg +4 -4
  314. package/gfx/stock-icons/line.svg +1 -1
  315. package/gfx/stock-icons/linear.svg +11 -0
  316. package/gfx/stock-icons/logarithmic.svg +1 -0
  317. package/gfx/stock-icons/measure-x.svg +2 -2
  318. package/gfx/stock-icons/measure-xy.svg +1 -1
  319. package/gfx/stock-icons/measure-y.svg +1 -1
  320. package/gfx/stock-icons/panning.svg +17 -0
  321. package/gfx/stock-icons/parallel-channel.svg +1 -1
  322. package/gfx/stock-icons/pitchfork.svg +1 -1
  323. package/gfx/stock-icons/ray.svg +1 -1
  324. package/gfx/stock-icons/rectangle.svg +1 -1
  325. package/gfx/stock-icons/remove-annotations.svg +2 -2
  326. package/gfx/stock-icons/save-chart.svg +3 -3
  327. package/gfx/stock-icons/segment.svg +1 -1
  328. package/gfx/stock-icons/separator.svg +1 -1
  329. package/gfx/stock-icons/series-candlestick.svg +1 -1
  330. package/gfx/stock-icons/series-heikin-ashi.svg +1 -0
  331. package/gfx/stock-icons/series-hlc.svg +1 -0
  332. package/gfx/stock-icons/series-hollow-candlestick.svg +1 -0
  333. package/gfx/stock-icons/series-line.svg +1 -1
  334. package/gfx/stock-icons/series-ohlc.svg +4 -4
  335. package/gfx/stock-icons/time-cycles.svg +35 -0
  336. package/gfx/stock-icons/vertical-arrow.svg +1 -1
  337. package/gfx/stock-icons/vertical-counter.svg +1 -1
  338. package/gfx/stock-icons/vertical-double-arrow.svg +1 -1
  339. package/gfx/stock-icons/vertical-label.svg +3 -3
  340. package/gfx/stock-icons/vertical-line.svg +1 -1
  341. package/gfx/stock-icons/zoom-x.svg +2 -2
  342. package/gfx/stock-icons/zoom-xy.svg +2 -2
  343. package/gfx/stock-icons/zoom-y.svg +2 -2
  344. package/highcharts-3d.js +24 -24
  345. package/highcharts-3d.js.map +1 -1
  346. package/highcharts-3d.src.js +6 -3
  347. package/highcharts-gantt.js +800 -792
  348. package/highcharts-gantt.js.map +1 -1
  349. package/highcharts-gantt.src.js +16535 -15918
  350. package/highcharts-more.d.ts +73 -1
  351. package/highcharts-more.js +193 -192
  352. package/highcharts-more.js.map +1 -1
  353. package/highcharts-more.src.d.ts +73 -1
  354. package/highcharts-more.src.js +8044 -7839
  355. package/highcharts.d.ts +3850 -177
  356. package/highcharts.js +589 -581
  357. package/highcharts.js.map +1 -1
  358. package/highcharts.src.d.ts +3850 -177
  359. package/highcharts.src.js +16635 -16060
  360. package/highmaps.js +708 -698
  361. package/highmaps.js.map +1 -1
  362. package/highmaps.src.js +17419 -16521
  363. package/highstock.js +782 -769
  364. package/highstock.js.map +1 -1
  365. package/highstock.src.js +28867 -27975
  366. package/indicators/acceleration-bands.js +9 -9
  367. package/indicators/acceleration-bands.js.map +1 -1
  368. package/indicators/acceleration-bands.src.js +7 -1
  369. package/indicators/accumulation-distribution.js +1 -1
  370. package/indicators/accumulation-distribution.src.js +1 -1
  371. package/indicators/ao.js +1 -1
  372. package/indicators/ao.src.js +1 -1
  373. package/indicators/apo.js +1 -1
  374. package/indicators/apo.src.js +1 -1
  375. package/indicators/aroon-oscillator.js +9 -9
  376. package/indicators/aroon-oscillator.js.map +1 -1
  377. package/indicators/aroon-oscillator.src.js +7 -1
  378. package/indicators/aroon.js +9 -9
  379. package/indicators/aroon.js.map +1 -1
  380. package/indicators/aroon.src.js +7 -1
  381. package/indicators/atr.js +1 -1
  382. package/indicators/atr.src.js +1 -1
  383. package/indicators/bollinger-bands.js +9 -9
  384. package/indicators/bollinger-bands.js.map +1 -1
  385. package/indicators/bollinger-bands.src.js +7 -1
  386. package/indicators/cci.js +1 -1
  387. package/indicators/cci.src.js +1 -1
  388. package/indicators/chaikin.js +1 -1
  389. package/indicators/chaikin.src.js +1 -1
  390. package/indicators/cmf.js +1 -1
  391. package/indicators/cmf.src.js +1 -1
  392. package/indicators/cmo.js +1 -1
  393. package/indicators/cmo.src.js +1 -1
  394. package/indicators/dema.js +1 -1
  395. package/indicators/dema.src.js +1 -1
  396. package/indicators/disparity-index.js +1 -1
  397. package/indicators/disparity-index.src.js +1 -1
  398. package/indicators/dmi.js +11 -11
  399. package/indicators/dmi.js.map +1 -1
  400. package/indicators/dmi.src.js +7 -1
  401. package/indicators/dpo.js +1 -1
  402. package/indicators/dpo.src.js +1 -1
  403. package/indicators/ema.js +1 -1
  404. package/indicators/ema.src.js +1 -1
  405. package/indicators/ichimoku-kinko-hyo.js +1 -1
  406. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  407. package/indicators/indicators-all.js +203 -200
  408. package/indicators/indicators-all.js.map +1 -1
  409. package/indicators/indicators-all.src.js +206 -104
  410. package/indicators/indicators.js +12 -11
  411. package/indicators/indicators.js.map +1 -1
  412. package/indicators/indicators.src.js +108 -90
  413. package/indicators/keltner-channels.js +9 -9
  414. package/indicators/keltner-channels.js.map +1 -1
  415. package/indicators/keltner-channels.src.js +7 -1
  416. package/indicators/klinger.js +13 -13
  417. package/indicators/klinger.js.map +1 -1
  418. package/indicators/klinger.src.js +7 -1
  419. package/indicators/macd.js +1 -1
  420. package/indicators/macd.src.js +1 -1
  421. package/indicators/mfi.js +1 -1
  422. package/indicators/mfi.src.js +1 -1
  423. package/indicators/momentum.js +1 -1
  424. package/indicators/momentum.src.js +1 -1
  425. package/indicators/natr.js +1 -1
  426. package/indicators/natr.src.js +1 -1
  427. package/indicators/obv.js +1 -1
  428. package/indicators/obv.src.js +1 -1
  429. package/indicators/pivot-points.js +1 -1
  430. package/indicators/pivot-points.src.js +1 -1
  431. package/indicators/ppo.js +1 -1
  432. package/indicators/ppo.src.js +1 -1
  433. package/indicators/price-channel.js +9 -9
  434. package/indicators/price-channel.js.map +1 -1
  435. package/indicators/price-channel.src.js +7 -1
  436. package/indicators/price-envelopes.js +1 -1
  437. package/indicators/price-envelopes.src.js +1 -1
  438. package/indicators/psar.js +1 -1
  439. package/indicators/psar.src.js +1 -1
  440. package/indicators/regressions.js +1 -1
  441. package/indicators/regressions.src.js +1 -1
  442. package/indicators/roc.js +1 -1
  443. package/indicators/roc.src.js +1 -1
  444. package/indicators/rsi.js +1 -1
  445. package/indicators/rsi.src.js +1 -1
  446. package/indicators/slow-stochastic.js +1 -1
  447. package/indicators/slow-stochastic.src.js +1 -1
  448. package/indicators/stochastic.js +10 -10
  449. package/indicators/stochastic.js.map +1 -1
  450. package/indicators/stochastic.src.js +7 -1
  451. package/indicators/supertrend.js +10 -10
  452. package/indicators/supertrend.js.map +1 -1
  453. package/indicators/supertrend.src.js +23 -10
  454. package/indicators/tema.js +1 -1
  455. package/indicators/tema.src.js +1 -1
  456. package/indicators/trendline.js +1 -1
  457. package/indicators/trendline.src.js +1 -1
  458. package/indicators/trix.js +1 -1
  459. package/indicators/trix.src.js +1 -1
  460. package/indicators/volume-by-price.js +17 -15
  461. package/indicators/volume-by-price.js.map +1 -1
  462. package/indicators/volume-by-price.src.js +71 -6
  463. package/indicators/vwap.js +1 -1
  464. package/indicators/vwap.src.js +1 -1
  465. package/indicators/williams-r.js +1 -1
  466. package/indicators/williams-r.src.js +1 -1
  467. package/indicators/wma.js +1 -1
  468. package/indicators/wma.src.js +1 -1
  469. package/indicators/zigzag.js +1 -1
  470. package/indicators/zigzag.src.js +1 -1
  471. package/modules/accessibility.js +203 -202
  472. package/modules/accessibility.js.map +1 -1
  473. package/modules/accessibility.src.js +89 -49
  474. package/modules/annotations-advanced.js +164 -163
  475. package/modules/annotations-advanced.js.map +1 -1
  476. package/modules/annotations-advanced.src.js +162 -87
  477. package/modules/annotations.js +111 -111
  478. package/modules/annotations.js.map +1 -1
  479. package/modules/annotations.src.js +162 -87
  480. package/modules/arrow-symbols.js +1 -1
  481. package/modules/arrow-symbols.src.js +1 -1
  482. package/modules/boost-canvas.js +2 -2
  483. package/modules/boost-canvas.js.map +1 -1
  484. package/modules/boost-canvas.src.js +2 -2
  485. package/modules/boost.js +52 -52
  486. package/modules/boost.js.map +1 -1
  487. package/modules/boost.src.js +15 -7
  488. package/modules/broken-axis.js +13 -13
  489. package/modules/broken-axis.js.map +1 -1
  490. package/modules/broken-axis.src.js +34 -15
  491. package/modules/bullet.js +1 -1
  492. package/modules/bullet.src.js +1 -1
  493. package/modules/coloraxis.js +24 -22
  494. package/modules/coloraxis.js.map +1 -1
  495. package/modules/coloraxis.src.js +954 -774
  496. package/modules/current-date-indicator.js +2 -2
  497. package/modules/current-date-indicator.js.map +1 -1
  498. package/modules/current-date-indicator.src.js +2 -2
  499. package/modules/cylinder.js +1 -1
  500. package/modules/cylinder.src.js +1 -1
  501. package/modules/data.js +33 -32
  502. package/modules/data.js.map +1 -1
  503. package/modules/data.src.js +182 -134
  504. package/modules/datagrouping.d.ts +5 -0
  505. package/modules/datagrouping.js +20 -20
  506. package/modules/datagrouping.js.map +1 -1
  507. package/modules/datagrouping.src.d.ts +5 -0
  508. package/modules/datagrouping.src.js +270 -228
  509. package/modules/debugger.js +3 -3
  510. package/modules/debugger.js.map +1 -1
  511. package/modules/debugger.src.js +3 -3
  512. package/modules/dependency-wheel.js +1 -1
  513. package/modules/dependency-wheel.src.js +1 -1
  514. package/modules/dotplot.js +1 -1
  515. package/modules/dotplot.src.js +1 -1
  516. package/modules/drag-panes.js +1 -1
  517. package/modules/drag-panes.src.js +1 -1
  518. package/modules/draggable-points.js +34 -34
  519. package/modules/draggable-points.js.map +1 -1
  520. package/modules/draggable-points.src.js +14 -5
  521. package/modules/drilldown.d.ts +27 -0
  522. package/modules/drilldown.js +18 -18
  523. package/modules/drilldown.js.map +1 -1
  524. package/modules/drilldown.src.d.ts +27 -0
  525. package/modules/drilldown.src.js +42 -16
  526. package/modules/dumbbell.js +1 -1
  527. package/modules/dumbbell.src.js +1 -1
  528. package/modules/export-data.js +20 -20
  529. package/modules/export-data.js.map +1 -1
  530. package/modules/export-data.src.js +8 -5
  531. package/modules/exporting.d.ts +29 -0
  532. package/modules/exporting.js +38 -35
  533. package/modules/exporting.js.map +1 -1
  534. package/modules/exporting.src.d.ts +29 -0
  535. package/modules/exporting.src.js +1937 -1614
  536. package/modules/full-screen.js +2 -2
  537. package/modules/full-screen.js.map +1 -1
  538. package/modules/full-screen.src.js +8 -6
  539. package/modules/funnel.js +1 -1
  540. package/modules/funnel.src.js +1 -1
  541. package/modules/funnel3d.js +1 -1
  542. package/modules/funnel3d.src.js +1 -1
  543. package/modules/gantt.js +218 -217
  544. package/modules/gantt.js.map +1 -1
  545. package/modules/gantt.src.js +74 -32
  546. package/modules/grid-axis.js +23 -22
  547. package/modules/grid-axis.js.map +1 -1
  548. package/modules/grid-axis.src.js +9 -4
  549. package/modules/heatmap.js +39 -37
  550. package/modules/heatmap.js.map +1 -1
  551. package/modules/heatmap.src.js +963 -779
  552. package/modules/heikinashi.js +17 -0
  553. package/modules/heikinashi.js.map +1 -0
  554. package/modules/heikinashi.src.js +394 -0
  555. package/modules/histogram-bellcurve.js +1 -1
  556. package/modules/histogram-bellcurve.src.js +1 -1
  557. package/modules/hollowcandlestick.js +18 -0
  558. package/modules/hollowcandlestick.js.map +1 -0
  559. package/modules/hollowcandlestick.src.js +504 -0
  560. package/modules/item-series.js +1 -1
  561. package/modules/item-series.src.js +1 -1
  562. package/modules/lollipop.js +1 -1
  563. package/modules/lollipop.src.js +1 -1
  564. package/modules/map.d.ts +9 -0
  565. package/modules/map.js +122 -119
  566. package/modules/map.js.map +1 -1
  567. package/modules/map.src.d.ts +9 -0
  568. package/modules/map.src.js +1655 -1332
  569. package/modules/marker-clusters.js +1 -1
  570. package/modules/marker-clusters.src.js +1 -1
  571. package/modules/networkgraph.js +1 -1
  572. package/modules/networkgraph.src.js +1 -1
  573. package/modules/no-data-to-display.js +3 -3
  574. package/modules/no-data-to-display.js.map +1 -1
  575. package/modules/no-data-to-display.src.js +2 -2
  576. package/modules/offline-exporting.js +18 -16
  577. package/modules/offline-exporting.js.map +1 -1
  578. package/modules/offline-exporting.src.js +623 -562
  579. package/modules/oldie-polyfills.js +1 -1
  580. package/modules/oldie-polyfills.src.js +1 -1
  581. package/modules/oldie.js +2 -2
  582. package/modules/oldie.src.js +2 -2
  583. package/modules/organization.js +1 -1
  584. package/modules/organization.src.js +1 -1
  585. package/modules/overlapping-datalabels.js +1 -1
  586. package/modules/overlapping-datalabels.src.js +1 -1
  587. package/modules/parallel-coordinates.js +1 -1
  588. package/modules/parallel-coordinates.src.js +1 -1
  589. package/modules/pareto.js +1 -1
  590. package/modules/pareto.src.js +1 -1
  591. package/modules/pathfinder.js +1 -1
  592. package/modules/pathfinder.src.js +1 -1
  593. package/modules/pattern-fill.js +14 -14
  594. package/modules/pattern-fill.js.map +1 -1
  595. package/modules/pattern-fill.src.js +24 -12
  596. package/modules/price-indicator.js +1 -1
  597. package/modules/price-indicator.src.js +1 -1
  598. package/modules/pyramid3d.js +1 -1
  599. package/modules/pyramid3d.src.js +1 -1
  600. package/modules/sankey.js +28 -28
  601. package/modules/sankey.js.map +1 -1
  602. package/modules/sankey.src.js +11 -11
  603. package/modules/series-label.js +1 -1
  604. package/modules/series-label.src.js +1 -1
  605. package/modules/solid-gauge.js +2 -2
  606. package/modules/solid-gauge.js.map +1 -1
  607. package/modules/solid-gauge.src.js +3 -3
  608. package/modules/sonification.js +1 -1
  609. package/modules/sonification.src.js +1 -1
  610. package/modules/static-scale.js +1 -1
  611. package/modules/static-scale.src.js +1 -1
  612. package/modules/stock-tools.js +159 -157
  613. package/modules/stock-tools.js.map +1 -1
  614. package/modules/stock-tools.src.js +253 -123
  615. package/modules/stock.d.ts +5 -0
  616. package/modules/stock.js +196 -191
  617. package/modules/stock.js.map +1 -1
  618. package/modules/stock.src.d.ts +5 -0
  619. package/modules/stock.src.js +7749 -7432
  620. package/modules/streamgraph.js +1 -1
  621. package/modules/streamgraph.src.js +1 -1
  622. package/modules/sunburst.js +5 -5
  623. package/modules/sunburst.js.map +1 -1
  624. package/modules/sunburst.src.js +6 -19
  625. package/modules/tilemap.js +1 -1
  626. package/modules/tilemap.src.js +1 -1
  627. package/modules/timeline.js +18 -17
  628. package/modules/timeline.js.map +1 -1
  629. package/modules/timeline.src.js +21 -24
  630. package/modules/treegrid.js +57 -57
  631. package/modules/treegrid.js.map +1 -1
  632. package/modules/treegrid.src.js +43 -19
  633. package/modules/treemap.js +5 -5
  634. package/modules/treemap.js.map +1 -1
  635. package/modules/treemap.src.js +5 -5
  636. package/modules/variable-pie.js +1 -1
  637. package/modules/variable-pie.src.js +1 -1
  638. package/modules/variwide.js +1 -1
  639. package/modules/variwide.src.js +1 -1
  640. package/modules/vector.js +1 -1
  641. package/modules/vector.src.js +1 -1
  642. package/modules/venn.js +31 -30
  643. package/modules/venn.js.map +1 -1
  644. package/modules/venn.src.js +508 -424
  645. package/modules/windbarb.js +1 -1
  646. package/modules/windbarb.src.js +1 -1
  647. package/modules/wordcloud.js +4 -4
  648. package/modules/wordcloud.js.map +1 -1
  649. package/modules/wordcloud.src.js +2 -1
  650. package/modules/xrange.js +17 -17
  651. package/modules/xrange.js.map +1 -1
  652. package/modules/xrange.src.js +7 -4
  653. package/package.json +1 -1
  654. package/themes/avocado.d.ts +6 -1
  655. package/themes/avocado.js +3 -3
  656. package/themes/avocado.js.map +1 -1
  657. package/themes/avocado.src.d.ts +6 -1
  658. package/themes/avocado.src.js +53 -22
  659. package/themes/dark-blue.d.ts +6 -1
  660. package/themes/dark-blue.js +3 -3
  661. package/themes/dark-blue.js.map +1 -1
  662. package/themes/dark-blue.src.d.ts +6 -1
  663. package/themes/dark-blue.src.js +231 -205
  664. package/themes/dark-green.d.ts +6 -1
  665. package/themes/dark-green.js +4 -4
  666. package/themes/dark-green.js.map +1 -1
  667. package/themes/dark-green.src.d.ts +6 -1
  668. package/themes/dark-green.src.js +236 -205
  669. package/themes/dark-unica.d.ts +6 -1
  670. package/themes/dark-unica.js +7 -7
  671. package/themes/dark-unica.js.map +1 -1
  672. package/themes/dark-unica.src.d.ts +6 -1
  673. package/themes/dark-unica.src.js +206 -174
  674. package/themes/gray.d.ts +6 -1
  675. package/themes/gray.js +3 -3
  676. package/themes/gray.js.map +1 -1
  677. package/themes/gray.src.d.ts +6 -1
  678. package/themes/gray.src.js +233 -207
  679. package/themes/grid-light.d.ts +6 -1
  680. package/themes/grid-light.js +4 -4
  681. package/themes/grid-light.js.map +1 -1
  682. package/themes/grid-light.src.d.ts +6 -1
  683. package/themes/grid-light.src.js +88 -57
  684. package/themes/grid.d.ts +6 -1
  685. package/themes/grid.js +3 -3
  686. package/themes/grid.js.map +1 -1
  687. package/themes/grid.src.d.ts +6 -1
  688. package/themes/grid.src.js +114 -83
  689. package/themes/high-contrast-dark.js +5 -4
  690. package/themes/high-contrast-dark.js.map +1 -1
  691. package/themes/high-contrast-dark.src.js +197 -166
  692. package/themes/high-contrast-light.js +3 -3
  693. package/themes/high-contrast-light.js.map +1 -1
  694. package/themes/high-contrast-light.src.js +54 -23
  695. package/themes/sand-signika.d.ts +6 -1
  696. package/themes/sand-signika.js +5 -5
  697. package/themes/sand-signika.js.map +1 -1
  698. package/themes/sand-signika.src.d.ts +6 -1
  699. package/themes/sand-signika.src.js +119 -88
  700. package/themes/skies.d.ts +6 -1
  701. package/themes/skies.js +5 -5
  702. package/themes/skies.js.map +1 -1
  703. package/themes/skies.src.d.ts +6 -1
  704. package/themes/skies.src.js +107 -76
  705. package/themes/sunset.d.ts +6 -1
  706. package/themes/sunset.js +3 -3
  707. package/themes/sunset.js.map +1 -1
  708. package/themes/sunset.src.d.ts +6 -1
  709. package/themes/sunset.src.js +52 -21
  710. package/es-modules/Core/Axis/ColorAxis.js +0 -1164
  711. package/es-modules/Core/Axis/HiddenAxis.js +0 -46
  712. package/es-modules/Core/Axis/PlotLineOrBand.js +0 -1051
  713. package/es-modules/Core/Series/DataLabels.js +0 -1173
  714. package/es-modules/Extensions/Exporting.js +0 -2024
  715. package/es-modules/Extensions/OfflineExporting.js +0 -621
  716. package/es-modules/Mixins/Geometry.js +0 -56
  717. package/es-modules/Mixins/GeometryCircles.js +0 -320
  718. package/es-modules/Series/Bubble/BubbleLegend.js +0 -893
@@ -1,893 +0,0 @@
1
- /* *
2
- *
3
- * (c) 2010-2021 Highsoft AS
4
- *
5
- * Author: Paweł Potaczek
6
- *
7
- * License: www.highcharts.com/license
8
- *
9
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
10
- *
11
- * */
12
- 'use strict';
13
- import Chart from '../../Core/Chart/Chart.js';
14
- import Color from '../../Core/Color/Color.js';
15
- var color = Color.parse;
16
- import F from '../../Core/FormatUtilities.js';
17
- import H from '../../Core/Globals.js';
18
- var noop = H.noop;
19
- import Legend from '../../Core/Legend.js';
20
- import D from '../../Core/DefaultOptions.js';
21
- var setOptions = D.setOptions;
22
- import palette from '../../Core/Color/Palette.js';
23
- import Series from '../../Core/Series/Series.js';
24
- import U from '../../Core/Utilities.js';
25
- var addEvent = U.addEvent, arrayMax = U.arrayMax, arrayMin = U.arrayMin, isNumber = U.isNumber, merge = U.merge, objectEach = U.objectEach, pick = U.pick, stableSort = U.stableSort, wrap = U.wrap;
26
- /**
27
- * @interface Highcharts.BubbleLegendFormatterContextObject
28
- */ /**
29
- * The center y position of the range.
30
- * @name Highcharts.BubbleLegendFormatterContextObject#center
31
- * @type {number}
32
- */ /**
33
- * The radius of the bubble range.
34
- * @name Highcharts.BubbleLegendFormatterContextObject#radius
35
- * @type {number}
36
- */ /**
37
- * The bubble value.
38
- * @name Highcharts.BubbleLegendFormatterContextObject#value
39
- * @type {number}
40
- */
41
- ''; // detach doclets above
42
- import './BubbleSeries.js';
43
- setOptions({
44
- legend: {
45
- /**
46
- * The bubble legend is an additional element in legend which
47
- * presents the scale of the bubble series. Individual bubble ranges
48
- * can be defined by user or calculated from series. In the case of
49
- * automatically calculated ranges, a 1px margin of error is
50
- * permitted.
51
- *
52
- * @since 7.0.0
53
- * @product highcharts highstock highmaps
54
- * @requires highcharts-more
55
- * @optionparent legend.bubbleLegend
56
- */
57
- bubbleLegend: {
58
- /**
59
- * The color of the ranges borders, can be also defined for an
60
- * individual range.
61
- *
62
- * @sample highcharts/bubble-legend/similartoseries/
63
- * Similar look to the bubble series
64
- * @sample highcharts/bubble-legend/bordercolor/
65
- * Individual bubble border color
66
- *
67
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
68
- */
69
- borderColor: void 0,
70
- /**
71
- * The width of the ranges borders in pixels, can be also
72
- * defined for an individual range.
73
- */
74
- borderWidth: 2,
75
- /**
76
- * An additional class name to apply to the bubble legend'
77
- * circle graphical elements. This option does not replace
78
- * default class names of the graphical element.
79
- *
80
- * @sample {highcharts} highcharts/css/bubble-legend/
81
- * Styling by CSS
82
- *
83
- * @type {string}
84
- */
85
- className: void 0,
86
- /**
87
- * The main color of the bubble legend. Applies to ranges, if
88
- * individual color is not defined.
89
- *
90
- * @sample highcharts/bubble-legend/similartoseries/
91
- * Similar look to the bubble series
92
- * @sample highcharts/bubble-legend/color/
93
- * Individual bubble color
94
- *
95
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
96
- */
97
- color: void 0,
98
- /**
99
- * An additional class name to apply to the bubble legend's
100
- * connector graphical elements. This option does not replace
101
- * default class names of the graphical element.
102
- *
103
- * @sample {highcharts} highcharts/css/bubble-legend/
104
- * Styling by CSS
105
- *
106
- * @type {string}
107
- */
108
- connectorClassName: void 0,
109
- /**
110
- * The color of the connector, can be also defined
111
- * for an individual range.
112
- *
113
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
114
- */
115
- connectorColor: void 0,
116
- /**
117
- * The length of the connectors in pixels. If labels are
118
- * centered, the distance is reduced to 0.
119
- *
120
- * @sample highcharts/bubble-legend/connectorandlabels/
121
- * Increased connector length
122
- */
123
- connectorDistance: 60,
124
- /**
125
- * The width of the connectors in pixels.
126
- *
127
- * @sample highcharts/bubble-legend/connectorandlabels/
128
- * Increased connector width
129
- */
130
- connectorWidth: 1,
131
- /**
132
- * Enable or disable the bubble legend.
133
- */
134
- enabled: false,
135
- /**
136
- * Options for the bubble legend labels.
137
- */
138
- labels: {
139
- /**
140
- * An additional class name to apply to the bubble legend
141
- * label graphical elements. This option does not replace
142
- * default class names of the graphical element.
143
- *
144
- * @sample {highcharts} highcharts/css/bubble-legend/
145
- * Styling by CSS
146
- *
147
- * @type {string}
148
- */
149
- className: void 0,
150
- /**
151
- * Whether to allow data labels to overlap.
152
- */
153
- allowOverlap: false,
154
- /**
155
- * A format string for the bubble legend labels. Available
156
- * variables are the same as for `formatter`.
157
- *
158
- * @sample highcharts/bubble-legend/format/
159
- * Add a unit
160
- *
161
- * @type {string}
162
- */
163
- format: '',
164
- /**
165
- * Available `this` properties are:
166
- *
167
- * - `this.value`: The bubble value.
168
- *
169
- * - `this.radius`: The radius of the bubble range.
170
- *
171
- * - `this.center`: The center y position of the range.
172
- *
173
- * @type {Highcharts.FormatterCallbackFunction<Highcharts.BubbleLegendFormatterContextObject>}
174
- */
175
- formatter: void 0,
176
- /**
177
- * The alignment of the labels compared to the bubble
178
- * legend. Can be one of `left`, `center` or `right`.
179
- *
180
- * @sample highcharts/bubble-legend/connectorandlabels/
181
- * Labels on left
182
- *
183
- * @type {Highcharts.AlignValue}
184
- */
185
- align: 'right',
186
- /**
187
- * CSS styles for the labels.
188
- *
189
- * @type {Highcharts.CSSObject}
190
- */
191
- style: {
192
- /** @ignore-option */
193
- fontSize: '10px',
194
- /** @ignore-option */
195
- color: palette.neutralColor100
196
- },
197
- /**
198
- * The x position offset of the label relative to the
199
- * connector.
200
- */
201
- x: 0,
202
- /**
203
- * The y position offset of the label relative to the
204
- * connector.
205
- */
206
- y: 0
207
- },
208
- /**
209
- * Miximum bubble legend range size. If values for ranges are
210
- * not specified, the `minSize` and the `maxSize` are calculated
211
- * from bubble series.
212
- */
213
- maxSize: 60,
214
- /**
215
- * Minimum bubble legend range size. If values for ranges are
216
- * not specified, the `minSize` and the `maxSize` are calculated
217
- * from bubble series.
218
- */
219
- minSize: 10,
220
- /**
221
- * The position of the bubble legend in the legend.
222
- * @sample highcharts/bubble-legend/connectorandlabels/
223
- * Bubble legend as last item in legend
224
- */
225
- legendIndex: 0,
226
- /**
227
- * Options for specific range. One range consists of bubble,
228
- * label and connector.
229
- *
230
- * @sample highcharts/bubble-legend/ranges/
231
- * Manually defined ranges
232
- * @sample highcharts/bubble-legend/autoranges/
233
- * Auto calculated ranges
234
- *
235
- * @type {Array<*>}
236
- */
237
- ranges: {
238
- /**
239
- * Range size value, similar to bubble Z data.
240
- * @type {number}
241
- */
242
- value: void 0,
243
- /**
244
- * The color of the border for individual range.
245
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
246
- */
247
- borderColor: void 0,
248
- /**
249
- * The color of the bubble for individual range.
250
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
251
- */
252
- color: void 0,
253
- /**
254
- * The color of the connector for individual range.
255
- * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
256
- */
257
- connectorColor: void 0
258
- },
259
- /**
260
- * Whether the bubble legend range value should be represented
261
- * by the area or the width of the bubble. The default, area,
262
- * corresponds best to the human perception of the size of each
263
- * bubble.
264
- *
265
- * @sample highcharts/bubble-legend/ranges/
266
- * Size by width
267
- *
268
- * @type {Highcharts.BubbleSizeByValue}
269
- */
270
- sizeBy: 'area',
271
- /**
272
- * When this is true, the absolute value of z determines the
273
- * size of the bubble. This means that with the default
274
- * zThreshold of 0, a bubble of value -1 will have the same size
275
- * as a bubble of value 1, while a bubble of value 0 will have a
276
- * smaller size according to minSize.
277
- */
278
- sizeByAbsoluteValue: false,
279
- /**
280
- * Define the visual z index of the bubble legend.
281
- */
282
- zIndex: 1,
283
- /**
284
- * Ranges with with lower value than zThreshold, are skipped.
285
- */
286
- zThreshold: 0
287
- }
288
- }
289
- });
290
- /* eslint-disable no-invalid-this, valid-jsdoc */
291
- /**
292
- * BubbleLegend class.
293
- *
294
- * @private
295
- * @class
296
- * @name Highcharts.BubbleLegend
297
- * @param {Highcharts.LegendBubbleLegendOptions} options
298
- * Bubble legend options
299
- * @param {Highcharts.Legend} legend
300
- * Legend
301
- */
302
- var BubbleLegend = /** @class */ (function () {
303
- function BubbleLegend(options, legend) {
304
- this.chart = void 0;
305
- this.fontMetrics = void 0;
306
- this.legend = void 0;
307
- this.legendGroup = void 0;
308
- this.legendItem = void 0;
309
- this.legendItemHeight = void 0;
310
- this.legendItemWidth = void 0;
311
- this.legendSymbol = void 0;
312
- this.maxLabel = void 0;
313
- this.movementX = void 0;
314
- this.ranges = void 0;
315
- this.visible = void 0;
316
- this.symbols = void 0;
317
- this.options = void 0;
318
- this.setState = noop;
319
- this.init(options, legend);
320
- }
321
- /**
322
- * Create basic bubbleLegend properties similar to item in legend.
323
- *
324
- * @private
325
- * @function Highcharts.BubbleLegend#init
326
- * @param {Highcharts.LegendBubbleLegendOptions} options
327
- * Bubble legend options
328
- * @param {Highcharts.Legend} legend
329
- * Legend
330
- * @return {void}
331
- */
332
- BubbleLegend.prototype.init = function (options, legend) {
333
- this.options = options;
334
- this.visible = true;
335
- this.chart = legend.chart;
336
- this.legend = legend;
337
- };
338
- /**
339
- * Depending on the position option, add bubbleLegend to legend items.
340
- *
341
- * @private
342
- * @function Highcharts.BubbleLegend#addToLegend
343
- * @param {Array<(Highcharts.Point|Highcharts.Series)>}
344
- * All legend items
345
- * @return {void}
346
- */
347
- BubbleLegend.prototype.addToLegend = function (items) {
348
- // Insert bubbleLegend into legend items
349
- items.splice(this.options.legendIndex, 0, this);
350
- };
351
- /**
352
- * Calculate ranges, sizes and call the next steps of bubbleLegend
353
- * creation.
354
- *
355
- * @private
356
- * @function Highcharts.BubbleLegend#drawLegendSymbol
357
- * @param {Highcharts.Legend} legend
358
- * Legend instance
359
- * @return {void}
360
- */
361
- BubbleLegend.prototype.drawLegendSymbol = function (legend) {
362
- var chart = this.chart, options = this.options, size, itemDistance = pick(legend.options.itemDistance, 20), connectorSpace, ranges = options.ranges, radius, maxLabel, connectorDistance = options.connectorDistance;
363
- // Predict label dimensions
364
- this.fontMetrics = chart.renderer.fontMetrics(options.labels.style.fontSize);
365
- // Do not create bubbleLegend now if ranges or ranges valeus are not
366
- // specified or if are empty array.
367
- if (!ranges || !ranges.length || !isNumber(ranges[0].value)) {
368
- legend.options.bubbleLegend.autoRanges = true;
369
- return;
370
- }
371
- // Sort ranges to right render order
372
- stableSort(ranges, function (a, b) {
373
- return b.value - a.value;
374
- });
375
- this.ranges = ranges;
376
- this.setOptions();
377
- this.render();
378
- // Get max label size
379
- maxLabel = this.getMaxLabelSize();
380
- radius = this.ranges[0].radius;
381
- size = radius * 2;
382
- // Space for connectors and labels.
383
- connectorSpace =
384
- connectorDistance - radius + maxLabel.width;
385
- connectorSpace = connectorSpace > 0 ? connectorSpace : 0;
386
- this.maxLabel = maxLabel;
387
- this.movementX = options.labels.align === 'left' ?
388
- connectorSpace : 0;
389
- this.legendItemWidth = size + connectorSpace + itemDistance;
390
- this.legendItemHeight = size + this.fontMetrics.h / 2;
391
- };
392
- /**
393
- * Set style options for each bubbleLegend range.
394
- *
395
- * @private
396
- * @function Highcharts.BubbleLegend#setOptions
397
- * @return {void}
398
- */
399
- BubbleLegend.prototype.setOptions = function () {
400
- var ranges = this.ranges, options = this.options, series = this.chart.series[options.seriesIndex], baseline = this.legend.baseline, bubbleAttribs = {
401
- zIndex: options.zIndex,
402
- 'stroke-width': options.borderWidth
403
- }, connectorAttribs = {
404
- zIndex: options.zIndex,
405
- 'stroke-width': options.connectorWidth
406
- }, labelAttribs = {
407
- align: (this.legend.options.rtl ||
408
- options.labels.align === 'left') ? 'right' : 'left',
409
- zIndex: options.zIndex
410
- }, fillOpacity = series.options.marker.fillOpacity, styledMode = this.chart.styledMode;
411
- // Allow to parts of styles be used individually for range
412
- ranges.forEach(function (range, i) {
413
- if (!styledMode) {
414
- bubbleAttribs.stroke = pick(range.borderColor, options.borderColor, series.color);
415
- bubbleAttribs.fill = pick(range.color, options.color, fillOpacity !== 1 ?
416
- color(series.color).setOpacity(fillOpacity)
417
- .get('rgba') :
418
- series.color);
419
- connectorAttribs.stroke = pick(range.connectorColor, options.connectorColor, series.color);
420
- }
421
- // Set options needed for rendering each range
422
- ranges[i].radius = this.getRangeRadius(range.value);
423
- ranges[i] = merge(ranges[i], {
424
- center: (ranges[0].radius - ranges[i].radius +
425
- baseline)
426
- });
427
- if (!styledMode) {
428
- merge(true, ranges[i], {
429
- bubbleAttribs: merge(bubbleAttribs),
430
- connectorAttribs: merge(connectorAttribs),
431
- labelAttribs: labelAttribs
432
- });
433
- }
434
- }, this);
435
- };
436
- /**
437
- * Calculate radius for each bubble range,
438
- * used code from BubbleSeries.js 'getRadius' method.
439
- *
440
- * @private
441
- * @function Highcharts.BubbleLegend#getRangeRadius
442
- * @param {number} value
443
- * Range value
444
- * @return {number|null}
445
- * Radius for one range
446
- */
447
- BubbleLegend.prototype.getRangeRadius = function (value) {
448
- var options = this.options, seriesIndex = this.options.seriesIndex, bubbleSeries = this.chart.series[seriesIndex], zMax = options.ranges[0].value, zMin = options.ranges[options.ranges.length - 1].value, minSize = options.minSize, maxSize = options.maxSize;
449
- return bubbleSeries.getRadius.call(this, zMin, zMax, minSize, maxSize, value);
450
- };
451
- /**
452
- * Render the legendSymbol group.
453
- *
454
- * @private
455
- * @function Highcharts.BubbleLegend#render
456
- * @return {void}
457
- */
458
- BubbleLegend.prototype.render = function () {
459
- var renderer = this.chart.renderer, zThreshold = this.options.zThreshold;
460
- if (!this.symbols) {
461
- this.symbols = {
462
- connectors: [],
463
- bubbleItems: [],
464
- labels: []
465
- };
466
- }
467
- // Nesting SVG groups to enable handleOverflow
468
- this.legendSymbol = renderer.g('bubble-legend');
469
- this.legendItem = renderer.g('bubble-legend-item');
470
- // To enable default 'hideOverlappingLabels' method
471
- this.legendSymbol.translateX = 0;
472
- this.legendSymbol.translateY = 0;
473
- this.ranges.forEach(function (range) {
474
- if (range.value >= zThreshold) {
475
- this.renderRange(range);
476
- }
477
- }, this);
478
- // To use handleOverflow method
479
- this.legendSymbol.add(this.legendItem);
480
- this.legendItem.add(this.legendGroup);
481
- this.hideOverlappingLabels();
482
- };
483
- /**
484
- * Render one range, consisting of bubble symbol, connector and label.
485
- *
486
- * @private
487
- * @function Highcharts.BubbleLegend#renderRange
488
- * @param {Highcharts.LegendBubbleLegendRangesOptions} range
489
- * Range options
490
- * @return {void}
491
- */
492
- BubbleLegend.prototype.renderRange = function (range) {
493
- var mainRange = this.ranges[0], legend = this.legend, options = this.options, labelsOptions = options.labels, chart = this.chart, bubbleSeries = chart.series[options.seriesIndex], renderer = chart.renderer, symbols = this.symbols, labels = symbols.labels, label, elementCenter = range.center, absoluteRadius = Math.abs(range.radius), connectorDistance = options.connectorDistance || 0, labelsAlign = labelsOptions.align, rtl = legend.options.rtl, connectorLength = rtl || labelsAlign === 'left' ?
494
- -connectorDistance : connectorDistance, borderWidth = options.borderWidth, connectorWidth = options.connectorWidth, posX = mainRange.radius || 0, posY = elementCenter - absoluteRadius -
495
- borderWidth / 2 + connectorWidth / 2, labelY, labelX, fontMetrics = this.fontMetrics, labelMovement = fontMetrics.f / 2 -
496
- (fontMetrics.h - fontMetrics.f) / 2, crispMovement = (posY % 1 ? 1 : 0.5) -
497
- (connectorWidth % 2 ? 0 : 0.5), styledMode = renderer.styledMode;
498
- // Set options for centered labels
499
- if (labelsAlign === 'center') {
500
- connectorLength = 0; // do not use connector
501
- options.connectorDistance = 0;
502
- range.labelAttribs.align = 'center';
503
- }
504
- labelY = posY + options.labels.y;
505
- labelX = posX + connectorLength + options.labels.x;
506
- // Render bubble symbol
507
- symbols.bubbleItems.push(renderer
508
- .circle(posX, elementCenter + crispMovement, absoluteRadius)
509
- .attr(styledMode ? {} : range.bubbleAttribs)
510
- .addClass((styledMode ?
511
- 'highcharts-color-' +
512
- bubbleSeries.colorIndex + ' ' :
513
- '') +
514
- 'highcharts-bubble-legend-symbol ' +
515
- (options.className || '')).add(this.legendSymbol));
516
- // Render connector
517
- symbols.connectors.push(renderer
518
- .path(renderer.crispLine([
519
- ['M', posX, posY],
520
- ['L', posX + connectorLength, posY]
521
- ], options.connectorWidth))
522
- .attr((styledMode ? {} : range.connectorAttribs))
523
- .addClass((styledMode ?
524
- 'highcharts-color-' +
525
- this.options.seriesIndex + ' ' : '') +
526
- 'highcharts-bubble-legend-connectors ' +
527
- (options.connectorClassName || '')).add(this.legendSymbol));
528
- // Render label
529
- label = renderer
530
- .text(this.formatLabel(range), labelX, labelY + labelMovement)
531
- .attr((styledMode ? {} : range.labelAttribs))
532
- .css(styledMode ? {} : labelsOptions.style)
533
- .addClass('highcharts-bubble-legend-labels ' +
534
- (options.labels.className || '')).add(this.legendSymbol);
535
- labels.push(label);
536
- // To enable default 'hideOverlappingLabels' method
537
- label.placed = true;
538
- label.alignAttr = {
539
- x: labelX,
540
- y: labelY + labelMovement
541
- };
542
- };
543
- /**
544
- * Get the label which takes up the most space.
545
- *
546
- * @private
547
- * @function Highcharts.BubbleLegend#getMaxLabelSize
548
- * @return {Highcharts.BBoxObject}
549
- */
550
- BubbleLegend.prototype.getMaxLabelSize = function () {
551
- var labels = this.symbols.labels, maxLabel, labelSize;
552
- labels.forEach(function (label) {
553
- labelSize = label.getBBox(true);
554
- if (maxLabel) {
555
- maxLabel = labelSize.width > maxLabel.width ?
556
- labelSize : maxLabel;
557
- }
558
- else {
559
- maxLabel = labelSize;
560
- }
561
- });
562
- return maxLabel || {};
563
- };
564
- /**
565
- * Get formatted label for range.
566
- *
567
- * @private
568
- * @function Highcharts.BubbleLegend#formatLabel
569
- * @param {Highcharts.LegendBubbleLegendRangesOptions} range
570
- * Range options
571
- * @return {string}
572
- * Range label text
573
- */
574
- BubbleLegend.prototype.formatLabel = function (range) {
575
- var options = this.options, formatter = options.labels.formatter, format = options.labels.format;
576
- var numberFormatter = this.chart.numberFormatter;
577
- return format ? F.format(format, range) :
578
- formatter ? formatter.call(range) :
579
- numberFormatter(range.value, 1);
580
- };
581
- /**
582
- * By using default chart 'hideOverlappingLabels' method, hide or show
583
- * labels and connectors.
584
- *
585
- * @private
586
- * @function Highcharts.BubbleLegend#hideOverlappingLabels
587
- * @return {void}
588
- */
589
- BubbleLegend.prototype.hideOverlappingLabels = function () {
590
- var chart = this.chart, allowOverlap = this.options.labels.allowOverlap, symbols = this.symbols;
591
- if (!allowOverlap && symbols) {
592
- chart.hideOverlappingLabels(symbols.labels);
593
- // Hide or show connectors
594
- symbols.labels.forEach(function (label, index) {
595
- if (!label.newOpacity) {
596
- symbols.connectors[index].hide();
597
- }
598
- else if (label.newOpacity !== label.oldOpacity) {
599
- symbols.connectors[index].show();
600
- }
601
- });
602
- }
603
- };
604
- /**
605
- * Calculate ranges from created series.
606
- *
607
- * @private
608
- * @function Highcharts.BubbleLegend#getRanges
609
- * @return {Array<Highcharts.LegendBubbleLegendRangesOptions>}
610
- * Array of range objects
611
- */
612
- BubbleLegend.prototype.getRanges = function () {
613
- var bubbleLegend = this.legend.bubbleLegend, series = bubbleLegend.chart.series, ranges, rangesOptions = bubbleLegend.options.ranges, zData, minZ = Number.MAX_VALUE, maxZ = -Number.MAX_VALUE;
614
- series.forEach(function (s) {
615
- // Find the min and max Z, like in bubble series
616
- if (s.isBubble && !s.ignoreSeries) {
617
- zData = s.zData.filter(isNumber);
618
- if (zData.length) {
619
- minZ = pick(s.options.zMin, Math.min(minZ, Math.max(arrayMin(zData), s.options.displayNegative === false ?
620
- s.options.zThreshold :
621
- -Number.MAX_VALUE)));
622
- maxZ = pick(s.options.zMax, Math.max(maxZ, arrayMax(zData)));
623
- }
624
- }
625
- });
626
- // Set values for ranges
627
- if (minZ === maxZ) {
628
- // Only one range if min and max values are the same.
629
- ranges = [{ value: maxZ }];
630
- }
631
- else {
632
- ranges = [
633
- { value: minZ },
634
- { value: (minZ + maxZ) / 2 },
635
- { value: maxZ, autoRanges: true }
636
- ];
637
- }
638
- // Prevent reverse order of ranges after redraw
639
- if (rangesOptions.length && rangesOptions[0].radius) {
640
- ranges.reverse();
641
- }
642
- // Merge ranges values with user options
643
- ranges.forEach(function (range, i) {
644
- if (rangesOptions && rangesOptions[i]) {
645
- ranges[i] = merge(rangesOptions[i], range);
646
- }
647
- });
648
- return ranges;
649
- };
650
- /**
651
- * Calculate bubble legend sizes from rendered series.
652
- *
653
- * @private
654
- * @function Highcharts.BubbleLegend#predictBubbleSizes
655
- * @return {Array<number,number>}
656
- * Calculated min and max bubble sizes
657
- */
658
- BubbleLegend.prototype.predictBubbleSizes = function () {
659
- var chart = this.chart, fontMetrics = this.fontMetrics, legendOptions = chart.legend.options, floating = legendOptions.floating, horizontal = legendOptions.layout === 'horizontal', lastLineHeight = horizontal ? chart.legend.lastLineHeight : 0, plotSizeX = chart.plotSizeX, plotSizeY = chart.plotSizeY, bubbleSeries = chart.series[this.options.seriesIndex], minSize = Math.ceil(bubbleSeries.minPxSize), maxPxSize = Math.ceil(bubbleSeries.maxPxSize), maxSize = bubbleSeries.options.maxSize, plotSize = Math.min(plotSizeY, plotSizeX), calculatedSize;
660
- // Calculate prediceted max size of bubble
661
- if (floating || !(/%$/.test(maxSize))) {
662
- calculatedSize = maxPxSize;
663
- }
664
- else {
665
- maxSize = parseFloat(maxSize);
666
- calculatedSize = ((plotSize + lastLineHeight -
667
- fontMetrics.h / 2) * maxSize / 100) / (maxSize / 100 + 1);
668
- // Get maxPxSize from bubble series if calculated bubble legend
669
- // size will not affect to bubbles series.
670
- if ((horizontal && plotSizeY - calculatedSize >=
671
- plotSizeX) || (!horizontal && plotSizeX -
672
- calculatedSize >= plotSizeY)) {
673
- calculatedSize = maxPxSize;
674
- }
675
- }
676
- return [minSize, Math.ceil(calculatedSize)];
677
- };
678
- /**
679
- * Correct ranges with calculated sizes.
680
- *
681
- * @private
682
- * @function Highcharts.BubbleLegend#updateRanges
683
- * @param {number} min
684
- * @param {number} max
685
- * @return {void}
686
- */
687
- BubbleLegend.prototype.updateRanges = function (min, max) {
688
- var bubbleLegendOptions = this.legend.options.bubbleLegend;
689
- bubbleLegendOptions.minSize = min;
690
- bubbleLegendOptions.maxSize = max;
691
- bubbleLegendOptions.ranges = this.getRanges();
692
- };
693
- /**
694
- * Because of the possibility of creating another legend line, predicted
695
- * bubble legend sizes may differ by a few pixels, so it is necessary to
696
- * correct them.
697
- *
698
- * @private
699
- * @function Highcharts.BubbleLegend#correctSizes
700
- * @return {void}
701
- */
702
- BubbleLegend.prototype.correctSizes = function () {
703
- var legend = this.legend, chart = this.chart, bubbleSeries = chart.series[this.options.seriesIndex], bubbleSeriesSize = bubbleSeries.maxPxSize, bubbleLegendSize = this.options.maxSize;
704
- if (Math.abs(Math.ceil(bubbleSeriesSize) - bubbleLegendSize) >
705
- 1) {
706
- this.updateRanges(this.options.minSize, bubbleSeries.maxPxSize);
707
- legend.render();
708
- }
709
- };
710
- return BubbleLegend;
711
- }());
712
- // Start the bubble legend creation process.
713
- addEvent(Legend, 'afterGetAllItems', function (e) {
714
- var legend = this, bubbleLegend = legend.bubbleLegend, legendOptions = legend.options, options = legendOptions.bubbleLegend, bubbleSeriesIndex = legend.chart.getVisibleBubbleSeriesIndex();
715
- // Remove unnecessary element
716
- if (bubbleLegend && bubbleLegend.ranges && bubbleLegend.ranges.length) {
717
- // Allow change the way of calculating ranges in update
718
- if (options.ranges.length) {
719
- options.autoRanges =
720
- !!options.ranges[0].autoRanges;
721
- }
722
- // Update bubbleLegend dimensions in each redraw
723
- legend.destroyItem(bubbleLegend);
724
- }
725
- // Create bubble legend
726
- if (bubbleSeriesIndex >= 0 &&
727
- legendOptions.enabled &&
728
- options.enabled) {
729
- options.seriesIndex = bubbleSeriesIndex;
730
- legend.bubbleLegend = new H.BubbleLegend(options, legend);
731
- legend.bubbleLegend.addToLegend(e.allItems);
732
- }
733
- });
734
- /**
735
- * Check if there is at least one visible bubble series.
736
- *
737
- * @private
738
- * @function Highcharts.Chart#getVisibleBubbleSeriesIndex
739
- * @return {number}
740
- * First visible bubble series index
741
- */
742
- Chart.prototype.getVisibleBubbleSeriesIndex = function () {
743
- var series = this.series, i = 0;
744
- while (i < series.length) {
745
- if (series[i] &&
746
- series[i].isBubble &&
747
- series[i].visible &&
748
- series[i].zData.length) {
749
- return i;
750
- }
751
- i++;
752
- }
753
- return -1;
754
- };
755
- /**
756
- * Calculate height for each row in legend.
757
- *
758
- * @private
759
- * @function Highcharts.Legend#getLinesHeights
760
- * @return {Array<Highcharts.Dictionary<number>>}
761
- * Informations about line height and items amount
762
- */
763
- Legend.prototype.getLinesHeights = function () {
764
- var items = this.allItems, lines = [], lastLine, length = items.length, i = 0, j = 0;
765
- for (i = 0; i < length; i++) {
766
- if (items[i].legendItemHeight) {
767
- // for bubbleLegend
768
- items[i].itemHeight = items[i].legendItemHeight;
769
- }
770
- if ( // Line break
771
- items[i] === items[length - 1] ||
772
- items[i + 1] &&
773
- items[i]._legendItemPos[1] !==
774
- items[i + 1]._legendItemPos[1]) {
775
- lines.push({ height: 0 });
776
- lastLine = lines[lines.length - 1];
777
- // Find the highest item in line
778
- for (j; j <= i; j++) {
779
- if (items[j].itemHeight > lastLine.height) {
780
- lastLine.height = items[j].itemHeight;
781
- }
782
- }
783
- lastLine.step = i;
784
- }
785
- }
786
- return lines;
787
- };
788
- /**
789
- * Correct legend items translation in case of different elements heights.
790
- *
791
- * @private
792
- * @function Highcharts.Legend#retranslateItems
793
- * @param {Array<Highcharts.Dictionary<number>>} lines
794
- * Informations about line height and items amount
795
- * @return {void}
796
- */
797
- Legend.prototype.retranslateItems = function (lines) {
798
- var items = this.allItems, orgTranslateX, orgTranslateY, movementX, rtl = this.options.rtl, actualLine = 0;
799
- items.forEach(function (item, index) {
800
- orgTranslateX = item.legendGroup.translateX;
801
- orgTranslateY = item._legendItemPos[1];
802
- movementX = item.movementX;
803
- if (movementX || (rtl && item.ranges)) {
804
- movementX = rtl ?
805
- orgTranslateX - item.options.maxSize / 2 :
806
- orgTranslateX + movementX;
807
- item.legendGroup.attr({ translateX: movementX });
808
- }
809
- if (index > lines[actualLine].step) {
810
- actualLine++;
811
- }
812
- item.legendGroup.attr({
813
- translateY: Math.round(orgTranslateY + lines[actualLine].height / 2)
814
- });
815
- item._legendItemPos[1] = orgTranslateY +
816
- lines[actualLine].height / 2;
817
- });
818
- };
819
- // Toggle bubble legend depending on the visible status of bubble series.
820
- addEvent(Series, 'legendItemClick', function () {
821
- var series = this, chart = series.chart, visible = series.visible, legend = series.chart.legend, status;
822
- if (legend && legend.bubbleLegend) {
823
- // Temporary correct 'visible' property
824
- series.visible = !visible;
825
- // Save future status for getRanges method
826
- series.ignoreSeries = visible;
827
- // Check if at lest one bubble series is visible
828
- status = chart.getVisibleBubbleSeriesIndex() >= 0;
829
- // Hide bubble legend if all bubble series are disabled
830
- if (legend.bubbleLegend.visible !== status) {
831
- // Show or hide bubble legend
832
- legend.update({
833
- bubbleLegend: { enabled: status }
834
- });
835
- legend.bubbleLegend.visible = status; // Restore default status
836
- }
837
- series.visible = visible;
838
- }
839
- });
840
- // If ranges are not specified, determine ranges from rendered bubble series
841
- // and render legend again.
842
- wrap(Chart.prototype, 'drawChartBox', function (proceed, options, callback) {
843
- var chart = this, legend = chart.legend, bubbleSeries = chart.getVisibleBubbleSeriesIndex() >= 0, bubbleLegendOptions, bubbleSizes;
844
- if (legend && legend.options.enabled && legend.bubbleLegend &&
845
- legend.options.bubbleLegend.autoRanges && bubbleSeries) {
846
- bubbleLegendOptions = legend.bubbleLegend.options;
847
- bubbleSizes = legend.bubbleLegend.predictBubbleSizes();
848
- legend.bubbleLegend.updateRanges(bubbleSizes[0], bubbleSizes[1]);
849
- // Disable animation on init
850
- if (!bubbleLegendOptions.placed) {
851
- legend.group.placed = false;
852
- legend.allItems.forEach(function (item) {
853
- item.legendGroup.translateY = null;
854
- });
855
- }
856
- // Create legend with bubbleLegend
857
- legend.render();
858
- chart.getMargins();
859
- chart.axes.forEach(function (axis) {
860
- if (axis.visible) { // #11448
861
- axis.render();
862
- }
863
- if (!bubbleLegendOptions.placed) {
864
- axis.setScale();
865
- axis.updateNames();
866
- // Disable axis animation on init
867
- objectEach(axis.ticks, function (tick) {
868
- tick.isNew = true;
869
- tick.isNewLabel = true;
870
- });
871
- }
872
- });
873
- bubbleLegendOptions.placed = true;
874
- // After recalculate axes, calculate margins again.
875
- chart.getMargins();
876
- // Call default 'drawChartBox' method.
877
- proceed.call(chart, options, callback);
878
- // Check bubble legend sizes and correct them if necessary.
879
- legend.bubbleLegend.correctSizes();
880
- // Correct items positions with different dimensions in legend.
881
- legend.retranslateItems(legend.getLinesHeights());
882
- }
883
- else {
884
- proceed.call(chart, options, callback);
885
- // Allow color change on static bubble legend after click on legend
886
- if (legend && legend.options.enabled && legend.bubbleLegend) {
887
- legend.render();
888
- legend.retranslateItems(legend.getLinesHeights());
889
- }
890
- }
891
- });
892
- H.BubbleLegend = BubbleLegend;
893
- export default H.BubbleLegend;