highcharts 11.3.0 → 11.4.0
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/README.md +1 -1
- package/bower.json +1 -1
- package/css/annotations/popup.css +27 -19
- package/css/stocktools/gui.css +19 -7
- package/es-modules/Accessibility/A11yI18n.js +4 -6
- package/es-modules/Accessibility/Accessibility.js +8 -6
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +11 -6
- package/es-modules/Accessibility/Components/LegendComponent.js +4 -4
- package/es-modules/Accessibility/Components/MenuComponent.js +3 -6
- package/es-modules/Accessibility/Components/NavigatorComponent.js +6 -3
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +4 -7
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +18 -3
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +5 -3
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +4 -4
- package/es-modules/Accessibility/FocusBorder.js +5 -5
- package/es-modules/Accessibility/HighContrastMode.js +22 -13
- package/es-modules/Accessibility/HighContrastTheme.js +2 -6
- package/es-modules/Accessibility/KeyboardNavigation.js +17 -8
- package/es-modules/Accessibility/Options/A11yDefaults.js +11 -1
- package/es-modules/Accessibility/ProxyElement.js +4 -4
- package/es-modules/Accessibility/ProxyProvider.js +8 -2
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +8 -0
- package/es-modules/Accessibility/Utils/EventProvider.js +9 -0
- package/es-modules/Core/Animation/Fx.js +3 -3
- package/es-modules/Core/Axis/Axis.js +43 -97
- package/es-modules/Core/Axis/Axis3DComposition.js +5 -5
- package/es-modules/Core/Axis/Axis3DDefaults.js +1 -1
- package/es-modules/Core/Axis/AxisDefaults.js +18 -7
- package/es-modules/Core/Axis/BrokenAxis.js +4 -6
- package/es-modules/Core/Axis/Color/ColorAxis.js +2 -1
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -5
- package/es-modules/Core/Axis/DateTimeAxis.js +3 -5
- package/es-modules/Core/Axis/GridAxis.js +7 -7
- package/es-modules/Core/Axis/LogarithmicAxis.js +2 -4
- package/es-modules/Core/Axis/NavigatorAxisComposition.js +26 -22
- package/es-modules/Core/Axis/OrdinalAxis.js +97 -53
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +4 -5
- package/es-modules/Core/Axis/RadialAxis.js +5 -5
- package/es-modules/Core/Axis/ScrollbarAxis.js +2 -2
- package/es-modules/Core/Axis/Stacking/StackItem.js +8 -4
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +3 -5
- package/es-modules/Core/Axis/Tick.js +16 -7
- package/es-modules/Core/Axis/Tick3DComposition.js +2 -2
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +4 -8
- package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -6
- package/es-modules/Core/Axis/WaterfallAxis.js +3 -3
- package/es-modules/Core/Axis/ZAxis.js +6 -11
- package/es-modules/Core/Chart/Chart.js +201 -176
- package/es-modules/Core/Chart/Chart3D.js +1 -1
- package/es-modules/Core/Chart/ChartDefaults.js +7 -0
- package/es-modules/Core/Chart/GanttChart.js +2 -2
- package/es-modules/Core/Chart/MapChart.js +12 -2
- package/es-modules/Core/Chart/StockChart.js +12 -11
- package/es-modules/Core/Color/Color.js +3 -3
- package/es-modules/Core/Color/Palettes.js +2 -2
- package/es-modules/Core/Defaults.js +18 -15
- package/es-modules/Core/Geometry/CircleUtilities.js +3 -3
- package/es-modules/Core/Globals.js +2 -2
- package/es-modules/Core/HttpUtilities.js +4 -4
- package/es-modules/Core/Legend/Legend.js +6 -6
- package/es-modules/Core/MSPointer.js +7 -7
- package/es-modules/Core/Pointer.js +230 -245
- package/es-modules/Core/Renderer/HTML/AST.js +1 -1
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +213 -26
- package/es-modules/Core/Renderer/RendererUtilities.js +1 -1
- package/es-modules/Core/Renderer/SVG/SVGElement.js +85 -52
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +14 -11
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +17 -14
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +8 -7
- package/es-modules/Core/Renderer/SVG/Symbols.js +1 -1
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
- package/es-modules/Core/Responsive.js +5 -6
- package/es-modules/Core/Series/DataLabel.js +70 -90
- package/es-modules/Core/Series/DataSeriesComposition.js +1 -1
- package/es-modules/Core/Series/DataSeriesConverter.js +2 -2
- package/es-modules/Core/Series/Point.js +48 -40
- package/es-modules/Core/Series/Series.js +61 -51
- package/es-modules/Core/Series/Series3D.js +2 -2
- package/es-modules/Core/Series/SeriesRegistry.js +10 -2
- package/es-modules/Core/Templating.js +1 -1
- package/es-modules/Core/Time.js +12 -7
- package/es-modules/Core/Tooltip.js +19 -17
- package/es-modules/Core/Utilities.js +54 -26
- package/es-modules/Data/Connectors/CSVConnector.js +2 -2
- package/es-modules/Data/Connectors/DataConnector.js +4 -2
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
- package/es-modules/Data/Connectors/HTMLTableConnector.js +2 -2
- package/es-modules/Data/Connectors/JSONConnector.js +3 -5
- package/es-modules/Data/Converters/CSVConverter.js +1 -3
- package/es-modules/Data/Converters/DataConverter.js +8 -2
- package/es-modules/Data/Converters/HTMLTableConverter.js +1 -3
- package/es-modules/Data/Converters/JSONConverter.js +1 -0
- package/es-modules/Data/DataTable.js +1 -2
- package/es-modules/Data/Formula/FormulaProcessor.js +4 -2
- package/es-modules/Data/Modifiers/DataModifier.js +15 -3
- package/es-modules/Extensions/Annotations/Annotation.js +6 -7
- package/es-modules/Extensions/Annotations/AnnotationChart.js +4 -5
- package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
- package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
- package/es-modules/Extensions/Annotations/ControlTarget.js +1 -1
- package/es-modules/Extensions/Annotations/Controllables/Controllable.js +7 -3
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +3 -3
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +8 -9
- package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +3 -4
- package/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
- package/es-modules/Extensions/Annotations/NavigationBindings.js +29 -18
- package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +6 -6
- package/es-modules/Extensions/Annotations/Popup/Popup.js +1 -1
- package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +10 -6
- package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +2 -2
- package/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +31 -31
- package/es-modules/Extensions/Annotations/Popup/PopupTabs.js +1 -1
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +14 -11
- package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +1 -1
- package/es-modules/Extensions/Annotations/Types/Measure.js +1 -1
- package/es-modules/Extensions/ArrowSymbols.js +7 -13
- package/es-modules/Extensions/Boost/Boost.js +39 -7
- package/es-modules/Extensions/Boost/BoostChart.js +4 -4
- package/es-modules/Extensions/Boost/BoostSeries.js +58 -13
- package/es-modules/Extensions/Boost/WGLRenderer.js +3 -3
- package/es-modules/Extensions/Boost/WGLVertexBuffer.js +1 -1
- package/es-modules/Extensions/BoostCanvas.js +5 -4
- package/es-modules/Extensions/BorderRadius.js +5 -4
- package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +9 -9
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +11 -11
- package/es-modules/Extensions/DataGrouping/DataGrouping.js +1 -1
- package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +8 -9
- package/es-modules/Extensions/DataGrouping/DataGroupingDefaults.js +1 -1
- package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +6 -7
- package/es-modules/Extensions/Debugger/Debugger.js +1 -1
- package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
- package/es-modules/Extensions/DragPanes/AxisResizer.js +13 -16
- package/es-modules/Extensions/DragPanes/DragPanes.js +2 -4
- package/es-modules/Extensions/DraggablePoints/DragDropDefaults.js +2 -1
- package/es-modules/Extensions/DraggablePoints/DragDropUtilities.js +1 -1
- package/es-modules/Extensions/DraggablePoints/DraggableChart.js +4 -4
- package/es-modules/Extensions/DraggablePoints/DraggablePoints.js +8 -9
- package/es-modules/Extensions/Drilldown/Drilldown.js +11 -9
- package/es-modules/Extensions/Drilldown/DrilldownSeries.js +5 -6
- package/es-modules/Extensions/ExportData/ExportData.js +27 -18
- package/es-modules/Extensions/Exporting/Exporting.js +25 -20
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +1 -1
- package/es-modules/Extensions/Exporting/Fullscreen.js +5 -10
- package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +26 -21
- package/es-modules/Extensions/MarkerClusters/MarkerClusterSymbols.js +2 -12
- package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +3 -3
- package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +51 -161
- package/es-modules/Extensions/NoDataToDisplay/NoDataToDisplay.js +3 -5
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +5 -6
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/OverlappingDataLabels.js +21 -49
- package/es-modules/Extensions/Pane/PaneComposition.js +3 -5
- package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -4
- package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +5 -6
- package/es-modules/Extensions/ParallelCoordinates/ParallelSeries.js +1 -1
- package/es-modules/Extensions/PatternFill.js +19 -22
- package/es-modules/Extensions/PriceIndication.js +1 -1
- package/es-modules/Extensions/ScrollablePlotArea.js +218 -292
- package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +26 -18
- package/es-modules/Extensions/Sonification/Options.js +1 -0
- package/es-modules/Extensions/Sonification/SonificationSpeaker.js +2 -2
- package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
- package/es-modules/Extensions/StaticScale.js +3 -5
- package/es-modules/Gantt/Legacy.js +1 -1
- package/es-modules/Gantt/Pathfinder.js +2 -2
- package/es-modules/Gantt/PathfinderComposition.js +3 -5
- package/es-modules/Gantt/Tree.js +3 -3
- package/es-modules/Maps/GeoJSONComposition.js +20 -13
- package/es-modules/Maps/MapNavigation.js +2 -2
- package/es-modules/Maps/MapPointer.js +3 -19
- package/es-modules/Maps/MapSymbols.js +3 -9
- package/es-modules/Maps/MapView.js +134 -74
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +5 -4
- package/es-modules/Series/Area/AreaSeries.js +2 -4
- package/es-modules/Series/Area3D/Area3DSeries.js +1 -1
- package/es-modules/Series/AreaRange/AreaRangePoint.js +2 -2
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +2 -3
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +1 -1
- package/es-modules/Series/Bar/BarSeries.js +1 -1
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +1 -1
- package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +4 -0
- package/es-modules/Series/Bubble/BubbleLegendComposition.js +1 -1
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +2 -2
- package/es-modules/Series/Bubble/BubbleLegendItem.js +3 -3
- package/es-modules/Series/Bubble/BubbleSeries.js +1 -1
- package/es-modules/Series/Bullet/BulletSeriesDefaults.js +2 -2
- package/es-modules/Series/Candlestick/CandlestickSeries.js +2 -2
- package/es-modules/Series/Candlestick/CandlestickSeriesDefaults.js +1 -5
- package/es-modules/Series/ColorMapComposition.js +1 -1
- package/es-modules/Series/Column/ColumnDataLabel.js +2 -2
- package/es-modules/Series/Column/ColumnSeries.js +20 -22
- package/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -1
- package/es-modules/Series/Column3D/Column3DComposition.js +1 -1
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +2 -1
- package/es-modules/Series/Cylinder/CylinderComposition.js +9 -9
- package/es-modules/Series/DataModifyComposition.js +5 -5
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +3 -2
- package/es-modules/Series/DependencyWheel/DependencyWheelSeriesDefaults.js +1 -1
- package/es-modules/Series/DragNodesComposition.js +7 -7
- package/es-modules/Series/DrawPointUtilities.js +0 -2
- package/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +1 -1
- package/es-modules/Series/Funnel/FunnelSeries.js +1 -1
- package/es-modules/Series/Funnel3D/Funnel3DComposition.js +6 -6
- package/es-modules/Series/Funnel3D/Funnel3DSeriesDefaults.js +2 -2
- package/es-modules/Series/Funnel3D/SVGElement3DFunnel.js +1 -1
- package/es-modules/Series/Gantt/GanttSeries.js +0 -1
- package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +5 -5
- package/es-modules/Series/GraphLayoutComposition.js +1 -1
- package/es-modules/Series/Heatmap/HeatmapSeries.js +2 -2
- package/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -3
- package/es-modules/Series/HeikinAshi/HeikinAshiSeriesDefaults.js +1 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +2 -2
- package/es-modules/Series/Item/ItemSeries.js +1 -1
- package/es-modules/Series/Line/LineSeries.js +1 -1
- package/es-modules/Series/Lollipop/LollipopSeries.js +3 -1
- package/es-modules/Series/Map/MapPoint.js +5 -1
- package/es-modules/Series/Map/MapSeries.js +32 -7
- package/es-modules/Series/Map/MapSeriesDefaults.js +5 -3
- package/es-modules/Series/Networkgraph/EulerIntegration.js +5 -5
- package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -4
- package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +5 -5
- package/es-modules/Series/Networkgraph/QuadTree.js +1 -1
- package/es-modules/Series/Networkgraph/QuadTreeNode.js +1 -1
- package/es-modules/Series/Networkgraph/VerletIntegration.js +9 -9
- package/es-modules/Series/NodesComposition.js +1 -1
- package/es-modules/Series/OHLC/OHLCSeries.js +1 -1
- package/es-modules/Series/OHLC/OHLCSeriesDefaults.js +1 -1
- package/es-modules/Series/OnSeriesComposition.js +1 -1
- package/es-modules/Series/Organization/OrganizationPoint.js +1 -1
- package/es-modules/Series/Organization/OrganizationSeries.js +22 -10
- package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +15 -2
- package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -5
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +6 -10
- package/es-modules/Series/Pictorial/PictorialSeries.js +2 -2
- package/es-modules/Series/Pie/PieDataLabel.js +2 -2
- package/es-modules/Series/Pie/PiePoint.js +1 -1
- package/es-modules/Series/Pie/PieSeries.js +10 -1
- package/es-modules/Series/Pie/PieSeriesDefaults.js +1 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +2 -2
- package/es-modules/Series/PolarComposition.js +22 -20
- package/es-modules/Series/Sankey/SankeyColumnComposition.js +1 -1
- package/es-modules/Series/Sankey/SankeySeries.js +8 -8
- package/es-modules/Series/Sankey/SankeySeriesDefaults.js +57 -13
- package/es-modules/Series/SeriesOnPointComposition.js +3 -3
- package/es-modules/Series/Spline/SplineSeries.js +1 -1
- package/es-modules/Series/Sunburst/SunburstPoint.js +1 -1
- package/es-modules/Series/Sunburst/SunburstSeries.js +2 -7
- package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +3 -3
- package/es-modules/Series/Sunburst/SunburstUtilities.js +1 -1
- package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +23 -25
- package/es-modules/Series/Tilemap/TilemapSeries.js +2 -2
- package/es-modules/Series/Timeline/TimelineSeries.js +2 -2
- package/es-modules/Series/TreeUtilities.js +23 -1
- package/es-modules/Series/Treegraph/TreegraphLayout.js +7 -11
- package/es-modules/Series/Treegraph/TreegraphPoint.js +1 -0
- package/es-modules/Series/Treegraph/TreegraphSeries.js +8 -8
- package/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js +39 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +4 -2
- package/es-modules/Series/Treemap/TreemapUtilities.js +0 -7
- package/es-modules/Series/Variwide/VariwideComposition.js +6 -2
- package/es-modules/Series/Variwide/VariwideSeries.js +1 -1
- package/es-modules/Series/Venn/VennSeries.js +4 -4
- package/es-modules/Series/Venn/VennUtils.js +5 -6
- package/es-modules/Series/Waterfall/WaterfallSeriesDefaults.js +1 -1
- package/es-modules/Series/Windbarb/WindbarbSeries.js +1 -1
- package/es-modules/Series/Wordcloud/WordcloudUtils.js +6 -4
- package/es-modules/Series/XRange/XRangePoint.js +2 -2
- package/es-modules/Series/XRange/XRangeSeries.js +1 -1
- package/es-modules/Shared/BaseForm.js +1 -1
- package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +1 -1
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +1 -1
- package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +2 -2
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +1 -1
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +1 -1
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegressionIndicator.js +7 -7
- package/es-modules/Stock/Indicators/MultipleLinesComposition.js +9 -9
- package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +1 -1
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +2 -2
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +16 -17
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +4 -5
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +5 -5
- package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +188 -0
- package/es-modules/Stock/Navigator/Navigator.js +42 -27
- package/es-modules/Stock/Navigator/NavigatorComposition.js +10 -149
- package/es-modules/Stock/Navigator/NavigatorDefaults.js +16 -2
- package/es-modules/Stock/Navigator/StandaloneNavigator.js +334 -0
- package/es-modules/Stock/Navigator/StandaloneNavigatorDefaults.js +64 -0
- package/es-modules/Stock/RangeSelector/RangeSelector.js +28 -16
- package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +2 -2
- package/es-modules/Stock/Scrollbar/Scrollbar.js +10 -10
- package/es-modules/Stock/Scrollbar/ScrollbarDefaults.js +1 -3
- package/es-modules/Stock/StockTools/StockToolbar.js +6 -5
- package/es-modules/Stock/StockTools/StockTools.js +10 -13
- package/es-modules/Stock/StockTools/StockToolsBindings.js +35 -35
- package/es-modules/Stock/StockTools/StockToolsDefaults.js +2 -1
- package/es-modules/Stock/StockTools/StockToolsGui.js +7 -8
- package/es-modules/Stock/StockTools/StockToolsUtilities.js +8 -9
- package/es-modules/Stock/Utilities/StockUtilities.js +41 -0
- package/es-modules/masters/highcharts-3d.src.js +2 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +2 -1
- package/es-modules/masters/highcharts.src.js +41 -40
- 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 +3 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +3 -1
- package/es-modules/masters/indicators/ao.src.js +3 -1
- package/es-modules/masters/indicators/apo.src.js +3 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +3 -1
- package/es-modules/masters/indicators/aroon.src.js +3 -1
- package/es-modules/masters/indicators/atr.src.js +3 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +3 -1
- package/es-modules/masters/indicators/cci.src.js +3 -1
- package/es-modules/masters/indicators/chaikin.src.js +3 -1
- package/es-modules/masters/indicators/cmf.src.js +3 -1
- package/es-modules/masters/indicators/cmo.src.js +3 -1
- package/es-modules/masters/indicators/dema.src.js +3 -1
- package/es-modules/masters/indicators/disparity-index.src.js +3 -1
- package/es-modules/masters/indicators/dmi.src.js +3 -1
- package/es-modules/masters/indicators/dpo.src.js +3 -1
- package/es-modules/masters/indicators/ema.src.js +2 -0
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +3 -1
- package/es-modules/masters/indicators/indicators-all.src.js +3 -1
- package/es-modules/masters/indicators/indicators.src.js +7 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +3 -1
- package/es-modules/masters/indicators/klinger.src.js +3 -1
- package/es-modules/masters/indicators/macd.src.js +3 -1
- package/es-modules/masters/indicators/mfi.src.js +3 -1
- package/es-modules/masters/indicators/momentum.src.js +3 -1
- package/es-modules/masters/indicators/natr.src.js +3 -1
- package/es-modules/masters/indicators/obv.src.js +3 -1
- package/es-modules/masters/indicators/pivot-points.src.js +3 -1
- package/es-modules/masters/indicators/ppo.src.js +3 -1
- package/es-modules/masters/indicators/price-channel.src.js +3 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +3 -1
- package/es-modules/masters/indicators/psar.src.js +3 -1
- package/es-modules/masters/indicators/regressions.src.js +3 -1
- package/es-modules/masters/indicators/roc.src.js +3 -1
- package/es-modules/masters/indicators/rsi.src.js +3 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +3 -1
- package/es-modules/masters/indicators/stochastic.src.js +3 -1
- package/es-modules/masters/indicators/supertrend.src.js +3 -1
- package/es-modules/masters/indicators/tema.src.js +3 -1
- package/es-modules/masters/indicators/trendline.src.js +3 -1
- package/es-modules/masters/indicators/trix.src.js +3 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +3 -1
- package/es-modules/masters/indicators/vwap.src.js +3 -1
- package/es-modules/masters/indicators/williams-r.src.js +3 -1
- package/es-modules/masters/indicators/wma.src.js +3 -1
- package/es-modules/masters/indicators/zigzag.src.js +3 -1
- package/es-modules/masters/modules/accessibility.src.js +4 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +3 -5
- package/es-modules/masters/modules/annotations.src.js +6 -3
- package/es-modules/masters/modules/arc-diagram.src.js +3 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +2 -1
- package/es-modules/masters/modules/boost-canvas.src.js +2 -1
- package/es-modules/masters/modules/boost.src.js +3 -2
- package/es-modules/masters/modules/broken-axis.src.js +4 -3
- package/es-modules/masters/modules/bullet.src.js +3 -1
- package/es-modules/masters/modules/coloraxis.src.js +4 -3
- package/es-modules/masters/modules/current-date-indicator.src.js +2 -1
- package/es-modules/masters/modules/cylinder.src.js +3 -1
- package/es-modules/masters/modules/data-tools.src.js +9 -8
- package/es-modules/masters/modules/data.src.js +9 -8
- package/es-modules/masters/modules/datagrouping.src.js +7 -5
- package/es-modules/masters/modules/debugger.src.js +3 -2
- package/es-modules/masters/modules/dependency-wheel.src.js +3 -1
- package/es-modules/masters/modules/dotplot.src.js +3 -1
- package/es-modules/masters/modules/drag-panes.src.js +2 -1
- package/es-modules/masters/modules/draggable-points.src.js +2 -1
- package/es-modules/masters/modules/drilldown.src.js +3 -2
- package/es-modules/masters/modules/dumbbell.src.js +3 -1
- package/es-modules/masters/modules/export-data.src.js +5 -4
- package/es-modules/masters/modules/exporting.src.js +6 -5
- package/es-modules/masters/modules/flowmap.src.js +3 -1
- package/es-modules/masters/modules/full-screen.src.js +4 -3
- package/es-modules/masters/modules/funnel.src.js +2 -1
- package/es-modules/masters/modules/funnel3d.src.js +4 -3
- package/es-modules/masters/modules/gantt.src.js +15 -17
- package/es-modules/masters/modules/geoheatmap.src.js +3 -1
- package/es-modules/masters/modules/grid-axis.src.js +2 -1
- package/es-modules/masters/modules/heatmap.src.js +3 -5
- package/es-modules/masters/modules/heikinashi.src.js +2 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +3 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +3 -1
- package/es-modules/masters/modules/item-series.src.js +3 -1
- package/es-modules/masters/modules/lollipop.src.js +3 -1
- package/es-modules/masters/modules/map.src.js +15 -10
- package/es-modules/masters/modules/marker-clusters.src.js +2 -1
- package/es-modules/masters/modules/mouse-wheel-zoom.src.js +4 -2
- package/es-modules/masters/modules/navigator.src.d.ts +1 -0
- package/es-modules/masters/modules/navigator.src.js +19 -0
- package/es-modules/masters/modules/networkgraph.src.js +2 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +2 -1
- package/es-modules/masters/modules/offline-exporting.src.js +4 -3
- package/es-modules/masters/modules/organization.src.js +3 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +4 -2
- package/es-modules/masters/modules/parallel-coordinates.src.js +2 -1
- package/es-modules/masters/modules/pareto.src.js +3 -1
- package/es-modules/masters/modules/pathfinder.src.js +4 -3
- package/es-modules/masters/modules/pattern-fill.src.js +2 -1
- package/es-modules/masters/modules/pictorial.src.js +3 -1
- package/es-modules/masters/modules/price-indicator.src.js +2 -1
- package/es-modules/masters/modules/pyramid3d.src.js +3 -1
- package/es-modules/masters/modules/sankey.src.js +3 -1
- package/es-modules/masters/modules/series-label.src.js +2 -1
- package/es-modules/masters/modules/series-on-point.src.js +2 -1
- package/es-modules/masters/modules/solid-gauge.src.js +3 -1
- package/es-modules/masters/modules/sonification.src.js +2 -1
- package/es-modules/masters/modules/static-scale.src.js +2 -1
- package/es-modules/masters/modules/stock-tools.src.js +5 -3
- package/es-modules/masters/modules/stock.src.js +20 -15
- package/es-modules/masters/modules/streamgraph.src.js +3 -1
- package/es-modules/masters/modules/sunburst.src.js +4 -3
- package/es-modules/masters/modules/tiledwebmap.src.js +5 -4
- package/es-modules/masters/modules/tilemap.src.js +2 -1
- package/es-modules/masters/modules/timeline.src.js +3 -1
- package/es-modules/masters/modules/treegraph.src.js +3 -1
- package/es-modules/masters/modules/treegrid.src.js +2 -2
- package/es-modules/masters/modules/treemap.src.js +5 -4
- package/es-modules/masters/modules/variable-pie.src.js +3 -1
- package/es-modules/masters/modules/variwide.src.js +2 -1
- package/es-modules/masters/modules/vector.src.js +3 -1
- package/es-modules/masters/modules/venn.src.js +3 -1
- package/es-modules/masters/modules/windbarb.src.js +3 -1
- package/es-modules/masters/modules/wordcloud.src.js +3 -1
- package/es-modules/masters/modules/xrange.src.js +2 -1
- package/es-modules/masters/standalone-navigator.src.js +13 -0
- package/es-modules/masters/themes/avocado.src.js +2 -1
- package/es-modules/masters/themes/brand-dark.src.js +2 -1
- package/es-modules/masters/themes/brand-light.src.js +2 -1
- package/es-modules/masters/themes/dark-blue.src.js +2 -1
- package/es-modules/masters/themes/dark-green.src.js +2 -1
- package/es-modules/masters/themes/dark-unica.src.js +2 -1
- package/es-modules/masters/themes/gray.src.js +2 -1
- package/es-modules/masters/themes/grid-light.src.js +2 -1
- package/es-modules/masters/themes/grid.src.js +2 -1
- package/es-modules/masters/themes/high-contrast-dark.src.js +2 -1
- package/es-modules/masters/themes/high-contrast-light.src.js +2 -1
- package/es-modules/masters/themes/sand-signika.src.js +2 -1
- package/es-modules/masters/themes/skies.src.js +2 -1
- package/es-modules/masters/themes/sunset.src.js +2 -1
- package/es-modules/tsconfig.tsbuildinfo +1 -0
- package/globals.d.ts +9 -0
- package/globals.src.d.ts +9 -0
- package/highcharts-3d.js +3 -3
- package/highcharts-3d.src.js +32 -33
- package/highcharts-gantt.js +4 -4
- package/highcharts-gantt.src.js +5703 -5639
- package/highcharts-more.d.ts +4 -0
- package/highcharts-more.js +3 -3
- package/highcharts-more.src.d.ts +4 -0
- package/highcharts-more.src.js +88 -87
- package/highcharts.d.ts +834 -5365
- package/highcharts.js +4 -4
- package/highcharts.src.d.ts +834 -5365
- package/highcharts.src.js +1583 -1682
- package/highmaps.js +4 -4
- package/highmaps.src.js +1837 -1835
- package/highstock.js +4 -4
- package/highstock.src.js +12488 -12510
- package/indicators/acceleration-bands.js +3 -3
- package/indicators/acceleration-bands.src.js +12 -11
- package/indicators/accumulation-distribution.js +3 -3
- package/indicators/accumulation-distribution.src.js +6 -3
- package/indicators/ao.js +3 -3
- package/indicators/ao.src.js +3 -2
- package/indicators/apo.js +3 -3
- package/indicators/apo.src.js +4 -3
- package/indicators/aroon-oscillator.js +3 -3
- package/indicators/aroon-oscillator.src.js +12 -11
- package/indicators/aroon.js +3 -3
- package/indicators/aroon.src.js +13 -12
- package/indicators/atr.js +3 -3
- package/indicators/atr.src.js +3 -2
- package/indicators/bollinger-bands.js +3 -3
- package/indicators/bollinger-bands.src.js +12 -11
- package/indicators/cci.js +3 -3
- package/indicators/cci.src.js +3 -2
- package/indicators/chaikin.js +3 -3
- package/indicators/chaikin.src.js +7 -4
- package/indicators/cmf.js +3 -3
- package/indicators/cmf.src.js +4 -3
- package/indicators/cmo.js +3 -3
- package/indicators/cmo.src.js +5 -4
- package/indicators/dema.js +3 -3
- package/indicators/dema.src.js +3 -2
- package/indicators/disparity-index.js +3 -3
- package/indicators/disparity-index.src.js +3 -2
- package/indicators/dmi.js +3 -3
- package/indicators/dmi.src.js +12 -11
- package/indicators/dpo.js +3 -3
- package/indicators/dpo.src.js +4 -3
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +2 -1
- package/indicators/ichimoku-kinko-hyo.js +3 -3
- package/indicators/ichimoku-kinko-hyo.src.js +3 -2
- package/indicators/indicators-all.js +3 -3
- package/indicators/indicators-all.src.js +63 -60
- package/indicators/indicators.js +3 -3
- package/indicators/indicators.src.js +286 -3
- package/indicators/keltner-channels.js +3 -3
- package/indicators/keltner-channels.src.js +12 -11
- package/indicators/klinger.js +3 -3
- package/indicators/klinger.src.js +13 -12
- package/indicators/macd.js +3 -3
- package/indicators/macd.src.js +3 -2
- package/indicators/mfi.js +3 -3
- package/indicators/mfi.src.js +3 -2
- package/indicators/momentum.js +3 -3
- package/indicators/momentum.src.js +3 -2
- package/indicators/natr.js +3 -3
- package/indicators/natr.src.js +3 -2
- package/indicators/obv.js +3 -3
- package/indicators/obv.src.js +4 -3
- package/indicators/pivot-points.js +3 -3
- package/indicators/pivot-points.src.js +5 -4
- package/indicators/ppo.js +3 -3
- package/indicators/ppo.src.js +4 -3
- package/indicators/price-channel.js +3 -3
- package/indicators/price-channel.src.js +12 -11
- package/indicators/price-envelopes.js +3 -3
- package/indicators/price-envelopes.src.js +12 -11
- package/indicators/psar.js +3 -3
- package/indicators/psar.src.js +3 -2
- package/indicators/regressions.js +3 -3
- package/indicators/regressions.src.js +10 -9
- package/indicators/roc.js +3 -3
- package/indicators/roc.src.js +3 -2
- package/indicators/rsi.js +3 -3
- package/indicators/rsi.src.js +3 -2
- package/indicators/slow-stochastic.js +3 -3
- package/indicators/slow-stochastic.src.js +3 -2
- package/indicators/stochastic.js +3 -3
- package/indicators/stochastic.src.js +12 -11
- package/indicators/supertrend.js +3 -3
- package/indicators/supertrend.src.js +20 -19
- package/indicators/tema.js +3 -3
- package/indicators/tema.src.js +3 -2
- package/indicators/trendline.js +3 -3
- package/indicators/trendline.src.js +3 -2
- package/indicators/trix.js +3 -3
- package/indicators/trix.src.js +3 -2
- package/indicators/volume-by-price.js +3 -3
- package/indicators/volume-by-price.src.js +8 -7
- package/indicators/vwap.js +3 -3
- package/indicators/vwap.src.js +3 -2
- package/indicators/williams-r.js +3 -3
- package/indicators/williams-r.src.js +4 -3
- package/indicators/wma.js +3 -3
- package/indicators/wma.src.js +3 -2
- package/indicators/zigzag.js +3 -3
- package/indicators/zigzag.src.js +8 -7
- package/lib/svg2pdf.js +7 -7
- package/lib/svg2pdf.src.js +185 -150
- package/modules/accessibility.js +3 -3
- package/modules/accessibility.src.js +664 -2793
- package/modules/annotations-advanced.d.ts +3 -0
- package/modules/annotations-advanced.js +3 -3
- package/modules/annotations-advanced.src.d.ts +3 -0
- package/modules/annotations-advanced.src.js +2949 -2920
- package/modules/annotations.d.ts +0 -3
- package/modules/annotations.js +3 -3
- package/modules/annotations.src.d.ts +0 -3
- package/modules/annotations.src.js +2926 -2905
- package/modules/arc-diagram.js +3 -3
- package/modules/arc-diagram.src.js +8 -6
- package/modules/arrow-symbols.js +3 -3
- package/modules/arrow-symbols.src.js +10 -13
- package/modules/boost-canvas.js +3 -3
- package/modules/boost-canvas.src.js +73 -26
- package/modules/boost.js +3 -3
- package/modules/boost.src.js +108 -30
- package/modules/broken-axis.js +3 -3
- package/modules/broken-axis.src.js +9 -9
- package/modules/bullet.js +3 -3
- package/modules/bullet.src.js +5 -4
- package/modules/coloraxis.js +3 -3
- package/modules/coloraxis.src.js +10 -9
- package/modules/current-date-indicator.js +3 -3
- package/modules/current-date-indicator.src.js +3 -2
- package/modules/cylinder.js +3 -3
- package/modules/cylinder.src.js +12 -11
- package/modules/data-tools.js +3 -3
- package/modules/data-tools.src.js +53 -36
- package/modules/data.d.ts +2 -2
- package/modules/data.js +3 -3
- package/modules/data.src.d.ts +2 -2
- package/modules/data.src.js +24 -23
- package/modules/datagrouping.js +3 -3
- package/modules/datagrouping.src.js +25 -23
- package/modules/debugger.js +3 -3
- package/modules/debugger.src.js +6 -5
- package/modules/dependency-wheel.js +3 -3
- package/modules/dependency-wheel.src.js +7 -5
- package/modules/dotplot.js +3 -3
- package/modules/dotplot.src.js +3 -2
- package/modules/drag-panes.js +3 -3
- package/modules/drag-panes.src.js +19 -21
- package/modules/draggable-points.js +3 -3
- package/modules/draggable-points.src.js +18 -16
- package/modules/drilldown.js +3 -3
- package/modules/drilldown.src.js +29 -26
- package/modules/dumbbell.js +3 -3
- package/modules/dumbbell.src.js +5 -4
- package/modules/export-data.js +3 -3
- package/modules/export-data.src.js +33 -22
- package/modules/exporting.d.ts +1 -1
- package/modules/exporting.js +3 -3
- package/modules/exporting.src.d.ts +1 -1
- package/modules/exporting.src.js +40 -39
- package/modules/flowmap.js +3 -3
- package/modules/flowmap.src.js +3 -2
- package/modules/full-screen.js +3 -3
- package/modules/full-screen.src.js +9 -13
- package/modules/funnel.js +3 -3
- package/modules/funnel.src.js +3 -2
- package/modules/funnel3d.js +3 -3
- package/modules/funnel3d.src.js +12 -12
- package/modules/gantt.d.ts +3 -4
- package/modules/gantt.js +3 -3
- package/modules/gantt.src.d.ts +3 -4
- package/modules/gantt.src.js +4165 -4002
- package/modules/geoheatmap.js +3 -3
- package/modules/geoheatmap.src.js +8 -7
- package/modules/grid-axis.js +3 -3
- package/modules/grid-axis.src.js +9 -8
- package/modules/heatmap.d.ts +2 -2
- package/modules/heatmap.js +3 -3
- package/modules/heatmap.src.d.ts +2 -2
- package/modules/heatmap.src.js +21 -15
- package/modules/heikinashi.js +3 -3
- package/modules/heikinashi.src.js +9 -6
- package/modules/histogram-bellcurve.js +3 -3
- package/modules/histogram-bellcurve.src.js +4 -3
- package/modules/hollowcandlestick.js +3 -3
- package/modules/hollowcandlestick.src.js +5 -4
- package/modules/item-series.js +3 -3
- package/modules/item-series.src.js +4 -3
- package/modules/lollipop.js +3 -3
- package/modules/lollipop.src.js +6 -3
- package/modules/map.d.ts +22 -1
- package/modules/map.js +3 -3
- package/modules/map.src.d.ts +22 -1
- package/modules/map.src.js +256 -155
- package/modules/marker-clusters.js +3 -3
- package/modules/marker-clusters.src.js +35 -37
- package/modules/mouse-wheel-zoom.js +3 -3
- package/modules/mouse-wheel-zoom.src.js +55 -163
- package/modules/navigator.d.ts +148 -0
- package/modules/navigator.js +9 -0
- package/modules/navigator.src.d.ts +148 -0
- package/modules/navigator.src.js +3921 -0
- package/modules/networkgraph.d.ts +2 -2
- package/modules/networkgraph.js +3 -3
- package/modules/networkgraph.src.d.ts +2 -2
- package/modules/networkgraph.src.js +36 -35
- package/modules/no-data-to-display.js +3 -3
- package/modules/no-data-to-display.src.js +6 -6
- package/modules/offline-exporting.js +3 -3
- package/modules/offline-exporting.src.js +10 -10
- package/modules/organization.js +3 -3
- package/modules/organization.src.js +41 -15
- package/modules/overlapping-datalabels.js +3 -3
- package/modules/overlapping-datalabels.src.js +4 -2
- package/modules/parallel-coordinates.js +3 -3
- package/modules/parallel-coordinates.src.js +12 -12
- package/modules/pareto.js +3 -3
- package/modules/pareto.src.js +3 -2
- package/modules/pathfinder.js +3 -3
- package/modules/pathfinder.src.js +18 -22
- package/modules/pattern-fill.js +3 -3
- package/modules/pattern-fill.src.js +22 -23
- package/modules/pictorial.js +3 -3
- package/modules/pictorial.src.js +25 -26
- package/modules/price-indicator.js +3 -3
- package/modules/price-indicator.src.js +3 -2
- package/modules/pyramid3d.js +3 -3
- package/modules/pyramid3d.src.js +3 -2
- package/modules/sankey.js +3 -3
- package/modules/sankey.src.js +93 -26
- package/modules/series-label.js +3 -3
- package/modules/series-label.src.js +28 -19
- package/modules/series-on-point.js +3 -3
- package/modules/series-on-point.src.js +5 -4
- package/modules/solid-gauge.js +3 -3
- package/modules/solid-gauge.src.js +3 -2
- package/modules/sonification.d.ts +2 -2
- package/modules/sonification.js +3 -3
- package/modules/sonification.src.d.ts +2 -2
- package/modules/sonification.src.js +8 -6
- package/modules/static-scale.js +3 -3
- package/modules/static-scale.src.js +6 -6
- package/modules/stock-tools.js +3 -3
- package/modules/stock-tools.src.js +109 -96
- package/modules/stock.d.ts +1 -1
- package/modules/stock.js +3 -3
- package/modules/stock.src.d.ts +1 -1
- package/modules/stock.src.js +10762 -10685
- package/modules/streamgraph.js +3 -3
- package/modules/streamgraph.src.js +3 -2
- package/modules/sunburst.js +3 -3
- package/modules/sunburst.src.js +50 -37
- package/modules/tiledwebmap.js +4 -4
- package/modules/tiledwebmap.src.js +28 -29
- package/modules/tilemap.js +3 -3
- package/modules/tilemap.src.js +4 -3
- package/modules/timeline.js +3 -3
- package/modules/timeline.src.js +5 -4
- package/modules/treegraph.js +3 -3
- package/modules/treegraph.src.js +58 -23
- package/modules/treegrid.js +3 -3
- package/modules/treegrid.src.js +49 -33
- package/modules/treemap.js +3 -3
- package/modules/treemap.src.js +44 -26
- package/modules/variable-pie.js +3 -3
- package/modules/variable-pie.src.js +3 -2
- package/modules/variwide.js +3 -3
- package/modules/variwide.src.js +9 -4
- package/modules/vector.js +3 -3
- package/modules/vector.src.js +3 -2
- package/modules/venn.js +3 -3
- package/modules/venn.src.js +16 -17
- package/modules/windbarb.js +3 -3
- package/modules/windbarb.src.js +5 -4
- package/modules/wordcloud.js +3 -3
- package/modules/wordcloud.src.js +10 -8
- package/modules/xrange.js +3 -3
- package/modules/xrange.src.js +5 -4
- package/package.json +1 -1
- package/standalone-navigator.js +2 -0
- package/standalone-navigator.src.js +49402 -0
- package/themes/avocado.js +3 -3
- package/themes/avocado.src.js +2 -1
- package/themes/brand-dark.js +3 -3
- package/themes/brand-dark.src.js +2 -1
- package/themes/brand-light.js +3 -3
- package/themes/brand-light.src.js +2 -1
- package/themes/dark-blue.js +3 -3
- package/themes/dark-blue.src.js +2 -1
- package/themes/dark-green.js +3 -3
- package/themes/dark-green.src.js +2 -1
- package/themes/dark-unica.js +3 -3
- package/themes/dark-unica.src.js +2 -1
- package/themes/gray.js +3 -3
- package/themes/gray.src.js +2 -1
- package/themes/grid-light.js +3 -3
- package/themes/grid-light.src.js +2 -1
- package/themes/grid.js +3 -3
- package/themes/grid.src.js +2 -1
- package/themes/high-contrast-dark.js +3 -3
- package/themes/high-contrast-dark.src.js +2 -1
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.src.js +2 -1
- package/themes/sand-signika.js +3 -3
- package/themes/sand-signika.src.js +2 -1
- package/themes/skies.js +3 -3
- package/themes/skies.src.js +2 -1
- package/themes/sunset.js +3 -3
- package/themes/sunset.src.js +2 -1
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +0 -259
- package/lib/canvg.js +0 -8
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
* Highcharts JS v11.
|
|
1
|
+
!/**
|
|
2
|
+
* Highcharts JS v11.4.0 (2024-03-04)
|
|
3
3
|
*
|
|
4
4
|
* Marker clusters module for Highcharts
|
|
5
5
|
*
|
|
6
6
|
* (c) 2010-2024 Wojciech Chmiel
|
|
7
7
|
*
|
|
8
8
|
* License: www.highcharts.com/license
|
|
9
|
-
*/!function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/modules/marker-clusters",["highcharts"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function i(t,e,i,s){t.hasOwnProperty(e)||(t[e]=s.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:e,module:t[e]}})))}i(e,"Extensions/MarkerClusters/MarkerClusterDefaults.js",[],function(){return{cluster:{enabled:!1,allowOverlap:!0,animation:{duration:500},drillToCluster:!0,minimumClusterSize:2,layoutAlgorithm:{gridSize:50,distance:40,kmeansThreshold:100},marker:{symbol:"cluster",radius:15,lineWidth:0,lineColor:"#ffffff"},dataLabels:{enabled:!0,format:"{point.clusterPointsAmount}",verticalAlign:"middle",align:"center",style:{color:"contrast"},inside:!0}},tooltip:{clusterFormat:"<span>Clustered points: {point.clusterPointsAmount}</span><br/>"}}}),i(e,"Extensions/MarkerClusters/MarkerClusterScatter.js",[e["Core/Animation/AnimationUtilities.js"],e["Core/Globals.js"],e["Extensions/MarkerClusters/MarkerClusterDefaults.js"],e["Core/Utilities.js"]],function(t,e,i,s){let a;let{animObject:r}=t,{composed:o}=e,{cluster:n}=i,{addEvent:l,defined:p,error:u,isArray:d,isFunction:h,isObject:c,isNumber:f,merge:m,objectEach:g,pushUnique:x,relativeLength:y,syncTimeout:C}=s,k={grid:function(t,e,i,s){let a,r,o,n,l;let p={},u=this.getGridOffset(),d=this.getScaledGridSize(s);for(l=0;l<t.length;l++){let s=U(this,{x:t[l],y:e[l]});a=s.x-u.plotLeft,r=s.y-u.plotTop,o=Math.floor(a/d),p[n=Math.floor(r/d)+"-"+o]||(p[n]=[]),p[n].push({dataIndex:i[l],x:t[l],y:e[l]})}return p},kmeans:function(t,e,i,s){let a=[],r=[],o={},l=s.processedDistance||n.layoutAlgorithm.distance,p=s.iterations,u=0,d=!0,h=0,c=0,f,m=[];s.processedGridSize=s.processedDistance;let g=this.markerClusterAlgorithms?this.markerClusterAlgorithms.grid.call(this,t,e,i,s):{};for(let t in g)g[t].length>1&&(f=X(g[t]),a.push({posX:f.x,posY:f.y,oldX:0,oldY:0,startPointsLen:g[t].length,points:[]}));for(;d;){for(let t of a)t.points.length=0;r.length=0;for(let s=0;s<t.length;s++)h=t[s],c=e[s],(m=this.getClusterDistancesFromPoint(a,h,c)).length&&m[0].distance<l?a[m[0].clusterIndex].points.push({x:h,y:c,dataIndex:i[s]}):r.push({x:h,y:c,dataIndex:i[s]});for(let t=0;t<a.length;t++)1===a[t].points.length&&(m=this.getClusterDistancesFromPoint(a,a[t].points[0].x,a[t].points[0].y))[1].distance<l&&(a[m[1].clusterIndex].points.push(a[t].points[0]),a[m[0].clusterIndex].points.length=0);d=!1;for(let t=0;t<a.length;t++)f=X(a[t].points),a[t].oldX=a[t].posX,a[t].oldY=a[t].posY,a[t].posX=f.x,a[t].posY=f.y,(a[t].posX>a[t].oldX+1||a[t].posX<a[t].oldX-1||a[t].posY>a[t].oldY+1||a[t].posY<a[t].oldY-1)&&(d=!0);p&&(d=u<p-1),u++}for(let t=0,e=a.length;t<e;++t)o["cluster"+t]=a[t].points;for(let t=0,e=r.length;t<e;++t)o["noise"+t]=[r[t]];return o},optimizedKmeans:function(t,e,i,s){let a=s.processedDistance||n.layoutAlgorithm.gridSize,r=this.getRealExtremes(),o=(this.options.cluster||{}).marker,l,u={},d,h;if(!this.markerClusterInfo||this.initMaxX&&this.initMaxX<r.maxX||this.initMinX&&this.initMinX>r.minX||this.initMaxY&&this.initMaxY<r.maxY||this.initMinY&&this.initMinY>r.minY)this.initMaxX=r.maxX,this.initMinX=r.minX,this.initMaxY=r.maxY,this.initMinY=r.minY,u=this.markerClusterAlgorithms?this.markerClusterAlgorithms.kmeans.call(this,t,e,i,s):{},this.baseClusters=null;else{for(let t of(this.baseClusters||(this.baseClusters={clusters:this.markerClusterInfo.clusters,noise:this.markerClusterInfo.noise}),this.baseClusters.clusters)){for(let e of(t.pointsOutside=[],t.pointsInside=[],t.data)){let i=U(this,e),s=U(this,t);l=Math.sqrt(Math.pow(i.x-s.x,2)+Math.pow(i.y-s.y,2)),d=a-(h=t.clusterZone&&t.clusterZone.marker&&t.clusterZone.marker.radius?t.clusterZone.marker.radius:o&&o.radius?o.radius:n.marker.radius)>=0?a-h:h,l>h+d&&p(t.pointsOutside)?t.pointsOutside.push(e):p(t.pointsInside)&&t.pointsInside.push(e)}t.pointsInside.length&&(u[t.id]=t.pointsInside);let e=0;for(let i of t.pointsOutside)u[t.id+"_noise"+e++]=[i]}for(let t of this.baseClusters.noise)u[t.id]=t.data}return u}},M=[],I=0;function S(t,e,i){t.attr({opacity:e}).animate({opacity:1},i)}function b(t,e,i,s){for(let a of(A(t,s,i,!0,!0),e))a.point&&a.point.destroy&&a.point.destroy()}function A(t,e,i,s,a){t.point&&(s&&t.point.graphic&&(t.point.graphic.show(),S(t.point.graphic,e,i)),a&&t.point.dataLabel&&(t.point.dataLabel.show(),S(t.point.dataLabel,e,i)))}function X(t){let e=t.length,i=0,s=0;for(let a=0;a<e;a++)i+=t[a].x,s+=t[a].y;return{x:i/e,y:s/e}}function Y(t,e){let i=[];return i.length=e,t.clusters.forEach(function(t){t.data.forEach(function(t){i[t.dataIndex]=t})}),t.noise.forEach(function(t){i[t.data[0].dataIndex]=t.data[0]}),i}function D(){return Math.random().toString(36).substring(2,7)+"-"+I++}function L(t,e,i){t.point&&(e&&t.point.graphic&&t.point.graphic.hide(),i&&t.point.dataLabel&&t.point.dataLabel.hide())}function z(t){let e=t.point||t.target;e.firePointEvent("drillToCluster",t,function(t){let e=t.point||t.target,i=e.series,s=e.series.xAxis,a=e.series.yAxis,r=e.series.chart,o=r.mapView,n=i.options.cluster,l=(n||{}).drillToCluster;if(l&&e.clusteredData){let i=e.clusteredData.map(t=>t.x).sort((t,e)=>t-e),n=e.clusteredData.map(t=>t.y).sort((t,e)=>t-e),l=i[0],p=i[i.length-1],u=n[0],d=n[n.length-1],h=Math.abs((p-l)*.1),c=Math.abs((d-u)*.1),f=Math.min(l,p)-h,m=Math.max(l,p)+h,g=Math.min(u,d)-c,x=Math.max(u,d)+c;o?o.fitToBounds({x1:f,x2:m,y1:g,y2:x}):s&&a&&(r.pointer.zoomX=!0,r.pointer.zoomY=!0,r.zoom({originalEvent:t,xAxis:[{axis:s,min:f,max:m}],yAxis:[{axis:a,min:g,max:x}]}))}})}function P(t,e){let{chart:i,xAxis:s,yAxis:a}=t;return i.mapView?i.mapView.pixelsToProjectedUnits(e):{x:s?s.toValue(e.x):0,y:a?a.toValue(e.y):0}}function w(t){let e=this.chart,i=e.mapView,s=this.options.cluster,a=r((s||{}).animation),o=a.duration||500,n=(this.markerClusterInfo||{}).pointsState,l=(n||{}).newState,p=(n||{}).oldState,u=[],d,h,c,f=0,m=0,g=0,x=!1,y=!1;if(p&&l){h=l[t.stateId];let s=U(this,h);m=s.x-(i?0:e.plotLeft),g=s.y-(i?0:e.plotTop),1===h.parentsId.length?(d=p[(l||{})[t.stateId].parentsId[0]],h.point&&h.point.graphic&&d&&d.point&&d.point.plotX&&d.point.plotY&&d.point.plotX!==h.point.plotX&&d.point.plotY!==h.point.plotY&&(c=h.point.graphic.getBBox(),f=h.point.graphic&&h.point.graphic.isImg?0:c.width/2,h.point.graphic.attr({x:d.point.plotX-f,y:d.point.plotY-f}),h.point.graphic.animate({x:m-(h.point.graphic.radius||0),y:g-(h.point.graphic.radius||0)},a,function(){y=!0,d.point&&d.point.destroy&&d.point.destroy()}),h.point.dataLabel&&h.point.dataLabel.alignAttr&&d.point.dataLabel&&d.point.dataLabel.alignAttr&&(h.point.dataLabel.attr({x:d.point.dataLabel.alignAttr.x,y:d.point.dataLabel.alignAttr.y}),h.point.dataLabel.animate({x:h.point.dataLabel.alignAttr.x,y:h.point.dataLabel.alignAttr.y},a)))):0===h.parentsId.length?(L(h,!0,!0),C(function(){A(h,.1,a,!0,!0)},o/2)):(L(h,!0,!0),h.parentsId.forEach(function(t){p&&p[t]&&(d=p[t],u.push(d),d.point&&d.point.graphic&&(x=!0,d.point.graphic.show(),d.point.graphic.animate({x:m-(d.point.graphic.radius||0),y:g-(d.point.graphic.radius||0),opacity:.4},a,function(){y=!0,b(h,u,a,.7)}),d.point.dataLabel&&-9999!==d.point.dataLabel.y&&h.point&&h.point.dataLabel&&h.point.dataLabel.alignAttr&&(d.point.dataLabel.show(),d.point.dataLabel.animate({x:h.point.dataLabel.alignAttr.x,y:h.point.dataLabel.alignAttr.y,opacity:.4},a))))}),C(function(){y||b(h,u,a,.85)},o),x||C(function(){b(h,u,a,.1)},o/2))}}function E(){let t=this.markerClusterSeriesData;(t||[]).forEach(function(t){t&&t.destroy&&t.destroy()}),this.markerClusterSeriesData=null}function j(){let t,e,i,s,r,o,u,d,c,m,g,x,C,k,M,I;let S=this,b=S.chart,A=b.mapView,X=S.xData,Y=S.yData,D=S.options.cluster,L=S.getRealExtremes(),w=[],E=[],j=[];if(A&&S.is("mappoint")&&X&&Y&&(S.options.data||[]).forEach((t,e)=>{let i=S.projectPoint(t);i&&(X[e]=i.x,Y[e]=i.y)}),D&&D.enabled&&X&&X.length&&Y&&Y.length&&!b.polar){g=D.layoutAlgorithm.type,(k=D.layoutAlgorithm).processedGridSize=y(k.gridSize||n.layoutAlgorithm.gridSize,b.plotWidth),k.processedDistance=y(k.distance||n.layoutAlgorithm.distance,b.plotWidth),s=k.kmeansThreshold||n.layoutAlgorithm.kmeansThreshold;let A=k.processedGridSize/2,O=P(S,{x:0,y:0}),V=P(S,{x:A,y:A});for(I=0,r=Math.abs(O.x-V.x),o=Math.abs(O.y-V.y);I<X.length;I++)!S.dataMaxX&&(p(d)&&p(u)&&p(m)&&p(c)?f(Y[I])&&f(m)&&f(c)&&(d=Math.max(X[I],d),u=Math.min(X[I],u),m=Math.max(Y[I]||m,m),c=Math.min(Y[I]||c,c)):(d=u=X[I],m=c=Y[I])),X[I]>=L.minX-r&&X[I]<=L.maxX+r&&(Y[I]||L.minY)>=L.minY-o&&(Y[I]||L.maxY)<=L.maxY+o&&(w.push(X[I]),E.push(Y[I]),j.push(I));p(d)&&p(u)&&f(m)&&f(c)&&(S.dataMaxX=d,S.dataMinX=u,S.dataMaxY=m,S.dataMinY=c),x=(C=(h(g)?g:S.markerClusterAlgorithms?g&&S.markerClusterAlgorithms[g]?S.markerClusterAlgorithms[g]:w.length<s?S.markerClusterAlgorithms.kmeans:S.markerClusterAlgorithms.grid:function(){return!1}).call(this,w,E,j,k))?S.getClusteredData(C,D):C,D.animation&&S.markerClusterInfo&&S.markerClusterInfo.pointsState&&S.markerClusterInfo.pointsState.oldState?(function(t){if(t){let e;for(let i of Object.keys(t))(e=t[i]).point&&e.point.destroy&&e.point.destroy()}}(S.markerClusterInfo.pointsState.oldState),t=S.markerClusterInfo.pointsState.newState):t={},e=X.length,i=S.markerClusterInfo,x&&(S.processedXData=x.groupedXData,S.processedYData=x.groupedYData,S.hasGroupedData=!0,S.markerClusterInfo=x,S.groupMap=x.groupMap),a.apply(this),x&&S.markerClusterInfo&&((S.markerClusterInfo.clusters||[]).forEach(function(t){(M=S.points[t.index]).isCluster=!0,M.clusteredData=t.data,M.clusterPointsAmount=t.data.length,t.point=M,l(M,"click",z)}),(S.markerClusterInfo.noise||[]).forEach(function(t){t.point=S.points[t.index]}),D.animation&&S.markerClusterInfo&&(S.markerClusterInfo.pointsState={oldState:t,newState:S.getPointsState(x,i,e)}),D.animation?this.hideClusteredData():this.destroyClusteredData(),this.markerClusterSeriesData=this.hasGroupedData?this.points:null)}else a.apply(this)}function O(t,e,i){let s=[];for(let a=0;a<t.length;a++){let r=U(this,{x:e,y:i}),o=U(this,{x:t[a].posX,y:t[a].posY}),n=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2));s.push({clusterIndex:a,distance:n})}return s.sort((t,e)=>t.distance-e.distance)}function V(t,e){let i=[],s=[],a=[],r=[],o=[],l=Math.max(2,e.minimumClusterSize||2),p=0,f,g,x,y,C,k,M,I,S,b,A,Y,L,z;if(h(e.layoutAlgorithm.type)&&!this.isValidGroupedDataObject(t))return u("Highcharts marker-clusters module: The custom algorithm result is not valid!",!1,this.chart),!1;for(z in t)if(t[z].length>=l){if(x=t[z],f=D(),C=x.length,e.zones)for(L=0;L<e.zones.length;L++)C>=e.zones[L].from&&C<=e.zones[L].to&&((A=e.zones[L]).zoneIndex=L,b=e.zones[L].marker,Y=e.zones[L].className);for(S=X(x),"grid"!==e.layoutAlgorithm.type||e.allowOverlap?M={x:S.x,y:S.y}:(k=this.options.marker||{},M=this.preventClusterCollisions({x:S.x,y:S.y,key:z,groupedData:t,gridSize:this.getScaledGridSize(e.layoutAlgorithm),defaultRadius:k.radius||3+(k.lineWidth||0),clusterRadius:b&&b.radius?b.radius:(e.marker||{}).radius||n.marker.radius})),L=0;L<C;L++)x[L].parentStateId=f;if(a.push({x:M.x,y:M.y,id:z,stateId:f,index:p,data:x,clusterZone:A,clusterZoneClassName:Y}),i.push(M.x),s.push(M.y),o.push({options:{formatPrefix:"cluster",dataLabels:e.dataLabels,marker:m(e.marker,{states:e.states},b||{})}}),this.options.data&&this.options.data.length)for(L=0;L<C;L++)c(this.options.data[x[L].dataIndex])&&(x[L].options=this.options.data[x[L].dataIndex]);p++,b=null}else for(L=0;L<t[z].length;L++)g=t[z][L],f=D(),I=null,y=((this.options||{}).data||[])[g.dataIndex],i.push(g.x),s.push(g.y),g.parentStateId=f,r.push({x:g.x,y:g.y,id:z,stateId:f,index:p,data:t[z]}),I=y&&"object"==typeof y&&!d(y)?m(y,{x:g.x,y:g.y}):{userOptions:y,x:g.x,y:g.y},o.push({options:I}),p++;return{clusters:a,noise:r,groupedXData:i,groupedYData:s,groupMap:o}}function T(){let t=this.chart,e=this.xAxis,i=this.yAxis,s=0;return{plotLeft:e&&this.dataMinX&&this.dataMaxX?e.reversed?e.toPixels(this.dataMaxX):e.toPixels(this.dataMinX):t.plotLeft,plotTop:i&&this.dataMinY&&this.dataMaxY?i.reversed?i.toPixels(this.dataMinY):i.toPixels(this.dataMaxY):t.plotTop}}function G(t,e,i){let s,a;let r=e?Y(e,i):[],o=Y(t,i),n={};M=[],t.clusters.forEach(function(t){n[t.stateId]={x:t.x,y:t.y,id:t.stateId,point:t.point,parentsId:[]}}),t.noise.forEach(function(t){n[t.stateId]={x:t.x,y:t.y,id:t.stateId,point:t.point,parentsId:[]}});for(let t=0;t<o.length;t++)s=o[t],a=r[t],s&&a&&s.parentStateId&&a.parentStateId&&n[s.parentStateId]&&-1===n[s.parentStateId].parentsId.indexOf(a.parentStateId)&&(n[s.parentStateId].parentsId.push(a.parentStateId),-1===M.indexOf(a.parentStateId)&&M.push(a.parentStateId));return n}function v(){let t=this.chart,e=t.mapView?0:t.plotLeft,i=t.mapView?0:t.plotTop,s=P(this,{x:e,y:i}),a=P(this,{x:e+t.plotWidth,y:e+t.plotHeight}),r=s.x,o=a.x,n=s.y,l=a.y;return{minX:Math.min(r,o),maxX:Math.max(r,o),minY:Math.min(n,l),maxY:Math.max(n,l)}}function R(t){let e=this.xAxis,i=this.chart.mapView,s=t.processedGridSize||n.layoutAlgorithm.gridSize,a=!0,r=1,o=1;this.gridValueSize||(i?this.gridValueSize=s/i.getScale():this.gridValueSize=Math.abs(e.toValue(s)-e.toValue(0)));let l=i?this.gridValueSize*i.getScale():e.toPixels(this.gridValueSize)-e.toPixels(0),p=+(s/l).toFixed(14);for(;a&&1!==p;){let t=Math.pow(2,r);p>.75&&p<1.25?a=!1:p>=1/t&&p<2*(1/t)?(a=!1,o=t):p<=t&&p>t/2&&(a=!1,o=1/t),r++}return s/o/p}function Z(){let t=this.markerClusterSeriesData,e=((this.markerClusterInfo||{}).pointsState||{}).oldState||{},i=M.map(t=>(e[t].point||{}).id||"");(t||[]).forEach(function(t){t&&-1!==i.indexOf(t.id)?(t.graphic&&t.graphic.hide(),t.dataLabel&&t.dataLabel.hide()):t&&t.destroy&&t.destroy()})}function F(t){let e=!1,i;return!!c(t)&&(g(t,function(t){if(e=!0,!d(t)||!t.length){e=!1;return}for(i=0;i<t.length;i++)if(!c(t[i])||!t[i].x||!t[i].y){e=!1;return}}),e)}function H(t){let[e,i]=t.key.split("-").map(parseFloat),s=t.gridSize,a=t.groupedData,r=t.defaultRadius,o=t.clusterRadius,l=i*s,u=e*s,d=U(this,t),h=[],c=(this.options.cluster||{}).marker,f=(this.options.cluster||{}).zones,m=this.getGridOffset(),g=d.x,x=d.y,y=0,C=0,k,M,I,S,b,A,Y,D,L,z,w,E,j;for(g-=m.plotLeft,x-=m.plotTop,Y=1;Y<5;Y++)for(D=0,I=Y%2?-1:1,S=Y<3?-1:1,b=Math.floor((g+I*o)/s),j=[(A=Math.floor((x+S*o)/s))+"-"+b,A+"-"+i,e+"-"+b];D<j.length;D++)-1===h.indexOf(j[D])&&j[D]!==t.key&&h.push(j[D]);for(let t of h)if(a[t]){a[t].posX||(w=X(a[t]),a[t].posX=w.x,a[t].posY=w.y);let d=U(this,{x:a[t].posX||0,y:a[t].posY||0});if(k=d.x-m.plotLeft,M=d.y-m.plotTop,[z,L]=t.split("-").map(parseFloat),f)for(Y=0,y=a[t].length;Y<f.length;Y++)y>=f[Y].from&&y<=f[Y].to&&(C=p((f[Y].marker||{}).radius)?f[Y].marker.radius||0:c&&c.radius?c.radius:n.marker.radius);a[t].length>1&&0===C&&c&&c.radius?C=c.radius:1===a[t].length&&(C=r),E=o+C,C=0,L!==i&&Math.abs(g-k)<E&&(g=L-i<0?l+o:l+s-o),z!==e&&Math.abs(x-M)<E&&(x=z-e<0?u+o:u+s-o)}let O=P(this,{x:g+m.plotLeft,y:x+m.plotTop});return a[t.key].posX=O.x,a[t.key].posY=O.y,O}function U(t,e){let{chart:i,xAxis:s,yAxis:a}=t;return i.mapView?i.mapView.projectedUnitsToPixels(e):{x:s?s.toPixels(e.x):0,y:a?a.toPixels(e.y):0}}return{compose:function t(e,s){if(x(o,t)){let t=s.prototype;a=t.generatePoints,t.markerClusterAlgorithms=k,t.animateClusterPoint=w,t.destroyClusteredData=E,t.generatePoints=j,t.getClusterDistancesFromPoint=O,t.getClusteredData=V,t.getGridOffset=T,t.getPointsState=G,t.getRealExtremes=v,t.getScaledGridSize=R,t.hideClusteredData=Z,t.isValidGroupedDataObject=F,t.preventClusterCollisions=H,l(s,"destroy",t.destroyClusteredData),(e.plotOptions||{}).series=m((e.plotOptions||{}).series,i)}}}}),i(e,"Extensions/MarkerClusters/MarkerClusters.js",[e["Core/Animation/AnimationUtilities.js"],e["Core/Defaults.js"],e["Core/Globals.js"],e["Extensions/MarkerClusters/MarkerClusterDefaults.js"],e["Extensions/MarkerClusters/MarkerClusterScatter.js"],e["Core/Utilities.js"]],function(t,e,i,s,a,r){let{animObject:o}=t,{defaultOptions:n}=e,{composed:l}=i,{addEvent:p,defined:u,error:d,isFunction:h,merge:c,pushUnique:f,syncTimeout:m}=r;function g(){let t=this.chart,e=0;for(let i of t.series)i.markerClusterInfo&&(e=o((i.options.cluster||{}).animation).duration||0);m(()=>{t.tooltip&&t.tooltip.destroy()},e)}function x(){for(let t of this.series||[])if(t.markerClusterInfo){let e=t.options.cluster,i=(t.markerClusterInfo||{}).pointsState,s=(i||{}).oldState;if((e||{}).animation&&t.markerClusterInfo&&0===t.chart.pointer.pinchDown.length&&"pan"!==((t.xAxis||{}).eventArgs||{}).trigger&&s&&Object.keys(s).length){for(let e of t.markerClusterInfo.clusters)t.animateClusterPoint(e);for(let e of t.markerClusterInfo.noise)t.animateClusterPoint(e)}}}function y(t){let e=t.point||t.target,i=e.series,s=i.options.cluster,a=((s||{}).events||{}).drillToCluster;h(a)&&a.call(this,t)}function C(){if(this.dataGroup)return d("Highcharts marker-clusters module: Running `Point.update` when point belongs to clustered series is not supported.",!1,this.series.chart),!1}function k(){let t=(this.options.cluster||{}).drillToCluster;if(this.markerClusterInfo&&this.markerClusterInfo.clusters)for(let e of this.markerClusterInfo.clusters)e.point&&e.point.graphic&&(e.point.graphic.addClass("highcharts-cluster-point"),t&&e.point&&(e.point.graphic.css({cursor:"pointer"}),e.point.dataLabel&&e.point.dataLabel.css({cursor:"pointer"})),u(e.clusterZone)&&e.point.graphic.addClass(e.clusterZoneClassName||"highcharts-cluster-zone-"+e.clusterZone.zoneIndex))}return(n.plotOptions||{}).series=c((n.plotOptions||{}).series,s),{compose:function t(e,i,s,r){if(f(l,t)){let t=r.prototype.pointClass,{scatter:o}=r.types;p(e,"setExtremes",g),p(i,"render",x),p(t,"drillToCluster",y),p(t,"update",C),p(r,"afterRender",k),o&&a.compose(s,o)}}}}),i(e,"Extensions/MarkerClusters/MarkerClusterSymbols.js",[e["Core/Utilities.js"]],function(t){let e;let{pushUnique:i}=t,s=[];function a(t,i,s,a){let r=s/2,o=a/2,n=e.arc(t+r,i+o,r-4,o-4,{start:.5*Math.PI,end:2.5*Math.PI,open:!1}),l=e.arc(t+r,i+o,r-3,o-3,{start:.5*Math.PI,end:2.5*Math.PI,innerR:r-2,open:!1}),p=e.arc(t+r,i+o,r-1,o-1,{start:.5*Math.PI,end:2.5*Math.PI,innerR:r,open:!1});return p.concat(l,n)}return{compose:function t(r){i(s,t)&&((e=r.prototype.symbols).cluster=a)}}}),i(e,"masters/modules/marker-clusters.src.js",[e["Core/Globals.js"],e["Extensions/MarkerClusters/MarkerClusters.js"],e["Extensions/MarkerClusters/MarkerClusterSymbols.js"]],function(t,e,i){e.compose(t.Axis,t.Chart,t.defaultOptions,t.Series),i.compose(t.SVGRenderer)})});
|
|
9
|
+
*/function(t){"object"==typeof module&&module.exports?(t.default=t,module.exports=t):"function"==typeof define&&define.amd?define("highcharts/modules/marker-clusters",["highcharts"],function(e){return t(e),t.Highcharts=e,t}):t("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(t){"use strict";var e=t?t._modules:{};function i(t,e,i,s){t.hasOwnProperty(e)||(t[e]=s.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:e,module:t[e]}})))}i(e,"Extensions/MarkerClusters/MarkerClusterDefaults.js",[],function(){return{cluster:{enabled:!1,allowOverlap:!0,animation:{duration:500},drillToCluster:!0,minimumClusterSize:2,layoutAlgorithm:{gridSize:50,distance:40,kmeansThreshold:100},marker:{symbol:"cluster",radius:15,lineWidth:0,lineColor:"#ffffff"},dataLabels:{enabled:!0,format:"{point.clusterPointsAmount}",verticalAlign:"middle",align:"center",style:{color:"contrast"},inside:!0}},tooltip:{clusterFormat:"<span>Clustered points: {point.clusterPointsAmount}</span><br/>"}}}),i(e,"Extensions/MarkerClusters/MarkerClusterScatter.js",[e["Core/Animation/AnimationUtilities.js"],e["Extensions/MarkerClusters/MarkerClusterDefaults.js"],e["Core/Utilities.js"]],function(t,e,i){let s;let{animObject:a}=t,{cluster:r}=e,{addEvent:o,defined:n,error:l,isArray:p,isFunction:u,isObject:d,isNumber:h,merge:c,objectEach:f,relativeLength:m,syncTimeout:g}=i,x={grid:function(t,e,i,s){let a,r,o,n,l;let p={},u=this.getGridOffset(),d=this.getScaledGridSize(s);for(l=0;l<t.length;l++){let s=Z(this,{x:t[l],y:e[l]});a=s.x-u.plotLeft,r=s.y-u.plotTop,o=Math.floor(a/d),p[n=Math.floor(r/d)+"-"+o]||(p[n]=[]),p[n].push({dataIndex:i[l],x:t[l],y:e[l]})}return p},kmeans:function(t,e,i,s){let a=[],o=[],n={},l=s.processedDistance||r.layoutAlgorithm.distance,p=s.iterations,u=0,d=!0,h=0,c=0,f,m=[];s.processedGridSize=s.processedDistance;let g=this.markerClusterAlgorithms?this.markerClusterAlgorithms.grid.call(this,t,e,i,s):{};for(let t in g)g[t].length>1&&(f=S(g[t]),a.push({posX:f.x,posY:f.y,oldX:0,oldY:0,startPointsLen:g[t].length,points:[]}));for(;d;){for(let t of a)t.points.length=0;o.length=0;for(let s=0;s<t.length;s++)h=t[s],c=e[s],(m=this.getClusterDistancesFromPoint(a,h,c)).length&&m[0].distance<l?a[m[0].clusterIndex].points.push({x:h,y:c,dataIndex:i[s]}):o.push({x:h,y:c,dataIndex:i[s]});for(let t=0;t<a.length;t++)1===a[t].points.length&&(m=this.getClusterDistancesFromPoint(a,a[t].points[0].x,a[t].points[0].y))[1].distance<l&&(a[m[1].clusterIndex].points.push(a[t].points[0]),a[m[0].clusterIndex].points.length=0);d=!1;for(let t=0;t<a.length;t++)f=S(a[t].points),a[t].oldX=a[t].posX,a[t].oldY=a[t].posY,a[t].posX=f.x,a[t].posY=f.y,(a[t].posX>a[t].oldX+1||a[t].posX<a[t].oldX-1||a[t].posY>a[t].oldY+1||a[t].posY<a[t].oldY-1)&&(d=!0);p&&(d=u<p-1),u++}for(let t=0,e=a.length;t<e;++t)n["cluster"+t]=a[t].points;for(let t=0,e=o.length;t<e;++t)n["noise"+t]=[o[t]];return n},optimizedKmeans:function(t,e,i,s){let a=s.processedDistance||r.layoutAlgorithm.gridSize,o=this.getRealExtremes(),l=(this.options.cluster||{}).marker,p,u={},d,h;if(!this.markerClusterInfo||this.initMaxX&&this.initMaxX<o.maxX||this.initMinX&&this.initMinX>o.minX||this.initMaxY&&this.initMaxY<o.maxY||this.initMinY&&this.initMinY>o.minY)this.initMaxX=o.maxX,this.initMinX=o.minX,this.initMaxY=o.maxY,this.initMinY=o.minY,u=this.markerClusterAlgorithms?this.markerClusterAlgorithms.kmeans.call(this,t,e,i,s):{},this.baseClusters=null;else{for(let t of(this.baseClusters||(this.baseClusters={clusters:this.markerClusterInfo.clusters,noise:this.markerClusterInfo.noise}),this.baseClusters.clusters)){for(let e of(t.pointsOutside=[],t.pointsInside=[],t.data)){let i=Z(this,e),s=Z(this,t);p=Math.sqrt(Math.pow(i.x-s.x,2)+Math.pow(i.y-s.y,2)),d=a-(h=t.clusterZone&&t.clusterZone.marker&&t.clusterZone.marker.radius?t.clusterZone.marker.radius:l&&l.radius?l.radius:r.marker.radius)>=0?a-h:h,p>h+d&&n(t.pointsOutside)?t.pointsOutside.push(e):n(t.pointsInside)&&t.pointsInside.push(e)}t.pointsInside.length&&(u[t.id]=t.pointsInside);let e=0;for(let i of t.pointsOutside)u[t.id+"_noise"+e++]=[i]}for(let t of this.baseClusters.noise)u[t.id]=t.data}return u}},y=[],C=0;function k(t,e,i){t.attr({opacity:e}).animate({opacity:1},i)}function M(t,e,i,s){for(let a of(I(t,s,i,!0,!0),e))a.point&&a.point.destroy&&a.point.destroy()}function I(t,e,i,s,a){t.point&&(s&&t.point.graphic&&(t.point.graphic.show(),k(t.point.graphic,e,i)),a&&t.point.dataLabel&&(t.point.dataLabel.show(),k(t.point.dataLabel,e,i)))}function S(t){let e=t.length,i=0,s=0;for(let a=0;a<e;a++)i+=t[a].x,s+=t[a].y;return{x:i/e,y:s/e}}function b(t,e){let i=[];return i.length=e,t.clusters.forEach(function(t){t.data.forEach(function(t){i[t.dataIndex]=t})}),t.noise.forEach(function(t){i[t.data[0].dataIndex]=t.data[0]}),i}function A(){return Math.random().toString(36).substring(2,7)+"-"+C++}function X(t,e,i){t.point&&(e&&t.point.graphic&&t.point.graphic.hide(),i&&t.point.dataLabel&&t.point.dataLabel.hide())}function Y(t){(t.point||t.target).firePointEvent("drillToCluster",t,function(t){let e=t.point||t.target,i=e.series,s=e.series.xAxis,a=e.series.yAxis,r=e.series.chart,{inverted:o,mapView:n,pointer:l}=r;if((i.options.cluster||{}).drillToCluster&&e.clusteredData){let t=e.clusteredData.map(t=>t.x).sort((t,e)=>t-e),i=e.clusteredData.map(t=>t.y).sort((t,e)=>t-e),p=t[0],u=t[t.length-1],d=i[0],h=i[i.length-1],c=Math.abs((u-p)*.1),f=Math.abs((h-d)*.1),m=Math.min(p,u)-c,g=Math.max(p,u)+c,x=Math.min(d,h)-f,y=Math.max(d,h)+f;if(n)n.fitToBounds({x1:m,x2:g,y1:x,y2:y});else if(s&&a){let t=s.toPixels(m),e=s.toPixels(g),i=a.toPixels(x),n=a.toPixels(y);o&&([t,e,i,n]=[i,n,t,e]),t>e&&([t,e]=[e,t]),i>n&&([i,n]=[n,i]),l&&(l.zoomX=!0,l.zoomY=!0),r.transform({from:{x:t,y:i,width:e-t,height:n-i}})}}})}function D(t,e){let{chart:i,xAxis:s,yAxis:a}=t;return i.mapView?i.mapView.pixelsToProjectedUnits(e):{x:s?s.toValue(e.x):0,y:a?a.toValue(e.y):0}}function L(t){let e=this.chart,i=e.mapView,s=a((this.options.cluster||{}).animation),r=s.duration||500,o=(this.markerClusterInfo||{}).pointsState,n=(o||{}).newState,l=(o||{}).oldState,p=[],u,d,h,c=0,f=0,m=0,x=!1,y=!1;if(l&&n){let a=Z(this,d=n[t.stateId]);f=a.x-(i?0:e.plotLeft),m=a.y-(i?0:e.plotTop),1===d.parentsId.length?(u=l[(n||{})[t.stateId].parentsId[0]],d.point&&d.point.graphic&&u&&u.point&&u.point.plotX&&u.point.plotY&&u.point.plotX!==d.point.plotX&&u.point.plotY!==d.point.plotY&&(h=d.point.graphic.getBBox(),c=d.point.graphic&&d.point.graphic.isImg?0:h.width/2,d.point.graphic.attr({x:u.point.plotX-c,y:u.point.plotY-c}),d.point.graphic.animate({x:f-(d.point.graphic.radius||0),y:m-(d.point.graphic.radius||0)},s,function(){y=!0,u.point&&u.point.destroy&&u.point.destroy()}),d.point.dataLabel&&d.point.dataLabel.alignAttr&&u.point.dataLabel&&u.point.dataLabel.alignAttr&&(d.point.dataLabel.attr({x:u.point.dataLabel.alignAttr.x,y:u.point.dataLabel.alignAttr.y}),d.point.dataLabel.animate({x:d.point.dataLabel.alignAttr.x,y:d.point.dataLabel.alignAttr.y},s)))):0===d.parentsId.length?(X(d,!0,!0),g(function(){I(d,.1,s,!0,!0)},r/2)):(X(d,!0,!0),d.parentsId.forEach(function(t){l&&l[t]&&(u=l[t],p.push(u),u.point&&u.point.graphic&&(x=!0,u.point.graphic.show(),u.point.graphic.animate({x:f-(u.point.graphic.radius||0),y:m-(u.point.graphic.radius||0),opacity:.4},s,function(){y=!0,M(d,p,s,.7)}),u.point.dataLabel&&-9999!==u.point.dataLabel.y&&d.point&&d.point.dataLabel&&d.point.dataLabel.alignAttr&&(u.point.dataLabel.show(),u.point.dataLabel.animate({x:d.point.dataLabel.alignAttr.x,y:d.point.dataLabel.alignAttr.y,opacity:.4},s))))}),g(function(){y||M(d,p,s,.85)},r),x||g(function(){M(d,p,s,.1)},r/2))}}function P(){(this.markerClusterSeriesData||[]).forEach(function(t){t&&t.destroy&&t.destroy()}),this.markerClusterSeriesData=null}function z(){let t,e,i,a,l,p,d,c,f,g,x,y,C,k,M,I;let S=this,b=S.chart,A=b.mapView,X=S.xData,L=S.yData,P=S.options.cluster,z=S.getRealExtremes(),w=[],E=[],j=[];if(A&&S.is("mappoint")&&X&&L&&(S.options.data||[]).forEach((t,e)=>{let i=S.projectPoint(t);i&&(X[e]=i.x,L[e]=i.y)}),P&&P.enabled&&X&&X.length&&L&&L.length&&!b.polar){x=P.layoutAlgorithm.type,(k=P.layoutAlgorithm).processedGridSize=m(k.gridSize||r.layoutAlgorithm.gridSize,b.plotWidth),k.processedDistance=m(k.distance||r.layoutAlgorithm.distance,b.plotWidth),a=k.kmeansThreshold||r.layoutAlgorithm.kmeansThreshold;let A=k.processedGridSize/2,O=D(S,{x:0,y:0}),T=D(S,{x:A,y:A});for(I=0,l=Math.abs(O.x-T.x),p=Math.abs(O.y-T.y);I<X.length;I++)!S.dataMaxX&&(n(c)&&n(d)&&n(g)&&n(f)?h(L[I])&&h(g)&&h(f)&&(c=Math.max(X[I],c),d=Math.min(X[I],d),g=Math.max(L[I]||g,g),f=Math.min(L[I]||f,f)):(c=d=X[I],g=f=L[I])),X[I]>=z.minX-l&&X[I]<=z.maxX+l&&(L[I]||z.minY)>=z.minY-p&&(L[I]||z.maxY)<=z.maxY+p&&(w.push(X[I]),E.push(L[I]),j.push(I));n(c)&&n(d)&&h(g)&&h(f)&&(S.dataMaxX=c,S.dataMinX=d,S.dataMaxY=g,S.dataMinY=f),y=(C=(u(x)?x:S.markerClusterAlgorithms?x&&S.markerClusterAlgorithms[x]?S.markerClusterAlgorithms[x]:w.length<a?S.markerClusterAlgorithms.kmeans:S.markerClusterAlgorithms.grid:function(){return!1}).call(this,w,E,j,k))?S.getClusteredData(C,P):C,P.animation&&S.markerClusterInfo&&S.markerClusterInfo.pointsState&&S.markerClusterInfo.pointsState.oldState?(function(t){if(t){let e;for(let i of Object.keys(t))(e=t[i]).point&&e.point.destroy&&e.point.destroy()}}(S.markerClusterInfo.pointsState.oldState),t=S.markerClusterInfo.pointsState.newState):t={},e=X.length,i=S.markerClusterInfo,y&&(S.processedXData=y.groupedXData,S.processedYData=y.groupedYData,S.hasGroupedData=!0,S.markerClusterInfo=y,S.groupMap=y.groupMap),s.apply(this),y&&S.markerClusterInfo&&((S.markerClusterInfo.clusters||[]).forEach(function(t){(M=S.points[t.index]).isCluster=!0,M.clusteredData=t.data,M.clusterPointsAmount=t.data.length,t.point=M,o(M,"click",Y)}),(S.markerClusterInfo.noise||[]).forEach(function(t){t.point=S.points[t.index]}),P.animation&&S.markerClusterInfo&&(S.markerClusterInfo.pointsState={oldState:t,newState:S.getPointsState(y,i,e)}),P.animation?this.hideClusteredData():this.destroyClusteredData(),this.markerClusterSeriesData=this.hasGroupedData?this.points:null)}else s.apply(this)}function w(t,e,i){let s=[];for(let a=0;a<t.length;a++){let r=Z(this,{x:e,y:i}),o=Z(this,{x:t[a].posX,y:t[a].posY}),n=Math.sqrt(Math.pow(r.x-o.x,2)+Math.pow(r.y-o.y,2));s.push({clusterIndex:a,distance:n})}return s.sort((t,e)=>t.distance-e.distance)}function E(t,e){let i=[],s=[],a=[],o=[],n=[],h=Math.max(2,e.minimumClusterSize||2),f=0,m,g,x,y,C,k,M,I,b,X,Y,D,L,P;if(u(e.layoutAlgorithm.type)&&!this.isValidGroupedDataObject(t))return l("Highcharts marker-clusters module: The custom algorithm result is not valid!",!1,this.chart),!1;for(P in t)if(t[P].length>=h){if(x=t[P],m=A(),C=x.length,e.zones)for(L=0;L<e.zones.length;L++)C>=e.zones[L].from&&C<=e.zones[L].to&&((Y=e.zones[L]).zoneIndex=L,X=e.zones[L].marker,D=e.zones[L].className);for(b=S(x),"grid"!==e.layoutAlgorithm.type||e.allowOverlap?M={x:b.x,y:b.y}:(k=this.options.marker||{},M=this.preventClusterCollisions({x:b.x,y:b.y,key:P,groupedData:t,gridSize:this.getScaledGridSize(e.layoutAlgorithm),defaultRadius:k.radius||3+(k.lineWidth||0),clusterRadius:X&&X.radius?X.radius:(e.marker||{}).radius||r.marker.radius})),L=0;L<C;L++)x[L].parentStateId=m;if(a.push({x:M.x,y:M.y,id:P,stateId:m,index:f,data:x,clusterZone:Y,clusterZoneClassName:D}),i.push(M.x),s.push(M.y),n.push({options:{formatPrefix:"cluster",dataLabels:e.dataLabels,marker:c(e.marker,{states:e.states},X||{})}}),this.options.data&&this.options.data.length)for(L=0;L<C;L++)d(this.options.data[x[L].dataIndex])&&(x[L].options=this.options.data[x[L].dataIndex]);f++,X=null}else for(L=0;L<t[P].length;L++)g=t[P][L],m=A(),I=null,y=((this.options||{}).data||[])[g.dataIndex],i.push(g.x),s.push(g.y),g.parentStateId=m,o.push({x:g.x,y:g.y,id:P,stateId:m,index:f,data:t[P]}),I=y&&"object"==typeof y&&!p(y)?c(y,{x:g.x,y:g.y}):{userOptions:y,x:g.x,y:g.y},n.push({options:I}),f++;return{clusters:a,noise:o,groupedXData:i,groupedYData:s,groupMap:n}}function j(){let t=this.chart,e=this.xAxis,i=this.yAxis,s=0;return{plotLeft:e&&this.dataMinX&&this.dataMaxX?e.reversed?e.toPixels(this.dataMaxX):e.toPixels(this.dataMinX):t.plotLeft,plotTop:i&&this.dataMinY&&this.dataMaxY?i.reversed?i.toPixels(this.dataMinY):i.toPixels(this.dataMaxY):t.plotTop}}function O(t,e,i){let s,a;let r=e?b(e,i):[],o=b(t,i),n={};y=[],t.clusters.forEach(function(t){n[t.stateId]={x:t.x,y:t.y,id:t.stateId,point:t.point,parentsId:[]}}),t.noise.forEach(function(t){n[t.stateId]={x:t.x,y:t.y,id:t.stateId,point:t.point,parentsId:[]}});for(let t=0;t<o.length;t++)s=o[t],a=r[t],s&&a&&s.parentStateId&&a.parentStateId&&n[s.parentStateId]&&-1===n[s.parentStateId].parentsId.indexOf(a.parentStateId)&&(n[s.parentStateId].parentsId.push(a.parentStateId),-1===y.indexOf(a.parentStateId)&&y.push(a.parentStateId));return n}function T(){let t=this.chart,e=t.mapView?0:t.plotLeft,i=D(this,{x:e,y:t.mapView?0:t.plotTop}),s=D(this,{x:e+t.plotWidth,y:e+t.plotHeight}),a=i.x,r=s.x,o=i.y,n=s.y;return{minX:Math.min(a,r),maxX:Math.max(a,r),minY:Math.min(o,n),maxY:Math.max(o,n)}}function V(t){let e=this.xAxis,i=this.chart.mapView,s=t.processedGridSize||r.layoutAlgorithm.gridSize,a=!0,o=1,n=1;this.gridValueSize||(i?this.gridValueSize=s/i.getScale():this.gridValueSize=Math.abs(e.toValue(s)-e.toValue(0)));let l=+(s/(i?this.gridValueSize*i.getScale():e.toPixels(this.gridValueSize)-e.toPixels(0))).toFixed(14);for(;a&&1!==l;){let t=Math.pow(2,o);l>.75&&l<1.25?a=!1:l>=1/t&&l<1/t*2?(a=!1,n=t):l<=t&&l>t/2&&(a=!1,n=1/t),o++}return s/n/l}function G(){let t=this.markerClusterSeriesData,e=((this.markerClusterInfo||{}).pointsState||{}).oldState||{},i=y.map(t=>(e[t].point||{}).id||"");(t||[]).forEach(function(t){t&&-1!==i.indexOf(t.id)?(t.graphic&&t.graphic.hide(),t.dataLabel&&t.dataLabel.hide()):t&&t.destroy&&t.destroy()})}function v(t){let e=!1,i;return!!d(t)&&(f(t,function(t){if(e=!0,!p(t)||!t.length){e=!1;return}for(i=0;i<t.length;i++)if(!d(t[i])||!t[i].x||!t[i].y){e=!1;return}}),e)}function R(t){let[e,i]=t.key.split("-").map(parseFloat),s=t.gridSize,a=t.groupedData,o=t.defaultRadius,l=t.clusterRadius,p=i*s,u=e*s,d=Z(this,t),h=[],c=(this.options.cluster||{}).marker,f=(this.options.cluster||{}).zones,m=this.getGridOffset(),g=d.x,x=d.y,y=0,C=0,k,M,I,b,A,X,Y,L,P,z,w,E,j;for(g-=m.plotLeft,x-=m.plotTop,Y=1;Y<5;Y++)for(L=0,I=Y%2?-1:1,b=Y<3?-1:1,A=Math.floor((g+I*l)/s),j=[(X=Math.floor((x+b*l)/s))+"-"+A,X+"-"+i,e+"-"+A];L<j.length;L++)-1===h.indexOf(j[L])&&j[L]!==t.key&&h.push(j[L]);for(let t of h)if(a[t]){a[t].posX||(w=S(a[t]),a[t].posX=w.x,a[t].posY=w.y);let d=Z(this,{x:a[t].posX||0,y:a[t].posY||0});if(k=d.x-m.plotLeft,M=d.y-m.plotTop,[z,P]=t.split("-").map(parseFloat),f)for(Y=0,y=a[t].length;Y<f.length;Y++)y>=f[Y].from&&y<=f[Y].to&&(C=n((f[Y].marker||{}).radius)?f[Y].marker.radius||0:c&&c.radius?c.radius:r.marker.radius);a[t].length>1&&0===C&&c&&c.radius?C=c.radius:1===a[t].length&&(C=o),E=l+C,C=0,P!==i&&Math.abs(g-k)<E&&(g=P-i<0?p+l:p+s-l),z!==e&&Math.abs(x-M)<E&&(x=z-e<0?u+l:u+s-l)}let O=D(this,{x:g+m.plotLeft,y:x+m.plotTop});return a[t.key].posX=O.x,a[t.key].posY=O.y,O}function Z(t,e){let{chart:i,xAxis:s,yAxis:a}=t;return i.mapView?i.mapView.projectedUnitsToPixels(e):{x:s?s.toPixels(e.x):0,y:a?a.toPixels(e.y):0}}return{compose:function(t,i){let a=i.prototype;a.markerClusterAlgorithms||(s=a.generatePoints,a.markerClusterAlgorithms=x,a.animateClusterPoint=L,a.destroyClusteredData=P,a.generatePoints=z,a.getClusterDistancesFromPoint=w,a.getClusteredData=E,a.getGridOffset=j,a.getPointsState=O,a.getRealExtremes=T,a.getScaledGridSize=V,a.hideClusteredData=G,a.isValidGroupedDataObject=v,a.preventClusterCollisions=R,o(i,"destroy",a.destroyClusteredData),(t.plotOptions||{}).series=c((t.plotOptions||{}).series,e))}}}),i(e,"Extensions/MarkerClusters/MarkerClusters.js",[e["Core/Animation/AnimationUtilities.js"],e["Core/Defaults.js"],e["Core/Globals.js"],e["Extensions/MarkerClusters/MarkerClusterDefaults.js"],e["Extensions/MarkerClusters/MarkerClusterScatter.js"],e["Core/Utilities.js"]],function(t,e,i,s,a,r){let{animObject:o}=t,{defaultOptions:n}=e,{composed:l}=i,{addEvent:p,defined:u,error:d,isFunction:h,merge:c,pushUnique:f,syncTimeout:m}=r;function g(){let t=this.chart,e=0;for(let i of t.series)i.markerClusterInfo&&(e=o((i.options.cluster||{}).animation).duration||0);m(()=>{t.tooltip&&t.tooltip.destroy()},e)}function x(){for(let t of this.series||[])if(t.markerClusterInfo){let e=t.options.cluster,i=((t.markerClusterInfo||{}).pointsState||{}).oldState;if((e||{}).animation&&t.markerClusterInfo&&0===(t.chart.pointer?.pinchDown||[]).length&&"pan"!==((t.xAxis||{}).eventArgs||{}).trigger&&i&&Object.keys(i).length){for(let e of t.markerClusterInfo.clusters)t.animateClusterPoint(e);for(let e of t.markerClusterInfo.noise)t.animateClusterPoint(e)}}}function y(t){let e=(((t.point||t.target).series.options.cluster||{}).events||{}).drillToCluster;h(e)&&e.call(this,t)}function C(){if(this.dataGroup)return d("Highcharts marker-clusters module: Running `Point.update` when point belongs to clustered series is not supported.",!1,this.series.chart),!1}function k(){let t=(this.options.cluster||{}).drillToCluster;if(this.markerClusterInfo&&this.markerClusterInfo.clusters)for(let e of this.markerClusterInfo.clusters)e.point&&e.point.graphic&&(e.point.graphic.addClass("highcharts-cluster-point"),t&&e.point&&(e.point.graphic.css({cursor:"pointer"}),e.point.dataLabel&&e.point.dataLabel.css({cursor:"pointer"})),u(e.clusterZone)&&e.point.graphic.addClass(e.clusterZoneClassName||"highcharts-cluster-zone-"+e.clusterZone.zoneIndex))}return(n.plotOptions||{}).series=c((n.plotOptions||{}).series,s),{compose:function(t,e,i,s){if(f(l,"MarkerClusters")){let r=s.prototype.pointClass,{scatter:o}=s.types;p(t,"setExtremes",g),p(e,"render",x),p(r,"drillToCluster",y),p(r,"update",C),p(s,"afterRender",k),o&&a.compose(i,o)}}}}),i(e,"Extensions/MarkerClusters/MarkerClusterSymbols.js",[],function(){let t;function e(e,i,s,a){let r=s/2,o=a/2,n=t.arc(e+r,i+o,r-4,o-4,{start:.5*Math.PI,end:2.5*Math.PI,open:!1}),l=t.arc(e+r,i+o,r-3,o-3,{start:.5*Math.PI,end:2.5*Math.PI,innerR:r-2,open:!1});return t.arc(e+r,i+o,r-1,o-1,{start:.5*Math.PI,end:2.5*Math.PI,innerR:r,open:!1}).concat(l,n)}return{compose:function(i){(t=i.prototype.symbols).cluster=e}}}),i(e,"masters/modules/marker-clusters.src.js",[e["Core/Globals.js"],e["Extensions/MarkerClusters/MarkerClusters.js"],e["Extensions/MarkerClusters/MarkerClusterSymbols.js"]],function(t,e,i){return e.compose(t.Axis,t.Chart,t.defaultOptions,t.Series),i.compose(t.SVGRenderer),t})});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v11.
|
|
2
|
+
* @license Highcharts JS v11.4.0 (2024-03-05)
|
|
3
3
|
*
|
|
4
4
|
* Marker clusters module for Highcharts
|
|
5
5
|
*
|
|
@@ -374,7 +374,7 @@
|
|
|
374
374
|
|
|
375
375
|
return MarkerClusterDefaults;
|
|
376
376
|
});
|
|
377
|
-
_registerModule(_modules, 'Extensions/MarkerClusters/MarkerClusterScatter.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['
|
|
377
|
+
_registerModule(_modules, 'Extensions/MarkerClusters/MarkerClusterScatter.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Extensions/MarkerClusters/MarkerClusterDefaults.js'], _modules['Core/Utilities.js']], function (A, MarkerClusterDefaults, U) {
|
|
378
378
|
/* *
|
|
379
379
|
*
|
|
380
380
|
* Marker clusters module.
|
|
@@ -389,9 +389,8 @@
|
|
|
389
389
|
*
|
|
390
390
|
* */
|
|
391
391
|
const { animObject } = A;
|
|
392
|
-
const { composed } = H;
|
|
393
392
|
const { cluster: clusterDefaults } = MarkerClusterDefaults;
|
|
394
|
-
const { addEvent, defined, error, isArray, isFunction, isObject, isNumber, merge, objectEach,
|
|
393
|
+
const { addEvent, defined, error, isArray, isFunction, isObject, isNumber, merge, objectEach, relativeLength, syncTimeout } = U;
|
|
395
394
|
/* *
|
|
396
395
|
*
|
|
397
396
|
* Constants
|
|
@@ -607,8 +606,8 @@
|
|
|
607
606
|
* */
|
|
608
607
|
/** @private */
|
|
609
608
|
function compose(highchartsDefaultOptions, ScatterSeriesClass) {
|
|
610
|
-
|
|
611
|
-
|
|
609
|
+
const scatterProto = ScatterSeriesClass.prototype;
|
|
610
|
+
if (!scatterProto.markerClusterAlgorithms) {
|
|
612
611
|
baseGeneratePoints = scatterProto.generatePoints;
|
|
613
612
|
scatterProto.markerClusterAlgorithms = markerClusterAlgorithms;
|
|
614
613
|
scatterProto.animateClusterPoint = seriesAnimateClusterPoint;
|
|
@@ -746,7 +745,7 @@
|
|
|
746
745
|
function onPointDrillToCluster(event) {
|
|
747
746
|
const point = event.point || event.target;
|
|
748
747
|
point.firePointEvent('drillToCluster', event, function (e) {
|
|
749
|
-
const point = e.point || e.target, series = point.series, xAxis = point.series.xAxis, yAxis = point.series.yAxis, chart = point.series.chart, mapView = chart
|
|
748
|
+
const point = e.point || e.target, series = point.series, xAxis = point.series.xAxis, yAxis = point.series.yAxis, chart = point.series.chart, { inverted, mapView, pointer } = chart, clusterOptions = series.options.cluster, drillToCluster = (clusterOptions || {}).drillToCluster;
|
|
750
749
|
if (drillToCluster && point.clusteredData) {
|
|
751
750
|
const sortedDataX = point.clusteredData
|
|
752
751
|
.map((data) => data.x)
|
|
@@ -757,20 +756,27 @@
|
|
|
757
756
|
mapView.fitToBounds({ x1, x2, y1, y2 });
|
|
758
757
|
}
|
|
759
758
|
else if (xAxis && yAxis) {
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
759
|
+
let x1Px = xAxis.toPixels(x1), x2Px = xAxis.toPixels(x2), y1Px = yAxis.toPixels(y1), y2Px = yAxis.toPixels(y2);
|
|
760
|
+
if (inverted) {
|
|
761
|
+
[x1Px, x2Px, y1Px, y2Px] = [y1Px, y2Px, x1Px, x2Px];
|
|
762
|
+
}
|
|
763
|
+
if (x1Px > x2Px) {
|
|
764
|
+
[x1Px, x2Px] = [x2Px, x1Px];
|
|
765
|
+
}
|
|
766
|
+
if (y1Px > y2Px) {
|
|
767
|
+
[y1Px, y2Px] = [y2Px, y1Px];
|
|
768
|
+
}
|
|
769
|
+
if (pointer) {
|
|
770
|
+
pointer.zoomX = true;
|
|
771
|
+
pointer.zoomY = true;
|
|
772
|
+
}
|
|
773
|
+
chart.transform({
|
|
774
|
+
from: {
|
|
775
|
+
x: x1Px,
|
|
776
|
+
y: y1Px,
|
|
777
|
+
width: x2Px - x1Px,
|
|
778
|
+
height: y2Px - y1Px
|
|
779
|
+
}
|
|
774
780
|
});
|
|
775
781
|
}
|
|
776
782
|
}
|
|
@@ -803,7 +809,7 @@
|
|
|
803
809
|
if (newPointObj.parentsId.length === 1) {
|
|
804
810
|
parentId = (newState || {})[clusterObj.stateId].parentsId[0];
|
|
805
811
|
oldPointObj = oldState[parentId];
|
|
806
|
-
// If old and new
|
|
812
|
+
// If old and new positions are the same do not animate.
|
|
807
813
|
if (newPointObj.point &&
|
|
808
814
|
newPointObj.point.graphic &&
|
|
809
815
|
oldPointObj &&
|
|
@@ -1541,7 +1547,7 @@
|
|
|
1541
1547
|
* */
|
|
1542
1548
|
/** @private */
|
|
1543
1549
|
function compose(AxisClass, ChartClass, highchartsDefaultOptions, SeriesClass) {
|
|
1544
|
-
if (pushUnique(composed,
|
|
1550
|
+
if (pushUnique(composed, 'MarkerClusters')) {
|
|
1545
1551
|
const PointClass = SeriesClass.prototype.pointClass, { scatter: ScatterSeries } = SeriesClass.types;
|
|
1546
1552
|
addEvent(AxisClass, 'setExtremes', onAxisSetExtremes);
|
|
1547
1553
|
addEvent(ChartClass, 'render', onChartRender);
|
|
@@ -1584,7 +1590,7 @@
|
|
|
1584
1590
|
const options = series.options.cluster, pointsState = (series.markerClusterInfo || {}).pointsState, oldState = (pointsState || {}).oldState;
|
|
1585
1591
|
if ((options || {}).animation &&
|
|
1586
1592
|
series.markerClusterInfo &&
|
|
1587
|
-
series.chart.pointer
|
|
1593
|
+
(series.chart.pointer?.pinchDown || []).length === 0 &&
|
|
1588
1594
|
((series.xAxis || {}).eventArgs || {}).trigger !== 'pan' &&
|
|
1589
1595
|
oldState &&
|
|
1590
1596
|
Object.keys(oldState).length) {
|
|
@@ -1668,7 +1674,7 @@
|
|
|
1668
1674
|
* @callback Highcharts.MarkerClusterDrillCallbackFunction
|
|
1669
1675
|
*
|
|
1670
1676
|
* @param {Highcharts.Point} this
|
|
1671
|
-
* The point where the event
|
|
1677
|
+
* The point where the event occurred.
|
|
1672
1678
|
*
|
|
1673
1679
|
* @param {Highcharts.PointClickEventObject} event
|
|
1674
1680
|
* Event arguments.
|
|
@@ -1677,7 +1683,7 @@
|
|
|
1677
1683
|
|
|
1678
1684
|
return MarkerClusters;
|
|
1679
1685
|
});
|
|
1680
|
-
_registerModule(_modules, 'Extensions/MarkerClusters/MarkerClusterSymbols.js', [
|
|
1686
|
+
_registerModule(_modules, 'Extensions/MarkerClusters/MarkerClusterSymbols.js', [], function () {
|
|
1681
1687
|
/* *
|
|
1682
1688
|
*
|
|
1683
1689
|
* Marker clusters module.
|
|
@@ -1691,13 +1697,6 @@
|
|
|
1691
1697
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
1692
1698
|
*
|
|
1693
1699
|
* */
|
|
1694
|
-
const { pushUnique } = U;
|
|
1695
|
-
/* *
|
|
1696
|
-
*
|
|
1697
|
-
* Constants
|
|
1698
|
-
*
|
|
1699
|
-
* */
|
|
1700
|
-
const modifiedMembers = [];
|
|
1701
1700
|
/* *
|
|
1702
1701
|
*
|
|
1703
1702
|
* Variables
|
|
@@ -1735,10 +1734,8 @@
|
|
|
1735
1734
|
* @private
|
|
1736
1735
|
*/
|
|
1737
1736
|
function compose(SVGRendererClass) {
|
|
1738
|
-
|
|
1739
|
-
|
|
1740
|
-
symbols.cluster = cluster;
|
|
1741
|
-
}
|
|
1737
|
+
symbols = SVGRendererClass.prototype.symbols;
|
|
1738
|
+
symbols.cluster = cluster;
|
|
1742
1739
|
}
|
|
1743
1740
|
/* *
|
|
1744
1741
|
*
|
|
@@ -1757,5 +1754,6 @@
|
|
|
1757
1754
|
MarkerClusters.compose(G.Axis, G.Chart, G.defaultOptions, G.Series);
|
|
1758
1755
|
MarkerClusterSymbols.compose(G.SVGRenderer);
|
|
1759
1756
|
|
|
1757
|
+
return Highcharts;
|
|
1760
1758
|
});
|
|
1761
1759
|
}));
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
|
|
2
|
-
* Highcharts JS v11.
|
|
1
|
+
!/**
|
|
2
|
+
* Highcharts JS v11.4.0 (2024-03-04)
|
|
3
3
|
*
|
|
4
4
|
* Mousewheel zoom module
|
|
5
5
|
*
|
|
6
6
|
* (c) 2023 Askel Eirik Johansson
|
|
7
7
|
*
|
|
8
8
|
* License: www.highcharts.com/license
|
|
9
|
-
|
|
9
|
+
*/function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/mouse-wheel-zoom",["highcharts"],function(t){return e(t),e.Highcharts=t,e}):e("undefined"!=typeof Highcharts?Highcharts:void 0)}(function(e){"use strict";var t=e?e._modules:{};function i(e,t,i,o){e.hasOwnProperty(t)||(e[t]=o.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:t,module:e[t]}})))}i(t,"Extensions/Annotations/NavigationBindingsUtilities.js",[t["Core/Utilities.js"]],function(e){let{defined:t,isNumber:i,pick:o}=e,n={backgroundColor:"string",borderColor:"string",borderRadius:"string",color:"string",fill:"string",fontSize:"string",labels:"string",name:"string",stroke:"string",title:"string"};return{annotationsFieldsTypes:n,getAssignedAxis:function(e){return e.filter(e=>{let t=e.axis.getExtremes(),n=t.min,s=t.max,r=o(e.axis.minPointOffset,0);return i(n)&&i(s)&&e.value>=n-r&&e.value<=s+r&&!e.axis.options.isInternal})[0]},getFieldType:function(e,i){let o=n[e],s=typeof i;return t(o)&&(s=o),({string:"text",number:"number",boolean:"checkbox"})[s]}}}),i(t,"Extensions/MouseWheelZoom/MouseWheelZoom.js",[t["Core/Utilities.js"],t["Extensions/Annotations/NavigationBindingsUtilities.js"]],function(e,t){let i;let{addEvent:o,isObject:n,pick:s,defined:r,merge:l}=e,{getAssignedAxis:a}=t,u=[],h={enabled:!0,sensitivity:1.1},d=e=>(n(e)||(e={enabled:e??!0}),l(h,e)),m=function(e,t,o,n,l,a,u){let h=s(u.type,e.zooming.type,""),d=[];"x"===h?d=o:"y"===h?d=n:"xy"===h&&(d=e.axes);let m=e.transform({axes:d,to:{x:l-5,y:a-5,width:10,height:10},from:{x:l-5*t,y:a-5*t,width:10*t,height:10*t},trigger:"mousewheel"});return m&&(r(i)&&clearTimeout(i),i=setTimeout(()=>{e.pointer?.drop()},400)),m};function c(){let e=d(this.zooming.mouseWheel);e.enabled&&o(this.container,"wheel",t=>{t=this.pointer?.normalize(t)||t;let{pointer:i}=this,o=i&&!i.inClass(t.target,"highcharts-no-mousewheel");if(this.isInsidePlot(t.chartX-this.plotLeft,t.chartY-this.plotTop)&&o){let o=e.sensitivity||1.1,n=t.detail||(t.deltaY||0)/120,s=a(i.getCoordinates(t).xAxis),r=a(i.getCoordinates(t).yAxis);m(this,Math.pow(o,n),s?[s.axis]:this.xAxis,r?[r.axis]:this.yAxis,t.chartX,t.chartY,e)&&t.preventDefault?.()}})}return{compose:function(e){-1===u.indexOf(e)&&(u.push(e),o(e,"afterGetContainer",c))}}}),i(t,"masters/modules/mouse-wheel-zoom.src.js",[t["Core/Globals.js"],t["Extensions/MouseWheelZoom/MouseWheelZoom.js"]],function(e,t){return e.MouseWheelZoom=e.MouseWheelZoom||t,e.MouseWheelZoom.compose(e.Chart),e})});
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v11.
|
|
2
|
+
* @license Highcharts JS v11.4.0 (2024-03-05)
|
|
3
3
|
*
|
|
4
4
|
* Mousewheel zoom module
|
|
5
5
|
*
|
|
@@ -144,7 +144,7 @@
|
|
|
144
144
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
145
145
|
*
|
|
146
146
|
* */
|
|
147
|
-
const { addEvent, isObject, pick, defined, merge
|
|
147
|
+
const { addEvent, isObject, pick, defined, merge } = U;
|
|
148
148
|
const { getAssignedAxis } = NBU;
|
|
149
149
|
/* *
|
|
150
150
|
*
|
|
@@ -155,6 +155,7 @@
|
|
|
155
155
|
enabled: true,
|
|
156
156
|
sensitivity: 1.1
|
|
157
157
|
};
|
|
158
|
+
let wheelTimer;
|
|
158
159
|
/* *
|
|
159
160
|
*
|
|
160
161
|
* Functions
|
|
@@ -165,168 +166,57 @@
|
|
|
165
166
|
*/
|
|
166
167
|
const optionsToObject = (options) => {
|
|
167
168
|
if (!isObject(options)) {
|
|
168
|
-
|
|
169
|
+
options = {
|
|
170
|
+
enabled: options ?? true
|
|
171
|
+
};
|
|
169
172
|
}
|
|
170
173
|
return merge(defaultOptions, options);
|
|
171
174
|
};
|
|
172
175
|
/**
|
|
173
|
-
* Fit a segment inside a range.
|
|
174
176
|
* @private
|
|
175
|
-
* @param {number} outerStart
|
|
176
|
-
* Beginning of the range.
|
|
177
|
-
* @param {number} outerWidth
|
|
178
|
-
* Width of the range.
|
|
179
|
-
* @param {number} innerStart
|
|
180
|
-
* Beginning of the segment.
|
|
181
|
-
* @param {number} innerWidth
|
|
182
|
-
* Width of the segment.
|
|
183
|
-
* @return {Object}
|
|
184
|
-
* Object containing rangeStart and rangeWidth.
|
|
185
177
|
*/
|
|
186
|
-
const
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
}
|
|
192
|
-
else {
|
|
193
|
-
innerStart = outerStart + outerWidth - innerWidth;
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
if (innerWidth > outerWidth) {
|
|
197
|
-
innerWidth = outerWidth;
|
|
198
|
-
}
|
|
199
|
-
if (innerStart < outerStart) {
|
|
200
|
-
innerStart = outerStart;
|
|
201
|
-
}
|
|
202
|
-
return {
|
|
203
|
-
rangeStart: innerStart,
|
|
204
|
-
rangeWidth: innerWidth
|
|
205
|
-
};
|
|
206
|
-
};
|
|
207
|
-
let wheelTimer, startOnTick, endOnTick;
|
|
208
|
-
/**
|
|
209
|
-
* Temporarly disable `axis.startOnTick` and `axis.endOnTick` to allow zooming
|
|
210
|
-
* for small values.
|
|
211
|
-
* @private
|
|
212
|
-
*/
|
|
213
|
-
const waitForAutomaticExtremes = function (axis) {
|
|
214
|
-
const axisOptions = axis.options;
|
|
215
|
-
// Options interfering with yAxis zoom by setExtremes() returning
|
|
216
|
-
// integers by default.
|
|
217
|
-
if (defined(wheelTimer)) {
|
|
218
|
-
clearTimeout(wheelTimer);
|
|
219
|
-
}
|
|
220
|
-
if (!defined(startOnTick)) {
|
|
221
|
-
startOnTick = axisOptions.startOnTick;
|
|
222
|
-
endOnTick = axisOptions.endOnTick;
|
|
223
|
-
}
|
|
224
|
-
// Temporarily disable start and end on tick, because they would
|
|
225
|
-
// prevent small increments of zooming.
|
|
226
|
-
if (startOnTick || endOnTick) {
|
|
227
|
-
axisOptions.startOnTick = false;
|
|
228
|
-
axisOptions.endOnTick = false;
|
|
229
|
-
}
|
|
230
|
-
wheelTimer = setTimeout(() => {
|
|
231
|
-
if (defined(startOnTick) && defined(endOnTick)) {
|
|
232
|
-
// Repeat merge after the wheel zoom is finished, #19178
|
|
233
|
-
axisOptions.startOnTick = startOnTick;
|
|
234
|
-
axisOptions.endOnTick = endOnTick;
|
|
235
|
-
// Set the extremes to the same as they already are, but now
|
|
236
|
-
// with the original startOnTick and endOnTick. We need
|
|
237
|
-
// `forceRedraw` otherwise it will detect that the values
|
|
238
|
-
// haven't changed. We do not use a simple yAxis.update()
|
|
239
|
-
// because it will destroy the ticks and prevent animation.
|
|
240
|
-
const { min, max } = axis.getExtremes();
|
|
241
|
-
axis.forceRedraw = true;
|
|
242
|
-
axis.setExtremes(min, max);
|
|
243
|
-
startOnTick = endOnTick = void 0;
|
|
244
|
-
}
|
|
245
|
-
}, 400);
|
|
246
|
-
};
|
|
247
|
-
/**
|
|
248
|
-
* Calculate the ratio of mouse position on the axis to its length. If mousePos
|
|
249
|
-
* doesn't exist, returns 0.5;
|
|
250
|
-
* @private
|
|
251
|
-
*/
|
|
252
|
-
const getMouseAxisRatio = function (chart, axis, mousePos) {
|
|
253
|
-
if (!defined(mousePos)) {
|
|
254
|
-
return 0.5;
|
|
255
|
-
}
|
|
256
|
-
const mouseAxisRatio = (mousePos - axis.minPixelPadding - axis.pos) /
|
|
257
|
-
(axis.len - 2 * axis.minPixelPadding), // Prevent sticking (#19976)
|
|
258
|
-
isXAxis = axis.isXAxis;
|
|
259
|
-
if (isXAxis && (!axis.reversed !== !chart.inverted) ||
|
|
260
|
-
!isXAxis && axis.reversed) {
|
|
261
|
-
// We are taking into account that xAxis automatically gets
|
|
262
|
-
// reversed when chart.inverted
|
|
263
|
-
return 1 - mouseAxisRatio;
|
|
178
|
+
const zoomBy = function (chart, howMuch, xAxis, yAxis, mouseX, mouseY, options) {
|
|
179
|
+
const type = pick(options.type, chart.zooming.type, '');
|
|
180
|
+
let axes = [];
|
|
181
|
+
if (type === 'x') {
|
|
182
|
+
axes = xAxis;
|
|
264
183
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
/**
|
|
268
|
-
* Perform zooming on the passed axis.
|
|
269
|
-
* @private
|
|
270
|
-
* @param {Highcharts.Chart} chart
|
|
271
|
-
* Chart object.
|
|
272
|
-
* @param {Highcharts.Axis} axis
|
|
273
|
-
* Axis to zoom.
|
|
274
|
-
* @param {number} mousePos
|
|
275
|
-
* Mouse position on the plot.
|
|
276
|
-
* @param {number} howMuch
|
|
277
|
-
* Amount of zoom to apply.
|
|
278
|
-
* @param {number} centerArg
|
|
279
|
-
* Mouse position in axis units.
|
|
280
|
-
* @return {boolean}
|
|
281
|
-
* True if axis extremes were changed.
|
|
282
|
-
*/
|
|
283
|
-
const zoomOnDirection = function (chart, axis, mousePos, howMuch, centerArg) {
|
|
284
|
-
const isXAxis = axis.isXAxis;
|
|
285
|
-
let hasZoomed = false;
|
|
286
|
-
if (defined(axis.max) && defined(axis.min) &&
|
|
287
|
-
defined(axis.dataMax) && defined(axis.dataMin)) {
|
|
288
|
-
if (!isXAxis) {
|
|
289
|
-
waitForAutomaticExtremes(axis);
|
|
290
|
-
}
|
|
291
|
-
const range = axis.max - axis.min, center = isNumber(centerArg) ? centerArg :
|
|
292
|
-
axis.min + range / 2, mouseAxisRatio = getMouseAxisRatio(chart, axis, mousePos), newRange = range * howMuch, newMin = center - newRange * mouseAxisRatio, dataRange = pick(axis.options.max, axis.dataMax) -
|
|
293
|
-
pick(axis.options.min, axis.dataMin), minPaddingOffset = axis.options.min ? 0 :
|
|
294
|
-
dataRange * axis.options.minPadding, maxPaddingOffset = axis.options.max ? 0 :
|
|
295
|
-
dataRange * axis.options.maxPadding, outerMin = pick(axis.options.min, axis.dataMin) - minPaddingOffset, outerRange = dataRange + maxPaddingOffset + minPaddingOffset, newExt = fitToRange(outerMin, outerRange, newMin, newRange), zoomOut = (newExt.rangeStart < pick(axis.options.min, outerMin) ||
|
|
296
|
-
newExt.rangeStart === axis.min &&
|
|
297
|
-
(newExt.rangeWidth > outerRange &&
|
|
298
|
-
newExt.rangeStart + newExt.rangeWidth <
|
|
299
|
-
pick(axis.options.max, Number.MIN_VALUE)) ||
|
|
300
|
-
newExt.rangeWidth === axis.max - axis.min);
|
|
301
|
-
if (defined(howMuch) && !zoomOut) { // Zoom
|
|
302
|
-
axis.setExtremes(newExt.rangeStart, newExt.rangeStart + newExt.rangeWidth, false);
|
|
303
|
-
hasZoomed = true;
|
|
304
|
-
}
|
|
305
|
-
else { // Reset zoom
|
|
306
|
-
axis.setExtremes(void 0, void 0, false);
|
|
307
|
-
}
|
|
184
|
+
else if (type === 'y') {
|
|
185
|
+
axes = yAxis;
|
|
308
186
|
}
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
/**
|
|
312
|
-
* @private
|
|
313
|
-
*/
|
|
314
|
-
const zoomBy = function (chart, howMuch, xAxis, yAxis, mouseX, mouseY, options) {
|
|
315
|
-
const type = pick(options.type, chart.zooming.type, ''), zoomX = /x/.test(type), zoomY = /y/.test(type);
|
|
316
|
-
let centerXArg = xAxis.toValue(mouseX), centerYArg = yAxis.toValue(mouseY);
|
|
317
|
-
if (chart.inverted) {
|
|
318
|
-
const emulateRoof = yAxis.pos + yAxis.len;
|
|
319
|
-
// Get the correct values
|
|
320
|
-
centerXArg = xAxis.toValue(mouseY);
|
|
321
|
-
centerYArg = yAxis.toValue(mouseX);
|
|
322
|
-
// Swapping x and y for simplicity when chart is inverted.
|
|
323
|
-
const tmp = mouseX;
|
|
324
|
-
mouseX = mouseY;
|
|
325
|
-
mouseY = emulateRoof - tmp + yAxis.pos;
|
|
187
|
+
else if (type === 'xy') {
|
|
188
|
+
axes = chart.axes;
|
|
326
189
|
}
|
|
327
|
-
const
|
|
190
|
+
const hasZoomed = chart.transform({
|
|
191
|
+
axes,
|
|
192
|
+
// Create imaginary reference and target rectangles around the mouse
|
|
193
|
+
// point that scales up or down with `howMuch`;
|
|
194
|
+
to: {
|
|
195
|
+
x: mouseX - 5,
|
|
196
|
+
y: mouseY - 5,
|
|
197
|
+
// Must use 10 to get passed the limit for too small reference.
|
|
198
|
+
// Below this, the transform will default to a pan.
|
|
199
|
+
width: 10,
|
|
200
|
+
height: 10
|
|
201
|
+
},
|
|
202
|
+
from: {
|
|
203
|
+
x: mouseX - 5 * howMuch,
|
|
204
|
+
y: mouseY - 5 * howMuch,
|
|
205
|
+
width: 10 * howMuch,
|
|
206
|
+
height: 10 * howMuch
|
|
207
|
+
},
|
|
208
|
+
trigger: 'mousewheel'
|
|
209
|
+
});
|
|
328
210
|
if (hasZoomed) {
|
|
329
|
-
|
|
211
|
+
if (defined(wheelTimer)) {
|
|
212
|
+
clearTimeout(wheelTimer);
|
|
213
|
+
}
|
|
214
|
+
// Some time after the last mousewheel event, run drop. In case any of
|
|
215
|
+
// the affected axes had `startOnTick` or `endOnTick`, they will be
|
|
216
|
+
// re-adjusted now.
|
|
217
|
+
wheelTimer = setTimeout(() => {
|
|
218
|
+
chart.pointer?.drop();
|
|
219
|
+
}, 400);
|
|
330
220
|
}
|
|
331
221
|
return hasZoomed;
|
|
332
222
|
};
|
|
@@ -334,18 +224,18 @@
|
|
|
334
224
|
* @private
|
|
335
225
|
*/
|
|
336
226
|
function onAfterGetContainer() {
|
|
337
|
-
const
|
|
227
|
+
const wheelZoomOptions = optionsToObject(this.zooming.mouseWheel);
|
|
338
228
|
if (wheelZoomOptions.enabled) {
|
|
339
229
|
addEvent(this.container, 'wheel', (e) => {
|
|
340
|
-
e = this.pointer
|
|
341
|
-
const allowZoom = !
|
|
230
|
+
e = this.pointer?.normalize(e) || e;
|
|
231
|
+
const { pointer } = this, allowZoom = pointer && !pointer.inClass(e.target, 'highcharts-no-mousewheel');
|
|
342
232
|
// Firefox uses e.detail, WebKit and IE uses deltaX, deltaY, deltaZ.
|
|
343
|
-
if (
|
|
344
|
-
const wheelSensitivity = wheelZoomOptions.sensitivity || 1.1, delta = e.detail || ((e.deltaY || 0) / 120), xAxisCoords = getAssignedAxis(
|
|
345
|
-
const hasZoomed = zoomBy(
|
|
233
|
+
if (this.isInsidePlot(e.chartX - this.plotLeft, e.chartY - this.plotTop) && allowZoom) {
|
|
234
|
+
const wheelSensitivity = wheelZoomOptions.sensitivity || 1.1, delta = e.detail || ((e.deltaY || 0) / 120), xAxisCoords = getAssignedAxis(pointer.getCoordinates(e).xAxis), yAxisCoords = getAssignedAxis(pointer.getCoordinates(e).yAxis);
|
|
235
|
+
const hasZoomed = zoomBy(this, Math.pow(wheelSensitivity, delta), xAxisCoords ? [xAxisCoords.axis] : this.xAxis, yAxisCoords ? [yAxisCoords.axis] : this.yAxis, e.chartX, e.chartY, wheelZoomOptions);
|
|
346
236
|
// Prevent page scroll
|
|
347
|
-
if (hasZoomed
|
|
348
|
-
e.preventDefault();
|
|
237
|
+
if (hasZoomed) {
|
|
238
|
+
e.preventDefault?.();
|
|
349
239
|
}
|
|
350
240
|
}
|
|
351
241
|
});
|
|
@@ -441,7 +331,9 @@
|
|
|
441
331
|
_registerModule(_modules, 'masters/modules/mouse-wheel-zoom.src.js', [_modules['Core/Globals.js'], _modules['Extensions/MouseWheelZoom/MouseWheelZoom.js']], function (Highcharts, MouseWheelZoom) {
|
|
442
332
|
|
|
443
333
|
const G = Highcharts;
|
|
444
|
-
MouseWheelZoom
|
|
334
|
+
G.MouseWheelZoom = G.MouseWheelZoom || MouseWheelZoom;
|
|
335
|
+
G.MouseWheelZoom.compose(G.Chart);
|
|
445
336
|
|
|
337
|
+
return Highcharts;
|
|
446
338
|
});
|
|
447
339
|
}));
|