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,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v9.1.1 (2021-06-04)
2
+ * @license Highcharts JS v9.2.2 (2021-08-24)
3
3
  *
4
4
  * (c) 2017-2021 Highsoft AS
5
5
  * Authors: Jon Arild Nygard
@@ -27,70 +27,98 @@
27
27
  obj[path] = fn.apply(null, args);
28
28
  }
29
29
  }
30
- _registerModule(_modules, 'Mixins/Geometry.js', [], function () {
30
+ _registerModule(_modules, 'Core/Geometry/GeometryUtilities.js', [], function () {
31
31
  /* *
32
+ *
33
+ * (c) 2010-2021 Highsoft AS
34
+ *
35
+ * License: www.highcharts.com/license
32
36
  *
33
37
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
34
38
  *
35
39
  * */
36
- /**
37
- * Calculates the center between a list of points.
38
- * @private
39
- * @param {Array<Highcharts.PositionObject>} points
40
- * A list of points to calculate the center of.
41
- * @return {Highcharts.PositionObject}
42
- * Calculated center
43
- */
44
- var getCenterOfPoints = function getCenterOfPoints(points) {
40
+ /* *
41
+ *
42
+ * Namespace
43
+ *
44
+ * */
45
+ var GeometryUtilities;
46
+ (function (GeometryUtilities) {
47
+ /* *
48
+ *
49
+ * Functions
50
+ *
51
+ * */
52
+ /**
53
+ * Calculates the center between a list of points.
54
+ *
55
+ * @private
56
+ *
57
+ * @param {Array<Highcharts.PositionObject>} points
58
+ * A list of points to calculate the center of.
59
+ *
60
+ * @return {Highcharts.PositionObject}
61
+ * Calculated center
62
+ */
63
+ function getCenterOfPoints(points) {
45
64
  var sum = points.reduce(function (sum,
46
- point) {
47
- sum.x += point.x;
48
- sum.y += point.y;
49
- return sum;
50
- }, { x: 0, y: 0 });
51
- return {
52
- x: sum.x / points.length,
53
- y: sum.y / points.length
54
- };
55
- };
56
- /**
57
- * Calculates the distance between two points based on their x and y
58
- * coordinates.
59
- * @private
60
- * @param {Highcharts.PositionObject} p1
61
- * The x and y coordinates of the first point.
62
- * @param {Highcharts.PositionObject} p2
63
- * The x and y coordinates of the second point.
64
- * @return {number}
65
- * Returns the distance between the points.
66
- */
67
- var getDistanceBetweenPoints = function getDistanceBetweenPoints(p1,
68
- p2) {
65
+ point) {
66
+ sum.x += point.x;
67
+ sum.y += point.y;
68
+ return sum;
69
+ }, { x: 0, y: 0 });
70
+ return {
71
+ x: sum.x / points.length,
72
+ y: sum.y / points.length
73
+ };
74
+ }
75
+ GeometryUtilities.getCenterOfPoints = getCenterOfPoints;
76
+ /**
77
+ * Calculates the distance between two points based on their x and y
78
+ * coordinates.
79
+ *
80
+ * @private
81
+ *
82
+ * @param {Highcharts.PositionObject} p1
83
+ * The x and y coordinates of the first point.
84
+ *
85
+ * @param {Highcharts.PositionObject} p2
86
+ * The x and y coordinates of the second point.
87
+ *
88
+ * @return {number}
89
+ * Returns the distance between the points.
90
+ */
91
+ function getDistanceBetweenPoints(p1, p2) {
69
92
  return Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2));
70
- };
71
- /**
72
- * Calculates the angle between two points.
73
- * @todo add unit tests.
74
- * @private
75
- * @param {Highcharts.PositionObject} p1 The first point.
76
- * @param {Highcharts.PositionObject} p2 The second point.
77
- * @return {number} Returns the angle in radians.
78
- */
79
- var getAngleBetweenPoints = function getAngleBetweenPoints(p1,
80
- p2) {
81
- return Math.atan2(p2.x - p1.x,
82
- p2.y - p1.y);
83
- };
84
- var geometry = {
85
- getAngleBetweenPoints: getAngleBetweenPoints,
86
- getCenterOfPoints: getCenterOfPoints,
87
- getDistanceBetweenPoints: getDistanceBetweenPoints
88
- };
93
+ }
94
+ GeometryUtilities.getDistanceBetweenPoints = getDistanceBetweenPoints;
95
+ /**
96
+ * Calculates the angle between two points.
97
+ * @todo add unit tests.
98
+ * @private
99
+ * @param {Highcharts.PositionObject} p1 The first point.
100
+ * @param {Highcharts.PositionObject} p2 The second point.
101
+ * @return {number} Returns the angle in radians.
102
+ */
103
+ function getAngleBetweenPoints(p1, p2) {
104
+ return Math.atan2(p2.x - p1.x, p2.y - p1.y);
105
+ }
106
+ GeometryUtilities.getAngleBetweenPoints = getAngleBetweenPoints;
107
+ })(GeometryUtilities || (GeometryUtilities = {}));
108
+ /* *
109
+ *
110
+ * Default Export
111
+ *
112
+ * */
89
113
 
90
- return geometry;
114
+ return GeometryUtilities;
91
115
  });
