highcharts 9.3.3 → 10.2.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/bower.json +1 -1
- package/css/highcharts.css +19 -2
- package/css/highcharts.scss +17 -2
- package/css/themes/dark-unica.css +19 -2
- package/css/themes/grid-light.css +19 -2
- package/css/themes/sand-signika.css +19 -2
- package/es-modules/Accessibility/A11yI18n.js +4 -4
- package/es-modules/Accessibility/Accessibility.js +3 -4
- package/es-modules/Accessibility/Components/AnnotationsA11y.js +3 -3
- package/es-modules/Accessibility/Components/ContainerComponent.js +11 -10
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +18 -11
- package/es-modules/Accessibility/Components/LegendComponent.js +34 -26
- package/es-modules/Accessibility/Components/MenuComponent.js +7 -6
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -3
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +3 -2
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +96 -39
- package/es-modules/Accessibility/Components/ZoomComponent.js +43 -80
- package/es-modules/Accessibility/FocusBorder.js +6 -5
- package/es-modules/Accessibility/HighContrastMode.js +3 -3
- package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
- package/es-modules/Accessibility/Options/{Options.js → A11yDefaults.js} +72 -4
- package/es-modules/Accessibility/Options/DeprecatedOptions.js +12 -2
- package/es-modules/Accessibility/Options/{LangOptions.js → LangDefaults.js} +46 -31
- package/es-modules/Accessibility/ProxyElement.js +14 -6
- package/es-modules/Accessibility/ProxyProvider.js +10 -2
- package/es-modules/Accessibility/Utils/ChartUtilities.js +10 -5
- package/es-modules/Core/Animation/Fx.js +1 -1
- package/es-modules/Core/Axis/Axis.js +197 -91
- package/es-modules/Core/Axis/AxisDefaults.js +8 -8
- package/es-modules/Core/Axis/Color/ColorAxis.js +26 -7
- package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +3 -3
- package/es-modules/Core/Axis/DateTimeAxis.js +5 -3
- package/es-modules/Core/Axis/GridAxis.js +821 -821
- package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
- package/es-modules/Core/Axis/OrdinalAxis.js +26 -3
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
- package/es-modules/Core/Axis/StackingAxis.js +0 -1
- package/es-modules/Core/Axis/Tick.js +22 -18
- package/es-modules/Core/Axis/TreeGridTick.js +13 -2
- package/es-modules/Core/Axis/ZAxis.js +3 -1
- package/es-modules/Core/Chart/Chart.js +27 -8
- package/es-modules/Core/Chart/Chart3D.js +1 -11
- package/es-modules/Core/Chart/ChartDefaults.js +46 -14
- package/es-modules/Core/Chart/GanttChart.js +3 -1
- package/es-modules/Core/Chart/MapChart.js +4 -7
- package/es-modules/Core/Chart/StockChart.js +7 -5
- package/es-modules/Core/Color/Color.js +1 -1
- package/es-modules/Core/DefaultOptions.js +19 -15
- package/es-modules/Core/Geometry/PolygonClip.js +84 -0
- package/es-modules/Core/Globals.js +4 -18
- package/es-modules/Core/HttpUtilities.js +46 -39
- package/es-modules/Core/Legend/Legend.js +14 -12
- package/es-modules/Core/MSPointer.js +3 -1
- package/es-modules/Core/Navigator.js +16 -13
- package/es-modules/Core/Pointer.js +16 -12
- package/es-modules/Core/Renderer/HTML/AST.js +68 -8
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +3 -1
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +3 -1
- package/es-modules/Core/Renderer/SVG/SVGElement.js +54 -70
- package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +3 -1
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +60 -55
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +4 -2
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
- package/es-modules/Core/Scrollbar.js +9 -5
- package/es-modules/Core/ScrollbarDefaults.js +8 -8
- package/es-modules/Core/Series/DataLabel.js +67 -38
- package/es-modules/Core/Series/Point.js +11 -2
- package/es-modules/Core/Series/Series.js +57 -27
- package/es-modules/Core/Series/Series3D.js +3 -1
- package/es-modules/Core/Series/SeriesDefaults.js +7 -4
- package/es-modules/Core/Time.js +6 -7
- package/es-modules/Core/Tooltip.js +17 -34
- package/es-modules/Core/Utilities.js +33 -33
- package/es-modules/Data/DataConverter.js +1 -1
- package/es-modules/Data/DataTable.js +12 -10
- package/es-modules/Data/Modifiers/ChainModifier.js +3 -1
- package/es-modules/Data/Modifiers/GroupModifier.js +3 -1
- package/es-modules/Data/Modifiers/InvertModifier.js +9 -7
- package/es-modules/Data/Modifiers/RangeModifier.js +3 -1
- package/es-modules/Data/Modifiers/SeriesPointsModifier.js +3 -1
- package/es-modules/Data/Modifiers/SortModifier.js +3 -1
- package/es-modules/Data/Parsers/CSVParser.js +3 -1
- package/es-modules/Data/Parsers/DataParser.js +1 -1
- package/es-modules/Data/Parsers/GoogleSheetsParser.js +3 -2
- package/es-modules/Data/Parsers/HTMLTableParser.js +3 -1
- package/es-modules/Data/Stores/CSVStore.js +8 -5
- package/es-modules/Data/Stores/GoogleSheetsStore.js +3 -1
- package/es-modules/Data/Stores/HTMLTableStore.js +3 -1
- package/es-modules/Extensions/Annotations/{Annotations.js → Annotation.js} +30 -11
- package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
- package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +5 -2
- package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
- package/es-modules/Extensions/Annotations/NavigationBindings.js +16 -5
- package/es-modules/Extensions/Annotations/Popup.js +2 -2
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +18 -12
- package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -2
- package/es-modules/Extensions/Annotations/Types/ElliottWave.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Fibonacci.js +5 -3
- package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +4 -2
- package/es-modules/Extensions/Annotations/Types/InfinityLine.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Measure.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Pitchfork.js +4 -2
- package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
- package/es-modules/Extensions/Annotations/Types/Tunnel.js +5 -2
- package/es-modules/Extensions/Annotations/Types/VerticalLine.js +4 -2
- package/es-modules/Extensions/Boost/BoostAttach.js +5 -1
- package/es-modules/Extensions/Boost/BoostInit.js +9 -3
- package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
- package/es-modules/Extensions/Boost/Boostables.js +1 -0
- package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
- package/es-modules/Extensions/Boost/WGLShader.js +4 -3
- package/es-modules/Extensions/BoostCanvas.js +11 -5
- package/es-modules/Extensions/Breadcrumbs.js +898 -0
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +661 -613
- package/es-modules/Extensions/DataGrouping.js +8 -3
- package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
- package/es-modules/Extensions/DownloadURL.js +3 -3
- package/es-modules/Extensions/DragPanes.js +1 -1
- package/es-modules/Extensions/DraggablePoints.js +9 -7
- package/es-modules/Extensions/Drilldown.js +152 -97
- package/es-modules/Extensions/ExportData.js +58 -9
- package/es-modules/Extensions/Exporting/Exporting.js +34 -23
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +56 -8
- package/es-modules/Extensions/FullScreen.js +121 -54
- package/es-modules/Extensions/GeoJSON.js +149 -125
- package/es-modules/Extensions/MarkerClusters.js +36 -22
- package/es-modules/Extensions/NoDataToDisplay.js +1 -1
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/Oldie/Oldie.js +2 -2
- package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
- package/es-modules/Extensions/Pane.js +3 -3
- package/es-modules/Extensions/ParallelCoordinates.js +1 -1
- package/es-modules/Extensions/PatternFill.js +14 -2
- package/es-modules/Extensions/RangeSelector.js +29 -18
- package/es-modules/Extensions/ScrollablePlotArea.js +8 -4
- package/es-modules/Extensions/{SeriesLabel.js → SeriesLabel/SeriesLabel.js} +262 -384
- package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +124 -0
- package/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +67 -0
- package/es-modules/Extensions/Sonification/Earcon.js +1 -1
- package/es-modules/Extensions/Stacking.js +5 -4
- package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
- package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
- package/es-modules/Maps/MapNavigation.js +49 -12
- package/es-modules/Maps/MapPointer.js +16 -0
- package/es-modules/Maps/MapUtilities.js +56 -0
- package/es-modules/Maps/MapView.js +619 -137
- package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
- package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
- package/es-modules/Maps/Projection.js +182 -88
- package/es-modules/Maps/Projections/EqualEarth.js +15 -6
- package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
- package/es-modules/Maps/Projections/Miller.js +23 -10
- package/es-modules/Maps/Projections/Orthographic.js +21 -10
- package/es-modules/Maps/Projections/WebMercator.js +25 -13
- package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +79 -0
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +591 -0
- package/es-modules/Series/Area/AreaSeries.js +21 -14
- package/es-modules/Series/AreaRange/AreaRangePoint.js +24 -11
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +154 -147
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +45 -41
- package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +43 -43
- package/es-modules/Series/Bar/BarSeries.js +3 -1
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +3 -1
- package/es-modules/Series/BoxPlot/BoxPlotSeries.js +4 -2
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
- package/es-modules/Series/Bubble/BubblePoint.js +3 -1
- package/es-modules/Series/Bubble/BubbleSeries.js +15 -6
- package/es-modules/Series/Bullet/BulletPoint.js +3 -1
- package/es-modules/Series/Bullet/BulletSeries.js +4 -3
- package/es-modules/Series/Candlestick/CandlestickSeries.js +5 -3
- package/es-modules/Series/CenteredUtilities.js +8 -2
- package/es-modules/Series/ColorMapComposition.js +111 -0
- package/es-modules/Series/Column/ColumnSeries.js +10 -7
- package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +3 -1
- package/es-modules/Series/ColumnRange/ColumnRangePoint.js +17 -13
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +60 -57
- package/es-modules/Series/Cylinder/CylinderPoint.js +3 -1
- package/es-modules/Series/Cylinder/CylinderSeries.js +3 -1
- package/es-modules/Series/DataModifyComposition.js +1 -0
- package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +5 -3
- package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -1
- package/es-modules/Series/DrawPointUtilities.js +87 -0
- package/es-modules/Series/Dumbbell/DumbbellPoint.js +3 -1
- package/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
- package/es-modules/Series/ErrorBar/ErrorBarSeries.js +4 -2
- package/es-modules/Series/Flags/FlagsPoint.js +4 -1
- package/es-modules/Series/Flags/FlagsSeries.js +13 -16
- package/es-modules/Series/Funnel/FunnelSeries.js +5 -3
- package/es-modules/Series/Funnel3D/Funnel3DPoint.js +3 -1
- package/es-modules/Series/Funnel3D/Funnel3DSeries.js +3 -1
- package/es-modules/Series/Gantt/GanttPoint.js +3 -1
- package/es-modules/Series/Gantt/GanttSeries.js +3 -1
- package/es-modules/Series/Gauge/GaugePoint.js +3 -1
- package/es-modules/Series/Gauge/GaugeSeries.js +196 -174
- package/es-modules/Series/HLC/HLCPoint.js +3 -1
- package/es-modules/Series/HLC/HLCSeries.js +4 -2
- package/es-modules/Series/Heatmap/HeatmapPoint.js +7 -5
- package/es-modules/Series/Heatmap/HeatmapSeries.js +29 -33
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -1
- package/es-modules/Series/Histogram/HistogramSeries.js +3 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +3 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +11 -9
- package/es-modules/Series/Item/ItemPoint.js +3 -1
- package/es-modules/Series/Item/ItemSeries.js +3 -1
- package/es-modules/Series/Line/LineSeries.js +4 -2
- package/es-modules/Series/Lollipop/LollipopPoint.js +3 -1
- package/es-modules/Series/Lollipop/LollipopSeries.js +4 -2
- package/es-modules/Series/Map/MapPoint.js +32 -7
- package/es-modules/Series/Map/MapSeries.js +298 -189
- package/es-modules/Series/MapBubble/MapBubblePoint.js +19 -25
- package/es-modules/Series/MapBubble/MapBubbleSeries.js +61 -2
- package/es-modules/Series/MapLine/MapLineSeries.js +18 -1
- package/es-modules/Series/MapPoint/MapPointPoint.js +6 -10
- package/es-modules/Series/MapPoint/MapPointSeries.js +50 -16
- package/es-modules/Series/Networkgraph/Networkgraph.js +3 -1
- package/es-modules/Series/NodesComposition.js +101 -49
- package/es-modules/Series/OHLC/OHLCPoint.js +3 -1
- package/es-modules/Series/OHLC/OHLCSeries.js +10 -1
- package/es-modules/Series/Organization/OrganizationPoint.js +71 -3
- package/es-modules/Series/Organization/OrganizationSeries.js +84 -28
- package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +0 -2
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +3 -1
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
- package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -1
- package/es-modules/Series/Pie/PieDataLabel.js +4 -2
- package/es-modules/Series/Pie/PiePoint.js +15 -6
- package/es-modules/Series/Pie/PieSeries.js +51 -37
- package/es-modules/Series/Pie3D/Pie3DPoint.js +3 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +22 -1
- package/es-modules/Series/PolarComposition.js +819 -0
- package/es-modules/Series/Polygon/PolygonSeries.js +3 -1
- package/es-modules/Series/Pyramid/PyramidSeries.js +3 -1
- package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +3 -1
- package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
- package/es-modules/Series/Sankey/SankeyPoint.js +40 -2
- package/es-modules/Series/Sankey/SankeySeries.js +35 -136
- package/es-modules/Series/Scatter/ScatterSeries.js +11 -6
- package/es-modules/Series/Scatter3D/Scatter3DPoint.js +3 -1
- package/es-modules/Series/Scatter3D/Scatter3DSeries.js +3 -1
- package/es-modules/Series/SeriesOnPointComposition.js +391 -0
- package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +5 -3
- package/es-modules/Series/Spline/SplineSeries.js +13 -4
- package/es-modules/Series/Streamgraph/StreamgraphSeries.js +3 -1
- package/es-modules/Series/Sunburst/SunburstPoint.js +3 -3
- package/es-modules/Series/Sunburst/SunburstSeries.js +21 -5
- package/es-modules/Series/Tilemap/TilemapPoint.js +3 -1
- package/es-modules/Series/Tilemap/TilemapSeries.js +3 -1
- package/es-modules/Series/Timeline/TimelinePoint.js +3 -1
- package/es-modules/Series/Timeline/TimelineSeries.js +6 -4
- package/es-modules/Series/Treemap/TreemapPoint.js +8 -4
- package/es-modules/Series/Treemap/TreemapSeries.js +97 -87
- package/es-modules/Series/VariablePie/VariablePieSeries.js +3 -1
- package/es-modules/Series/Variwide/VariwidePoint.js +3 -1
- package/es-modules/Series/Variwide/VariwideSeries.js +3 -1
- package/es-modules/Series/Vector/VectorSeries.js +3 -1
- package/es-modules/Series/Venn/VennPoint.js +5 -5
- package/es-modules/Series/Venn/VennSeries.js +9 -6
- package/es-modules/Series/Waterfall/WaterfallPoint.js +3 -1
- package/es-modules/Series/Waterfall/WaterfallSeries.js +16 -12
- package/es-modules/Series/Windbarb/WindbarbPoint.js +3 -1
- package/es-modules/Series/Windbarb/WindbarbSeries.js +3 -1
- package/es-modules/Series/Wordcloud/WordcloudPoint.js +6 -6
- package/es-modules/Series/Wordcloud/WordcloudSeries.js +11 -8
- package/es-modules/Series/XRange/XRangePoint.js +3 -1
- package/es-modules/Series/XRange/XRangeSeries.js +3 -1
- package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -1
- package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
- package/es-modules/Stock/Indicators/AO/AOIndicator.js +5 -3
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -1
- package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +3 -1
- package/es-modules/Stock/Indicators/BB/BBIndicator.js +6 -4
- package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +3 -1
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +3 -1
- package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +3 -1
- package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +13 -7
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -1
- package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +3 -1
- package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +3 -1
- package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +3 -1
- package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +26 -13
- package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +3 -1
- package/es-modules/Stock/Indicators/MultipleLinesComposition.js +85 -95
- package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +3 -1
- package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PC/PCIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +3 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +3 -1
- package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +3 -1
- package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +3 -1
- package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +3 -1
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +12 -3
- package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +6 -4
- package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +3 -1
- package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +3 -1
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +3 -1
- package/es-modules/Stock/Indicators/VBP/VBPPoint.js +3 -1
- package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +3 -1
- package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +3 -1
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +3 -1
- package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +3 -1
- package/es-modules/Stock/StockToolsBindings.js +51 -43
- package/es-modules/Stock/StockToolsGui.js +1 -1
- package/es-modules/masters/highcharts-3d.src.js +1 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +4 -4
- package/es-modules/masters/highcharts.src.js +1 -1
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
- package/es-modules/masters/indicators/ao.src.js +1 -1
- package/es-modules/masters/indicators/apo.src.js +1 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
- package/es-modules/masters/indicators/aroon.src.js +1 -1
- package/es-modules/masters/indicators/atr.src.js +1 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
- package/es-modules/masters/indicators/cci.src.js +1 -1
- package/es-modules/masters/indicators/chaikin.src.js +1 -1
- package/es-modules/masters/indicators/cmf.src.js +1 -1
- package/es-modules/masters/indicators/cmo.src.js +1 -1
- package/es-modules/masters/indicators/dema.src.js +1 -1
- package/es-modules/masters/indicators/disparity-index.src.js +1 -1
- package/es-modules/masters/indicators/dmi.src.js +1 -1
- package/es-modules/masters/indicators/dpo.src.js +1 -1
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
- package/es-modules/masters/indicators/indicators-all.src.js +1 -1
- package/es-modules/masters/indicators/indicators.src.js +1 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
- package/es-modules/masters/indicators/klinger.src.js +1 -1
- package/es-modules/masters/indicators/macd.src.js +1 -1
- package/es-modules/masters/indicators/mfi.src.js +1 -1
- package/es-modules/masters/indicators/momentum.src.js +1 -1
- package/es-modules/masters/indicators/natr.src.js +1 -1
- package/es-modules/masters/indicators/obv.src.js +1 -1
- package/es-modules/masters/indicators/pivot-points.src.js +1 -1
- package/es-modules/masters/indicators/ppo.src.js +1 -1
- package/es-modules/masters/indicators/price-channel.src.js +1 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
- package/es-modules/masters/indicators/psar.src.js +1 -1
- package/es-modules/masters/indicators/regressions.src.js +1 -1
- package/es-modules/masters/indicators/roc.src.js +1 -1
- package/es-modules/masters/indicators/rsi.src.js +1 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
- package/es-modules/masters/indicators/stochastic.src.js +1 -1
- package/es-modules/masters/indicators/supertrend.src.js +1 -1
- package/es-modules/masters/indicators/tema.src.js +1 -1
- package/es-modules/masters/indicators/trendline.src.js +1 -1
- package/es-modules/masters/indicators/trix.src.js +1 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
- package/es-modules/masters/indicators/vwap.src.js +1 -1
- package/es-modules/masters/indicators/williams-r.src.js +1 -1
- package/es-modules/masters/indicators/wma.src.js +1 -1
- package/es-modules/masters/indicators/zigzag.src.js +1 -1
- package/es-modules/masters/modules/accessibility.src.js +1 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +2 -2
- package/es-modules/masters/modules/annotations.src.js +2 -2
- package/es-modules/masters/modules/arc-diagram.src.js +14 -0
- package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
- package/es-modules/masters/modules/boost-canvas.src.js +1 -1
- package/es-modules/masters/modules/boost.src.js +1 -1
- package/es-modules/masters/modules/broken-axis.src.js +1 -1
- package/es-modules/masters/modules/bullet.src.js +1 -1
- package/es-modules/masters/modules/coloraxis.src.js +1 -1
- package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
- package/es-modules/masters/modules/cylinder.src.js +1 -1
- package/es-modules/masters/modules/data.src.js +2 -1
- package/es-modules/masters/modules/datagrouping.src.js +1 -1
- package/es-modules/masters/modules/debugger.src.js +1 -1
- package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
- package/es-modules/masters/modules/dotplot.src.js +1 -1
- package/es-modules/masters/modules/drag-panes.src.js +1 -1
- package/es-modules/masters/modules/draggable-points.src.js +1 -1
- package/es-modules/masters/modules/drilldown.src.js +2 -1
- package/es-modules/masters/modules/dumbbell.src.js +1 -1
- package/es-modules/masters/modules/export-data.src.js +1 -1
- package/es-modules/masters/modules/exporting.src.js +1 -1
- package/es-modules/masters/modules/full-screen.src.js +1 -1
- package/es-modules/masters/modules/funnel.src.js +1 -1
- package/es-modules/masters/modules/funnel3d.src.js +1 -1
- package/es-modules/masters/modules/gantt.src.js +1 -1
- package/es-modules/masters/modules/grid-axis.src.js +1 -1
- package/es-modules/masters/modules/heatmap.src.js +1 -1
- package/es-modules/masters/modules/heikinashi.src.js +1 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
- package/es-modules/masters/modules/item-series.src.js +1 -1
- package/es-modules/masters/modules/lollipop.src.js +1 -1
- package/es-modules/masters/modules/map.src.js +5 -1
- package/es-modules/masters/modules/marker-clusters.src.js +1 -1
- package/es-modules/masters/modules/networkgraph.src.js +1 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
- package/es-modules/masters/modules/offline-exporting.src.js +1 -1
- package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
- package/es-modules/masters/modules/oldie.src.js +1 -1
- package/es-modules/masters/modules/organization.src.js +1 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
- package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
- package/es-modules/masters/modules/pareto.src.js +1 -1
- package/es-modules/masters/modules/pathfinder.src.js +1 -1
- package/es-modules/masters/modules/pattern-fill.src.js +1 -1
- package/es-modules/masters/modules/price-indicator.src.js +1 -1
- package/es-modules/masters/modules/pyramid3d.src.js +1 -1
- package/es-modules/masters/modules/sankey.src.js +1 -1
- package/es-modules/masters/modules/series-label.src.js +5 -2
- package/es-modules/masters/modules/series-on-point.src.js +16 -0
- package/es-modules/masters/modules/solid-gauge.src.js +1 -1
- package/es-modules/masters/modules/sonification.src.js +2 -6
- package/es-modules/masters/modules/static-scale.src.js +1 -1
- package/es-modules/masters/modules/stock-tools.src.js +1 -1
- package/es-modules/masters/modules/stock.src.js +1 -1
- package/es-modules/masters/modules/streamgraph.src.js +1 -1
- package/es-modules/masters/modules/sunburst.src.js +1 -1
- package/es-modules/masters/modules/tilemap.src.js +1 -1
- package/es-modules/masters/modules/timeline.src.js +1 -1
- package/es-modules/masters/modules/treegrid.src.js +1 -1
- package/es-modules/masters/modules/treemap.src.js +5 -1
- package/es-modules/masters/modules/variable-pie.src.js +1 -1
- package/es-modules/masters/modules/variwide.src.js +1 -1
- package/es-modules/masters/modules/vector.src.js +1 -1
- package/es-modules/masters/modules/venn.src.js +1 -1
- package/es-modules/masters/modules/windbarb.src.js +1 -1
- package/es-modules/masters/modules/wordcloud.src.js +1 -1
- package/es-modules/masters/modules/xrange.src.js +1 -1
- package/es-modules/masters/themes/avocado.src.js +1 -1
- package/es-modules/masters/themes/brand-dark.src.js +1 -1
- package/es-modules/masters/themes/brand-light.src.js +1 -1
- package/es-modules/masters/themes/dark-blue.src.js +1 -1
- package/es-modules/masters/themes/dark-green.src.js +1 -1
- package/es-modules/masters/themes/dark-unica.src.js +1 -1
- package/es-modules/masters/themes/gray.src.js +1 -1
- package/es-modules/masters/themes/grid-light.src.js +1 -1
- package/es-modules/masters/themes/grid.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
- package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
- package/es-modules/masters/themes/sand-signika.src.js +1 -1
- package/es-modules/masters/themes/skies.src.js +1 -1
- package/es-modules/masters/themes/sunset.src.js +1 -1
- package/highcharts-3d.js +99 -98
- package/highcharts-3d.js.map +1 -1
- package/highcharts-3d.src.js +51 -21
- package/highcharts-gantt.js +811 -801
- package/highcharts-gantt.js.map +1 -1
- package/highcharts-gantt.src.js +2020 -1607
- package/highcharts-more.d.ts +10 -0
- package/highcharts-more.js +194 -194
- package/highcharts-more.js.map +1 -1
- package/highcharts-more.src.d.ts +10 -0
- package/highcharts-more.src.js +3512 -3364
- package/highcharts.d.ts +12336 -965
- package/highcharts.js +595 -586
- package/highcharts.js.map +1 -1
- package/highcharts.src.d.ts +12336 -965
- package/highcharts.src.js +1047 -665
- package/highmaps.js +763 -728
- package/highmaps.js.map +1 -1
- package/highmaps.src.js +4482 -2639
- package/highstock.js +798 -788
- package/highstock.js.map +1 -1
- package/highstock.src.js +1177 -739
- package/indicators/acceleration-bands.d.ts +1 -17
- package/indicators/acceleration-bands.js +11 -11
- package/indicators/acceleration-bands.js.map +1 -1
- package/indicators/acceleration-bands.src.d.ts +1 -17
- package/indicators/acceleration-bands.src.js +99 -100
- package/indicators/accumulation-distribution.js +5 -5
- package/indicators/accumulation-distribution.js.map +1 -1
- package/indicators/accumulation-distribution.src.js +11 -2
- package/indicators/ao.js +6 -6
- package/indicators/ao.js.map +1 -1
- package/indicators/ao.src.js +13 -4
- package/indicators/apo.js +5 -5
- package/indicators/apo.js.map +1 -1
- package/indicators/apo.src.js +11 -2
- package/indicators/aroon-oscillator.d.ts +1 -17
- package/indicators/aroon-oscillator.js +10 -10
- package/indicators/aroon-oscillator.js.map +1 -1
- package/indicators/aroon-oscillator.src.d.ts +1 -17
- package/indicators/aroon-oscillator.src.js +99 -100
- package/indicators/aroon.d.ts +1 -17
- package/indicators/aroon.js +11 -11
- package/indicators/aroon.js.map +1 -1
- package/indicators/aroon.src.d.ts +1 -17
- package/indicators/aroon.src.js +99 -100
- package/indicators/atr.js +5 -5
- package/indicators/atr.js.map +1 -1
- package/indicators/atr.src.js +11 -2
- package/indicators/bollinger-bands.d.ts +1 -17
- package/indicators/bollinger-bands.js +11 -12
- package/indicators/bollinger-bands.js.map +1 -1
- package/indicators/bollinger-bands.src.d.ts +1 -17
- package/indicators/bollinger-bands.src.js +102 -103
- package/indicators/cci.js +5 -5
- package/indicators/cci.js.map +1 -1
- package/indicators/cci.src.js +11 -2
- package/indicators/chaikin.js +8 -8
- package/indicators/chaikin.js.map +1 -1
- package/indicators/chaikin.src.js +11 -2
- package/indicators/cmf.js +6 -6
- package/indicators/cmf.js.map +1 -1
- package/indicators/cmf.src.js +11 -2
- package/indicators/cmo.js +5 -5
- package/indicators/cmo.js.map +1 -1
- package/indicators/cmo.src.js +11 -2
- package/indicators/dema.js +5 -5
- package/indicators/dema.js.map +1 -1
- package/indicators/dema.src.js +11 -2
- package/indicators/disparity-index.js +6 -6
- package/indicators/disparity-index.js.map +1 -1
- package/indicators/disparity-index.src.js +11 -2
- package/indicators/dmi.js +12 -12
- package/indicators/dmi.js.map +1 -1
- package/indicators/dmi.src.js +109 -106
- package/indicators/dpo.js +5 -5
- package/indicators/dpo.js.map +1 -1
- package/indicators/dpo.src.js +11 -2
- package/indicators/ema.js +2 -1
- package/indicators/ema.js.map +1 -1
- package/indicators/ema.src.js +10 -1
- package/indicators/ichimoku-kinko-hyo.js +16 -16
- package/indicators/ichimoku-kinko-hyo.js.map +1 -1
- package/indicators/ichimoku-kinko-hyo.src.js +11 -2
- package/indicators/indicators-all.d.ts +1 -17
- package/indicators/indicators-all.js +198 -196
- package/indicators/indicators-all.js.map +1 -1
- package/indicators/indicators-all.src.d.ts +1 -17
- package/indicators/indicators-all.src.js +151 -129
- package/indicators/indicators.js +13 -12
- package/indicators/indicators.js.map +1 -1
- package/indicators/indicators.src.js +21 -5
- package/indicators/keltner-channels.d.ts +1 -17
- package/indicators/keltner-channels.js +11 -11
- package/indicators/keltner-channels.js.map +1 -1
- package/indicators/keltner-channels.src.d.ts +1 -17
- package/indicators/keltner-channels.src.js +99 -100
- package/indicators/klinger.js +14 -14
- package/indicators/klinger.js.map +1 -1
- package/indicators/klinger.src.js +99 -100
- package/indicators/macd.js +13 -11
- package/indicators/macd.js.map +1 -1
- package/indicators/macd.src.js +35 -14
- package/indicators/mfi.js +6 -6
- package/indicators/mfi.js.map +1 -1
- package/indicators/mfi.src.js +11 -2
- package/indicators/momentum.js +5 -5
- package/indicators/momentum.js.map +1 -1
- package/indicators/momentum.src.js +11 -2
- package/indicators/natr.js +5 -4
- package/indicators/natr.js.map +1 -1
- package/indicators/natr.src.js +11 -2
- package/indicators/obv.js +5 -5
- package/indicators/obv.js.map +1 -1
- package/indicators/obv.src.js +11 -2
- package/indicators/pivot-points.js +11 -11
- package/indicators/pivot-points.js.map +1 -1
- package/indicators/pivot-points.src.js +11 -2
- package/indicators/ppo.js +5 -5
- package/indicators/ppo.js.map +1 -1
- package/indicators/ppo.src.js +11 -2
- package/indicators/price-channel.d.ts +1 -17
- package/indicators/price-channel.js +11 -11
- package/indicators/price-channel.js.map +1 -1
- package/indicators/price-channel.src.d.ts +1 -17
- package/indicators/price-channel.src.js +99 -100
- package/indicators/price-envelopes.js +8 -8
- package/indicators/price-envelopes.js.map +1 -1
- package/indicators/price-envelopes.src.js +11 -2
- package/indicators/psar.js +7 -6
- package/indicators/psar.js.map +1 -1
- package/indicators/psar.src.js +11 -2
- package/indicators/regressions.js +12 -12
- package/indicators/regressions.js.map +1 -1
- package/indicators/regressions.src.js +11 -2
- package/indicators/roc.js +5 -5
- package/indicators/roc.js.map +1 -1
- package/indicators/roc.src.js +11 -2
- package/indicators/rsi.js +6 -5
- package/indicators/rsi.js.map +1 -1
- package/indicators/rsi.src.js +11 -2
- package/indicators/slow-stochastic.js +5 -5
- package/indicators/slow-stochastic.js.map +1 -1
- package/indicators/slow-stochastic.src.js +11 -2
- package/indicators/stochastic.d.ts +1 -17
- package/indicators/stochastic.js +12 -12
- package/indicators/stochastic.js.map +1 -1
- package/indicators/stochastic.src.d.ts +1 -17
- package/indicators/stochastic.src.js +99 -100
- package/indicators/supertrend.js +10 -10
- package/indicators/supertrend.js.map +1 -1
- package/indicators/supertrend.src.js +14 -5
- package/indicators/tema.js +6 -6
- package/indicators/tema.js.map +1 -1
- package/indicators/tema.src.js +11 -2
- package/indicators/trendline.js +5 -5
- package/indicators/trendline.js.map +1 -1
- package/indicators/trendline.src.js +11 -2
- package/indicators/trix.js +4 -4
- package/indicators/trix.js.map +1 -1
- package/indicators/trix.src.js +11 -2
- package/indicators/volume-by-price.js +17 -17
- package/indicators/volume-by-price.js.map +1 -1
- package/indicators/volume-by-price.src.js +11 -2
- package/indicators/vwap.js +5 -5
- package/indicators/vwap.js.map +1 -1
- package/indicators/vwap.src.js +11 -2
- package/indicators/williams-r.js +6 -5
- package/indicators/williams-r.js.map +1 -1
- package/indicators/williams-r.src.js +11 -2
- package/indicators/wma.js +5 -5
- package/indicators/wma.js.map +1 -1
- package/indicators/wma.src.js +11 -2
- package/indicators/zigzag.js +6 -6
- package/indicators/zigzag.js.map +1 -1
- package/indicators/zigzag.src.js +11 -2
- package/lib/jspdf.js +299 -184
- package/lib/jspdf.src.js +25266 -18067
- package/lib/svg2pdf.js +35 -31
- package/lib/svg2pdf.src.js +5721 -4179
- package/modules/accessibility.js +242 -237
- package/modules/accessibility.js.map +1 -1
- package/modules/accessibility.src.js +599 -390
- package/modules/annotations-advanced.js +192 -192
- package/modules/annotations-advanced.js.map +1 -1
- package/modules/annotations-advanced.src.js +96 -47
- package/modules/annotations.js +126 -126
- package/modules/annotations.js.map +1 -1
- package/modules/annotations.src.js +67 -25
- package/modules/arc-diagram.js +25 -0
- package/modules/arc-diagram.js.map +1 -0
- package/modules/arc-diagram.src.js +778 -0
- package/modules/arrow-symbols.js +4 -3
- package/modules/arrow-symbols.js.map +1 -1
- package/modules/arrow-symbols.src.js +11 -2
- package/modules/boost-canvas.js +16 -15
- package/modules/boost-canvas.js.map +1 -1
- package/modules/boost-canvas.src.js +22 -7
- package/modules/boost.js +81 -79
- package/modules/boost.js.map +1 -1
- package/modules/boost.src.js +90 -51
- package/modules/broken-axis.js +13 -13
- package/modules/broken-axis.js.map +1 -1
- package/modules/broken-axis.src.js +11 -2
- package/modules/bullet.js +9 -9
- package/modules/bullet.js.map +1 -1
- package/modules/bullet.src.js +12 -6
- package/modules/coloraxis.js +24 -24
- package/modules/coloraxis.js.map +1 -1
- package/modules/coloraxis.src.js +37 -11
- package/modules/current-date-indicator.js +5 -4
- package/modules/current-date-indicator.js.map +1 -1
- package/modules/current-date-indicator.src.js +12 -3
- package/modules/cylinder.js +11 -11
- package/modules/cylinder.js.map +1 -1
- package/modules/cylinder.src.js +11 -2
- package/modules/data.d.ts +12 -12
- package/modules/data.js +33 -33
- package/modules/data.js.map +1 -1
- package/modules/data.src.d.ts +12 -12
- package/modules/data.src.js +906 -846
- package/modules/datagrouping.js +21 -20
- package/modules/datagrouping.js.map +1 -1
- package/modules/datagrouping.src.js +19 -5
- package/modules/debugger.js +8 -7
- package/modules/debugger.js.map +1 -1
- package/modules/debugger.src.js +15 -2
- package/modules/dependency-wheel.js +12 -11
- package/modules/dependency-wheel.js.map +1 -1
- package/modules/dependency-wheel.src.js +14 -5
- package/modules/dotplot.js +6 -6
- package/modules/dotplot.js.map +1 -1
- package/modules/dotplot.src.js +11 -2
- package/modules/drag-panes.js +10 -10
- package/modules/drag-panes.js.map +1 -1
- package/modules/drag-panes.src.js +12 -3
- package/modules/draggable-points.js +35 -34
- package/modules/draggable-points.js.map +1 -1
- package/modules/draggable-points.src.js +20 -9
- package/modules/drilldown.d.ts +19 -0
- package/modules/drilldown.js +37 -25
- package/modules/drilldown.js.map +1 -1
- package/modules/drilldown.src.d.ts +19 -0
- package/modules/drilldown.src.js +1124 -108
- package/modules/dumbbell.d.ts +4 -0
- package/modules/dumbbell.js +17 -17
- package/modules/dumbbell.js.map +1 -1
- package/modules/dumbbell.src.d.ts +4 -0
- package/modules/dumbbell.src.js +34 -13
- package/modules/export-data.js +24 -21
- package/modules/export-data.js.map +1 -1
- package/modules/export-data.src.js +87 -14
- package/modules/exporting.d.ts +8 -8
- package/modules/exporting.js +39 -39
- package/modules/exporting.js.map +1 -1
- package/modules/exporting.src.d.ts +8 -8
- package/modules/exporting.src.js +270 -135
- package/modules/full-screen.js +8 -7
- package/modules/full-screen.js.map +1 -1
- package/modules/full-screen.src.js +135 -58
- package/modules/funnel.js +12 -12
- package/modules/funnel.js.map +1 -1
- package/modules/funnel.src.js +13 -4
- package/modules/funnel3d.js +21 -21
- package/modules/funnel3d.js.map +1 -1
- package/modules/funnel3d.src.js +11 -2
- package/modules/gantt.js +218 -217
- package/modules/gantt.js.map +1 -1
- package/modules/gantt.src.js +983 -943
- package/modules/grid-axis.js +23 -23
- package/modules/grid-axis.js.map +1 -1
- package/modules/grid-axis.src.js +900 -890
- package/modules/heatmap.js +40 -39
- package/modules/heatmap.js.map +1 -1
- package/modules/heatmap.src.js +160 -113
- package/modules/heikinashi.js +8 -8
- package/modules/heikinashi.js.map +1 -1
- package/modules/heikinashi.src.js +11 -2
- package/modules/histogram-bellcurve.js +13 -13
- package/modules/histogram-bellcurve.js.map +1 -1
- package/modules/histogram-bellcurve.src.js +11 -2
- package/modules/hollowcandlestick.js +9 -9
- package/modules/hollowcandlestick.js.map +1 -1
- package/modules/hollowcandlestick.src.js +19 -10
- package/modules/item-series.js +12 -12
- package/modules/item-series.js.map +1 -1
- package/modules/item-series.src.js +11 -2
- package/modules/lollipop.js +7 -7
- package/modules/lollipop.js.map +1 -1
- package/modules/lollipop.src.js +12 -3
- package/modules/map.d.ts +80 -43
- package/modules/map.js +171 -144
- package/modules/map.js.map +1 -1
- package/modules/map.src.d.ts +80 -43
- package/modules/map.src.js +8292 -6822
- package/modules/marker-clusters.js +36 -36
- package/modules/marker-clusters.js.map +1 -1
- package/modules/marker-clusters.src.js +48 -28
- package/modules/networkgraph.d.ts +1 -12
- package/modules/networkgraph.js +46 -45
- package/modules/networkgraph.js.map +1 -1
- package/modules/networkgraph.src.d.ts +1 -12
- package/modules/networkgraph.src.js +127 -55
- package/modules/no-data-to-display.js +5 -5
- package/modules/no-data-to-display.js.map +1 -1
- package/modules/no-data-to-display.src.js +12 -3
- package/modules/offline-exporting.js +20 -18
- package/modules/offline-exporting.js.map +1 -1
- package/modules/offline-exporting.src.js +129 -28
- package/modules/oldie-polyfills.js +7 -7
- package/modules/oldie-polyfills.js.map +1 -1
- package/modules/oldie-polyfills.src.js +11 -2
- package/modules/oldie.js +30 -30
- package/modules/oldie.js.map +1 -1
- package/modules/oldie.src.js +13 -4
- package/modules/organization.js +16 -14
- package/modules/organization.js.map +1 -1
- package/modules/organization.src.js +168 -34
- package/modules/overlapping-datalabels.js +3 -2
- package/modules/overlapping-datalabels.js.map +1 -1
- package/modules/overlapping-datalabels.src.js +11 -2
- package/modules/parallel-coordinates.js +11 -11
- package/modules/parallel-coordinates.js.map +1 -1
- package/modules/parallel-coordinates.src.js +12 -3
- package/modules/pareto.js +7 -7
- package/modules/pareto.js.map +1 -1
- package/modules/pareto.src.js +11 -2
- package/modules/pathfinder.js +31 -31
- package/modules/pathfinder.js.map +1 -1
- package/modules/pathfinder.src.js +11 -2
- package/modules/pattern-fill.js +15 -14
- package/modules/pattern-fill.js.map +1 -1
- package/modules/pattern-fill.src.js +25 -3
- package/modules/price-indicator.js +5 -5
- package/modules/price-indicator.js.map +1 -1
- package/modules/price-indicator.src.js +11 -2
- package/modules/pyramid3d.js +4 -4
- package/modules/pyramid3d.js.map +1 -1
- package/modules/pyramid3d.src.js +11 -2
- package/modules/sankey.d.ts +1 -12
- package/modules/sankey.js +32 -29
- package/modules/sankey.js.map +1 -1
- package/modules/sankey.src.d.ts +1 -12
- package/modules/sankey.src.js +422 -207
- package/modules/series-label.js +18 -17
- package/modules/series-label.js.map +1 -1
- package/modules/series-label.src.js +482 -386
- package/modules/series-on-point.js +18 -0
- package/modules/series-on-point.js.map +1 -0
- package/modules/series-on-point.src.js +464 -0
- package/modules/solid-gauge.js +10 -10
- package/modules/solid-gauge.js.map +1 -1
- package/modules/solid-gauge.src.js +15 -6
- package/modules/sonification.js +59 -59
- package/modules/sonification.js.map +1 -1
- package/modules/sonification.src.js +13 -8
- package/modules/static-scale.js +5 -4
- package/modules/static-scale.js.map +1 -1
- package/modules/static-scale.src.js +11 -2
- package/modules/stock-tools.js +167 -167
- package/modules/stock-tools.js.map +1 -1
- package/modules/stock-tools.src.js +118 -67
- package/modules/stock.js +205 -204
- package/modules/stock.js.map +1 -1
- package/modules/stock.src.js +141 -76
- package/modules/streamgraph.js +5 -4
- package/modules/streamgraph.js.map +1 -1
- package/modules/streamgraph.src.js +11 -2
- package/modules/sunburst.d.ts +3 -0
- package/modules/sunburst.js +73 -60
- package/modules/sunburst.js.map +1 -1
- package/modules/sunburst.src.d.ts +3 -0
- package/modules/sunburst.src.js +1391 -406
- package/modules/tilemap.js +17 -17
- package/modules/tilemap.js.map +1 -1
- package/modules/tilemap.src.js +11 -2
- package/modules/timeline.js +18 -18
- package/modules/timeline.js.map +1 -1
- package/modules/timeline.src.js +14 -5
- package/modules/treegrid.js +57 -56
- package/modules/treegrid.js.map +1 -1
- package/modules/treegrid.src.js +913 -892
- package/modules/treemap.d.ts +3 -0
- package/modules/treemap.js +54 -41
- package/modules/treemap.js.map +1 -1
- package/modules/treemap.src.d.ts +3 -0
- package/modules/treemap.src.js +1229 -255
- package/modules/variable-pie.js +9 -9
- package/modules/variable-pie.js.map +1 -1
- package/modules/variable-pie.src.js +11 -2
- package/modules/variwide.js +12 -12
- package/modules/variwide.js.map +1 -1
- package/modules/variwide.src.js +11 -2
- package/modules/vector.js +8 -7
- package/modules/vector.js.map +1 -1
- package/modules/vector.src.js +11 -2
- package/modules/venn.js +31 -31
- package/modules/venn.js.map +1 -1
- package/modules/venn.src.js +88 -105
- package/modules/windbarb.js +15 -15
- package/modules/windbarb.js.map +1 -1
- package/modules/windbarb.src.js +11 -2
- package/modules/wordcloud.js +23 -23
- package/modules/wordcloud.js.map +1 -1
- package/modules/wordcloud.src.js +92 -109
- package/modules/xrange.js +16 -16
- package/modules/xrange.js.map +1 -1
- package/modules/xrange.src.js +11 -2
- package/package.json +1 -1
- package/themes/avocado.js +4 -3
- package/themes/avocado.js.map +1 -1
- package/themes/avocado.src.js +11 -2
- package/themes/brand-dark.js +9 -8
- package/themes/brand-dark.js.map +1 -1
- package/themes/brand-dark.src.js +11 -2
- package/themes/brand-light.js +8 -8
- package/themes/brand-light.js.map +1 -1
- package/themes/brand-light.src.js +11 -2
- package/themes/dark-blue.js +9 -8
- package/themes/dark-blue.js.map +1 -1
- package/themes/dark-blue.src.js +11 -2
- package/themes/dark-green.js +9 -8
- package/themes/dark-green.js.map +1 -1
- package/themes/dark-green.src.js +11 -2
- package/themes/dark-unica.js +8 -7
- package/themes/dark-unica.js.map +1 -1
- package/themes/dark-unica.src.js +11 -2
- package/themes/gray.js +9 -8
- package/themes/gray.js.map +1 -1
- package/themes/gray.src.js +11 -2
- package/themes/grid-light.js +5 -4
- package/themes/grid-light.js.map +1 -1
- package/themes/grid-light.src.js +11 -2
- package/themes/grid.js +5 -5
- package/themes/grid.js.map +1 -1
- package/themes/grid.src.js +11 -2
- package/themes/high-contrast-dark.js +7 -7
- package/themes/high-contrast-dark.js.map +1 -1
- package/themes/high-contrast-dark.src.js +21 -12
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.js.map +1 -1
- package/themes/high-contrast-light.src.js +21 -12
- package/themes/sand-signika.js +5 -5
- package/themes/sand-signika.js.map +1 -1
- package/themes/sand-signika.src.js +11 -2
- package/themes/skies.js +5 -5
- package/themes/skies.js.map +1 -1
- package/themes/skies.src.js +11 -2
- package/themes/sunset.js +3 -3
- package/themes/sunset.js.map +1 -1
- package/themes/sunset.src.js +11 -2
- package/es-modules/Extensions/Polar.js +0 -740
- package/es-modules/Maps/ProjectionDefinition.js +0 -9
- package/es-modules/Series/ColorMapMixin.js +0 -84
- package/es-modules/Series/DrawPointComposition.js +0 -111
package/modules/sunburst.src.js
CHANGED
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Highcharts JS
|
|
2
|
+
* @license Highcharts JS v10.2.0 (2022-07-05)
|
|
3
3
|
*
|
|
4
4
|
* (c) 2016-2021 Highsoft AS
|
|
5
5
|
* Authors: Jon Arild Nygard
|
|
6
6
|
*
|
|
7
7
|
* License: www.highcharts.com/license
|
|
8
8
|
*/
|
|
9
|
-
'use strict';
|
|
10
9
|
(function (factory) {
|
|
11
10
|
if (typeof module === 'object' && module.exports) {
|
|
12
11
|
factory['default'] = factory;
|
|
@@ -21,13 +20,23 @@
|
|
|
21
20
|
factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
|
|
22
21
|
}
|
|
23
22
|
}(function (Highcharts) {
|
|
23
|
+
'use strict';
|
|
24
24
|
var _modules = Highcharts ? Highcharts._modules : {};
|
|
25
25
|
function _registerModule(obj, path, args, fn) {
|
|
26
26
|
if (!obj.hasOwnProperty(path)) {
|
|
27
27
|
obj[path] = fn.apply(null, args);
|
|
28
|
+
|
|
29
|
+
if (typeof CustomEvent === 'function') {
|
|
30
|
+
window.dispatchEvent(
|
|
31
|
+
new CustomEvent(
|
|
32
|
+
'HighchartsModuleLoaded',
|
|
33
|
+
{ detail: { path: path, module: obj[path] }
|
|
34
|
+
})
|
|
35
|
+
);
|
|
36
|
+
}
|
|
28
37
|
}
|
|
29
38
|
}
|
|
30
|
-
_registerModule(_modules, 'Series/
|
|
39
|
+
_registerModule(_modules, 'Series/ColorMapComposition.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {
|
|
31
40
|
/* *
|
|
32
41
|
*
|
|
33
42
|
* (c) 2010-2021 Torstein Honsi
|
|
@@ -37,66 +46,92 @@
|
|
|
37
46
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
38
47
|
*
|
|
39
48
|
* */
|
|
40
|
-
|
|
41
|
-
var
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
addEvent = U.addEvent;
|
|
45
|
-
// Move points to the top of the z-index order when hovered
|
|
46
|
-
addEvent(Point, 'afterSetState', function (e) {
|
|
47
|
-
var point = this;
|
|
48
|
-
if (point.moveToTopOnHover && point.graphic) {
|
|
49
|
-
point.graphic.attr({
|
|
50
|
-
zIndex: e && e.state === 'hover' ? 1 : 0
|
|
51
|
-
});
|
|
52
|
-
}
|
|
53
|
-
});
|
|
54
|
-
/**
|
|
55
|
-
* Mixin for maps and heatmaps
|
|
49
|
+
var columnProto = SeriesRegistry.seriesTypes.column.prototype;
|
|
50
|
+
var addEvent = U.addEvent,
|
|
51
|
+
defined = U.defined;
|
|
52
|
+
/* *
|
|
56
53
|
*
|
|
57
|
-
*
|
|
58
|
-
*
|
|
59
|
-
*/
|
|
60
|
-
var
|
|
54
|
+
* Composition
|
|
55
|
+
*
|
|
56
|
+
* */
|
|
57
|
+
var ColorMapComposition;
|
|
58
|
+
(function (ColorMapComposition) {
|
|
59
|
+
/* *
|
|
60
|
+
*
|
|
61
|
+
* Declarations
|
|
62
|
+
*
|
|
63
|
+
* */
|
|
64
|
+
/* *
|
|
65
|
+
*
|
|
66
|
+
* Constants
|
|
67
|
+
*
|
|
68
|
+
* */
|
|
69
|
+
var composedClasses = [];
|
|
70
|
+
ColorMapComposition.pointMembers = {
|
|
61
71
|
dataLabelOnNull: true,
|
|
62
72
|
moveToTopOnHover: true,
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
* @private
|
|
68
|
-
*/
|
|
69
|
-
isValid: function () {
|
|
70
|
-
// undefined is allowed
|
|
71
|
-
return (this.value !== null &&
|
|
72
|
-
this.value !== Infinity &&
|
|
73
|
-
this.value !== -Infinity);
|
|
74
|
-
}
|
|
75
|
-
/* eslint-enable valid-jsdoc */
|
|
76
|
-
};
|
|
77
|
-
/**
|
|
78
|
-
* @private
|
|
79
|
-
* @mixin Highcharts.colorMapSeriesMixin
|
|
80
|
-
*/
|
|
81
|
-
var SeriesMixin = {
|
|
82
|
-
pointArrayMap: ['value'],
|
|
73
|
+
isValid: pointIsValid
|
|
74
|
+
};
|
|
75
|
+
ColorMapComposition.seriesMembers = {
|
|
76
|
+
colorKey: 'value',
|
|
83
77
|
axisTypes: ['xAxis', 'yAxis', 'colorAxis'],
|
|
84
|
-
trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
|
|
85
|
-
getSymbol: noop,
|
|
86
78
|
parallelArrays: ['x', 'y', 'value'],
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
79
|
+
pointArrayMap: ['value'],
|
|
80
|
+
trackerGroups: ['group', 'markerGroup', 'dataLabelsGroup'],
|
|
81
|
+
colorAttribs: seriesColorAttribs,
|
|
82
|
+
pointAttribs: columnProto.pointAttribs
|
|
83
|
+
};
|
|
84
|
+
/* *
|
|
85
|
+
*
|
|
86
|
+
* Functions
|
|
87
|
+
*
|
|
88
|
+
* */
|
|
89
|
+
/**
|
|
90
|
+
* @private
|
|
91
|
+
*/
|
|
92
|
+
function compose(SeriesClass) {
|
|
93
|
+
var PointClass = SeriesClass.prototype.pointClass;
|
|
94
|
+
if (composedClasses.indexOf(PointClass) === -1) {
|
|
95
|
+
composedClasses.push(PointClass);
|
|
96
|
+
addEvent(PointClass, 'afterSetState', onPointAfterSetState);
|
|
97
|
+
}
|
|
98
|
+
return SeriesClass;
|
|
99
|
+
}
|
|
100
|
+
ColorMapComposition.compose = compose;
|
|
101
|
+
/**
|
|
102
|
+
* Move points to the top of the z-index order when hovered.
|
|
103
|
+
* @private
|
|
104
|
+
*/
|
|
105
|
+
function onPointAfterSetState(e) {
|
|
106
|
+
var point = this;
|
|
107
|
+
if (point.moveToTopOnHover && point.graphic) {
|
|
108
|
+
point.graphic.attr({
|
|
109
|
+
zIndex: e && e.state === 'hover' ? 1 : 0
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Color points have a value option that determines whether or not it is
|
|
115
|
+
* a null point
|
|
116
|
+
* @private
|
|
117
|
+
*/
|
|
118
|
+
function pointIsValid() {
|
|
119
|
+
return (this.value !== null &&
|
|
120
|
+
this.value !== Infinity &&
|
|
121
|
+
this.value !== -Infinity &&
|
|
122
|
+
// undefined is allowed, but NaN is not (#17279)
|
|
123
|
+
(this.value === void 0 || !isNaN(this.value)));
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get the color attibutes to apply on the graphic
|
|
127
|
+
* @private
|
|
128
|
+
* @function Highcharts.colorMapSeriesMixin.colorAttribs
|
|
129
|
+
* @param {Highcharts.Point} point
|
|
130
|
+
* @return {Highcharts.SVGAttributes}
|
|
131
|
+
* The SVG attributes
|
|
132
|
+
*/
|
|
133
|
+
function seriesColorAttribs(point) {
|
|
134
|
+
var ret = {};
|
|
100
135
|
if (defined(point.color) &&
|
|
101
136
|
(!point.state || point.state === 'normal') // #15746
|
|
102
137
|
) {
|
|
@@ -104,13 +139,14 @@
|
|
|
104
139
|
}
|
|
105
140
|
return ret;
|
|
106
141
|
}
|
|
107
|
-
};
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
142
|
+
})(ColorMapComposition || (ColorMapComposition = {}));
|
|
143
|
+
/* *
|
|
144
|
+
*
|
|
145
|
+
* Default Export
|
|
146
|
+
*
|
|
147
|
+
* */
|
|
112
148
|
|
|
113
|
-
return
|
|
149
|
+
return ColorMapComposition;
|
|
114
150
|
});
|
|
115
151
|
_registerModule(_modules, 'Series/Treemap/TreemapAlgorithmGroup.js', [], function () {
|
|
116
152
|
/* *
|
|
@@ -207,123 +243,98 @@
|
|
|
207
243
|
|
|
208
244
|
return TreemapAlgorithmGroup;
|
|
209
245
|
});
|
|
210
|
-
_registerModule(_modules, 'Series/
|
|
246
|
+
_registerModule(_modules, 'Series/DrawPointUtilities.js', [_modules['Core/Utilities.js']], function (U) {
|
|
211
247
|
/* *
|
|
212
248
|
*
|
|
213
249
|
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
214
250
|
*
|
|
215
251
|
* */
|
|
252
|
+
var isNumber = U.isNumber;
|
|
216
253
|
/* *
|
|
217
254
|
*
|
|
218
|
-
*
|
|
255
|
+
* Functions
|
|
219
256
|
*
|
|
220
257
|
* */
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
258
|
+
/**
|
|
259
|
+
* Handles the drawing of a component.
|
|
260
|
+
* Can be used for any type of component that reserves the graphic property,
|
|
261
|
+
* and provides a shouldDraw on its context.
|
|
262
|
+
*
|
|
263
|
+
* @private
|
|
264
|
+
*
|
|
265
|
+
* @todo add type checking.
|
|
266
|
+
* @todo export this function to enable usage
|
|
267
|
+
*/
|
|
268
|
+
function draw(point, params) {
|
|
269
|
+
var animatableAttribs = params.animatableAttribs,
|
|
270
|
+
onComplete = params.onComplete,
|
|
271
|
+
css = params.css,
|
|
272
|
+
renderer = params.renderer;
|
|
273
|
+
var animation = (point.series && point.series.chart.hasRendered) ?
|
|
274
|
+
// Chart-level animation on updates
|
|
275
|
+
void 0 :
|
|
276
|
+
// Series-level animation on new points
|
|
277
|
+
(point.series &&
|
|
278
|
+
point.series.options.animation);
|
|
279
|
+
var graphic = point.graphic;
|
|
280
|
+
params.attribs = params.attribs || {};
|
|
281
|
+
// Assigning class in dot notation does go well in IE8
|
|
282
|
+
// eslint-disable-next-line dot-notation
|
|
283
|
+
params.attribs['class'] = point.getClassName();
|
|
284
|
+
if (shouldDraw(point)) {
|
|
285
|
+
if (!graphic) {
|
|
286
|
+
point.graphic = graphic = params.shapeType === 'text' ?
|
|
287
|
+
renderer.text() :
|
|
288
|
+
renderer[params.shapeType](params.shapeArgs || {});
|
|
289
|
+
graphic.add(params.group);
|
|
290
|
+
}
|
|
291
|
+
if (css) {
|
|
292
|
+
graphic.css(css);
|
|
251
293
|
}
|
|
252
|
-
|
|
294
|
+
graphic
|
|
295
|
+
.attr(params.attribs)
|
|
296
|
+
.animate(animatableAttribs, params.isNew ? false : animation, onComplete);
|
|
253
297
|
}
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
*
|
|
260
|
-
* @private
|
|
261
|
-
*
|
|
262
|
-
* @todo add type checking.
|
|
263
|
-
* @todo export this function to enable usage
|
|
264
|
-
*/
|
|
265
|
-
function draw(params) {
|
|
266
|
-
var _this = this;
|
|
267
|
-
var animatableAttribs = params.animatableAttribs,
|
|
268
|
-
onComplete = params.onComplete,
|
|
269
|
-
css = params.css,
|
|
270
|
-
renderer = params.renderer;
|
|
271
|
-
var animation = (this.series && this.series.chart.hasRendered) ?
|
|
272
|
-
// Chart-level animation on updates
|
|
273
|
-
void 0 :
|
|
274
|
-
// Series-level animation on new points
|
|
275
|
-
(this.series &&
|
|
276
|
-
this.series.options.animation);
|
|
277
|
-
var graphic = this.graphic;
|
|
278
|
-
params.attribs = params.attribs || {};
|
|
279
|
-
// Assigning class in dot notation does go well in IE8
|
|
280
|
-
// eslint-disable-next-line dot-notation
|
|
281
|
-
params.attribs['class'] = this.getClassName();
|
|
282
|
-
if (this.shouldDraw()) {
|
|
283
|
-
if (!graphic) {
|
|
284
|
-
this.graphic = graphic =
|
|
285
|
-
renderer[params.shapeType](params.shapeArgs)
|
|
286
|
-
.add(params.group);
|
|
287
|
-
}
|
|
288
|
-
graphic
|
|
289
|
-
.css(css)
|
|
290
|
-
.attr(params.attribs)
|
|
291
|
-
.animate(animatableAttribs, params.isNew ? false : animation, onComplete);
|
|
292
|
-
}
|
|
293
|
-
else if (graphic) {
|
|
294
|
-
var destroy_1 = function () {
|
|
295
|
-
_this.graphic = graphic = (graphic && graphic.destroy());
|
|
296
|
-
if (typeof onComplete === 'function') {
|
|
297
|
-
onComplete();
|
|
298
|
-
}
|
|
299
|
-
};
|
|
300
|
-
// animate only runs complete callback if something was animated.
|
|
301
|
-
if (Object.keys(animatableAttribs).length) {
|
|
302
|
-
graphic.animate(animatableAttribs, void 0, function () {
|
|
303
|
-
destroy_1();
|
|
304
|
-
});
|
|
305
|
-
}
|
|
306
|
-
else {
|
|
307
|
-
destroy_1();
|
|
298
|
+
else if (graphic) {
|
|
299
|
+
var destroy_1 = function () {
|
|
300
|
+
point.graphic = graphic = (graphic && graphic.destroy());
|
|
301
|
+
if (typeof onComplete === 'function') {
|
|
302
|
+
onComplete();
|
|
308
303
|
}
|
|
304
|
+
};
|
|
305
|
+
// animate only runs complete callback if something was animated.
|
|
306
|
+
if (Object.keys(animatableAttribs).length) {
|
|
307
|
+
graphic.animate(animatableAttribs, void 0, function () { return destroy_1(); });
|
|
308
|
+
}
|
|
309
|
+
else {
|
|
310
|
+
destroy_1();
|
|
309
311
|
}
|
|
310
312
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
313
|
+
}
|
|
314
|
+
/**
|
|
315
|
+
* @private
|
|
316
|
+
*/
|
|
317
|
+
function shouldDraw(point) {
|
|
318
|
+
switch (point.series && point.series.type) {
|
|
319
|
+
case 'treemap':
|
|
320
|
+
return isNumber(point.plotY) && point.y !== null;
|
|
321
|
+
default:
|
|
322
|
+
return !point.isNull;
|
|
316
323
|
}
|
|
317
|
-
}
|
|
324
|
+
}
|
|
318
325
|
/* *
|
|
319
326
|
*
|
|
320
327
|
* Default Export
|
|
321
328
|
*
|
|
322
329
|
* */
|
|
330
|
+
var DrawPointUtilities = {
|
|
331
|
+
draw: draw,
|
|
332
|
+
shouldDraw: shouldDraw
|
|
333
|
+
};
|
|
323
334
|
|
|
324
|
-
return
|
|
335
|
+
return DrawPointUtilities;
|
|
325
336
|
});
|
|
326
|
-
_registerModule(_modules, 'Series/Treemap/TreemapPoint.js', [_modules['Series/
|
|
337
|
+
_registerModule(_modules, 'Series/Treemap/TreemapPoint.js', [_modules['Series/DrawPointUtilities.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (DPU, SeriesRegistry, U) {
|
|
327
338
|
/* *
|
|
328
339
|
*
|
|
329
340
|
* (c) 2014-2021 Highsoft AS
|
|
@@ -387,6 +398,9 @@
|
|
|
387
398
|
*
|
|
388
399
|
* */
|
|
389
400
|
/* eslint-disable valid-jsdoc */
|
|
401
|
+
TreemapPoint.prototype.draw = function (params) {
|
|
402
|
+
DPU.draw(this, params);
|
|
403
|
+
};
|
|
390
404
|
TreemapPoint.prototype.getClassName = function () {
|
|
391
405
|
var className = Point.prototype.getClassName.call(this),
|
|
392
406
|
series = this.series,
|
|
@@ -424,14 +438,13 @@
|
|
|
424
438
|
}
|
|
425
439
|
};
|
|
426
440
|
TreemapPoint.prototype.shouldDraw = function () {
|
|
427
|
-
return
|
|
441
|
+
return DPU.shouldDraw(this);
|
|
428
442
|
};
|
|
429
443
|
return TreemapPoint;
|
|
430
444
|
}(ScatterPoint));
|
|
431
445
|
extend(TreemapPoint.prototype, {
|
|
432
446
|
setVisible: PiePoint.prototype.setVisible
|
|
433
447
|
});
|
|
434
|
-
DrawPointComposition.compose(TreemapPoint);
|
|
435
448
|
/* *
|
|
436
449
|
*
|
|
437
450
|
* Default Export
|
|
@@ -573,168 +586,1124 @@
|
|
|
573
586
|
chartOptionsChart.colorCount);
|
|
574
587
|
colorByPoint = colors && colors[colorIndexByPoint];
|
|
575
588
|
}
|
|
576
|
-
// Select either point color, level color or inherited color.
|
|
577
|
-
if (!series.chart.styledMode) {
|
|
578
|
-
color = pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);
|
|
589
|
+
// Select either point color, level color or inherited color.
|
|
590
|
+
if (!series.chart.styledMode) {
|
|
591
|
+
color = pick(point && point.options.color, level && level.color, colorByPoint, parentColor && variateColor(parentColor), series.color);
|
|
592
|
+
}
|
|
593
|
+
colorIndex = pick(point && point.options.colorIndex, level && level.colorIndex, colorIndexByPoint, parentColorIndex, options.colorIndex);
|
|
594
|
+
}
|
|
595
|
+
return {
|
|
596
|
+
color: color,
|
|
597
|
+
colorIndex: colorIndex
|
|
598
|
+
};
|
|
599
|
+
}
|
|
600
|
+
/**
|
|
601
|
+
* Creates a map from level number to its given options.
|
|
602
|
+
*
|
|
603
|
+
* @private
|
|
604
|
+
*
|
|
605
|
+
* @param {Object} params
|
|
606
|
+
* Object containing parameters.
|
|
607
|
+
* - `defaults` Object containing default options. The default options are
|
|
608
|
+
* merged with the userOptions to get the final options for a specific
|
|
609
|
+
* level.
|
|
610
|
+
* - `from` The lowest level number.
|
|
611
|
+
* - `levels` User options from series.levels.
|
|
612
|
+
* - `to` The highest level number.
|
|
613
|
+
*
|
|
614
|
+
* @return {Highcharts.Dictionary<object>|null}
|
|
615
|
+
* Returns a map from level number to its given options.
|
|
616
|
+
*/
|
|
617
|
+
function getLevelOptions(params) {
|
|
618
|
+
var result = null,
|
|
619
|
+
defaults,
|
|
620
|
+
converted,
|
|
621
|
+
i,
|
|
622
|
+
from,
|
|
623
|
+
to,
|
|
624
|
+
levels;
|
|
625
|
+
if (isObject(params)) {
|
|
626
|
+
result = {};
|
|
627
|
+
from = isNumber(params.from) ? params.from : 1;
|
|
628
|
+
levels = params.levels;
|
|
629
|
+
converted = {};
|
|
630
|
+
defaults = isObject(params.defaults) ? params.defaults : {};
|
|
631
|
+
if (isArray(levels)) {
|
|
632
|
+
converted = levels.reduce(function (obj, item) {
|
|
633
|
+
var level,
|
|
634
|
+
levelIsConstant,
|
|
635
|
+
options;
|
|
636
|
+
if (isObject(item) && isNumber(item.level)) {
|
|
637
|
+
options = merge({}, item);
|
|
638
|
+
levelIsConstant = pick(options.levelIsConstant, defaults.levelIsConstant);
|
|
639
|
+
// Delete redundant properties.
|
|
640
|
+
delete options.levelIsConstant;
|
|
641
|
+
delete options.level;
|
|
642
|
+
// Calculate which level these options apply to.
|
|
643
|
+
level = item.level + (levelIsConstant ? 0 : from - 1);
|
|
644
|
+
if (isObject(obj[level])) {
|
|
645
|
+
merge(true, obj[level], options); // #16329
|
|
646
|
+
}
|
|
647
|
+
else {
|
|
648
|
+
obj[level] = options;
|
|
649
|
+
}
|
|
650
|
+
}
|
|
651
|
+
return obj;
|
|
652
|
+
}, {});
|
|
653
|
+
}
|
|
654
|
+
to = isNumber(params.to) ? params.to : 1;
|
|
655
|
+
for (i = 0; i <= to; i++) {
|
|
656
|
+
result[i] = merge({}, defaults, isObject(converted[i]) ? converted[i] : {});
|
|
657
|
+
}
|
|
658
|
+
}
|
|
659
|
+
return result;
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* @private
|
|
663
|
+
* @todo Combine buildTree and buildNode with setTreeValues
|
|
664
|
+
* @todo Remove logic from Treemap and make it utilize this mixin.
|
|
665
|
+
*/
|
|
666
|
+
function setTreeValues(tree, options) {
|
|
667
|
+
var before = options.before,
|
|
668
|
+
idRoot = options.idRoot,
|
|
669
|
+
mapIdToNode = options.mapIdToNode,
|
|
670
|
+
nodeRoot = mapIdToNode[idRoot],
|
|
671
|
+
levelIsConstant = (options.levelIsConstant !== false),
|
|
672
|
+
points = options.points,
|
|
673
|
+
point = points[tree.i],
|
|
674
|
+
optionsPoint = point && point.options || {},
|
|
675
|
+
children = [];
|
|
676
|
+
var childrenTotal = 0;
|
|
677
|
+
tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);
|
|
678
|
+
tree.name = pick(point && point.name, '');
|
|
679
|
+
tree.visible = (idRoot === tree.id ||
|
|
680
|
+
options.visible === true);
|
|
681
|
+
if (typeof before === 'function') {
|
|
682
|
+
tree = before(tree, options);
|
|
683
|
+
}
|
|
684
|
+
// First give the children some values
|
|
685
|
+
tree.children.forEach(function (child, i) {
|
|
686
|
+
var newOptions = extend({},
|
|
687
|
+
options);
|
|
688
|
+
extend(newOptions, {
|
|
689
|
+
index: i,
|
|
690
|
+
siblings: tree.children.length,
|
|
691
|
+
visible: tree.visible
|
|
692
|
+
});
|
|
693
|
+
child = setTreeValues(child, newOptions);
|
|
694
|
+
children.push(child);
|
|
695
|
+
if (child.visible) {
|
|
696
|
+
childrenTotal += child.val;
|
|
697
|
+
}
|
|
698
|
+
});
|
|
699
|
+
// Set the values
|
|
700
|
+
var value = pick(optionsPoint.value,
|
|
701
|
+
childrenTotal);
|
|
702
|
+
tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);
|
|
703
|
+
tree.children = children;
|
|
704
|
+
tree.childrenTotal = childrenTotal;
|
|
705
|
+
tree.isLeaf = tree.visible && !childrenTotal;
|
|
706
|
+
tree.val = value;
|
|
707
|
+
return tree;
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* Update the rootId property on the series. Also makes sure that it is
|
|
711
|
+
* accessible to exporting.
|
|
712
|
+
*
|
|
713
|
+
* @private
|
|
714
|
+
*
|
|
715
|
+
* @param {Object} series
|
|
716
|
+
* The series to operate on.
|
|
717
|
+
*
|
|
718
|
+
* @return {string}
|
|
719
|
+
* Returns the resulting rootId after update.
|
|
720
|
+
*/
|
|
721
|
+
function updateRootId(series) {
|
|
722
|
+
var rootId,
|
|
723
|
+
options;
|
|
724
|
+
if (isObject(series)) {
|
|
725
|
+
// Get the series options.
|
|
726
|
+
options = isObject(series.options) ? series.options : {};
|
|
727
|
+
// Calculate the rootId.
|
|
728
|
+
rootId = pick(series.rootNode, options.rootId, '');
|
|
729
|
+
// Set rootId on series.userOptions to pick it up in exporting.
|
|
730
|
+
if (isObject(series.userOptions)) {
|
|
731
|
+
series.userOptions.rootId = rootId;
|
|
732
|
+
}
|
|
733
|
+
// Set rootId on series to pick it up on next update.
|
|
734
|
+
series.rootNode = rootId;
|
|
735
|
+
}
|
|
736
|
+
return rootId;
|
|
737
|
+
}
|
|
738
|
+
/* *
|
|
739
|
+
*
|
|
740
|
+
* Default Export
|
|
741
|
+
*
|
|
742
|
+
* */
|
|
743
|
+
var TreeUtilities = {
|
|
744
|
+
getColor: getColor,
|
|
745
|
+
getLevelOptions: getLevelOptions,
|
|
746
|
+
setTreeValues: setTreeValues,
|
|
747
|
+
updateRootId: updateRootId
|
|
748
|
+
};
|
|
749
|
+
|
|
750
|
+
return TreeUtilities;
|
|
751
|
+
});
|
|
752
|
+
_registerModule(_modules, 'Extensions/Breadcrumbs.js', [_modules['Core/Chart/Chart.js'], _modules['Core/Globals.js'], _modules['Core/DefaultOptions.js'], _modules['Core/Utilities.js'], _modules['Core/FormatUtilities.js']], function (Chart, H, D, U, F) {
|
|
753
|
+
/* *
|
|
754
|
+
*
|
|
755
|
+
* Highcharts Breadcrumbs module
|
|
756
|
+
*
|
|
757
|
+
* Authors: Grzegorz Blachlinski, Karol Kolodziej
|
|
758
|
+
*
|
|
759
|
+
* License: www.highcharts.com/license
|
|
760
|
+
*
|
|
761
|
+
* !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
|
|
762
|
+
*
|
|
763
|
+
* */
|
|
764
|
+
var defaultOptions = D.defaultOptions;
|
|
765
|
+
var format = F.format;
|
|
766
|
+
var addEvent = U.addEvent,
|
|
767
|
+
objectEach = U.objectEach,
|
|
768
|
+
extend = U.extend,
|
|
769
|
+
fireEvent = U.fireEvent,
|
|
770
|
+
merge = U.merge,
|
|
771
|
+
pick = U.pick,
|
|
772
|
+
defined = U.defined,
|
|
773
|
+
isString = U.isString;
|
|
774
|
+
// Add language support.
|
|
775
|
+
extend(defaultOptions.lang,
|
|
776
|
+
/**
|
|
777
|
+
* @optionparent lang
|
|
778
|
+
*/
|
|
779
|
+
{
|
|
780
|
+
/**
|
|
781
|
+
* @since 10.0.0
|
|
782
|
+
* @product highcharts
|
|
783
|
+
*/
|
|
784
|
+
mainBreadcrumb: 'Main'
|
|
785
|
+
});
|
|
786
|
+
/**
|
|
787
|
+
* The Breadcrumbs class
|
|
788
|
+
*
|
|
789
|
+
* @private
|
|
790
|
+
* @class
|
|
791
|
+
* @name Highcharts.Breadcrumbs
|
|
792
|
+
*
|
|
793
|
+
* @param {Highcharts.Chart} chart
|
|
794
|
+
* Chart object
|
|
795
|
+
* @param {Highcharts.Options} userOptions
|
|
796
|
+
* User options
|
|
797
|
+
*/
|
|
798
|
+
var Breadcrumbs = /** @class */ (function () {
|
|
799
|
+
function Breadcrumbs(chart, userOptions) {
|
|
800
|
+
/* *
|
|
801
|
+
*
|
|
802
|
+
* Properties
|
|
803
|
+
*
|
|
804
|
+
* */
|
|
805
|
+
this.group = void 0;
|
|
806
|
+
this.list = [];
|
|
807
|
+
this.elementList = {};
|
|
808
|
+
this.isDirty = true;
|
|
809
|
+
this.level = 0;
|
|
810
|
+
this.options = void 0;
|
|
811
|
+
var chartOptions = merge(chart.options.drilldown &&
|
|
812
|
+
chart.options.drilldown.drillUpButton,
|
|
813
|
+
Breadcrumbs.defaultBreadcrumbsOptions,
|
|
814
|
+
chart.options.navigation && chart.options.navigation.breadcrumbs,
|
|
815
|
+
userOptions);
|
|
816
|
+
this.chart = chart;
|
|
817
|
+
this.options = chartOptions || {};
|
|
818
|
+
}
|
|
819
|
+
/**
|
|
820
|
+
* Update Breadcrumbs properties, like level and list.
|
|
821
|
+
*
|
|
822
|
+
* @requires modules/breadcrumbs
|
|
823
|
+
*
|
|
824
|
+
* @function Highcharts.Breadcrumbs#updateProperties
|
|
825
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
826
|
+
* Breadcrumbs class.
|
|
827
|
+
*/
|
|
828
|
+
Breadcrumbs.prototype.updateProperties = function (list) {
|
|
829
|
+
this.setList(list);
|
|
830
|
+
this.setLevel();
|
|
831
|
+
this.isDirty = true;
|
|
832
|
+
};
|
|
833
|
+
/**
|
|
834
|
+
* Set breadcrumbs list.
|
|
835
|
+
* @function Highcharts.Breadcrumbs#setList
|
|
836
|
+
*
|
|
837
|
+
* @requires modules/breadcrumbs
|
|
838
|
+
*
|
|
839
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
840
|
+
* Breadcrumbs class.
|
|
841
|
+
* @param {Highcharts.BreadcrumbsOptions} list
|
|
842
|
+
* Breadcrumbs list.
|
|
843
|
+
*/
|
|
844
|
+
Breadcrumbs.prototype.setList = function (list) {
|
|
845
|
+
this.list = list;
|
|
846
|
+
};
|
|
847
|
+
/**
|
|
848
|
+
* Calcule level on which chart currently is.
|
|
849
|
+
*
|
|
850
|
+
* @requires modules/breadcrumbs
|
|
851
|
+
*
|
|
852
|
+
* @function Highcharts.Breadcrumbs#setLevel
|
|
853
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
854
|
+
* Breadcrumbs class.
|
|
855
|
+
*/
|
|
856
|
+
Breadcrumbs.prototype.setLevel = function () {
|
|
857
|
+
this.level = this.list.length && this.list.length - 1;
|
|
858
|
+
};
|
|
859
|
+
/**
|
|
860
|
+
* Get Breadcrumbs level
|
|
861
|
+
*
|
|
862
|
+
* @requires modules/breadcrumbs
|
|
863
|
+
*
|
|
864
|
+
* @function Highcharts.Breadcrumbs#getLevel
|
|
865
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
866
|
+
* Breadcrumbs class.
|
|
867
|
+
*/
|
|
868
|
+
Breadcrumbs.prototype.getLevel = function () {
|
|
869
|
+
return this.level;
|
|
870
|
+
};
|
|
871
|
+
/**
|
|
872
|
+
* Default button text formatter.
|
|
873
|
+
*
|
|
874
|
+
* @requires modules/breadcrumbs
|
|
875
|
+
*
|
|
876
|
+
* @function Highcharts.Breadcrumbs#getButtonText
|
|
877
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
878
|
+
* Breadcrumbs class.
|
|
879
|
+
* @param {Highcharts.Breadcrumbs} breadcrumb
|
|
880
|
+
* Breadcrumb.
|
|
881
|
+
* @return {string}
|
|
882
|
+
* Formatted text.
|
|
883
|
+
*/
|
|
884
|
+
Breadcrumbs.prototype.getButtonText = function (breadcrumb) {
|
|
885
|
+
var breadcrumbs = this,
|
|
886
|
+
chart = breadcrumbs.chart,
|
|
887
|
+
breadcrumbsOptions = breadcrumbs.options,
|
|
888
|
+
lang = chart.options.lang,
|
|
889
|
+
textFormat = pick(breadcrumbsOptions.format,
|
|
890
|
+
breadcrumbsOptions.showFullPath ?
|
|
891
|
+
'{level.name}' : '← {level.name}'),
|
|
892
|
+
defaultText = lang && pick(lang.drillUpText,
|
|
893
|
+
lang.mainBreadcrumb);
|
|
894
|
+
var returnText = breadcrumbsOptions.formatter &&
|
|
895
|
+
breadcrumbsOptions.formatter(breadcrumb) ||
|
|
896
|
+
format(textFormat, { level: breadcrumb.levelOptions },
|
|
897
|
+
chart) || '';
|
|
898
|
+
if (((isString(returnText) &&
|
|
899
|
+
!returnText.length) ||
|
|
900
|
+
returnText === '← ') &&
|
|
901
|
+
defined(defaultText)) {
|
|
902
|
+
returnText = !breadcrumbsOptions.showFullPath ?
|
|
903
|
+
'← ' + defaultText :
|
|
904
|
+
defaultText;
|
|
905
|
+
}
|
|
906
|
+
return returnText;
|
|
907
|
+
};
|
|
908
|
+
/**
|
|
909
|
+
* Redraw.
|
|
910
|
+
*
|
|
911
|
+
* @requires modules/breadcrums
|
|
912
|
+
*
|
|
913
|
+
* @function Highcharts.Breadcrumbs#redraw
|
|
914
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
915
|
+
* Breadcrumbs class.
|
|
916
|
+
*/
|
|
917
|
+
Breadcrumbs.prototype.redraw = function () {
|
|
918
|
+
if (this.isDirty) {
|
|
919
|
+
this.render();
|
|
920
|
+
}
|
|
921
|
+
if (this.group) {
|
|
922
|
+
this.group.align();
|
|
923
|
+
}
|
|
924
|
+
this.isDirty = false;
|
|
925
|
+
};
|
|
926
|
+
/**
|
|
927
|
+
* Create a group, then draw breadcrumbs together with the separators.
|
|
928
|
+
*
|
|
929
|
+
* @requires modules/breadcrumbs
|
|
930
|
+
*
|
|
931
|
+
* @function Highcharts.Breadcrumbs#render
|
|
932
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
933
|
+
* Breadcrumbs class.
|
|
934
|
+
*/
|
|
935
|
+
Breadcrumbs.prototype.render = function () {
|
|
936
|
+
var breadcrumbs = this,
|
|
937
|
+
chart = breadcrumbs.chart,
|
|
938
|
+
breadcrumbsOptions = breadcrumbs.options;
|
|
939
|
+
// A main group for the breadcrumbs.
|
|
940
|
+
if (!breadcrumbs.group && breadcrumbsOptions) {
|
|
941
|
+
breadcrumbs.group = chart.renderer
|
|
942
|
+
.g('breadcrumbs-group')
|
|
943
|
+
.addClass('highcharts-no-tooltip highcharts-breadcrumbs')
|
|
944
|
+
.attr({
|
|
945
|
+
zIndex: breadcrumbsOptions.zIndex
|
|
946
|
+
})
|
|
947
|
+
.add();
|
|
948
|
+
}
|
|
949
|
+
// Draw breadcrumbs.
|
|
950
|
+
if (breadcrumbsOptions.showFullPath) {
|
|
951
|
+
this.renderFullPathButtons();
|
|
952
|
+
}
|
|
953
|
+
else {
|
|
954
|
+
this.renderSingleButton();
|
|
955
|
+
}
|
|
956
|
+
this.alignBreadcrumbsGroup();
|
|
957
|
+
};
|
|
958
|
+
/**
|
|
959
|
+
* Draw breadcrumbs together with the separators.
|
|
960
|
+
*
|
|
961
|
+
* @requires modules/breadcrumbs
|
|
962
|
+
*
|
|
963
|
+
* @function Highcharts.Breadcrumbs#renderFullPathButtons
|
|
964
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
965
|
+
* Breadcrumbs class.
|
|
966
|
+
*/
|
|
967
|
+
Breadcrumbs.prototype.renderFullPathButtons = function () {
|
|
968
|
+
// Make sure that only one type of button is visible.
|
|
969
|
+
this.destroySingleButton();
|
|
970
|
+
this.resetElementListState();
|
|
971
|
+
this.updateListElements();
|
|
972
|
+
this.destroyListElements();
|
|
973
|
+
};
|
|
974
|
+
/**
|
|
975
|
+
* Render Single button - when showFullPath is not used. The button is
|
|
976
|
+
* similar to the old drillUpButton
|
|
977
|
+
*
|
|
978
|
+
* @requires modules/breadcrumbs
|
|
979
|
+
*
|
|
980
|
+
* @function Highcharts.Breadcrumbs#renderSingleButton
|
|
981
|
+
* @param {Highcharts.Breadcrumbs} this Breadcrumbs class.
|
|
982
|
+
*/
|
|
983
|
+
Breadcrumbs.prototype.renderSingleButton = function () {
|
|
984
|
+
var breadcrumbs = this,
|
|
985
|
+
chart = breadcrumbs.chart,
|
|
986
|
+
list = breadcrumbs.list,
|
|
987
|
+
breadcrumbsOptions = breadcrumbs.options,
|
|
988
|
+
buttonSpacing = breadcrumbsOptions.buttonSpacing;
|
|
989
|
+
// Make sure that only one type of button is visible.
|
|
990
|
+
this.destroyListElements();
|
|
991
|
+
// Draw breadcrumbs. Inital position for calculating the breadcrumbs
|
|
992
|
+
// group.
|
|
993
|
+
var posX = breadcrumbs.group ?
|
|
994
|
+
breadcrumbs.group.getBBox().width :
|
|
995
|
+
buttonSpacing,
|
|
996
|
+
posY = buttonSpacing;
|
|
997
|
+
var previousBreadcrumb = list[list.length - 2];
|
|
998
|
+
if (!chart.drillUpButton && (this.level > 0)) {
|
|
999
|
+
chart.drillUpButton = breadcrumbs.renderButton(previousBreadcrumb, posX, posY);
|
|
1000
|
+
}
|
|
1001
|
+
else if (chart.drillUpButton) {
|
|
1002
|
+
if (this.level > 0) {
|
|
1003
|
+
// Update button.
|
|
1004
|
+
this.updateSingleButton();
|
|
1005
|
+
}
|
|
1006
|
+
else {
|
|
1007
|
+
this.destroySingleButton();
|
|
1008
|
+
}
|
|
1009
|
+
}
|
|
1010
|
+
};
|
|
1011
|
+
/**
|
|
1012
|
+
* Update group position based on align and it's width.
|
|
1013
|
+
*
|
|
1014
|
+
* @requires modules/breadcrumbs
|
|
1015
|
+
*
|
|
1016
|
+
* @function Highcharts.Breadcrumbs#renderSingleButton
|
|
1017
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1018
|
+
* Breadcrumbs class.
|
|
1019
|
+
*/
|
|
1020
|
+
Breadcrumbs.prototype.alignBreadcrumbsGroup = function (xOffset) {
|
|
1021
|
+
var breadcrumbs = this;
|
|
1022
|
+
if (breadcrumbs.group) {
|
|
1023
|
+
var breadcrumbsOptions = breadcrumbs.options,
|
|
1024
|
+
buttonTheme = breadcrumbsOptions.buttonTheme,
|
|
1025
|
+
positionOptions = breadcrumbsOptions.position,
|
|
1026
|
+
alignTo = (breadcrumbsOptions.relativeTo === 'chart' ||
|
|
1027
|
+
breadcrumbsOptions.relativeTo === 'spacingBox' ?
|
|
1028
|
+
void 0 :
|
|
1029
|
+
'scrollablePlotBox'),
|
|
1030
|
+
bBox = breadcrumbs.group.getBBox(),
|
|
1031
|
+
additionalSpace = 2 * (buttonTheme.padding || 0) +
|
|
1032
|
+
breadcrumbsOptions.buttonSpacing;
|
|
1033
|
+
// Store positionOptions
|
|
1034
|
+
positionOptions.width = bBox.width + additionalSpace;
|
|
1035
|
+
positionOptions.height = bBox.height + additionalSpace;
|
|
1036
|
+
var newPositions = merge(positionOptions);
|
|
1037
|
+
// Add x offset if specified.
|
|
1038
|
+
if (xOffset) {
|
|
1039
|
+
newPositions.x += xOffset;
|
|
1040
|
+
}
|
|
1041
|
+
if (breadcrumbs.options.rtl) {
|
|
1042
|
+
newPositions.x += positionOptions.width;
|
|
1043
|
+
}
|
|
1044
|
+
newPositions.y = pick(newPositions.y, this.yOffset, 0);
|
|
1045
|
+
breadcrumbs.group.align(newPositions, true, alignTo);
|
|
1046
|
+
}
|
|
1047
|
+
};
|
|
1048
|
+
/**
|
|
1049
|
+
* Render a button.
|
|
1050
|
+
*
|
|
1051
|
+
* @requires modules/breadcrums
|
|
1052
|
+
*
|
|
1053
|
+
* @function Highcharts.Breadcrumbs#renderButton
|
|
1054
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1055
|
+
* Breadcrumbs class.
|
|
1056
|
+
* @param {Highcharts.Breadcrumbs} breadcrumb
|
|
1057
|
+
* Current breadcrumb
|
|
1058
|
+
* @param {Highcharts.Breadcrumbs} posX
|
|
1059
|
+
* Initial horizontal position
|
|
1060
|
+
* @param {Highcharts.Breadcrumbs} posY
|
|
1061
|
+
* Initial vertical position
|
|
1062
|
+
* @return {SVGElement|void}
|
|
1063
|
+
* Returns the SVG button
|
|
1064
|
+
*/
|
|
1065
|
+
Breadcrumbs.prototype.renderButton = function (breadcrumb, posX, posY) {
|
|
1066
|
+
var breadcrumbs = this,
|
|
1067
|
+
chart = this.chart,
|
|
1068
|
+
breadcrumbsOptions = breadcrumbs.options,
|
|
1069
|
+
buttonTheme = merge(breadcrumbsOptions.buttonTheme);
|
|
1070
|
+
var button = chart.renderer
|
|
1071
|
+
.button(breadcrumbs.getButtonText(breadcrumb),
|
|
1072
|
+
posX,
|
|
1073
|
+
posY,
|
|
1074
|
+
function (e) {
|
|
1075
|
+
// Extract events from button object and call
|
|
1076
|
+
var buttonEvents = breadcrumbsOptions.events &&
|
|
1077
|
+
breadcrumbsOptions.events.click;
|
|
1078
|
+
var callDefaultEvent;
|
|
1079
|
+
if (buttonEvents) {
|
|
1080
|
+
callDefaultEvent = buttonEvents.call(breadcrumbs, e, breadcrumb);
|
|
1081
|
+
}
|
|
1082
|
+
// (difference in behaviour of showFullPath and drillUp)
|
|
1083
|
+
if (callDefaultEvent !== false) {
|
|
1084
|
+
// For single button we are not going to the button
|
|
1085
|
+
// level, but the one level up
|
|
1086
|
+
if (!breadcrumbsOptions.showFullPath) {
|
|
1087
|
+
e.newLevel = breadcrumbs.level - 1;
|
|
1088
|
+
}
|
|
1089
|
+
else {
|
|
1090
|
+
e.newLevel = breadcrumb.level;
|
|
1091
|
+
}
|
|
1092
|
+
fireEvent(breadcrumbs, 'up', e);
|
|
1093
|
+
}
|
|
1094
|
+
}, buttonTheme)
|
|
1095
|
+
.addClass('highcharts-breadcrumbs-button')
|
|
1096
|
+
.add(breadcrumbs.group);
|
|
1097
|
+
if (!chart.styledMode) {
|
|
1098
|
+
button.attr(breadcrumbsOptions.style);
|
|
1099
|
+
}
|
|
1100
|
+
return button;
|
|
1101
|
+
};
|
|
1102
|
+
/**
|
|
1103
|
+
* Render a separator.
|
|
1104
|
+
*
|
|
1105
|
+
* @requires modules/breadcrums
|
|
1106
|
+
*
|
|
1107
|
+
* @function Highcharts.Breadcrumbs#renderSeparator
|
|
1108
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1109
|
+
* Breadcrumbs class.
|
|
1110
|
+
* @param {Highcharts.Breadcrumbs} posX
|
|
1111
|
+
* Initial horizontal position
|
|
1112
|
+
* @param {Highcharts.Breadcrumbs} posY
|
|
1113
|
+
* Initial vertical position
|
|
1114
|
+
* @return {Highcharts.SVGElement}
|
|
1115
|
+
* Returns the SVG button
|
|
1116
|
+
*/
|
|
1117
|
+
Breadcrumbs.prototype.renderSeparator = function (posX, posY) {
|
|
1118
|
+
var breadcrumbs = this,
|
|
1119
|
+
chart = this.chart,
|
|
1120
|
+
breadcrumbsOptions = breadcrumbs.options,
|
|
1121
|
+
separatorOptions = breadcrumbsOptions.separator;
|
|
1122
|
+
var separator = chart.renderer
|
|
1123
|
+
.label(separatorOptions.text,
|
|
1124
|
+
posX,
|
|
1125
|
+
posY,
|
|
1126
|
+
void 0,
|
|
1127
|
+
void 0,
|
|
1128
|
+
void 0,
|
|
1129
|
+
false)
|
|
1130
|
+
.addClass('highcharts-breadcrumbs-separator')
|
|
1131
|
+
.add(breadcrumbs.group);
|
|
1132
|
+
if (!chart.styledMode) {
|
|
1133
|
+
separator.css(separatorOptions.style);
|
|
1134
|
+
}
|
|
1135
|
+
return separator;
|
|
1136
|
+
};
|
|
1137
|
+
/**
|
|
1138
|
+
* Update.
|
|
1139
|
+
* @function Highcharts.Breadcrumbs#update
|
|
1140
|
+
*
|
|
1141
|
+
* @requires modules/breadcrumbs
|
|
1142
|
+
*
|
|
1143
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1144
|
+
* Breadcrumbs class.
|
|
1145
|
+
* @param {Highcharts.BreadcrumbsOptions} options
|
|
1146
|
+
* Breadcrumbs class.
|
|
1147
|
+
* @param {boolean} redraw
|
|
1148
|
+
* Redraw flag
|
|
1149
|
+
*/
|
|
1150
|
+
Breadcrumbs.prototype.update = function (options) {
|
|
1151
|
+
merge(true, this.options, options);
|
|
1152
|
+
this.destroy();
|
|
1153
|
+
this.isDirty = true;
|
|
1154
|
+
};
|
|
1155
|
+
/**
|
|
1156
|
+
* Update button text when the showFullPath set to false.
|
|
1157
|
+
* @function Highcharts.Breadcrumbs#updateSingleButton
|
|
1158
|
+
*
|
|
1159
|
+
* @requires modules/breadcrumbs
|
|
1160
|
+
*
|
|
1161
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1162
|
+
* Breadcrumbs class.
|
|
1163
|
+
*/
|
|
1164
|
+
Breadcrumbs.prototype.updateSingleButton = function () {
|
|
1165
|
+
var chart = this.chart,
|
|
1166
|
+
currentBreadcrumb = this.list[this.level - 1];
|
|
1167
|
+
if (chart.drillUpButton) {
|
|
1168
|
+
chart.drillUpButton.attr({
|
|
1169
|
+
text: this.getButtonText(currentBreadcrumb)
|
|
1170
|
+
});
|
|
1171
|
+
}
|
|
1172
|
+
};
|
|
1173
|
+
/**
|
|
1174
|
+
* Destroy the chosen breadcrumbs group
|
|
1175
|
+
*
|
|
1176
|
+
* @requires modules/breadcrumbs
|
|
1177
|
+
*
|
|
1178
|
+
* @function Highcharts.Breadcrumbs#destroy
|
|
1179
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1180
|
+
* Breadcrumbs class.
|
|
1181
|
+
*/
|
|
1182
|
+
Breadcrumbs.prototype.destroy = function () {
|
|
1183
|
+
this.destroySingleButton();
|
|
1184
|
+
// Destroy elements one by one. It's necessary beacause
|
|
1185
|
+
// g().destroy() does not remove added HTML
|
|
1186
|
+
this.destroyListElements(true);
|
|
1187
|
+
// Then, destroy the group itself.
|
|
1188
|
+
if (this.group) {
|
|
1189
|
+
this.group.destroy();
|
|
1190
|
+
}
|
|
1191
|
+
this.group = void 0;
|
|
1192
|
+
};
|
|
1193
|
+
/**
|
|
1194
|
+
* Destroy the elements' buttons and separators.
|
|
1195
|
+
*
|
|
1196
|
+
* @requires modules/breadcrumbs
|
|
1197
|
+
*
|
|
1198
|
+
* @function Highcharts.Breadcrumbs#destroyListElements
|
|
1199
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1200
|
+
* Breadcrumbs class.
|
|
1201
|
+
*/
|
|
1202
|
+
Breadcrumbs.prototype.destroyListElements = function (force) {
|
|
1203
|
+
var elementList = this.elementList;
|
|
1204
|
+
objectEach(elementList, function (element, level) {
|
|
1205
|
+
if (force ||
|
|
1206
|
+
!elementList[level].updated) {
|
|
1207
|
+
element = elementList[level];
|
|
1208
|
+
element.button && element.button.destroy();
|
|
1209
|
+
element.separator && element.separator.destroy();
|
|
1210
|
+
delete element.button;
|
|
1211
|
+
delete element.separator;
|
|
1212
|
+
delete elementList[level];
|
|
1213
|
+
}
|
|
1214
|
+
});
|
|
1215
|
+
if (force) {
|
|
1216
|
+
this.elementList = {};
|
|
1217
|
+
}
|
|
1218
|
+
};
|
|
1219
|
+
/**
|
|
1220
|
+
* Destroy the single button if exists.
|
|
1221
|
+
*
|
|
1222
|
+
* @requires modules/breadcrumbs
|
|
1223
|
+
*
|
|
1224
|
+
* @function Highcharts.Breadcrumbs#destroySingleButton
|
|
1225
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1226
|
+
* Breadcrumbs class.
|
|
1227
|
+
*/
|
|
1228
|
+
Breadcrumbs.prototype.destroySingleButton = function () {
|
|
1229
|
+
if (this.chart.drillUpButton) {
|
|
1230
|
+
this.chart.drillUpButton.destroy();
|
|
1231
|
+
this.chart.drillUpButton = void 0;
|
|
1232
|
+
}
|
|
1233
|
+
};
|
|
1234
|
+
/**
|
|
1235
|
+
* Reset state for all buttons in elementList.
|
|
1236
|
+
*
|
|
1237
|
+
* @requires modules/breadcrumbs
|
|
1238
|
+
*
|
|
1239
|
+
* @function Highcharts.Breadcrumbs#resetElementListState
|
|
1240
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1241
|
+
* Breadcrumbs class.
|
|
1242
|
+
*/
|
|
1243
|
+
Breadcrumbs.prototype.resetElementListState = function () {
|
|
1244
|
+
objectEach(this.elementList, function (element) {
|
|
1245
|
+
element.updated = false;
|
|
1246
|
+
});
|
|
1247
|
+
};
|
|
1248
|
+
/**
|
|
1249
|
+
* Update rendered elements inside the elementList.
|
|
1250
|
+
*
|
|
1251
|
+
* @requires modules/breadcrumbs
|
|
1252
|
+
*
|
|
1253
|
+
* @function Highcharts.Breadcrumbs#updateListElements
|
|
1254
|
+
* @param {Highcharts.Breadcrumbs} this
|
|
1255
|
+
* Breadcrumbs class.
|
|
1256
|
+
*/
|
|
1257
|
+
Breadcrumbs.prototype.updateListElements = function () {
|
|
1258
|
+
var breadcrumbs = this,
|
|
1259
|
+
elementList = breadcrumbs.elementList,
|
|
1260
|
+
buttonSpacing = breadcrumbs.options.buttonSpacing,
|
|
1261
|
+
list = breadcrumbs.list,
|
|
1262
|
+
rtl = breadcrumbs.options.rtl,
|
|
1263
|
+
rtlFactor = rtl ? -1 : 1,
|
|
1264
|
+
updateXPosition = function (element,
|
|
1265
|
+
spacing) {
|
|
1266
|
+
return rtlFactor * element.getBBox().width +
|
|
1267
|
+
rtlFactor * spacing;
|
|
1268
|
+
}, adjustToRTL = function (element, posX, posY) {
|
|
1269
|
+
element.translate(posX - element.getBBox().width, posY);
|
|
1270
|
+
};
|
|
1271
|
+
// Inital position for calculating the breadcrumbs group.
|
|
1272
|
+
var posX = breadcrumbs.group ?
|
|
1273
|
+
updateXPosition(breadcrumbs.group,
|
|
1274
|
+
buttonSpacing) :
|
|
1275
|
+
buttonSpacing,
|
|
1276
|
+
posY = buttonSpacing,
|
|
1277
|
+
currentBreadcrumb;
|
|
1278
|
+
list.forEach(function (breadcrumb, index) {
|
|
1279
|
+
var isLast = index === list.length - 1;
|
|
1280
|
+
var button,
|
|
1281
|
+
separator;
|
|
1282
|
+
if (elementList[breadcrumb.level]) {
|
|
1283
|
+
currentBreadcrumb = elementList[breadcrumb.level];
|
|
1284
|
+
button = currentBreadcrumb.button;
|
|
1285
|
+
// Render a separator if it was not created before.
|
|
1286
|
+
if (!currentBreadcrumb.separator &&
|
|
1287
|
+
!isLast) {
|
|
1288
|
+
// Add spacing for the next separator
|
|
1289
|
+
posX += rtlFactor * buttonSpacing;
|
|
1290
|
+
currentBreadcrumb.separator =
|
|
1291
|
+
breadcrumbs.renderSeparator(posX, posY);
|
|
1292
|
+
if (rtl) {
|
|
1293
|
+
adjustToRTL(currentBreadcrumb.separator, posX, posY);
|
|
1294
|
+
}
|
|
1295
|
+
posX += updateXPosition(currentBreadcrumb.separator, buttonSpacing);
|
|
1296
|
+
}
|
|
1297
|
+
else if (currentBreadcrumb.separator &&
|
|
1298
|
+
isLast) {
|
|
1299
|
+
currentBreadcrumb.separator.destroy();
|
|
1300
|
+
delete currentBreadcrumb.separator;
|
|
1301
|
+
}
|
|
1302
|
+
elementList[breadcrumb.level].updated = true;
|
|
1303
|
+
}
|
|
1304
|
+
else {
|
|
1305
|
+
// Render a button.
|
|
1306
|
+
button = breadcrumbs.renderButton(breadcrumb, posX, posY);
|
|
1307
|
+
if (rtl) {
|
|
1308
|
+
adjustToRTL(button, posX, posY);
|
|
1309
|
+
}
|
|
1310
|
+
posX += updateXPosition(button, buttonSpacing);
|
|
1311
|
+
// Render a separator.
|
|
1312
|
+
if (!isLast) {
|
|
1313
|
+
separator = breadcrumbs.renderSeparator(posX, posY);
|
|
1314
|
+
if (rtl) {
|
|
1315
|
+
adjustToRTL(separator, posX, posY);
|
|
1316
|
+
}
|
|
1317
|
+
posX += updateXPosition(separator, buttonSpacing);
|
|
1318
|
+
}
|
|
1319
|
+
elementList[breadcrumb.level] = {
|
|
1320
|
+
button: button,
|
|
1321
|
+
separator: separator,
|
|
1322
|
+
updated: true
|
|
1323
|
+
};
|
|
1324
|
+
}
|
|
1325
|
+
if (button) {
|
|
1326
|
+
button.setState(isLast ? 2 : 0);
|
|
1327
|
+
}
|
|
1328
|
+
});
|
|
1329
|
+
};
|
|
1330
|
+
/**
|
|
1331
|
+
* Options for breadcrumbs. Breadcrumbs general options are defined in
|
|
1332
|
+
* `navigation.breadcrumbs`. Specific options for drilldown are set in
|
|
1333
|
+
* `drilldown.breadcrumbs` and for tree-like series traversing, in
|
|
1334
|
+
* `plotOptions[series].breadcrumbs`.
|
|
1335
|
+
*
|
|
1336
|
+
* @since 10.0.0
|
|
1337
|
+
* @product highcharts
|
|
1338
|
+
* @optionparent navigation.breadcrumbs
|
|
1339
|
+
*/
|
|
1340
|
+
Breadcrumbs.defaultBreadcrumbsOptions = {
|
|
1341
|
+
/**
|
|
1342
|
+
* A collection of attributes for the buttons. The object takes SVG
|
|
1343
|
+
* attributes like `fill`, `stroke`, `stroke-width`, as well as `style`,
|
|
1344
|
+
* a collection of CSS properties for the text.
|
|
1345
|
+
*
|
|
1346
|
+
* The object can also be extended with states, so you can set
|
|
1347
|
+
* presentational options for `hover`, `select` or `disabled` button
|
|
1348
|
+
* states.
|
|
1349
|
+
*
|
|
1350
|
+
* @sample {highcharts} highcharts/breadcrumbs/single-button
|
|
1351
|
+
* Themed, single button
|
|
1352
|
+
*
|
|
1353
|
+
* @type {Highcharts.SVGAttributes}
|
|
1354
|
+
* @since 10.0.0
|
|
1355
|
+
* @product highcharts
|
|
1356
|
+
*/
|
|
1357
|
+
buttonTheme: {
|
|
1358
|
+
/** @ignore */
|
|
1359
|
+
fill: 'none',
|
|
1360
|
+
/** @ignore */
|
|
1361
|
+
height: 18,
|
|
1362
|
+
/** @ignore */
|
|
1363
|
+
padding: 2,
|
|
1364
|
+
/** @ignore */
|
|
1365
|
+
'stroke-width': 0,
|
|
1366
|
+
/** @ignore */
|
|
1367
|
+
zIndex: 7,
|
|
1368
|
+
/** @ignore */
|
|
1369
|
+
states: {
|
|
1370
|
+
select: {
|
|
1371
|
+
fill: 'none'
|
|
1372
|
+
}
|
|
1373
|
+
},
|
|
1374
|
+
style: {
|
|
1375
|
+
color: "#335cad" /* Palette.highlightColor80 */
|
|
1376
|
+
}
|
|
1377
|
+
},
|
|
1378
|
+
/**
|
|
1379
|
+
* The default padding for each button and separator in each direction.
|
|
1380
|
+
*
|
|
1381
|
+
* @type {number}
|
|
1382
|
+
* @since 10.0.0
|
|
1383
|
+
*/
|
|
1384
|
+
buttonSpacing: 5,
|
|
1385
|
+
/**
|
|
1386
|
+
* Fires when clicking on the breadcrumbs button. Two arguments are
|
|
1387
|
+
* passed to the function. First breadcrumb button as an SVG element.
|
|
1388
|
+
* Second is the breadcrumbs class, containing reference to the chart,
|
|
1389
|
+
* series etc.
|
|
1390
|
+
*
|
|
1391
|
+
* ```js
|
|
1392
|
+
* click: function(button, breadcrumbs) {
|
|
1393
|
+
* console.log(button);
|
|
1394
|
+
* }
|
|
1395
|
+
* ```
|
|
1396
|
+
*
|
|
1397
|
+
* Return false to stop default buttons click action.
|
|
1398
|
+
*
|
|
1399
|
+
* @type {Highcharts.BreadcrumbsClickCallbackFunction}
|
|
1400
|
+
* @since 10.0.0
|
|
1401
|
+
* @apioption navigation.breadcrumbs.events.click
|
|
1402
|
+
*/
|
|
1403
|
+
/**
|
|
1404
|
+
* When the breadcrumbs are floating, the plot area will not move to
|
|
1405
|
+
* make space for it. By default, the chart will not make space for the
|
|
1406
|
+
* buttons. This property won't work when positioned in the middle.
|
|
1407
|
+
*
|
|
1408
|
+
* @sample highcharts/breadcrumbs/single-button
|
|
1409
|
+
* Floating button
|
|
1410
|
+
* @type {boolean}
|
|
1411
|
+
* @since 10.0.0
|
|
1412
|
+
*/
|
|
1413
|
+
floating: false,
|
|
1414
|
+
/**
|
|
1415
|
+
* A format string for the breadcrumbs button. Variables are enclosed by
|
|
1416
|
+
* curly brackets. Available values are passed in the declared point
|
|
1417
|
+
* options.
|
|
1418
|
+
*
|
|
1419
|
+
* @type {string|undefined}
|
|
1420
|
+
* @since 10.0.0
|
|
1421
|
+
* @default undefined
|
|
1422
|
+
* @sample {highcharts} highcharts/breadcrumbs/format Display custom
|
|
1423
|
+
* values in breadcrumb button.
|
|
1424
|
+
*/
|
|
1425
|
+
format: void 0,
|
|
1426
|
+
/**
|
|
1427
|
+
* Callback function to format the breadcrumb text from scratch.
|
|
1428
|
+
*
|
|
1429
|
+
* @type {Highcharts.BreadcrumbsFormatterCallbackFunction}
|
|
1430
|
+
* @since 10.0.0
|
|
1431
|
+
* @default undefined
|
|
1432
|
+
* @apioption navigation.breadcrumbs.formatter
|
|
1433
|
+
*/
|
|
1434
|
+
/**
|
|
1435
|
+
* What box to align the button to. Can be either `plotBox` or
|
|
1436
|
+
* `spacingBox`.
|
|
1437
|
+
*
|
|
1438
|
+
* @type {Highcharts.ButtonRelativeToValue}
|
|
1439
|
+
* @default plotBox
|
|
1440
|
+
* @since 10.0.0
|
|
1441
|
+
* @product highcharts highmaps
|
|
1442
|
+
*/
|
|
1443
|
+
relativeTo: 'plotBox',
|
|
1444
|
+
/**
|
|
1445
|
+
* Whether to reverse the order of buttons. This is common in Arabic
|
|
1446
|
+
* and Hebrew.
|
|
1447
|
+
*
|
|
1448
|
+
* @type {boolean}
|
|
1449
|
+
* @since 10.2.0
|
|
1450
|
+
* @sample {highcharts} highcharts/breadcrumbs/rtl
|
|
1451
|
+
* Breadcrumbs in RTL
|
|
1452
|
+
*/
|
|
1453
|
+
rtl: false,
|
|
1454
|
+
/**
|
|
1455
|
+
* Positioning for the button row. The breadcrumbs buttons will be
|
|
1456
|
+
* aligned properly for the default chart layout (title, subtitle,
|
|
1457
|
+
* legend, range selector) for the custom chart layout set the position
|
|
1458
|
+
* properties.
|
|
1459
|
+
* @type {Highcharts.BreadcrumbsAlignOptions}
|
|
1460
|
+
* @since 10.0.0
|
|
1461
|
+
* @product highcharts highmaps
|
|
1462
|
+
* @sample {highcharts} highcharts/breadcrumbs/single-button
|
|
1463
|
+
* Single, right aligned button
|
|
1464
|
+
*/
|
|
1465
|
+
position: {
|
|
1466
|
+
/**
|
|
1467
|
+
* Horizontal alignment of the breadcrumbs buttons.
|
|
1468
|
+
*
|
|
1469
|
+
* @type {Highcharts.AlignValue}
|
|
1470
|
+
*/
|
|
1471
|
+
align: 'left',
|
|
1472
|
+
/**
|
|
1473
|
+
* Vertical alignment of the breadcrumbs buttons.
|
|
1474
|
+
*
|
|
1475
|
+
* @type {Highcharts.VerticalAlignValue}
|
|
1476
|
+
*/
|
|
1477
|
+
verticalAlign: 'top',
|
|
1478
|
+
/**
|
|
1479
|
+
* The X offset of the breadcrumbs button group.
|
|
1480
|
+
*
|
|
1481
|
+
* @type {number}
|
|
1482
|
+
*/
|
|
1483
|
+
x: 0,
|
|
1484
|
+
/**
|
|
1485
|
+
* The Y offset of the breadcrumbs button group. When `undefined`,
|
|
1486
|
+
* and `floating` is `false`, the `y` position is adapted so that
|
|
1487
|
+
* the breadcrumbs are rendered outside the target area.
|
|
1488
|
+
*
|
|
1489
|
+
* @type {number|undefined}
|
|
1490
|
+
*/
|
|
1491
|
+
y: void 0
|
|
1492
|
+
},
|
|
1493
|
+
/**
|
|
1494
|
+
* Options object for Breadcrumbs separator.
|
|
1495
|
+
*
|
|
1496
|
+
* @since 10.0.0
|
|
1497
|
+
*/
|
|
1498
|
+
separator: {
|
|
1499
|
+
/**
|
|
1500
|
+
* @type {string}
|
|
1501
|
+
* @since 10.0.0
|
|
1502
|
+
* @product highcharts
|
|
1503
|
+
*/
|
|
1504
|
+
text: '/',
|
|
1505
|
+
/**
|
|
1506
|
+
* CSS styles for the breadcrumbs separator.
|
|
1507
|
+
*
|
|
1508
|
+
* In styled mode, the breadcrumbs separators are styled by the
|
|
1509
|
+
* `.highcharts-separator` rule with its different states.
|
|
1510
|
+
* @type {Highcharts.CSSObject}
|
|
1511
|
+
* @since 10.0.0
|
|
1512
|
+
*/
|
|
1513
|
+
style: {
|
|
1514
|
+
color: "#666666" /* Palette.neutralColor60 */
|
|
1515
|
+
}
|
|
1516
|
+
},
|
|
1517
|
+
/**
|
|
1518
|
+
* Show full path or only a single button.
|
|
1519
|
+
*
|
|
1520
|
+
* @type {boolean}
|
|
1521
|
+
* @since 10.0.0
|
|
1522
|
+
* @sample {highcharts} highcharts/breadcrumbs/single-button
|
|
1523
|
+
* Single, styled button
|
|
1524
|
+
*/
|
|
1525
|
+
showFullPath: true,
|
|
1526
|
+
/**
|
|
1527
|
+
* CSS styles for all breadcrumbs.
|
|
1528
|
+
*
|
|
1529
|
+
* In styled mode, the breadcrumbs buttons are styled by the
|
|
1530
|
+
* `.highcharts-breadcrumbs-buttons .highcharts-button` rule with its
|
|
1531
|
+
* different states.
|
|
1532
|
+
* @type {Highcharts.SVGAttributes}
|
|
1533
|
+
* @since 10.0.0
|
|
1534
|
+
*/
|
|
1535
|
+
style: {},
|
|
1536
|
+
/**
|
|
1537
|
+
* Whether to use HTML to render the breadcrumbs items texts.
|
|
1538
|
+
*
|
|
1539
|
+
* @type {boolean}
|
|
1540
|
+
* @since 10.0.0
|
|
1541
|
+
*/
|
|
1542
|
+
useHTML: false,
|
|
1543
|
+
/**
|
|
1544
|
+
* The z index of the breadcrumbs group.
|
|
1545
|
+
*
|
|
1546
|
+
* @type {number}
|
|
1547
|
+
* @since 10.0.0
|
|
1548
|
+
*/
|
|
1549
|
+
zIndex: 7
|
|
1550
|
+
};
|
|
1551
|
+
return Breadcrumbs;
|
|
1552
|
+
}());
|
|
1553
|
+
/* eslint-disable no-invalid-this */
|
|
1554
|
+
if (!H.Breadcrumbs) {
|
|
1555
|
+
H.Breadcrumbs = Breadcrumbs;
|
|
1556
|
+
// Logic for making space for the buttons above the plot area
|
|
1557
|
+
addEvent(Chart, 'getMargins', function () {
|
|
1558
|
+
var breadcrumbs = this.breadcrumbs;
|
|
1559
|
+
if (breadcrumbs &&
|
|
1560
|
+
!breadcrumbs.options.floating &&
|
|
1561
|
+
breadcrumbs.level) {
|
|
1562
|
+
var breadcrumbsOptions = breadcrumbs.options,
|
|
1563
|
+
buttonTheme = breadcrumbsOptions.buttonTheme,
|
|
1564
|
+
breadcrumbsHeight = ((buttonTheme.height || 0) +
|
|
1565
|
+
2 * (buttonTheme.padding || 0) +
|
|
1566
|
+
breadcrumbsOptions.buttonSpacing),
|
|
1567
|
+
verticalAlign = breadcrumbsOptions.position.verticalAlign;
|
|
1568
|
+
if (verticalAlign === 'bottom') {
|
|
1569
|
+
this.marginBottom = (this.marginBottom || 0) + breadcrumbsHeight;
|
|
1570
|
+
breadcrumbs.yOffset = breadcrumbsHeight;
|
|
1571
|
+
}
|
|
1572
|
+
else if (verticalAlign !== 'middle') {
|
|
1573
|
+
this.plotTop += breadcrumbsHeight;
|
|
1574
|
+
breadcrumbs.yOffset = -breadcrumbsHeight;
|
|
1575
|
+
}
|
|
1576
|
+
else {
|
|
1577
|
+
breadcrumbs.yOffset = void 0;
|
|
1578
|
+
}
|
|
1579
|
+
}
|
|
1580
|
+
});
|
|
1581
|
+
addEvent(Chart, 'redraw', function () {
|
|
1582
|
+
this.breadcrumbs && this.breadcrumbs.redraw();
|
|
1583
|
+
});
|
|
1584
|
+
// Remove resize/afterSetExtremes at chart destroy
|
|
1585
|
+
addEvent(Chart, 'destroy', function destroyEvents() {
|
|
1586
|
+
if (this.breadcrumbs) {
|
|
1587
|
+
this.breadcrumbs.destroy();
|
|
1588
|
+
this.breadcrumbs = void 0;
|
|
1589
|
+
}
|
|
1590
|
+
});
|
|
1591
|
+
// Shift the drillUpButton to make the space for resetZoomButton, #8095.
|
|
1592
|
+
addEvent(Chart, 'afterShowResetZoom', function () {
|
|
1593
|
+
var chart = this;
|
|
1594
|
+
if (chart.breadcrumbs) {
|
|
1595
|
+
var bbox = chart.resetZoomButton &&
|
|
1596
|
+
chart.resetZoomButton.getBBox(),
|
|
1597
|
+
breadcrumbsOptions = chart.breadcrumbs.options;
|
|
1598
|
+
if (bbox &&
|
|
1599
|
+
breadcrumbsOptions.position.align === 'right' &&
|
|
1600
|
+
breadcrumbsOptions.relativeTo === 'plotBox') {
|
|
1601
|
+
chart.breadcrumbs.alignBreadcrumbsGroup(-bbox.width - breadcrumbsOptions.buttonSpacing);
|
|
1602
|
+
}
|
|
1603
|
+
}
|
|
1604
|
+
});
|
|
1605
|
+
// After zooming out, shift the drillUpButton
|
|
1606
|
+
// to the previous position, #8095.
|
|
1607
|
+
addEvent(Chart, 'selection', function (event) {
|
|
1608
|
+
if (event.resetSelection === true &&
|
|
1609
|
+
this.breadcrumbs) {
|
|
1610
|
+
this.breadcrumbs.alignBreadcrumbsGroup();
|
|
579
1611
|
}
|
|
580
|
-
|
|
581
|
-
}
|
|
582
|
-
return {
|
|
583
|
-
color: color,
|
|
584
|
-
colorIndex: colorIndex
|
|
585
|
-
};
|
|
1612
|
+
});
|
|
586
1613
|
}
|
|
587
|
-
|
|
588
|
-
* Creates a map from level number to its given options.
|
|
1614
|
+
/* *
|
|
589
1615
|
*
|
|
590
|
-
*
|
|
1616
|
+
* Default Export
|
|
591
1617
|
*
|
|
592
|
-
*
|
|
593
|
-
|
|
594
|
-
* - `defaults` Object containing default options. The default options are
|
|
595
|
-
* merged with the userOptions to get the final options for a specific
|
|
596
|
-
* level.
|
|
597
|
-
* - `from` The lowest level number.
|
|
598
|
-
* - `levels` User options from series.levels.
|
|
599
|
-
* - `to` The highest level number.
|
|
1618
|
+
* */
|
|
1619
|
+
/* *
|
|
600
1620
|
*
|
|
601
|
-
*
|
|
602
|
-
*
|
|
603
|
-
*/
|
|
604
|
-
function getLevelOptions(params) {
|
|
605
|
-
var result = null,
|
|
606
|
-
defaults,
|
|
607
|
-
converted,
|
|
608
|
-
i,
|
|
609
|
-
from,
|
|
610
|
-
to,
|
|
611
|
-
levels;
|
|
612
|
-
if (isObject(params)) {
|
|
613
|
-
result = {};
|
|
614
|
-
from = isNumber(params.from) ? params.from : 1;
|
|
615
|
-
levels = params.levels;
|
|
616
|
-
converted = {};
|
|
617
|
-
defaults = isObject(params.defaults) ? params.defaults : {};
|
|
618
|
-
if (isArray(levels)) {
|
|
619
|
-
converted = levels.reduce(function (obj, item) {
|
|
620
|
-
var level,
|
|
621
|
-
levelIsConstant,
|
|
622
|
-
options;
|
|
623
|
-
if (isObject(item) && isNumber(item.level)) {
|
|
624
|
-
options = merge({}, item);
|
|
625
|
-
levelIsConstant = pick(options.levelIsConstant, defaults.levelIsConstant);
|
|
626
|
-
// Delete redundant properties.
|
|
627
|
-
delete options.levelIsConstant;
|
|
628
|
-
delete options.level;
|
|
629
|
-
// Calculate which level these options apply to.
|
|
630
|
-
level = item.level + (levelIsConstant ? 0 : from - 1);
|
|
631
|
-
if (isObject(obj[level])) {
|
|
632
|
-
merge(true, obj[level], options); // #16329
|
|
633
|
-
}
|
|
634
|
-
else {
|
|
635
|
-
obj[level] = options;
|
|
636
|
-
}
|
|
637
|
-
}
|
|
638
|
-
return obj;
|
|
639
|
-
}, {});
|
|
640
|
-
}
|
|
641
|
-
to = isNumber(params.to) ? params.to : 1;
|
|
642
|
-
for (i = 0; i <= to; i++) {
|
|
643
|
-
result[i] = merge({}, defaults, isObject(converted[i]) ? converted[i] : {});
|
|
644
|
-
}
|
|
645
|
-
}
|
|
646
|
-
return result;
|
|
647
|
-
}
|
|
1621
|
+
* API Declarations
|
|
1622
|
+
*
|
|
1623
|
+
* */
|
|
648
1624
|
/**
|
|
649
|
-
*
|
|
650
|
-
*
|
|
651
|
-
* @
|
|
1625
|
+
* Callback function to react on button clicks.
|
|
1626
|
+
*
|
|
1627
|
+
* @callback Highcharts.BreadcrumbsClickCallbackFunction
|
|
1628
|
+
*
|
|
1629
|
+
* @param {Highcharts.Event} event
|
|
1630
|
+
* Event.
|
|
1631
|
+
*
|
|
1632
|
+
* @param {Highcharts.BreadcrumbOptions} options
|
|
1633
|
+
* Breadcrumb options.
|
|
1634
|
+
*
|
|
1635
|
+
* @param {global.Event} e
|
|
1636
|
+
* Event arguments.
|
|
652
1637
|
*/
|
|
653
|
-
function setTreeValues(tree, options) {
|
|
654
|
-
var before = options.before,
|
|
655
|
-
idRoot = options.idRoot,
|
|
656
|
-
mapIdToNode = options.mapIdToNode,
|
|
657
|
-
nodeRoot = mapIdToNode[idRoot],
|
|
658
|
-
levelIsConstant = (options.levelIsConstant !== false),
|
|
659
|
-
points = options.points,
|
|
660
|
-
point = points[tree.i],
|
|
661
|
-
optionsPoint = point && point.options || {},
|
|
662
|
-
children = [];
|
|
663
|
-
var childrenTotal = 0;
|
|
664
|
-
tree.levelDynamic = tree.level - (levelIsConstant ? 0 : nodeRoot.level);
|
|
665
|
-
tree.name = pick(point && point.name, '');
|
|
666
|
-
tree.visible = (idRoot === tree.id ||
|
|
667
|
-
options.visible === true);
|
|
668
|
-
if (typeof before === 'function') {
|
|
669
|
-
tree = before(tree, options);
|
|
670
|
-
}
|
|
671
|
-
// First give the children some values
|
|
672
|
-
tree.children.forEach(function (child, i) {
|
|
673
|
-
var newOptions = extend({},
|
|
674
|
-
options);
|
|
675
|
-
extend(newOptions, {
|
|
676
|
-
index: i,
|
|
677
|
-
siblings: tree.children.length,
|
|
678
|
-
visible: tree.visible
|
|
679
|
-
});
|
|
680
|
-
child = setTreeValues(child, newOptions);
|
|
681
|
-
children.push(child);
|
|
682
|
-
if (child.visible) {
|
|
683
|
-
childrenTotal += child.val;
|
|
684
|
-
}
|
|
685
|
-
});
|
|
686
|
-
// Set the values
|
|
687
|
-
var value = pick(optionsPoint.value,
|
|
688
|
-
childrenTotal);
|
|
689
|
-
tree.visible = value >= 0 && (childrenTotal > 0 || tree.visible);
|
|
690
|
-
tree.children = children;
|
|
691
|
-
tree.childrenTotal = childrenTotal;
|
|
692
|
-
tree.isLeaf = tree.visible && !childrenTotal;
|
|
693
|
-
tree.val = value;
|
|
694
|
-
return tree;
|
|
695
|
-
}
|
|
696
1638
|
/**
|
|
697
|
-
*
|
|
698
|
-
* accessible to exporting.
|
|
1639
|
+
* Callback function to format the breadcrumb text from scratch.
|
|
699
1640
|
*
|
|
700
|
-
* @
|
|
1641
|
+
* @callback Highcharts.BreadcrumbsFormatterCallbackFunction
|
|
701
1642
|
*
|
|
702
|
-
* @param {
|
|
703
|
-
*
|
|
1643
|
+
* @param {Highcharts.Event} event
|
|
1644
|
+
* Event.
|
|
1645
|
+
*
|
|
1646
|
+
* @param {Highcharts.BreadcrumbOptions} options
|
|
1647
|
+
* Breadcrumb options.
|
|
704
1648
|
*
|
|
705
1649
|
* @return {string}
|
|
706
|
-
*
|
|
1650
|
+
* Formatted text or false
|
|
707
1651
|
*/
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
options;
|
|
711
|
-
if (isObject(series)) {
|
|
712
|
-
// Get the series options.
|
|
713
|
-
options = isObject(series.options) ? series.options : {};
|
|
714
|
-
// Calculate the rootId.
|
|
715
|
-
rootId = pick(series.rootNode, options.rootId, '');
|
|
716
|
-
// Set rootId on series.userOptions to pick it up in exporting.
|
|
717
|
-
if (isObject(series.userOptions)) {
|
|
718
|
-
series.userOptions.rootId = rootId;
|
|
719
|
-
}
|
|
720
|
-
// Set rootId on series to pick it up on next update.
|
|
721
|
-
series.rootNode = rootId;
|
|
722
|
-
}
|
|
723
|
-
return rootId;
|
|
724
|
-
}
|
|
725
|
-
/* *
|
|
1652
|
+
/**
|
|
1653
|
+
* Options for the one breadcrumb.
|
|
726
1654
|
*
|
|
727
|
-
*
|
|
1655
|
+
* @interface Highcharts.BreadcrumbOptions
|
|
1656
|
+
*/
|
|
1657
|
+
/**
|
|
1658
|
+
* Level connected to a specific breadcrumb.
|
|
1659
|
+
* @name Highcharts.BreadcrumbOptions#level
|
|
1660
|
+
* @type {number}
|
|
1661
|
+
*/
|
|
1662
|
+
/**
|
|
1663
|
+
* Options for series or point connected to a specific breadcrumb.
|
|
1664
|
+
* @name Highcharts.BreadcrumbOptions#levelOptions
|
|
1665
|
+
* @type {SeriesOptions|PointOptionsObject}
|
|
1666
|
+
*/
|
|
1667
|
+
/**
|
|
1668
|
+
* Options for aligning breadcrumbs group.
|
|
728
1669
|
*
|
|
729
|
-
*
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
1670
|
+
* @interface Highcharts.BreadcrumbsAlignOptions
|
|
1671
|
+
*/
|
|
1672
|
+
/**
|
|
1673
|
+
* Align of a Breadcrumb group.
|
|
1674
|
+
* @default right
|
|
1675
|
+
* @name Highcharts.BreadcrumbsAlignOptions#align
|
|
1676
|
+
* @type {AlignValue}
|
|
1677
|
+
*/
|
|
1678
|
+
/**
|
|
1679
|
+
* Vertical align of a Breadcrumb group.
|
|
1680
|
+
* @default top
|
|
1681
|
+
* @name Highcharts.BreadcrumbsAlignOptions#verticalAlign
|
|
1682
|
+
* @type {VerticalAlignValue}
|
|
1683
|
+
*/
|
|
1684
|
+
/**
|
|
1685
|
+
* X offset of a Breadcrumbs group.
|
|
1686
|
+
* @name Highcharts.BreadcrumbsAlignOptions#x
|
|
1687
|
+
* @type {number}
|
|
1688
|
+
*/
|
|
1689
|
+
/**
|
|
1690
|
+
* Y offset of a Breadcrumbs group.
|
|
1691
|
+
* @name Highcharts.BreadcrumbsAlignOptions#y
|
|
1692
|
+
* @type {number}
|
|
1693
|
+
*/
|
|
1694
|
+
/**
|
|
1695
|
+
* Options for all breadcrumbs.
|
|
1696
|
+
*
|
|
1697
|
+
* @interface Highcharts.BreadcrumbsOptions
|
|
1698
|
+
*/
|
|
1699
|
+
/**
|
|
1700
|
+
* Button theme.
|
|
1701
|
+
* @name Highcharts.BreadcrumbsOptions#buttonTheme
|
|
1702
|
+
* @type { SVGAttributes | undefined }
|
|
1703
|
+
*/
|
|
1704
|
+
(''); // Keeps doclets above in JS file
|
|
736
1705
|
|
|
737
|
-
return
|
|
1706
|
+
return Breadcrumbs;
|
|
738
1707
|
});
|
|
739
1708
|
_registerModule(_modules, 'Series/Treemap/TreemapComposition.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Series/Treemap/TreemapUtilities.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, TreemapUtilities, U) {
|
|
740
1709
|
/* *
|
|
@@ -797,7 +1766,7 @@
|
|
|
797
1766
|
});
|
|
798
1767
|
|
|
799
1768
|
});
|
|
800
|
-
_registerModule(_modules, 'Series/Treemap/TreemapSeries.js', [_modules['Core/Color/Color.js'], _modules['Series/
|
|
1769
|
+
_registerModule(_modules, 'Series/Treemap/TreemapSeries.js', [_modules['Core/Color/Color.js'], _modules['Series/ColorMapComposition.js'], _modules['Core/Globals.js'], _modules['Core/Legend/LegendSymbol.js'], _modules['Core/Series/SeriesRegistry.js'], _modules['Series/Treemap/TreemapAlgorithmGroup.js'], _modules['Series/Treemap/TreemapPoint.js'], _modules['Series/Treemap/TreemapUtilities.js'], _modules['Series/TreeUtilities.js'], _modules['Extensions/Breadcrumbs.js'], _modules['Core/Utilities.js']], function (Color, ColorMapComposition, H, LegendSymbol, SeriesRegistry, TreemapAlgorithmGroup, TreemapPoint, TreemapUtilities, TU, Breadcrumbs, U) {
|
|
801
1770
|
/* *
|
|
802
1771
|
*
|
|
803
1772
|
* (c) 2014-2021 Highsoft AS
|
|
@@ -842,6 +1811,7 @@
|
|
|
842
1811
|
extend = U.extend,
|
|
843
1812
|
fireEvent = U.fireEvent,
|
|
844
1813
|
isArray = U.isArray,
|
|
1814
|
+
isNumber = U.isNumber,
|
|
845
1815
|
isObject = U.isObject,
|
|
846
1816
|
isString = U.isString,
|
|
847
1817
|
merge = U.merge,
|
|
@@ -882,6 +1852,7 @@
|
|
|
882
1852
|
_this.points = void 0;
|
|
883
1853
|
_this.rootNode = void 0;
|
|
884
1854
|
_this.tree = void 0;
|
|
1855
|
+
_this.level = void 0;
|
|
885
1856
|
return _this;
|
|
886
1857
|
/* eslint-enable valid-jsdoc */
|
|
887
1858
|
}
|
|
@@ -1138,6 +2109,46 @@
|
|
|
1138
2109
|
}
|
|
1139
2110
|
});
|
|
1140
2111
|
};
|
|
2112
|
+
/**
|
|
2113
|
+
* Create level list.
|
|
2114
|
+
*
|
|
2115
|
+
* @requires modules/breadcrumbs
|
|
2116
|
+
*
|
|
2117
|
+
* @function TreemapSeries#createList
|
|
2118
|
+
* @param {TreemapSeries} this
|
|
2119
|
+
* Treemap Series class.
|
|
2120
|
+
*/
|
|
2121
|
+
TreemapSeries.prototype.createList = function (e) {
|
|
2122
|
+
var chart = this.chart,
|
|
2123
|
+
breadcrumbs = chart.breadcrumbs,
|
|
2124
|
+
list = [];
|
|
2125
|
+
if (breadcrumbs) {
|
|
2126
|
+
var currentLevelNumber_1 = 0;
|
|
2127
|
+
list.push({
|
|
2128
|
+
level: currentLevelNumber_1,
|
|
2129
|
+
levelOptions: chart.series[0]
|
|
2130
|
+
});
|
|
2131
|
+
var node = e.target.nodeMap[e.newRootId];
|
|
2132
|
+
var extraNodes = [];
|
|
2133
|
+
// When the root node is set and has parent,
|
|
2134
|
+
// recreate the path from the node tree.
|
|
2135
|
+
while (node.parent || node.parent === '') {
|
|
2136
|
+
extraNodes.push(node);
|
|
2137
|
+
node = e.target.nodeMap[node.parent];
|
|
2138
|
+
}
|
|
2139
|
+
extraNodes.reverse().forEach(function (node) {
|
|
2140
|
+
list.push({
|
|
2141
|
+
level: ++currentLevelNumber_1,
|
|
2142
|
+
levelOptions: node
|
|
2143
|
+
});
|
|
2144
|
+
});
|
|
2145
|
+
// If the list has only first element, we should clear it
|
|
2146
|
+
if (list.length <= 1) {
|
|
2147
|
+
list.length = 0;
|
|
2148
|
+
}
|
|
2149
|
+
}
|
|
2150
|
+
return list;
|
|
2151
|
+
};
|
|
1141
2152
|
/**
|
|
1142
2153
|
* Extend drawDataLabels with logic to handle custom options related to
|
|
1143
2154
|
* the treemap series:
|
|
@@ -1388,9 +2399,9 @@
|
|
|
1388
2399
|
};
|
|
1389
2400
|
TreemapSeries.prototype.init = function (chart, options) {
|
|
1390
2401
|
var series = this,
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
2402
|
+
breadcrumbsOptions = merge(options.drillUpButton,
|
|
2403
|
+
options.breadcrumbs);
|
|
2404
|
+
var setOptionsEvent;
|
|
1394
2405
|
setOptionsEvent = addEvent(series, 'setOptions', function (event) {
|
|
1395
2406
|
var options = event.userOptions;
|
|
1396
2407
|
if (defined(options.allowDrillToNode) &&
|
|
@@ -1411,7 +2422,38 @@
|
|
|
1411
2422
|
series.eventsToUnbind.push(setOptionsEvent);
|
|
1412
2423
|
if (series.options.allowTraversingTree) {
|
|
1413
2424
|
series.eventsToUnbind.push(addEvent(series, 'click', series.onClickDrillToNode));
|
|
2425
|
+
series.eventsToUnbind.push(addEvent(series, 'setRootNode', function (e) {
|
|
2426
|
+
var chart = series.chart;
|
|
2427
|
+
if (chart.breadcrumbs) {
|
|
2428
|
+
// Create a list using the event after drilldown.
|
|
2429
|
+
chart.breadcrumbs.updateProperties(series.createList(e));
|
|
2430
|
+
}
|
|
2431
|
+
}));
|
|
2432
|
+
series.eventsToUnbind.push(addEvent(series, 'update', function (e, redraw) {
|
|
2433
|
+
var breadcrumbs = this.chart.breadcrumbs;
|
|
2434
|
+
if (breadcrumbs && e.options.breadcrumbs) {
|
|
2435
|
+
breadcrumbs.update(e.options.breadcrumbs);
|
|
2436
|
+
}
|
|
2437
|
+
}));
|
|
2438
|
+
series.eventsToUnbind.push(addEvent(series, 'destroy', function destroyEvents(e) {
|
|
2439
|
+
var chart = this.chart;
|
|
2440
|
+
if (chart.breadcrumbs) {
|
|
2441
|
+
chart.breadcrumbs.destroy();
|
|
2442
|
+
if (!e.keepEventsForUpdate) {
|
|
2443
|
+
chart.breadcrumbs = void 0;
|
|
2444
|
+
}
|
|
2445
|
+
}
|
|
2446
|
+
}));
|
|
2447
|
+
}
|
|
2448
|
+
if (!chart.breadcrumbs) {
|
|
2449
|
+
chart.breadcrumbs = new Breadcrumbs(chart, breadcrumbsOptions);
|
|
1414
2450
|
}
|
|
2451
|
+
series.eventsToUnbind.push(addEvent(chart.breadcrumbs, 'up', function (e) {
|
|
2452
|
+
var drillUpsNumber = this.level - e.newLevel;
|
|
2453
|
+
for (var i = 0; i < drillUpsNumber; i++) {
|
|
2454
|
+
series.drillUp();
|
|
2455
|
+
}
|
|
2456
|
+
}));
|
|
1415
2457
|
};
|
|
1416
2458
|
/**
|
|
1417
2459
|
* Add drilling on the suitable points.
|
|
@@ -1439,7 +2481,7 @@
|
|
|
1439
2481
|
level = point && mapOptionsToLevel[point.node.level] || {},
|
|
1440
2482
|
options = this.options,
|
|
1441
2483
|
attr,
|
|
1442
|
-
stateOptions =
|
|
2484
|
+
stateOptions = state && options.states && options.states[state] || {},
|
|
1443
2485
|
className = (point && point.getClassName()) || '',
|
|
1444
2486
|
opacity;
|
|
1445
2487
|
// Set attributes by precedence. Point trumps level trumps series.
|
|
@@ -1479,47 +2521,6 @@
|
|
|
1479
2521
|
}
|
|
1480
2522
|
return attr;
|
|
1481
2523
|
};
|
|
1482
|
-
TreemapSeries.prototype.renderTraverseUpButton = function (rootId) {
|
|
1483
|
-
var series = this,
|
|
1484
|
-
nodeMap = series.nodeMap,
|
|
1485
|
-
node = nodeMap[rootId],
|
|
1486
|
-
name = node.name,
|
|
1487
|
-
buttonOptions = series.options
|
|
1488
|
-
.traverseUpButton,
|
|
1489
|
-
backText = pick(buttonOptions.text,
|
|
1490
|
-
name, '◁ Back'),
|
|
1491
|
-
attr,
|
|
1492
|
-
states;
|
|
1493
|
-
if (rootId === '' || (series.is('sunburst') &&
|
|
1494
|
-
series.tree.children.length === 1 &&
|
|
1495
|
-
rootId === series.tree.children[0].id)) {
|
|
1496
|
-
if (series.drillUpButton) {
|
|
1497
|
-
series.drillUpButton = series.drillUpButton.destroy();
|
|
1498
|
-
}
|
|
1499
|
-
}
|
|
1500
|
-
else if (!this.drillUpButton) {
|
|
1501
|
-
attr = buttonOptions.theme;
|
|
1502
|
-
states = attr && attr.states;
|
|
1503
|
-
this.drillUpButton = this.chart.renderer
|
|
1504
|
-
.button(backText, 0, 0, function () {
|
|
1505
|
-
series.drillUp();
|
|
1506
|
-
}, attr, states && states.hover, states && states.select)
|
|
1507
|
-
.addClass('highcharts-drillup-button')
|
|
1508
|
-
.attr({
|
|
1509
|
-
align: buttonOptions.position.align,
|
|
1510
|
-
zIndex: 7
|
|
1511
|
-
})
|
|
1512
|
-
.add()
|
|
1513
|
-
.align(buttonOptions.position, false, buttonOptions.relativeTo || 'plotBox');
|
|
1514
|
-
}
|
|
1515
|
-
else {
|
|
1516
|
-
this.drillUpButton.placed = false;
|
|
1517
|
-
this.drillUpButton.attr({
|
|
1518
|
-
text: backText
|
|
1519
|
-
})
|
|
1520
|
-
.align();
|
|
1521
|
-
}
|
|
1522
|
-
};
|
|
1523
2524
|
/**
|
|
1524
2525
|
* Set the node's color recursively, from the parent down.
|
|
1525
2526
|
* @private
|
|
@@ -1762,7 +2763,6 @@
|
|
|
1762
2763
|
rootId = series.rootNode;
|
|
1763
2764
|
rootNode = series.nodeMap[rootId];
|
|
1764
2765
|
}
|
|
1765
|
-
series.renderTraverseUpButton(rootId);
|
|
1766
2766
|
series.mapOptionsToLevel = getLevelOptions({
|
|
1767
2767
|
from: rootNode.level + 1,
|
|
1768
2768
|
levels: options.levels,
|
|
@@ -1832,7 +2832,7 @@
|
|
|
1832
2832
|
* Treemap
|
|
1833
2833
|
*
|
|
1834
2834
|
* @extends plotOptions.scatter
|
|
1835
|
-
* @excluding
|
|
2835
|
+
* @excluding cluster, connectEnds, connectNulls, dataSorting, dragDrop, jitter, marker
|
|
1836
2836
|
* @product highcharts
|
|
1837
2837
|
* @requires modules/treemap
|
|
1838
2838
|
* @optionparent plotOptions.treemap
|
|
@@ -1869,6 +2869,16 @@
|
|
|
1869
2869
|
* The border radius for each treemap item.
|
|
1870
2870
|
*/
|
|
1871
2871
|
borderRadius: 0,
|
|
2872
|
+
/**
|
|
2873
|
+
* Options for the breadcrumbs, the navigation at the top leading the
|
|
2874
|
+
* way up through the traversed levels.
|
|
2875
|
+
*
|
|
2876
|
+
*
|
|
2877
|
+
* @since 10.0.0
|
|
2878
|
+
* @product highcharts
|
|
2879
|
+
* @extends navigation.breadcrumbs
|
|
2880
|
+
* @optionparent plotOptions.treemap.breadcrumbs
|
|
2881
|
+
*/
|
|
1872
2882
|
/**
|
|
1873
2883
|
* When the series contains less points than the crop threshold, all
|
|
1874
2884
|
* points are drawn, event if the points fall outside the visible plot
|
|
@@ -2032,52 +3042,12 @@
|
|
|
2032
3042
|
*/
|
|
2033
3043
|
levelIsConstant: true,
|
|
2034
3044
|
/**
|
|
2035
|
-
* Options for the button appearing when
|
|
2036
|
-
*
|
|
2037
|
-
*
|
|
3045
|
+
* Options for the button appearing when traversing down in a treemap.
|
|
3046
|
+
*
|
|
3047
|
+
* Since v9.3.3 the `traverseUpButton` is replaced by `breadcrumbs`.
|
|
2038
3048
|
*
|
|
2039
3049
|
* @deprecated
|
|
2040
3050
|
*/
|
|
2041
|
-
drillUpButton: {
|
|
2042
|
-
/**
|
|
2043
|
-
* The position of the button.
|
|
2044
|
-
*
|
|
2045
|
-
* @deprecated
|
|
2046
|
-
*/
|
|
2047
|
-
position: {
|
|
2048
|
-
/**
|
|
2049
|
-
* Vertical alignment of the button.
|
|
2050
|
-
*
|
|
2051
|
-
* @deprecated
|
|
2052
|
-
* @type {Highcharts.VerticalAlignValue}
|
|
2053
|
-
* @default top
|
|
2054
|
-
* @product highcharts
|
|
2055
|
-
* @apioption plotOptions.treemap.drillUpButton.position.verticalAlign
|
|
2056
|
-
*/
|
|
2057
|
-
/**
|
|
2058
|
-
* Horizontal alignment of the button.
|
|
2059
|
-
*
|
|
2060
|
-
* @deprecated
|
|
2061
|
-
* @type {Highcharts.AlignValue}
|
|
2062
|
-
*/
|
|
2063
|
-
align: 'right',
|
|
2064
|
-
/**
|
|
2065
|
-
* Horizontal offset of the button.
|
|
2066
|
-
*
|
|
2067
|
-
* @deprecated
|
|
2068
|
-
*/
|
|
2069
|
-
x: -10,
|
|
2070
|
-
/**
|
|
2071
|
-
* Vertical offset of the button.
|
|
2072
|
-
*
|
|
2073
|
-
* @deprecated
|
|
2074
|
-
*/
|
|
2075
|
-
y: 10
|
|
2076
|
-
}
|
|
2077
|
-
},
|
|
2078
|
-
/**
|
|
2079
|
-
* Options for the button appearing when traversing down in a treemap.
|
|
2080
|
-
*/
|
|
2081
3051
|
traverseUpButton: {
|
|
2082
3052
|
/**
|
|
2083
3053
|
* The position of the button.
|
|
@@ -2238,7 +3208,7 @@
|
|
|
2238
3208
|
*
|
|
2239
3209
|
* @type {Highcharts.ColorString}
|
|
2240
3210
|
*/
|
|
2241
|
-
borderColor: "#e6e6e6" /* neutralColor10 */,
|
|
3211
|
+
borderColor: "#e6e6e6" /* Palette.neutralColor10 */,
|
|
2242
3212
|
/**
|
|
2243
3213
|
* The width of the border surrounding each tree map item.
|
|
2244
3214
|
*/
|
|
@@ -2267,7 +3237,7 @@
|
|
|
2267
3237
|
/**
|
|
2268
3238
|
* The border color for the hovered state.
|
|
2269
3239
|
*/
|
|
2270
|
-
borderColor: "#999999" /* neutralColor40 */,
|
|
3240
|
+
borderColor: "#999999" /* Palette.neutralColor40 */,
|
|
2271
3241
|
/**
|
|
2272
3242
|
* Brightness for the hovered point. Defaults to 0 if the
|
|
2273
3243
|
* heatmap series is loaded first, otherwise 0.1.
|
|
@@ -2298,6 +3268,7 @@
|
|
|
2298
3268
|
}(ScatterSeries));
|
|
2299
3269
|
extend(TreemapSeries.prototype, {
|
|
2300
3270
|
buildKDTree: noop,
|
|
3271
|
+
colorAttribs: ColorMapComposition.seriesMembers.colorAttribs,
|
|
2301
3272
|
colorKey: 'colorValue',
|
|
2302
3273
|
directTouch: true,
|
|
2303
3274
|
drawLegendSymbol: LegendSymbol.drawRectangle,
|
|
@@ -2312,6 +3283,7 @@
|
|
|
2312
3283
|
recursive: TreemapUtilities.recursive
|
|
2313
3284
|
}
|
|
2314
3285
|
});
|
|
3286
|
+
ColorMapComposition.compose(TreemapSeries);
|
|
2315
3287
|
SeriesRegistry.registerSeriesType('treemap', TreemapSeries);
|
|
2316
3288
|
/* *
|
|
2317
3289
|
*
|
|
@@ -2409,7 +3381,7 @@
|
|
|
2409
3381
|
|
|
2410
3382
|
return TreemapSeries;
|
|
2411
3383
|
});
|
|
2412
|
-
_registerModule(_modules, 'Series/Sunburst/SunburstPoint.js', [_modules['
|
|
3384
|
+
_registerModule(_modules, 'Series/Sunburst/SunburstPoint.js', [_modules['Core/Series/SeriesRegistry.js'], _modules['Core/Utilities.js']], function (SeriesRegistry, U) {
|
|
2413
3385
|
/* *
|
|
2414
3386
|
*
|
|
2415
3387
|
* This module implements sunburst charts in Highcharts.
|
|
@@ -2526,7 +3498,6 @@
|
|
|
2526
3498
|
haloPath: Point.prototype.haloPath,
|
|
2527
3499
|
setState: Point.prototype.setState
|
|
2528
3500
|
});
|
|
2529
|
-
DrawPointComposition.compose(SunburstPoint);
|
|
2530
3501
|
/* *
|
|
2531
3502
|
*
|
|
2532
3503
|
* Defaul Export
|
|
@@ -3146,7 +4117,7 @@
|
|
|
3146
4117
|
if (s.dataLabelsGroup) {
|
|
3147
4118
|
s.dataLabelsGroup.animate({
|
|
3148
4119
|
opacity: 1,
|
|
3149
|
-
visibility: '
|
|
4120
|
+
visibility: 'inherit'
|
|
3150
4121
|
});
|
|
3151
4122
|
}
|
|
3152
4123
|
};
|
|
@@ -3322,7 +4293,7 @@
|
|
|
3322
4293
|
SunburstSeries.prototype.translate = function () {
|
|
3323
4294
|
var series = this,
|
|
3324
4295
|
options = series.options,
|
|
3325
|
-
positions = series.center = getCenter
|
|
4296
|
+
positions = series.center = series.getCenter(),
|
|
3326
4297
|
radians = series.startAndEndRadians = getStartAndEndRadians(options.startAngle,
|
|
3327
4298
|
options.endAngle),
|
|
3328
4299
|
innerRadius = positions[3] / 2,
|
|
@@ -3344,7 +4315,6 @@
|
|
|
3344
4315
|
// @todo Only if series.isDirtyData is true
|
|
3345
4316
|
tree = series.tree = series.getTree();
|
|
3346
4317
|
// Render traverseUpButton, after series.nodeMap i calculated.
|
|
3347
|
-
series.renderTraverseUpButton(rootId);
|
|
3348
4318
|
mapIdToNode = series.nodeMap;
|
|
3349
4319
|
nodeRoot = mapIdToNode[rootId];
|
|
3350
4320
|
idTop = isString(nodeRoot.parent) ? nodeRoot.parent : '';
|
|
@@ -3423,6 +4393,15 @@
|
|
|
3423
4393
|
* @private
|
|
3424
4394
|
*/
|
|
3425
4395
|
SunburstSeries.defaultOptions = merge(TreemapSeries.defaultOptions, {
|
|
4396
|
+
/**
|
|
4397
|
+
* Options for the breadcrumbs, the navigation at the top leading the
|
|
4398
|
+
* way up through the traversed levels.
|
|
4399
|
+
*
|
|
4400
|
+
* @since 10.0.0
|
|
4401
|
+
* @product highcharts
|
|
4402
|
+
* @extends navigation.breadcrumbs
|
|
4403
|
+
* @optionparent plotOptions.sunburst.breadcrumbs
|
|
4404
|
+
*/
|
|
3426
4405
|
/**
|
|
3427
4406
|
* Set options on specific levels. Takes precedence over series options,
|
|
3428
4407
|
* but not point options.
|
|
@@ -3619,11 +4598,14 @@
|
|
|
3619
4598
|
unit: 'weight'
|
|
3620
4599
|
},
|
|
3621
4600
|
/**
|
|
3622
|
-
* Options for the button appearing when traversing down in a
|
|
4601
|
+
* Options for the button appearing when traversing down in a sunburst.
|
|
4602
|
+
* Since v9.3.3 the `traverseUpButton` is replaced by `breadcrumbs`.
|
|
3623
4603
|
*
|
|
3624
4604
|
* @extends plotOptions.treemap.traverseUpButton
|
|
3625
4605
|
* @since 6.0.0
|
|
4606
|
+
* @deprecated
|
|
3626
4607
|
* @apioption plotOptions.sunburst.traverseUpButton
|
|
4608
|
+
*
|
|
3627
4609
|
*/
|
|
3628
4610
|
/**
|
|
3629
4611
|
* If a point is sliced, moved out from the center, how many pixels
|
|
@@ -3640,6 +4622,9 @@
|
|
|
3640
4622
|
}(TreemapSeries));
|
|
3641
4623
|
extend(SunburstSeries.prototype, {
|
|
3642
4624
|
drawDataLabels: noop,
|
|
4625
|
+
getCenter: getCenter,
|
|
4626
|
+
// Mark that the sunburst is supported by the series on point feature.
|
|
4627
|
+
onPointSupported: true,
|
|
3643
4628
|
pointAttribs: ColumnSeries.prototype.pointAttribs,
|
|
3644
4629
|
pointClass: SunburstPoint,
|
|
3645
4630
|
utils: SunburstUtilities
|