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.
Files changed (917) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +19 -2
  3. package/css/highcharts.scss +17 -2
  4. package/css/themes/dark-unica.css +19 -2
  5. package/css/themes/grid-light.css +19 -2
  6. package/css/themes/sand-signika.css +19 -2
  7. package/es-modules/Accessibility/A11yI18n.js +4 -4
  8. package/es-modules/Accessibility/Accessibility.js +3 -4
  9. package/es-modules/Accessibility/Components/AnnotationsA11y.js +3 -3
  10. package/es-modules/Accessibility/Components/ContainerComponent.js +11 -10
  11. package/es-modules/Accessibility/Components/InfoRegionsComponent.js +18 -11
  12. package/es-modules/Accessibility/Components/LegendComponent.js +34 -26
  13. package/es-modules/Accessibility/Components/MenuComponent.js +7 -6
  14. package/es-modules/Accessibility/Components/RangeSelectorComponent.js +5 -3
  15. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +7 -6
  16. package/es-modules/Accessibility/Components/SeriesComponent/NewDataAnnouncer.js +1 -1
  17. package/es-modules/Accessibility/Components/SeriesComponent/SeriesComponent.js +3 -2
  18. package/es-modules/Accessibility/Components/SeriesComponent/SeriesDescriber.js +34 -18
  19. package/es-modules/Accessibility/Components/SeriesComponent/SeriesKeyboardNavigation.js +96 -39
  20. package/es-modules/Accessibility/Components/ZoomComponent.js +43 -80
  21. package/es-modules/Accessibility/FocusBorder.js +6 -5
  22. package/es-modules/Accessibility/HighContrastMode.js +3 -3
  23. package/es-modules/Accessibility/KeyboardNavigation.js +113 -98
  24. package/es-modules/Accessibility/Options/{Options.js → A11yDefaults.js} +72 -4
  25. package/es-modules/Accessibility/Options/DeprecatedOptions.js +12 -2
  26. package/es-modules/Accessibility/Options/{LangOptions.js → LangDefaults.js} +46 -31
  27. package/es-modules/Accessibility/ProxyElement.js +14 -6
  28. package/es-modules/Accessibility/ProxyProvider.js +10 -2
  29. package/es-modules/Accessibility/Utils/ChartUtilities.js +10 -5
  30. package/es-modules/Core/Animation/Fx.js +1 -1
  31. package/es-modules/Core/Axis/Axis.js +197 -91
  32. package/es-modules/Core/Axis/AxisDefaults.js +8 -8
  33. package/es-modules/Core/Axis/Color/ColorAxis.js +26 -7
  34. package/es-modules/Core/Axis/Color/ColorAxisDefaults.js +3 -3
  35. package/es-modules/Core/Axis/DateTimeAxis.js +5 -3
  36. package/es-modules/Core/Axis/GridAxis.js +821 -821
  37. package/es-modules/Core/Axis/LogarithmicAxis.js +1 -1
  38. package/es-modules/Core/Axis/OrdinalAxis.js +26 -3
  39. package/es-modules/Core/Axis/PlotLineOrBand/PlotLineOrBand.js +3 -3
  40. package/es-modules/Core/Axis/StackingAxis.js +0 -1
  41. package/es-modules/Core/Axis/Tick.js +22 -18
  42. package/es-modules/Core/Axis/TreeGridTick.js +13 -2
  43. package/es-modules/Core/Axis/ZAxis.js +3 -1
  44. package/es-modules/Core/Chart/Chart.js +27 -8
  45. package/es-modules/Core/Chart/Chart3D.js +1 -11
  46. package/es-modules/Core/Chart/ChartDefaults.js +46 -14
  47. package/es-modules/Core/Chart/GanttChart.js +3 -1
  48. package/es-modules/Core/Chart/MapChart.js +4 -7
  49. package/es-modules/Core/Chart/StockChart.js +7 -5
  50. package/es-modules/Core/Color/Color.js +1 -1
  51. package/es-modules/Core/DefaultOptions.js +19 -15
  52. package/es-modules/Core/Geometry/PolygonClip.js +84 -0
  53. package/es-modules/Core/Globals.js +4 -18
  54. package/es-modules/Core/HttpUtilities.js +46 -39
  55. package/es-modules/Core/Legend/Legend.js +14 -12
  56. package/es-modules/Core/MSPointer.js +3 -1
  57. package/es-modules/Core/Navigator.js +16 -13
  58. package/es-modules/Core/Pointer.js +16 -12
  59. package/es-modules/Core/Renderer/HTML/AST.js +68 -8
  60. package/es-modules/Core/Renderer/HTML/HTMLElement.js +3 -1
  61. package/es-modules/Core/Renderer/HTML/HTMLRenderer.js +3 -1
  62. package/es-modules/Core/Renderer/SVG/SVGElement.js +54 -70
  63. package/es-modules/Core/Renderer/SVG/SVGElement3D.js +17 -5
  64. package/es-modules/Core/Renderer/SVG/SVGLabel.js +3 -1
  65. package/es-modules/Core/Renderer/SVG/SVGRenderer.js +60 -55
  66. package/es-modules/Core/Renderer/SVG/SVGRenderer3D.js +4 -2
  67. package/es-modules/Core/Renderer/SVG/TextBuilder.js +12 -10
  68. package/es-modules/Core/Scrollbar.js +9 -5
  69. package/es-modules/Core/ScrollbarDefaults.js +8 -8
  70. package/es-modules/Core/Series/DataLabel.js +67 -38
  71. package/es-modules/Core/Series/Point.js +11 -2
  72. package/es-modules/Core/Series/Series.js +57 -27
  73. package/es-modules/Core/Series/Series3D.js +3 -1
  74. package/es-modules/Core/Series/SeriesDefaults.js +7 -4
  75. package/es-modules/Core/Time.js +6 -7
  76. package/es-modules/Core/Tooltip.js +17 -34
  77. package/es-modules/Core/Utilities.js +33 -33
  78. package/es-modules/Data/DataConverter.js +1 -1
  79. package/es-modules/Data/DataTable.js +12 -10
  80. package/es-modules/Data/Modifiers/ChainModifier.js +3 -1
  81. package/es-modules/Data/Modifiers/GroupModifier.js +3 -1
  82. package/es-modules/Data/Modifiers/InvertModifier.js +9 -7
  83. package/es-modules/Data/Modifiers/RangeModifier.js +3 -1
  84. package/es-modules/Data/Modifiers/SeriesPointsModifier.js +3 -1
  85. package/es-modules/Data/Modifiers/SortModifier.js +3 -1
  86. package/es-modules/Data/Parsers/CSVParser.js +3 -1
  87. package/es-modules/Data/Parsers/DataParser.js +1 -1
  88. package/es-modules/Data/Parsers/GoogleSheetsParser.js +3 -2
  89. package/es-modules/Data/Parsers/HTMLTableParser.js +3 -1
  90. package/es-modules/Data/Stores/CSVStore.js +8 -5
  91. package/es-modules/Data/Stores/GoogleSheetsStore.js +3 -1
  92. package/es-modules/Data/Stores/HTMLTableStore.js +3 -1
  93. package/es-modules/Extensions/Annotations/{Annotations.js → Annotation.js} +30 -11
  94. package/es-modules/Extensions/Annotations/AnnotationsDefaults.js +0 -0
  95. package/es-modules/Extensions/Annotations/ControlPoint.js +1 -1
  96. package/es-modules/Extensions/Annotations/Controllables/ControllableEllipse.js +5 -2
  97. package/es-modules/Extensions/Annotations/MockPoint.js +1 -1
  98. package/es-modules/Extensions/Annotations/NavigationBindings.js +16 -5
  99. package/es-modules/Extensions/Annotations/Popup.js +2 -2
  100. package/es-modules/Extensions/Annotations/Types/BasicAnnotation.js +18 -12
  101. package/es-modules/Extensions/Annotations/Types/CrookedLine.js +4 -2
  102. package/es-modules/Extensions/Annotations/Types/ElliottWave.js +4 -2
  103. package/es-modules/Extensions/Annotations/Types/Fibonacci.js +5 -3
  104. package/es-modules/Extensions/Annotations/Types/FibonacciTimeZones.js +4 -2
  105. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +4 -2
  106. package/es-modules/Extensions/Annotations/Types/Measure.js +4 -2
  107. package/es-modules/Extensions/Annotations/Types/Pitchfork.js +4 -2
  108. package/es-modules/Extensions/Annotations/Types/TimeCycles.js +4 -2
  109. package/es-modules/Extensions/Annotations/Types/Tunnel.js +5 -2
  110. package/es-modules/Extensions/Annotations/Types/VerticalLine.js +4 -2
  111. package/es-modules/Extensions/Boost/BoostAttach.js +5 -1
  112. package/es-modules/Extensions/Boost/BoostInit.js +9 -3
  113. package/es-modules/Extensions/Boost/BoostOptions.js +26 -0
  114. package/es-modules/Extensions/Boost/Boostables.js +1 -0
  115. package/es-modules/Extensions/Boost/WGLRenderer.js +48 -37
  116. package/es-modules/Extensions/Boost/WGLShader.js +4 -3
  117. package/es-modules/Extensions/BoostCanvas.js +11 -5
  118. package/es-modules/Extensions/Breadcrumbs.js +898 -0
  119. package/es-modules/Extensions/CurrentDateIndication.js +1 -1
  120. package/es-modules/Extensions/Data.js +661 -613
  121. package/es-modules/Extensions/DataGrouping.js +8 -3
  122. package/es-modules/Extensions/Debugger/ErrorMessages.js +4 -0
  123. package/es-modules/Extensions/DownloadURL.js +3 -3
  124. package/es-modules/Extensions/DragPanes.js +1 -1
  125. package/es-modules/Extensions/DraggablePoints.js +9 -7
  126. package/es-modules/Extensions/Drilldown.js +152 -97
  127. package/es-modules/Extensions/ExportData.js +58 -9
  128. package/es-modules/Extensions/Exporting/Exporting.js +34 -23
  129. package/es-modules/Extensions/Exporting/ExportingDefaults.js +56 -8
  130. package/es-modules/Extensions/FullScreen.js +121 -54
  131. package/es-modules/Extensions/GeoJSON.js +149 -125
  132. package/es-modules/Extensions/MarkerClusters.js +36 -22
  133. package/es-modules/Extensions/NoDataToDisplay.js +1 -1
  134. package/es-modules/Extensions/OfflineExporting/OfflineExporting.js +110 -22
  135. package/es-modules/Extensions/OfflineExporting/OfflineExportingDefaults.js +1 -1
  136. package/es-modules/Extensions/Oldie/Oldie.js +2 -2
  137. package/es-modules/Extensions/OverlappingDataLabels.js +5 -4
  138. package/es-modules/Extensions/Pane.js +3 -3
  139. package/es-modules/Extensions/ParallelCoordinates.js +1 -1
  140. package/es-modules/Extensions/PatternFill.js +14 -2
  141. package/es-modules/Extensions/RangeSelector.js +29 -18
  142. package/es-modules/Extensions/ScrollablePlotArea.js +8 -4
  143. package/es-modules/Extensions/{SeriesLabel.js → SeriesLabel/SeriesLabel.js} +262 -384
  144. package/es-modules/Extensions/SeriesLabel/SeriesLabelDefaults.js +124 -0
  145. package/es-modules/Extensions/SeriesLabel/SeriesLabelUtilities.js +67 -0
  146. package/es-modules/Extensions/Sonification/Earcon.js +1 -1
  147. package/es-modules/Extensions/Stacking.js +5 -4
  148. package/es-modules/Extensions/Themes/HighContrastDark.js +10 -10
  149. package/es-modules/Extensions/Themes/HighContrastLight.js +10 -10
  150. package/es-modules/Maps/MapNavigation.js +49 -12
  151. package/es-modules/Maps/MapPointer.js +16 -0
  152. package/es-modules/Maps/MapUtilities.js +56 -0
  153. package/es-modules/Maps/MapView.js +619 -137
  154. package/es-modules/Maps/MapViewInsetsOptionsDefault.js +148 -0
  155. package/es-modules/Maps/MapViewOptionsDefault.js +60 -20
  156. package/es-modules/Maps/Projection.js +182 -88
  157. package/es-modules/Maps/Projections/EqualEarth.js +15 -6
  158. package/es-modules/Maps/Projections/LambertConformalConic.js +27 -19
  159. package/es-modules/Maps/Projections/Miller.js +23 -10
  160. package/es-modules/Maps/Projections/Orthographic.js +21 -10
  161. package/es-modules/Maps/Projections/WebMercator.js +25 -13
  162. package/es-modules/Series/ArcDiagram/ArcDiagramPoint.js +79 -0
  163. package/es-modules/Series/ArcDiagram/ArcDiagramSeries.js +591 -0
  164. package/es-modules/Series/Area/AreaSeries.js +21 -14
  165. package/es-modules/Series/AreaRange/AreaRangePoint.js +24 -11
  166. package/es-modules/Series/AreaRange/AreaRangeSeries.js +154 -147
  167. package/es-modules/Series/AreaSpline/AreaSplineSeries.js +45 -41
  168. package/es-modules/Series/AreaSplineRange/AreaSplineRangeSeries.js +43 -43
  169. package/es-modules/Series/Bar/BarSeries.js +3 -1
  170. package/es-modules/Series/Bellcurve/BellcurveSeries.js +3 -1
  171. package/es-modules/Series/BoxPlot/BoxPlotSeries.js +4 -2
  172. package/es-modules/Series/Bubble/BubbleLegendDefaults.js +1 -1
  173. package/es-modules/Series/Bubble/BubblePoint.js +3 -1
  174. package/es-modules/Series/Bubble/BubbleSeries.js +15 -6
  175. package/es-modules/Series/Bullet/BulletPoint.js +3 -1
  176. package/es-modules/Series/Bullet/BulletSeries.js +4 -3
  177. package/es-modules/Series/Candlestick/CandlestickSeries.js +5 -3
  178. package/es-modules/Series/CenteredUtilities.js +8 -2
  179. package/es-modules/Series/ColorMapComposition.js +111 -0
  180. package/es-modules/Series/Column/ColumnSeries.js +10 -7
  181. package/es-modules/Series/ColumnPyramid/ColumnPyramidSeries.js +3 -1
  182. package/es-modules/Series/ColumnRange/ColumnRangePoint.js +17 -13
  183. package/es-modules/Series/ColumnRange/ColumnRangeSeries.js +60 -57
  184. package/es-modules/Series/Cylinder/CylinderPoint.js +3 -1
  185. package/es-modules/Series/Cylinder/CylinderSeries.js +3 -1
  186. package/es-modules/Series/DataModifyComposition.js +1 -0
  187. package/es-modules/Series/DependencyWheel/DependencyWheelPoint.js +3 -1
  188. package/es-modules/Series/DependencyWheel/DependencyWheelSeries.js +5 -3
  189. package/es-modules/Series/DotPlot/DotPlotSeries.js +3 -1
  190. package/es-modules/Series/DrawPointUtilities.js +87 -0
  191. package/es-modules/Series/Dumbbell/DumbbellPoint.js +3 -1
  192. package/es-modules/Series/Dumbbell/DumbbellSeries.js +4 -2
  193. package/es-modules/Series/ErrorBar/ErrorBarSeries.js +4 -2
  194. package/es-modules/Series/Flags/FlagsPoint.js +4 -1
  195. package/es-modules/Series/Flags/FlagsSeries.js +13 -16
  196. package/es-modules/Series/Funnel/FunnelSeries.js +5 -3
  197. package/es-modules/Series/Funnel3D/Funnel3DPoint.js +3 -1
  198. package/es-modules/Series/Funnel3D/Funnel3DSeries.js +3 -1
  199. package/es-modules/Series/Gantt/GanttPoint.js +3 -1
  200. package/es-modules/Series/Gantt/GanttSeries.js +3 -1
  201. package/es-modules/Series/Gauge/GaugePoint.js +3 -1
  202. package/es-modules/Series/Gauge/GaugeSeries.js +196 -174
  203. package/es-modules/Series/HLC/HLCPoint.js +3 -1
  204. package/es-modules/Series/HLC/HLCSeries.js +4 -2
  205. package/es-modules/Series/Heatmap/HeatmapPoint.js +7 -5
  206. package/es-modules/Series/Heatmap/HeatmapSeries.js +29 -33
  207. package/es-modules/Series/HeikinAshi/HeikinAshiPoint.js +3 -1
  208. package/es-modules/Series/HeikinAshi/HeikinAshiSeries.js +3 -1
  209. package/es-modules/Series/Histogram/HistogramSeries.js +3 -1
  210. package/es-modules/Series/HollowCandlestick/HollowCandlestickPoint.js +3 -1
  211. package/es-modules/Series/HollowCandlestick/HollowCandlestickSeries.js +11 -9
  212. package/es-modules/Series/Item/ItemPoint.js +3 -1
  213. package/es-modules/Series/Item/ItemSeries.js +3 -1
  214. package/es-modules/Series/Line/LineSeries.js +4 -2
  215. package/es-modules/Series/Lollipop/LollipopPoint.js +3 -1
  216. package/es-modules/Series/Lollipop/LollipopSeries.js +4 -2
  217. package/es-modules/Series/Map/MapPoint.js +32 -7
  218. package/es-modules/Series/Map/MapSeries.js +298 -189
  219. package/es-modules/Series/MapBubble/MapBubblePoint.js +19 -25
  220. package/es-modules/Series/MapBubble/MapBubbleSeries.js +61 -2
  221. package/es-modules/Series/MapLine/MapLineSeries.js +18 -1
  222. package/es-modules/Series/MapPoint/MapPointPoint.js +6 -10
  223. package/es-modules/Series/MapPoint/MapPointSeries.js +50 -16
  224. package/es-modules/Series/Networkgraph/Networkgraph.js +3 -1
  225. package/es-modules/Series/NodesComposition.js +101 -49
  226. package/es-modules/Series/OHLC/OHLCPoint.js +3 -1
  227. package/es-modules/Series/OHLC/OHLCSeries.js +10 -1
  228. package/es-modules/Series/Organization/OrganizationPoint.js +71 -3
  229. package/es-modules/Series/Organization/OrganizationSeries.js +84 -28
  230. package/es-modules/Series/PackedBubble/PackedBubbleComposition.js +0 -2
  231. package/es-modules/Series/PackedBubble/PackedBubblePoint.js +3 -1
  232. package/es-modules/Series/PackedBubble/PackedBubbleSeries.js +3 -1
  233. package/es-modules/Series/ParetoSeries/ParetoSeries.js +3 -1
  234. package/es-modules/Series/Pie/PieDataLabel.js +4 -2
  235. package/es-modules/Series/Pie/PiePoint.js +15 -6
  236. package/es-modules/Series/Pie/PieSeries.js +51 -37
  237. package/es-modules/Series/Pie3D/Pie3DPoint.js +3 -1
  238. package/es-modules/Series/Pie3D/Pie3DSeries.js +22 -1
  239. package/es-modules/Series/PolarComposition.js +819 -0
  240. package/es-modules/Series/Polygon/PolygonSeries.js +3 -1
  241. package/es-modules/Series/Pyramid/PyramidSeries.js +3 -1
  242. package/es-modules/Series/Pyramid3D/Pyramid3DSeries.js +3 -1
  243. package/es-modules/Series/Sankey/SankeyColumnComposition.js +193 -0
  244. package/es-modules/Series/Sankey/SankeyPoint.js +40 -2
  245. package/es-modules/Series/Sankey/SankeySeries.js +35 -136
  246. package/es-modules/Series/Scatter/ScatterSeries.js +11 -6
  247. package/es-modules/Series/Scatter3D/Scatter3DPoint.js +3 -1
  248. package/es-modules/Series/Scatter3D/Scatter3DSeries.js +3 -1
  249. package/es-modules/Series/SeriesOnPointComposition.js +391 -0
  250. package/es-modules/Series/SolidGauge/SolidGaugeSeries.js +5 -3
  251. package/es-modules/Series/Spline/SplineSeries.js +13 -4
  252. package/es-modules/Series/Streamgraph/StreamgraphSeries.js +3 -1
  253. package/es-modules/Series/Sunburst/SunburstPoint.js +3 -3
  254. package/es-modules/Series/Sunburst/SunburstSeries.js +21 -5
  255. package/es-modules/Series/Tilemap/TilemapPoint.js +3 -1
  256. package/es-modules/Series/Tilemap/TilemapSeries.js +3 -1
  257. package/es-modules/Series/Timeline/TimelinePoint.js +3 -1
  258. package/es-modules/Series/Timeline/TimelineSeries.js +6 -4
  259. package/es-modules/Series/Treemap/TreemapPoint.js +8 -4
  260. package/es-modules/Series/Treemap/TreemapSeries.js +97 -87
  261. package/es-modules/Series/VariablePie/VariablePieSeries.js +3 -1
  262. package/es-modules/Series/Variwide/VariwidePoint.js +3 -1
  263. package/es-modules/Series/Variwide/VariwideSeries.js +3 -1
  264. package/es-modules/Series/Vector/VectorSeries.js +3 -1
  265. package/es-modules/Series/Venn/VennPoint.js +5 -5
  266. package/es-modules/Series/Venn/VennSeries.js +9 -6
  267. package/es-modules/Series/Waterfall/WaterfallPoint.js +3 -1
  268. package/es-modules/Series/Waterfall/WaterfallSeries.js +16 -12
  269. package/es-modules/Series/Windbarb/WindbarbPoint.js +3 -1
  270. package/es-modules/Series/Windbarb/WindbarbSeries.js +3 -1
  271. package/es-modules/Series/Wordcloud/WordcloudPoint.js +6 -6
  272. package/es-modules/Series/Wordcloud/WordcloudSeries.js +11 -8
  273. package/es-modules/Series/XRange/XRangePoint.js +3 -1
  274. package/es-modules/Series/XRange/XRangeSeries.js +3 -1
  275. package/es-modules/Stock/Indicators/ABands/ABandsIndicator.js +3 -1
  276. package/es-modules/Stock/Indicators/AD/ADIndicator.js +3 -1
  277. package/es-modules/Stock/Indicators/AO/AOIndicator.js +5 -3
  278. package/es-modules/Stock/Indicators/APO/APOIndicator.js +3 -1
  279. package/es-modules/Stock/Indicators/ATR/ATRIndicator.js +3 -1
  280. package/es-modules/Stock/Indicators/Aroon/AroonIndicator.js +3 -1
  281. package/es-modules/Stock/Indicators/AroonOscillator/AroonOscillatorIndicator.js +3 -1
  282. package/es-modules/Stock/Indicators/BB/BBIndicator.js +6 -4
  283. package/es-modules/Stock/Indicators/CCI/CCIIndicator.js +3 -1
  284. package/es-modules/Stock/Indicators/CMF/CMFIndicator.js +3 -1
  285. package/es-modules/Stock/Indicators/CMO/CMOIndicator.js +3 -1
  286. package/es-modules/Stock/Indicators/Chaikin/ChaikinIndicator.js +3 -1
  287. package/es-modules/Stock/Indicators/DEMA/DEMAIndicator.js +3 -1
  288. package/es-modules/Stock/Indicators/DMI/DMIIndicator.js +13 -7
  289. package/es-modules/Stock/Indicators/DPO/DPOIndicator.js +3 -1
  290. package/es-modules/Stock/Indicators/DisparityIndex/DisparityIndexIndicator.js +3 -1
  291. package/es-modules/Stock/Indicators/EMA/EMAIndicator.js +3 -1
  292. package/es-modules/Stock/Indicators/IKH/IKHIndicator.js +3 -1
  293. package/es-modules/Stock/Indicators/KeltnerChannels/KeltnerChannelsIndicator.js +3 -1
  294. package/es-modules/Stock/Indicators/Klinger/KlingerIndicator.js +3 -1
  295. package/es-modules/Stock/Indicators/LinearRegression/LinearRegression.js +3 -1
  296. package/es-modules/Stock/Indicators/LinearRegressionAngle/LinearRegressionAngle.js +3 -1
  297. package/es-modules/Stock/Indicators/LinearRegressionIntercept/LinearRegressionIntercept.js +3 -1
  298. package/es-modules/Stock/Indicators/LinearRegressionSlopes/LinearRegressionSlopes.js +3 -1
  299. package/es-modules/Stock/Indicators/MACD/MACDIndicator.js +26 -13
  300. package/es-modules/Stock/Indicators/MFI/MFIIndicator.js +3 -1
  301. package/es-modules/Stock/Indicators/Momentum/MomentumIndicator.js +3 -1
  302. package/es-modules/Stock/Indicators/MultipleLinesComposition.js +85 -95
  303. package/es-modules/Stock/Indicators/NATR/NATRIndicator.js +3 -1
  304. package/es-modules/Stock/Indicators/OBV/OBVIndicator.js +3 -1
  305. package/es-modules/Stock/Indicators/PC/PCIndicator.js +3 -1
  306. package/es-modules/Stock/Indicators/PPO/PPOIndicator.js +3 -1
  307. package/es-modules/Stock/Indicators/PSAR/PSARIndicator.js +3 -1
  308. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsIndicator.js +3 -1
  309. package/es-modules/Stock/Indicators/PivotPoints/PivotPointsPoint.js +3 -1
  310. package/es-modules/Stock/Indicators/PriceEnvelopes/PriceEnvelopesIndicator.js +3 -1
  311. package/es-modules/Stock/Indicators/ROC/ROCIndicator.js +3 -1
  312. package/es-modules/Stock/Indicators/RSI/RSIIndicator.js +3 -1
  313. package/es-modules/Stock/Indicators/SMA/SMAIndicator.js +12 -3
  314. package/es-modules/Stock/Indicators/SlowStochastic/SlowStochasticIndicator.js +3 -1
  315. package/es-modules/Stock/Indicators/Stochastic/StochasticIndicator.js +3 -1
  316. package/es-modules/Stock/Indicators/Supertrend/SupertrendIndicator.js +6 -4
  317. package/es-modules/Stock/Indicators/TEMA/TEMAIndicator.js +3 -1
  318. package/es-modules/Stock/Indicators/TRIX/TRIXIndicator.js +3 -1
  319. package/es-modules/Stock/Indicators/TrendLine/TrendLineIndicator.js +3 -1
  320. package/es-modules/Stock/Indicators/VBP/VBPIndicator.js +3 -1
  321. package/es-modules/Stock/Indicators/VBP/VBPPoint.js +3 -1
  322. package/es-modules/Stock/Indicators/VWAP/VWAPIndicator.js +3 -1
  323. package/es-modules/Stock/Indicators/WMA/WMAIndicator.js +3 -1
  324. package/es-modules/Stock/Indicators/WilliamsR/WilliamsRIndicator.js +3 -1
  325. package/es-modules/Stock/Indicators/Zigzag/ZigzagIndicator.js +3 -1
  326. package/es-modules/Stock/StockToolsBindings.js +51 -43
  327. package/es-modules/Stock/StockToolsGui.js +1 -1
  328. package/es-modules/masters/highcharts-3d.src.js +1 -1
  329. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  330. package/es-modules/masters/highcharts-more.src.js +4 -4
  331. package/es-modules/masters/highcharts.src.js +1 -1
  332. package/es-modules/masters/highmaps.src.js +1 -1
  333. package/es-modules/masters/highstock.src.js +1 -1
  334. package/es-modules/masters/indicators/acceleration-bands.src.js +1 -1
  335. package/es-modules/masters/indicators/accumulation-distribution.src.js +1 -1
  336. package/es-modules/masters/indicators/ao.src.js +1 -1
  337. package/es-modules/masters/indicators/apo.src.js +1 -1
  338. package/es-modules/masters/indicators/aroon-oscillator.src.js +1 -1
  339. package/es-modules/masters/indicators/aroon.src.js +1 -1
  340. package/es-modules/masters/indicators/atr.src.js +1 -1
  341. package/es-modules/masters/indicators/bollinger-bands.src.js +1 -1
  342. package/es-modules/masters/indicators/cci.src.js +1 -1
  343. package/es-modules/masters/indicators/chaikin.src.js +1 -1
  344. package/es-modules/masters/indicators/cmf.src.js +1 -1
  345. package/es-modules/masters/indicators/cmo.src.js +1 -1
  346. package/es-modules/masters/indicators/dema.src.js +1 -1
  347. package/es-modules/masters/indicators/disparity-index.src.js +1 -1
  348. package/es-modules/masters/indicators/dmi.src.js +1 -1
  349. package/es-modules/masters/indicators/dpo.src.js +1 -1
  350. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +1 -1
  351. package/es-modules/masters/indicators/indicators-all.src.js +1 -1
  352. package/es-modules/masters/indicators/indicators.src.js +1 -1
  353. package/es-modules/masters/indicators/keltner-channels.src.js +1 -1
  354. package/es-modules/masters/indicators/klinger.src.js +1 -1
  355. package/es-modules/masters/indicators/macd.src.js +1 -1
  356. package/es-modules/masters/indicators/mfi.src.js +1 -1
  357. package/es-modules/masters/indicators/momentum.src.js +1 -1
  358. package/es-modules/masters/indicators/natr.src.js +1 -1
  359. package/es-modules/masters/indicators/obv.src.js +1 -1
  360. package/es-modules/masters/indicators/pivot-points.src.js +1 -1
  361. package/es-modules/masters/indicators/ppo.src.js +1 -1
  362. package/es-modules/masters/indicators/price-channel.src.js +1 -1
  363. package/es-modules/masters/indicators/price-envelopes.src.js +1 -1
  364. package/es-modules/masters/indicators/psar.src.js +1 -1
  365. package/es-modules/masters/indicators/regressions.src.js +1 -1
  366. package/es-modules/masters/indicators/roc.src.js +1 -1
  367. package/es-modules/masters/indicators/rsi.src.js +1 -1
  368. package/es-modules/masters/indicators/slow-stochastic.src.js +1 -1
  369. package/es-modules/masters/indicators/stochastic.src.js +1 -1
  370. package/es-modules/masters/indicators/supertrend.src.js +1 -1
  371. package/es-modules/masters/indicators/tema.src.js +1 -1
  372. package/es-modules/masters/indicators/trendline.src.js +1 -1
  373. package/es-modules/masters/indicators/trix.src.js +1 -1
  374. package/es-modules/masters/indicators/volume-by-price.src.js +1 -1
  375. package/es-modules/masters/indicators/vwap.src.js +1 -1
  376. package/es-modules/masters/indicators/williams-r.src.js +1 -1
  377. package/es-modules/masters/indicators/wma.src.js +1 -1
  378. package/es-modules/masters/indicators/zigzag.src.js +1 -1
  379. package/es-modules/masters/modules/accessibility.src.js +1 -1
  380. package/es-modules/masters/modules/annotations-advanced.src.js +2 -2
  381. package/es-modules/masters/modules/annotations.src.js +2 -2
  382. package/es-modules/masters/modules/arc-diagram.src.js +14 -0
  383. package/es-modules/masters/modules/arrow-symbols.src.js +1 -1
  384. package/es-modules/masters/modules/boost-canvas.src.js +1 -1
  385. package/es-modules/masters/modules/boost.src.js +1 -1
  386. package/es-modules/masters/modules/broken-axis.src.js +1 -1
  387. package/es-modules/masters/modules/bullet.src.js +1 -1
  388. package/es-modules/masters/modules/coloraxis.src.js +1 -1
  389. package/es-modules/masters/modules/current-date-indicator.src.js +1 -1
  390. package/es-modules/masters/modules/cylinder.src.js +1 -1
  391. package/es-modules/masters/modules/data.src.js +2 -1
  392. package/es-modules/masters/modules/datagrouping.src.js +1 -1
  393. package/es-modules/masters/modules/debugger.src.js +1 -1
  394. package/es-modules/masters/modules/dependency-wheel.src.js +1 -1
  395. package/es-modules/masters/modules/dotplot.src.js +1 -1
  396. package/es-modules/masters/modules/drag-panes.src.js +1 -1
  397. package/es-modules/masters/modules/draggable-points.src.js +1 -1
  398. package/es-modules/masters/modules/drilldown.src.js +2 -1
  399. package/es-modules/masters/modules/dumbbell.src.js +1 -1
  400. package/es-modules/masters/modules/export-data.src.js +1 -1
  401. package/es-modules/masters/modules/exporting.src.js +1 -1
  402. package/es-modules/masters/modules/full-screen.src.js +1 -1
  403. package/es-modules/masters/modules/funnel.src.js +1 -1
  404. package/es-modules/masters/modules/funnel3d.src.js +1 -1
  405. package/es-modules/masters/modules/gantt.src.js +1 -1
  406. package/es-modules/masters/modules/grid-axis.src.js +1 -1
  407. package/es-modules/masters/modules/heatmap.src.js +1 -1
  408. package/es-modules/masters/modules/heikinashi.src.js +1 -1
  409. package/es-modules/masters/modules/histogram-bellcurve.src.js +1 -1
  410. package/es-modules/masters/modules/hollowcandlestick.src.js +1 -1
  411. package/es-modules/masters/modules/item-series.src.js +1 -1
  412. package/es-modules/masters/modules/lollipop.src.js +1 -1
  413. package/es-modules/masters/modules/map.src.js +5 -1
  414. package/es-modules/masters/modules/marker-clusters.src.js +1 -1
  415. package/es-modules/masters/modules/networkgraph.src.js +1 -1
  416. package/es-modules/masters/modules/no-data-to-display.src.js +1 -1
  417. package/es-modules/masters/modules/offline-exporting.src.js +1 -1
  418. package/es-modules/masters/modules/oldie-polyfills.src.js +1 -1
  419. package/es-modules/masters/modules/oldie.src.js +1 -1
  420. package/es-modules/masters/modules/organization.src.js +1 -1
  421. package/es-modules/masters/modules/overlapping-datalabels.src.js +1 -1
  422. package/es-modules/masters/modules/parallel-coordinates.src.js +1 -1
  423. package/es-modules/masters/modules/pareto.src.js +1 -1
  424. package/es-modules/masters/modules/pathfinder.src.js +1 -1
  425. package/es-modules/masters/modules/pattern-fill.src.js +1 -1
  426. package/es-modules/masters/modules/price-indicator.src.js +1 -1
  427. package/es-modules/masters/modules/pyramid3d.src.js +1 -1
  428. package/es-modules/masters/modules/sankey.src.js +1 -1
  429. package/es-modules/masters/modules/series-label.src.js +5 -2
  430. package/es-modules/masters/modules/series-on-point.src.js +16 -0
  431. package/es-modules/masters/modules/solid-gauge.src.js +1 -1
  432. package/es-modules/masters/modules/sonification.src.js +2 -6
  433. package/es-modules/masters/modules/static-scale.src.js +1 -1
  434. package/es-modules/masters/modules/stock-tools.src.js +1 -1
  435. package/es-modules/masters/modules/stock.src.js +1 -1
  436. package/es-modules/masters/modules/streamgraph.src.js +1 -1
  437. package/es-modules/masters/modules/sunburst.src.js +1 -1
  438. package/es-modules/masters/modules/tilemap.src.js +1 -1
  439. package/es-modules/masters/modules/timeline.src.js +1 -1
  440. package/es-modules/masters/modules/treegrid.src.js +1 -1
  441. package/es-modules/masters/modules/treemap.src.js +5 -1
  442. package/es-modules/masters/modules/variable-pie.src.js +1 -1
  443. package/es-modules/masters/modules/variwide.src.js +1 -1
  444. package/es-modules/masters/modules/vector.src.js +1 -1
  445. package/es-modules/masters/modules/venn.src.js +1 -1
  446. package/es-modules/masters/modules/windbarb.src.js +1 -1
  447. package/es-modules/masters/modules/wordcloud.src.js +1 -1
  448. package/es-modules/masters/modules/xrange.src.js +1 -1
  449. package/es-modules/masters/themes/avocado.src.js +1 -1
  450. package/es-modules/masters/themes/brand-dark.src.js +1 -1
  451. package/es-modules/masters/themes/brand-light.src.js +1 -1
  452. package/es-modules/masters/themes/dark-blue.src.js +1 -1
  453. package/es-modules/masters/themes/dark-green.src.js +1 -1
  454. package/es-modules/masters/themes/dark-unica.src.js +1 -1
  455. package/es-modules/masters/themes/gray.src.js +1 -1
  456. package/es-modules/masters/themes/grid-light.src.js +1 -1
  457. package/es-modules/masters/themes/grid.src.js +1 -1
  458. package/es-modules/masters/themes/high-contrast-dark.src.js +1 -1
  459. package/es-modules/masters/themes/high-contrast-light.src.js +1 -1
  460. package/es-modules/masters/themes/sand-signika.src.js +1 -1
  461. package/es-modules/masters/themes/skies.src.js +1 -1
  462. package/es-modules/masters/themes/sunset.src.js +1 -1
  463. package/highcharts-3d.js +99 -98
  464. package/highcharts-3d.js.map +1 -1
  465. package/highcharts-3d.src.js +51 -21
  466. package/highcharts-gantt.js +811 -801
  467. package/highcharts-gantt.js.map +1 -1
  468. package/highcharts-gantt.src.js +2020 -1607
  469. package/highcharts-more.d.ts +10 -0
  470. package/highcharts-more.js +194 -194
  471. package/highcharts-more.js.map +1 -1
  472. package/highcharts-more.src.d.ts +10 -0
  473. package/highcharts-more.src.js +3512 -3364
  474. package/highcharts.d.ts +12336 -965
  475. package/highcharts.js +595 -586
  476. package/highcharts.js.map +1 -1
  477. package/highcharts.src.d.ts +12336 -965
  478. package/highcharts.src.js +1047 -665
  479. package/highmaps.js +763 -728
  480. package/highmaps.js.map +1 -1
  481. package/highmaps.src.js +4482 -2639
  482. package/highstock.js +798 -788
  483. package/highstock.js.map +1 -1
  484. package/highstock.src.js +1177 -739
  485. package/indicators/acceleration-bands.d.ts +1 -17
  486. package/indicators/acceleration-bands.js +11 -11
  487. package/indicators/acceleration-bands.js.map +1 -1
  488. package/indicators/acceleration-bands.src.d.ts +1 -17
  489. package/indicators/acceleration-bands.src.js +99 -100
  490. package/indicators/accumulation-distribution.js +5 -5
  491. package/indicators/accumulation-distribution.js.map +1 -1
  492. package/indicators/accumulation-distribution.src.js +11 -2
  493. package/indicators/ao.js +6 -6
  494. package/indicators/ao.js.map +1 -1
  495. package/indicators/ao.src.js +13 -4
  496. package/indicators/apo.js +5 -5
  497. package/indicators/apo.js.map +1 -1
  498. package/indicators/apo.src.js +11 -2
  499. package/indicators/aroon-oscillator.d.ts +1 -17
  500. package/indicators/aroon-oscillator.js +10 -10
  501. package/indicators/aroon-oscillator.js.map +1 -1
  502. package/indicators/aroon-oscillator.src.d.ts +1 -17
  503. package/indicators/aroon-oscillator.src.js +99 -100
  504. package/indicators/aroon.d.ts +1 -17
  505. package/indicators/aroon.js +11 -11
  506. package/indicators/aroon.js.map +1 -1
  507. package/indicators/aroon.src.d.ts +1 -17
  508. package/indicators/aroon.src.js +99 -100
  509. package/indicators/atr.js +5 -5
  510. package/indicators/atr.js.map +1 -1
  511. package/indicators/atr.src.js +11 -2
  512. package/indicators/bollinger-bands.d.ts +1 -17
  513. package/indicators/bollinger-bands.js +11 -12
  514. package/indicators/bollinger-bands.js.map +1 -1
  515. package/indicators/bollinger-bands.src.d.ts +1 -17
  516. package/indicators/bollinger-bands.src.js +102 -103
  517. package/indicators/cci.js +5 -5
  518. package/indicators/cci.js.map +1 -1
  519. package/indicators/cci.src.js +11 -2
  520. package/indicators/chaikin.js +8 -8
  521. package/indicators/chaikin.js.map +1 -1
  522. package/indicators/chaikin.src.js +11 -2
  523. package/indicators/cmf.js +6 -6
  524. package/indicators/cmf.js.map +1 -1
  525. package/indicators/cmf.src.js +11 -2
  526. package/indicators/cmo.js +5 -5
  527. package/indicators/cmo.js.map +1 -1
  528. package/indicators/cmo.src.js +11 -2
  529. package/indicators/dema.js +5 -5
  530. package/indicators/dema.js.map +1 -1
  531. package/indicators/dema.src.js +11 -2
  532. package/indicators/disparity-index.js +6 -6
  533. package/indicators/disparity-index.js.map +1 -1
  534. package/indicators/disparity-index.src.js +11 -2
  535. package/indicators/dmi.js +12 -12
  536. package/indicators/dmi.js.map +1 -1
  537. package/indicators/dmi.src.js +109 -106
  538. package/indicators/dpo.js +5 -5
  539. package/indicators/dpo.js.map +1 -1
  540. package/indicators/dpo.src.js +11 -2
  541. package/indicators/ema.js +2 -1
  542. package/indicators/ema.js.map +1 -1
  543. package/indicators/ema.src.js +10 -1
  544. package/indicators/ichimoku-kinko-hyo.js +16 -16
  545. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  546. package/indicators/ichimoku-kinko-hyo.src.js +11 -2
  547. package/indicators/indicators-all.d.ts +1 -17
  548. package/indicators/indicators-all.js +198 -196
  549. package/indicators/indicators-all.js.map +1 -1
  550. package/indicators/indicators-all.src.d.ts +1 -17
  551. package/indicators/indicators-all.src.js +151 -129
  552. package/indicators/indicators.js +13 -12
  553. package/indicators/indicators.js.map +1 -1
  554. package/indicators/indicators.src.js +21 -5
  555. package/indicators/keltner-channels.d.ts +1 -17
  556. package/indicators/keltner-channels.js +11 -11
  557. package/indicators/keltner-channels.js.map +1 -1
  558. package/indicators/keltner-channels.src.d.ts +1 -17
  559. package/indicators/keltner-channels.src.js +99 -100
  560. package/indicators/klinger.js +14 -14
  561. package/indicators/klinger.js.map +1 -1
  562. package/indicators/klinger.src.js +99 -100
  563. package/indicators/macd.js +13 -11
  564. package/indicators/macd.js.map +1 -1
  565. package/indicators/macd.src.js +35 -14
  566. package/indicators/mfi.js +6 -6
  567. package/indicators/mfi.js.map +1 -1
  568. package/indicators/mfi.src.js +11 -2
  569. package/indicators/momentum.js +5 -5
  570. package/indicators/momentum.js.map +1 -1
  571. package/indicators/momentum.src.js +11 -2
  572. package/indicators/natr.js +5 -4
  573. package/indicators/natr.js.map +1 -1
  574. package/indicators/natr.src.js +11 -2
  575. package/indicators/obv.js +5 -5
  576. package/indicators/obv.js.map +1 -1
  577. package/indicators/obv.src.js +11 -2
  578. package/indicators/pivot-points.js +11 -11
  579. package/indicators/pivot-points.js.map +1 -1
  580. package/indicators/pivot-points.src.js +11 -2
  581. package/indicators/ppo.js +5 -5
  582. package/indicators/ppo.js.map +1 -1
  583. package/indicators/ppo.src.js +11 -2
  584. package/indicators/price-channel.d.ts +1 -17
  585. package/indicators/price-channel.js +11 -11
  586. package/indicators/price-channel.js.map +1 -1
  587. package/indicators/price-channel.src.d.ts +1 -17
  588. package/indicators/price-channel.src.js +99 -100
  589. package/indicators/price-envelopes.js +8 -8
  590. package/indicators/price-envelopes.js.map +1 -1
  591. package/indicators/price-envelopes.src.js +11 -2
  592. package/indicators/psar.js +7 -6
  593. package/indicators/psar.js.map +1 -1
  594. package/indicators/psar.src.js +11 -2
  595. package/indicators/regressions.js +12 -12
  596. package/indicators/regressions.js.map +1 -1
  597. package/indicators/regressions.src.js +11 -2
  598. package/indicators/roc.js +5 -5
  599. package/indicators/roc.js.map +1 -1
  600. package/indicators/roc.src.js +11 -2
  601. package/indicators/rsi.js +6 -5
  602. package/indicators/rsi.js.map +1 -1
  603. package/indicators/rsi.src.js +11 -2
  604. package/indicators/slow-stochastic.js +5 -5
  605. package/indicators/slow-stochastic.js.map +1 -1
  606. package/indicators/slow-stochastic.src.js +11 -2
  607. package/indicators/stochastic.d.ts +1 -17
  608. package/indicators/stochastic.js +12 -12
  609. package/indicators/stochastic.js.map +1 -1
  610. package/indicators/stochastic.src.d.ts +1 -17
  611. package/indicators/stochastic.src.js +99 -100
  612. package/indicators/supertrend.js +10 -10
  613. package/indicators/supertrend.js.map +1 -1
  614. package/indicators/supertrend.src.js +14 -5
  615. package/indicators/tema.js +6 -6
  616. package/indicators/tema.js.map +1 -1
  617. package/indicators/tema.src.js +11 -2
  618. package/indicators/trendline.js +5 -5
  619. package/indicators/trendline.js.map +1 -1
  620. package/indicators/trendline.src.js +11 -2
  621. package/indicators/trix.js +4 -4
  622. package/indicators/trix.js.map +1 -1
  623. package/indicators/trix.src.js +11 -2
  624. package/indicators/volume-by-price.js +17 -17
  625. package/indicators/volume-by-price.js.map +1 -1
  626. package/indicators/volume-by-price.src.js +11 -2
  627. package/indicators/vwap.js +5 -5
  628. package/indicators/vwap.js.map +1 -1
  629. package/indicators/vwap.src.js +11 -2
  630. package/indicators/williams-r.js +6 -5
  631. package/indicators/williams-r.js.map +1 -1
  632. package/indicators/williams-r.src.js +11 -2
  633. package/indicators/wma.js +5 -5
  634. package/indicators/wma.js.map +1 -1
  635. package/indicators/wma.src.js +11 -2
  636. package/indicators/zigzag.js +6 -6
  637. package/indicators/zigzag.js.map +1 -1
  638. package/indicators/zigzag.src.js +11 -2
  639. package/lib/jspdf.js +299 -184
  640. package/lib/jspdf.src.js +25266 -18067
  641. package/lib/svg2pdf.js +35 -31
  642. package/lib/svg2pdf.src.js +5721 -4179
  643. package/modules/accessibility.js +242 -237
  644. package/modules/accessibility.js.map +1 -1
  645. package/modules/accessibility.src.js +599 -390
  646. package/modules/annotations-advanced.js +192 -192
  647. package/modules/annotations-advanced.js.map +1 -1
  648. package/modules/annotations-advanced.src.js +96 -47
  649. package/modules/annotations.js +126 -126
  650. package/modules/annotations.js.map +1 -1
  651. package/modules/annotations.src.js +67 -25
  652. package/modules/arc-diagram.js +25 -0
  653. package/modules/arc-diagram.js.map +1 -0
  654. package/modules/arc-diagram.src.js +778 -0
  655. package/modules/arrow-symbols.js +4 -3
  656. package/modules/arrow-symbols.js.map +1 -1
  657. package/modules/arrow-symbols.src.js +11 -2
  658. package/modules/boost-canvas.js +16 -15
  659. package/modules/boost-canvas.js.map +1 -1
  660. package/modules/boost-canvas.src.js +22 -7
  661. package/modules/boost.js +81 -79
  662. package/modules/boost.js.map +1 -1
  663. package/modules/boost.src.js +90 -51
  664. package/modules/broken-axis.js +13 -13
  665. package/modules/broken-axis.js.map +1 -1
  666. package/modules/broken-axis.src.js +11 -2
  667. package/modules/bullet.js +9 -9
  668. package/modules/bullet.js.map +1 -1
  669. package/modules/bullet.src.js +12 -6
  670. package/modules/coloraxis.js +24 -24
  671. package/modules/coloraxis.js.map +1 -1
  672. package/modules/coloraxis.src.js +37 -11
  673. package/modules/current-date-indicator.js +5 -4
  674. package/modules/current-date-indicator.js.map +1 -1
  675. package/modules/current-date-indicator.src.js +12 -3
  676. package/modules/cylinder.js +11 -11
  677. package/modules/cylinder.js.map +1 -1
  678. package/modules/cylinder.src.js +11 -2
  679. package/modules/data.d.ts +12 -12
  680. package/modules/data.js +33 -33
  681. package/modules/data.js.map +1 -1
  682. package/modules/data.src.d.ts +12 -12
  683. package/modules/data.src.js +906 -846
  684. package/modules/datagrouping.js +21 -20
  685. package/modules/datagrouping.js.map +1 -1
  686. package/modules/datagrouping.src.js +19 -5
  687. package/modules/debugger.js +8 -7
  688. package/modules/debugger.js.map +1 -1
  689. package/modules/debugger.src.js +15 -2
  690. package/modules/dependency-wheel.js +12 -11
  691. package/modules/dependency-wheel.js.map +1 -1
  692. package/modules/dependency-wheel.src.js +14 -5
  693. package/modules/dotplot.js +6 -6
  694. package/modules/dotplot.js.map +1 -1
  695. package/modules/dotplot.src.js +11 -2
  696. package/modules/drag-panes.js +10 -10
  697. package/modules/drag-panes.js.map +1 -1
  698. package/modules/drag-panes.src.js +12 -3
  699. package/modules/draggable-points.js +35 -34
  700. package/modules/draggable-points.js.map +1 -1
  701. package/modules/draggable-points.src.js +20 -9
  702. package/modules/drilldown.d.ts +19 -0
  703. package/modules/drilldown.js +37 -25
  704. package/modules/drilldown.js.map +1 -1
  705. package/modules/drilldown.src.d.ts +19 -0
  706. package/modules/drilldown.src.js +1124 -108
  707. package/modules/dumbbell.d.ts +4 -0
  708. package/modules/dumbbell.js +17 -17
  709. package/modules/dumbbell.js.map +1 -1
  710. package/modules/dumbbell.src.d.ts +4 -0
  711. package/modules/dumbbell.src.js +34 -13
  712. package/modules/export-data.js +24 -21
  713. package/modules/export-data.js.map +1 -1
  714. package/modules/export-data.src.js +87 -14
  715. package/modules/exporting.d.ts +8 -8
  716. package/modules/exporting.js +39 -39
  717. package/modules/exporting.js.map +1 -1
  718. package/modules/exporting.src.d.ts +8 -8
  719. package/modules/exporting.src.js +270 -135
  720. package/modules/full-screen.js +8 -7
  721. package/modules/full-screen.js.map +1 -1
  722. package/modules/full-screen.src.js +135 -58
  723. package/modules/funnel.js +12 -12
  724. package/modules/funnel.js.map +1 -1
  725. package/modules/funnel.src.js +13 -4
  726. package/modules/funnel3d.js +21 -21
  727. package/modules/funnel3d.js.map +1 -1
  728. package/modules/funnel3d.src.js +11 -2
  729. package/modules/gantt.js +218 -217
  730. package/modules/gantt.js.map +1 -1
  731. package/modules/gantt.src.js +983 -943
  732. package/modules/grid-axis.js +23 -23
  733. package/modules/grid-axis.js.map +1 -1
  734. package/modules/grid-axis.src.js +900 -890
  735. package/modules/heatmap.js +40 -39
  736. package/modules/heatmap.js.map +1 -1
  737. package/modules/heatmap.src.js +160 -113
  738. package/modules/heikinashi.js +8 -8
  739. package/modules/heikinashi.js.map +1 -1
  740. package/modules/heikinashi.src.js +11 -2
  741. package/modules/histogram-bellcurve.js +13 -13
  742. package/modules/histogram-bellcurve.js.map +1 -1
  743. package/modules/histogram-bellcurve.src.js +11 -2
  744. package/modules/hollowcandlestick.js +9 -9
  745. package/modules/hollowcandlestick.js.map +1 -1
  746. package/modules/hollowcandlestick.src.js +19 -10
  747. package/modules/item-series.js +12 -12
  748. package/modules/item-series.js.map +1 -1
  749. package/modules/item-series.src.js +11 -2
  750. package/modules/lollipop.js +7 -7
  751. package/modules/lollipop.js.map +1 -1
  752. package/modules/lollipop.src.js +12 -3
  753. package/modules/map.d.ts +80 -43
  754. package/modules/map.js +171 -144
  755. package/modules/map.js.map +1 -1
  756. package/modules/map.src.d.ts +80 -43
  757. package/modules/map.src.js +8292 -6822
  758. package/modules/marker-clusters.js +36 -36
  759. package/modules/marker-clusters.js.map +1 -1
  760. package/modules/marker-clusters.src.js +48 -28
  761. package/modules/networkgraph.d.ts +1 -12
  762. package/modules/networkgraph.js +46 -45
  763. package/modules/networkgraph.js.map +1 -1
  764. package/modules/networkgraph.src.d.ts +1 -12
  765. package/modules/networkgraph.src.js +127 -55
  766. package/modules/no-data-to-display.js +5 -5
  767. package/modules/no-data-to-display.js.map +1 -1
  768. package/modules/no-data-to-display.src.js +12 -3
  769. package/modules/offline-exporting.js +20 -18
  770. package/modules/offline-exporting.js.map +1 -1
  771. package/modules/offline-exporting.src.js +129 -28
  772. package/modules/oldie-polyfills.js +7 -7
  773. package/modules/oldie-polyfills.js.map +1 -1
  774. package/modules/oldie-polyfills.src.js +11 -2
  775. package/modules/oldie.js +30 -30
  776. package/modules/oldie.js.map +1 -1
  777. package/modules/oldie.src.js +13 -4
  778. package/modules/organization.js +16 -14
  779. package/modules/organization.js.map +1 -1
  780. package/modules/organization.src.js +168 -34
  781. package/modules/overlapping-datalabels.js +3 -2
  782. package/modules/overlapping-datalabels.js.map +1 -1
  783. package/modules/overlapping-datalabels.src.js +11 -2
  784. package/modules/parallel-coordinates.js +11 -11
  785. package/modules/parallel-coordinates.js.map +1 -1
  786. package/modules/parallel-coordinates.src.js +12 -3
  787. package/modules/pareto.js +7 -7
  788. package/modules/pareto.js.map +1 -1
  789. package/modules/pareto.src.js +11 -2
  790. package/modules/pathfinder.js +31 -31
  791. package/modules/pathfinder.js.map +1 -1
  792. package/modules/pathfinder.src.js +11 -2
  793. package/modules/pattern-fill.js +15 -14
  794. package/modules/pattern-fill.js.map +1 -1
  795. package/modules/pattern-fill.src.js +25 -3
  796. package/modules/price-indicator.js +5 -5
  797. package/modules/price-indicator.js.map +1 -1
  798. package/modules/price-indicator.src.js +11 -2
  799. package/modules/pyramid3d.js +4 -4
  800. package/modules/pyramid3d.js.map +1 -1
  801. package/modules/pyramid3d.src.js +11 -2
  802. package/modules/sankey.d.ts +1 -12
  803. package/modules/sankey.js +32 -29
  804. package/modules/sankey.js.map +1 -1
  805. package/modules/sankey.src.d.ts +1 -12
  806. package/modules/sankey.src.js +422 -207
  807. package/modules/series-label.js +18 -17
  808. package/modules/series-label.js.map +1 -1
  809. package/modules/series-label.src.js +482 -386
  810. package/modules/series-on-point.js +18 -0
  811. package/modules/series-on-point.js.map +1 -0
  812. package/modules/series-on-point.src.js +464 -0
  813. package/modules/solid-gauge.js +10 -10
  814. package/modules/solid-gauge.js.map +1 -1
  815. package/modules/solid-gauge.src.js +15 -6
  816. package/modules/sonification.js +59 -59
  817. package/modules/sonification.js.map +1 -1
  818. package/modules/sonification.src.js +13 -8
  819. package/modules/static-scale.js +5 -4
  820. package/modules/static-scale.js.map +1 -1
  821. package/modules/static-scale.src.js +11 -2
  822. package/modules/stock-tools.js +167 -167
  823. package/modules/stock-tools.js.map +1 -1
  824. package/modules/stock-tools.src.js +118 -67
  825. package/modules/stock.js +205 -204
  826. package/modules/stock.js.map +1 -1
  827. package/modules/stock.src.js +141 -76
  828. package/modules/streamgraph.js +5 -4
  829. package/modules/streamgraph.js.map +1 -1
  830. package/modules/streamgraph.src.js +11 -2
  831. package/modules/sunburst.d.ts +3 -0
  832. package/modules/sunburst.js +73 -60
  833. package/modules/sunburst.js.map +1 -1
  834. package/modules/sunburst.src.d.ts +3 -0
  835. package/modules/sunburst.src.js +1391 -406
  836. package/modules/tilemap.js +17 -17
  837. package/modules/tilemap.js.map +1 -1
  838. package/modules/tilemap.src.js +11 -2
  839. package/modules/timeline.js +18 -18
  840. package/modules/timeline.js.map +1 -1
  841. package/modules/timeline.src.js +14 -5
  842. package/modules/treegrid.js +57 -56
  843. package/modules/treegrid.js.map +1 -1
  844. package/modules/treegrid.src.js +913 -892
  845. package/modules/treemap.d.ts +3 -0
  846. package/modules/treemap.js +54 -41
  847. package/modules/treemap.js.map +1 -1
  848. package/modules/treemap.src.d.ts +3 -0
  849. package/modules/treemap.src.js +1229 -255
  850. package/modules/variable-pie.js +9 -9
  851. package/modules/variable-pie.js.map +1 -1
  852. package/modules/variable-pie.src.js +11 -2
  853. package/modules/variwide.js +12 -12
  854. package/modules/variwide.js.map +1 -1
  855. package/modules/variwide.src.js +11 -2
  856. package/modules/vector.js +8 -7
  857. package/modules/vector.js.map +1 -1
  858. package/modules/vector.src.js +11 -2
  859. package/modules/venn.js +31 -31
  860. package/modules/venn.js.map +1 -1
  861. package/modules/venn.src.js +88 -105
  862. package/modules/windbarb.js +15 -15
  863. package/modules/windbarb.js.map +1 -1
  864. package/modules/windbarb.src.js +11 -2
  865. package/modules/wordcloud.js +23 -23
  866. package/modules/wordcloud.js.map +1 -1
  867. package/modules/wordcloud.src.js +92 -109
  868. package/modules/xrange.js +16 -16
  869. package/modules/xrange.js.map +1 -1
  870. package/modules/xrange.src.js +11 -2
  871. package/package.json +1 -1
  872. package/themes/avocado.js +4 -3
  873. package/themes/avocado.js.map +1 -1
  874. package/themes/avocado.src.js +11 -2
  875. package/themes/brand-dark.js +9 -8
  876. package/themes/brand-dark.js.map +1 -1
  877. package/themes/brand-dark.src.js +11 -2
  878. package/themes/brand-light.js +8 -8
  879. package/themes/brand-light.js.map +1 -1
  880. package/themes/brand-light.src.js +11 -2
  881. package/themes/dark-blue.js +9 -8
  882. package/themes/dark-blue.js.map +1 -1
  883. package/themes/dark-blue.src.js +11 -2
  884. package/themes/dark-green.js +9 -8
  885. package/themes/dark-green.js.map +1 -1
  886. package/themes/dark-green.src.js +11 -2
  887. package/themes/dark-unica.js +8 -7
  888. package/themes/dark-unica.js.map +1 -1
  889. package/themes/dark-unica.src.js +11 -2
  890. package/themes/gray.js +9 -8
  891. package/themes/gray.js.map +1 -1
  892. package/themes/gray.src.js +11 -2
  893. package/themes/grid-light.js +5 -4
  894. package/themes/grid-light.js.map +1 -1
  895. package/themes/grid-light.src.js +11 -2
  896. package/themes/grid.js +5 -5
  897. package/themes/grid.js.map +1 -1
  898. package/themes/grid.src.js +11 -2
  899. package/themes/high-contrast-dark.js +7 -7
  900. package/themes/high-contrast-dark.js.map +1 -1
  901. package/themes/high-contrast-dark.src.js +21 -12
  902. package/themes/high-contrast-light.js +3 -3
  903. package/themes/high-contrast-light.js.map +1 -1
  904. package/themes/high-contrast-light.src.js +21 -12
  905. package/themes/sand-signika.js +5 -5
  906. package/themes/sand-signika.js.map +1 -1
  907. package/themes/sand-signika.src.js +11 -2
  908. package/themes/skies.js +5 -5
  909. package/themes/skies.js.map +1 -1
  910. package/themes/skies.src.js +11 -2
  911. package/themes/sunset.js +3 -3
  912. package/themes/sunset.js.map +1 -1
  913. package/themes/sunset.src.js +11 -2
  914. package/es-modules/Extensions/Polar.js +0 -740
  915. package/es-modules/Maps/ProjectionDefinition.js +0 -9
  916. package/es-modules/Series/ColorMapMixin.js +0 -84
  917. package/es-modules/Series/DrawPointComposition.js +0 -111