92
- _registerModule(_modules, 'Mixins/GeometryCircles.js', [_modules['Mixins/Geometry.js']], function (Geometry) {
116
+ _registerModule(_modules, 'Core/Geometry/CircleUtilities.js', [_modules['Core/Geometry/GeometryUtilities.js']], function (Geometry) {
93
117
  /* *
118
+ *
119
+ * (c) 2010-2021 Highsoft AS
120
+ *
121
+ * License: www.highcharts.com/license
94
122
  *
95
123
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
96
124
  *
@@ -98,345 +126,407 @@
98
126
  var getAngleBetweenPoints = Geometry.getAngleBetweenPoints,
99
127
  getCenterOfPoints = Geometry.getCenterOfPoints,
100
128
  getDistanceBetweenPoints = Geometry.getDistanceBetweenPoints;
101
- /**
102
- * @private
103
- * @param {number} x
104
- * Number to round
105
- * @param {number} decimals
106
- * Number of decimals to round to
107
- * @return {number}
108
- * Rounded number
109
- */
110
- function round(x, decimals) {
111
- var a = Math.pow(10,
112
- decimals);
113
- return Math.round(x * a) / a;
114
- }
115
- /**
116
- * Calculates the area of a circle based on its radius.
117
- * @private
118
- * @param {number} r
119
- * The radius of the circle.
120
- * @return {number}
121
- * Returns the area of the circle.
122
- */
123
- function getAreaOfCircle(r) {
124
- if (r <= 0) {
125
- throw new Error('radius of circle must be a positive number.');
129
+ /* *
130
+ *
131
+ * Namespace
132
+ *
133
+ * */
134
+ var CircleUtilities;
135
+ (function (CircleUtilities) {
136
+ /* *
137
+ *
138
+ * Functions
139
+ *
140
+ * */
141
+ /**
142
+ * @private
143
+ *
144
+ * @param {number} x
145
+ * Number to round
146
+ *
147
+ * @param {number} decimals
148
+ * Number of decimals to round to
149
+ *
150
+ * @return {number}
151
+ * Rounded number
152
+ */
153
+ function round(x, decimals) {
154
+ var a = Math.pow(10,
155
+ decimals);
156
+ return Math.round(x * a) / a;
126
157
  }
127
- return Math.PI * r * r;
128
- }
129
- /**
130
- * Calculates the area of a circular segment based on the radius of the circle
131
- * and the height of the segment.
132
- * See http://mathworld.wolfram.com/CircularSegment.html
133
- * @private
134
- * @param {number} r
135
- * The radius of the circle.
136
- * @param {number} h
137
- * The height of the circular segment.
138
- * @return {number}
139
- * Returns the area of the circular segment.
140
- */
141
- function getCircularSegmentArea(r, h) {
142
- return r * r * Math.acos(1 - h / r) - (r - h) * Math.sqrt(h * (2 * r - h));
143
- }
144
- /**
145
- * Calculates the area of overlap between two circles based on their radiuses
146
- * and the distance between them.
147
- * See http://mathworld.wolfram.com/Circle-CircleIntersection.html
148
- * @private
149
- * @param {number} r1
150
- * Radius of the first circle.
151
- * @param {number} r2
152
- * Radius of the second circle.
153
- * @param {number} d
154
- * The distance between the two circles.
155
- * @return {number}
156
- * Returns the area of overlap between the two circles.
157
- */
158
- function getOverlapBetweenCircles(r1, r2, d) {
159
- var overlap = 0;
160
- // If the distance is larger than the sum of the radiuses then the circles
161
- // does not overlap.
162
- if (d < r1 + r2) {
163
- if (d <= Math.abs(r2 - r1)) {
164
- // If the circles are completely overlapping, then the overlap
165
- // equals the area of the smallest circle.
166
- overlap = getAreaOfCircle(r1 < r2 ? r1 : r2);
158
+ CircleUtilities.round = round;
159
+ /**
160
+ * Calculates the area of a circle based on its radius.
161
+ *
162
+ * @private
163
+ *
164
+ * @param {number} r
165
+ * The radius of the circle.
166
+ *
167
+ * @return {number}
168
+ * Returns the area of the circle.
169
+ */
170
+ function getAreaOfCircle(r) {
171
+ if (r <= 0) {
172
+ throw new Error('radius of circle must be a positive number.');
167
173
  }
168
- else {
169
- // Height of first triangle segment.
170
- var d1 = (r1 * r1 - r2 * r2 + d * d) / (2 * d),
171
- // Height of second triangle segment.
172
- d2 = d - d1;
173
- overlap = (getCircularSegmentArea(r1, r1 - d1) +
174
- getCircularSegmentArea(r2, r2 - d2));
174
+ return Math.PI * r * r;
175
+ }
176
+ CircleUtilities.getAreaOfCircle = getAreaOfCircle;
177
+ /**
178
+ * Calculates the area of a circular segment based on the radius of the
179
+ * circle and the height of the segment.
180
+ *
181
+ * @see http://mathworld.wolfram.com/CircularSegment.html
182
+ *
183
+ * @private
184
+ *
185
+ * @param {number} r
186
+ * The radius of the circle.
187
+ *
188
+ * @param {number} h
189
+ * The height of the circular segment.
190
+ *
191
+ * @return {number}
192
+ * Returns the area of the circular segment.
193
+ */
194
+ function getCircularSegmentArea(r, h) {
195
+ return r * r * Math.acos(1 - h / r) - (r - h) * Math.sqrt(h * (2 * r - h));
196
+ }
197
+ CircleUtilities.getCircularSegmentArea = getCircularSegmentArea;
198
+ /**
199
+ * Calculates the area of overlap between two circles based on their
200
+ * radiuses and the distance between them.
201
+ *
202
+ * @see http://mathworld.wolfram.com/Circle-CircleIntersection.html
203
+ *
204
+ * @private
205
+ *
206
+ * @param {number} r1
207
+ * Radius of the first circle.
208
+ *
209
+ * @param {number} r2
210
+ * Radius of the second circle.
211
+ *
212
+ * @param {number} d
213
+ * The distance between the two circles.
214
+ *
215
+ * @return {number}
216
+ * Returns the area of overlap between the two circles.
217
+ */
218
+ function getOverlapBetweenCircles(r1, r2, d) {
219
+ var overlap = 0;
220
+ // If the distance is larger than the sum of the radiuses then the
221
+ // circles does not overlap.
222
+ if (d < r1 + r2) {
223
+ if (d <= Math.abs(r2 - r1)) {
224
+ // If the circles are completely overlapping, then the overlap
225
+ // equals the area of the smallest circle.
226
+ overlap = getAreaOfCircle(r1 < r2 ? r1 : r2);
227
+ }
228
+ else {
229
+ // Height of first triangle segment.
230
+ var d1 = (r1 * r1 - r2 * r2 + d * d) / (2 * d),
231
+ // Height of second triangle segment.
232
+ d2 = d - d1;
233
+ overlap = (getCircularSegmentArea(r1, r1 - d1) +
234
+ getCircularSegmentArea(r2, r2 - d2));
235
+ }
236
+ // Round the result to two decimals.
237
+ overlap = round(overlap, 14);
175
238
  }
176
- // Round the result to two decimals.
177
- overlap = round(overlap, 14);
239
+ return overlap;
178
240
  }
179
- return overlap;
180
- }
181
- /**
182
- * Calculates the intersection points of two circles.
183
- *
184
- * NOTE: does not handle floating errors well.
185
- * @private
186
- * @param {Highcharts.CircleObject} c1
187
- * The first circle.
188
- * @param {Highcharts.CircleObject} c2
189
- * The second sircle.
190
- * @return {Array<Highcharts.PositionObject>}
191
- * Returns the resulting intersection points.
192
- */
193
- function getCircleCircleIntersection(c1, c2) {
194
- var d = getDistanceBetweenPoints(c1,
195
- c2),
196
- r1 = c1.r,
197
- r2 = c2.r;
198
- var points = [];
199
- if (d < r1 + r2 && d > Math.abs(r1 - r2)) {
200
- // If the circles are overlapping, but not completely overlapping, then
201
- // it exists intersecting points.
202
- var r1Square = r1 * r1,
203
- r2Square = r2 * r2,
204
- // d^2 - r^2 + R^2 / 2d
205
- x = (r1Square - r2Square + d * d) / (2 * d),
206
- // y^2 = R^2 - x^2
207
- y = Math.sqrt(r1Square - x * x),
208
- x1 = c1.x,
209
- x2 = c2.x,
210
- y1 = c1.y,
211
- y2 = c2.y,
212
- x0 = x1 + x * (x2 - x1) / d,
213
- y0 = y1 + x * (y2 - y1) / d,
214
- rx = -(y2 - y1) * (y / d),
215
- ry = -(x2 - x1) * (y / d);
216
- points = [
217
- { x: round(x0 + rx, 14), y: round(y0 - ry, 14) },
218
- { x: round(x0 - rx, 14), y: round(y0 + ry, 14) }
219
- ];
241
+ CircleUtilities.getOverlapBetweenCircles = getOverlapBetweenCircles;
242
+ /**
243
+ * Calculates the intersection points of two circles.
244
+ *
245
+ * NOTE: does not handle floating errors well.
246
+ *
247
+ * @private
248
+ *
249
+ * @param {Highcharts.CircleObject} c1
250
+ * The first circle.
251
+ *
252
+ * @param {Highcharts.CircleObject} c2
253
+ * The second sircle.
254
+ *
255
+ * @return {Array<Highcharts.PositionObject>}
256
+ * Returns the resulting intersection points.
257
+ */
258
+ function getCircleCircleIntersection(c1, c2) {
259
+ var d = getDistanceBetweenPoints(c1,
260
+ c2),
261
+ r1 = c1.r,
262
+ r2 = c2.r;
263
+ var points = [];
264
+ if (d < r1 + r2 && d > Math.abs(r1 - r2)) {
265
+ // If the circles are overlapping, but not completely overlapping,
266
+ // then it exists intersecting points.
267
+ var r1Square = r1 * r1,
268
+ r2Square = r2 * r2,
269
+ // d^2 - r^2 + R^2 / 2d
270
+ x = (r1Square - r2Square + d * d) / (2 * d),
271
+ // y^2 = R^2 - x^2
272
+ y = Math.sqrt(r1Square - x * x),
273
+ x1 = c1.x,
274
+ x2 = c2.x,
275
+ y1 = c1.y,
276
+ y2 = c2.y,
277
+ x0 = x1 + x * (x2 - x1) / d,
278
+ y0 = y1 + x * (y2 - y1) / d,
279
+ rx = -(y2 - y1) * (y / d),
280
+ ry = -(x2 - x1) * (y / d);
281
+ points = [
282
+ { x: round(x0 + rx, 14), y: round(y0 - ry, 14) },
283
+ { x: round(x0 - rx, 14), y: round(y0 + ry, 14) }
284
+ ];
285
+ }
286
+ return points;
220
287
  }
221
- return points;
222
- }
223
- /**
224
- * Calculates all the intersection points for between a list of circles.
225
- * @private
226
- * @param {Array<Highcharts.CircleObject>} circles
227
- * The circles to calculate the points from.
228
- * @return {Array<Highcharts.GeometryObject>}
229
- * Returns a list of intersection points.
230
- */
231
- function getCirclesIntersectionPoints(circles) {
232
- return circles.reduce(function (points, c1, i, arr) {
233
- var additional = arr.slice(i + 1)
234
- .reduce(function (points,
235
- c2,
236
- j) {
237
- var indexes = [i,
238
- j + i + 1];
239
- return points.concat(getCircleCircleIntersection(c1, c2)
240
- .map(function (p) {
241
- p.indexes = indexes;
242
- return p;
243
- }));
288
+ CircleUtilities.getCircleCircleIntersection = getCircleCircleIntersection;
289
+ /**
290
+ * Calculates all the intersection points for between a list of circles.
291
+ *
292
+ * @private
293
+ *
294
+ * @param {Array<Highcharts.CircleObject>} circles
295
+ * The circles to calculate the points from.
296
+ *
297
+ * @return {Array<Highcharts.GeometryObject>}
298
+ * Returns a list of intersection points.
299
+ */
300
+ function getCirclesIntersectionPoints(circles) {
301
+ return circles.reduce(function (points, c1, i, arr) {
302
+ var additional = arr
303
+ .slice(i + 1)
304
+ .reduce(function (points,
305
+ c2,
306
+ j,
307
+ arr) {
308
+ var indexes = [i,
309
+ j + i + 1];
310
+ return points.concat(getCircleCircleIntersection(c1, c2).map(function (p) {
311
+ p.indexes = indexes;
312
+ return p;
313
+ }));
314
+ }, []);
315
+ return points.concat(additional);
244
316
  }, []);
245
- return points.concat(additional);
246
- }, []);
247
- }
248
- /**
249
- * Tests wether the first circle is completely overlapping the second circle.
250
- *
251
- * @private
252
- * @param {Highcharts.CircleObject} circle1 The first circle.
253
- * @param {Highcharts.CircleObject} circle2 The The second circle.
254
- * @return {boolean} Returns true if circle1 is completely overlapping circle2,
255
- * false if not.
256
- */
257
- function isCircle1CompletelyOverlappingCircle2(circle1, circle2) {
258
- return getDistanceBetweenPoints(circle1, circle2) + circle2.r <
259
- circle1.r + 1e-10;
260
- }
261
- /**
262
- * Tests wether a point lies within a given circle.
263
- * @private
264
- * @param {Highcharts.PositionObject} point
265
- * The point to test for.
266
- * @param {Highcharts.CircleObject} circle
267
- * The circle to test if the point is within.
268
- * @return {boolean}
269
- * Returns true if the point is inside, false if outside.
270
- */
271
- function isPointInsideCircle(point, circle) {
272
- return getDistanceBetweenPoints(point, circle) <= circle.r + 1e-10;
273
- }
274
- /**
275
- * Tests wether a point lies within a set of circles.
276
- * @private
277
- * @param {Highcharts.PositionObject} point
278
- * The point to test.
279
- * @param {Array<Highcharts.CircleObject>} circles
280
- * The list of circles to test against.
281
- * @return {boolean}
282
- * Returns true if the point is inside all the circles, false if not.
283
- */
284
- function isPointInsideAllCircles(point, circles) {
285
- return !circles.some(function (circle) {
286
- return !isPointInsideCircle(point, circle);
287
- });
288
- }
289
- /**
290
- * Tests wether a point lies outside a set of circles.
291
- *
292
- * TODO: add unit tests.
293
- * @private
294
- * @param {Highcharts.PositionObject} point
295
- * The point to test.
296
- * @param {Array<Highcharts.CircleObject>} circles
297
- * The list of circles to test against.
298
- * @return {boolean}
299
- * Returns true if the point is outside all the circles, false if not.
300
- */
301
- function isPointOutsideAllCircles(point, circles) {
302
- return !circles.some(function (circle) {
303
- return isPointInsideCircle(point, circle);
304
- });
305
- }
306
- /**
307
- * Calculates the points for the polygon of the intersection area between a set
308
- * of circles.
309
- *
310
- * @private
311
- * @param {Array<Highcharts.CircleObject>} circles
312
- * List of circles to calculate polygon of.
313
- * @return {Array<Highcharts.GeometryObject>} Return list of points in the
314
- * intersection polygon.
315
- */
316
- function getCirclesIntersectionPolygon(circles) {
317
- return getCirclesIntersectionPoints(circles)
318
- .filter(function (p) {
319
- return isPointInsideAllCircles(p, circles);
320
- });
321
- }
322
- /**
323
- * Calculate the path for the area of overlap between a set of circles.
324
- * @todo handle cases with only 1 or 0 arcs.
325
- * @private
326
- * @param {Array<Highcharts.CircleObject>} circles
327
- * List of circles to calculate area of.
328
- * @return {Highcharts.GeometryIntersectionObject|undefined}
329
- * Returns the path for the area of overlap. Returns an empty string if
330
- * there are no intersection between all the circles.
331
- */
332
- function getAreaOfIntersectionBetweenCircles(circles) {
333
- var intersectionPoints = getCirclesIntersectionPolygon(circles),
334
- result;
335
- if (intersectionPoints.length > 1) {
336
- // Calculate the center of the intersection points.
337
- var center_1 = getCenterOfPoints(intersectionPoints);
338
- intersectionPoints = intersectionPoints
339
- // Calculate the angle between the center and the points.
340
- .map(function (p) {
341
- p.angle = getAngleBetweenPoints(center_1, p);
342
- return p;
343
- })
344
- // Sort the points by the angle to the center.
345
- .sort(function (a, b) {
346
- return b.angle - a.angle;
317
+ }
318
+ CircleUtilities.getCirclesIntersectionPoints = getCirclesIntersectionPoints;
319
+ /**
320
+ * Tests wether the first circle is completely overlapping the second
321
+ * circle.
322
+ *
323
+ * @private
324
+ *
325
+ * @param {Highcharts.CircleObject} circle1
326
+ * The first circle.
327
+ *
328
+ * @param {Highcharts.CircleObject} circle2
329
+ * The The second circle.
330
+ *
331
+ * @return {boolean}
332
+ * Returns true if circle1 is completely overlapping circle2, false if not.
333
+ */
334
+ function isCircle1CompletelyOverlappingCircle2(circle1, circle2) {
335
+ return getDistanceBetweenPoints(circle1, circle2) + circle2.r < circle1.r + 1e-10;
336
+ }
337
+ CircleUtilities.isCircle1CompletelyOverlappingCircle2 = isCircle1CompletelyOverlappingCircle2;
338
+ /**
339
+ * Tests wether a point lies within a given circle.
340
+ * @private
341
+ * @param {Highcharts.PositionObject} point
342
+ * The point to test for.
343
+ *
344
+ * @param {Highcharts.CircleObject} circle
345
+ * The circle to test if the point is within.
346
+ *
347
+ * @return {boolean}
348
+ * Returns true if the point is inside, false if outside.
349
+ */
350
+ function isPointInsideCircle(point, circle) {
351
+ return getDistanceBetweenPoints(point, circle) <= circle.r + 1e-10;
352
+ }
353
+ CircleUtilities.isPointInsideCircle = isPointInsideCircle;
354
+ /**
355
+ * Tests wether a point lies within a set of circles.
356
+ *
357
+ * @private
358
+ *
359
+ * @param {Highcharts.PositionObject} point
360
+ * The point to test.
361
+ *
362
+ * @param {Array<Highcharts.CircleObject>} circles
363
+ * The list of circles to test against.
364
+ *
365
+ * @return {boolean}
366
+ * Returns true if the point is inside all the circles, false if not.
367
+ */
368
+ function isPointInsideAllCircles(point, circles) {
369
+ return !circles.some(function (circle) {
370
+ return !isPointInsideCircle(point, circle);
347
371
  });
348
- var startPoint = intersectionPoints[intersectionPoints.length - 1];
349
- var arcs = intersectionPoints
350
- .reduce(function (data,
351
- p1) {
352
- var startPoint = data.startPoint,
353
- midPoint = getCenterOfPoints([startPoint,
354
- p1]);
355
- // Calculate the arc from the intersection points and their
356
- // circles.
357
- var arc = p1.indexes
358
- // Filter out circles that are not included in both
359
- // intersection points.
360
- .filter(function (index) {
361
- return startPoint.indexes.indexOf(index) > -1;
372
+ }
373
+ CircleUtilities.isPointInsideAllCircles = isPointInsideAllCircles;
374
+ /**
375
+ * Tests wether a point lies outside a set of circles.
376
+ *
377
+ * TODO: add unit tests.
378
+ *
379
+ * @private
380
+ *
381
+ * @param {Highcharts.PositionObject} point
382
+ * The point to test.
383
+ *
384
+ * @param {Array<Highcharts.CircleObject>} circles
385
+ * The list of circles to test against.
386
+ *
387
+ * @return {boolean}
388
+ * Returns true if the point is outside all the circles, false if not.
389
+ */
390
+ function isPointOutsideAllCircles(point, circles) {
391
+ return !circles.some(function (circle) {
392
+ return isPointInsideCircle(point, circle);
393
+ });
394
+ }
395
+ CircleUtilities.isPointOutsideAllCircles = isPointOutsideAllCircles;
396
+ /**
397
+ * Calculates the points for the polygon of the intersection area between
398
+ * a set of circles.
399
+ *
400
+ * @private
401
+ *
402
+ * @param {Array<Highcharts.CircleObject>} circles
403
+ * List of circles to calculate polygon of.
404
+ *
405
+ * @return {Array<Highcharts.GeometryObject>}
406
+ * Return list of points in the intersection polygon.
407
+ */
408
+ function getCirclesIntersectionPolygon(circles) {
409
+ return getCirclesIntersectionPoints(circles)
410
+ .filter(function (p) {
411
+ return isPointInsideAllCircles(p, circles);
412
+ });
413
+ }
414
+ CircleUtilities.getCirclesIntersectionPolygon = getCirclesIntersectionPolygon;
415
+ /**
416
+ * Calculate the path for the area of overlap between a set of circles.
417
+ *
418
+ * @todo handle cases with only 1 or 0 arcs.
419
+ *
420
+ * @private
421
+ *
422
+ * @param {Array<Highcharts.CircleObject>} circles
423
+ * List of circles to calculate area of.
424
+ *
425
+ * @return {Highcharts.GeometryIntersectionObject|undefined}
426
+ * Returns the path for the area of overlap. Returns an empty string if
427
+ * there are no intersection between all the circles.
428
+ */
429
+ function getAreaOfIntersectionBetweenCircles(circles) {
430
+ var intersectionPoints = getCirclesIntersectionPolygon(circles),
431
+ result;
432
+ if (intersectionPoints.length > 1) {
433
+ // Calculate the center of the intersection points.
434
+ var center_1 = getCenterOfPoints(intersectionPoints);
435
+ intersectionPoints = intersectionPoints
436
+ // Calculate the angle between the center and the points.
437
+ .map(function (p) {
438
+ p.angle = getAngleBetweenPoints(center_1, p);
439
+ return p;
362
440
  })
363
- // Iterate the circles of the intersection points and
364
- // calculate arcs.
365
- .reduce(function (arc, index) {
366
- var circle = circles[index],
367
- angle1 = getAngleBetweenPoints(circle,
368
- p1),
369
- angle2 = getAngleBetweenPoints(circle,
370
- startPoint),
371
- angleDiff = angle2 - angle1 +
372
- (angle2 < angle1 ? 2 * Math.PI : 0),
373
- angle = angle2 - angleDiff / 2;
374
- var width = getDistanceBetweenPoints(midPoint, {
375
- x: circle.x + circle.r * Math.sin(angle),
376
- y: circle.y + circle.r * Math.cos(angle)
377
- });
378
- var r = circle.r;
379
- // Width can sometimes become to large due to floating
380
- // point errors
381
- if (width > r * 2) {
382
- width = r * 2;
383
- }
384
- // Get the arc with the smallest width.
385
- if (!arc || arc.width > width) {
386
- arc = {
387
- r: r,
388
- largeArc: width > r ? 1 : 0,
389
- width: width,
390
- x: p1.x,
391
- y: p1.y
392
- };
441
+ // Sort the points by the angle to the center.
442
+ .sort(function (a, b) {
443
+ return b.angle - a.angle;
444
+ });
445
+ var startPoint = intersectionPoints[intersectionPoints.length - 1];
446
+ var arcs = intersectionPoints
447
+ .reduce(function (data,
448
+ p1) {
449
+ var startPoint = data.startPoint,
450
+ midPoint = getCenterOfPoints([startPoint,
451
+ p1]);
452
+ // Calculate the arc from the intersection points and their
453
+ // circles.
454
+ var arc = p1.indexes
455
+ // Filter out circles that are not included in both
456
+ // intersection points.
457
+ .filter(function (index) {
458
+ return startPoint.indexes.indexOf(index) > -1;
459
+ })
460
+ // Iterate the circles of the intersection points and
461
+ // calculate arcs.
462
+ .reduce(function (arc, index) {
463
+ var circle = circles[index],
464
+ angle1 = getAngleBetweenPoints(circle,
465
+ p1),
466
+ angle2 = getAngleBetweenPoints(circle,
467
+ startPoint),
468
+ angleDiff = angle2 - angle1 +
469
+ (angle2 < angle1 ? 2 * Math.PI : 0),
470
+ angle = angle2 - angleDiff / 2;
471
+ var width = getDistanceBetweenPoints(midPoint, {
472
+ x: circle.x + circle.r * Math.sin(angle),
473
+ y: circle.y + circle.r * Math.cos(angle)
474
+ });
475
+ var r = circle.r;
476
+ // Width can sometimes become to large due to
477
+ // floating point errors
478
+ if (width > r * 2) {
479
+ width = r * 2;
480
+ }
481
+ // Get the arc with the smallest width.
482
+ if (!arc || arc.width > width) {
483
+ arc = {
484
+ r: r,
485
+ largeArc: width > r ? 1 : 0,
486
+ width: width,
487
+ x: p1.x,
488
+ y: p1.y
489
+ };
490
+ }
491
+ // Return the chosen arc.
492
+ return arc;
493
+ }, null);
494
+ // If we find an arc then add it to the list and update p2.
495
+ if (arc) {
496
+ var r = arc.r;
497
+ data.arcs.push(['A', r, r, 0, arc.largeArc, 1, arc.x, arc.y]);
498
+ data.startPoint = p1;
393
499
  }
394
- // Return the chosen arc.
395
- return arc;
396
- }, null);
397
- // If we find an arc then add it to the list and update p2.
398
- if (arc) {
399
- var r = arc.r;
400
- data.arcs.push(['A', r, r, 0, arc.largeArc, 1, arc.x, arc.y]);
401
- data.startPoint = p1;
500
+ return data;
501
+ }, {
502
+ startPoint: startPoint,
503
+ arcs: []
504
+ }).arcs;
505
+ if (arcs.length === 0) {
506
+ // empty
507
+ }
508
+ else if (arcs.length === 1) {
509
+ // empty
510
+ }
511
+ else {
512
+ arcs.unshift(['M', startPoint.x, startPoint.y]);
513
+ result = {
514
+ center: center_1,
515
+ d: arcs
516
+ };
402
517
  }
403
- return data;
404
- }, {
405
- startPoint: startPoint,
406
- arcs: []
407
- }).arcs;
408
- if (arcs.length === 0) {
409
- // empty
410
- }
411
- else if (arcs.length === 1) {
412
- // empty
413
- }
414
- else {
415
- arcs.unshift(['M', startPoint.x, startPoint.y]);
416
- result = {
417
- center: center_1,
418
- d: arcs
419
- };
420
518
  }
519
+ return result;
421
520
  }
422
- return result;
423
- }
424
- var geometryCircles = {
425
- getAreaOfCircle: getAreaOfCircle,
426
- getAreaOfIntersectionBetweenCircles: getAreaOfIntersectionBetweenCircles,
427
- getCircleCircleIntersection: getCircleCircleIntersection,
428
- getCirclesIntersectionPoints: getCirclesIntersectionPoints,
429
- getCirclesIntersectionPolygon: getCirclesIntersectionPolygon,
430
- getCircularSegmentArea: getCircularSegmentArea,
431
- getOverlapBetweenCircles: getOverlapBetweenCircles,
432
- isCircle1CompletelyOverlappingCircle2: isCircle1CompletelyOverlappingCircle2,
433
- isPointInsideCircle: isPointInsideCircle,
434
- isPointInsideAllCircles: isPointInsideAllCircles,
435
- isPointOutsideAllCircles: isPointOutsideAllCircles,
436
- round: round
437
- };
521
+ CircleUtilities.getAreaOfIntersectionBetweenCircles = getAreaOfIntersectionBetweenCircles;
522
+ })(CircleUtilities || (CircleUtilities = {}));
523
+ /* *
524
+ *
525
+ * Default Export
526
+ *
527
+ * */
438
528
 
439
- return geometryCircles;
529
+ return CircleUtilities;
440
530
  });
441
531
  _registerModule(_modules, 'Mixins/NelderMead.js', [], function () {
442
532
  /* *
@@ -757,7 +847,7 @@
757
847
 
758
848
  return VennPoint;
759
849
  });
760
- _registerModule(_modules, 'Series/Venn/VennUtils.js', [_modules['Mixins/GeometryCircles.js'], _modules['Mixins/Geometry.js'], _modules['Mixins/NelderMead.js'], _modules['Core/Utilities.js']], function (GeometryCirclesModule, GeometryMixin, NelderMeadMixin, U) {
850
+ _registerModule(_modules, 'Series/Venn/VennUtils.js', [_modules['Core/Geometry/CircleUtilities.js'], _modules['Core/Geometry/GeometryUtilities.js'], _modules['Mixins/NelderMead.js'], _modules['Core/Utilities.js']], function (CU, GU, NelderMeadMixin, U) {
761
851
  /* *
762
852
  *
763
853
  * Experimental Highcharts module which enables visualization of a Venn
@@ -774,13 +864,13 @@
774
864
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
775
865
  *
776
866
  * */
777
- var getAreaOfCircle = GeometryCirclesModule.getAreaOfCircle,
778
- getCircleCircleIntersection = GeometryCirclesModule.getCircleCircleIntersection,
779
- getOverlapBetweenCirclesByDistance = GeometryCirclesModule.getOverlapBetweenCircles,
780
- isPointInsideAllCircles = GeometryCirclesModule.isPointInsideAllCircles,
781
- isPointInsideCircle = GeometryCirclesModule.isPointInsideCircle,
782
- isPointOutsideAllCircles = GeometryCirclesModule.isPointOutsideAllCircles;
783
- var getDistanceBetweenPoints = GeometryMixin.getDistanceBetweenPoints;
867
+ var getAreaOfCircle = CU.getAreaOfCircle,
868
+ getCircleCircleIntersection = CU.getCircleCircleIntersection,
869
+ getOverlapBetweenCirclesByDistance = CU.getOverlapBetweenCircles,
870
+ isPointInsideAllCircles = CU.isPointInsideAllCircles,
871
+ isPointInsideCircle = CU.isPointInsideCircle,
872
+ isPointOutsideAllCircles = CU.isPointOutsideAllCircles;
873
+ var getDistanceBetweenPoints = GU.getDistanceBetweenPoints;
784
874
  var extend = U.extend,
785
875
  isArray = U.isArray,
786
876
  isNumber = U.isNumber,
@@ -798,8 +888,8 @@
798
888
  * Properties
799
889
  *
800
890
  * */
801
- VennUtils.geometry = GeometryMixin;
802
- VennUtils.geometryCircles = GeometryCirclesModule;
891
+ VennUtils.geometry = GU;
892
+ VennUtils.geometryCircles = CU;
803
893
  VennUtils.nelderMead = NelderMeadMixin;
804
894
  /* *
805
895
  *
@@ -823,18 +913,18 @@
823
913
  // Calculate the amount of overlap per set.
824
914
  var mapOfIdToProps = relations
825
915
  // Filter out relations consisting of 2 sets.
826
- .filter(function (relation) {
827
- return relation.sets.length === 2;
828
- })
829
- // Sum up the amount of overlap for each set.
830
- .reduce(function (map, relation) {
831
- var sets = relation.sets;
832
- sets.forEach(function (set, i, arr) {
833
- if (!isObject(map[set])) {
834
- map[set] = {
835
- overlapping: {},
836
- totalOverlap: 0
837
- };
916
+ .filter(function (relation) { return (relation.sets.length === 2); })
917
+ // Sum up the amount of overlap for each set.
918
+ .reduce(function (map,
919
+ relation) {
920
+ relation.sets.forEach(function (set,
921
+ i,
922
+ arr) {
923
+ if (!isObject(map[set])) {
924
+ map[set] = {
925
+ overlapping: {},
926
+ totalOverlap: 0
927
+ };
838
928
  }
839
929
  map[set].totalOverlap += relation.value;
840
930
  map[set].overlapping[arr[1 - i]] = relation.value;
@@ -968,13 +1058,13 @@
968
1058
  */
969
1059
  function getLabelWidth(pos, internal, external) {
970
1060
  var radius = internal.reduce(function (min,
971
- circle) {
972
- return Math.min(circle.r,
973
- min);
974
- }, Infinity),
975
- // Filter out external circles that are completely overlapping.
976
- filteredExternals = external.filter(function (circle) {
977
- return !isPointInsideCircle(pos, circle);
1061
+ circle) { return Math.min(circle.r,
1062
+ min); },
1063
+ Infinity),
1064
+ // Filter out external circles that are completely overlapping.
1065
+ filteredExternals = external.filter(function (circle) {
1066
+ return !isPointInsideCircle(pos,
1067
+ circle);
978
1068
  });
979
1069
  var findDistance = function (maxDistance,
980
1070
  direction) {
@@ -1128,8 +1218,7 @@
1128
1218
  var circle = set.circle,
1129
1219
  radius = circle.r,
1130
1220
  overlapping = set.overlapping;
1131
- var bestPosition = positionedSets
1132
- .reduce(function (best,
1221
+ var bestPosition = positionedSets.reduce(function (best,
1133
1222
  positionedSet,
1134
1223
  i) {
1135
1224
  var positionedCircle = positionedSet.circle,
@@ -1305,7 +1394,7 @@
1305
1394
 
1306
1395
  return VennUtils;
1307
1396
  });
1308
- _registerModule(_modules, 'Series/Venn/VennSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Mixins/Geometry.js'], _modules['Mixins/GeometryCircles.js'], _modules['Mixins/NelderMead.js'], _modules['Core/Color/Palette.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Venn/VennPoint.js'], _modules['Series/Venn/VennUtils.js'], _modules['Core/Utilities.js']], function (A, Color, GeometryMixin, GeometryCirclesModule, NelderMeadMixin, palette, SeriesRegistry, VennPoint, VennUtils, U) {
1397
+ _registerModule(_modules, 'Series/Venn/VennSeries.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Geometry/CircleUtilities.js'], _modules['Core/Geometry/GeometryUtilities.js'], _modules['Mixins/NelderMead.js'], _modules['Core/Color/Palette.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Venn/VennPoint.js'], _modules['Series/Venn/VennUtils.js'], _modules['Core/Utilities.js']], function (A, Color, CU, GU, NelderMeadMixin, palette, SeriesRegistry, VennPoint, VennUtils, U) {
1309
1398
  /* *
1310
1399
  *
1311
1400
  * Experimental Highcharts module which enables visualization of a Venn
@@ -1340,17 +1429,12 @@
1340
1429
  })();
1341
1430
  var animObject = A.animObject;
1342
1431
  var color = Color.parse;
1343
- var getCenterOfPoints = GeometryMixin.getCenterOfPoints,
1344
- getDistanceBetweenPoints = GeometryMixin.getDistanceBetweenPoints;
1345
- var getAreaOfCircle = GeometryCirclesModule.getAreaOfCircle,
1346
- getAreaOfIntersectionBetweenCircles = GeometryCirclesModule.getAreaOfIntersectionBetweenCircles,
1347
- getCircleCircleIntersection = GeometryCirclesModule.getCircleCircleIntersection,
1348
- getCirclesIntersectionPolygon = GeometryCirclesModule.getCirclesIntersectionPolygon,
1349
- getOverlapBetweenCirclesByDistance = GeometryCirclesModule.getOverlapBetweenCircles,
1350
- isCircle1CompletelyOverlappingCircle2 = GeometryCirclesModule.isCircle1CompletelyOverlappingCircle2,
1351
- isPointInsideAllCircles = GeometryCirclesModule.isPointInsideAllCircles,
1352
- isPointInsideCircle = GeometryCirclesModule.isPointInsideCircle,
1353
- isPointOutsideAllCircles = GeometryCirclesModule.isPointOutsideAllCircles;
1432
+ var getAreaOfIntersectionBetweenCircles = CU.getAreaOfIntersectionBetweenCircles,
1433
+ getCirclesIntersectionPolygon = CU.getCirclesIntersectionPolygon,
1434
+ isCircle1CompletelyOverlappingCircle2 = CU.isCircle1CompletelyOverlappingCircle2,
1435
+ isPointInsideAllCircles = CU.isPointInsideAllCircles,
1436
+ isPointOutsideAllCircles = CU.isPointOutsideAllCircles;
1437
+ var getCenterOfPoints = GU.getCenterOfPoints;
1354
1438
  var nelderMead = NelderMeadMixin.nelderMead;
1355
1439
  var ScatterSeries = SeriesRegistry.seriesTypes.scatter;
1356
1440
  var addEvent = U.addEvent,