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.
- package/bower.json +1 -1
- package/css/annotations/popup.css +29 -28
- package/css/annotations/popup.scss +29 -27
- package/css/highcharts.css +15 -0
- package/css/highcharts.scss +12 -0
- package/css/stocktools/gui.css +1 -0
- package/css/stocktools/gui.scss +1 -0
- package/css/themes/dark-unica.css +15 -0
- package/css/themes/grid-light.css +15 -0
- package/css/themes/sand-signika.css +15 -0
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +8 -2
- package/es-modules/Accessibility/Components/LegendComponent.js +19 -8
- package/es-modules/Accessibility/Components/MenuComponent.js +19 -13
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +4 -8
- package/es-modules/Accessibility/FocusBorder.js +1 -3
- package/es-modules/Accessibility/Options/LangOptions.js +3 -3
- package/es-modules/Accessibility/Utils/Announcer.js +22 -5
- package/es-modules/Accessibility/Utils/ChartUtilities.js +6 -1
- package/es-modules/Core/Animation/AnimationUtilities.js +12 -4
- package/es-modules/Core/Animation/Fx.js +15 -12
- package/es-modules/Core/Axis/Axis.js +25 -13
- package/es-modules/Core/Axis/AxisDefaults.js +0 -1
- package/es-modules/Core/Axis/BrokenAxis.js +32 -15
- package/es-modules/Core/Axis/Color/ColorAxis.js +665 -0
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +237 -0
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +434 -0
- package/es-modules/Core/Axis/DateTimeAxis.js +163 -133
- package/es-modules/Core/Axis/GridAxis.js +8 -3
- package/es-modules/Core/Axis/LogarithmicAxis.js +159 -117
- package/es-modules/Core/Axis/OrdinalAxis.js +666 -460
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +874 -0
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +292 -0
- package/es-modules/Core/Axis/RadialAxis.js +858 -745
- package/es-modules/Core/Axis/ScrollbarAxis.js +7 -0
- package/es-modules/Core/Axis/StackingAxis.js +159 -140
- package/es-modules/Core/Axis/Tick.js +17 -27
- package/es-modules/Core/Chart/Chart.js +24 -38
- package/es-modules/Core/Chart/ChartDefaults.js +1 -1
- package/es-modules/Core/Chart/StockChart.js +12 -0
- package/es-modules/Core/Color/Color.js +96 -104
- package/es-modules/Core/DefaultOptions.js +269 -248
- package/es-modules/Core/Foundation.js +9 -8
- package/es-modules/Core/Geometry/CircleUtilities.js +385 -0
- package/es-modules/Core/Geometry/GeometryUtilities.js +83 -0
- package/es-modules/Core/Globals.js +23 -1
- package/es-modules/{Extensions/Ajax.js → Core/HttpUtilities.js} +86 -42
- package/es-modules/Core/{Legend.js → Legend/Legend.js} +142 -116
- package/es-modules/{Mixins → Core/Legend}/LegendSymbol.js +54 -38
- package/es-modules/Core/Navigator.js +3 -0
- package/es-modules/Core/Pointer.js +9 -0
- package/es-modules/Core/Renderer/HTML/AST.js +100 -82
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +17 -7
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +26 -9
- package/es-modules/Core/Renderer/RendererRegistry.js +9 -4
- package/es-modules/Core/Renderer/RendererUtilities.js +159 -0
- package/es-modules/Core/Renderer/SVG/SVGElement.js +13 -7
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +9 -29
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +2 -2
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +18 -16
- package/es-modules/Core/Responsive.js +166 -148
- package/es-modules/Core/Series/DataLabel.js +564 -0
- package/es-modules/Core/Series/Point.js +233 -209
- package/es-modules/Core/Series/Series.js +174 -2339
- package/es-modules/Core/Series/SeriesDefaults.js +2293 -0
- package/es-modules/Core/Series/SeriesRegistry.js +3 -9
- package/es-modules/Core/Time.js +78 -2
- package/es-modules/Core/Tooltip.js +178 -236
- package/es-modules/Core/Utilities.js +409 -394
- package/es-modules/Extensions/Annotations/Annotations.js +102 -49
- package/es-modules/Extensions/Annotations/Mixins/EventEmitterMixin.js +9 -1
- package/es-modules/Extensions/Annotations/NavigationBindings.js +30 -25
- package/es-modules/Extensions/Annotations/Popup.js +16 -7
- package/es-modules/Extensions/Boost/BoostOverrides.js +5 -1
- package/es-modules/Extensions/Boost/WGLRenderer.js +5 -4
- package/es-modules/Extensions/Boost/WGLVBuffer.js +3 -0
- package/es-modules/Extensions/BoostCanvas.js +1 -1
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +82 -76
- package/es-modules/Extensions/DataGrouping.js +225 -184
- package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
- package/es-modules/Extensions/DraggablePoints.js +13 -5
- package/es-modules/Extensions/Drilldown.js +41 -14
- package/es-modules/Extensions/ExportData.js +7 -4
- package/es-modules/Extensions/Exporting/Exporting.js +1273 -0
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +803 -0
- package/es-modules/Extensions/Exporting/ExportingSymbols.js +73 -0
- package/es-modules/Extensions/FullScreen.js +7 -5
- package/es-modules/Extensions/NoDataToDisplay.js +1 -1
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +617 -0
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +58 -0
- package/es-modules/Extensions/Oldie/Oldie.js +1 -1
- package/es-modules/Extensions/Pane.js +0 -1
- package/es-modules/Extensions/PatternFill.js +23 -10
- package/es-modules/Extensions/Polar.js +2 -1
- package/es-modules/Extensions/RangeSelector.js +1 -1
- package/es-modules/Extensions/Themes/Avocado.js +49 -20
- package/es-modules/Extensions/Themes/DarkBlue.js +226 -203
- package/es-modules/Extensions/Themes/DarkGreen.js +231 -203
- package/es-modules/Extensions/Themes/DarkUnica.js +201 -172
- package/es-modules/Extensions/Themes/Gray.js +228 -205
- package/es-modules/Extensions/Themes/Grid.js +109 -81
- package/es-modules/Extensions/Themes/GridLight.js +83 -55
- package/es-modules/Extensions/Themes/HighContrastDark.js +192 -164
- package/es-modules/Extensions/Themes/HighContrastLight.js +49 -21
- package/es-modules/Extensions/Themes/SandSignika.js +115 -86
- package/es-modules/Extensions/Themes/Skies.js +102 -74
- package/es-modules/Extensions/Themes/Sunset.js +47 -19
- package/es-modules/Mixins/ColorSeries.js +0 -1
- package/es-modules/Mixins/MultipleLines.js +6 -0
- package/es-modules/Mixins/TreeSeries.js +1 -1
- package/es-modules/Series/Area/AreaSeries.js +2 -2
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +2 -2
- package/es-modules/Series/Bubble/BubbleLegendComposition.js +279 -0
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +267 -0
- package/es-modules/Series/Bubble/BubbleLegendItem.js +472 -0
- package/es-modules/Series/Bubble/BubbleSeries.js +6 -2
- package/es-modules/Series/Column/ColumnDataLabel.js +109 -0
- package/es-modules/Series/Column/ColumnSeries.js +39 -26
- package/es-modules/Series/Column3D/Column3DComposition.js +5 -2
- package/es-modules/Series/Flags/FlagsSeries.js +8 -1
- package/es-modules/Series/Gantt/GanttSeries.js +3 -3
- package/es-modules/Series/Heatmap/HeatmapSeries.js +9 -5
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +60 -0
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +277 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +83 -0
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +370 -0
- package/es-modules/Series/Line/LineSeries.js +12 -8
- package/es-modules/Series/Map/MapSeries.js +5 -3
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +6 -5
- package/es-modules/Series/OHLC/OHLCPoint.js +11 -0
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
- package/es-modules/Series/Pie/PieDataLabel.js +448 -0
- package/es-modules/Series/Pie/PiePoint.js +35 -34
- package/es-modules/Series/Pie/PieSeries.js +19 -16
- package/es-modules/Series/Polygon/PolygonSeries.js +3 -3
- package/es-modules/Series/Sankey/SankeySeries.js +9 -7
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +2 -2
- package/es-modules/Series/Sunburst/SunburstSeries.js +1 -14
- package/es-modules/Series/Timeline/TimelinePoint.js +6 -0
- package/es-modules/Series/Timeline/TimelineSeries.js +14 -17
- package/es-modules/Series/Treemap/TreemapSeries.js +3 -3
- package/es-modules/Series/Venn/VennSeries.js +4 -4
- package/es-modules/Series/Venn/VennUtils.js +10 -16
- package/es-modules/Series/Waterfall/WaterfallSeries.js +40 -35
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +1 -0
- package/es-modules/Series/XRange/XRangeSeries.js +4 -2
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +92 -75
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +20 -8
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +17 -4
- package/es-modules/Stock/StockToolsBindings.js +77 -38
- package/es-modules/Stock/StockToolsGui.js +28 -3
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +11 -7
- package/es-modules/masters/highcharts.src.js +25 -9
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ema.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +1 -1
- package/es-modules/masters/modules/annotations.src.js +1 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +6 -2
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +8 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +1 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +10 -2
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +9 -4
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +6 -2
- package/es-modules/masters/modules/heikinashi.src.js +14 -0
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +14 -0
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +10 -6
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +8 -2
- package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/masters/modules/oldie.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +1 -1
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +1 -1
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +3 -2
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +1 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +5 -2
- package/es-modules/masters/themes/dark-blue.src.js +5 -2
- package/es-modules/masters/themes/dark-green.src.js +5 -2
- package/es-modules/masters/themes/dark-unica.src.js +5 -2
- package/es-modules/masters/themes/gray.src.js +5 -2
- package/es-modules/masters/themes/grid-light.src.js +5 -2
- package/es-modules/masters/themes/grid.src.js +5 -2
- package/es-modules/masters/themes/high-contrast-dark.src.js +5 -2
- package/es-modules/masters/themes/high-contrast-light.src.js +5 -2
- package/es-modules/masters/themes/sand-signika.src.js +5 -2
- package/es-modules/masters/themes/skies.src.js +5 -2
- package/es-modules/masters/themes/sunset.src.js +5 -2
- package/gfx/stock-icons/annotations-hidden.svg +1 -1
- package/gfx/stock-icons/annotations-visible.svg +2 -2
- package/gfx/stock-icons/arrow-bottom.svg +1 -1
- package/gfx/stock-icons/arrow-left.svg +1 -1
- package/gfx/stock-icons/arrow-line.svg +1 -1
- package/gfx/stock-icons/arrow-ray.svg +1 -1
- package/gfx/stock-icons/arrow-right.svg +1 -1
- package/gfx/stock-icons/arrow-segment.svg +1 -2
- package/gfx/stock-icons/circle.svg +1 -1
- package/gfx/stock-icons/close.svg +2 -2
- package/gfx/stock-icons/crooked-3.svg +1 -1
- package/gfx/stock-icons/crooked-5.svg +1 -1
- package/gfx/stock-icons/current-price-hide.svg +3 -3
- package/gfx/stock-icons/current-price-show.svg +2 -2
- package/gfx/stock-icons/destroy.svg +1 -1
- package/gfx/stock-icons/drawing.svg +18 -0
- package/gfx/stock-icons/edit.svg +1 -1
- package/gfx/stock-icons/elliott-3.svg +1 -1
- package/gfx/stock-icons/elliott-5.svg +1 -1
- package/gfx/stock-icons/ellipse.svg +11 -0
- package/gfx/stock-icons/fibonacci-timezone.svg +16 -0
- package/gfx/stock-icons/fibonacci.svg +1 -1
- package/gfx/stock-icons/flag-basic.svg +1 -1
- package/gfx/stock-icons/flag-diamond.svg +2 -2
- package/gfx/stock-icons/flag-elipse.svg +1 -1
- package/gfx/stock-icons/flag-trapeze.svg +2 -2
- package/gfx/stock-icons/fullscreen.svg +4 -4
- package/gfx/stock-icons/horizontal-line.svg +1 -1
- package/gfx/stock-icons/indicators.svg +3 -3
- package/gfx/stock-icons/label.svg +4 -4
- package/gfx/stock-icons/line.svg +1 -1
- package/gfx/stock-icons/linear.svg +11 -0
- package/gfx/stock-icons/logarithmic.svg +1 -0
- package/gfx/stock-icons/measure-x.svg +2 -2
- package/gfx/stock-icons/measure-xy.svg +1 -1
- package/gfx/stock-icons/measure-y.svg +1 -1
- package/gfx/stock-icons/panning.svg +17 -0
- package/gfx/stock-icons/parallel-channel.svg +1 -1
- package/gfx/stock-icons/pitchfork.svg +1 -1
- package/gfx/stock-icons/ray.svg +1 -1
- package/gfx/stock-icons/rectangle.svg +1 -1
- package/gfx/stock-icons/remove-annotations.svg +2 -2
- package/gfx/stock-icons/save-chart.svg +3 -3
- package/gfx/stock-icons/segment.svg +1 -1
- package/gfx/stock-icons/separator.svg +1 -1
- package/gfx/stock-icons/series-candlestick.svg +1 -1
- package/gfx/stock-icons/series-heikin-ashi.svg +1 -0
- package/gfx/stock-icons/series-hlc.svg +1 -0
- package/gfx/stock-icons/series-hollow-candlestick.svg +1 -0
- package/gfx/stock-icons/series-line.svg +1 -1
- package/gfx/stock-icons/series-ohlc.svg +4 -4
- package/gfx/stock-icons/time-cycles.svg +35 -0
- package/gfx/stock-icons/vertical-arrow.svg +1 -1
- package/gfx/stock-icons/vertical-counter.svg +1 -1
- package/gfx/stock-icons/vertical-double-arrow.svg +1 -1
- package/gfx/stock-icons/vertical-label.svg +3 -3
- package/gfx/stock-icons/vertical-line.svg +1 -1
- package/gfx/stock-icons/zoom-x.svg +2 -2
- package/gfx/stock-icons/zoom-xy.svg +2 -2
- package/gfx/stock-icons/zoom-y.svg +2 -2
- package/highcharts-3d.js +24 -24
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +6 -3
- package/highcharts-gantt.js +800 -792
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +16535 -15918
- package/highcharts-more.d.ts +73 -1
- package/highcharts-more.js +193 -192
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.d.ts +73 -1
- package/highcharts-more.src.js +8044 -7839
- package/highcharts.d.ts +3850 -177
- package/highcharts.js +589 -581
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +3850 -177
- package/highcharts.src.js +16635 -16060
- package/highmaps.js +708 -698
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +17419 -16521
- package/highstock.js +782 -769
- package/highstock.js.map +1 -1
- package/highstock.src.js +28867 -27975
- package/indicators/acceleration-bands.js +9 -9
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.js +7 -1
- package/indicators/accumulation-distribution.js +1 -1
- package/indicators/accumulation-distribution.src.js +1 -1
- package/indicators/ao.js +1 -1
- package/indicators/ao.src.js +1 -1
- package/indicators/apo.js +1 -1
- package/indicators/apo.src.js +1 -1
- package/indicators/aroon-oscillator.js +9 -9
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.js +7 -1
- package/indicators/aroon.js +9 -9
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.js +7 -1
- package/indicators/atr.js +1 -1
- package/indicators/atr.src.js +1 -1
- package/indicators/bollinger-bands.js +9 -9
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.js +7 -1
- package/indicators/cci.js +1 -1
- package/indicators/cci.src.js +1 -1
- package/indicators/chaikin.js +1 -1
- package/indicators/chaikin.src.js +1 -1
- package/indicators/cmf.js +1 -1
- package/indicators/cmf.src.js +1 -1
- package/indicators/cmo.js +1 -1
- package/indicators/cmo.src.js +1 -1
- package/indicators/dema.js +1 -1
- package/indicators/dema.src.js +1 -1
- package/indicators/disparity-index.js +1 -1
- package/indicators/disparity-index.src.js +1 -1
- package/indicators/dmi.js +11 -11
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +7 -1
- package/indicators/dpo.js +1 -1
- package/indicators/dpo.src.js +1 -1
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +1 -1
- package/indicators/ichimoku-kinko-hyo.js +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/indicators/indicators-all.js +203 -200
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.js +206 -104
- package/indicators/indicators.js +12 -11
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +108 -90
- package/indicators/keltner-channels.js +9 -9
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.js +7 -1
- package/indicators/klinger.js +13 -13
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +7 -1
- package/indicators/macd.js +1 -1
- package/indicators/macd.src.js +1 -1
- package/indicators/mfi.js +1 -1
- package/indicators/mfi.src.js +1 -1
- package/indicators/momentum.js +1 -1
- package/indicators/momentum.src.js +1 -1
- package/indicators/natr.js +1 -1
- package/indicators/natr.src.js +1 -1
- package/indicators/obv.js +1 -1
- package/indicators/obv.src.js +1 -1
- package/indicators/pivot-points.js +1 -1
- package/indicators/pivot-points.src.js +1 -1
- package/indicators/ppo.js +1 -1
- package/indicators/ppo.src.js +1 -1
- package/indicators/price-channel.js +9 -9
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.js +7 -1
- package/indicators/price-envelopes.js +1 -1
- package/indicators/price-envelopes.src.js +1 -1
- package/indicators/psar.js +1 -1
- package/indicators/psar.src.js +1 -1
- package/indicators/regressions.js +1 -1
- package/indicators/regressions.src.js +1 -1
- package/indicators/roc.js +1 -1
- package/indicators/roc.src.js +1 -1
- package/indicators/rsi.js +1 -1
- package/indicators/rsi.src.js +1 -1
- package/indicators/slow-stochastic.js +1 -1
- package/indicators/slow-stochastic.src.js +1 -1
- package/indicators/stochastic.js +10 -10
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.js +7 -1
- package/indicators/supertrend.js +10 -10
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +23 -10
- package/indicators/tema.js +1 -1
- package/indicators/tema.src.js +1 -1
- package/indicators/trendline.js +1 -1
- package/indicators/trendline.src.js +1 -1
- package/indicators/trix.js +1 -1
- package/indicators/trix.src.js +1 -1
- package/indicators/volume-by-price.js +17 -15
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +71 -6
- package/indicators/vwap.js +1 -1
- package/indicators/vwap.src.js +1 -1
- package/indicators/williams-r.js +1 -1
- package/indicators/williams-r.src.js +1 -1
- package/indicators/wma.js +1 -1
- package/indicators/wma.src.js +1 -1
- package/indicators/zigzag.js +1 -1
- package/indicators/zigzag.src.js +1 -1
- package/modules/accessibility.js +203 -202
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +89 -49
- package/modules/annotations-advanced.js +164 -163
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +162 -87
- package/modules/annotations.js +111 -111
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +162 -87
- package/modules/arrow-symbols.js +1 -1
- package/modules/arrow-symbols.src.js +1 -1
- package/modules/boost-canvas.js +2 -2
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +2 -2
- package/modules/boost.js +52 -52
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +15 -7
- package/modules/broken-axis.js +13 -13
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +34 -15
- package/modules/bullet.js +1 -1
- package/modules/bullet.src.js +1 -1
- package/modules/coloraxis.js +24 -22
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +954 -774
- package/modules/current-date-indicator.js +2 -2
- package/modules/current-date-indicator.js.map +1 -1
- package/modules/current-date-indicator.src.js +2 -2
- package/modules/cylinder.js +1 -1
- package/modules/cylinder.src.js +1 -1
- package/modules/data.js +33 -32
- package/modules/data.js.map +1 -1
- package/modules/data.src.js +182 -134
- package/modules/datagrouping.d.ts +5 -0
- package/modules/datagrouping.js +20 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.d.ts +5 -0
- package/modules/datagrouping.src.js +270 -228
- package/modules/debugger.js +3 -3
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +3 -3
- package/modules/dependency-wheel.js +1 -1
- package/modules/dependency-wheel.src.js +1 -1
- package/modules/dotplot.js +1 -1
- package/modules/dotplot.src.js +1 -1
- package/modules/drag-panes.js +1 -1
- package/modules/drag-panes.src.js +1 -1
- package/modules/draggable-points.js +34 -34
- package/modules/draggable-points.js.map +1 -1
- package/modules/draggable-points.src.js +14 -5
- package/modules/drilldown.d.ts +27 -0
- package/modules/drilldown.js +18 -18
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.d.ts +27 -0
- package/modules/drilldown.src.js +42 -16
- package/modules/dumbbell.js +1 -1
- package/modules/dumbbell.src.js +1 -1
- package/modules/export-data.js +20 -20
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +8 -5
- package/modules/exporting.d.ts +29 -0
- package/modules/exporting.js +38 -35
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.d.ts +29 -0
- package/modules/exporting.src.js +1937 -1614
- package/modules/full-screen.js +2 -2
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +8 -6
- package/modules/funnel.js +1 -1
- package/modules/funnel.src.js +1 -1
- package/modules/funnel3d.js +1 -1
- package/modules/funnel3d.src.js +1 -1
- package/modules/gantt.js +218 -217
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +74 -32
- package/modules/grid-axis.js +23 -22
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +9 -4
- package/modules/heatmap.js +39 -37
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +963 -779
- package/modules/heikinashi.js +17 -0
- package/modules/heikinashi.js.map +1 -0
- package/modules/heikinashi.src.js +394 -0
- package/modules/histogram-bellcurve.js +1 -1
- package/modules/histogram-bellcurve.src.js +1 -1
- package/modules/hollowcandlestick.js +18 -0
- package/modules/hollowcandlestick.js.map +1 -0
- package/modules/hollowcandlestick.src.js +504 -0
- package/modules/item-series.js +1 -1
- package/modules/item-series.src.js +1 -1
- package/modules/lollipop.js +1 -1
- package/modules/lollipop.src.js +1 -1
- package/modules/map.d.ts +9 -0
- package/modules/map.js +122 -119
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +9 -0
- package/modules/map.src.js +1655 -1332
- package/modules/marker-clusters.js +1 -1
- package/modules/marker-clusters.src.js +1 -1
- package/modules/networkgraph.js +1 -1
- package/modules/networkgraph.src.js +1 -1
- package/modules/no-data-to-display.js +3 -3
- package/modules/no-data-to-display.js.map +1 -1
- package/modules/no-data-to-display.src.js +2 -2
- package/modules/offline-exporting.js +18 -16
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +623 -562
- package/modules/oldie-polyfills.js +1 -1
- package/modules/oldie-polyfills.src.js +1 -1
- package/modules/oldie.js +2 -2
- package/modules/oldie.src.js +2 -2
- package/modules/organization.js +1 -1
- package/modules/organization.src.js +1 -1
- package/modules/overlapping-datalabels.js +1 -1
- package/modules/overlapping-datalabels.src.js +1 -1
- package/modules/parallel-coordinates.js +1 -1
- package/modules/parallel-coordinates.src.js +1 -1
- package/modules/pareto.js +1 -1
- package/modules/pareto.src.js +1 -1
- package/modules/pathfinder.js +1 -1
- package/modules/pathfinder.src.js +1 -1
- package/modules/pattern-fill.js +14 -14
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +24 -12
- package/modules/price-indicator.js +1 -1
- package/modules/price-indicator.src.js +1 -1
- package/modules/pyramid3d.js +1 -1
- package/modules/pyramid3d.src.js +1 -1
- package/modules/sankey.js +28 -28
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.js +11 -11
- package/modules/series-label.js +1 -1
- package/modules/series-label.src.js +1 -1
- package/modules/solid-gauge.js +2 -2
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +3 -3
- package/modules/sonification.js +1 -1
- package/modules/sonification.src.js +1 -1
- package/modules/static-scale.js +1 -1
- package/modules/static-scale.src.js +1 -1
- package/modules/stock-tools.js +159 -157
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +253 -123
- package/modules/stock.d.ts +5 -0
- package/modules/stock.js +196 -191
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.d.ts +5 -0
- package/modules/stock.src.js +7749 -7432
- package/modules/streamgraph.js +1 -1
- package/modules/streamgraph.src.js +1 -1
- package/modules/sunburst.js +5 -5
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.js +6 -19
- package/modules/tilemap.js +1 -1
- package/modules/tilemap.src.js +1 -1
- package/modules/timeline.js +18 -17
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +21 -24
- package/modules/treegrid.js +57 -57
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +43 -19
- package/modules/treemap.js +5 -5
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.js +5 -5
- package/modules/variable-pie.js +1 -1
- package/modules/variable-pie.src.js +1 -1
- package/modules/variwide.js +1 -1
- package/modules/variwide.src.js +1 -1
- package/modules/vector.js +1 -1
- package/modules/vector.src.js +1 -1
- package/modules/venn.js +31 -30
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +508 -424
- package/modules/windbarb.js +1 -1
- package/modules/windbarb.src.js +1 -1
- package/modules/wordcloud.js +4 -4
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +2 -1
- package/modules/xrange.js +17 -17
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +7 -4
- package/package.json +1 -1
- package/themes/avocado.d.ts +6 -1
- package/themes/avocado.js +3 -3
- package/themes/avocado.js.map +1 -1
- package/themes/avocado.src.d.ts +6 -1
- package/themes/avocado.src.js +53 -22
- package/themes/dark-blue.d.ts +6 -1
- package/themes/dark-blue.js +3 -3
- package/themes/dark-blue.js.map +1 -1
- package/themes/dark-blue.src.d.ts +6 -1
- package/themes/dark-blue.src.js +231 -205
- package/themes/dark-green.d.ts +6 -1
- package/themes/dark-green.js +4 -4
- package/themes/dark-green.js.map +1 -1
- package/themes/dark-green.src.d.ts +6 -1
- package/themes/dark-green.src.js +236 -205
- package/themes/dark-unica.d.ts +6 -1
- package/themes/dark-unica.js +7 -7
- package/themes/dark-unica.js.map +1 -1
- package/themes/dark-unica.src.d.ts +6 -1
- package/themes/dark-unica.src.js +206 -174
- package/themes/gray.d.ts +6 -1
- package/themes/gray.js +3 -3
- package/themes/gray.js.map +1 -1
- package/themes/gray.src.d.ts +6 -1
- package/themes/gray.src.js +233 -207
- package/themes/grid-light.d.ts +6 -1
- package/themes/grid-light.js +4 -4
- package/themes/grid-light.js.map +1 -1
- package/themes/grid-light.src.d.ts +6 -1
- package/themes/grid-light.src.js +88 -57
- package/themes/grid.d.ts +6 -1
- package/themes/grid.js +3 -3
- package/themes/grid.js.map +1 -1
- package/themes/grid.src.d.ts +6 -1
- package/themes/grid.src.js +114 -83
- package/themes/high-contrast-dark.js +5 -4
- package/themes/high-contrast-dark.js.map +1 -1
- package/themes/high-contrast-dark.src.js +197 -166
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.js.map +1 -1
- package/themes/high-contrast-light.src.js +54 -23
- package/themes/sand-signika.d.ts +6 -1
- package/themes/sand-signika.js +5 -5
- package/themes/sand-signika.js.map +1 -1
- package/themes/sand-signika.src.d.ts +6 -1
- package/themes/sand-signika.src.js +119 -88
- package/themes/skies.d.ts +6 -1
- package/themes/skies.js +5 -5
- package/themes/skies.js.map +1 -1
- package/themes/skies.src.d.ts +6 -1
- package/themes/skies.src.js +107 -76
- package/themes/sunset.d.ts +6 -1
- package/themes/sunset.js +3 -3
- package/themes/sunset.js.map +1 -1
- package/themes/sunset.src.d.ts +6 -1
- package/themes/sunset.src.js +52 -21
- package/es-modules/Core/Axis/ColorAxis.js +0 -1164
- package/es-modules/Core/Axis/HiddenAxis.js +0 -46
- package/es-modules/Core/Axis/PlotLineOrBand.js +0 -1051
- package/es-modules/Core/Series/DataLabels.js +0 -1173
- package/es-modules/Extensions/Exporting.js +0 -2024
- package/es-modules/Extensions/OfflineExporting.js +0 -621
- package/es-modules/Mixins/Geometry.js +0 -56
- package/es-modules/Mixins/GeometryCircles.js +0 -320
- package/es-modules/Series/Bubble/BubbleLegend.js +0 -893
package/modules/venn.src.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v9.
|
|
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, '
|
|
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
|
-
*
|
|
38
|
-
*
|
|
39
|
-
*
|
|
40
|
-
*
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
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
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
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
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
p2) {
|
|
81
|
-
return Math.atan2(p2.x - p1.x,
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
|
114
|
+
return GeometryUtilities;
|
|
91
115
|
});
|
|
92
|
-
_registerModule(_modules, '
|
|
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
|
-
*
|
|
103
|
-
*
|
|
104
|
-
*
|
|
105
|
-
*
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
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
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
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
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
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
|
-
|
|
177
|
-
overlap = round(overlap, 14);
|
|
239
|
+
return overlap;
|
|
178
240
|
}
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
//
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
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
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
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
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
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
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
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
|
-
//
|
|
364
|
-
|
|
365
|
-
.
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
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
|
-
|
|
423
|
-
}
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
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
|
|
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['
|
|
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 =
|
|
778
|
-
getCircleCircleIntersection =
|
|
779
|
-
getOverlapBetweenCirclesByDistance =
|
|
780
|
-
isPointInsideAllCircles =
|
|
781
|
-
isPointInsideCircle =
|
|
782
|
-
isPointOutsideAllCircles =
|
|
783
|
-
var 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 =
|
|
802
|
-
VennUtils.geometryCircles =
|
|
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
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
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
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
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['
|
|
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
|
|
1344
|
-
|
|
1345
|
-
|
|
1346
|
-
|
|
1347
|
-
|
|
1348
|
-
|
|
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,
|