@@ -8,16 +8,76 @@
8
8
  *
9
9
  * */
10
10
  'use strict';
11
+ var __extends = (this && this.__extends) || (function () {
12
+ var extendStatics = function (d, b) {
13
+ extendStatics = Object.setPrototypeOf ||
14
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
15
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
16
+ return extendStatics(d, b);
17
+ };
18
+ return function (d, b) {
19
+ if (typeof b !== "function" && b !== null)
20
+ throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
21
+ extendStatics(d, b);
22
+ function __() { this.constructor = d; }
23
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
24
+ };
25
+ })();
26
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
27
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
28
+ if (ar || !(i in from)) {
29
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
30
+ ar[i] = from[i];
31
+ }
32
+ }
33
+ return to.concat(ar || Array.prototype.slice.call(from));
34
+ };
11
35
  import defaultOptions from './MapViewOptionsDefault.js';
36
+ import defaultInsetsOptions from './MapViewInsetsOptionsDefault.js';
37
+ import GeoJSONModule from '../Extensions/GeoJSON.js';
38
+ var topo2geo = GeoJSONModule.topo2geo;
39
+ import MapChart from '../Core/Chart/MapChart.js';
40
+ var maps = MapChart.maps;
41
+ import MU from './MapUtilities.js';
42
+ var boundsFromPath = MU.boundsFromPath, pointInPolygon = MU.pointInPolygon;
12
43
  import Projection from './Projection.js';
