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,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS v11.
|
|
2
|
+
* @license Highcharts JS v11.4.0 (2024-03-05)
|
|
3
3
|
*
|
|
4
4
|
* Boost module
|
|
5
5
|
*
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
* @private
|
|
134
134
|
*/
|
|
135
135
|
function compose(ChartClass, wglMode) {
|
|
136
|
-
if (wglMode && pushUnique(composed,
|
|
136
|
+
if (wglMode && pushUnique(composed, 'Boost.Chart')) {
|
|
137
137
|
ChartClass.prototype.callbacks.push(onChartCallback);
|
|
138
138
|
}
|
|
139
139
|
return ChartClass;
|
|
@@ -155,7 +155,7 @@
|
|
|
155
155
|
chart.navigator.top + chart.navigator.height - chart.plotTop :
|
|
156
156
|
chart.plotHeight
|
|
157
157
|
};
|
|
158
|
-
// Clipping of
|
|
158
|
+
// Clipping of individual series (#11906, #19039).
|
|
159
159
|
if (target.getClipBox) {
|
|
160
160
|
const { xAxis, yAxis } = target;
|
|
161
161
|
clipBox = target.getClipBox();
|
|
@@ -278,8 +278,8 @@
|
|
|
278
278
|
chart.boost.forceChartBoost = void 0;
|
|
279
279
|
chart.boosted = false;
|
|
280
280
|
// Clear the canvas
|
|
281
|
-
if (chart.
|
|
282
|
-
chart.boost.clear();
|
|
281
|
+
if (!chart.axes.some((axis) => axis.isPanning)) {
|
|
282
|
+
chart.boost.clear?.();
|
|
283
283
|
}
|
|
284
284
|
if (chart.boost.canvas &&
|
|
285
285
|
chart.boost.wgl &&
|
|
@@ -949,7 +949,7 @@
|
|
|
949
949
|
* @param {string} attrib
|
|
950
950
|
* Name of the Attribute to bind the buffer to
|
|
951
951
|
* @param {number} dataComponents
|
|
952
|
-
*
|
|
952
|
+
* Number of components per. indice
|
|
953
953
|
*/
|
|
954
954
|
build(dataIn, attrib, dataComponents) {
|
|
955
955
|
let farray;
|
|
@@ -1660,8 +1660,8 @@
|
|
|
1660
1660
|
// y = plotHeight;
|
|
1661
1661
|
// }
|
|
1662
1662
|
if (x > plotWidth) {
|
|
1663
|
-
// If this is
|
|
1664
|
-
// entirely, as we're not
|
|
1663
|
+
// If this is rendered as a point, just skip drawing it
|
|
1664
|
+
// entirely, as we're not dependant on lineTo'ing to it.
|
|
1665
1665
|
// See #8197
|
|
1666
1666
|
if (inst.drawMode === 'POINTS') {
|
|
1667
1667
|
continue;
|
|
@@ -1775,7 +1775,7 @@
|
|
|
1775
1775
|
}
|
|
1776
1776
|
/**
|
|
1777
1777
|
* Push a series to the renderer
|
|
1778
|
-
* If we render the series
|
|
1778
|
+
* If we render the series immediately, we don't have to loop later
|
|
1779
1779
|
* @private
|
|
1780
1780
|
* @param {Highchart.Series} s
|
|
1781
1781
|
* The series to push.
|
|
@@ -2305,7 +2305,7 @@
|
|
|
2305
2305
|
* @private
|
|
2306
2306
|
*/
|
|
2307
2307
|
function compose(SeriesClass, seriesTypes, wglMode) {
|
|
2308
|
-
if (pushUnique(composed,
|
|
2308
|
+
if (pushUnique(composed, 'Boost.Series')) {
|
|
2309
2309
|
const plotOptions = getOptions().plotOptions, seriesProto = SeriesClass.prototype;
|
|
2310
2310
|
addEvent(SeriesClass, 'destroy', onSeriesDestroy);
|
|
2311
2311
|
addEvent(SeriesClass, 'hide', onSeriesHide);
|
|
@@ -2370,7 +2370,7 @@
|
|
|
2370
2370
|
if (ScatterSeries) {
|
|
2371
2371
|
ScatterSeries.prototype.fill = true;
|
|
2372
2372
|
}
|
|
2373
|
-
// We need to handle heatmaps
|
|
2373
|
+
// We need to handle heatmaps separately, since we can't perform the
|
|
2374
2374
|
// size/color calculations in the shader easily.
|
|
2375
2375
|
// @todo This likely needs future optimization.
|
|
2376
2376
|
[HeatmapSeries, TreemapSeries].forEach((SC) => {
|
|
@@ -2486,8 +2486,7 @@
|
|
|
2486
2486
|
// it will cover the most common use case of one or more
|
|
2487
2487
|
// successive boosted or non-boosted series (#9819).
|
|
2488
2488
|
zIndex: series.options.zIndex
|
|
2489
|
-
})
|
|
2490
|
-
.clip(boost.clipRect);
|
|
2489
|
+
});
|
|
2491
2490
|
if (target instanceof ChartClass) {
|
|
2492
2491
|
target.boost.markerGroup = target.renderer
|
|
2493
2492
|
.g()
|
|
@@ -2498,7 +2497,15 @@
|
|
|
2498
2497
|
boost.canvas.width = width;
|
|
2499
2498
|
boost.canvas.height = height;
|
|
2500
2499
|
if (boost.clipRect) {
|
|
2501
|
-
|
|
2500
|
+
const box = getBoostClipRect(chart, target),
|
|
2501
|
+
// When using panes, the image itself must be clipped. When not
|
|
2502
|
+
// using panes, it is better to clip the target group, because then
|
|
2503
|
+
// we preserve clipping on touch- and mousewheel zoom preview.
|
|
2504
|
+
clippedElement = (box.width === chart.clipBox.width &&
|
|
2505
|
+
box.height === chart.clipBox.height) ? targetGroup :
|
|
2506
|
+
(boost.targetFo || boost.target);
|
|
2507
|
+
boost.clipRect.attr(box);
|
|
2508
|
+
clippedElement?.clip(boost.clipRect);
|
|
2502
2509
|
}
|
|
2503
2510
|
boost.resize();
|
|
2504
2511
|
boost.clear();
|
|
@@ -2550,7 +2557,9 @@
|
|
|
2550
2557
|
series[prop] = seriesProp.destroy();
|
|
2551
2558
|
}
|
|
2552
2559
|
});
|
|
2553
|
-
series.zones
|
|
2560
|
+
for (const zone of series.zones) {
|
|
2561
|
+
destroyObjectProperties(zone, void 0, true);
|
|
2562
|
+
}
|
|
2554
2563
|
}
|
|
2555
2564
|
/**
|
|
2556
2565
|
* An "async" foreach loop. Uses a setTimeout to keep the loop from blocking the
|
|
@@ -2781,6 +2790,7 @@
|
|
|
2781
2790
|
* @private
|
|
2782
2791
|
*/
|
|
2783
2792
|
function scatterProcessData(force) {
|
|
2793
|
+
var _a, _b, _c, _d;
|
|
2784
2794
|
const series = this, { options, xAxis, yAxis } = series;
|
|
2785
2795
|
// Process only on changes
|
|
2786
2796
|
if (!series.isDirty &&
|
|
@@ -2792,7 +2802,7 @@
|
|
|
2792
2802
|
// Required to get tick-based zoom ranges that take options into account
|
|
2793
2803
|
// like `minPadding`, `maxPadding`, `startOnTick`, `endOnTick`.
|
|
2794
2804
|
series.yAxis.setTickInterval();
|
|
2795
|
-
const boostThreshold = options.boostThreshold || 0, cropThreshold = options.cropThreshold, data = options.data || series.data, xData = series.xData, xExtremes = xAxis.getExtremes(), xMax = xExtremes.max, xMin = xExtremes.min, yData = series.yData, yExtremes = yAxis.getExtremes(), yMax = yExtremes.max, yMin = yExtremes.min;
|
|
2805
|
+
const boostThreshold = options.boostThreshold || 0, cropThreshold = options.cropThreshold, data = options.data || series.data, xData = series.xData, xExtremes = xAxis.getExtremes(), xMax = xExtremes.max ?? Number.MAX_VALUE, xMin = xExtremes.min ?? -Number.MAX_VALUE, yData = series.yData, yExtremes = yAxis.getExtremes(), yMax = yExtremes.max ?? Number.MAX_VALUE, yMin = yExtremes.min ?? -Number.MAX_VALUE;
|
|
2796
2806
|
// Skip processing in non-boost zoom
|
|
2797
2807
|
if (!series.boosted &&
|
|
2798
2808
|
xAxis.old &&
|
|
@@ -2818,8 +2828,8 @@
|
|
|
2818
2828
|
return true;
|
|
2819
2829
|
}
|
|
2820
2830
|
// Filter unsorted scatter data for ranges
|
|
2821
|
-
const processedData = [], processedXData = [], processedYData = [];
|
|
2822
|
-
let cropped = false, x, y;
|
|
2831
|
+
const processedData = [], processedXData = [], processedYData = [], xRangeNeeded = !(isNumber(xExtremes.max) || isNumber(xExtremes.min)), yRangeNeeded = !(isNumber(yExtremes.max) || isNumber(yExtremes.min));
|
|
2832
|
+
let cropped = false, x, xDataMax = xData[0], xDataMin = xData[0], y, yDataMax = yData[0], yDataMin = yData[0];
|
|
2823
2833
|
for (let i = 0, iEnd = xData.length; i < iEnd; ++i) {
|
|
2824
2834
|
x = xData[i];
|
|
2825
2835
|
y = yData[i];
|
|
@@ -2828,11 +2838,27 @@
|
|
|
2828
2838
|
processedData.push({ x, y });
|
|
2829
2839
|
processedXData.push(x);
|
|
2830
2840
|
processedYData.push(y);
|
|
2841
|
+
if (xRangeNeeded) {
|
|
2842
|
+
xDataMax = Math.max(xDataMax, x);
|
|
2843
|
+
xDataMin = Math.min(xDataMin, x);
|
|
2844
|
+
}
|
|
2845
|
+
if (yRangeNeeded) {
|
|
2846
|
+
yDataMax = Math.max(yDataMax, y);
|
|
2847
|
+
yDataMin = Math.min(yDataMin, y);
|
|
2848
|
+
}
|
|
2831
2849
|
}
|
|
2832
2850
|
else {
|
|
2833
2851
|
cropped = true;
|
|
2834
2852
|
}
|
|
2835
2853
|
}
|
|
2854
|
+
if (xRangeNeeded) {
|
|
2855
|
+
(_a = xAxis.options).max ?? (_a.max = xDataMax);
|
|
2856
|
+
(_b = xAxis.options).min ?? (_b.min = xDataMin);
|
|
2857
|
+
}
|
|
2858
|
+
if (yRangeNeeded) {
|
|
2859
|
+
(_c = yAxis.options).max ?? (_c.max = yDataMax);
|
|
2860
|
+
(_d = yAxis.options).min ?? (_d.min = yDataMin);
|
|
2861
|
+
}
|
|
2836
2862
|
// Set properties as base processData
|
|
2837
2863
|
series.cropped = cropped;
|
|
2838
2864
|
series.cropStart = 0;
|
|
@@ -2856,6 +2882,13 @@
|
|
|
2856
2882
|
this.processedXData ||
|
|
2857
2883
|
false);
|
|
2858
2884
|
let renderer = false, lastClientX, yBottom = yAxis.getThreshold(threshold), minVal, maxVal, minI, maxI;
|
|
2885
|
+
// When touch-zooming or mouse-panning, re-rendering the canvas would not
|
|
2886
|
+
// perform fast enough. Instead, let the axes redraw, but not the series.
|
|
2887
|
+
// The series is scale-translated in an event handler for an approximate
|
|
2888
|
+
// preview.
|
|
2889
|
+
if (xAxis.isPanning || yAxis.isPanning) {
|
|
2890
|
+
return;
|
|
2891
|
+
}
|
|
2859
2892
|
// Get or create the renderer
|
|
2860
2893
|
renderer = createAndAttachRenderer(chart, this);
|
|
2861
2894
|
chart.boosted = true;
|
|
@@ -2878,7 +2911,7 @@
|
|
|
2878
2911
|
this.markerGroup = this.plotGroup('markerGroup', 'markers', true, 1, chart.seriesGroup);
|
|
2879
2912
|
}
|
|
2880
2913
|
else {
|
|
2881
|
-
// If series has a private
|
|
2914
|
+
// If series has a private markerGroup, remove that
|
|
2882
2915
|
// and use common markerGroup
|
|
2883
2916
|
if (this.markerGroup &&
|
|
2884
2917
|
this.markerGroup !== chart.boost.markerGroup) {
|
|
@@ -2932,6 +2965,7 @@
|
|
|
2932
2965
|
};
|
|
2933
2966
|
// Do not start building while drawing
|
|
2934
2967
|
this.buildKDTree = noop;
|
|
2968
|
+
fireEvent(this, 'renderCanvas');
|
|
2935
2969
|
if (renderer) {
|
|
2936
2970
|
allocateIfNotSeriesBoosting(renderer, this);
|
|
2937
2971
|
renderer.pushSeries(this);
|
|
@@ -3117,9 +3151,16 @@
|
|
|
3117
3151
|
* @private
|
|
3118
3152
|
*/
|
|
3119
3153
|
function wrapSeriesGetExtremes(proceed) {
|
|
3120
|
-
if (this.boosted
|
|
3121
|
-
hasExtremes(this)) {
|
|
3122
|
-
|
|
3154
|
+
if (this.boosted) {
|
|
3155
|
+
if (hasExtremes(this)) {
|
|
3156
|
+
return {};
|
|
3157
|
+
}
|
|
3158
|
+
if (this.xAxis.isPanning || this.yAxis.isPanning) {
|
|
3159
|
+
// Do not re-compute the extremes during panning, because looping
|
|
3160
|
+
// the data is expensive. The `this` contains the `dataMin` and
|
|
3161
|
+
// `dataMax` to use.
|
|
3162
|
+
return this;
|
|
3163
|
+
}
|
|
3123
3164
|
}
|
|
3124
3165
|
return proceed.apply(this, [].slice.call(arguments, 1));
|
|
3125
3166
|
}
|
|
@@ -3143,6 +3184,10 @@
|
|
|
3143
3184
|
// Use processedYData for the stack (#7481):
|
|
3144
3185
|
series.options.stacking ||
|
|
3145
3186
|
!hasExtremes(series, true)) {
|
|
3187
|
+
// Do nothing until the panning stops
|
|
3188
|
+
if (series.boosted && (series.xAxis?.isPanning || series.yAxis?.isPanning)) {
|
|
3189
|
+
return;
|
|
3190
|
+
}
|
|
3146
3191
|
// Extra check for zoomed scatter data
|
|
3147
3192
|
if (isScatter && !series.yAxis.treeGrid) {
|
|
3148
3193
|
scatterProcessData.call(series, arguments[1]);
|
|
@@ -3220,8 +3265,8 @@
|
|
|
3220
3265
|
const { getBoostClipRect, isChartSeriesBoosting } = BoostChart;
|
|
3221
3266
|
const { destroyGraphics } = BoostSeries;
|
|
3222
3267
|
const { parse: color } = Color;
|
|
3223
|
-
const {
|
|
3224
|
-
const { addEvent, fireEvent, isNumber, merge, pick,
|
|
3268
|
+
const { doc, noop } = H;
|
|
3269
|
+
const { addEvent, fireEvent, isNumber, merge, pick, wrap } = U;
|
|
3225
3270
|
/* *
|
|
3226
3271
|
*
|
|
3227
3272
|
* Namespace
|
|
@@ -3278,8 +3323,9 @@
|
|
|
3278
3323
|
* @private
|
|
3279
3324
|
*/
|
|
3280
3325
|
function compose(ChartClass, SeriesClass, seriesTypes) {
|
|
3281
|
-
|
|
3282
|
-
|
|
3326
|
+
const seriesProto = SeriesClass.prototype;
|
|
3327
|
+
if (!seriesProto.renderCanvas) {
|
|
3328
|
+
const { area: AreaSeries, bubble: BubbleSeries, column: ColumnSeries, heatmap: HeatmapSeries, scatter: ScatterSeries } = seriesTypes;
|
|
3283
3329
|
ChartConstructor = ChartClass;
|
|
3284
3330
|
ChartClass.prototype.callbacks.push((chart) => {
|
|
3285
3331
|
addEvent(chart, 'predraw', onChartClear);
|
|
@@ -3800,5 +3846,6 @@
|
|
|
3800
3846
|
BoostCanvas.compose(G.Chart, G.Series, G.seriesTypes);
|
|
3801
3847
|
};
|
|
3802
3848
|
|
|
3849
|
+
return Highcharts;
|
|
3803
3850
|
});
|
|
3804
3851
|
}));
|
package/modules/boost.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
* Highcharts JS v11.
|
|
1
|
+
!/**
|
|
2
|
+
* Highcharts JS v11.4.0 (2024-03-04)
|
|
3
3
|
*
|
|
4
4
|
* Boost module
|
|
5
5
|
*
|
|
@@ -8,4 +8,4 @@
|
|
|
8
8
|
*
|
|
9
9
|
* License: www.highcharts.com/license
|
|
10
10
|
*
|
|
11
|
-
* */!function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/boost",["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,s){e.hasOwnProperty(t)||(e[t]=s.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:t,module:e[t]}})))}i(t,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),i(t,"Extensions/Boost/BoostableMap.js",[t["Extensions/Boost/Boostables.js"]],function(e){let t={};return e.forEach(e=>{t[e]=!0}),t}),i(t,"Extensions/Boost/BoostChart.js",[t["Extensions/Boost/BoostableMap.js"],t["Core/Globals.js"],t["Core/Utilities.js"]],function(e,t,i){let{composed:s}=t,{addEvent:o,pick:r,pushUnique:n}=i;function a(t){let i=t.series,s=t.boost=t.boost||{},o=t.options.boost||{},n=r(o.seriesThreshold,50);if(i.length>=n)return!0;if(1===i.length)return!1;let a=o.allowForce;if(void 0===a){for(let e of(a=!0,t.xAxis))if(r(e.min,-1/0)>r(e.dataMin,-1/0)||r(e.max,1/0)<r(e.dataMax,1/0)){a=!1;break}}if(void 0!==s.forceChartBoost){if(a)return s.forceChartBoost;s.forceChartBoost=void 0}let l=0,h=0,d;for(let t of i)0!==(d=t.options).boostThreshold&&!1!==t.visible&&"heatmap"!==t.type&&(e[t.type]&&++l,function(...e){let t=-Number.MAX_VALUE;return e.forEach(function(e){if(null!=e&&void 0!==e.length&&e.length>0)return t=e.length,!0}),t}(t.processedXData,d.data,t.points)>=(d.boostThreshold||Number.MAX_VALUE)&&++h);return s.forceChartBoost=a&&(l===i.length&&h===l||h>5),s.forceChartBoost}function l(e){function t(){e.boost&&e.boost.wgl&&a(e)&&e.boost.wgl.render(e)}o(e,"predraw",function(){e.boost=e.boost||{},e.boost.forceChartBoost=void 0,e.boosted=!1,e.boost.clear&&e.boost.clear(),e.boost.canvas&&e.boost.wgl&&a(e)&&e.boost.wgl.allocateBuffer(e),e.boost.markerGroup&&e.xAxis&&e.xAxis.length>0&&e.yAxis&&e.yAxis.length>0&&e.boost.markerGroup.translate(e.xAxis[0].pos,e.yAxis[0].pos)}),o(e,"load",t,{order:-1}),o(e,"redraw",t);let i=-1,s=-1;o(e.pointer,"afterGetHoverData",()=>{let t=e.hoverSeries;if(e.boost=e.boost||{},e.boost.markerGroup&&t){let o=e.inverted?t.yAxis:t.xAxis,r=e.inverted?t.xAxis:t.yAxis;(o&&o.pos!==i||r&&r.pos!==s)&&(e.boost.markerGroup.translate(o.pos,r.pos),i=o.pos,s=r.pos)}})}return{compose:function e(t,i){return i&&n(s,e)&&t.prototype.callbacks.push(l),t},getBoostClipRect:function(e,t){let i={x:e.plotLeft,y:e.plotTop,width:e.plotWidth,height:e.navigator?e.navigator.top+e.navigator.height-e.plotTop:e.plotHeight};if(t.getClipBox){let{xAxis:s,yAxis:o}=t;if(i=t.getClipBox(),e.inverted){let e=i.width;i.width=i.height,i.height=e,i.x=o.pos,i.y=s.pos}else i.x=s.pos,i.y=o.pos}if(t===e){let t=e.inverted?e.xAxis:e.yAxis;t.length<=1&&(i.y=Math.min(t[0].pos,i.y),i.height=t[0].pos-e.plotTop+t[0].len)}return i},isChartSeriesBoosting:a}}),i(t,"Extensions/Boost/WGLDrawMode.js",[],function(){return{area:"LINES",arearange:"LINES",areaspline:"LINES",column:"LINES",columnrange:"LINES",bar:"LINES",line:"LINE_STRIP",scatter:"POINTS",heatmap:"TRIANGLES",treemap:"TRIANGLES",bubble:"POINTS"}}),i(t,"Extensions/Boost/WGLShader.js",[t["Core/Utilities.js"]],function(e){let{clamp:t,error:i,pick:s}=e;return class{constructor(e){if(this.errors=[],this.uLocations={},this.gl=e,e&&!this.createShader())return}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let e=this.stringToProgram("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}","vertex"),t=this.stringToProgram("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment"),i=e=>this.gl.getUniformLocation(this.shaderProgram,e);return e&&t?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,e),this.gl.attachShader(this.shaderProgram,t),this.gl.linkProgram(this.shaderProgram),this.gl.getProgramParameter(this.shaderProgram,this.gl.LINK_STATUS))?(this.gl.useProgram(this.shaderProgram),this.gl.bindAttribLocation(this.shaderProgram,0,"aVertexPosition"),this.pUniform=i("uPMatrix"),this.psUniform=i("pSize"),this.fcUniform=i("fillColor"),this.isBubbleUniform=i("isBubble"),this.bubbleSizeAbsUniform=i("bubbleSizeAbs"),this.bubbleSizeAreaUniform=i("bubbleSizeByArea"),this.uSamplerUniform=i("uSampler"),this.skipTranslationUniform=i("skipTranslation"),this.isCircleUniform=i("isCircle"),this.isInverted=i("isInverted"),!0):(this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram)),this.handleErrors(),this.shaderProgram=!1,!1):(this.shaderProgram=!1,this.handleErrors(),!1)}handleErrors(){this.errors.length&&i("[highcharts boost] shader error - "+this.errors.join("\n"))}stringToProgram(e,t){let i=this.gl.createShader("vertex"===t?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return(this.gl.shaderSource(i,e),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))?i:(this.errors.push("when compiling "+t+" shader:\n"+this.gl.getShaderInfoLog(i)),!1)}destroy(){this.gl&&this.shaderProgram&&(this.gl.deleteProgram(this.shaderProgram),this.shaderProgram=!1)}fillColorUniform(){return this.fcUniform}getProgram(){return this.shaderProgram}pointSizeUniform(){return this.psUniform}perspectiveUniform(){return this.pUniform}reset(){this.gl&&this.shaderProgram&&(this.gl.uniform1i(this.isBubbleUniform,0),this.gl.uniform1i(this.isCircleUniform,0))}setBubbleUniforms(e,i,o,r=1){let n=e.options,a=Number.MAX_VALUE,l=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&e.is("bubble")){let h=e.getPxExtremes();a=s(n.zMin,t(i,!1===n.displayNegative?n.zThreshold:-Number.MAX_VALUE,a)),l=s(n.zMax,Math.max(l,o)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,"width"!==e.options.sizeBy),this.gl.uniform1i(this.bubbleSizeAbsUniform,e.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",h.minPxSize*r),this.setUniform("bubbleMaxSize",h.maxPxSize*r),this.setUniform("bubbleZMin",a),this.setUniform("bubbleZMax",l),this.setUniform("bubbleZThreshold",e.options.zThreshold)}}setColor(e){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,e[0]/255,e[1]/255,e[2]/255,e[3])}setDrawAsCircle(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,e?1:0)}setInverted(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,e)}setPMatrix(e){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,e)}setPointSize(e){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,e)}setSkipTranslation(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,!0===e?1:0)}setTexture(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,e)}setUniform(e,t){if(this.gl&&this.shaderProgram){let i=this.uLocations[e]=this.uLocations[e]||this.gl.getUniformLocation(this.shaderProgram,e);this.gl.uniform1f(i,t)}}}}),i(t,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(e,t,i){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=i||2,this.dataComponents=i,this.gl=e,this.shader=t}allocate(e){this.iterator=-1,this.preAllocated=new Float32Array(4*e)}bind(){if(!this.buffer)return!1;this.gl.vertexAttribPointer(this.vertAttribute,this.components,this.gl.FLOAT,!1,0,0)}build(e,t,i){let s;return(this.data=e||[],this.data&&0!==this.data.length||this.preAllocated)?(this.components=i||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(s=new Float32Array(this.data)),this.buffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.preAllocated||s,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),t),this.gl.enableVertexAttribArray(this.vertAttribute),s=!1,!0):(this.destroy(),!1)}destroy(){this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=!1,this.vertAttribute=!1),this.iterator=0,this.components=this.dataComponents||2,this.data=[]}push(e,t,i,s){this.preAllocated&&(this.preAllocated[++this.iterator]=e,this.preAllocated[++this.iterator]=t,this.preAllocated[++this.iterator]=i,this.preAllocated[++this.iterator]=s)}render(e,t,i){let s=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!s&&((!e||e>s||e<0)&&(e=0),(!t||t>s)&&(t=s),!(e>=t)&&(i=i||"POINTS",this.gl.drawArrays(this.gl[i],e/this.components,(t-e)/this.components),!0))}}}),i(t,"Extensions/Boost/WGLRenderer.js",[t["Core/Color/Color.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLDrawMode.js"],t["Extensions/Boost/WGLShader.js"],t["Extensions/Boost/WGLVertexBuffer.js"]],function(e,t,i,s,o,r){let{parse:n}=e,{doc:a,win:l}=t,{isNumber:h,isObject:d,merge:f,objectEach:u,pick:g}=i,c={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},m={scatter:!0,bubble:!0},b=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class p{static orthoMatrix(e,t){return[2/e,0,0,0,0,-(2/t),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(e){let t,i,s;return e.boosted?(t=!!e.options.stacking,i=e.xData||e.options.xData||e.processedXData,s=(t?e.data:i||e.options.data).length,"treemap"===e.type?s*=12:"heatmap"===e.type?s*=6:c[e.type]&&(s*=2),s):0}constructor(e){this.data=[],this.height=0,this.isInited=!1,this.markerData=[],this.series=[],this.textureHandles={},this.width=0,this.postRenderCallback=e,this.settings={pointSize:1,lineWidth:1,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,debug:{timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1,timeBufferCopy:!1,timeKDTree:!1,showSkipSummary:!1}}}getPixelRatio(){return this.settings.pixelRatio||l.devicePixelRatio||1}setOptions(e){"pixelRatio"in e||(e.pixelRatio=1),f(!0,this.settings,e)}allocateBuffer(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.series.forEach(e=>{e.boosted&&(i+=p.seriesPointCount(e))}),t&&t.allocate(i))}allocateBufferForSingleSeries(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.boosted&&(i=p.seriesPointCount(e)),t&&t.allocate(i))}clear(){let e=this.gl;e&&e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}pushSeriesData(e,t){let i=this.data,s=this.settings,o=this.vbuffer,r=e.pointArrayMap&&"low,high"===e.pointArrayMap.join(","),{chart:a,options:l,sorted:h,xAxis:f,yAxis:u}=e,g=!!l.stacking,m=l.data,b=e.xAxis.getExtremes(),p=b.min-(e.xAxis.minPointOffset||0),x=b.max+(e.xAxis.minPointOffset||0),A=e.yAxis.getExtremes(),y=A.min-(e.yAxis.minPointOffset||0),P=A.max+(e.yAxis.minPointOffset||0),v=e.xData||l.xData||e.processedXData,T=e.yData||l.yData||e.processedYData,E=e.zData||l.zData||e.processedZData,S=!v||0===v.length,M=l.connectNulls,C=e.points||!1,k=g?e.data:v||m,U={x:Number.MAX_VALUE,y:0},w={x:-Number.MAX_VALUE,y:0},R=void 0===a.index,D=c[e.type],B=l.zoneAxis||"y",L=l.zones||!1,z=l.threshold,_=this.getPixelRatio(),I=e.chart.plotWidth,N=!1,G=!1,O,X,V=0,j=!1,F,H,W,Y,q=-1,Z=!1,K=!1,Q,J=!1,$=!1,ee=!1,et=!1,ei=!0,es=!0,eo,er=!1,en=!1,ea=0;if(l.boostData&&l.boostData.length>0)return;if(l.gapSize&&(en="value"!==l.gapUnit?l.gapSize*e.closestPointRange:l.gapSize),L&&(eo=[],L.forEach((e,t)=>{if(e.color){let i=n(e.color).rgba;i[0]/=255,i[1]/=255,i[2]/=255,eo[t]=i,er||void 0!==e.value||(er=i)}}),!er)){let t=e.pointAttribs&&e.pointAttribs().fill||e.color;er=n(t).rgba,er[0]/=255,er[1]/=255,er[2]/=255}a.inverted&&(I=e.chart.plotHeight),e.closestPointRangePx=Number.MAX_VALUE;let el=e=>{e&&(t.colorData.push(e[0]),t.colorData.push(e[1]),t.colorData.push(e[2]),t.colorData.push(e[3]))},eh=(e,r,n,a=1,l)=>{el(l),1!==_&&(!s.useGPUTranslations||t.skipTranslation)&&(e*=_,r*=_,a*=_),s.usePreallocated&&o?(o.push(e,r,n?1:0,a),ea+=4):(i.push(e),i.push(r),i.push(n?_:0),i.push(a))},ed=()=>{t.segments.length&&(t.segments[t.segments.length-1].to=i.length||ea)},ef=()=>{t.segments.length&&t.segments[t.segments.length-1].from===(i.length||ea)||(ed(),t.segments.push({from:i.length||ea}))},eu=(e,t,i,s,o)=>{el(o),eh(e+i,t),el(o),eh(e,t),el(o),eh(e,t+s),el(o),eh(e,t+s),el(o),eh(e+i,t+s),el(o),eh(e+i,t)};if(ef(),C&&C.length>0){t.skipTranslation=!0,t.drawMode="TRIANGLES",C[0].node&&C[0].node.levelDynamic&&C.sort((e,t)=>{if(e.node){if(e.node.levelDynamic>t.node.levelDynamic)return 1;if(e.node.levelDynamic<t.node.levelDynamic)return -1}return 0}),C.forEach(t=>{let i,s;let o=t.plotY;if(void 0!==o&&!isNaN(o)&&null!==t.y&&t.shapeArgs){let{x:o=0,y:r=0,width:l=0,height:h=0}=t.shapeArgs;i=(s=a.styledMode?t.series.colorAttribs(t):s=t.series.pointAttribs(t))["stroke-width"]||0,ee=n(s.fill).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255,e.is("treemap")&&(i=i||1,X=n(s.stroke).rgba,X[0]/=255,X[1]/=255,X[2]/=255,eu(o,r,l,h,X),i/=2),e.is("heatmap")&&a.inverted&&(o=f.len-o,r=u.len-r,l=-l,h=-h),eu(o+i,r+i,l-2*i,h-2*i,ee)}}),ed();return}for(;q<k.length-1;){if(void 0===(W=k[++q]))continue;if(R)break;let i=m&&m[q];if(!S&&d(i,!0)&&i.color&&(ee=n(i.color).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255),S?(F=W[0],H=W[1],k[q+1]&&(K=k[q+1][0]),k[q-1]&&(Z=k[q-1][0]),W.length>=3&&(Y=W[2],W[2]>t.zMax&&(t.zMax=W[2]),W[2]<t.zMin&&(t.zMin=W[2]))):(F=W,H=T[q],k[q+1]&&(K=k[q+1]),k[q-1]&&(Z=k[q-1]),E&&E.length&&(Y=E[q],E[q]>t.zMax&&(t.zMax=E[q]),E[q]<t.zMin&&(t.zMin=E[q]))),!M&&(null===F||null===H)){ef();continue}if(K&&K>=p&&K<=x&&(J=!0),Z&&Z>=p&&Z<=x&&($=!0),r?(S&&(H=W.slice(1,3)),Q=H[0],H=H[1]):g&&(F=W.x,Q=(H=W.stackY)-W.y),null!=y&&null!=P&&(ei=H>=y&&H<=P),F>x&&w.x<x&&(w.x=F,w.y=H),F<p&&U.x>p&&(U.x=F,U.y=H),null!==H||!M){if(null===H||!ei&&!J&&!$){ef();continue}if(h&&(K>=p||F>=p)&&(Z<=x||F<=x)&&(et=!0),et||J||$){if(en&&F-Z>en&&ef(),L){let e;L.some((t,i)=>{let s=L[i-1];return"x"===B?void 0!==t.value&&F<=t.value&&(eo[i]&&(!s||F>=s.value)&&(e=eo[i]),!0):void 0!==t.value&&H<=t.value&&(eo[i]&&(!s||H>=s.value)&&(e=eo[i]),!0)}),ee=e||er||ee}if(s.useGPUTranslations||(t.skipTranslation=!0,F=f.toPixels(F,!0),H=u.toPixels(H,!0),!(F>I)||"POINTS"!==t.drawMode)){if(t.hasMarkers&&et&&!1!==N&&(e.closestPointRangePx=Math.min(e.closestPointRangePx,Math.abs(F-N))),!s.useGPUTranslations&&!s.usePreallocated&&N&&1>Math.abs(F-N)&&G&&1>Math.abs(H-G)){s.debug.showSkipSummary&&++V;continue}D&&(O=Q,(!1===Q||void 0===Q)&&(O=H<0?H:0),(r||g)&&!u.logarithmic||(O=Math.max(null===z?y:z,y)),s.useGPUTranslations||(O=u.toPixels(O,!0)),eh(F,O,0,0,ee)),l.step&&!es&&eh(F,G,0,2,ee),eh(F,H,0,"bubble"===e.type?Y||1:2,ee),N=F,G=H,j=!0,es=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",V);let eg=(e,i)=>{if(s.useGPUTranslations||(t.skipTranslation=!0,e.x=f.toPixels(e.x,!0),e.y=u.toPixels(e.y,!0)),i){this.data=[e.x,e.y,0,2].concat(this.data);return}eh(e.x,e.y,0,2)};!j&&!1!==M&&"line_strip"===e.drawMode&&(U.x<Number.MAX_VALUE&&eg(U,!0),w.x>-Number.MAX_VALUE&&eg(w)),ed()}pushSeries(e){let t=this.markerData,i=this.series,o=this.settings;i.length>0&&i[i.length-1].hasMarkers&&(i[i.length-1].markerTo=t.length),o.debug.timeSeriesProcessing&&console.time("building "+e.type+" series");let r={segments:[],markerFrom:t.length,colorData:[],series:e,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!e.options.marker&&!1!==e.options.marker.enabled,showMarkers:!0,drawMode:s[e.type]||"LINE_STRIP"};e.index>=i.length?i.push(r):i[e.index]=r,this.pushSeriesData(e,r),o.debug.timeSeriesProcessing&&console.timeEnd("building "+e.type+" series")}flush(){let e=this.vbuffer;this.data=[],this.markerData=[],this.series=[],e&&e.destroy()}setXAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("xAxisTrans",e.transA*i),t.setUniform("xAxisMin",e.min),t.setUniform("xAxisMinPad",e.minPixelPadding*i),t.setUniform("xAxisPointRange",e.pointRange),t.setUniform("xAxisLen",e.len*i),t.setUniform("xAxisPos",e.pos*i),t.setUniform("xAxisCVSCoord",!e.horiz),t.setUniform("xAxisIsLog",!!e.logarithmic),t.setUniform("xAxisReversed",!!e.reversed)}setYAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("yAxisTrans",e.transA*i),t.setUniform("yAxisMin",e.min),t.setUniform("yAxisMinPad",e.minPixelPadding*i),t.setUniform("yAxisPointRange",e.pointRange),t.setUniform("yAxisLen",e.len*i),t.setUniform("yAxisPos",e.pos*i),t.setUniform("yAxisCVSCoord",!e.horiz),t.setUniform("yAxisIsLog",!!e.logarithmic),t.setUniform("yAxisReversed",!!e.reversed)}setThreshold(e,t){let i=this.shader;i&&(i.setUniform("hasThreshold",e),i.setUniform("translatedThreshold",t))}renderChart(i){let s=this.gl,o=this.settings,a=this.shader,l=this.vbuffer,d=this.getPixelRatio();if(!i)return!1;this.width=i.chartWidth*d,this.height=i.chartHeight*d;let f=this.height,u=this.width;if(!s||!a||!u||!f)return!1;o.debug.timeRendering&&console.time("gl rendering"),s.canvas.width=u,s.canvas.height=f,a.bind(),s.viewport(0,0,u,f),a.setPMatrix(p.orthoMatrix(u,f)),o.lineWidth>1&&!t.isMS&&s.lineWidth(o.lineWidth),l&&(l.build(this.data,"aVertexPosition",4),l.bind()),a.setInverted(i.inverted),this.series.forEach((t,f)=>{let u=t.series.options,c=u.marker,b=void 0!==u.lineWidth?u.lineWidth:1,p=u.threshold,x=h(p),A=t.series.yAxis.getThreshold(p),y=g(u.marker?u.marker.enabled:null,!!t.series.xAxis.isRadial||null,t.series.closestPointRangePx>2*((u.marker?u.marker.radius:10)||10)),P=this.textureHandles[c&&c.symbol||t.series.symbol]||this.textureHandles.circle,v,T,E,S=[];if(0!==t.segments.length&&t.segments[0].from!==t.segments[0].to&&(P.isReady&&(s.bindTexture(s.TEXTURE_2D,P.handle),a.setTexture(P.handle)),i.styledMode?E=t.series.markerGroup&&t.series.markerGroup.getStyle("fill"):(E="POINTS"===t.drawMode&&t.series.pointAttribs&&t.series.pointAttribs().fill||t.series.color,u.colorByPoint&&(E=t.series.chart.options.colors[f])),t.series.fillOpacity&&u.fillOpacity&&(E=new e(E).setOpacity(g(u.fillOpacity,1)).get()),S=n(E).rgba,o.useAlpha||(S[3]=1),"LINES"===t.drawMode&&o.useAlpha&&S[3]<1&&(S[3]/=10),"add"===u.boostBlending?(s.blendFunc(s.SRC_ALPHA,s.ONE),s.blendEquation(s.FUNC_ADD)):"mult"===u.boostBlending||"multiply"===u.boostBlending?s.blendFunc(s.DST_COLOR,s.ZERO):"darken"===u.boostBlending?(s.blendFunc(s.ONE,s.ONE),s.blendEquation(s.FUNC_MIN)):s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),a.reset(),t.colorData.length>0?(a.setUniform("hasColor",1),(T=new r(s,a)).build(Array(t.segments[0].from).concat(t.colorData),"aColor",4),T.bind()):(a.setUniform("hasColor",0),s.disableVertexAttribArray(s.getAttribLocation(a.getProgram(),"aColor"))),a.setColor(S),this.setXAxis(t.series.xAxis),this.setYAxis(t.series.yAxis),this.setThreshold(x,A),"POINTS"===t.drawMode&&a.setPointSize(2*g(u.marker&&u.marker.radius,.5)*d),a.setSkipTranslation(t.skipTranslation),"bubble"===t.series.type&&a.setBubbleUniforms(t.series,t.zMin,t.zMax,d),a.setDrawAsCircle(m[t.series.type]||!1),l)){if(b>0||"LINE_STRIP"!==t.drawMode)for(v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,t.drawMode);if(t.hasMarkers&&y)for(a.setPointSize(2*g(u.marker&&u.marker.radius,5)*d),a.setDrawAsCircle(!0),v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,"POINTS")}}),o.debug.timeRendering&&console.timeEnd("gl rendering"),this.postRenderCallback&&this.postRenderCallback(this),this.flush()}render(e){if(this.clear(),e.renderer.forExport)return this.renderChart(e);this.isInited?this.renderChart(e):setTimeout(()=>{this.render(e)},1)}setSize(e,t){let i=this.shader;i&&(this.width!==e||this.height!==t)&&(this.width=e,this.height=t,i.bind(),i.setPMatrix(p.orthoMatrix(e,t)))}init(e,t){let i=this.settings;if(this.isInited=!1,!e)return!1;i.debug.timeSetup&&console.time("gl setup");for(let t=0;t<b.length&&(this.gl=e.getContext(b[t],{}),!this.gl);++t);let s=this.gl;if(!s)return!1;t||this.flush(),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.disable(s.DEPTH_TEST),s.depthFunc(s.LESS);let n=this.shader=new o(s);if(!n)return!1;this.vbuffer=new r(s,n);let l=(e,t)=>{let i={isReady:!1,texture:a.createElement("canvas"),handle:s.createTexture()},o=i.texture.getContext("2d");this.textureHandles[e]=i,i.texture.width=512,i.texture.height=512,o.mozImageSmoothingEnabled=!1,o.webkitImageSmoothingEnabled=!1,o.msImageSmoothingEnabled=!1,o.imageSmoothingEnabled=!1,o.strokeStyle="rgba(255, 255, 255, 0)",o.fillStyle="#FFF",t(o);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,i.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.bindTexture(s.TEXTURE_2D,null),i.isReady=!0}catch(e){}};return l("circle",e=>{e.beginPath(),e.arc(256,256,256,0,2*Math.PI),e.stroke(),e.fill()}),l("square",e=>{e.fillRect(0,0,512,512)}),l("diamond",e=>{e.beginPath(),e.moveTo(256,0),e.lineTo(512,256),e.lineTo(256,512),e.lineTo(0,256),e.lineTo(256,0),e.fill()}),l("triangle",e=>{e.beginPath(),e.moveTo(0,512),e.lineTo(256,0),e.lineTo(512,512),e.lineTo(0,512),e.fill()}),l("triangle-down",e=>{e.beginPath(),e.moveTo(0,0),e.lineTo(256,512),e.lineTo(512,0),e.lineTo(0,0),e.fill()}),this.isInited=!0,i.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let e=this.gl,t=this.shader,i=this.vbuffer;this.flush(),i&&i.destroy(),t&&t.destroy(),e&&(u(this.textureHandles,t=>{t.handle&&e.deleteTexture(t.handle)}),e.canvas.width=1,e.canvas.height=1)}}return p}),i(t,"Extensions/Boost/BoostSeries.js",[t["Extensions/Boost/BoostableMap.js"],t["Extensions/Boost/Boostables.js"],t["Extensions/Boost/BoostChart.js"],t["Core/Defaults.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLRenderer.js"]],function(e,t,i,s,o,r,n){let a,l;let{getBoostClipRect:h,isChartSeriesBoosting:d}=i,{getOptions:f}=s,{composed:u,doc:g,noop:c,win:m}=o,{addEvent:b,destroyObjectProperties:p,error:x,extend:A,fireEvent:y,isArray:P,isNumber:v,pick:T,pushUnique:E,wrap:S,defined:M}=r;function C(e,t){let i=t.boost;e&&i&&i.target&&i.canvas&&!d(t.chart)&&e.allocateBufferForSingleSeries(t)}function k(e){return T(e&&e.options&&e.options.boost&&e.options.boost.enabled,!0)}function U(e,t){let i=e.constructor,s=e.seriesGroup||t.group,o=e.chartWidth,r=e.chartHeight,a=e,f="undefined"!=typeof SVGForeignObjectElement;a=d(e)?e:t;let u=a.boost=a.boost||{};return f=!1,l||(l=g.createElement("canvas")),!u.target&&(u.canvas=l,e.renderer.forExport||!f?(a.renderTarget=u.target=e.renderer.image("",0,0,o,r).addClass("highcharts-boost-canvas").add(s),u.clear=function(){u.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},u.copy=function(){u.resize(),u.target.attr({href:u.canvas.toDataURL("image/png")})}):(u.targetFo=e.renderer.createElement("foreignObject").add(s),a.renderTarget=u.target=g.createElement("canvas"),u.targetCtx=u.target.getContext("2d"),u.targetFo.element.appendChild(u.target),u.clear=function(){u.target.width=u.canvas.width,u.target.height=u.canvas.height},u.copy=function(){u.target.width=u.canvas.width,u.target.height=u.canvas.height,u.targetCtx.drawImage(u.canvas,0,0)}),u.resize=function(){o=e.chartWidth,r=e.chartHeight,(u.targetFo||u.target).attr({x:0,y:0,width:o,height:r}).css({pointerEvents:"none",mixedBlendMode:"normal",opacity:1}),a instanceof i&&a.boost.markerGroup.translate(e.plotLeft,e.plotTop)},u.clipRect=e.renderer.clipRect(),(u.targetFo||u.target).attr({zIndex:t.options.zIndex}).clip(u.clipRect),a instanceof i&&(a.boost.markerGroup=a.renderer.g().add(s).translate(t.xAxis.pos,t.yAxis.pos))),u.canvas.width=o,u.canvas.height=r,u.clipRect&&u.clipRect.attr(h(e,a)),u.resize(),u.clear(),!u.wgl&&(u.wgl=new n(e=>{e.settings.debug.timeBufferCopy&&console.time("buffer copy"),u.copy(),e.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),u.wgl.init(u.canvas)||x("[highcharts boost] - unable to init WebGL renderer"),u.wgl.setOptions(e.options.boost||{}),a instanceof i&&u.wgl.allocateBuffer(e)),u.wgl.setSize(o,r),u.wgl}function w(e){let t=e.points;if(t){let e,i;for(i=0;i<t.length;i+=1)(e=t[i])&&e.destroyElements&&e.destroyElements()}["graph","area","tracker"].forEach(t=>{let i=e[t];i&&(e[t]=i.destroy())}),e.zones.forEach(p)}function R(e,t,i,s,o,r){o=o||0,s=s||3e3;let n=o+s,a=!0;for(;a&&o<n&&o<e.length;)a=t(e[o],o),++o;a&&(o<e.length?r?R(e,t,i,s,o,r):m.requestAnimationFrame?m.requestAnimationFrame(function(){R(e,t,i,s,o)}):setTimeout(R,0,e,t,i,s,o):i&&i())}function D(e,t){let i=e.options,s=i.data,o=e.xAxis&&e.xAxis.options,r=e.yAxis&&e.yAxis.options,n=e.colorAxis&&e.colorAxis.options;return s.length>(i.boostThreshold||Number.MAX_VALUE)&&v(r.min)&&v(r.max)&&(!t||v(o.min)&&v(o.max))&&(!n||v(n.min)&&v(n.max))}let B=(e,t)=>!e.forceCrop&&(d(e.chart)||(t?t.length:0)>=(e.options.boostThreshold||Number.MAX_VALUE));function L(){let e=this,t=e.chart;t.boost&&t.boost.markerGroup===e.markerGroup&&(e.markerGroup=null),t.hoverPoints&&(t.hoverPoints=t.hoverPoints.filter(function(t){return t.series===e})),t.hoverPoint&&t.hoverPoint.series===e&&(t.hoverPoint=null)}function z(){let e=this.boost;e&&e.canvas&&e.target&&(e.wgl&&e.wgl.clear(),e.clear&&e.clear())}function _(e){let t=e.boost;t&&t.canvas&&t.target&&t.wgl&&!d(e.chart)&&t.wgl.render(e.chart)}function I(e,t){let i=e.options,s=e.xAxis,o=e.pointClass;if(t instanceof o)return t;let r=e.xData||i.xData||e.processedXData||!1,n=new o(e,(e.options.data||[])[t.i],r?r[t.i]:void 0);return n.category=T(s.categories?s.categories[n.x]:n.x,n.x),n.dist=t.dist,n.distX=t.distX,n.plotX=t.plotX,n.plotY=t.plotY,n.index=t.i,n.percentage=t.percentage,n.isInside=e.isPointInside(n),n}function N(e){let{options:t,xAxis:i,yAxis:s}=this;if(!this.isDirty&&!i.isDirty&&!s.isDirty&&!e)return!1;this.yAxis.setTickInterval();let o=t.boostThreshold||0,r=t.cropThreshold,n=t.data||this.data,a=this.xData,l=i.getExtremes(),h=l.max,d=l.min,f=this.yData,u=s.getExtremes(),g=u.max,c=u.min;if(!this.boosted&&i.old&&s.old&&d>=(i.old.min??-Number.MAX_VALUE)&&h<=(i.old.max??Number.MAX_VALUE)&&c>=(s.old.min??-Number.MAX_VALUE)&&g<=(s.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=a),this.processedYData??(this.processedYData=f),!0;if(!o||n.length<o||r&&!this.forceCrop&&!this.getExtremesFromAll&&!t.getExtremesFromAll&&n.length<r)return this.processedXData=a,this.processedYData=f,!0;let m=[],b=[],p=[],x=!1,A,y;for(let e=0,t=a.length;e<t;++e)A=a[e],y=f[e],A>=d&&A<=h&&y>=c&&y<=g?(m.push({x:A,y}),b.push(A),p.push(y)):x=!0;return this.cropped=x,this.cropStart=0,this.processedXData=b,this.processedYData=p,B(this,b)||(this.processedData=m),!0}function G(){let e=this.options||{},t=this.chart,i=this.xAxis,s=this.yAxis,o=e.xData||this.processedXData,r=e.yData||this.processedYData,n=this.processedData||e.data,l=i.getExtremes(),h=l.min-(i.minPointOffset||0),f=l.max+(i.minPointOffset||0),u=s.getExtremes(),g=u.min-(s.minPointOffset||0),m=u.max+(s.minPointOffset||0),b={},p=!!this.sampling,x=e.enableMouseTracking,A=e.threshold,P=this.pointArrayMap&&"low,high"===this.pointArrayMap.join(","),v=!!e.stacking,T=this.cropStart||0,E=this.requireSorting,S=!o,k="x"===e.findNearestPointBy,D=this.xData||this.options.xData||this.processedXData||!1,B=!1,L,z=s.getThreshold(A),I,N,G,O;if(B=U(t,this),t.boosted=!0,!this.visible)return;(this.points||this.graph)&&w(this),d(t)?(this.markerGroup&&this.markerGroup!==t.boost.markerGroup&&this.markerGroup.destroy(),this.markerGroup=t.boost.markerGroup,this.boost&&this.boost.target&&(this.renderTarget=this.boost.target=this.boost.target.destroy())):(t.boost&&this.markerGroup===t.boost.markerGroup&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers",!0,1,t.seriesGroup));let X=this.points=[],V=(e,o,r,n)=>{let l=!!D&&D[T+r],h=e=>{t.inverted&&(e=i.len-e,o=s.len-o),X.push({destroy:c,x:l,clientX:e,plotX:e,plotY:o,i:T+r,percentage:n})};e=Math.ceil(e),a=k?e:e+","+o,x&&(b[a]?l===D[D.length-1]&&(X.length--,h(e)):(b[a]=!0,h(e)))};this.buildKDTree=c,B&&(C(B,this),B.pushSeries(this),_(this));let j=B.settings;t.renderer.forExport||(j.debug.timeKDTree&&console.time("kd tree building"),R(v?this.data.slice(T):o||n,function(e,o){let n=void 0===t.index,a,l,d,u,c,b=!1,x=!0;return!M(e)||(!n&&(S?(a=e[0],l=e[1]):(a=e,l=r[o]),P?(S&&(l=e.slice(1,3)),b=l[0],l=l[1]):v&&(a=e.x,b=(l=e.stackY)-e.y,c=e.percentage),E||(x=(l||0)>=g&&l<=m),null!==l&&a>=h&&a<=f&&x&&(d=i.toPixels(a,!0),p?((void 0===G||d===L)&&(P||(b=l),(void 0===O||l>N)&&(N=l,O=o),(void 0===G||b<I)&&(I=b,G=o)),k&&d===L||(void 0!==G&&(u=s.toPixels(N,!0),z=s.toPixels(I,!0),V(d,u,O,c),z!==u&&V(d,z,G,c)),G=O=void 0,L=d)):V(d,u=Math.ceil(s.toPixels(l,!0)),o,c))),!n)},()=>{y(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),j.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function O(e){let t=!0;if(this.chart.options&&this.chart.options.boost&&(t=void 0===this.chart.options.boost.enabled||this.chart.options.boost.enabled),!t||!this.boosted)return e.call(this);this.chart.boosted=!0;let i=U(this.chart,this);i&&(C(i,this),i.pushSeries(this)),_(this)}function X(e){return this.boosted&&D(this)?{}:e.apply(this,[].slice.call(arguments,1))}function V(t){let i=this.options.data;if(k(this.chart)&&e[this.type]){let e=this.is("scatter")&&!this.is("bubble");if((!B(this,i)||e||this.options.stacking||!D(this,!0))&&(e&&!this.yAxis.treeGrid?N.call(this,arguments[1]):t.apply(this,[].slice.call(arguments,1)),i=this.processedXData),this.boosted=B(this,i),this.boosted){let e;this.options.data&&this.options.data.length&&!v(e=this.getFirstValidPoint(this.options.data))&&!P(e)&&x(12,!1,this.chart),function(e){e.boost=e.boost||{getPoint:t=>I(e,t)};let t=e.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(i=>{t.push({prop:i,val:e[i],own:Object.hasOwnProperty.call(e,i)})}),e.allowDG=!1,e.directTouch=!1,e.stickyTracking=!0,e.finishedAnimating=!0,e.labelBySeries&&(e.labelBySeries=e.labelBySeries.destroy()),e.is("scatter")&&e.data.length){for(let t of e.data)t?.destroy?.();e.data.length=0,e.points.length=0,delete e.processedData}}(this)}else!function(e){let t=e.boost;t&&((t.altered||[]).forEach(t=>{t.own?e[t.prop]=t.val:delete e[t.prop]}),t.clear&&t.clear())}(this)}else t.apply(this,[].slice.call(arguments,1))}function j(e){let t=e.apply(this,[].slice.call(arguments,1));return this.boost&&t?this.boost.getPoint(t):t}return{compose:function i(s,o,r){if(E(u,i)){let i=f().plotOptions,n=s.prototype;if(b(s,"destroy",L),b(s,"hide",z),r&&(n.renderCanvas=G),S(n,"getExtremes",X),S(n,"processData",V),S(n,"searchPoint",j),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(t=>(function(t,i,s){function o(t){let i=this.options.stacking&&("translate"===s||"generatePoints"===s);this.boosted&&!i&&k(this.chart)&&"heatmap"!==this.type&&"treemap"!==this.type&&e[this.type]&&0!==this.options.boostThreshold?"render"===s&&this.renderCanvas&&this.renderCanvas():t.call(this)}if(S(t,s,o),"translate"===s)for(let e of["column","arearange","columnrange","heatmap","treemap"])i[e]&&S(i[e].prototype,s,o)})(n,o,t)),t.forEach(e=>{let t=i[e];t&&(t.boostThreshold=5e3,t.boostData=[],o[e].prototype.fillOpacity=!0)}),r){let{area:e,areaspline:t,bubble:i,column:s,heatmap:r,scatter:n,treemap:a}=o;if(e&&A(e.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),t&&A(t.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),i){let e=i.prototype;delete e.buildKDTree,S(e,"markerAttribs",function(e){return!this.boosted&&e.apply(this,[].slice.call(arguments,1))})}s&&A(s.prototype,{fill:!0,sampling:!0}),n&&(n.prototype.fill=!0),[r,a].forEach(e=>{e&&S(e.prototype,"drawPoints",O)})}}return s},destroyGraphics:w,eachAsync:R,getPoint:I}}),i(t,"Extensions/Boost/NamedColors.js",[],function(){return{defaultHTMLColorMap:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}}),i(t,"Extensions/Boost/Boost.js",[t["Extensions/Boost/BoostChart.js"],t["Extensions/Boost/BoostSeries.js"],t["Core/Globals.js"],t["Extensions/Boost/NamedColors.js"],t["Core/Utilities.js"]],function(e,t,i,s,o){let{composed:r,doc:n,win:a}=i,{error:l,pushUnique:h}=o,d=["webgl","experimental-webgl","moz-webgl","webkit-3d"];function f(){let e;if(void 0!==a.WebGLRenderingContext){e=n.createElement("canvas");for(let t=0;t<d.length;++t)try{if(null!=e.getContext(d[t]))return!0}catch(e){}}return!1}return{compose:function o(n,a,d,u){let g=f();g||(void 0!==i.initCanvasBoost?i.initCanvasBoost():l(26)),u&&h(r,o)&&(u.names={...u.names,...s.defaultHTMLColorMap}),e.compose(n,g),t.compose(a,d,g)},hasWebGLSupport:f}}),i(t,"masters/modules/boost.src.js",[t["Core/Globals.js"],t["Extensions/Boost/Boost.js"]],function(e,t){e.hasWebGLSupport=t.hasWebGLSupport,t.compose(e.Chart,e.Series,e.seriesTypes,e.Color)})});
|
|
11
|
+
* */function(e){"object"==typeof module&&module.exports?(e.default=e,module.exports=e):"function"==typeof define&&define.amd?define("highcharts/modules/boost",["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,s){e.hasOwnProperty(t)||(e[t]=s.apply(null,i),"function"==typeof CustomEvent&&window.dispatchEvent(new CustomEvent("HighchartsModuleLoaded",{detail:{path:t,module:e[t]}})))}i(t,"Extensions/Boost/Boostables.js",[],function(){return["area","areaspline","arearange","column","columnrange","bar","line","scatter","heatmap","bubble","treemap"]}),i(t,"Extensions/Boost/BoostableMap.js",[t["Extensions/Boost/Boostables.js"]],function(e){let t={};return e.forEach(e=>{t[e]=!0}),t}),i(t,"Extensions/Boost/BoostChart.js",[t["Extensions/Boost/BoostableMap.js"],t["Core/Globals.js"],t["Core/Utilities.js"]],function(e,t,i){let{composed:s}=t,{addEvent:o,pick:r,pushUnique:n}=i;function a(t){let i=t.series,s=t.boost=t.boost||{},o=t.options.boost||{},n=r(o.seriesThreshold,50);if(i.length>=n)return!0;if(1===i.length)return!1;let a=o.allowForce;if(void 0===a){for(let e of(a=!0,t.xAxis))if(r(e.min,-1/0)>r(e.dataMin,-1/0)||r(e.max,1/0)<r(e.dataMax,1/0)){a=!1;break}}if(void 0!==s.forceChartBoost){if(a)return s.forceChartBoost;s.forceChartBoost=void 0}let l=0,h=0,f;for(let t of i)0!==(f=t.options).boostThreshold&&!1!==t.visible&&"heatmap"!==t.type&&(e[t.type]&&++l,function(...e){let t=-Number.MAX_VALUE;return e.forEach(function(e){if(null!=e&&void 0!==e.length&&e.length>0)return t=e.length,!0}),t}(t.processedXData,f.data,t.points)>=(f.boostThreshold||Number.MAX_VALUE)&&++h);return s.forceChartBoost=a&&(l===i.length&&h===l||h>5),s.forceChartBoost}function l(e){function t(){e.boost&&e.boost.wgl&&a(e)&&e.boost.wgl.render(e)}o(e,"predraw",function(){e.boost=e.boost||{},e.boost.forceChartBoost=void 0,e.boosted=!1,e.axes.some(e=>e.isPanning)||e.boost.clear?.(),e.boost.canvas&&e.boost.wgl&&a(e)&&e.boost.wgl.allocateBuffer(e),e.boost.markerGroup&&e.xAxis&&e.xAxis.length>0&&e.yAxis&&e.yAxis.length>0&&e.boost.markerGroup.translate(e.xAxis[0].pos,e.yAxis[0].pos)}),o(e,"load",t,{order:-1}),o(e,"redraw",t);let i=-1,s=-1;o(e.pointer,"afterGetHoverData",()=>{let t=e.hoverSeries;if(e.boost=e.boost||{},e.boost.markerGroup&&t){let o=e.inverted?t.yAxis:t.xAxis,r=e.inverted?t.xAxis:t.yAxis;(o&&o.pos!==i||r&&r.pos!==s)&&(e.boost.markerGroup.translate(o.pos,r.pos),i=o.pos,s=r.pos)}})}return{compose:function(e,t){return t&&n(s,"Boost.Chart")&&e.prototype.callbacks.push(l),e},getBoostClipRect:function(e,t){let i={x:e.plotLeft,y:e.plotTop,width:e.plotWidth,height:e.navigator?e.navigator.top+e.navigator.height-e.plotTop:e.plotHeight};if(t.getClipBox){let{xAxis:s,yAxis:o}=t;if(i=t.getClipBox(),e.inverted){let e=i.width;i.width=i.height,i.height=e,i.x=o.pos,i.y=s.pos}else i.x=s.pos,i.y=o.pos}if(t===e){let t=e.inverted?e.xAxis:e.yAxis;t.length<=1&&(i.y=Math.min(t[0].pos,i.y),i.height=t[0].pos-e.plotTop+t[0].len)}return i},isChartSeriesBoosting:a}}),i(t,"Extensions/Boost/WGLDrawMode.js",[],function(){return{area:"LINES",arearange:"LINES",areaspline:"LINES",column:"LINES",columnrange:"LINES",bar:"LINES",line:"LINE_STRIP",scatter:"POINTS",heatmap:"TRIANGLES",treemap:"TRIANGLES",bubble:"POINTS"}}),i(t,"Extensions/Boost/WGLShader.js",[t["Core/Utilities.js"]],function(e){let{clamp:t,error:i,pick:s}=e;return class{constructor(e){if(this.errors=[],this.uLocations={},this.gl=e,e&&!this.createShader())return}bind(){this.gl&&this.shaderProgram&&this.gl.useProgram(this.shaderProgram)}createShader(){let e=this.stringToProgram("#version 100\n#define LN10 2.302585092994046\nprecision highp float;\nattribute vec4 aVertexPosition;\nattribute vec4 aColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform mat4 uPMatrix;\nuniform float pSize;\nuniform float translatedThreshold;\nuniform bool hasThreshold;\nuniform bool skipTranslation;\nuniform float xAxisTrans;\nuniform float xAxisMin;\nuniform float xAxisMinPad;\nuniform float xAxisPointRange;\nuniform float xAxisLen;\nuniform bool xAxisPostTranslate;\nuniform float xAxisOrdinalSlope;\nuniform float xAxisOrdinalOffset;\nuniform float xAxisPos;\nuniform bool xAxisCVSCoord;\nuniform bool xAxisIsLog;\nuniform bool xAxisReversed;\nuniform float yAxisTrans;\nuniform float yAxisMin;\nuniform float yAxisMinPad;\nuniform float yAxisPointRange;\nuniform float yAxisLen;\nuniform bool yAxisPostTranslate;\nuniform float yAxisOrdinalSlope;\nuniform float yAxisOrdinalOffset;\nuniform float yAxisPos;\nuniform bool yAxisCVSCoord;\nuniform bool yAxisIsLog;\nuniform bool yAxisReversed;\nuniform bool isBubble;\nuniform bool bubbleSizeByArea;\nuniform float bubbleZMin;\nuniform float bubbleZMax;\nuniform float bubbleZThreshold;\nuniform float bubbleMinSize;\nuniform float bubbleMaxSize;\nuniform bool bubbleSizeAbs;\nuniform bool isInverted;\nfloat bubbleRadius(){\nfloat value = aVertexPosition.w;\nfloat zMax = bubbleZMax;\nfloat zMin = bubbleZMin;\nfloat radius = 0.0;\nfloat pos = 0.0;\nfloat zRange = zMax - zMin;\nif (bubbleSizeAbs){\nvalue = value - bubbleZThreshold;\nzMax = max(zMax - bubbleZThreshold, zMin - bubbleZThreshold);\nzMin = 0.0;\n}\nif (value < zMin){\nradius = bubbleZMin / 2.0 - 1.0;\n} else {\npos = zRange > 0.0 ? (value - zMin) / zRange : 0.5;\nif (bubbleSizeByArea && pos > 0.0){\npos = sqrt(pos);\n}\nradius = ceil(bubbleMinSize + pos * (bubbleMaxSize - bubbleMinSize)) / 2.0;\n}\nreturn radius * 2.0;\n}\nfloat translate(float val,\nfloat pointPlacement,\nfloat localA,\nfloat localMin,\nfloat minPixelPadding,\nfloat pointRange,\nfloat len,\nbool cvsCoord,\nbool isLog,\nbool reversed\n){\nfloat sign = 1.0;\nfloat cvsOffset = 0.0;\nif (cvsCoord) {\nsign *= -1.0;\ncvsOffset = len;\n}\nif (isLog) {\nval = log(val) / LN10;\n}\nif (reversed) {\nsign *= -1.0;\ncvsOffset -= sign * len;\n}\nreturn sign * (val - localMin) * localA + cvsOffset + \n(sign * minPixelPadding);\n}\nfloat xToPixels(float value) {\nif (skipTranslation){\nreturn value;// + xAxisPos;\n}\nreturn translate(value, 0.0, xAxisTrans, xAxisMin, xAxisMinPad, xAxisPointRange, xAxisLen, xAxisCVSCoord, xAxisIsLog, xAxisReversed);// + xAxisPos;\n}\nfloat yToPixels(float value, float checkTreshold) {\nfloat v;\nif (skipTranslation){\nv = value;// + yAxisPos;\n} else {\nv = translate(value, 0.0, yAxisTrans, yAxisMin, yAxisMinPad, yAxisPointRange, yAxisLen, yAxisCVSCoord, yAxisIsLog, yAxisReversed);// + yAxisPos;\nif (v > yAxisLen) {\nv = yAxisLen;\n}\n}\nif (checkTreshold > 0.0 && hasThreshold) {\nv = min(v, translatedThreshold);\n}\nreturn v;\n}\nvoid main(void) {\nif (isBubble){\ngl_PointSize = bubbleRadius();\n} else {\ngl_PointSize = pSize;\n}\nvColor = aColor;\nif (skipTranslation && isInverted) {\ngl_Position = uPMatrix * vec4(aVertexPosition.y + yAxisPos, aVertexPosition.x + xAxisPos, 0.0, 1.0);\n} else if (isInverted) {\ngl_Position = uPMatrix * vec4(yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, xToPixels(aVertexPosition.x) + xAxisPos, 0.0, 1.0);\n} else {\ngl_Position = uPMatrix * vec4(xToPixels(aVertexPosition.x) + xAxisPos, yToPixels(aVertexPosition.y, aVertexPosition.z) + yAxisPos, 0.0, 1.0);\n}\n}","vertex"),t=this.stringToProgram("precision highp float;\nuniform vec4 fillColor;\nvarying highp vec2 position;\nvarying highp vec4 vColor;\nuniform sampler2D uSampler;\nuniform bool isCircle;\nuniform bool hasColor;\nvoid main(void) {\nvec4 col = fillColor;\nvec4 tcol = texture2D(uSampler, gl_PointCoord.st);\nif (hasColor) {\ncol = vColor;\n}\nif (isCircle) {\ncol *= tcol;\nif (tcol.r < 0.0) {\ndiscard;\n} else {\ngl_FragColor = col;\n}\n} else {\ngl_FragColor = col;\n}\n}","fragment"),i=e=>this.gl.getUniformLocation(this.shaderProgram,e);return e&&t?(this.shaderProgram=this.gl.createProgram(),this.gl.attachShader(this.shaderProgram,e),this.gl.attachShader(this.shaderProgram,t),this.gl.linkProgram(this.shaderProgram),this.gl.getProgramParameter(this.shaderProgram,this.gl.LINK_STATUS))?(this.gl.useProgram(this.shaderProgram),this.gl.bindAttribLocation(this.shaderProgram,0,"aVertexPosition"),this.pUniform=i("uPMatrix"),this.psUniform=i("pSize"),this.fcUniform=i("fillColor"),this.isBubbleUniform=i("isBubble"),this.bubbleSizeAbsUniform=i("bubbleSizeAbs"),this.bubbleSizeAreaUniform=i("bubbleSizeByArea"),this.uSamplerUniform=i("uSampler"),this.skipTranslationUniform=i("skipTranslation"),this.isCircleUniform=i("isCircle"),this.isInverted=i("isInverted"),!0):(this.errors.push(this.gl.getProgramInfoLog(this.shaderProgram)),this.handleErrors(),this.shaderProgram=!1,!1):(this.shaderProgram=!1,this.handleErrors(),!1)}handleErrors(){this.errors.length&&i("[highcharts boost] shader error - "+this.errors.join("\n"))}stringToProgram(e,t){let i=this.gl.createShader("vertex"===t?this.gl.VERTEX_SHADER:this.gl.FRAGMENT_SHADER);return(this.gl.shaderSource(i,e),this.gl.compileShader(i),this.gl.getShaderParameter(i,this.gl.COMPILE_STATUS))?i:(this.errors.push("when compiling "+t+" shader:\n"+this.gl.getShaderInfoLog(i)),!1)}destroy(){this.gl&&this.shaderProgram&&(this.gl.deleteProgram(this.shaderProgram),this.shaderProgram=!1)}fillColorUniform(){return this.fcUniform}getProgram(){return this.shaderProgram}pointSizeUniform(){return this.psUniform}perspectiveUniform(){return this.pUniform}reset(){this.gl&&this.shaderProgram&&(this.gl.uniform1i(this.isBubbleUniform,0),this.gl.uniform1i(this.isCircleUniform,0))}setBubbleUniforms(e,i,o,r=1){let n=e.options,a=Number.MAX_VALUE,l=-Number.MAX_VALUE;if(this.gl&&this.shaderProgram&&e.is("bubble")){let h=e.getPxExtremes();a=s(n.zMin,t(i,!1===n.displayNegative?n.zThreshold:-Number.MAX_VALUE,a)),l=s(n.zMax,Math.max(l,o)),this.gl.uniform1i(this.isBubbleUniform,1),this.gl.uniform1i(this.isCircleUniform,1),this.gl.uniform1i(this.bubbleSizeAreaUniform,"width"!==e.options.sizeBy),this.gl.uniform1i(this.bubbleSizeAbsUniform,e.options.sizeByAbsoluteValue),this.setUniform("bubbleMinSize",h.minPxSize*r),this.setUniform("bubbleMaxSize",h.maxPxSize*r),this.setUniform("bubbleZMin",a),this.setUniform("bubbleZMax",l),this.setUniform("bubbleZThreshold",e.options.zThreshold)}}setColor(e){this.gl&&this.shaderProgram&&this.gl.uniform4f(this.fcUniform,e[0]/255,e[1]/255,e[2]/255,e[3])}setDrawAsCircle(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isCircleUniform,e?1:0)}setInverted(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.isInverted,e)}setPMatrix(e){this.gl&&this.shaderProgram&&this.gl.uniformMatrix4fv(this.pUniform,!1,e)}setPointSize(e){this.gl&&this.shaderProgram&&this.gl.uniform1f(this.psUniform,e)}setSkipTranslation(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.skipTranslationUniform,!0===e?1:0)}setTexture(e){this.gl&&this.shaderProgram&&this.gl.uniform1i(this.uSamplerUniform,e)}setUniform(e,t){if(this.gl&&this.shaderProgram){let i=this.uLocations[e]=this.uLocations[e]||this.gl.getUniformLocation(this.shaderProgram,e);this.gl.uniform1f(i,t)}}}}),i(t,"Extensions/Boost/WGLVertexBuffer.js",[],function(){return class{constructor(e,t,i){this.buffer=!1,this.iterator=0,this.preAllocated=!1,this.vertAttribute=!1,this.components=i||2,this.dataComponents=i,this.gl=e,this.shader=t}allocate(e){this.iterator=-1,this.preAllocated=new Float32Array(4*e)}bind(){if(!this.buffer)return!1;this.gl.vertexAttribPointer(this.vertAttribute,this.components,this.gl.FLOAT,!1,0,0)}build(e,t,i){let s;return(this.data=e||[],this.data&&0!==this.data.length||this.preAllocated)?(this.components=i||this.components,this.buffer&&this.gl.deleteBuffer(this.buffer),this.preAllocated||(s=new Float32Array(this.data)),this.buffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.buffer),this.gl.bufferData(this.gl.ARRAY_BUFFER,this.preAllocated||s,this.gl.STATIC_DRAW),this.vertAttribute=this.gl.getAttribLocation(this.shader.getProgram(),t),this.gl.enableVertexAttribArray(this.vertAttribute),s=!1,!0):(this.destroy(),!1)}destroy(){this.buffer&&(this.gl.deleteBuffer(this.buffer),this.buffer=!1,this.vertAttribute=!1),this.iterator=0,this.components=this.dataComponents||2,this.data=[]}push(e,t,i,s){this.preAllocated&&(this.preAllocated[++this.iterator]=e,this.preAllocated[++this.iterator]=t,this.preAllocated[++this.iterator]=i,this.preAllocated[++this.iterator]=s)}render(e,t,i){let s=this.preAllocated?this.preAllocated.length:this.data.length;return!!this.buffer&&!!s&&((!e||e>s||e<0)&&(e=0),(!t||t>s)&&(t=s),!(e>=t)&&(i=i||"POINTS",this.gl.drawArrays(this.gl[i],e/this.components,(t-e)/this.components),!0))}}}),i(t,"Extensions/Boost/WGLRenderer.js",[t["Core/Color/Color.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLDrawMode.js"],t["Extensions/Boost/WGLShader.js"],t["Extensions/Boost/WGLVertexBuffer.js"]],function(e,t,i,s,o,r){let{parse:n}=e,{doc:a,win:l}=t,{isNumber:h,isObject:f,merge:d,objectEach:u,pick:g}=i,c={column:!0,columnrange:!0,bar:!0,area:!0,areaspline:!0,arearange:!0},m={scatter:!0,bubble:!0},b=["webgl","experimental-webgl","moz-webgl","webkit-3d"];class p{static orthoMatrix(e,t){return[2/e,0,0,0,0,-(2/t),0,0,0,0,-2,0,-1,1,-1,1]}static seriesPointCount(e){let t,i,s;return e.boosted?(t=!!e.options.stacking,i=e.xData||e.options.xData||e.processedXData,s=(t?e.data:i||e.options.data).length,"treemap"===e.type?s*=12:"heatmap"===e.type?s*=6:c[e.type]&&(s*=2),s):0}constructor(e){this.data=[],this.height=0,this.isInited=!1,this.markerData=[],this.series=[],this.textureHandles={},this.width=0,this.postRenderCallback=e,this.settings={pointSize:1,lineWidth:1,fillColor:"#AA00AA",useAlpha:!0,usePreallocated:!1,useGPUTranslations:!1,debug:{timeRendering:!1,timeSeriesProcessing:!1,timeSetup:!1,timeBufferCopy:!1,timeKDTree:!1,showSkipSummary:!1}}}getPixelRatio(){return this.settings.pixelRatio||l.devicePixelRatio||1}setOptions(e){"pixelRatio"in e||(e.pixelRatio=1),d(!0,this.settings,e)}allocateBuffer(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.series.forEach(e=>{e.boosted&&(i+=p.seriesPointCount(e))}),t&&t.allocate(i))}allocateBufferForSingleSeries(e){let t=this.vbuffer,i=0;this.settings.usePreallocated&&(e.boosted&&(i=p.seriesPointCount(e)),t&&t.allocate(i))}clear(){let e=this.gl;e&&e.clear(e.COLOR_BUFFER_BIT|e.DEPTH_BUFFER_BIT)}pushSeriesData(e,t){let i=this.data,s=this.settings,o=this.vbuffer,r=e.pointArrayMap&&"low,high"===e.pointArrayMap.join(","),{chart:a,options:l,sorted:h,xAxis:d,yAxis:u}=e,g=!!l.stacking,m=l.data,b=e.xAxis.getExtremes(),p=b.min-(e.xAxis.minPointOffset||0),x=b.max+(e.xAxis.minPointOffset||0),A=e.yAxis.getExtremes(),y=A.min-(e.yAxis.minPointOffset||0),P=A.max+(e.yAxis.minPointOffset||0),v=e.xData||l.xData||e.processedXData,T=e.yData||l.yData||e.processedYData,E=e.zData||l.zData||e.processedZData,S=!v||0===v.length,M=l.connectNulls,C=e.points||!1,k=g?e.data:v||m,U={x:Number.MAX_VALUE,y:0},w={x:-Number.MAX_VALUE,y:0},R=void 0===a.index,B=c[e.type],D=l.zoneAxis||"y",L=l.zones||!1,z=l.threshold,_=this.getPixelRatio(),N=e.chart.plotWidth,I=!1,G=!1,O,X,V=0,j=!1,F,H,W,Y,q=-1,Z=!1,K=!1,Q,J=!1,$=!1,ee=!1,et=!1,ei=!0,es=!0,eo,er=!1,en=!1,ea=0;if(l.boostData&&l.boostData.length>0)return;l.gapSize&&(en="value"!==l.gapUnit?l.gapSize*e.closestPointRange:l.gapSize),L&&(eo=[],L.forEach((e,t)=>{if(e.color){let i=n(e.color).rgba;i[0]/=255,i[1]/=255,i[2]/=255,eo[t]=i,er||void 0!==e.value||(er=i)}}),er||(er=n(e.pointAttribs&&e.pointAttribs().fill||e.color).rgba,er[0]/=255,er[1]/=255,er[2]/=255)),a.inverted&&(N=e.chart.plotHeight),e.closestPointRangePx=Number.MAX_VALUE;let el=e=>{e&&(t.colorData.push(e[0]),t.colorData.push(e[1]),t.colorData.push(e[2]),t.colorData.push(e[3]))},eh=(e,r,n,a=1,l)=>{el(l),1!==_&&(!s.useGPUTranslations||t.skipTranslation)&&(e*=_,r*=_,a*=_),s.usePreallocated&&o?(o.push(e,r,n?1:0,a),ea+=4):(i.push(e),i.push(r),i.push(n?_:0),i.push(a))},ef=()=>{t.segments.length&&(t.segments[t.segments.length-1].to=i.length||ea)},ed=()=>{t.segments.length&&t.segments[t.segments.length-1].from===(i.length||ea)||(ef(),t.segments.push({from:i.length||ea}))},eu=(e,t,i,s,o)=>{el(o),eh(e+i,t),el(o),eh(e,t),el(o),eh(e,t+s),el(o),eh(e,t+s),el(o),eh(e+i,t+s),el(o),eh(e+i,t)};if(ed(),C&&C.length>0){t.skipTranslation=!0,t.drawMode="TRIANGLES",C[0].node&&C[0].node.levelDynamic&&C.sort((e,t)=>{if(e.node){if(e.node.levelDynamic>t.node.levelDynamic)return 1;if(e.node.levelDynamic<t.node.levelDynamic)return -1}return 0}),C.forEach(t=>{let i,s;let o=t.plotY;if(void 0!==o&&!isNaN(o)&&null!==t.y&&t.shapeArgs){let{x:o=0,y:r=0,width:l=0,height:h=0}=t.shapeArgs;i=(s=a.styledMode?t.series.colorAttribs(t):s=t.series.pointAttribs(t))["stroke-width"]||0,ee=n(s.fill).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255,e.is("treemap")&&(i=i||1,X=n(s.stroke).rgba,X[0]/=255,X[1]/=255,X[2]/=255,eu(o,r,l,h,X),i/=2),e.is("heatmap")&&a.inverted&&(o=d.len-o,r=u.len-r,l=-l,h=-h),eu(o+i,r+i,l-2*i,h-2*i,ee)}}),ef();return}for(;q<k.length-1;){if(void 0===(W=k[++q]))continue;if(R)break;let i=m&&m[q];if(!S&&f(i,!0)&&i.color&&(ee=n(i.color).rgba,ee[0]/=255,ee[1]/=255,ee[2]/=255),S?(F=W[0],H=W[1],k[q+1]&&(K=k[q+1][0]),k[q-1]&&(Z=k[q-1][0]),W.length>=3&&(Y=W[2],W[2]>t.zMax&&(t.zMax=W[2]),W[2]<t.zMin&&(t.zMin=W[2]))):(F=W,H=T[q],k[q+1]&&(K=k[q+1]),k[q-1]&&(Z=k[q-1]),E&&E.length&&(Y=E[q],E[q]>t.zMax&&(t.zMax=E[q]),E[q]<t.zMin&&(t.zMin=E[q]))),!M&&(null===F||null===H)){ed();continue}if(K&&K>=p&&K<=x&&(J=!0),Z&&Z>=p&&Z<=x&&($=!0),r?(S&&(H=W.slice(1,3)),Q=H[0],H=H[1]):g&&(F=W.x,Q=(H=W.stackY)-W.y),null!=y&&null!=P&&(ei=H>=y&&H<=P),F>x&&w.x<x&&(w.x=F,w.y=H),F<p&&U.x>p&&(U.x=F,U.y=H),null!==H||!M){if(null===H||!ei&&!J&&!$){ed();continue}if(h&&(K>=p||F>=p)&&(Z<=x||F<=x)&&(et=!0),et||J||$){if(en&&F-Z>en&&ed(),L){let e;L.some((t,i)=>{let s=L[i-1];return"x"===D?void 0!==t.value&&F<=t.value&&(eo[i]&&(!s||F>=s.value)&&(e=eo[i]),!0):void 0!==t.value&&H<=t.value&&(eo[i]&&(!s||H>=s.value)&&(e=eo[i]),!0)}),ee=e||er||ee}if(s.useGPUTranslations||(t.skipTranslation=!0,F=d.toPixels(F,!0),H=u.toPixels(H,!0),!(F>N)||"POINTS"!==t.drawMode)){if(t.hasMarkers&&et&&!1!==I&&(e.closestPointRangePx=Math.min(e.closestPointRangePx,Math.abs(F-I))),!s.useGPUTranslations&&!s.usePreallocated&&I&&1>Math.abs(F-I)&&G&&1>Math.abs(H-G)){s.debug.showSkipSummary&&++V;continue}B&&(O=Q,(!1===Q||void 0===Q)&&(O=H<0?H:0),(r||g)&&!u.logarithmic||(O=Math.max(null===z?y:z,y)),s.useGPUTranslations||(O=u.toPixels(O,!0)),eh(F,O,0,0,ee)),l.step&&!es&&eh(F,G,0,2,ee),eh(F,H,0,"bubble"===e.type?Y||1:2,ee),I=F,G=H,j=!0,es=!1}}}}s.debug.showSkipSummary&&console.log("skipped points:",V);let eg=(e,i)=>{if(s.useGPUTranslations||(t.skipTranslation=!0,e.x=d.toPixels(e.x,!0),e.y=u.toPixels(e.y,!0)),i){this.data=[e.x,e.y,0,2].concat(this.data);return}eh(e.x,e.y,0,2)};!j&&!1!==M&&"line_strip"===e.drawMode&&(U.x<Number.MAX_VALUE&&eg(U,!0),w.x>-Number.MAX_VALUE&&eg(w)),ef()}pushSeries(e){let t=this.markerData,i=this.series,o=this.settings;i.length>0&&i[i.length-1].hasMarkers&&(i[i.length-1].markerTo=t.length),o.debug.timeSeriesProcessing&&console.time("building "+e.type+" series");let r={segments:[],markerFrom:t.length,colorData:[],series:e,zMin:Number.MAX_VALUE,zMax:-Number.MAX_VALUE,hasMarkers:!!e.options.marker&&!1!==e.options.marker.enabled,showMarkers:!0,drawMode:s[e.type]||"LINE_STRIP"};e.index>=i.length?i.push(r):i[e.index]=r,this.pushSeriesData(e,r),o.debug.timeSeriesProcessing&&console.timeEnd("building "+e.type+" series")}flush(){let e=this.vbuffer;this.data=[],this.markerData=[],this.series=[],e&&e.destroy()}setXAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("xAxisTrans",e.transA*i),t.setUniform("xAxisMin",e.min),t.setUniform("xAxisMinPad",e.minPixelPadding*i),t.setUniform("xAxisPointRange",e.pointRange),t.setUniform("xAxisLen",e.len*i),t.setUniform("xAxisPos",e.pos*i),t.setUniform("xAxisCVSCoord",!e.horiz),t.setUniform("xAxisIsLog",!!e.logarithmic),t.setUniform("xAxisReversed",!!e.reversed)}setYAxis(e){let t=this.shader;if(!t)return;let i=this.getPixelRatio();t.setUniform("yAxisTrans",e.transA*i),t.setUniform("yAxisMin",e.min),t.setUniform("yAxisMinPad",e.minPixelPadding*i),t.setUniform("yAxisPointRange",e.pointRange),t.setUniform("yAxisLen",e.len*i),t.setUniform("yAxisPos",e.pos*i),t.setUniform("yAxisCVSCoord",!e.horiz),t.setUniform("yAxisIsLog",!!e.logarithmic),t.setUniform("yAxisReversed",!!e.reversed)}setThreshold(e,t){let i=this.shader;i&&(i.setUniform("hasThreshold",e),i.setUniform("translatedThreshold",t))}renderChart(i){let s=this.gl,o=this.settings,a=this.shader,l=this.vbuffer,f=this.getPixelRatio();if(!i)return!1;this.width=i.chartWidth*f,this.height=i.chartHeight*f;let d=this.height,u=this.width;if(!s||!a||!u||!d)return!1;o.debug.timeRendering&&console.time("gl rendering"),s.canvas.width=u,s.canvas.height=d,a.bind(),s.viewport(0,0,u,d),a.setPMatrix(p.orthoMatrix(u,d)),o.lineWidth>1&&!t.isMS&&s.lineWidth(o.lineWidth),l&&(l.build(this.data,"aVertexPosition",4),l.bind()),a.setInverted(i.inverted),this.series.forEach((t,d)=>{let u=t.series.options,c=u.marker,b=void 0!==u.lineWidth?u.lineWidth:1,p=u.threshold,x=h(p),A=t.series.yAxis.getThreshold(p),y=g(u.marker?u.marker.enabled:null,!!t.series.xAxis.isRadial||null,t.series.closestPointRangePx>2*((u.marker?u.marker.radius:10)||10)),P=this.textureHandles[c&&c.symbol||t.series.symbol]||this.textureHandles.circle,v,T,E,S=[];if(0!==t.segments.length&&t.segments[0].from!==t.segments[0].to&&(P.isReady&&(s.bindTexture(s.TEXTURE_2D,P.handle),a.setTexture(P.handle)),i.styledMode?E=t.series.markerGroup&&t.series.markerGroup.getStyle("fill"):(E="POINTS"===t.drawMode&&t.series.pointAttribs&&t.series.pointAttribs().fill||t.series.color,u.colorByPoint&&(E=t.series.chart.options.colors[d])),t.series.fillOpacity&&u.fillOpacity&&(E=new e(E).setOpacity(g(u.fillOpacity,1)).get()),S=n(E).rgba,o.useAlpha||(S[3]=1),"LINES"===t.drawMode&&o.useAlpha&&S[3]<1&&(S[3]/=10),"add"===u.boostBlending?(s.blendFunc(s.SRC_ALPHA,s.ONE),s.blendEquation(s.FUNC_ADD)):"mult"===u.boostBlending||"multiply"===u.boostBlending?s.blendFunc(s.DST_COLOR,s.ZERO):"darken"===u.boostBlending?(s.blendFunc(s.ONE,s.ONE),s.blendEquation(s.FUNC_MIN)):s.blendFuncSeparate(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA,s.ONE,s.ONE_MINUS_SRC_ALPHA),a.reset(),t.colorData.length>0?(a.setUniform("hasColor",1),(T=new r(s,a)).build(Array(t.segments[0].from).concat(t.colorData),"aColor",4),T.bind()):(a.setUniform("hasColor",0),s.disableVertexAttribArray(s.getAttribLocation(a.getProgram(),"aColor"))),a.setColor(S),this.setXAxis(t.series.xAxis),this.setYAxis(t.series.yAxis),this.setThreshold(x,A),"POINTS"===t.drawMode&&a.setPointSize(2*g(u.marker&&u.marker.radius,.5)*f),a.setSkipTranslation(t.skipTranslation),"bubble"===t.series.type&&a.setBubbleUniforms(t.series,t.zMin,t.zMax,f),a.setDrawAsCircle(m[t.series.type]||!1),l)){if(b>0||"LINE_STRIP"!==t.drawMode)for(v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,t.drawMode);if(t.hasMarkers&&y)for(a.setPointSize(2*g(u.marker&&u.marker.radius,5)*f),a.setDrawAsCircle(!0),v=0;v<t.segments.length;v++)l.render(t.segments[v].from,t.segments[v].to,"POINTS")}}),o.debug.timeRendering&&console.timeEnd("gl rendering"),this.postRenderCallback&&this.postRenderCallback(this),this.flush()}render(e){if(this.clear(),e.renderer.forExport)return this.renderChart(e);this.isInited?this.renderChart(e):setTimeout(()=>{this.render(e)},1)}setSize(e,t){let i=this.shader;i&&(this.width!==e||this.height!==t)&&(this.width=e,this.height=t,i.bind(),i.setPMatrix(p.orthoMatrix(e,t)))}init(e,t){let i=this.settings;if(this.isInited=!1,!e)return!1;i.debug.timeSetup&&console.time("gl setup");for(let t=0;t<b.length&&(this.gl=e.getContext(b[t],{}),!this.gl);++t);let s=this.gl;if(!s)return!1;t||this.flush(),s.enable(s.BLEND),s.blendFunc(s.SRC_ALPHA,s.ONE_MINUS_SRC_ALPHA),s.disable(s.DEPTH_TEST),s.depthFunc(s.LESS);let n=this.shader=new o(s);if(!n)return!1;this.vbuffer=new r(s,n);let l=(e,t)=>{let i={isReady:!1,texture:a.createElement("canvas"),handle:s.createTexture()},o=i.texture.getContext("2d");this.textureHandles[e]=i,i.texture.width=512,i.texture.height=512,o.mozImageSmoothingEnabled=!1,o.webkitImageSmoothingEnabled=!1,o.msImageSmoothingEnabled=!1,o.imageSmoothingEnabled=!1,o.strokeStyle="rgba(255, 255, 255, 0)",o.fillStyle="#FFF",t(o);try{s.activeTexture(s.TEXTURE0),s.bindTexture(s.TEXTURE_2D,i.handle),s.texImage2D(s.TEXTURE_2D,0,s.RGBA,s.RGBA,s.UNSIGNED_BYTE,i.texture),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_S,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_WRAP_T,s.CLAMP_TO_EDGE),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MAG_FILTER,s.LINEAR),s.texParameteri(s.TEXTURE_2D,s.TEXTURE_MIN_FILTER,s.LINEAR),s.bindTexture(s.TEXTURE_2D,null),i.isReady=!0}catch(e){}};return l("circle",e=>{e.beginPath(),e.arc(256,256,256,0,2*Math.PI),e.stroke(),e.fill()}),l("square",e=>{e.fillRect(0,0,512,512)}),l("diamond",e=>{e.beginPath(),e.moveTo(256,0),e.lineTo(512,256),e.lineTo(256,512),e.lineTo(0,256),e.lineTo(256,0),e.fill()}),l("triangle",e=>{e.beginPath(),e.moveTo(0,512),e.lineTo(256,0),e.lineTo(512,512),e.lineTo(0,512),e.fill()}),l("triangle-down",e=>{e.beginPath(),e.moveTo(0,0),e.lineTo(256,512),e.lineTo(512,0),e.lineTo(0,0),e.fill()}),this.isInited=!0,i.debug.timeSetup&&console.timeEnd("gl setup"),!0}destroy(){let e=this.gl,t=this.shader,i=this.vbuffer;this.flush(),i&&i.destroy(),t&&t.destroy(),e&&(u(this.textureHandles,t=>{t.handle&&e.deleteTexture(t.handle)}),e.canvas.width=1,e.canvas.height=1)}}return p}),i(t,"Extensions/Boost/BoostSeries.js",[t["Extensions/Boost/BoostableMap.js"],t["Extensions/Boost/Boostables.js"],t["Extensions/Boost/BoostChart.js"],t["Core/Defaults.js"],t["Core/Globals.js"],t["Core/Utilities.js"],t["Extensions/Boost/WGLRenderer.js"]],function(e,t,i,s,o,r,n){let a,l;let{getBoostClipRect:h,isChartSeriesBoosting:f}=i,{getOptions:d}=s,{composed:u,doc:g,noop:c,win:m}=o,{addEvent:b,destroyObjectProperties:p,error:x,extend:A,fireEvent:y,isArray:P,isNumber:v,pick:T,pushUnique:E,wrap:S,defined:M}=r;function C(e,t){let i=t.boost;e&&i&&i.target&&i.canvas&&!f(t.chart)&&e.allocateBufferForSingleSeries(t)}function k(e){return T(e&&e.options&&e.options.boost&&e.options.boost.enabled,!0)}function U(e,t){let i=e.constructor,s=e.seriesGroup||t.group,o=e.chartWidth,r=e.chartHeight,a=e,d="undefined"!=typeof SVGForeignObjectElement,u=(a=f(e)?e:t).boost=a.boost||{};if(d=!1,l||(l=g.createElement("canvas")),!u.target&&(u.canvas=l,e.renderer.forExport||!d?(a.renderTarget=u.target=e.renderer.image("",0,0,o,r).addClass("highcharts-boost-canvas").add(s),u.clear=function(){u.target.attr({href:"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNkYAAAAAYAAjCB0C8AAAAASUVORK5CYII="})},u.copy=function(){u.resize(),u.target.attr({href:u.canvas.toDataURL("image/png")})}):(u.targetFo=e.renderer.createElement("foreignObject").add(s),a.renderTarget=u.target=g.createElement("canvas"),u.targetCtx=u.target.getContext("2d"),u.targetFo.element.appendChild(u.target),u.clear=function(){u.target.width=u.canvas.width,u.target.height=u.canvas.height},u.copy=function(){u.target.width=u.canvas.width,u.target.height=u.canvas.height,u.targetCtx.drawImage(u.canvas,0,0)}),u.resize=function(){o=e.chartWidth,r=e.chartHeight,(u.targetFo||u.target).attr({x:0,y:0,width:o,height:r}).css({pointerEvents:"none",mixedBlendMode:"normal",opacity:1}),a instanceof i&&a.boost.markerGroup.translate(e.plotLeft,e.plotTop)},u.clipRect=e.renderer.clipRect(),(u.targetFo||u.target).attr({zIndex:t.options.zIndex}),a instanceof i&&(a.boost.markerGroup=a.renderer.g().add(s).translate(t.xAxis.pos,t.yAxis.pos))),u.canvas.width=o,u.canvas.height=r,u.clipRect){let t=h(e,a),i=t.width===e.clipBox.width&&t.height===e.clipBox.height?s:u.targetFo||u.target;u.clipRect.attr(t),i?.clip(u.clipRect)}return u.resize(),u.clear(),!u.wgl&&(u.wgl=new n(e=>{e.settings.debug.timeBufferCopy&&console.time("buffer copy"),u.copy(),e.settings.debug.timeBufferCopy&&console.timeEnd("buffer copy")}),u.wgl.init(u.canvas)||x("[highcharts boost] - unable to init WebGL renderer"),u.wgl.setOptions(e.options.boost||{}),a instanceof i&&u.wgl.allocateBuffer(e)),u.wgl.setSize(o,r),u.wgl}function w(e){let t=e.points;if(t){let e,i;for(i=0;i<t.length;i+=1)(e=t[i])&&e.destroyElements&&e.destroyElements()}for(let t of(["graph","area","tracker"].forEach(t=>{let i=e[t];i&&(e[t]=i.destroy())}),e.zones))p(t,void 0,!0)}function R(e,t,i,s,o,r){let n=(o=o||0)+(s=s||3e3),a=!0;for(;a&&o<n&&o<e.length;)a=t(e[o],o),++o;a&&(o<e.length?r?R(e,t,i,s,o,r):m.requestAnimationFrame?m.requestAnimationFrame(function(){R(e,t,i,s,o)}):setTimeout(R,0,e,t,i,s,o):i&&i())}function B(e,t){let i=e.options,s=i.data,o=e.xAxis&&e.xAxis.options,r=e.yAxis&&e.yAxis.options,n=e.colorAxis&&e.colorAxis.options;return s.length>(i.boostThreshold||Number.MAX_VALUE)&&v(r.min)&&v(r.max)&&(!t||v(o.min)&&v(o.max))&&(!n||v(n.min)&&v(n.max))}let D=(e,t)=>!e.forceCrop&&(f(e.chart)||(t?t.length:0)>=(e.options.boostThreshold||Number.MAX_VALUE));function L(){let e=this,t=e.chart;t.boost&&t.boost.markerGroup===e.markerGroup&&(e.markerGroup=null),t.hoverPoints&&(t.hoverPoints=t.hoverPoints.filter(function(t){return t.series===e})),t.hoverPoint&&t.hoverPoint.series===e&&(t.hoverPoint=null)}function z(){let e=this.boost;e&&e.canvas&&e.target&&(e.wgl&&e.wgl.clear(),e.clear&&e.clear())}function _(e){let t=e.boost;t&&t.canvas&&t.target&&t.wgl&&!f(e.chart)&&t.wgl.render(e.chart)}function N(e,t){let i=e.options,s=e.xAxis,o=e.pointClass;if(t instanceof o)return t;let r=e.xData||i.xData||e.processedXData||!1,n=new o(e,(e.options.data||[])[t.i],r?r[t.i]:void 0);return n.category=T(s.categories?s.categories[n.x]:n.x,n.x),n.dist=t.dist,n.distX=t.distX,n.plotX=t.plotX,n.plotY=t.plotY,n.index=t.i,n.percentage=t.percentage,n.isInside=e.isPointInside(n),n}function I(e){var t,i,s,o;let{options:r,xAxis:n,yAxis:a}=this;if(!this.isDirty&&!n.isDirty&&!a.isDirty&&!e)return!1;this.yAxis.setTickInterval();let l=r.boostThreshold||0,h=r.cropThreshold,f=r.data||this.data,d=this.xData,u=n.getExtremes(),g=u.max??Number.MAX_VALUE,c=u.min??-Number.MAX_VALUE,m=this.yData,b=a.getExtremes(),p=b.max??Number.MAX_VALUE,x=b.min??-Number.MAX_VALUE;if(!this.boosted&&n.old&&a.old&&c>=(n.old.min??-Number.MAX_VALUE)&&g<=(n.old.max??Number.MAX_VALUE)&&x>=(a.old.min??-Number.MAX_VALUE)&&p<=(a.old.max??Number.MAX_VALUE))return this.processedXData??(this.processedXData=d),this.processedYData??(this.processedYData=m),!0;if(!l||f.length<l||h&&!this.forceCrop&&!this.getExtremesFromAll&&!r.getExtremesFromAll&&f.length<h)return this.processedXData=d,this.processedYData=m,!0;let A=[],y=[],P=[],T=!(v(u.max)||v(u.min)),E=!(v(b.max)||v(b.min)),S=!1,M,C=d[0],k=d[0],U,w=m[0],R=m[0];for(let e=0,t=d.length;e<t;++e)M=d[e],U=m[e],M>=c&&M<=g&&U>=x&&U<=p?(A.push({x:M,y:U}),y.push(M),P.push(U),T&&(C=Math.max(C,M),k=Math.min(k,M)),E&&(w=Math.max(w,U),R=Math.min(R,U))):S=!0;return T&&((t=n.options).max??(t.max=C),(i=n.options).min??(i.min=k)),E&&((s=a.options).max??(s.max=w),(o=a.options).min??(o.min=R)),this.cropped=S,this.cropStart=0,this.processedXData=y,this.processedYData=P,D(this,y)||(this.processedData=A),!0}function G(){let e=this.options||{},t=this.chart,i=this.xAxis,s=this.yAxis,o=e.xData||this.processedXData,r=e.yData||this.processedYData,n=this.processedData||e.data,l=i.getExtremes(),h=l.min-(i.minPointOffset||0),d=l.max+(i.minPointOffset||0),u=s.getExtremes(),g=u.min-(s.minPointOffset||0),m=u.max+(s.minPointOffset||0),b={},p=!!this.sampling,x=e.enableMouseTracking,A=e.threshold,P=this.pointArrayMap&&"low,high"===this.pointArrayMap.join(","),v=!!e.stacking,T=this.cropStart||0,E=this.requireSorting,S=!o,k="x"===e.findNearestPointBy,B=this.xData||this.options.xData||this.processedXData||!1,D=!1,L,z=s.getThreshold(A),N,I,G,O;if(i.isPanning||s.isPanning||(D=U(t,this),t.boosted=!0,!this.visible))return;(this.points||this.graph)&&w(this),f(t)?(this.markerGroup&&this.markerGroup!==t.boost.markerGroup&&this.markerGroup.destroy(),this.markerGroup=t.boost.markerGroup,this.boost&&this.boost.target&&(this.renderTarget=this.boost.target=this.boost.target.destroy())):(t.boost&&this.markerGroup===t.boost.markerGroup&&(this.markerGroup=void 0),this.markerGroup=this.plotGroup("markerGroup","markers",!0,1,t.seriesGroup));let X=this.points=[],V=(e,o,r,n)=>{let l=!!B&&B[T+r],h=e=>{t.inverted&&(e=i.len-e,o=s.len-o),X.push({destroy:c,x:l,clientX:e,plotX:e,plotY:o,i:T+r,percentage:n})};e=Math.ceil(e),a=k?e:e+","+o,x&&(b[a]?l===B[B.length-1]&&(X.length--,h(e)):(b[a]=!0,h(e)))};this.buildKDTree=c,y(this,"renderCanvas"),D&&(C(D,this),D.pushSeries(this),_(this));let j=D.settings;t.renderer.forExport||(j.debug.timeKDTree&&console.time("kd tree building"),R(v?this.data.slice(T):o||n,function(e,o){let n=void 0===t.index,a,l,f,u,c,b=!1,x=!0;return!M(e)||(!n&&(S?(a=e[0],l=e[1]):(a=e,l=r[o]),P?(S&&(l=e.slice(1,3)),b=l[0],l=l[1]):v&&(a=e.x,b=(l=e.stackY)-e.y,c=e.percentage),E||(x=(l||0)>=g&&l<=m),null!==l&&a>=h&&a<=d&&x&&(f=i.toPixels(a,!0),p?((void 0===G||f===L)&&(P||(b=l),(void 0===O||l>I)&&(I=l,O=o),(void 0===G||b<N)&&(N=b,G=o)),k&&f===L||(void 0!==G&&(u=s.toPixels(I,!0),z=s.toPixels(N,!0),V(f,u,O,c),z!==u&&V(f,z,G,c)),G=O=void 0,L=f)):V(f,u=Math.ceil(s.toPixels(l,!0)),o,c))),!n)},()=>{y(this,"renderedCanvas"),delete this.buildKDTree,this.options&&this.buildKDTree(),j.debug.timeKDTree&&console.timeEnd("kd tree building")}))}function O(e){let t=!0;if(this.chart.options&&this.chart.options.boost&&(t=void 0===this.chart.options.boost.enabled||this.chart.options.boost.enabled),!t||!this.boosted)return e.call(this);this.chart.boosted=!0;let i=U(this.chart,this);i&&(C(i,this),i.pushSeries(this)),_(this)}function X(e){if(this.boosted){if(B(this))return{};if(this.xAxis.isPanning||this.yAxis.isPanning)return this}return e.apply(this,[].slice.call(arguments,1))}function V(t){let i=this.options.data;if(k(this.chart)&&e[this.type]){let e=this.is("scatter")&&!this.is("bubble");if(!D(this,i)||e||this.options.stacking||!B(this,!0)){if(this.boosted&&(this.xAxis?.isPanning||this.yAxis?.isPanning))return;e&&!this.yAxis.treeGrid?I.call(this,arguments[1]):t.apply(this,[].slice.call(arguments,1)),i=this.processedXData}if(this.boosted=D(this,i),this.boosted){let e;this.options.data&&this.options.data.length&&!v(e=this.getFirstValidPoint(this.options.data))&&!P(e)&&x(12,!1,this.chart),function(e){e.boost=e.boost||{getPoint:t=>N(e,t)};let t=e.boost.altered=[];if(["allowDG","directTouch","stickyTracking"].forEach(i=>{t.push({prop:i,val:e[i],own:Object.hasOwnProperty.call(e,i)})}),e.allowDG=!1,e.directTouch=!1,e.stickyTracking=!0,e.finishedAnimating=!0,e.labelBySeries&&(e.labelBySeries=e.labelBySeries.destroy()),e.is("scatter")&&e.data.length){for(let t of e.data)t?.destroy?.();e.data.length=0,e.points.length=0,delete e.processedData}}(this)}else!function(e){let t=e.boost;t&&((t.altered||[]).forEach(t=>{t.own?e[t.prop]=t.val:delete e[t.prop]}),t.clear&&t.clear())}(this)}else t.apply(this,[].slice.call(arguments,1))}function j(e){let t=e.apply(this,[].slice.call(arguments,1));return this.boost&&t?this.boost.getPoint(t):t}return{compose:function(i,s,o){if(E(u,"Boost.Series")){let r=d().plotOptions,n=i.prototype;if(b(i,"destroy",L),b(i,"hide",z),o&&(n.renderCanvas=G),S(n,"getExtremes",X),S(n,"processData",V),S(n,"searchPoint",j),["translate","generatePoints","drawTracker","drawPoints","render"].forEach(t=>(function(t,i,s){function o(t){let i=this.options.stacking&&("translate"===s||"generatePoints"===s);this.boosted&&!i&&k(this.chart)&&"heatmap"!==this.type&&"treemap"!==this.type&&e[this.type]&&0!==this.options.boostThreshold?"render"===s&&this.renderCanvas&&this.renderCanvas():t.call(this)}if(S(t,s,o),"translate"===s)for(let e of["column","arearange","columnrange","heatmap","treemap"])i[e]&&S(i[e].prototype,s,o)})(n,s,t)),t.forEach(e=>{let t=r[e];t&&(t.boostThreshold=5e3,t.boostData=[],s[e].prototype.fillOpacity=!0)}),o){let{area:e,areaspline:t,bubble:i,column:o,heatmap:r,scatter:n,treemap:a}=s;if(e&&A(e.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),t&&A(t.prototype,{fill:!0,fillOpacity:!0,sampling:!0}),i){let e=i.prototype;delete e.buildKDTree,S(e,"markerAttribs",function(e){return!this.boosted&&e.apply(this,[].slice.call(arguments,1))})}o&&A(o.prototype,{fill:!0,sampling:!0}),n&&(n.prototype.fill=!0),[r,a].forEach(e=>{e&&S(e.prototype,"drawPoints",O)})}}return i},destroyGraphics:w,eachAsync:R,getPoint:N}}),i(t,"Extensions/Boost/NamedColors.js",[],function(){return{defaultHTMLColorMap:{aliceblue:"#f0f8ff",antiquewhite:"#faebd7",aqua:"#00ffff",aquamarine:"#7fffd4",azure:"#f0ffff",beige:"#f5f5dc",bisque:"#ffe4c4",blanchedalmond:"#ffebcd",blue:"#0000ff",blueviolet:"#8a2be2",brown:"#a52a2a",burlywood:"#deb887",cadetblue:"#5f9ea0",chartreuse:"#7fff00",chocolate:"#d2691e",coral:"#ff7f50",cornflowerblue:"#6495ed",cornsilk:"#fff8dc",crimson:"#dc143c",cyan:"#00ffff",darkblue:"#00008b",darkcyan:"#008b8b",darkgoldenrod:"#b8860b",darkgray:"#a9a9a9",darkgreen:"#006400",darkkhaki:"#bdb76b",darkmagenta:"#8b008b",darkolivegreen:"#556b2f",darkorange:"#ff8c00",darkorchid:"#9932cc",darkred:"#8b0000",darksalmon:"#e9967a",darkseagreen:"#8fbc8f",darkslateblue:"#483d8b",darkslategray:"#2f4f4f",darkturquoise:"#00ced1",darkviolet:"#9400d3",deeppink:"#ff1493",deepskyblue:"#00bfff",dimgray:"#696969",dodgerblue:"#1e90ff",feldspar:"#d19275",firebrick:"#b22222",floralwhite:"#fffaf0",forestgreen:"#228b22",fuchsia:"#ff00ff",gainsboro:"#dcdcdc",ghostwhite:"#f8f8ff",gold:"#ffd700",goldenrod:"#daa520",gray:"#808080",grey:"#808080",green:"#008000",greenyellow:"#adff2f",honeydew:"#f0fff0",hotpink:"#ff69b4",indianred:"#cd5c5c",indigo:"#4b0082",ivory:"#fffff0",khaki:"#f0e68c",lavender:"#e6e6fa",lavenderblush:"#fff0f5",lawngreen:"#7cfc00",lemonchiffon:"#fffacd",lightblue:"#add8e6",lightcoral:"#f08080",lightcyan:"#e0ffff",lightgoldenrodyellow:"#fafad2",lightgrey:"#d3d3d3",lightgreen:"#90ee90",lightpink:"#ffb6c1",lightsalmon:"#ffa07a",lightseagreen:"#20b2aa",lightskyblue:"#87cefa",lightslateblue:"#8470ff",lightslategray:"#778899",lightsteelblue:"#b0c4de",lightyellow:"#ffffe0",lime:"#00ff00",limegreen:"#32cd32",linen:"#faf0e6",magenta:"#ff00ff",maroon:"#800000",mediumaquamarine:"#66cdaa",mediumblue:"#0000cd",mediumorchid:"#ba55d3",mediumpurple:"#9370d8",mediumseagreen:"#3cb371",mediumslateblue:"#7b68ee",mediumspringgreen:"#00fa9a",mediumturquoise:"#48d1cc",mediumvioletred:"#c71585",midnightblue:"#191970",mintcream:"#f5fffa",mistyrose:"#ffe4e1",moccasin:"#ffe4b5",navajowhite:"#ffdead",navy:"#000080",oldlace:"#fdf5e6",olive:"#808000",olivedrab:"#6b8e23",orange:"#ffa500",orangered:"#ff4500",orchid:"#da70d6",palegoldenrod:"#eee8aa",palegreen:"#98fb98",paleturquoise:"#afeeee",palevioletred:"#d87093",papayawhip:"#ffefd5",peachpuff:"#ffdab9",peru:"#cd853f",pink:"#ffc0cb",plum:"#dda0dd",powderblue:"#b0e0e6",purple:"#800080",red:"#ff0000",rosybrown:"#bc8f8f",royalblue:"#4169e1",saddlebrown:"#8b4513",salmon:"#fa8072",sandybrown:"#f4a460",seagreen:"#2e8b57",seashell:"#fff5ee",sienna:"#a0522d",silver:"#c0c0c0",skyblue:"#87ceeb",slateblue:"#6a5acd",slategray:"#708090",snow:"#fffafa",springgreen:"#00ff7f",steelblue:"#4682b4",tan:"#d2b48c",teal:"#008080",thistle:"#d8bfd8",tomato:"#ff6347",turquoise:"#40e0d0",violet:"#ee82ee",violetred:"#d02090",wheat:"#f5deb3",whitesmoke:"#f5f5f5",yellow:"#ffff00",yellowgreen:"#9acd32"}}}),i(t,"Extensions/Boost/Boost.js",[t["Extensions/Boost/BoostChart.js"],t["Extensions/Boost/BoostSeries.js"],t["Core/Globals.js"],t["Extensions/Boost/NamedColors.js"],t["Core/Utilities.js"]],function(e,t,i,s,o){let{doc:r,win:n}=i,{addEvent:a,error:l}=o,h=["webgl","experimental-webgl","moz-webgl","webkit-3d"];function f(){let e;if(void 0!==n.WebGLRenderingContext){e=r.createElement("canvas");for(let t=0;t<h.length;++t)try{if(null!=e.getContext(h[t]))return!0}catch(e){}}return!1}return{compose:function(o,r,n,h,d){let u=f();u||(void 0!==i.initCanvasBoost?i.initCanvasBoost():l(26)),d&&!d.names.lightgoldenrodyellow&&(d.names={...d.names,...s.defaultHTMLColorMap}),e.compose(o,u),t.compose(n,h,u),a(r,"setExtremes",function(e){for(let t of[this.chart,...this.series].map(e=>e.renderTarget).filter(Boolean)){let{horiz:i,pos:s}=this,o=i?"scaleX":"scaleY",r=i?"translateX":"translateY",n=t?.[o]??1,a=1,l=0,h=1,f="none";this.isPanning&&(a=(e.scale??1)*n,l=(t?.[r]||0)-a*(e.move||0)+n*s-a*s,h=.7,f="blur(3px)"),t?.attr({[o]:a,[r]:l}).css({transition:"250ms filter, 250ms opacity",filter:f,opacity:h})}})},hasWebGLSupport:f}}),i(t,"masters/modules/boost.src.js",[t["Core/Globals.js"],t["Extensions/Boost/Boost.js"]],function(e,t){return e.hasWebGLSupport=t.hasWebGLSupport,t.compose(e.Chart,e.Axis,e.Series,e.seriesTypes,e.Color),e})});
|