highcharts 11.3.0 → 11.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/bower.json +1 -1
- package/css/annotations/popup.css +27 -19
- package/css/stocktools/gui.css +19 -7
- package/es-modules/Accessibility/A11yI18n.js +4 -6
- package/es-modules/Accessibility/Accessibility.js +8 -6
- package/es-modules/Accessibility/Components/InfoRegionsComponent.js +11 -6
- package/es-modules/Accessibility/Components/LegendComponent.js +4 -4
- package/es-modules/Accessibility/Components/MenuComponent.js +3 -6
- package/es-modules/Accessibility/Components/NavigatorComponent.js +6 -3
- package/es-modules/Accessibility/Components/RangeSelectorComponent.js +4 -7
- package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +18 -3
- package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +5 -3
- package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +4 -4
- package/es-modules/Accessibility/FocusBorder.js +5 -5
- package/es-modules/Accessibility/HighContrastMode.js +22 -13
- package/es-modules/Accessibility/HighContrastTheme.js +2 -6
- package/es-modules/Accessibility/KeyboardNavigation.js +17 -8
- package/es-modules/Accessibility/Options/A11yDefaults.js +11 -1
- package/es-modules/Accessibility/ProxyElement.js +4 -4
- package/es-modules/Accessibility/ProxyProvider.js +8 -2
- package/es-modules/Accessibility/Utils/DOMElementProvider.js +8 -0
- package/es-modules/Accessibility/Utils/EventProvider.js +9 -0
- package/es-modules/Core/Animation/Fx.js +3 -3
- package/es-modules/Core/Axis/Axis.js +43 -97
- package/es-modules/Core/Axis/Axis3DComposition.js +5 -5
- package/es-modules/Core/Axis/Axis3DDefaults.js +1 -1
- package/es-modules/Core/Axis/AxisDefaults.js +18 -7
- package/es-modules/Core/Axis/BrokenAxis.js +4 -6
- package/es-modules/Core/Axis/Color/ColorAxis.js +2 -1
- package/es-modules/Core/Axis/Color/ColorAxisComposition.js +3 -5
- package/es-modules/Core/Axis/DateTimeAxis.js +3 -5
- package/es-modules/Core/Axis/GridAxis.js +7 -7
- package/es-modules/Core/Axis/LogarithmicAxis.js +2 -4
- package/es-modules/Core/Axis/NavigatorAxisComposition.js +26 -22
- package/es-modules/Core/Axis/OrdinalAxis.js +97 -53
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
- package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBandAxis.js +4 -5
- package/es-modules/Core/Axis/RadialAxis.js +5 -5
- package/es-modules/Core/Axis/ScrollbarAxis.js +2 -2
- package/es-modules/Core/Axis/Stacking/StackItem.js +8 -4
- package/es-modules/Core/Axis/Stacking/StackingAxis.js +3 -5
- package/es-modules/Core/Axis/Tick.js +16 -7
- package/es-modules/Core/Axis/Tick3DComposition.js +2 -2
- package/es-modules/Core/Axis/TreeGrid/TreeGridAxis.js +4 -8
- package/es-modules/Core/Axis/TreeGrid/TreeGridTick.js +3 -6
- package/es-modules/Core/Axis/WaterfallAxis.js +3 -3
- package/es-modules/Core/Axis/ZAxis.js +6 -11
- package/es-modules/Core/Chart/Chart.js +201 -176
- package/es-modules/Core/Chart/Chart3D.js +1 -1
- package/es-modules/Core/Chart/ChartDefaults.js +7 -0
- package/es-modules/Core/Chart/GanttChart.js +2 -2
- package/es-modules/Core/Chart/MapChart.js +12 -2
- package/es-modules/Core/Chart/StockChart.js +12 -11
- package/es-modules/Core/Color/Color.js +3 -3
- package/es-modules/Core/Color/Palettes.js +2 -2
- package/es-modules/Core/Defaults.js +18 -15
- package/es-modules/Core/Geometry/CircleUtilities.js +3 -3
- package/es-modules/Core/Globals.js +2 -2
- package/es-modules/Core/HttpUtilities.js +4 -4
- package/es-modules/Core/Legend/Legend.js +6 -6
- package/es-modules/Core/MSPointer.js +7 -7
- package/es-modules/Core/Pointer.js +230 -245
- package/es-modules/Core/Renderer/HTML/AST.js +1 -1
- package/es-modules/Core/Renderer/HTML/HTMLElement.js +213 -26
- package/es-modules/Core/Renderer/RendererUtilities.js +1 -1
- package/es-modules/Core/Renderer/SVG/SVGElement.js +85 -52
- package/es-modules/Core/Renderer/SVG/SVGLabel.js +14 -11
- package/es-modules/Core/Renderer/SVG/SVGRenderer.js +17 -14
- package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +8 -7
- package/es-modules/Core/Renderer/SVG/Symbols.js +1 -1
- package/es-modules/Core/Renderer/SVG/TextBuilder.js +2 -2
- package/es-modules/Core/Responsive.js +5 -6
- package/es-modules/Core/Series/DataLabel.js +70 -90
- package/es-modules/Core/Series/DataSeriesComposition.js +1 -1
- package/es-modules/Core/Series/DataSeriesConverter.js +2 -2
- package/es-modules/Core/Series/Point.js +48 -40
- package/es-modules/Core/Series/Series.js +61 -51
- package/es-modules/Core/Series/Series3D.js +2 -2
- package/es-modules/Core/Series/SeriesRegistry.js +10 -2
- package/es-modules/Core/Templating.js +1 -1
- package/es-modules/Core/Time.js +12 -7
- package/es-modules/Core/Tooltip.js +19 -17
- package/es-modules/Core/Utilities.js +54 -26
- package/es-modules/Data/Connectors/CSVConnector.js +2 -2
- package/es-modules/Data/Connectors/DataConnector.js +4 -2
- package/es-modules/Data/Connectors/GoogleSheetsConnector.js +2 -2
- package/es-modules/Data/Connectors/HTMLTableConnector.js +2 -2
- package/es-modules/Data/Connectors/JSONConnector.js +3 -5
- package/es-modules/Data/Converters/CSVConverter.js +1 -3
- package/es-modules/Data/Converters/DataConverter.js +8 -2
- package/es-modules/Data/Converters/HTMLTableConverter.js +1 -3
- package/es-modules/Data/Converters/JSONConverter.js +1 -0
- package/es-modules/Data/DataTable.js +1 -2
- package/es-modules/Data/Formula/FormulaProcessor.js +4 -2
- package/es-modules/Data/Modifiers/DataModifier.js +15 -3
- package/es-modules/Extensions/Annotations/Annotation.js +6 -7
- package/es-modules/Extensions/Annotations/AnnotationChart.js +4 -5
- package/es-modules/Extensions/Annotations/AnnotationDefaults.js +4 -4
- package/es-modules/Extensions/Annotations/ControlPoint.js +2 -2
- package/es-modules/Extensions/Annotations/ControlTarget.js +1 -1
- package/es-modules/Extensions/Annotations/Controllables/Controllable.js +7 -3
- package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +3 -3
- package/es-modules/Extensions/Annotations/Controllables/ControllableLabel.js +8 -9
- package/es-modules/Extensions/Annotations/Controllables/ControllablePath.js +3 -4
- package/es-modules/Extensions/Annotations/EventEmitter.js +6 -6
- package/es-modules/Extensions/Annotations/NavigationBindings.js +29 -18
- package/es-modules/Extensions/Annotations/NavigationBindingsDefaults.js +6 -6
- package/es-modules/Extensions/Annotations/Popup/Popup.js +1 -1
- package/es-modules/Extensions/Annotations/Popup/PopupAnnotations.js +10 -6
- package/es-modules/Extensions/Annotations/Popup/PopupComposition.js +2 -2
- package/es-modules/Extensions/Annotations/Popup/PopupIndicators.js +31 -31
- package/es-modules/Extensions/Annotations/Popup/PopupTabs.js +1 -1
- package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +14 -11
- package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +1 -1
- package/es-modules/Extensions/Annotations/Types/Measure.js +1 -1
- package/es-modules/Extensions/ArrowSymbols.js +7 -13
- package/es-modules/Extensions/Boost/Boost.js +39 -7
- package/es-modules/Extensions/Boost/BoostChart.js +4 -4
- package/es-modules/Extensions/Boost/BoostSeries.js +58 -13
- package/es-modules/Extensions/Boost/WGLRenderer.js +3 -3
- package/es-modules/Extensions/Boost/WGLVertexBuffer.js +1 -1
- package/es-modules/Extensions/BoostCanvas.js +5 -4
- package/es-modules/Extensions/BorderRadius.js +5 -4
- package/es-modules/Extensions/Breadcrumbs/Breadcrumbs.js +9 -9
- package/es-modules/Extensions/CurrentDateIndication.js +1 -1
- package/es-modules/Extensions/Data.js +11 -11
- package/es-modules/Extensions/DataGrouping/DataGrouping.js +1 -1
- package/es-modules/Extensions/DataGrouping/DataGroupingAxisComposition.js +8 -9
- package/es-modules/Extensions/DataGrouping/DataGroupingDefaults.js +1 -1
- package/es-modules/Extensions/DataGrouping/DataGroupingSeriesComposition.js +6 -7
- package/es-modules/Extensions/Debugger/Debugger.js +1 -1
- package/es-modules/Extensions/Debugger/ErrorMessages.js +2 -2
- package/es-modules/Extensions/DragPanes/AxisResizer.js +13 -16
- package/es-modules/Extensions/DragPanes/DragPanes.js +2 -4
- package/es-modules/Extensions/DraggablePoints/DragDropDefaults.js +2 -1
- package/es-modules/Extensions/DraggablePoints/DragDropUtilities.js +1 -1
- package/es-modules/Extensions/DraggablePoints/DraggableChart.js +4 -4
- package/es-modules/Extensions/DraggablePoints/DraggablePoints.js +8 -9
- package/es-modules/Extensions/Drilldown/Drilldown.js +11 -9
- package/es-modules/Extensions/Drilldown/DrilldownSeries.js +5 -6
- package/es-modules/Extensions/ExportData/ExportData.js +27 -18
- package/es-modules/Extensions/Exporting/Exporting.js +25 -20
- package/es-modules/Extensions/Exporting/ExportingDefaults.js +1 -1
- package/es-modules/Extensions/Exporting/Fullscreen.js +5 -10
- package/es-modules/Extensions/MarkerClusters/MarkerClusterScatter.js +26 -21
- package/es-modules/Extensions/MarkerClusters/MarkerClusterSymbols.js +2 -12
- package/es-modules/Extensions/MarkerClusters/MarkerClusters.js +3 -3
- package/es-modules/Extensions/MouseWheelZoom/MouseWheelZoom.js +51 -161
- package/es-modules/Extensions/NoDataToDisplay/NoDataToDisplay.js +3 -5
- package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +5 -6
- package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
- package/es-modules/Extensions/OverlappingDataLabels.js +21 -49
- package/es-modules/Extensions/Pane/PaneComposition.js +3 -5
- package/es-modules/Extensions/ParallelCoordinates/ParallelAxis.js +2 -4
- package/es-modules/Extensions/ParallelCoordinates/ParallelCoordinates.js +5 -6
- package/es-modules/Extensions/ParallelCoordinates/ParallelSeries.js +1 -1
- package/es-modules/Extensions/PatternFill.js +19 -22
- package/es-modules/Extensions/PriceIndication.js +1 -1
- package/es-modules/Extensions/ScrollablePlotArea.js +218 -292
- package/es-modules/Extensions/SeriesLabel/SeriesLabel.js +26 -18
- package/es-modules/Extensions/Sonification/Options.js +1 -0
- package/es-modules/Extensions/Sonification/SonificationSpeaker.js +2 -2
- package/es-modules/Extensions/Sonification/SynthPatch.js +3 -3
- package/es-modules/Extensions/StaticScale.js +3 -5
- package/es-modules/Gantt/Legacy.js +1 -1
- package/es-modules/Gantt/Pathfinder.js +2 -2
- package/es-modules/Gantt/PathfinderComposition.js +3 -5
- package/es-modules/Gantt/Tree.js +3 -3
- package/es-modules/Maps/GeoJSONComposition.js +20 -13
- package/es-modules/Maps/MapNavigation.js +2 -2
- package/es-modules/Maps/MapPointer.js +3 -19
- package/es-modules/Maps/MapSymbols.js +3 -9
- package/es-modules/Maps/MapView.js +134 -74
- package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +5 -4
- package/es-modules/Series/Area/AreaSeries.js +2 -4
- package/es-modules/Series/Area3D/Area3DSeries.js +1 -1
- package/es-modules/Series/AreaRange/AreaRangePoint.js +2 -2
- package/es-modules/Series/AreaRange/AreaRangeSeries.js +2 -3
- package/es-modules/Series/AreaSpline/AreaSplineSeries.js +1 -1
- package/es-modules/Series/Bar/BarSeries.js +1 -1
- package/es-modules/Series/Bellcurve/BellcurveSeries.js +1 -1
- package/es-modules/Series/BoxPlot/BoxPlotSeriesDefaults.js +4 -0
- package/es-modules/Series/Bubble/BubbleLegendComposition.js +1 -1
- package/es-modules/Series/Bubble/BubbleLegendDefaults.js +2 -2
- package/es-modules/Series/Bubble/BubbleLegendItem.js +3 -3
- package/es-modules/Series/Bubble/BubbleSeries.js +1 -1
- package/es-modules/Series/Bullet/BulletSeriesDefaults.js +2 -2
- package/es-modules/Series/Candlestick/CandlestickSeries.js +2 -2
- package/es-modules/Series/Candlestick/CandlestickSeriesDefaults.js +1 -5
- package/es-modules/Series/ColorMapComposition.js +1 -1
- package/es-modules/Series/Column/ColumnDataLabel.js +2 -2
- package/es-modules/Series/Column/ColumnSeries.js +20 -22
- package/es-modules/Series/Column/ColumnSeriesDefaults.js +1 -1
- package/es-modules/Series/Column3D/Column3DComposition.js +1 -1
- package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +2 -1
- package/es-modules/Series/Cylinder/CylinderComposition.js +9 -9
- package/es-modules/Series/DataModifyComposition.js +5 -5
- package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +3 -2
- package/es-modules/Series/DependencyWheel/DependencyWheelSeriesDefaults.js +1 -1
- package/es-modules/Series/DragNodesComposition.js +7 -7
- package/es-modules/Series/DrawPointUtilities.js +0 -2
- package/es-modules/Series/Dumbbell/DumbbellSeriesDefaults.js +1 -1
- package/es-modules/Series/Funnel/FunnelSeries.js +1 -1
- package/es-modules/Series/Funnel3D/Funnel3DComposition.js +6 -6
- package/es-modules/Series/Funnel3D/Funnel3DSeriesDefaults.js +2 -2
- package/es-modules/Series/Funnel3D/SVGElement3DFunnel.js +1 -1
- package/es-modules/Series/Gantt/GanttSeries.js +0 -1
- package/es-modules/Series/GeoHeatmap/GeoHeatmapSeries.js +5 -5
- package/es-modules/Series/GraphLayoutComposition.js +1 -1
- package/es-modules/Series/Heatmap/HeatmapSeries.js +2 -2
- package/es-modules/Series/Heatmap/HeatmapSeriesDefaults.js +1 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
- package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -3
- package/es-modules/Series/HeikinAshi/HeikinAshiSeriesDefaults.js +1 -1
- package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +2 -2
- package/es-modules/Series/Item/ItemSeries.js +1 -1
- package/es-modules/Series/Line/LineSeries.js +1 -1
- package/es-modules/Series/Lollipop/LollipopSeries.js +3 -1
- package/es-modules/Series/Map/MapPoint.js +5 -1
- package/es-modules/Series/Map/MapSeries.js +32 -7
- package/es-modules/Series/Map/MapSeriesDefaults.js +5 -3
- package/es-modules/Series/Networkgraph/EulerIntegration.js +5 -5
- package/es-modules/Series/Networkgraph/NetworkgraphSeries.js +4 -4
- package/es-modules/Series/Networkgraph/NetworkgraphSeriesDefaults.js +5 -5
- package/es-modules/Series/Networkgraph/QuadTree.js +1 -1
- package/es-modules/Series/Networkgraph/QuadTreeNode.js +1 -1
- package/es-modules/Series/Networkgraph/VerletIntegration.js +9 -9
- package/es-modules/Series/NodesComposition.js +1 -1
- package/es-modules/Series/OHLC/OHLCSeries.js +1 -1
- package/es-modules/Series/OHLC/OHLCSeriesDefaults.js +1 -1
- package/es-modules/Series/OnSeriesComposition.js +1 -1
- package/es-modules/Series/Organization/OrganizationPoint.js +1 -1
- package/es-modules/Series/Organization/OrganizationSeries.js +22 -10
- package/es-modules/Series/Organization/OrganizationSeriesDefaults.js +15 -2
- package/es-modules/Series/PackedBubble/PackedBubbleLayout.js +3 -5
- package/es-modules/Series/PackedBubble/PackedBubblePoint.js +1 -1
- package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +6 -10
- package/es-modules/Series/Pictorial/PictorialSeries.js +2 -2
- package/es-modules/Series/Pie/PieDataLabel.js +2 -2
- package/es-modules/Series/Pie/PiePoint.js +1 -1
- package/es-modules/Series/Pie/PieSeries.js +10 -1
- package/es-modules/Series/Pie/PieSeriesDefaults.js +1 -1
- package/es-modules/Series/Pie3D/Pie3DSeries.js +2 -2
- package/es-modules/Series/PolarComposition.js +22 -20
- package/es-modules/Series/Sankey/SankeyColumnComposition.js +1 -1
- package/es-modules/Series/Sankey/SankeySeries.js +8 -8
- package/es-modules/Series/Sankey/SankeySeriesDefaults.js +57 -13
- package/es-modules/Series/SeriesOnPointComposition.js +3 -3
- package/es-modules/Series/Spline/SplineSeries.js +1 -1
- package/es-modules/Series/Sunburst/SunburstPoint.js +1 -1
- package/es-modules/Series/Sunburst/SunburstSeries.js +2 -7
- package/es-modules/Series/Sunburst/SunburstSeriesDefaults.js +3 -3
- package/es-modules/Series/Sunburst/SunburstUtilities.js +1 -1
- package/es-modules/Series/TiledWebMap/TiledWebMapSeries.js +23 -25
- package/es-modules/Series/Tilemap/TilemapSeries.js +2 -2
- package/es-modules/Series/Timeline/TimelineSeries.js +2 -2
- package/es-modules/Series/TreeUtilities.js +23 -1
- package/es-modules/Series/Treegraph/TreegraphLayout.js +7 -11
- package/es-modules/Series/Treegraph/TreegraphPoint.js +1 -0
- package/es-modules/Series/Treegraph/TreegraphSeries.js +8 -8
- package/es-modules/Series/Treegraph/TreegraphSeriesDefaults.js +39 -2
- package/es-modules/Series/Treemap/TreemapSeries.js +4 -2
- package/es-modules/Series/Treemap/TreemapUtilities.js +0 -7
- package/es-modules/Series/Variwide/VariwideComposition.js +6 -2
- package/es-modules/Series/Variwide/VariwideSeries.js +1 -1
- package/es-modules/Series/Venn/VennSeries.js +4 -4
- package/es-modules/Series/Venn/VennUtils.js +5 -6
- package/es-modules/Series/Waterfall/WaterfallSeriesDefaults.js +1 -1
- package/es-modules/Series/Windbarb/WindbarbSeries.js +1 -1
- package/es-modules/Series/Wordcloud/WordcloudUtils.js +6 -4
- package/es-modules/Series/XRange/XRangePoint.js +2 -2
- package/es-modules/Series/XRange/XRangeSeries.js +1 -1
- package/es-modules/Shared/BaseForm.js +1 -1
- package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
- package/es-modules/Stock/Indicators/APO/APOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +1 -1
- package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +1 -1
- package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +2 -2
- package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +1 -1
- package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +1 -1
- package/es-modules/Stock/Indicators/LinearRegression/LinearRegressionIndicator.js +7 -7
- package/es-modules/Stock/Indicators/MultipleLinesComposition.js +9 -9
- package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +1 -1
- package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +1 -1
- package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +2 -2
- package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +16 -17
- package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +4 -5
- package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +1 -1
- package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +5 -5
- package/es-modules/Stock/Navigator/ChartNavigatorComposition.js +188 -0
- package/es-modules/Stock/Navigator/Navigator.js +42 -27
- package/es-modules/Stock/Navigator/NavigatorComposition.js +10 -149
- package/es-modules/Stock/Navigator/NavigatorDefaults.js +16 -2
- package/es-modules/Stock/Navigator/StandaloneNavigator.js +334 -0
- package/es-modules/Stock/Navigator/StandaloneNavigatorDefaults.js +64 -0
- package/es-modules/Stock/RangeSelector/RangeSelector.js +28 -16
- package/es-modules/Stock/RangeSelector/RangeSelectorComposition.js +2 -2
- package/es-modules/Stock/Scrollbar/Scrollbar.js +10 -10
- package/es-modules/Stock/Scrollbar/ScrollbarDefaults.js +1 -3
- package/es-modules/Stock/StockTools/StockToolbar.js +6 -5
- package/es-modules/Stock/StockTools/StockTools.js +10 -13
- package/es-modules/Stock/StockTools/StockToolsBindings.js +35 -35
- package/es-modules/Stock/StockTools/StockToolsDefaults.js +2 -1
- package/es-modules/Stock/StockTools/StockToolsGui.js +7 -8
- package/es-modules/Stock/StockTools/StockToolsUtilities.js +8 -9
- package/es-modules/Stock/Utilities/StockUtilities.js +41 -0
- package/es-modules/masters/highcharts-3d.src.js +2 -1
- package/es-modules/masters/highcharts-gantt.src.js +1 -1
- package/es-modules/masters/highcharts-more.src.js +2 -1
- package/es-modules/masters/highcharts.src.js +41 -40
- package/es-modules/masters/highmaps.src.js +1 -1
- package/es-modules/masters/highstock.src.js +1 -1
- package/es-modules/masters/indicators/acceleration-bands.src.js +3 -1
- package/es-modules/masters/indicators/accumulation-distribution.src.js +3 -1
- package/es-modules/masters/indicators/ao.src.js +3 -1
- package/es-modules/masters/indicators/apo.src.js +3 -1
- package/es-modules/masters/indicators/aroon-oscillator.src.js +3 -1
- package/es-modules/masters/indicators/aroon.src.js +3 -1
- package/es-modules/masters/indicators/atr.src.js +3 -1
- package/es-modules/masters/indicators/bollinger-bands.src.js +3 -1
- package/es-modules/masters/indicators/cci.src.js +3 -1
- package/es-modules/masters/indicators/chaikin.src.js +3 -1
- package/es-modules/masters/indicators/cmf.src.js +3 -1
- package/es-modules/masters/indicators/cmo.src.js +3 -1
- package/es-modules/masters/indicators/dema.src.js +3 -1
- package/es-modules/masters/indicators/disparity-index.src.js +3 -1
- package/es-modules/masters/indicators/dmi.src.js +3 -1
- package/es-modules/masters/indicators/dpo.src.js +3 -1
- package/es-modules/masters/indicators/ema.src.js +2 -0
- package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +3 -1
- package/es-modules/masters/indicators/indicators-all.src.js +3 -1
- package/es-modules/masters/indicators/indicators.src.js +7 -1
- package/es-modules/masters/indicators/keltner-channels.src.js +3 -1
- package/es-modules/masters/indicators/klinger.src.js +3 -1
- package/es-modules/masters/indicators/macd.src.js +3 -1
- package/es-modules/masters/indicators/mfi.src.js +3 -1
- package/es-modules/masters/indicators/momentum.src.js +3 -1
- package/es-modules/masters/indicators/natr.src.js +3 -1
- package/es-modules/masters/indicators/obv.src.js +3 -1
- package/es-modules/masters/indicators/pivot-points.src.js +3 -1
- package/es-modules/masters/indicators/ppo.src.js +3 -1
- package/es-modules/masters/indicators/price-channel.src.js +3 -1
- package/es-modules/masters/indicators/price-envelopes.src.js +3 -1
- package/es-modules/masters/indicators/psar.src.js +3 -1
- package/es-modules/masters/indicators/regressions.src.js +3 -1
- package/es-modules/masters/indicators/roc.src.js +3 -1
- package/es-modules/masters/indicators/rsi.src.js +3 -1
- package/es-modules/masters/indicators/slow-stochastic.src.js +3 -1
- package/es-modules/masters/indicators/stochastic.src.js +3 -1
- package/es-modules/masters/indicators/supertrend.src.js +3 -1
- package/es-modules/masters/indicators/tema.src.js +3 -1
- package/es-modules/masters/indicators/trendline.src.js +3 -1
- package/es-modules/masters/indicators/trix.src.js +3 -1
- package/es-modules/masters/indicators/volume-by-price.src.js +3 -1
- package/es-modules/masters/indicators/vwap.src.js +3 -1
- package/es-modules/masters/indicators/williams-r.src.js +3 -1
- package/es-modules/masters/indicators/wma.src.js +3 -1
- package/es-modules/masters/indicators/zigzag.src.js +3 -1
- package/es-modules/masters/modules/accessibility.src.js +4 -1
- package/es-modules/masters/modules/annotations-advanced.src.js +3 -5
- package/es-modules/masters/modules/annotations.src.js +6 -3
- package/es-modules/masters/modules/arc-diagram.src.js +3 -1
- package/es-modules/masters/modules/arrow-symbols.src.js +2 -1
- package/es-modules/masters/modules/boost-canvas.src.js +2 -1
- package/es-modules/masters/modules/boost.src.js +3 -2
- package/es-modules/masters/modules/broken-axis.src.js +4 -3
- package/es-modules/masters/modules/bullet.src.js +3 -1
- package/es-modules/masters/modules/coloraxis.src.js +4 -3
- package/es-modules/masters/modules/current-date-indicator.src.js +2 -1
- package/es-modules/masters/modules/cylinder.src.js +3 -1
- package/es-modules/masters/modules/data-tools.src.js +9 -8
- package/es-modules/masters/modules/data.src.js +9 -8
- package/es-modules/masters/modules/datagrouping.src.js +7 -5
- package/es-modules/masters/modules/debugger.src.js +3 -2
- package/es-modules/masters/modules/dependency-wheel.src.js +3 -1
- package/es-modules/masters/modules/dotplot.src.js +3 -1
- package/es-modules/masters/modules/drag-panes.src.js +2 -1
- package/es-modules/masters/modules/draggable-points.src.js +2 -1
- package/es-modules/masters/modules/drilldown.src.js +3 -2
- package/es-modules/masters/modules/dumbbell.src.js +3 -1
- package/es-modules/masters/modules/export-data.src.js +5 -4
- package/es-modules/masters/modules/exporting.src.js +6 -5
- package/es-modules/masters/modules/flowmap.src.js +3 -1
- package/es-modules/masters/modules/full-screen.src.js +4 -3
- package/es-modules/masters/modules/funnel.src.js +2 -1
- package/es-modules/masters/modules/funnel3d.src.js +4 -3
- package/es-modules/masters/modules/gantt.src.js +15 -17
- package/es-modules/masters/modules/geoheatmap.src.js +3 -1
- package/es-modules/masters/modules/grid-axis.src.js +2 -1
- package/es-modules/masters/modules/heatmap.src.js +3 -5
- package/es-modules/masters/modules/heikinashi.src.js +2 -1
- package/es-modules/masters/modules/histogram-bellcurve.src.js +3 -1
- package/es-modules/masters/modules/hollowcandlestick.src.js +3 -1
- package/es-modules/masters/modules/item-series.src.js +3 -1
- package/es-modules/masters/modules/lollipop.src.js +3 -1
- package/es-modules/masters/modules/map.src.js +15 -10
- package/es-modules/masters/modules/marker-clusters.src.js +2 -1
- package/es-modules/masters/modules/mouse-wheel-zoom.src.js +4 -2
- package/es-modules/masters/modules/navigator.src.d.ts +1 -0
- package/es-modules/masters/modules/navigator.src.js +19 -0
- package/es-modules/masters/modules/networkgraph.src.js +2 -1
- package/es-modules/masters/modules/no-data-to-display.src.js +2 -1
- package/es-modules/masters/modules/offline-exporting.src.js +4 -3
- package/es-modules/masters/modules/organization.src.js +3 -1
- package/es-modules/masters/modules/overlapping-datalabels.src.js +4 -2
- package/es-modules/masters/modules/parallel-coordinates.src.js +2 -1
- package/es-modules/masters/modules/pareto.src.js +3 -1
- package/es-modules/masters/modules/pathfinder.src.js +4 -3
- package/es-modules/masters/modules/pattern-fill.src.js +2 -1
- package/es-modules/masters/modules/pictorial.src.js +3 -1
- package/es-modules/masters/modules/price-indicator.src.js +2 -1
- package/es-modules/masters/modules/pyramid3d.src.js +3 -1
- package/es-modules/masters/modules/sankey.src.js +3 -1
- package/es-modules/masters/modules/series-label.src.js +2 -1
- package/es-modules/masters/modules/series-on-point.src.js +2 -1
- package/es-modules/masters/modules/solid-gauge.src.js +3 -1
- package/es-modules/masters/modules/sonification.src.js +2 -1
- package/es-modules/masters/modules/static-scale.src.js +2 -1
- package/es-modules/masters/modules/stock-tools.src.js +5 -3
- package/es-modules/masters/modules/stock.src.js +20 -15
- package/es-modules/masters/modules/streamgraph.src.js +3 -1
- package/es-modules/masters/modules/sunburst.src.js +4 -3
- package/es-modules/masters/modules/tiledwebmap.src.js +5 -4
- package/es-modules/masters/modules/tilemap.src.js +2 -1
- package/es-modules/masters/modules/timeline.src.js +3 -1
- package/es-modules/masters/modules/treegraph.src.js +3 -1
- package/es-modules/masters/modules/treegrid.src.js +2 -2
- package/es-modules/masters/modules/treemap.src.js +5 -4
- package/es-modules/masters/modules/variable-pie.src.js +3 -1
- package/es-modules/masters/modules/variwide.src.js +2 -1
- package/es-modules/masters/modules/vector.src.js +3 -1
- package/es-modules/masters/modules/venn.src.js +3 -1
- package/es-modules/masters/modules/windbarb.src.js +3 -1
- package/es-modules/masters/modules/wordcloud.src.js +3 -1
- package/es-modules/masters/modules/xrange.src.js +2 -1
- package/es-modules/masters/standalone-navigator.src.js +13 -0
- package/es-modules/masters/themes/avocado.src.js +2 -1
- package/es-modules/masters/themes/brand-dark.src.js +2 -1
- package/es-modules/masters/themes/brand-light.src.js +2 -1
- package/es-modules/masters/themes/dark-blue.src.js +2 -1
- package/es-modules/masters/themes/dark-green.src.js +2 -1
- package/es-modules/masters/themes/dark-unica.src.js +2 -1
- package/es-modules/masters/themes/gray.src.js +2 -1
- package/es-modules/masters/themes/grid-light.src.js +2 -1
- package/es-modules/masters/themes/grid.src.js +2 -1
- package/es-modules/masters/themes/high-contrast-dark.src.js +2 -1
- package/es-modules/masters/themes/high-contrast-light.src.js +2 -1
- package/es-modules/masters/themes/sand-signika.src.js +2 -1
- package/es-modules/masters/themes/skies.src.js +2 -1
- package/es-modules/masters/themes/sunset.src.js +2 -1
- package/es-modules/tsconfig.tsbuildinfo +1 -0
- package/globals.d.ts +9 -0
- package/globals.src.d.ts +9 -0
- package/highcharts-3d.js +3 -3
- package/highcharts-3d.src.js +32 -33
- package/highcharts-gantt.js +4 -4
- package/highcharts-gantt.src.js +5703 -5639
- package/highcharts-more.d.ts +4 -0
- package/highcharts-more.js +3 -3
- package/highcharts-more.src.d.ts +4 -0
- package/highcharts-more.src.js +88 -87
- package/highcharts.d.ts +834 -5365
- package/highcharts.js +4 -4
- package/highcharts.src.d.ts +834 -5365
- package/highcharts.src.js +1583 -1682
- package/highmaps.js +4 -4
- package/highmaps.src.js +1837 -1835
- package/highstock.js +4 -4
- package/highstock.src.js +12488 -12510
- package/indicators/acceleration-bands.js +3 -3
- package/indicators/acceleration-bands.src.js +12 -11
- package/indicators/accumulation-distribution.js +3 -3
- package/indicators/accumulation-distribution.src.js +6 -3
- package/indicators/ao.js +3 -3
- package/indicators/ao.src.js +3 -2
- package/indicators/apo.js +3 -3
- package/indicators/apo.src.js +4 -3
- package/indicators/aroon-oscillator.js +3 -3
- package/indicators/aroon-oscillator.src.js +12 -11
- package/indicators/aroon.js +3 -3
- package/indicators/aroon.src.js +13 -12
- package/indicators/atr.js +3 -3
- package/indicators/atr.src.js +3 -2
- package/indicators/bollinger-bands.js +3 -3
- package/indicators/bollinger-bands.src.js +12 -11
- package/indicators/cci.js +3 -3
- package/indicators/cci.src.js +3 -2
- package/indicators/chaikin.js +3 -3
- package/indicators/chaikin.src.js +7 -4
- package/indicators/cmf.js +3 -3
- package/indicators/cmf.src.js +4 -3
- package/indicators/cmo.js +3 -3
- package/indicators/cmo.src.js +5 -4
- package/indicators/dema.js +3 -3
- package/indicators/dema.src.js +3 -2
- package/indicators/disparity-index.js +3 -3
- package/indicators/disparity-index.src.js +3 -2
- package/indicators/dmi.js +3 -3
- package/indicators/dmi.src.js +12 -11
- package/indicators/dpo.js +3 -3
- package/indicators/dpo.src.js +4 -3
- package/indicators/ema.js +1 -1
- package/indicators/ema.src.js +2 -1
- package/indicators/ichimoku-kinko-hyo.js +3 -3
- package/indicators/ichimoku-kinko-hyo.src.js +3 -2
- package/indicators/indicators-all.js +3 -3
- package/indicators/indicators-all.src.js +63 -60
- package/indicators/indicators.js +3 -3
- package/indicators/indicators.src.js +286 -3
- package/indicators/keltner-channels.js +3 -3
- package/indicators/keltner-channels.src.js +12 -11
- package/indicators/klinger.js +3 -3
- package/indicators/klinger.src.js +13 -12
- package/indicators/macd.js +3 -3
- package/indicators/macd.src.js +3 -2
- package/indicators/mfi.js +3 -3
- package/indicators/mfi.src.js +3 -2
- package/indicators/momentum.js +3 -3
- package/indicators/momentum.src.js +3 -2
- package/indicators/natr.js +3 -3
- package/indicators/natr.src.js +3 -2
- package/indicators/obv.js +3 -3
- package/indicators/obv.src.js +4 -3
- package/indicators/pivot-points.js +3 -3
- package/indicators/pivot-points.src.js +5 -4
- package/indicators/ppo.js +3 -3
- package/indicators/ppo.src.js +4 -3
- package/indicators/price-channel.js +3 -3
- package/indicators/price-channel.src.js +12 -11
- package/indicators/price-envelopes.js +3 -3
- package/indicators/price-envelopes.src.js +12 -11
- package/indicators/psar.js +3 -3
- package/indicators/psar.src.js +3 -2
- package/indicators/regressions.js +3 -3
- package/indicators/regressions.src.js +10 -9
- package/indicators/roc.js +3 -3
- package/indicators/roc.src.js +3 -2
- package/indicators/rsi.js +3 -3
- package/indicators/rsi.src.js +3 -2
- package/indicators/slow-stochastic.js +3 -3
- package/indicators/slow-stochastic.src.js +3 -2
- package/indicators/stochastic.js +3 -3
- package/indicators/stochastic.src.js +12 -11
- package/indicators/supertrend.js +3 -3
- package/indicators/supertrend.src.js +20 -19
- package/indicators/tema.js +3 -3
- package/indicators/tema.src.js +3 -2
- package/indicators/trendline.js +3 -3
- package/indicators/trendline.src.js +3 -2
- package/indicators/trix.js +3 -3
- package/indicators/trix.src.js +3 -2
- package/indicators/volume-by-price.js +3 -3
- package/indicators/volume-by-price.src.js +8 -7
- package/indicators/vwap.js +3 -3
- package/indicators/vwap.src.js +3 -2
- package/indicators/williams-r.js +3 -3
- package/indicators/williams-r.src.js +4 -3
- package/indicators/wma.js +3 -3
- package/indicators/wma.src.js +3 -2
- package/indicators/zigzag.js +3 -3
- package/indicators/zigzag.src.js +8 -7
- package/lib/svg2pdf.js +7 -7
- package/lib/svg2pdf.src.js +185 -150
- package/modules/accessibility.js +3 -3
- package/modules/accessibility.src.js +664 -2793
- package/modules/annotations-advanced.d.ts +3 -0
- package/modules/annotations-advanced.js +3 -3
- package/modules/annotations-advanced.src.d.ts +3 -0
- package/modules/annotations-advanced.src.js +2949 -2920
- package/modules/annotations.d.ts +0 -3
- package/modules/annotations.js +3 -3
- package/modules/annotations.src.d.ts +0 -3
- package/modules/annotations.src.js +2926 -2905
- package/modules/arc-diagram.js +3 -3
- package/modules/arc-diagram.src.js +8 -6
- package/modules/arrow-symbols.js +3 -3
- package/modules/arrow-symbols.src.js +10 -13
- package/modules/boost-canvas.js +3 -3
- package/modules/boost-canvas.src.js +73 -26
- package/modules/boost.js +3 -3
- package/modules/boost.src.js +108 -30
- package/modules/broken-axis.js +3 -3
- package/modules/broken-axis.src.js +9 -9
- package/modules/bullet.js +3 -3
- package/modules/bullet.src.js +5 -4
- package/modules/coloraxis.js +3 -3
- package/modules/coloraxis.src.js +10 -9
- package/modules/current-date-indicator.js +3 -3
- package/modules/current-date-indicator.src.js +3 -2
- package/modules/cylinder.js +3 -3
- package/modules/cylinder.src.js +12 -11
- package/modules/data-tools.js +3 -3
- package/modules/data-tools.src.js +53 -36
- package/modules/data.d.ts +2 -2
- package/modules/data.js +3 -3
- package/modules/data.src.d.ts +2 -2
- package/modules/data.src.js +24 -23
- package/modules/datagrouping.js +3 -3
- package/modules/datagrouping.src.js +25 -23
- package/modules/debugger.js +3 -3
- package/modules/debugger.src.js +6 -5
- package/modules/dependency-wheel.js +3 -3
- package/modules/dependency-wheel.src.js +7 -5
- package/modules/dotplot.js +3 -3
- package/modules/dotplot.src.js +3 -2
- package/modules/drag-panes.js +3 -3
- package/modules/drag-panes.src.js +19 -21
- package/modules/draggable-points.js +3 -3
- package/modules/draggable-points.src.js +18 -16
- package/modules/drilldown.js +3 -3
- package/modules/drilldown.src.js +29 -26
- package/modules/dumbbell.js +3 -3
- package/modules/dumbbell.src.js +5 -4
- package/modules/export-data.js +3 -3
- package/modules/export-data.src.js +33 -22
- package/modules/exporting.d.ts +1 -1
- package/modules/exporting.js +3 -3
- package/modules/exporting.src.d.ts +1 -1
- package/modules/exporting.src.js +40 -39
- package/modules/flowmap.js +3 -3
- package/modules/flowmap.src.js +3 -2
- package/modules/full-screen.js +3 -3
- package/modules/full-screen.src.js +9 -13
- package/modules/funnel.js +3 -3
- package/modules/funnel.src.js +3 -2
- package/modules/funnel3d.js +3 -3
- package/modules/funnel3d.src.js +12 -12
- package/modules/gantt.d.ts +3 -4
- package/modules/gantt.js +3 -3
- package/modules/gantt.src.d.ts +3 -4
- package/modules/gantt.src.js +4165 -4002
- package/modules/geoheatmap.js +3 -3
- package/modules/geoheatmap.src.js +8 -7
- package/modules/grid-axis.js +3 -3
- package/modules/grid-axis.src.js +9 -8
- package/modules/heatmap.d.ts +2 -2
- package/modules/heatmap.js +3 -3
- package/modules/heatmap.src.d.ts +2 -2
- package/modules/heatmap.src.js +21 -15
- package/modules/heikinashi.js +3 -3
- package/modules/heikinashi.src.js +9 -6
- package/modules/histogram-bellcurve.js +3 -3
- package/modules/histogram-bellcurve.src.js +4 -3
- package/modules/hollowcandlestick.js +3 -3
- package/modules/hollowcandlestick.src.js +5 -4
- package/modules/item-series.js +3 -3
- package/modules/item-series.src.js +4 -3
- package/modules/lollipop.js +3 -3
- package/modules/lollipop.src.js +6 -3
- package/modules/map.d.ts +22 -1
- package/modules/map.js +3 -3
- package/modules/map.src.d.ts +22 -1
- package/modules/map.src.js +256 -155
- package/modules/marker-clusters.js +3 -3
- package/modules/marker-clusters.src.js +35 -37
- package/modules/mouse-wheel-zoom.js +3 -3
- package/modules/mouse-wheel-zoom.src.js +55 -163
- package/modules/navigator.d.ts +148 -0
- package/modules/navigator.js +9 -0
- package/modules/navigator.src.d.ts +148 -0
- package/modules/navigator.src.js +3921 -0
- package/modules/networkgraph.d.ts +2 -2
- package/modules/networkgraph.js +3 -3
- package/modules/networkgraph.src.d.ts +2 -2
- package/modules/networkgraph.src.js +36 -35
- package/modules/no-data-to-display.js +3 -3
- package/modules/no-data-to-display.src.js +6 -6
- package/modules/offline-exporting.js +3 -3
- package/modules/offline-exporting.src.js +10 -10
- package/modules/organization.js +3 -3
- package/modules/organization.src.js +41 -15
- package/modules/overlapping-datalabels.js +3 -3
- package/modules/overlapping-datalabels.src.js +4 -2
- package/modules/parallel-coordinates.js +3 -3
- package/modules/parallel-coordinates.src.js +12 -12
- package/modules/pareto.js +3 -3
- package/modules/pareto.src.js +3 -2
- package/modules/pathfinder.js +3 -3
- package/modules/pathfinder.src.js +18 -22
- package/modules/pattern-fill.js +3 -3
- package/modules/pattern-fill.src.js +22 -23
- package/modules/pictorial.js +3 -3
- package/modules/pictorial.src.js +25 -26
- package/modules/price-indicator.js +3 -3
- package/modules/price-indicator.src.js +3 -2
- package/modules/pyramid3d.js +3 -3
- package/modules/pyramid3d.src.js +3 -2
- package/modules/sankey.js +3 -3
- package/modules/sankey.src.js +93 -26
- package/modules/series-label.js +3 -3
- package/modules/series-label.src.js +28 -19
- package/modules/series-on-point.js +3 -3
- package/modules/series-on-point.src.js +5 -4
- package/modules/solid-gauge.js +3 -3
- package/modules/solid-gauge.src.js +3 -2
- package/modules/sonification.d.ts +2 -2
- package/modules/sonification.js +3 -3
- package/modules/sonification.src.d.ts +2 -2
- package/modules/sonification.src.js +8 -6
- package/modules/static-scale.js +3 -3
- package/modules/static-scale.src.js +6 -6
- package/modules/stock-tools.js +3 -3
- package/modules/stock-tools.src.js +109 -96
- package/modules/stock.d.ts +1 -1
- package/modules/stock.js +3 -3
- package/modules/stock.src.d.ts +1 -1
- package/modules/stock.src.js +10762 -10685
- package/modules/streamgraph.js +3 -3
- package/modules/streamgraph.src.js +3 -2
- package/modules/sunburst.js +3 -3
- package/modules/sunburst.src.js +50 -37
- package/modules/tiledwebmap.js +4 -4
- package/modules/tiledwebmap.src.js +28 -29
- package/modules/tilemap.js +3 -3
- package/modules/tilemap.src.js +4 -3
- package/modules/timeline.js +3 -3
- package/modules/timeline.src.js +5 -4
- package/modules/treegraph.js +3 -3
- package/modules/treegraph.src.js +58 -23
- package/modules/treegrid.js +3 -3
- package/modules/treegrid.src.js +49 -33
- package/modules/treemap.js +3 -3
- package/modules/treemap.src.js +44 -26
- package/modules/variable-pie.js +3 -3
- package/modules/variable-pie.src.js +3 -2
- package/modules/variwide.js +3 -3
- package/modules/variwide.src.js +9 -4
- package/modules/vector.js +3 -3
- package/modules/vector.src.js +3 -2
- package/modules/venn.js +3 -3
- package/modules/venn.src.js +16 -17
- package/modules/windbarb.js +3 -3
- package/modules/windbarb.src.js +5 -4
- package/modules/wordcloud.js +3 -3
- package/modules/wordcloud.src.js +10 -8
- package/modules/xrange.js +3 -3
- package/modules/xrange.src.js +5 -4
- package/package.json +1 -1
- package/standalone-navigator.js +2 -0
- package/standalone-navigator.src.js +49402 -0
- package/themes/avocado.js +3 -3
- package/themes/avocado.src.js +2 -1
- package/themes/brand-dark.js +3 -3
- package/themes/brand-dark.src.js +2 -1
- package/themes/brand-light.js +3 -3
- package/themes/brand-light.src.js +2 -1
- package/themes/dark-blue.js +3 -3
- package/themes/dark-blue.src.js +2 -1
- package/themes/dark-green.js +3 -3
- package/themes/dark-green.src.js +2 -1
- package/themes/dark-unica.js +3 -3
- package/themes/dark-unica.src.js +2 -1
- package/themes/gray.js +3 -3
- package/themes/gray.src.js +2 -1
- package/themes/grid-light.js +3 -3
- package/themes/grid-light.src.js +2 -1
- package/themes/grid.js +3 -3
- package/themes/grid.src.js +2 -1
- package/themes/high-contrast-dark.js +3 -3
- package/themes/high-contrast-dark.src.js +2 -1
- package/themes/high-contrast-light.js +3 -3
- package/themes/high-contrast-light.src.js +2 -1
- package/themes/sand-signika.js +3 -3
- package/themes/sand-signika.src.js +2 -1
- package/themes/skies.js +3 -3
- package/themes/skies.src.js +2 -1
- package/themes/sunset.js +3 -3
- package/themes/sunset.src.js +2 -1
- package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +0 -259
- package/lib/canvg.js +0 -8
|
@@ -501,7 +501,7 @@ AST.emptyHTML = emptyHTML;
|
|
|
501
501
|
/**
|
|
502
502
|
* Allow all custom SVG and HTML attributes, references and tags (together
|
|
503
503
|
* with potentially harmful ones) to be added to the DOM from the chart
|
|
504
|
-
* configuration. In other words, disable the
|
|
504
|
+
* configuration. In other words, disable the allow-listing which is the
|
|
505
505
|
* primary functionality of the AST.
|
|
506
506
|
*
|
|
507
507
|
* WARNING: Setting this property to `true` while allowing untrusted user
|
|
@@ -8,11 +8,98 @@
|
|
|
8
8
|
*
|
|
9
9
|
* */
|
|
10
10
|
'use strict';
|
|
11
|
+
import AST from './AST.js';
|
|
11
12
|
import H from '../../Globals.js';
|
|
12
13
|
const { composed } = H;
|
|
13
14
|
import SVGElement from '../SVG/SVGElement.js';
|
|
14
15
|
import U from '../../Utilities.js';
|
|
15
|
-
const { css, defined, extend,
|
|
16
|
+
const { attr, css, createElement, defined, extend, pInt, pushUnique } = U;
|
|
17
|
+
/**
|
|
18
|
+
* The opacity and visibility properties are set as attributes on the main
|
|
19
|
+
* element and SVG groups, and as identical CSS properties on the HTML element
|
|
20
|
+
* and the ancestry divs. (#3542)
|
|
21
|
+
*
|
|
22
|
+
* @private
|
|
23
|
+
*/
|
|
24
|
+
function commonSetter(value, key, elem) {
|
|
25
|
+
const style = this.div?.style || elem.style;
|
|
26
|
+
SVGElement.prototype[`${key}Setter`].call(this, value, key, elem);
|
|
27
|
+
if (style) {
|
|
28
|
+
style[key] = value;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Decorate each SVG group in the ancestry line. Each SVG `g` element that
|
|
33
|
+
* contains children with useHTML, will receive a `div` element counterpart to
|
|
34
|
+
* contain the HTML span. These div elements are translated and styled like
|
|
35
|
+
* original `g` counterparts.
|
|
36
|
+
*
|
|
37
|
+
* @private
|
|
38
|
+
*/
|
|
39
|
+
const decorateSVGGroup = (g, container) => {
|
|
40
|
+
if (!g.div) {
|
|
41
|
+
const className = attr(g.element, 'class'), cssProto = g.css;
|
|
42
|
+
// Create the parallel HTML group
|
|
43
|
+
const div = createElement('div', className ? { className } : void 0, {
|
|
44
|
+
// Add HTML specific styles
|
|
45
|
+
position: 'absolute',
|
|
46
|
+
left: `${g.translateX || 0}px`,
|
|
47
|
+
top: `${g.translateY || 0}px`,
|
|
48
|
+
// Add pre-existing styles
|
|
49
|
+
...g.styles,
|
|
50
|
+
// Add g attributes that correspond to CSS
|
|
51
|
+
display: g.display,
|
|
52
|
+
opacity: g.opacity,
|
|
53
|
+
visibility: g.visibility
|
|
54
|
+
},
|
|
55
|
+
// The top group is appended to container
|
|
56
|
+
g.parentGroup?.div || container);
|
|
57
|
+
g.classSetter = (value, key, element) => {
|
|
58
|
+
element.setAttribute('class', value);
|
|
59
|
+
div.className = value;
|
|
60
|
+
};
|
|
61
|
+
/**
|
|
62
|
+
* Common translate setter for X and Y on the HTML group.
|
|
63
|
+
*
|
|
64
|
+
* Reverted the fix for #6957 due to positioning problems and offline
|
|
65
|
+
* export (#7254, #7280, #7529)
|
|
66
|
+
* @private
|
|
67
|
+
*/
|
|
68
|
+
g.translateXSetter = g.translateYSetter = (value, key) => {
|
|
69
|
+
g[key] = value;
|
|
70
|
+
div.style[key === 'translateX' ? 'left' : 'top'] = `${value}px`;
|
|
71
|
+
g.doTransform = true;
|
|
72
|
+
};
|
|
73
|
+
g.opacitySetter = g.visibilitySetter = commonSetter;
|
|
74
|
+
// Extend the parent group's css function by updating the parallel div
|
|
75
|
+
// counterpart with the same style.
|
|
76
|
+
g.css = (styles) => {
|
|
77
|
+
// Call the base css method. The `parentGroup` can be either an
|
|
78
|
+
// SVGElement or an SVGLabel, in which the css method is extended
|
|
79
|
+
// (#19200).
|
|
80
|
+
cssProto.call(g, styles);
|
|
81
|
+
// #6794
|
|
82
|
+
if (styles.cursor) {
|
|
83
|
+
div.style.cursor = styles.cursor;
|
|
84
|
+
}
|
|
85
|
+
// #18821
|
|
86
|
+
if (styles.pointerEvents) {
|
|
87
|
+
div.style.pointerEvents = styles.pointerEvents;
|
|
88
|
+
}
|
|
89
|
+
return g;
|
|
90
|
+
};
|
|
91
|
+
// Event handling
|
|
92
|
+
g.on = function () {
|
|
93
|
+
SVGElement.prototype.on.apply({
|
|
94
|
+
element: div,
|
|
95
|
+
onEvents: g.onEvents
|
|
96
|
+
}, arguments);
|
|
97
|
+
return g;
|
|
98
|
+
};
|
|
99
|
+
g.div = div;
|
|
100
|
+
}
|
|
101
|
+
return g.div;
|
|
102
|
+
};
|
|
16
103
|
/* *
|
|
17
104
|
*
|
|
18
105
|
* Class
|
|
@@ -25,27 +112,45 @@ class HTMLElement extends SVGElement {
|
|
|
25
112
|
*
|
|
26
113
|
* */
|
|
27
114
|
/**
|
|
28
|
-
*
|
|
115
|
+
* Compose
|
|
29
116
|
* @private
|
|
30
117
|
*/
|
|
31
|
-
static compose(
|
|
118
|
+
static compose(SVGRendererClass) {
|
|
32
119
|
if (pushUnique(composed, this.compose)) {
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
120
|
+
/**
|
|
121
|
+
* Create a HTML text node. This is used by the SVG renderer `text`
|
|
122
|
+
* and `label` functions through the `useHTML` parameter.
|
|
123
|
+
*
|
|
124
|
+
* @private
|
|
125
|
+
*/
|
|
126
|
+
SVGRendererClass.prototype.html = function (str, x, y) {
|
|
127
|
+
return new HTMLElement(this, 'span')
|
|
128
|
+
// Set the default attributes
|
|
129
|
+
.attr({
|
|
130
|
+
text: str,
|
|
131
|
+
x: Math.round(x),
|
|
132
|
+
y: Math.round(y)
|
|
133
|
+
});
|
|
134
|
+
};
|
|
41
135
|
}
|
|
42
|
-
return SVGElementClass;
|
|
43
136
|
}
|
|
44
137
|
/* *
|
|
45
138
|
*
|
|
46
139
|
* Functions
|
|
47
140
|
*
|
|
48
141
|
* */
|
|
142
|
+
constructor(renderer, nodeName) {
|
|
143
|
+
super(renderer, nodeName);
|
|
144
|
+
this.css({
|
|
145
|
+
position: 'absolute',
|
|
146
|
+
...(renderer.styledMode ? {} : {
|
|
147
|
+
fontFamily: renderer.style.fontFamily,
|
|
148
|
+
fontSize: renderer.style.fontSize
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
// Keep the whiteSpace style outside the `HTMLElement.styles` collection
|
|
152
|
+
this.element.style.whiteSpace = 'nowrap';
|
|
153
|
+
}
|
|
49
154
|
/**
|
|
50
155
|
* Get the correction in X and Y positioning as the element is rotated.
|
|
51
156
|
* @private
|
|
@@ -58,7 +163,7 @@ class HTMLElement extends SVGElement {
|
|
|
58
163
|
* Apply CSS to HTML elements. This is used in text within SVG rendering.
|
|
59
164
|
* @private
|
|
60
165
|
*/
|
|
61
|
-
|
|
166
|
+
css(styles) {
|
|
62
167
|
const { element } = this,
|
|
63
168
|
// When setting or unsetting the width style, we need to update
|
|
64
169
|
// transform (#8809)
|
|
@@ -79,12 +184,16 @@ class HTMLElement extends SVGElement {
|
|
|
79
184
|
css(element, styles);
|
|
80
185
|
// Now that all styles are applied, to the transform
|
|
81
186
|
if (doTransform) {
|
|
82
|
-
this.
|
|
187
|
+
this.updateTransform();
|
|
83
188
|
}
|
|
84
189
|
return this;
|
|
85
190
|
}
|
|
86
191
|
/**
|
|
87
192
|
* The useHTML method for calculating the bounding box based on offsets.
|
|
193
|
+
* Called internally from the `SVGElement.getBBox` function and subsequently
|
|
194
|
+
* rotated.
|
|
195
|
+
*
|
|
196
|
+
* @private
|
|
88
197
|
*/
|
|
89
198
|
htmlGetBBox() {
|
|
90
199
|
const { element } = this;
|
|
@@ -96,17 +205,19 @@ class HTMLElement extends SVGElement {
|
|
|
96
205
|
};
|
|
97
206
|
}
|
|
98
207
|
/**
|
|
208
|
+
* Batch update styles and attributes related to transform
|
|
209
|
+
*
|
|
99
210
|
* @private
|
|
100
211
|
*/
|
|
101
|
-
|
|
212
|
+
updateTransform() {
|
|
102
213
|
// Aligning non added elements is expensive
|
|
103
214
|
if (!this.added) {
|
|
104
215
|
this.alignOnAdd = true;
|
|
105
216
|
return;
|
|
106
217
|
}
|
|
107
|
-
const { element, renderer, rotation, styles, textAlign = 'left', textWidth, translateX = 0, translateY = 0, x = 0, y = 0 } = this, alignCorrection = {
|
|
218
|
+
const { element, renderer, rotation, rotationOriginX, rotationOriginY, styles, textAlign = 'left', textWidth, translateX = 0, translateY = 0, x = 0, y = 0 } = this, alignCorrection = {
|
|
108
219
|
left: 0, center: 0.5, right: 1
|
|
109
|
-
}[textAlign], whiteSpace = styles
|
|
220
|
+
}[textAlign], whiteSpace = styles.whiteSpace;
|
|
110
221
|
// Get the pixel length of the text
|
|
111
222
|
const getTextPxLength = () => {
|
|
112
223
|
if (this.textPxLength) {
|
|
@@ -132,7 +243,7 @@ class HTMLElement extends SVGElement {
|
|
|
132
243
|
element.innerHTML,
|
|
133
244
|
textWidth,
|
|
134
245
|
this.textAlign
|
|
135
|
-
].join(',');
|
|
246
|
+
].join(','), parentPadding = (this.parentGroup?.padding * -1) || 0;
|
|
136
247
|
let baseline, hasBoxWidthChanged = false;
|
|
137
248
|
// Update textWidth. Use the memoized textPxLength if possible, to
|
|
138
249
|
// avoid the getTextPxLength function using elem.offsetWidth.
|
|
@@ -166,7 +277,7 @@ class HTMLElement extends SVGElement {
|
|
|
166
277
|
if (defined(rotation) &&
|
|
167
278
|
((rotation !== (this.oldRotation || 0)) ||
|
|
168
279
|
(textAlign !== this.oldAlign))) {
|
|
169
|
-
this.setSpanRotation(rotation,
|
|
280
|
+
this.setSpanRotation(rotation, parentPadding, parentPadding);
|
|
170
281
|
}
|
|
171
282
|
this.getSpanCorrection(
|
|
172
283
|
// Avoid elem.offsetWidth if we can, it affects rendering
|
|
@@ -174,11 +285,13 @@ class HTMLElement extends SVGElement {
|
|
|
174
285
|
((!defined(rotation) && this.textPxLength) || // #7920
|
|
175
286
|
element.offsetWidth), baseline, alignCorrection);
|
|
176
287
|
}
|
|
177
|
-
// Apply position with correction
|
|
178
|
-
|
|
179
|
-
left:
|
|
180
|
-
top:
|
|
181
|
-
|
|
288
|
+
// Apply position with correction and rotation origin
|
|
289
|
+
const { xCorr = 0, yCorr = 0 } = this, rotOriginX = (rotationOriginX ?? x) - xCorr - x - parentPadding, rotOriginY = (rotationOriginY ?? y) - yCorr - y - parentPadding, styles = {
|
|
290
|
+
left: `${x + xCorr}px`,
|
|
291
|
+
top: `${y + yCorr}px`,
|
|
292
|
+
transformOrigin: `${rotOriginX}px ${rotOriginY}px`
|
|
293
|
+
};
|
|
294
|
+
css(element, styles);
|
|
182
295
|
// Record current text transform
|
|
183
296
|
this.cTT = currentTextTransform;
|
|
184
297
|
this.oldRotation = rotation;
|
|
@@ -189,16 +302,90 @@ class HTMLElement extends SVGElement {
|
|
|
189
302
|
* Set the rotation of an individual HTML span.
|
|
190
303
|
* @private
|
|
191
304
|
*/
|
|
192
|
-
setSpanRotation(rotation,
|
|
305
|
+
setSpanRotation(rotation, originX, originY) {
|
|
193
306
|
// CSS transform and transform-origin both supported without prefix
|
|
194
307
|
// since Firefox 16 (2012), IE 10 (2012), Chrome 36 (2014), Safari 9
|
|
195
308
|
// (2015).;
|
|
196
309
|
css(this.element, {
|
|
197
310
|
transform: `rotate(${rotation}deg)`,
|
|
198
|
-
transformOrigin: `${
|
|
311
|
+
transformOrigin: `${originX}% ${originY}px`
|
|
199
312
|
});
|
|
200
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Add the element to a group wrapper. For HTML elements, a parallel div
|
|
316
|
+
* will be created for each ancenstor SVG `g` element.
|
|
317
|
+
*
|
|
318
|
+
* @private
|
|
319
|
+
*/
|
|
320
|
+
add(parentGroup) {
|
|
321
|
+
const container = this.renderer.box
|
|
322
|
+
.parentNode, parents = [];
|
|
323
|
+
let div;
|
|
324
|
+
this.parentGroup = parentGroup;
|
|
325
|
+
// Create a parallel divs to hold the HTML elements
|
|
326
|
+
if (parentGroup) {
|
|
327
|
+
div = parentGroup.div;
|
|
328
|
+
if (!div) {
|
|
329
|
+
// Read the parent chain into an array and read from top
|
|
330
|
+
// down
|
|
331
|
+
let svgGroup = parentGroup;
|
|
332
|
+
while (svgGroup) {
|
|
333
|
+
parents.push(svgGroup);
|
|
334
|
+
// Move up to the next parent group
|
|
335
|
+
svgGroup = svgGroup.parentGroup;
|
|
336
|
+
}
|
|
337
|
+
// Decorate each of the ancestor group elements with a parallel
|
|
338
|
+
// div that reflects translation and styling
|
|
339
|
+
for (const parentGroup of parents.reverse()) {
|
|
340
|
+
div = decorateSVGGroup(parentGroup, container);
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
(div || container).appendChild(this.element);
|
|
345
|
+
this.added = true;
|
|
346
|
+
if (this.alignOnAdd) {
|
|
347
|
+
this.updateTransform();
|
|
348
|
+
}
|
|
349
|
+
return this;
|
|
350
|
+
}
|
|
351
|
+
/**
|
|
352
|
+
* Text setter
|
|
353
|
+
* @private
|
|
354
|
+
*/
|
|
355
|
+
textSetter(value) {
|
|
356
|
+
if (value !== this.textStr) {
|
|
357
|
+
delete this.bBox;
|
|
358
|
+
delete this.oldTextWidth;
|
|
359
|
+
AST.setElementHTML(this.element, value ?? '');
|
|
360
|
+
this.textStr = value;
|
|
361
|
+
this.doTransform = true;
|
|
362
|
+
}
|
|
363
|
+
}
|
|
364
|
+
/**
|
|
365
|
+
* Align setter
|
|
366
|
+
*
|
|
367
|
+
* @private
|
|
368
|
+
*/
|
|
369
|
+
alignSetter(value) {
|
|
370
|
+
this.alignValue = this.textAlign = value;
|
|
371
|
+
this.doTransform = true;
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Various setters which rely on update transform
|
|
375
|
+
* @private
|
|
376
|
+
*/
|
|
377
|
+
xSetter(value, key) {
|
|
378
|
+
this[key] = value;
|
|
379
|
+
this.doTransform = true;
|
|
380
|
+
}
|
|
201
381
|
}
|
|
382
|
+
// Some shared setters
|
|
383
|
+
const proto = HTMLElement.prototype;
|
|
384
|
+
proto.visibilitySetter = proto.opacitySetter = commonSetter;
|
|
385
|
+
proto.ySetter =
|
|
386
|
+
proto.rotationSetter =
|
|
387
|
+
proto.rotationOriginXSetter =
|
|
388
|
+
proto.rotationOriginYSetter = proto.xSetter;
|
|
202
389
|
/* *
|
|
203
390
|
*
|
|
204
391
|
* Default Export
|
|
@@ -134,7 +134,7 @@ var RendererUtilities;
|
|
|
134
134
|
origBoxes[i].pos = box.pos + posInCompositeBox;
|
|
135
135
|
// If the distance between the position and the target exceeds
|
|
136
136
|
// maxDistance, abort the loop and decrease the length in
|
|
137
|
-
// increments of 10% to recursively reduce the
|
|
137
|
+
// increments of 10% to recursively reduce the number of
|
|
138
138
|
// visible boxes by rank. Once all boxes are within the
|
|
139
139
|
// maxDistance, we're good.
|
|
140
140
|
if (typeof maxDistance !== 'undefined' &&
|
|
@@ -12,9 +12,9 @@ import A from '../../Animation/AnimationUtilities.js';
|
|
|
12
12
|
const { animate, animObject, stop } = A;
|
|
13
13
|
import Color from '../../Color/Color.js';
|
|
14
14
|
import H from '../../Globals.js';
|
|
15
|
-
const { deg2rad, doc,
|
|
15
|
+
const { deg2rad, doc, svg, SVG_NS, win } = H;
|
|
16
16
|
import U from '../../Utilities.js';
|
|
17
|
-
const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, syncTimeout, uniqueKey } = U;
|
|
17
|
+
const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, isArray, isFunction, isObject, isString, merge, objectEach, pick, pInt, replaceNested, syncTimeout, uniqueKey } = U;
|
|
18
18
|
/* *
|
|
19
19
|
*
|
|
20
20
|
* Class
|
|
@@ -40,6 +40,10 @@ const { addEvent, attr, createElement, css, defined, erase, extend, fireEvent, i
|
|
|
40
40
|
* {@link Highcharts.SVGRenderer#g|g}
|
|
41
41
|
* and more.
|
|
42
42
|
*
|
|
43
|
+
* See [How to use the SVG Renderer](
|
|
44
|
+
* https://www.highcharts.com/docs/advanced-chart-features/renderer) for a
|
|
45
|
+
* comprehensive tutorial on how to draw SVG elements on a chart.
|
|
46
|
+
*
|
|
43
47
|
* @class
|
|
44
48
|
* @name Highcharts.SVGElement
|
|
45
49
|
*/
|
|
@@ -202,9 +206,13 @@ class SVGElement {
|
|
|
202
206
|
* box is `spacingBox`, it refers to `Renderer.spacingBox` which
|
|
203
207
|
* holds `width`, `height`, `x` and `y` properties.
|
|
204
208
|
*
|
|
209
|
+
* @param {boolean} [redraw]
|
|
210
|
+
* Decide if SVGElement should be redrawn with new alignment or
|
|
211
|
+
* just change its attributes.
|
|
212
|
+
*
|
|
205
213
|
* @return {Highcharts.SVGElement} Returns the SVGElement for chaining.
|
|
206
214
|
*/
|
|
207
|
-
align(alignOptions, alignByTranslate, box) {
|
|
215
|
+
align(alignOptions, alignByTranslate, box, redraw = true) {
|
|
208
216
|
const attribs = {}, renderer = this.renderer, alignedObjects = renderer.alignedObjects;
|
|
209
217
|
let x, y, alignTo, alignFactor, vAlignFactor;
|
|
210
218
|
// First call on instanciate
|
|
@@ -225,8 +233,7 @@ class SVGElement {
|
|
|
225
233
|
alignByTranslate = this.alignByTranslate;
|
|
226
234
|
alignTo = this.alignTo;
|
|
227
235
|
}
|
|
228
|
-
box = pick(box, renderer[alignTo],
|
|
229
|
-
renderer.plotBox : void 0, renderer);
|
|
236
|
+
box = pick(box, renderer[alignTo], renderer);
|
|
230
237
|
// Assign variables
|
|
231
238
|
const align = alignOptions.align, vAlign = alignOptions.verticalAlign;
|
|
232
239
|
// default: left align
|
|
@@ -258,8 +265,10 @@ class SVGElement {
|
|
|
258
265
|
}
|
|
259
266
|
attribs[alignByTranslate ? 'translateY' : 'y'] = Math.round(y);
|
|
260
267
|
// Animate only if already placed
|
|
261
|
-
|
|
262
|
-
|
|
268
|
+
if (redraw) {
|
|
269
|
+
this[this.placed ? 'animate' : 'attr'](attribs);
|
|
270
|
+
this.placed = true;
|
|
271
|
+
}
|
|
263
272
|
this.alignAttr = attribs;
|
|
264
273
|
return this;
|
|
265
274
|
}
|
|
@@ -610,7 +619,7 @@ class SVGElement {
|
|
|
610
619
|
gradients = renderer.gradients;
|
|
611
620
|
stops = colorOptions.stops;
|
|
612
621
|
radialReference = elem.radialReference;
|
|
613
|
-
// Keep < 2.2
|
|
622
|
+
// Keep < 2.2 compatibility
|
|
614
623
|
if (isArray(gradAttr)) {
|
|
615
624
|
colorOptions[gradName] = gradAttr = {
|
|
616
625
|
x1: gradAttr[0],
|
|
@@ -730,8 +739,8 @@ class SVGElement {
|
|
|
730
739
|
styles.width) {
|
|
731
740
|
textWidth = this.textWidth = pInt(styles.width);
|
|
732
741
|
}
|
|
733
|
-
//
|
|
734
|
-
this.styles
|
|
742
|
+
// Store object
|
|
743
|
+
extend(this.styles, styles);
|
|
735
744
|
if (textWidth && (!svg && this.renderer.forExport)) {
|
|
736
745
|
delete styles.width;
|
|
737
746
|
}
|
|
@@ -932,7 +941,7 @@ class SVGElement {
|
|
|
932
941
|
* @function Highcharts.SVGElement#getBBox
|
|
933
942
|
*
|
|
934
943
|
* @param {boolean} [reload]
|
|
935
|
-
* Skip the cache and get the updated DOM
|
|
944
|
+
* Skip the cache and get the updated DOM bounding box.
|
|
936
945
|
*
|
|
937
946
|
* @param {number} [rot]
|
|
938
947
|
* Override the element's rotation. This is internally used on axis
|
|
@@ -944,8 +953,8 @@ class SVGElement {
|
|
|
944
953
|
*/
|
|
945
954
|
getBBox(reload, rot) {
|
|
946
955
|
const wrapper = this, { alignValue, element, renderer, styles, textStr } = wrapper, { cache, cacheKeys } = renderer, isSVG = element.namespaceURI === wrapper.SVG_NS, rotation = pick(rot, wrapper.rotation, 0), fontSize = renderer.styledMode ? (element &&
|
|
947
|
-
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles
|
|
948
|
-
let bBox,
|
|
956
|
+
SVGElement.prototype.getStyle.call(element, 'font-size')) : (styles.fontSize);
|
|
957
|
+
let bBox, height, toggleTextShadowShim, cacheKey;
|
|
949
958
|
// Avoid undefined and null (#7316)
|
|
950
959
|
if (defined(textStr)) {
|
|
951
960
|
cacheKey = textStr.toString();
|
|
@@ -964,8 +973,8 @@ class SVGElement {
|
|
|
964
973
|
rotation,
|
|
965
974
|
wrapper.textWidth,
|
|
966
975
|
alignValue,
|
|
967
|
-
styles
|
|
968
|
-
styles
|
|
976
|
+
styles.textOverflow,
|
|
977
|
+
styles.fontWeight // #12163
|
|
969
978
|
].join(',');
|
|
970
979
|
}
|
|
971
980
|
if (cacheKey && !reload) {
|
|
@@ -1021,7 +1030,6 @@ class SVGElement {
|
|
|
1021
1030
|
}
|
|
1022
1031
|
// True SVG elements as well as HTML elements in modern browsers
|
|
1023
1032
|
// using the .useHTML option need to compensated for rotation
|
|
1024
|
-
width = bBox.width;
|
|
1025
1033
|
height = bBox.height;
|
|
1026
1034
|
// Workaround for wrong bounding box in IE, Edge and Chrome on
|
|
1027
1035
|
// Windows. With Highcharts' default font, IE and Edge report
|
|
@@ -1040,20 +1048,7 @@ class SVGElement {
|
|
|
1040
1048
|
}
|
|
1041
1049
|
// Adjust for rotated text
|
|
1042
1050
|
if (rotation) {
|
|
1043
|
-
|
|
1044
|
-
'right': 1,
|
|
1045
|
-
'center': 0.5
|
|
1046
|
-
}[alignValue || 0] || 0, rad = rotation * deg2rad, rad90 = (rotation - 90) * deg2rad, wCosRad = width * Math.cos(rad), wSinRad = width * Math.sin(rad), cosRad90 = Math.cos(rad90), sinRad90 = Math.sin(rad90),
|
|
1047
|
-
// Find the starting point on the left side baseline of
|
|
1048
|
-
// the text
|
|
1049
|
-
pX = bBox.x + alignFactor * (width - wCosRad), pY = bBox.y + baseline - alignFactor * wSinRad,
|
|
1050
|
-
// Find all corners
|
|
1051
|
-
aX = pX + baseline * cosRad90, bX = aX + wCosRad, cX = bX - height * cosRad90, dX = cX - wCosRad, aY = pY + baseline * sinRad90, bY = aY + wSinRad, cY = bY - height * sinRad90, dY = cY - wSinRad;
|
|
1052
|
-
// Deduct the bounding box from the corners
|
|
1053
|
-
bBox.x = Math.min(aX, bX, cX, dX);
|
|
1054
|
-
bBox.y = Math.min(aY, bY, cY, dY);
|
|
1055
|
-
bBox.width = Math.max(aX, bX, cX, dX) - bBox.x;
|
|
1056
|
-
bBox.height = Math.max(aY, bY, cY, dY) - bBox.y;
|
|
1051
|
+
bBox = this.getRotatedBox(bBox, rotation);
|
|
1057
1052
|
}
|
|
1058
1053
|
}
|
|
1059
1054
|
// Cache it. When loading a chart in a hidden iframe in Firefox and
|
|
@@ -1070,6 +1065,38 @@ class SVGElement {
|
|
|
1070
1065
|
}
|
|
1071
1066
|
return bBox;
|
|
1072
1067
|
}
|
|
1068
|
+
/**
|
|
1069
|
+
* Get the rotated box.
|
|
1070
|
+
* @private
|
|
1071
|
+
*/
|
|
1072
|
+
getRotatedBox(box, rotation) {
|
|
1073
|
+
const { x: boxX, y: boxY, width, height } = box, { alignValue, translateY, rotationOriginX = 0, rotationOriginY = 0 } = this, alignFactor = {
|
|
1074
|
+
'right': 1,
|
|
1075
|
+
'center': 0.5
|
|
1076
|
+
}[alignValue || 0] || 0, baseline = Number(this.element.getAttribute('y') || 0) -
|
|
1077
|
+
(translateY ? 0 : boxY), rad = rotation * deg2rad, rad90 = (rotation - 90) * deg2rad, cosRad = Math.cos(rad), sinRad = Math.sin(rad), wCosRad = width * cosRad, wSinRad = width * sinRad, cosRad90 = Math.cos(rad90), sinRad90 = Math.sin(rad90), [[xOriginCosRad, xOriginSinRad], [yOriginCosRad, yOriginSinRad]] = [
|
|
1078
|
+
rotationOriginX,
|
|
1079
|
+
rotationOriginY
|
|
1080
|
+
].map((rotOrigin) => [
|
|
1081
|
+
rotOrigin - (rotOrigin * cosRad),
|
|
1082
|
+
rotOrigin * sinRad
|
|
1083
|
+
]),
|
|
1084
|
+
// Find the starting point on the left side baseline of
|
|
1085
|
+
// the text
|
|
1086
|
+
pX = ((boxX + alignFactor * (width - wCosRad)) +
|
|
1087
|
+
xOriginCosRad + yOriginSinRad), pY = ((boxY + baseline - alignFactor * wSinRad) -
|
|
1088
|
+
xOriginSinRad + yOriginCosRad),
|
|
1089
|
+
// Find all corners
|
|
1090
|
+
aX = pX + baseline * cosRad90, bX = aX + wCosRad, cX = bX - height * cosRad90, dX = cX - wCosRad, aY = pY + baseline * sinRad90, bY = aY + wSinRad, cY = bY - height * sinRad90, dY = cY - wSinRad;
|
|
1091
|
+
// Deduct the bounding box from the corners
|
|
1092
|
+
const x = Math.min(aX, bX, cX, dX), y = Math.min(aY, bY, cY, dY), boxWidth = Math.max(aX, bX, cX, dX) - x, boxHeight = Math.max(aY, bY, cY, dY) - y;
|
|
1093
|
+
return {
|
|
1094
|
+
x,
|
|
1095
|
+
y,
|
|
1096
|
+
width: boxWidth,
|
|
1097
|
+
height: boxHeight
|
|
1098
|
+
};
|
|
1099
|
+
}
|
|
1073
1100
|
/**
|
|
1074
1101
|
* Get the computed style. Only in styled mode.
|
|
1075
1102
|
*
|
|
@@ -1146,7 +1173,7 @@ class SVGElement {
|
|
|
1146
1173
|
* @name Highcharts.SVGElement#element
|
|
1147
1174
|
* @type {Highcharts.SVGDOMElement|Highcharts.HTMLDOMElement}
|
|
1148
1175
|
*/
|
|
1149
|
-
this.element = nodeName === 'span' ?
|
|
1176
|
+
this.element = nodeName === 'span' || nodeName === 'body' ?
|
|
1150
1177
|
createElement(nodeName) :
|
|
1151
1178
|
doc.createElementNS(this.SVG_NS, nodeName);
|
|
1152
1179
|
/**
|
|
@@ -1156,6 +1183,7 @@ class SVGElement {
|
|
|
1156
1183
|
* @type {Highcharts.SVGRenderer}
|
|
1157
1184
|
*/
|
|
1158
1185
|
this.renderer = renderer;
|
|
1186
|
+
this.styles = {};
|
|
1159
1187
|
fireEvent(this, 'afterInit');
|
|
1160
1188
|
}
|
|
1161
1189
|
/**
|
|
@@ -1437,7 +1465,7 @@ class SVGElement {
|
|
|
1437
1465
|
* @function Highcharts.SVGElement#strokeWidth
|
|
1438
1466
|
*
|
|
1439
1467
|
* @return {number}
|
|
1440
|
-
* The stroke width in pixels. Even if the given stroke
|
|
1468
|
+
* The stroke width in pixels. Even if the given stroke width (in CSS or by
|
|
1441
1469
|
* attributes) is based on `em` or other units, the pixel size is returned.
|
|
1442
1470
|
*/
|
|
1443
1471
|
strokeWidth() {
|
|
@@ -1447,21 +1475,21 @@ class SVGElement {
|
|
|
1447
1475
|
}
|
|
1448
1476
|
// In styled mode, read computed stroke width
|
|
1449
1477
|
const val = this.getStyle('stroke-width');
|
|
1450
|
-
let ret = 0,
|
|
1478
|
+
let ret = 0, tempElement;
|
|
1451
1479
|
// Read pixel values directly
|
|
1452
|
-
if (
|
|
1480
|
+
if (/px$/.test(val)) {
|
|
1453
1481
|
ret = pInt(val);
|
|
1454
1482
|
// Other values like em, pt etc need to be measured
|
|
1455
1483
|
}
|
|
1456
1484
|
else if (val !== '') {
|
|
1457
|
-
|
|
1458
|
-
attr(
|
|
1485
|
+
tempElement = doc.createElementNS(SVG_NS, 'rect');
|
|
1486
|
+
attr(tempElement, {
|
|
1459
1487
|
width: val,
|
|
1460
1488
|
'stroke-width': 0
|
|
1461
1489
|
});
|
|
1462
|
-
this.element.parentNode.appendChild(
|
|
1463
|
-
ret =
|
|
1464
|
-
|
|
1490
|
+
this.element.parentNode.appendChild(tempElement);
|
|
1491
|
+
ret = tempElement.getBBox().width;
|
|
1492
|
+
tempElement.parentNode.removeChild(tempElement);
|
|
1465
1493
|
}
|
|
1466
1494
|
return ret;
|
|
1467
1495
|
}
|
|
@@ -1518,12 +1546,9 @@ class SVGElement {
|
|
|
1518
1546
|
el.appendChild(titleNode);
|
|
1519
1547
|
}
|
|
1520
1548
|
// Replace text content and escape markup
|
|
1521
|
-
titleNode.textContent =
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
.replace(/<[^>]*>/g, '')
|
|
1525
|
-
.replace(/</g, '<')
|
|
1526
|
-
.replace(/>/g, '>');
|
|
1549
|
+
titleNode.textContent = replaceNested(// Scan #[73]
|
|
1550
|
+
pick(value, ''), // #3276, #3895
|
|
1551
|
+
[/<[^>]*>/g, '']).replace(/</g, '<').replace(/>/g, '>');
|
|
1527
1552
|
}
|
|
1528
1553
|
/**
|
|
1529
1554
|
* Bring the element to the front. Alternatively, a new zIndex can be set.
|
|
@@ -1570,23 +1595,31 @@ class SVGElement {
|
|
|
1570
1595
|
* @function Highcharts.SVGElement#updateTransform
|
|
1571
1596
|
*/
|
|
1572
1597
|
updateTransform(attrib = 'transform') {
|
|
1573
|
-
const { element, matrix, rotation = 0, scaleX, scaleY, translateX = 0, translateY = 0 } = this;
|
|
1598
|
+
const { element, matrix, rotation = 0, rotationOriginX, rotationOriginY, scaleX, scaleY, translateX = 0, translateY = 0 } = this;
|
|
1574
1599
|
// Apply translate. Nearly all transformed elements have translation,
|
|
1575
1600
|
// so instead of checking for translate = 0, do it always (#1767,
|
|
1576
1601
|
// #1846).
|
|
1577
1602
|
const transform = ['translate(' + translateX + ',' + translateY + ')'];
|
|
1578
|
-
//
|
|
1603
|
+
// Apply matrix
|
|
1579
1604
|
if (defined(matrix)) {
|
|
1580
1605
|
transform.push('matrix(' + matrix.join(',') + ')');
|
|
1581
1606
|
}
|
|
1582
1607
|
// Apply rotation
|
|
1583
|
-
if (rotation) {
|
|
1608
|
+
if (rotation) {
|
|
1584
1609
|
transform.push('rotate(' + rotation + ' ' +
|
|
1585
|
-
pick(
|
|
1610
|
+
pick(rotationOriginX, element.getAttribute('x'), 0) +
|
|
1586
1611
|
' ' +
|
|
1587
|
-
pick(
|
|
1612
|
+
pick(rotationOriginY, element.getAttribute('y') || 0) + ')');
|
|
1613
|
+
// HTML labels rotation (#20685)
|
|
1614
|
+
if (this.text?.element.tagName === 'SPAN') {
|
|
1615
|
+
this.text.attr({
|
|
1616
|
+
rotation,
|
|
1617
|
+
rotationOriginX: (rotationOriginX || 0) - this.padding,
|
|
1618
|
+
rotationOriginY: (rotationOriginY || 0) - this.padding
|
|
1619
|
+
});
|
|
1620
|
+
}
|
|
1588
1621
|
}
|
|
1589
|
-
//
|
|
1622
|
+
// Apply scale
|
|
1590
1623
|
if (defined(scaleX) || defined(scaleY)) {
|
|
1591
1624
|
transform.push('scale(' + pick(scaleX, 1) + ' ' + pick(scaleY, 1) + ')');
|
|
1592
1625
|
}
|
|
@@ -1606,7 +1639,7 @@ class SVGElement {
|
|
|
1606
1639
|
*
|
|
1607
1640
|
*/
|
|
1608
1641
|
visibilitySetter(value, key, element) {
|
|
1609
|
-
// IE9-11 doesn't handle
|
|
1642
|
+
// IE9-11 doesn't handle visibility:inherit well, so we remove the
|
|
1610
1643
|
// attribute instead (#2881, #3909)
|
|
1611
1644
|
if (value === 'inherit') {
|
|
1612
1645
|
element.removeAttribute(key);
|