13
44
  import U from '../Core/Utilities.js';
14
- var addEvent = U.addEvent, clamp = U.clamp, fireEvent = U.fireEvent, isNumber = U.isNumber, merge = U.merge, pick = U.pick, relativeLength = U.relativeLength;
45
+ var addEvent = U.addEvent, clamp = U.clamp, fireEvent = U.fireEvent, isArray = U.isArray, isNumber = U.isNumber, isObject = U.isObject, isString = U.isString, merge = U.merge, pick = U.pick, relativeLength = U.relativeLength;
15
46
  /**
16
47
  * The world size in terms of 10k meters in the Web Mercator projection, to
17
48
  * match a 256 square tile to zoom level 0
18
49
  */
19
50
  var worldSize = 400.979322;
20
51
  var tileSize = 256;
52
+ // Compute the zoom from given bounds and the size of the playing field. Used in
53
+ // two places, hence the local function.
54
+ var zoomFromBounds = function (b, playingField) {
55
+ var width = playingField.width, height = playingField.height, scaleToField = Math.max((b.x2 - b.x1) / (width / tileSize), (b.y2 - b.y1) / (height / tileSize));
56
+ return Math.log(worldSize / scaleToField) / Math.log(2);
57
+ };
58
+ /*
59
+ const mergeCollections = <
60
+ T extends Array<AnyRecord|undefined>
61
+ >(a: T, b: T): T => {
62
+ b.forEach((newer, i): void => {
63
+ // Only merge by id supported for now. We may consider later to support
64
+ // more complex rules like those of `Chart.update` with `oneToOne`, but
65
+ // it is probably not needed. Existing insets can be disabled by
66
+ // overwriting the `geoBounds` with empty data.
67
+ if (newer && isString(newer.id)) {
68
+ const older = U.find(
69
+ a,
70
+ (aItem): boolean => (aItem && aItem.id) === newer.id
71
+ );
72
+ if (older) {
73
+ const aIndex = a.indexOf(older);
74
+ a[aIndex] = merge(older, newer);
75
+ }
76
+ }
77
+ });
78
+ return a;
79
+ };
80
+ */
21
81
  /**
22
82
  * The map view handles zooming and centering on the map, and various
23
83
  * client-side projection capabilities.
@@ -35,8 +95,60 @@ var tileSize = 256;
35
95
  var MapView = /** @class */ (function () {
36
96
  function MapView(chart, options) {
37
97
  var _this = this;
98
+ this.insets = [];
99
+ this.padding = [0, 0, 0, 0];
100
+ this.eventsToUnbind = [];
101
+ var recommendedMapView;
102
+ var recommendedProjection;
103
+ if (!(this instanceof MapViewInset)) {
104
+ // Handle the global map and series-level mapData
105
+ var geoMaps = __spreadArray([
106
+ chart.options.chart.map
107
+ ], (chart.options.series || []).map(function (s) { return s.mapData; }), true).map(function (mapData) { return _this.getGeoMap(mapData); });
108
+ var allGeoBounds_1 = [];
109
+ geoMaps.forEach(function (geoMap) {
110
+ if (geoMap) {
111
+ // Use the first geo map as main
112
+ if (!recommendedMapView) {
113
+ recommendedMapView = geoMap['hc-recommended-mapview'];
114
+ }
115
+ // Combine the bounding boxes of all loaded maps
116
+ if (geoMap.bbox) {
117
+ var _a = geoMap.bbox, x1 = _a[0], y1 = _a[1], x2 = _a[2], y2 = _a[3];
118
+ allGeoBounds_1.push({ x1: x1, y1: y1, x2: x2, y2: y2 });
119
+ }
120
+ }
121
+ });
122
+ // Get the composite bounds
123
+ var geoBounds = (allGeoBounds_1.length &&
124
+ MapView.compositeBounds(allGeoBounds_1));
125
+ // Provide a best-guess recommended projection if not set in the map
126
+ // or in user options
127
+ if (geoBounds) {
128
+ var x1 = geoBounds.x1, y1 = geoBounds.y1, x2 = geoBounds.x2, y2 = geoBounds.y2;
129
+ recommendedProjection = (x2 - x1 > 180 && y2 - y1 > 90) ?
130
+ // Wide angle, go for the world view
131
+ {
132
+ name: 'EqualEarth'
133
+ } :
134
+ // Narrower angle, use a projection better suited for local
135
+ // view
136
+ {
137
+ name: 'LambertConformalConic',
138
+ parallels: [y1, y2],
139
+ rotation: [-(x1 + x2) / 2]
140
+ };
141
+ }
142
+ // Register the main geo map (from options.chart.map) if set
143
+ this.geoMap = geoMaps[0];
144
+ }
38
145
  this.userOptions = options || {};
39
- var o = merge(defaultOptions, options);
146
+ var o = merge(defaultOptions, { projection: recommendedProjection }, recommendedMapView, options);
147
+ // Merge the inset collections by id, or index if id missing
148
+ var recInsets = recommendedMapView && recommendedMapView.insets, optInsets = options && options.insets;
149
+ if (recInsets && optInsets) {
150
+ o.insets = MapView.mergeInsets(recInsets, optInsets);
151
+ }
40
152
  this.chart = chart;
41
153
  /**
42
154
  * The current center of the view in terms of `[longitude, latitude]`.
@@ -47,6 +159,9 @@ var MapView = /** @class */ (function () {
47
159
  this.center = o.center;
48
160
  this.options = o;
49
161
  this.projection = new Projection(o.projection);
162
+ // Initialize with full plot box so we don't have to check for undefined
163
+ // every time we use it
164
+ this.playingField = chart.plotBox;
50
165
  /**
51
166
  * The current zoom level of the view.
52
167
  * @name Highcharts.MapView#zoom
@@ -54,106 +169,54 @@ var MapView = /** @class */ (function () {
54
169
  * @type {number}
55
170
  */
56
171
  this.zoom = o.zoom || 0;
172
+ // Create the insets
173
+ this.createInsets();
57
174
  // Initialize and respond to chart size changes
58
- addEvent(chart, 'afterSetChartSize', function () {
175
+ this.eventsToUnbind.push(addEvent(chart, 'afterSetChartSize', function () {
176
+ _this.playingField = _this.getField();
59
177
  if (_this.minZoom === void 0 || // When initializing the chart
60
178
  _this.minZoom === _this.zoom // When resizing the chart
61
179
  ) {
62
180
  _this.fitToBounds(void 0, void 0, false);
63
- if (isNumber(_this.userOptions.zoom)) {
181
+ if (
182
+ // Set zoom only when initializing the chart
183
+ // (do not overwrite when zooming in/out, #17082)
184
+ !_this.chart.hasRendered &&
185
+ isNumber(_this.userOptions.zoom)) {
64
186
  _this.zoom = _this.userOptions.zoom;
65
187
  }
66
188
  if (_this.userOptions.center) {
67
189
  merge(true, _this.center, _this.userOptions.center);
68
190
  }
69
191
  }
70
- });
71
- // Set up panning for maps. In orthographic projections the globe will
72
- // rotate, otherwise adjust the map center.
73
- var mouseDownCenterProjected;
74
- var mouseDownKey;
75
- var mouseDownRotation;
76
- var onPan = function (e) {
77
- var pinchDown = chart.pointer.pinchDown;
78
- var mouseDownX = chart.mouseDownX, mouseDownY = chart.mouseDownY;
79
- if (pinchDown.length === 1) {
80
- mouseDownX = pinchDown[0].chartX;
81
- mouseDownY = pinchDown[0].chartY;
82
- }
83
- if (typeof mouseDownX === 'number' &&
84
- typeof mouseDownY === 'number') {
85
- var key = mouseDownX + "," + mouseDownY, _a = e.originalEvent, chartX = _a.chartX, chartY = _a.chartY;
86
- // Reset starting position
87
- if (key !== mouseDownKey) {
88
- mouseDownKey = key;
89
- mouseDownCenterProjected = _this.projection
90
- .forward(_this.center);
91
- mouseDownRotation = (_this.projection.options.rotation || [0, 0]).slice();
92
- }
93
- // Panning rotates the globe
94
- if (_this.projection.options.name === 'Orthographic' &&
95
- // ... but don't rotate if we're loading only a part of the
96
- // world
97
- (_this.minZoom || Infinity) < 3) {
98
- // Empirical ratio where the globe rotates roughly the same
99
- // speed as moving the pointer across the center of the
100
- // projection
101
- var ratio = 440 / (_this.getScale() * Math.min(chart.plotWidth, chart.plotHeight));
102
- if (mouseDownRotation) {
103
- var lon = (mouseDownX - chartX) * ratio -
104
- mouseDownRotation[0];
105
- var lat = clamp(-mouseDownRotation[1] -
106
- (mouseDownY - chartY) * ratio, -80, 80);
107
- _this.update({
108
- projection: {
109
- rotation: [-lon, -lat]
110
- },
111
- center: [lon, lat],
112
- zoom: _this.zoom
113
- }, true, false);
114
- }
115
- }
116
- else {
117
- var scale = _this.getScale();
118
- var newCenter = _this.projection.inverse([
119
- mouseDownCenterProjected[0] +
120
- (mouseDownX - chartX) / scale,
121
- mouseDownCenterProjected[1] -
122
- (mouseDownY - chartY) / scale
123
- ]);
124
- _this.setView(newCenter, void 0, true, false);
125
- }
126
- e.preventDefault();
127
- }
128
- };
129
- addEvent(chart, 'pan', onPan);
130
- addEvent(chart, 'touchpan', onPan);
131
- // Perform the map zoom by selection
132
- addEvent(chart, 'selection', function (evt) {
133
- // Zoom in
134
- if (!evt.resetSelection) {
135
- var x = evt.x - chart.plotLeft;
136
- var y = evt.y - chart.plotTop;
137
- var _a = _this.pixelsToProjectedUnits({ x: x, y: y }), y1 = _a.y, x1 = _a.x;
138
- var _b = _this.pixelsToProjectedUnits({ x: x + evt.width, y: y + evt.height }), y2 = _b.y, x2 = _b.x;
139
- _this.fitToBounds({ x1: x1, y1: y1, x2: x2, y2: y2 }, void 0, true, evt.originalEvent.touches ?
140
- // On touch zoom, don't animate, since we're already in
141
- // transformed zoom preview
142
- false :
143
- // On mouse zoom, obey the chart-level animation
144
- void 0);
145
- // Only for mouse. Touch users can pinch out.
146
- if (!/^touch/.test((evt.originalEvent.type))) {
147
- chart.showResetZoom();
148
- }
149
- evt.preventDefault();
150
- // Reset zoom
151
- }
152
- else {
153
- _this.zoomBy();
154
- }
155
- });
192
+ }));
193
+ this.setUpEvents();
156
194
  }
195
+ // Merge two collections of insets by the id
196
+ MapView.mergeInsets = function (a, b) {
197
+ var toObject = function (insets) {
198
+ var ob = {};
199
+ insets.forEach(function (inset, i) {
200
+ ob[inset && inset.id || "i".concat(i)] = inset;
201
+ });
202
+ return ob;
203
+ };
204
+ var insetsObj = merge(toObject(a), toObject(b)), insets = Object
205
+ .keys(insetsObj)
206
+ .map(function (key) { return insetsObj[key]; });
207
+ return insets;
208
+ };
209
+ // Create MapViewInset instances from insets options
210
+ MapView.prototype.createInsets = function () {
211
+ var _this = this;
212
+ var options = this.options, insets = options.insets;
213
+ if (insets) {
214
+ insets.forEach(function (item) {
215
+ var inset = new MapViewInset(_this, merge(options.insetOptions, item));
216
+ _this.insets.push(inset);
217
+ });
218
+ }
219
+ };
157
220
  /**
158
221
  * Fit the view to given bounds
159
222
  *
@@ -174,9 +237,16 @@ var MapView = /** @class */ (function () {
174
237
  if (redraw === void 0) { redraw = true; }
175
238
  var b = bounds || this.getProjectedBounds();
176
239
  if (b) {
177
- var _a = this.chart, plotWidth = _a.plotWidth, plotHeight = _a.plotHeight, pad = pick(padding, bounds ? 0 : this.options.padding), paddingX = relativeLength(pad, plotWidth), paddingY = relativeLength(pad, plotHeight);
178
- var scaleToPlotArea = Math.max((b.x2 - b.x1) / ((plotWidth - paddingX) / tileSize), (b.y2 - b.y1) / ((plotHeight - paddingY) / tileSize));
179
- var zoom = Math.log(worldSize / scaleToPlotArea) / Math.log(2);
240
+ var pad = pick(padding, bounds ? 0 : this.options.padding), fullField = this.getField(false), padArr = isArray(pad) ? pad : [pad, pad, pad, pad];
241
+ this.padding = [
242
+ relativeLength(padArr[0], fullField.height),
243
+ relativeLength(padArr[1], fullField.width),
244
+ relativeLength(padArr[2], fullField.height),
245
+ relativeLength(padArr[3], fullField.width)
246
+ ];
247
+ // Apply the playing field, corrected with padding
248
+ this.playingField = this.getField();
249
+ var zoom = zoomFromBounds(b, this.playingField);
180
250
  // Reset minZoom when fitting to natural bounds
181
251
  if (!bounds) {
182
252
  this.minZoom = zoom;
@@ -188,21 +258,176 @@ var MapView = /** @class */ (function () {
188
258
  this.setView(center, zoom, redraw, animation);
189
259
  }
190
260
  };
261
+ MapView.prototype.getField = function (padded) {
262
+ if (padded === void 0) { padded = true; }
263
+ var padding = padded ? this.padding : [0, 0, 0, 0];
264
+ return {
265
+ x: padding[3],
266
+ y: padding[0],
267
+ width: this.chart.plotWidth - padding[1] - padding[3],
268
+ height: this.chart.plotHeight - padding[0] - padding[2]
269
+ };
270
+ };
271
+ MapView.prototype.getGeoMap = function (map) {
272
+ if (isString(map)) {
273
+ return maps[map];
274
+ }
275
+ if (isObject(map, true)) {
276
+ if (map.type === 'FeatureCollection') {
277
+ return map;
278
+ }
279
+ if (map.type === 'Topology') {
280
+ return topo2geo(map);
281
+ }
282
+ }
283
+ };
284
+ MapView.prototype.getMapBBox = function () {
285
+ var bounds = this.getProjectedBounds(), scale = this.getScale();
286
+ if (bounds) {
287
+ var padding = this.padding, p1 = this.projectedUnitsToPixels({
288
+ x: bounds.x1,
289
+ y: bounds.y2
290
+ }), width = ((bounds.x2 - bounds.x1) * scale +
291
+ padding[1] + padding[3]), height = ((bounds.y2 - bounds.y1) * scale +
292
+ padding[0] + padding[2]);
293
+ return {
294
+ width: width,
295
+ height: height,
296
+ x: p1.x - padding[3],
297
+ y: p1.y - padding[0]
298
+ };
299
+ }
300
+ };
191
301
  MapView.prototype.getProjectedBounds = function () {
192
302
  var allBounds = this.chart.series.reduce(function (acc, s) {
193
303
  var bounds = s.getProjectedBounds && s.getProjectedBounds();
194
- if (bounds) {
304
+ if (bounds &&
305
+ s.options.affectsMapView !== false) {
195
306
  acc.push(bounds);
196
307
  }
197
308
  return acc;
198
309
  }, []);
199
- return MapView.compositeBounds(allBounds);
310
+ return this.projection.bounds || MapView.compositeBounds(allBounds);
200
311
  };
201
312
  MapView.prototype.getScale = function () {
202
313
  // A zoom of 0 means the world (360x360 degrees) fits in a 256x256 px
203
314
  // tile
204
315
  return (tileSize / worldSize) * Math.pow(2, this.zoom);
205
316
  };
317
+ // Calculate the SVG transform to be applied to series groups
318
+ MapView.prototype.getSVGTransform = function () {
319
+ var _a = this.playingField, x = _a.x, y = _a.y, width = _a.width, height = _a.height, projectedCenter = this.projection.forward(this.center), flipFactor = this.projection.hasCoordinates ? -1 : 1, scaleX = this.getScale(), scaleY = scaleX * flipFactor, translateX = x + width / 2 - projectedCenter[0] * scaleX, translateY = y + height / 2 - projectedCenter[1] * scaleY;
320
+ return { scaleX: scaleX, scaleY: scaleY, translateX: translateX, translateY: translateY };
321
+ };
322
+ /**
323
+ * Convert map coordinates in longitude/latitude to pixels
324
+ *
325
+ * @function Highcharts.MapView#lonLatToPixels
326
+ * @since 10.0.0
327
+ * @param {Highcharts.MapLonLatObject} lonLat
328
+ * The map coordinates
329
+ * @return {Highcharts.PositionObject|undefined}
330
+ * The pixel position
331
+ */
332
+ MapView.prototype.lonLatToPixels = function (lonLat) {
333
+ var pos = this.lonLatToProjectedUnits(lonLat);
334
+ if (pos) {
335
+ return this.projectedUnitsToPixels(pos);
336
+ }
337
+ };
338
+ /**
339
+ * Get projected units from longitude/latitude. Insets are accounted for.
340
+ * Returns an object with x and y values corresponding to positions on the
341
+ * projected plane.
342
+ *
343
+ * @requires modules/map
344
+ *
345
+ * @function Highcharts.MapView#lonLatToProjectedUnits
346
+ *
347
+ * @since 10.0.0
348
+ * @sample maps/series/latlon-to-point/ Find a point from lon/lat
349
+ *
350
+ * @param {Highcharts.MapLonLatObject} lonLat Coordinates.
351
+ *
352
+ * @return {Highcharts.ProjectedXY} X and Y coordinates in terms of
353
+ * projected values
354
+ */
355
+ MapView.prototype.lonLatToProjectedUnits = function (lonLat) {
356
+ var chart = this.chart, mapTransforms = chart.mapTransforms;
357
+ // Legacy, built-in transforms
358
+ if (mapTransforms) {
359
+ for (var transform in mapTransforms) {
360
+ if (Object.hasOwnProperty.call(mapTransforms, transform) &&
361
+ mapTransforms[transform].hitZone) {
362
+ var coords = chart.transformFromLatLon(lonLat, mapTransforms[transform]);
363
+ if (coords && pointInPolygon(coords, mapTransforms[transform].hitZone.coordinates[0])) {
364
+ return coords;
365
+ }
366
+ }
367
+ }
368
+ return chart.transformFromLatLon(lonLat, mapTransforms['default'] // eslint-disable-line dot-notation
369
+ );
370
+ }
371
+ // Handle insets
372
+ for (var _i = 0, _a = this.insets; _i < _a.length; _i++) {
373
+ var inset = _a[_i];
374
+ if (inset.options.geoBounds &&
375
+ pointInPolygon({ x: lonLat.lon, y: lonLat.lat }, inset.options.geoBounds.coordinates[0])) {
376
+ var insetProjectedPoint = inset.projection.forward([lonLat.lon, lonLat.lat]), pxPoint = inset.projectedUnitsToPixels({ x: insetProjectedPoint[0], y: insetProjectedPoint[1] });
377
+ return this.pixelsToProjectedUnits(pxPoint);
378
+ }
379
+ }
380
+ var point = this.projection.forward([lonLat.lon, lonLat.lat]);
381
+ if (!point.outside) {
382
+ return { x: point[0], y: point[1] };
383
+ }
384
+ };
385
+ /**
386
+ * Calculate longitude/latitude values for a point or position. Returns an
387
+ * object with the numeric properties `lon` and `lat`.
388
+ *
389
+ * @requires modules/map
390
+ *
391
+ * @function Highcharts.MapView#projectedUnitsToLonLat
392
+ *
393
+ * @since 10.0.0
394
+ *
395
+ * @sample maps/demo/latlon-advanced/ Advanced lat/lon demo
396
+ *
397
+ * @param {Highcharts.Point|Highcharts.ProjectedXY} point
398
+ * A `Point` instance or anything containing `x` and `y` properties
399
+ * with numeric values.
400
+ *
401
+ * @return {Highcharts.MapLonLatObject|undefined} An object with `lat` and
402
+ * `lon` properties.
403
+ */
404
+ MapView.prototype.projectedUnitsToLonLat = function (point) {
405
+ var chart = this.chart, mapTransforms = chart.mapTransforms;
406
+ // Legacy, built-in transforms
407
+ if (mapTransforms) {
408
+ for (var transform in mapTransforms) {
409
+ if (Object.hasOwnProperty.call(mapTransforms, transform) &&
410
+ mapTransforms[transform].hitZone &&
411
+ pointInPolygon(point, mapTransforms[transform].hitZone.coordinates[0])) {
412
+ return chart.transformToLatLon(point, mapTransforms[transform]);
413
+ }
414
+ }
415
+ return chart.transformToLatLon(point, mapTransforms['default'] // eslint-disable-line dot-notation
416
+ );
417
+ }
418
+ var pxPoint = this.projectedUnitsToPixels(point);
419
+ for (var _i = 0, _a = this.insets; _i < _a.length; _i++) {
420
+ var inset = _a[_i];
421
+ if (inset.hitZone &&
422
+ pointInPolygon(pxPoint, inset.hitZone.coordinates[0])) {
423
+ var insetProjectedPoint = inset
424
+ .pixelsToProjectedUnits(pxPoint), coordinates_1 = inset.projection.inverse([insetProjectedPoint.x, insetProjectedPoint.y]);
425
+ return { lon: coordinates_1[0], lat: coordinates_1[1] };
426
+ }
427
+ }
428
+ var coordinates = this.projection.inverse([point.x, point.y]);
429
+ return { lon: coordinates[0], lat: coordinates[1] };
430
+ };
206
431
  MapView.prototype.redraw = function (animation) {
207
432
  this.chart.series.forEach(function (s) {
208
433
  if (s.useMapGeometry) {
@@ -228,7 +453,6 @@ var MapView = /** @class */ (function () {
228
453
  */
229
454
  MapView.prototype.setView = function (center, zoom, redraw, animation) {
230
455
  if (redraw === void 0) { redraw = true; }
231
- var zoomingIn = false;
232
456
  if (center) {
233
457
  this.center = center;
234
458
  }
@@ -239,64 +463,62 @@ var MapView = /** @class */ (function () {
239
463
  if (typeof this.options.maxZoom === 'number') {
240
464
  zoom = Math.min(zoom, this.options.maxZoom);
241
465
  }
242
- zoomingIn = zoom > this.zoom;
243
- this.zoom = zoom;
466
+ // Use isNumber to prevent Infinity (#17205)
467
+ if (isNumber(zoom)) {
468
+ this.zoom = zoom;
469
+ }
244
470
  }
245
- // Stay within the data bounds
246
471
  var bounds = this.getProjectedBounds();
247
- if (bounds &&
248
- // When zooming in, we don't need to adjust to the bounds, as that
249
- // could shift the location under the mouse
250
- !zoomingIn) {
251
- var projectedCenter = this.projection.forward(this.center);
252
- var _a = this.chart, plotWidth = _a.plotWidth, plotHeight = _a.plotHeight;
253
- var scale = this.getScale();
254
- var bottomLeft = this.projectedUnitsToPixels({
472
+ if (bounds) {
473
+ var projectedCenter = this.projection.forward(this.center), _a = this.playingField, x = _a.x, y = _a.y, width = _a.width, height = _a.height, scale = this.getScale(), bottomLeft = this.projectedUnitsToPixels({
255
474
  x: bounds.x1,
256
475
  y: bounds.y1
257
- });
258
- var topRight = this.projectedUnitsToPixels({
476
+ }), topRight = this.projectedUnitsToPixels({
259
477
  x: bounds.x2,
260
478
  y: bounds.y2
261
- });
262
- var boundsCenterProjected = [
479
+ }), boundsCenterProjected = [
263
480
  (bounds.x1 + bounds.x2) / 2,
264
481
  (bounds.y1 + bounds.y2) / 2
265
482
  ];
483
+ // Constrain to data bounds
266
484
  // Pixel coordinate system is reversed vs projected
267
- var x1 = bottomLeft.x;
268
- var y1 = topRight.y;
269
- var x2 = topRight.x;
270
- var y2 = bottomLeft.y;
485
+ var x1 = bottomLeft.x, y1 = topRight.y, x2 = topRight.x, y2 = bottomLeft.y;
271
486
  // Map smaller than plot area, center it
272
- if (x2 - x1 < plotWidth) {
487
+ if (x2 - x1 < width) {
273
488
  projectedCenter[0] = boundsCenterProjected[0];
274
489
  // Off west
275
490
  }
276
- else if (x1 < 0 && x2 < plotWidth) {
491
+ else if (x1 < x && x2 < x + width) {
277
492
  // Adjust eastwards
278
- projectedCenter[0] += Math.max(x1, x2 - plotWidth) / scale;
493
+ projectedCenter[0] += Math.max(x1 - x, x2 - width - x) / scale;
279
494
  // Off east
280
495
  }
281
- else if (x2 > plotWidth && x1 > 0) {
496
+ else if (x2 > x + width && x1 > x) {
282
497
  // Adjust westwards
283
- projectedCenter[0] += Math.min(x2 - plotWidth, x1) / scale;
498
+ projectedCenter[0] += Math.min(x2 - width - x, x1 - x) / scale;
284
499
  }
285
500
  // Map smaller than plot area, center it
286
- if (y2 - y1 < plotHeight) {
501
+ if (y2 - y1 < height) {
287
502
  projectedCenter[1] = boundsCenterProjected[1];
288
503
  // Off north
289
504
  }
290
- else if (y1 < 0 && y2 < plotHeight) {
505
+ else if (y1 < y && y2 < y + height) {
291
506
  // Adjust southwards
292
- projectedCenter[1] -= Math.max(y1, y2 - plotHeight) / scale;
507
+ projectedCenter[1] -= Math.max(y1 - y, y2 - height - y) / scale;
293
508
  // Off south
294
509
  }
295
- else if (y2 > plotHeight && y1 > 0) {
510
+ else if (y2 > y + height && y1 > y) {
296
511
  // Adjust northwards
297
- projectedCenter[1] -= Math.min(y2 - plotHeight, y1) / scale;
512
+ projectedCenter[1] -= Math.min(y2 - height - y, y1 - y) / scale;
298
513
  }
299
514
  this.center = this.projection.inverse(projectedCenter);
515
+ this.insets.forEach(function (inset) {
516
+ if (inset.options.field) {
517
+ inset.hitZone = inset.getHitZone();
518
+ inset.playingField = inset.getField();
519
+ }
520
+ });
521
+ this.render();
300
522
  }
301
523
  fireEvent(this, 'afterSetView');
302
524
  if (redraw) {
@@ -312,14 +534,24 @@ var MapView = /** @class */ (function () {
312
534
  * @return {Highcharts.PositionObject} The position in pixels
313
535
  */
314
536
  MapView.prototype.projectedUnitsToPixels = function (pos) {
315
- var scale = this.getScale();
316
- var projectedCenter = this.projection.forward(this.center);
317
- var centerPxX = this.chart.plotWidth / 2;
318
- var centerPxY = this.chart.plotHeight / 2;
537
+ var scale = this.getScale(), projectedCenter = this.projection.forward(this.center), field = this.playingField, centerPxX = field.x + field.width / 2, centerPxY = field.y + field.height / 2;
319
538
  var x = centerPxX - scale * (projectedCenter[0] - pos.x);
320
539
  var y = centerPxY + scale * (projectedCenter[1] - pos.y);
321
540
  return { x: x, y: y };
322
541
  };
542
+ /**
543
+ * Convert pixel position to longitude and latitude.
544
+ *
545
+ * @function Highcharts.MapView#pixelsToLonLat
546
+ * @since 10.0.0
547
+ * @param {Highcharts.PositionObject} pos
548
+ * The position in pixels
549
+ * @return {Highcharts.MapLonLatObject|undefined}
550
+ * The map coordinates
551
+ */
552
+ MapView.prototype.pixelsToLonLat = function (pos) {
553
+ return this.projectedUnitsToLonLat(this.pixelsToProjectedUnits(pos));
554
+ };
323
555
  /**
324
556
  * Convert pixel position to projected units
325
557
  *
@@ -329,15 +561,111 @@ var MapView = /** @class */ (function () {
329
561
  * @return {Highcharts.PositionObject} The position in projected units
330
562
  */
331
563
  MapView.prototype.pixelsToProjectedUnits = function (pos) {
332
- var x = pos.x, y = pos.y;
333
- var scale = this.getScale();
334
- var projectedCenter = this.projection.forward(this.center);
335
- var centerPxX = this.chart.plotWidth / 2;
336
- var centerPxY = this.chart.plotHeight / 2;
564
+ var x = pos.x, y = pos.y, scale = this.getScale(), projectedCenter = this.projection.forward(this.center), field = this.playingField, centerPxX = field.x + field.width / 2, centerPxY = field.y + field.height / 2;
337
565
  var projectedX = projectedCenter[0] + (x - centerPxX) / scale;
338
566
  var projectedY = projectedCenter[1] - (y - centerPxY) / scale;
339
567
  return { x: projectedX, y: projectedY };
340
568
  };
569
+ MapView.prototype.setUpEvents = function () {
570
+ var _this = this;
571
+ var chart = this.chart;
572
+ // Set up panning for maps. In orthographic projections the globe will
573
+ // rotate, otherwise adjust the map center.
574
+ var mouseDownCenterProjected;
575
+ var mouseDownKey;
576
+ var mouseDownRotation;
577
+ var onPan = function (e) {
578
+ var pinchDown = chart.pointer.pinchDown, projection = _this.projection;
579
+ var mouseDownX = chart.mouseDownX, mouseDownY = chart.mouseDownY;
580
+ if (pinchDown.length === 1) {
581
+ mouseDownX = pinchDown[0].chartX;
582
+ mouseDownY = pinchDown[0].chartY;
583
+ }
584
+ if (typeof mouseDownX === 'number' &&
585
+ typeof mouseDownY === 'number') {
586
+ var key = "".concat(mouseDownX, ",").concat(mouseDownY), _a = e.originalEvent, chartX = _a.chartX, chartY = _a.chartY;
587
+ // Reset starting position
588
+ if (key !== mouseDownKey) {
589
+ mouseDownKey = key;
590
+ mouseDownCenterProjected = _this.projection
591
+ .forward(_this.center);
592
+ mouseDownRotation = (_this.projection.options.rotation || [0, 0]).slice();
593
+ }
594
+ // Get the natural zoom level of the projection itself when
595
+ // zoomed to view the full world
596
+ var worldBounds = projection.def && projection.def.bounds, worldZoom = (worldBounds &&
597
+ zoomFromBounds(worldBounds, _this.playingField)) || -Infinity;
598
+ // Panning rotates the globe
599
+ if (projection.options.name === 'Orthographic' &&
600
+ // ... but don't rotate if we're loading only a part of the
601
+ // world
602
+ (_this.minZoom || Infinity) < worldZoom * 1.1) {
603
+ // Empirical ratio where the globe rotates roughly the same
604
+ // speed as moving the pointer across the center of the
605
+ // projection
606
+ var ratio = 440 / (_this.getScale() * Math.min(chart.plotWidth, chart.plotHeight));
607
+ if (mouseDownRotation) {
608
+ var lon = (mouseDownX - chartX) * ratio -
609
+ mouseDownRotation[0], lat = clamp(-mouseDownRotation[1] -
610
+ (mouseDownY - chartY) * ratio, -80, 80), zoom = _this.zoom;
611
+ _this.update({
612
+ projection: {
613
+ rotation: [-lon, -lat]
614
+ }
615
+ }, false);
616
+ _this.zoom = zoom;
617
+ chart.redraw(false);
618
+ }
619
+ }
620
+ else {
621
+ var scale = _this.getScale();
622
+ var newCenter = _this.projection.inverse([
623
+ mouseDownCenterProjected[0] +
624
+ (mouseDownX - chartX) / scale,
625
+ mouseDownCenterProjected[1] -
626
+ (mouseDownY - chartY) / scale
627
+ ]);
628
+ _this.setView(newCenter, void 0, true, false);
629
+ }
630
+ e.preventDefault();
631
+ }
632
+ };
633
+ addEvent(chart, 'pan', onPan);
634
+ addEvent(chart, 'touchpan', onPan);
635
+ // Perform the map zoom by selection
636
+ addEvent(chart, 'selection', function (evt) {
637
+ // Zoom in
638
+ if (!evt.resetSelection) {
639
+ var x = evt.x - chart.plotLeft;
640
+ var y = evt.y - chart.plotTop;
641
+ var _a = _this.pixelsToProjectedUnits({ x: x, y: y }), y1 = _a.y, x1 = _a.x;
642
+ var _b = _this.pixelsToProjectedUnits({ x: x + evt.width, y: y + evt.height }), y2 = _b.y, x2 = _b.x;
643
+ _this.fitToBounds({ x1: x1, y1: y1, x2: x2, y2: y2 }, void 0, true, evt.originalEvent.touches ?
644
+ // On touch zoom, don't animate, since we're already in
645
+ // transformed zoom preview
646
+ false :
647
+ // On mouse zoom, obey the chart-level animation
648
+ void 0);
649
+ // Only for mouse. Touch users can pinch out.
650
+ if (!/^touch/.test((evt.originalEvent.type))) {
651
+ chart.showResetZoom();
652
+ }
653
+ evt.preventDefault();
654
+ // Reset zoom
655
+ }
656
+ else {
657
+ _this.zoomBy();
658
+ }
659
+ });
660
+ };
661
+ MapView.prototype.render = function () {
662
+ // We need a group for the insets
663
+ if (!this.group) {
664
+ this.group = this.chart.renderer.g('map-view')
665
+ .attr({ zIndex: 4 })
666
+ .add();
667
+ }
668
+ };
341
669
  /**
342
670
  * Update the view with given options
343
671
  *
@@ -354,18 +682,41 @@ var MapView = /** @class */ (function () {
354
682
  if (redraw === void 0) { redraw = true; }
355
683
  var newProjection = options.projection;
356
684
  var isDirtyProjection = newProjection && ((Projection.toString(newProjection) !==
357
- Projection.toString(this.options.projection)));
685
+ Projection.toString(this.options.projection))), isDirtyInsets = false;
358
686
  merge(true, this.userOptions, options);
359
687
  merge(true, this.options, options);
360
- if (isDirtyProjection) {
688
+ // If anything changed with the insets, destroy them all and create
689
+ // again below
690
+ if ('insets' in options) {
691
+ this.insets.forEach(function (inset) { return inset.destroy(); });
692
+ this.insets.length = 0;
693
+ isDirtyInsets = true;
694
+ }
695
+ if (isDirtyProjection || isDirtyInsets) {
361
696
  this.chart.series.forEach(function (series) {
697
+ var groups = series.transformGroups;
362
698
  if (series.clearBounds) {
363
699
  series.clearBounds();
364
700
  }
365
701
  series.isDirty = true;
366
702
  series.isDirtyData = true;
703
+ // Destroy inset transform groups
704
+ if (isDirtyInsets && groups) {
705
+ while (groups.length > 1) {
706
+ var group = groups.pop();
707
+ if (group) {
708
+ group.destroy();
709
+ }
710
+ }
711
+ }
367
712
  });
368
- this.projection = new Projection(this.options.projection);
713
+ if (isDirtyProjection) {
714
+ this.projection = new Projection(this.options.projection);
715
+ }
716
+ // Create new insets
717
+ if (isDirtyInsets) {
718
+ this.createInsets();
719
+ }
369
720
  // Fit to natural bounds if center/zoom are not explicitly given
370
721
  if (!options.center && !isNumber(options.zoom)) {
371
722
  this.fitToBounds(void 0, void 0, false);
@@ -447,4 +798,135 @@ var MapView = /** @class */ (function () {
447
798
  };
448
799
  return MapView;
449
800
  }());
801
+ // Putting this in the same file due to circular dependency with MapView
802
+ var MapViewInset = /** @class */ (function (_super) {
803
+ __extends(MapViewInset, _super);
804
+ function MapViewInset(mapView, options) {
805
+ var _this = _super.call(this, mapView.chart, options) || this;
806
+ _this.id = options.id;
807
+ _this.mapView = mapView;
808
+ _this.options = merge(defaultInsetsOptions, options);
809
+ _this.allBounds = [];
810
+ if (_this.options.geoBounds) {
811
+ // The path in projected units in the map view's main projection.
812
+ // This is used for hit testing where the points should render.
813
+ var path = mapView.projection.path(_this.options.geoBounds);
814
+ _this.geoBoundsProjectedBox = boundsFromPath(path);
815
+ _this.geoBoundsProjectedPolygon = path.map(function (segment) { return [
816
+ segment[1] || 0,
817
+ segment[2] || 0
818
+ ]; });
819
+ }
820
+ return _this;
821
+ }
822
+ // Get the playing field in pixels
823
+ MapViewInset.prototype.getField = function (padded) {
824
+ if (padded === void 0) { padded = true; }
825
+ var hitZone = this.hitZone;
826
+ if (hitZone) {
827
+ var padding = padded ? this.padding : [0, 0, 0, 0], polygon = hitZone.coordinates[0], xs = polygon.map(function (xy) { return xy[0]; }), ys = polygon.map(function (xy) { return xy[1]; }), x = Math.min.apply(0, xs) + padding[3], x2 = Math.max.apply(0, xs) - padding[1], y = Math.min.apply(0, ys) + padding[0], y2 = Math.max.apply(0, ys) - padding[2];
828
+ if (isNumber(x) && isNumber(y)) {
829
+ return {
830
+ x: x,
831
+ y: y,
832
+ width: x2 - x,
833
+ height: y2 - y
834
+ };
835
+ }
836
+ }
837
+ // Fall back to plot area
838
+ return _super.prototype.getField.call(this, padded);
839
+ };
840
+ // Get the hit zone in pixels
841
+ MapViewInset.prototype.getHitZone = function () {
842
+ var _a = this, chart = _a.chart, mapView = _a.mapView, options = _a.options, coordinates = (options.field || {}).coordinates;
843
+ if (coordinates) {
844
+ var polygon = coordinates[0];
845
+ if (options.units === 'percent') {
846
+ var relativeTo_1 = options.relativeTo === 'mapBoundingBox' &&
847
+ mapView.getMapBBox() ||
848
+ merge(chart.plotBox, { x: 0, y: 0 });
849
+ polygon = polygon.map(function (xy) { return [
850
+ relativeLength("".concat(xy[0], "%"), relativeTo_1.width, relativeTo_1.x),
851
+ relativeLength("".concat(xy[1], "%"), relativeTo_1.height, relativeTo_1.y)
852
+ ]; });
853
+ }
854
+ return {
855
+ type: 'Polygon',
856
+ coordinates: [polygon]
857
+ };
858
+ }
859
+ };
860
+ MapViewInset.prototype.getProjectedBounds = function () {
861
+ return MapView.compositeBounds(this.allBounds);
862
+ };
863
+ // Determine whether a point on the main projected plane is inside the
864
+ // geoBounds of the inset.
865
+ MapViewInset.prototype.isInside = function (point) {
866
+ var _a = this, geoBoundsProjectedBox = _a.geoBoundsProjectedBox, geoBoundsProjectedPolygon = _a.geoBoundsProjectedPolygon;
867
+ return Boolean(
868
+ // First we do a pre-pass to check whether the test point is inside
869
+ // the rectangular bounding box of the polygon. This is less
870
+ // expensive and will rule out most cases.
871
+ geoBoundsProjectedBox &&
872
+ point.x >= geoBoundsProjectedBox.x1 &&
873
+ point.x <= geoBoundsProjectedBox.x2 &&
874
+ point.y >= geoBoundsProjectedBox.y1 &&
875
+ point.y <= geoBoundsProjectedBox.y2 &&
876
+ // Next, do the more expensive check whether the point is inside the
877
+ // polygon itself.
878
+ geoBoundsProjectedPolygon &&
879
+ pointInPolygon(point, geoBoundsProjectedPolygon));
880
+ };
881
+ // Render the map view inset with the border path
882
+ MapViewInset.prototype.render = function () {
883
+ var _a = this, chart = _a.chart, mapView = _a.mapView, options = _a.options, borderPath = options.borderPath || options.field;
884
+ if (borderPath && mapView.group) {
885
+ var animate = true;
886
+ if (!this.border) {
887
+ this.border = chart.renderer
888
+ .path()
889
+ .addClass('highcharts-mapview-inset-border')
890
+ .add(mapView.group);
891
+ animate = false;
892
+ }
893
+ if (!chart.styledMode) {
894
+ this.border.attr({
895
+ stroke: options.borderColor,
896
+ 'stroke-width': options.borderWidth
897
+ });
898
+ }
899
+ var crisp_1 = Math.round(this.border.strokeWidth()) % 2 / 2, field_1 = (options.relativeTo === 'mapBoundingBox' &&
900
+ mapView.getMapBBox()) || mapView.playingField;
901
+ var d = (borderPath.coordinates || []).reduce(function (d, lineString) {
902
+ return lineString.reduce(function (d, point, i) {
903
+ var x = point[0], y = point[1];
904
+ if (options.units === 'percent') {
905
+ x = chart.plotLeft + relativeLength("".concat(x, "%"), field_1.width, field_1.x);
906
+ y = chart.plotTop + relativeLength("".concat(y, "%"), field_1.height, field_1.y);
907
+ }
908
+ x = Math.floor(x) + crisp_1;
909
+ y = Math.floor(y) + crisp_1;
910
+ d.push(i === 0 ? ['M', x, y] : ['L', x, y]);
911
+ return d;
912
+ }, d);
913
+ }, []);
914
+ // Apply the border path
915
+ this.border[animate ? 'animate' : 'attr']({ d: d });
916
+ }
917
+ };
918
+ MapViewInset.prototype.destroy = function () {
919
+ if (this.border) {
920
+ this.border = this.border.destroy();
921
+ }
922
+ this.eventsToUnbind.forEach(function (f) { return f(); });
923
+ };
924
+ // No chart-level events for insets
925
+ MapViewInset.prototype.setUpEvents = function () { };
926
+ return MapViewInset;
927
+ }(MapView));
928
+ // Initialize the MapView after initialization, but before firstRender
929
+ addEvent(MapChart, 'afterInit', function () {
930
+ this.mapView = new MapView(this, this.options.mapView);
931
+ });
450
932
  export default MapView;