highcharts 8.1.0 → 8.2.2

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 (854) hide show
  1. package/bower.json +1 -1
  2. package/css/highcharts.css +12 -0
  3. package/css/highcharts.scss +12 -0
  4. package/css/themes/dark-unica.css +12 -0
  5. package/css/themes/grid-light.css +12 -0
  6. package/css/themes/sand-signika.css +12 -0
  7. package/es-modules/{modules/accessibility/a11y-i18n.js → Accessibility/A11yI18n.js} +2 -2
  8. package/es-modules/{modules/accessibility/accessibility.js → Accessibility/Accessibility.js} +24 -21
  9. package/es-modules/{modules/accessibility → Accessibility}/AccessibilityComponent.js +73 -17
  10. package/es-modules/{modules/accessibility/components → Accessibility/Components}/AnnotationsA11y.js +2 -4
  11. package/es-modules/{modules/accessibility/components → Accessibility/Components}/ContainerComponent.js +8 -9
  12. package/es-modules/{modules/accessibility/components → Accessibility/Components}/InfoRegionsComponent.js +9 -12
  13. package/es-modules/{modules/accessibility/components → Accessibility/Components}/LegendComponent.js +60 -22
  14. package/es-modules/{modules/accessibility/components → Accessibility/Components}/MenuComponent.js +4 -11
  15. package/es-modules/{modules/accessibility/components → Accessibility/Components}/RangeSelectorComponent.js +8 -7
  16. package/es-modules/Accessibility/Components/SeriesComponent/ForcedMarkers.js +171 -0
  17. package/es-modules/{modules/accessibility/components → Accessibility/Components}/SeriesComponent/NewDataAnnouncer.js +8 -7
  18. package/es-modules/{modules/accessibility/components → Accessibility/Components}/SeriesComponent/SeriesComponent.js +5 -5
  19. package/es-modules/{modules/accessibility/components → Accessibility/Components}/SeriesComponent/SeriesDescriber.js +6 -6
  20. package/es-modules/{modules/accessibility/components → Accessibility/Components}/SeriesComponent/SeriesKeyboardNavigation.js +22 -20
  21. package/es-modules/{modules/accessibility/components → Accessibility/Components}/ZoomComponent.js +9 -8
  22. package/es-modules/{modules/accessibility/focusBorder.js → Accessibility/FocusBorder.js} +13 -10
  23. package/es-modules/{modules/accessibility/high-contrast-mode.js → Accessibility/HighContrastMode.js} +3 -2
  24. package/es-modules/{modules/accessibility/high-contrast-theme.js → Accessibility/HighContrastTheme.js} +0 -0
  25. package/es-modules/{modules/accessibility → Accessibility}/KeyboardNavigation.js +35 -22
  26. package/es-modules/{modules/accessibility → Accessibility}/KeyboardNavigationHandler.js +1 -1
  27. package/es-modules/{modules/accessibility/options/deprecatedOptions.js → Accessibility/Options/DeprecatedOptions.js} +10 -20
  28. package/es-modules/{modules/accessibility/options/langOptions.js → Accessibility/Options/LangOptions.js} +1 -1
  29. package/es-modules/{modules/accessibility/options/options.js → Accessibility/Options/Options.js} +1 -2
  30. package/es-modules/{modules/accessibility/utils → Accessibility/Utils}/Announcer.js +2 -2
  31. package/es-modules/{modules/accessibility/utils/chartUtilities.js → Accessibility/Utils/ChartUtilities.js} +8 -9
  32. package/es-modules/{modules/accessibility/utils → Accessibility/Utils}/DOMElementProvider.js +5 -5
  33. package/es-modules/{modules/accessibility/utils → Accessibility/Utils}/EventProvider.js +2 -2
  34. package/es-modules/{modules/accessibility/utils/htmlUtilities.js → Accessibility/Utils/HTMLUtilities.js} +3 -4
  35. package/es-modules/Core/Animation/AnimationUtilities.js +193 -0
  36. package/es-modules/Core/Animation/Fx.js +378 -0
  37. package/es-modules/{parts → Core/Axis}/Axis.js +153 -89
  38. package/es-modules/{parts-3d → Core/Axis}/Axis3D.js +12 -7
  39. package/es-modules/{modules/broken-axis.src.js → Core/Axis/BrokenAxis.js} +6 -8
  40. package/es-modules/{parts-map → Core/Axis}/ColorAxis.js +28 -31
  41. package/es-modules/{parts → Core/Axis}/DateTimeAxis.js +1 -1
  42. package/es-modules/{parts-gantt → Core/Axis}/GridAxis.js +136 -39
  43. package/es-modules/{parts-more → Core/Axis}/HiddenAxis.js +0 -0
  44. package/es-modules/{parts → Core/Axis}/LogarithmicAxis.js +1 -1
  45. package/es-modules/{parts-map → Core/Axis}/MapAxis.js +2 -2
  46. package/es-modules/{parts → Core/Axis}/NavigatorAxis.js +2 -2
  47. package/es-modules/{parts → Core/Axis}/OrdinalAxis.js +241 -224
  48. package/es-modules/{parts → Core/Axis}/PlotLineOrBand.js +24 -15
  49. package/es-modules/{parts-more → Core/Axis}/RadialAxis.js +34 -27
  50. package/es-modules/{parts → Core/Axis}/ScrollbarAxis.js +2 -2
  51. package/es-modules/{parts → Core/Axis}/StackingAxis.js +11 -2
  52. package/es-modules/{parts → Core/Axis}/Tick.js +14 -14
  53. package/es-modules/{parts-3d → Core/Axis}/Tick3D.js +1 -1
  54. package/es-modules/{parts-gantt → Core/Axis}/TreeGridAxis.js +81 -15
  55. package/es-modules/{parts-gantt → Core/Axis}/TreeGridTick.js +1 -1
  56. package/es-modules/{parts-3d → Core/Axis}/ZAxis.js +2 -2
  57. package/es-modules/{parts → Core/Chart}/Chart.js +225 -227
  58. package/es-modules/Core/Chart/Chart3D.js +1674 -0
  59. package/es-modules/{parts-gantt → Core/Chart}/GanttChart.js +13 -12
  60. package/es-modules/{parts → Core/Chart}/StockChart.js +26 -25
  61. package/es-modules/Core/Color/Color.js +419 -0
  62. package/es-modules/Core/Color/ColorType.js +9 -0
  63. package/es-modules/{parts → Core}/Color.js +1 -1
  64. package/es-modules/{parts → Core}/Dynamics.js +91 -61
  65. package/es-modules/{parts → Core}/Globals.js +9 -1
  66. package/es-modules/{parts → Core}/Interaction.js +27 -20
  67. package/es-modules/{parts → Core}/Legend.js +26 -11
  68. package/es-modules/{parts → Core}/MSPointer.js +2 -2
  69. package/es-modules/{parts → Core}/Navigator.js +24 -14
  70. package/es-modules/{parts → Core}/Options.js +157 -69
  71. package/es-modules/{parts → Core}/Pointer.js +50 -27
  72. package/es-modules/Core/Renderer/DOMElementType.js +9 -0
  73. package/es-modules/Core/Renderer/HTML/HTMLElement.js +220 -0
  74. package/es-modules/{parts/Html.js → Core/Renderer/HTML/HTMLRenderer.js} +16 -207
  75. package/es-modules/{parts → Core/Renderer/SVG}/SVGElement.js +186 -32
  76. package/es-modules/Core/Renderer/SVG/SVGLabel.js +410 -0
  77. package/es-modules/{parts/SvgRenderer.js → Core/Renderer/SVG/SVGRenderer.js} +426 -886
  78. package/es-modules/{parts-3d/SVGRenderer.js → Core/Renderer/SVG/SVGRenderer3D.js} +31 -23
  79. package/es-modules/{parts → Core}/Responsive.js +24 -14
  80. package/es-modules/{parts → Core}/Scrollbar.js +5 -4
  81. package/es-modules/Core/Series/BaseSeries.js +157 -0
  82. package/es-modules/{parts/Series.js → Core/Series/CartesianSeries.js} +119 -55
  83. package/es-modules/{parts → Core/Series}/DataLabels.js +40 -36
  84. package/es-modules/{parts → Core/Series}/Point.js +8 -10
  85. package/es-modules/Core/Series/Series.js +158 -0
  86. package/es-modules/{parts-3d/Series.js → Core/Series/Series3D.js} +5 -3
  87. package/es-modules/{parts → Core}/Time.js +11 -133
  88. package/es-modules/{parts → Core}/Tooltip.js +30 -27
  89. package/es-modules/{parts → Core}/Utilities.js +103 -562
  90. package/es-modules/{mixins/ajax.js → Extensions/Ajax.js} +9 -4
  91. package/es-modules/{annotations/annotations.src.js → Extensions/Annotations/Annotations.js} +901 -709
  92. package/es-modules/{annotations → Extensions/Annotations}/ControlPoint.js +2 -2
  93. package/es-modules/Extensions/Annotations/Controllables/ControllableCircle.js +117 -0
  94. package/es-modules/Extensions/Annotations/Controllables/ControllableImage.js +111 -0
  95. package/es-modules/{annotations/controllable → Extensions/Annotations/Controllables}/ControllableLabel.js +186 -146
  96. package/es-modules/{annotations/controllable → Extensions/Annotations/Controllables}/ControllablePath.js +81 -42
  97. package/es-modules/Extensions/Annotations/Controllables/ControllableRect.js +121 -0
  98. package/es-modules/{annotations/controllable/controllableMixin.js → Extensions/Annotations/Mixins/ControllableMixin.js} +8 -9
  99. package/es-modules/{annotations/eventEmitterMixin.js → Extensions/Annotations/Mixins/EventEmitterMixin.js} +7 -7
  100. package/es-modules/{annotations/controllable/markerMixin.js → Extensions/Annotations/Mixins/MarkerMixin.js} +10 -8
  101. package/es-modules/{annotations → Extensions/Annotations}/MockPoint.js +6 -6
  102. package/es-modules/{annotations/navigationBindings.js → Extensions/Annotations/NavigationBindings.js} +27 -16
  103. package/es-modules/{annotations/popup.js → Extensions/Annotations/Popup.js} +9 -9
  104. package/es-modules/{annotations/types → Extensions/Annotations/Types}/BasicAnnotation.js +68 -20
  105. package/es-modules/{annotations/types → Extensions/Annotations/Types}/CrookedLine.js +46 -19
  106. package/es-modules/{annotations/types → Extensions/Annotations/Types}/ElliottWave.js +33 -12
  107. package/es-modules/{annotations/types → Extensions/Annotations/Types}/Fibonacci.js +54 -22
  108. package/es-modules/Extensions/Annotations/Types/InfinityLine.js +147 -0
  109. package/es-modules/{annotations/types → Extensions/Annotations/Types}/Measure.js +82 -52
  110. package/es-modules/{annotations/types → Extensions/Annotations/Types}/Pitchfork.js +69 -32
  111. package/es-modules/{annotations/types → Extensions/Annotations/Types}/Tunnel.js +58 -30
  112. package/es-modules/{annotations/types → Extensions/Annotations/Types}/VerticalLine.js +64 -33
  113. package/es-modules/{parts-gantt → Extensions}/ArrowSymbols.js +9 -11
  114. package/es-modules/{modules/boost/boost.js → Extensions/Boost/Boost.js} +8 -8
  115. package/es-modules/{modules/boost/boost-attach.js → Extensions/Boost/BoostAttach.js} +10 -8
  116. package/es-modules/{modules/boost/boost-init.js → Extensions/Boost/BoostInit.js} +7 -6
  117. package/es-modules/{modules/boost/boost-options.js → Extensions/Boost/BoostOptions.js} +1 -1
  118. package/es-modules/{modules/boost/boost-overrides.js → Extensions/Boost/BoostOverrides.js} +14 -11
  119. package/es-modules/{modules/boost/boost-utils.js → Extensions/Boost/BoostUtils.js} +6 -6
  120. package/es-modules/{modules/boost/boostable-map.js → Extensions/Boost/BoostableMap.js} +1 -1
  121. package/es-modules/{modules/boost/boostables.js → Extensions/Boost/Boostables.js} +0 -0
  122. package/es-modules/{modules/boost/named-colors.js → Extensions/Boost/NamedColors.js} +1 -1
  123. package/es-modules/{modules/boost/wgl-renderer.js → Extensions/Boost/WGLRenderer.js} +9 -9
  124. package/es-modules/{modules/boost/wgl-shader.js → Extensions/Boost/WGLShader.js} +3 -4
  125. package/es-modules/{modules/boost/wgl-vbuffer.js → Extensions/Boost/WGLVBuffer.js} +0 -0
  126. package/es-modules/{modules/boost-canvas.src.js → Extensions/BoostCanvas.js} +13 -9
  127. package/es-modules/{parts-gantt/CurrentDateIndicator.js → Extensions/CurrentDateIndication.js} +5 -7
  128. package/es-modules/{modules/data.src.js → Extensions/Data.js} +14 -16
  129. package/es-modules/{parts → Extensions}/DataGrouping.js +12 -9
  130. package/es-modules/{modules/debugger.src.js → Extensions/Debugger.js} +6 -6
  131. package/es-modules/{mixins/download-url.js → Extensions/DownloadURL.js} +15 -7
  132. package/es-modules/{modules/drag-panes.src.js → Extensions/DragPanes.js} +6 -6
  133. package/es-modules/{modules/draggable-points.src.js → Extensions/DraggablePoints.js} +21 -32
  134. package/es-modules/{modules/drilldown.src.js → Extensions/Drilldown.js} +64 -43
  135. package/es-modules/{modules/export-data.src.js → Extensions/ExportData.js} +126 -26
  136. package/es-modules/{modules/exporting.src.js → Extensions/Exporting.js} +26 -12
  137. package/es-modules/{modules/full-screen.src.js → Extensions/FullScreen.js} +5 -3
  138. package/es-modules/{parts-map → Extensions}/GeoJSON.js +112 -7
  139. package/es-modules/{modules/marker-clusters.src.js → Extensions/MarkerClusters.js} +29 -39
  140. package/es-modules/{parts-3d/Math.js → Extensions/Math3D.js} +17 -9
  141. package/es-modules/{modules/no-data-to-display.src.js → Extensions/NoDataToDisplay.js} +14 -15
  142. package/es-modules/{modules/offline-exporting.src.js → Extensions/OfflineExporting.js} +39 -35
  143. package/es-modules/{modules/oldie.src.js → Extensions/Oldie/Oldie.js} +19 -12
  144. package/es-modules/{parts-3d → Extensions/Oldie}/VMLAxis3D.js +1 -1
  145. package/es-modules/Extensions/Oldie/VMLRenderer3D.js +46 -0
  146. package/es-modules/{modules/oldie-polyfills.src.js → Extensions/OldiePolyfills.js} +5 -0
  147. package/es-modules/{modules/overlapping-datalabels.src.js → Extensions/OverlappingDataLabels.js} +14 -13
  148. package/es-modules/{parts-more → Extensions}/Pane.js +13 -12
  149. package/es-modules/{modules/parallel-coordinates.src.js → Extensions/ParallelCoordinates.js} +140 -138
  150. package/es-modules/{modules/pattern-fill.src.js → Extensions/PatternFill.js} +23 -15
  151. package/es-modules/{parts-more → Extensions}/Polar.js +15 -12
  152. package/es-modules/{modules/price-indicator.src.js → Extensions/PriceIndication.js} +5 -3
  153. package/es-modules/{parts → Extensions}/RangeSelector.js +112 -79
  154. package/es-modules/{parts → Extensions}/ScrollablePlotArea.js +19 -9
  155. package/es-modules/{modules/series-label.src.js → Extensions/SeriesLabel.js} +14 -10
  156. package/es-modules/{modules/sonification/chartSonify.js → Extensions/Sonification/ChartSonify.js} +212 -41
  157. package/es-modules/{modules/sonification → Extensions/Sonification}/Earcon.js +3 -7
  158. package/es-modules/{modules/sonification → Extensions/Sonification}/Instrument.js +35 -11
  159. package/es-modules/{modules/sonification/instrumentDefinitions.js → Extensions/Sonification/InstrumentDefinitions.js} +1 -1
  160. package/es-modules/{modules/sonification/musicalFrequencies.js → Extensions/Sonification/MusicalFrequencies.js} +0 -0
  161. package/es-modules/Extensions/Sonification/Options.js +34 -0
  162. package/es-modules/{modules/sonification/pointSonify.js → Extensions/Sonification/PointSonify.js} +43 -28
  163. package/es-modules/{modules/sonification/sonification.js → Extensions/Sonification/Sonification.js} +16 -12
  164. package/es-modules/{modules/sonification → Extensions/Sonification}/Timeline.js +25 -6
  165. package/es-modules/{modules/sonification/utilities.js → Extensions/Sonification/Utilities.js} +8 -5
  166. package/es-modules/{parts → Extensions}/Stacking.js +57 -18
  167. package/es-modules/{modules/static-scale.src.js → Extensions/StaticScale.js} +4 -4
  168. package/es-modules/{themes/avocado.js → Extensions/Themes/Avocado.js} +5 -4
  169. package/es-modules/{themes/dark-blue.js → Extensions/Themes/DarkBlue.js} +4 -2
  170. package/es-modules/{themes/dark-green.js → Extensions/Themes/DarkGreen.js} +4 -2
  171. package/es-modules/{themes/dark-unica.js → Extensions/Themes/DarkUnica.js} +6 -6
  172. package/es-modules/{themes/gray.js → Extensions/Themes/Gray.js} +5 -4
  173. package/es-modules/{themes/grid.js → Extensions/Themes/Grid.js} +4 -2
  174. package/es-modules/{themes/grid-light.js → Extensions/Themes/GridLight.js} +4 -2
  175. package/es-modules/{themes/high-contrast-dark.js → Extensions/Themes/HighContrastDark.js} +5 -4
  176. package/es-modules/{themes/high-contrast-light.js → Extensions/Themes/HighContrastLight.js} +4 -2
  177. package/es-modules/{themes/sand-signika.js → Extensions/Themes/SandSignika.js} +4 -2
  178. package/es-modules/{themes/skies.js → Extensions/Themes/Skies.js} +5 -3
  179. package/es-modules/{themes/sunset.js → Extensions/Themes/Sunset.js} +5 -4
  180. package/es-modules/{parts-gantt/Pathfinder.js → Gantt/Connection.js} +41 -284
  181. package/es-modules/Gantt/Pathfinder.js +816 -0
  182. package/es-modules/Gantt/PathfinderAlgorithms.js +659 -0
  183. package/es-modules/{parts-gantt → Gantt}/Tree.js +1 -1
  184. package/es-modules/{parts-map → Maps}/Map.js +24 -15
  185. package/es-modules/{parts-map → Maps}/MapNavigation.js +4 -5
  186. package/es-modules/{parts-map → Maps}/MapPointer.js +2 -4
  187. package/es-modules/{mixins/centered-series.js → Mixins/CenteredSeries.js} +7 -5
  188. package/es-modules/{parts-map/ColorMapSeriesMixin.js → Mixins/ColorMapSeries.js} +10 -6
  189. package/es-modules/{parts-map/ColorSeriesMixin.js → Mixins/ColorSeries.js} +12 -4
  190. package/es-modules/{mixins/derived-series.js → Mixins/DerivedSeries.js} +3 -3
  191. package/es-modules/{mixins/draw-point.js → Mixins/DrawPoint.js} +6 -1
  192. package/es-modules/{mixins/geometry.js → Mixins/Geometry.js} +0 -0
  193. package/es-modules/{mixins/geometry-circles.js → Mixins/GeometryCircles.js} +2 -2
  194. package/es-modules/{mixins/indicator-required.js → Mixins/IndicatorRequired.js} +1 -1
  195. package/es-modules/{mixins/legend-symbol.js → Mixins/LegendSymbol.js} +6 -10
  196. package/es-modules/{mixins/multipe-lines.js → Mixins/MultipleLines.js} +2 -2
  197. package/es-modules/{mixins/navigation.js → Mixins/Navigation.js} +0 -0
  198. package/es-modules/{mixins/nelder-mead.js → Mixins/NelderMead.js} +2 -2
  199. package/es-modules/{mixins/nodes.js → Mixins/Nodes.js} +7 -5
  200. package/es-modules/{mixins/on-series.js → Mixins/OnSeries.js} +3 -2
  201. package/es-modules/{mixins/polygon.js → Mixins/Polygon.js} +2 -2
  202. package/es-modules/{mixins/reduce-array.js → Mixins/ReduceArray.js} +1 -1
  203. package/es-modules/{mixins/tree-series.js → Mixins/TreeSeries.js} +2 -2
  204. package/es-modules/{parts-more → Series}/AreaRangeSeries.js +75 -38
  205. package/es-modules/{parts → Series}/AreaSeries.js +43 -25
  206. package/es-modules/{parts-more → Series}/AreaSplineRangeSeries.js +47 -10
  207. package/es-modules/{parts → Series}/AreaSplineSeries.js +49 -10
  208. package/es-modules/{parts → Series}/BarSeries.js +2 -5
  209. package/es-modules/{modules/bellcurve.src.js → Series/BellcurveSeries.js} +47 -7
  210. package/es-modules/{parts-more → Series}/BoxPlotSeries.js +18 -13
  211. package/es-modules/{parts-more → Series/Bubble}/BubbleLegend.js +11 -9
  212. package/es-modules/{parts-more → Series/Bubble}/BubbleSeries.js +25 -27
  213. package/es-modules/{modules/bullet.src.js → Series/BulletSeries.js} +9 -8
  214. package/es-modules/{parts → Series}/CandlestickSeries.js +11 -8
  215. package/es-modules/{parts-3d/Column.js → Series/Column3DSeries.js} +108 -28
  216. package/es-modules/{parts-more → Series}/ColumnPyramidSeries.js +9 -9
  217. package/es-modules/{parts-more → Series}/ColumnRangeSeries.js +21 -18
  218. package/es-modules/{parts → Series}/ColumnSeries.js +119 -41
  219. package/es-modules/{modules/cylinder.src.js → Series/CylinderSeries.js} +14 -14
  220. package/es-modules/{modules/dependency-wheel.src.js → Series/DependencyWheelSeries.js} +14 -12
  221. package/es-modules/{modules/dotplot.src.js → Series/DotplotSeries.js} +7 -15
  222. package/es-modules/{modules/dumbbell.src.js → Series/DumbbellSeries.js} +16 -10
  223. package/es-modules/{parts-more → Series}/ErrorBarSeries.js +8 -8
  224. package/es-modules/{parts → Series}/FlagsSeries.js +18 -12
  225. package/es-modules/{modules/funnel3d.src.js → Series/Funnel3DSeries.js} +14 -16
  226. package/es-modules/{modules/funnel.src.js → Series/FunnelSeries.js} +16 -14
  227. package/es-modules/{parts-gantt → Series}/GanttSeries.js +21 -20
  228. package/es-modules/{parts-more → Series}/GaugeSeries.js +14 -12
  229. package/es-modules/{parts-map → Series}/HeatmapSeries.js +23 -16
  230. package/es-modules/{modules/histogram.src.js → Series/HistogramSeries.js} +13 -9
  231. package/es-modules/{modules/item-series.src.js → Series/ItemSeries.js} +22 -14
  232. package/es-modules/Series/LineSeries.js +13 -0
  233. package/es-modules/{modules/lollipop.src.js → Series/LollipopSeries.js} +34 -10
  234. package/es-modules/{parts-map → Series}/MapBubbleSeries.js +8 -9
  235. package/es-modules/{parts-map → Series}/MapLineSeries.js +5 -7
  236. package/es-modules/{parts-map → Series}/MapPointSeries.js +9 -8
  237. package/es-modules/{parts-map → Series}/MapSeries.js +22 -18
  238. package/es-modules/{modules/networkgraph/draggable-nodes.js → Series/Networkgraph/DraggableNodes.js} +15 -30
  239. package/es-modules/{modules/networkgraph/integrations.js → Series/Networkgraph/Integrations.js} +1 -1
  240. package/es-modules/{modules/networkgraph/layouts.js → Series/Networkgraph/Layouts.js} +43 -13
  241. package/es-modules/{modules/networkgraph/networkgraph.src.js → Series/Networkgraph/Networkgraph.js} +29 -23
  242. package/es-modules/{modules/networkgraph → Series/Networkgraph}/QuadTree.js +2 -2
  243. package/es-modules/{parts → Series}/OHLCSeries.js +5 -7
  244. package/es-modules/{modules/organization.src.js → Series/OrganizationSeries.js} +10 -7
  245. package/es-modules/{parts-more → Series}/PackedBubbleSeries.js +104 -28
  246. package/es-modules/{modules/pareto.src.js → Series/ParetoSeries.js} +10 -9
  247. package/es-modules/{parts-3d/Pie.js → Series/Pie3DSeries.js} +5 -4
  248. package/es-modules/{parts → Series}/PieSeries.js +66 -31
  249. package/es-modules/{parts-more → Series}/PolygonSeries.js +13 -13
  250. package/es-modules/{modules/pyramid3d.src.js → Series/Pyramid3DSeries.js} +5 -7
  251. package/es-modules/{modules/sankey.src.js → Series/SankeySeries.js} +23 -21
  252. package/es-modules/{parts-3d/Scatter.js → Series/Scatter3DSeries.js} +10 -9
  253. package/es-modules/{parts → Series}/ScatterSeries.js +15 -10
  254. package/es-modules/{modules/solid-gauge.src.js → Series/SolidGaugeSeries.js} +112 -78
  255. package/es-modules/{parts → Series}/SplineSeries.js +9 -7
  256. package/es-modules/{modules/streamgraph.src.js → Series/StreamgraphSeries.js} +42 -6
  257. package/es-modules/{modules/sunburst.src.js → Series/SunburstSeries.js} +20 -13
  258. package/es-modules/{modules/tilemap.src.js → Series/TilemapSeries.js} +12 -9
  259. package/es-modules/{modules/timeline.src.js → Series/TimelineSeries.js} +16 -11
  260. package/es-modules/{modules/treemap.src.js → Series/TreemapSeries.js} +47 -40
  261. package/es-modules/{modules/variable-pie.src.js → Series/VariablePieSeries.js} +11 -8
  262. package/es-modules/{modules/variwide.src.js → Series/VariwideSeries.js} +12 -10
  263. package/es-modules/{modules/vector.src.js → Series/VectorSeries.js} +11 -7
  264. package/es-modules/{modules/venn.src.js → Series/VennSeries.js} +29 -20
  265. package/es-modules/{parts-more → Series}/WaterfallSeries.js +145 -66
  266. package/es-modules/{modules/windbarb.src.js → Series/WindbarbSeries.js} +13 -9
  267. package/es-modules/{modules/wordcloud.src.js → Series/WordcloudSeries.js} +17 -13
  268. package/es-modules/{modules/xrange.src.js → Series/XRangeSeries.js} +16 -12
  269. package/es-modules/{indicators/acceleration-bands.src.js → Stock/Indicators/ABIndicator.js} +8 -8
  270. package/es-modules/{indicators/accumulation-distribution.src.js → Stock/Indicators/ADIndicator.js} +5 -4
  271. package/es-modules/{indicators/ao.src.js → Stock/Indicators/AOIndicator.js} +6 -5
  272. package/es-modules/{indicators/apo.src.js → Stock/Indicators/APOIndicator.js} +8 -8
  273. package/es-modules/{indicators/atr.src.js → Stock/Indicators/ATRIndicator.js} +6 -6
  274. package/es-modules/{indicators/aroon.src.js → Stock/Indicators/AroonIndicator.js} +7 -6
  275. package/es-modules/{indicators/aroon-oscillator.src.js → Stock/Indicators/AroonOscillatorIndicator.js} +8 -8
  276. package/es-modules/{indicators/bollinger-bands.src.js → Stock/Indicators/BBIndicator.js} +8 -8
  277. package/es-modules/{indicators/cci.src.js → Stock/Indicators/CCIIndicator.js} +5 -4
  278. package/es-modules/{indicators/cmf.src.js → Stock/Indicators/CMFIndicator.js} +3 -4
  279. package/es-modules/{indicators/chaikin.src.js → Stock/Indicators/ChaikinIndicator.js} +10 -9
  280. package/es-modules/{indicators/dema.src.js → Stock/Indicators/DEMAIndicator.js} +8 -8
  281. package/es-modules/{indicators/dpo.src.js → Stock/Indicators/DPOIndicator.js} +5 -4
  282. package/es-modules/{indicators/ema.src.js → Stock/Indicators/EMAIndicator.js} +4 -4
  283. package/es-modules/{indicators/ichimoku-kinko-hyo.src.js → Stock/Indicators/IKHIndicator.js} +23 -20
  284. package/es-modules/{indicators/keltner-channels.src.js → Stock/Indicators/KeltnerChannelsIndicator.js} +11 -8
  285. package/es-modules/{indicators/macd.src.js → Stock/Indicators/MACDIndicator.js} +9 -6
  286. package/es-modules/{indicators/mfi.src.js → Stock/Indicators/MFIIndicator.js} +5 -4
  287. package/es-modules/{indicators/momentum.src.js → Stock/Indicators/MomentumIndicator.js} +5 -4
  288. package/es-modules/{indicators/natr.src.js → Stock/Indicators/NATRIndicator.js} +4 -6
  289. package/es-modules/{indicators/price-channel.src.js → Stock/Indicators/PCIndicator.js} +9 -8
  290. package/es-modules/{indicators/ppo.src.js → Stock/Indicators/PPOIndicator.js} +8 -8
  291. package/es-modules/{indicators/psar.src.js → Stock/Indicators/PSARIndicator.js} +3 -4
  292. package/es-modules/{indicators/pivot-points.src.js → Stock/Indicators/PivotPointsIndicator.js} +6 -6
  293. package/es-modules/{indicators/price-envelopes.src.js → Stock/Indicators/PriceEnvelopesIndicator.js} +6 -6
  294. package/es-modules/{indicators/roc.src.js → Stock/Indicators/ROCIndicator.js} +5 -4
  295. package/es-modules/{indicators/rsi.src.js → Stock/Indicators/RSIIndicator.js} +5 -4
  296. package/es-modules/{indicators/regressions.src.js → Stock/Indicators/RegressionIndicators.js} +8 -7
  297. package/es-modules/{indicators/indicators.src.js → Stock/Indicators/SMAIndicator.js} +12 -8
  298. package/es-modules/{indicators/slow-stochastic.src.js → Stock/Indicators/SlowStochasticIndicator.js} +6 -8
  299. package/es-modules/{indicators/stochastic.src.js → Stock/Indicators/StochasticIndicator.js} +9 -9
  300. package/es-modules/{indicators/supertrend.src.js → Stock/Indicators/SupertrendIndicator.js} +8 -7
  301. package/es-modules/{indicators/tema.src.js → Stock/Indicators/TEMAIndicator.js} +8 -8
  302. package/es-modules/{indicators/trix.src.js → Stock/Indicators/TRIXIndicator.js} +8 -8
  303. package/es-modules/{indicators/trendline.src.js → Stock/Indicators/TrendLineIndicator.js} +5 -4
  304. package/es-modules/{indicators/volume-by-price.src.js → Stock/Indicators/VBPIndicator.js} +10 -7
  305. package/es-modules/{indicators/vwap.src.js → Stock/Indicators/VWAPIndicator.js} +5 -4
  306. package/es-modules/{indicators/wma.src.js → Stock/Indicators/WMAIndicator.js} +5 -4
  307. package/es-modules/{indicators/williams-r.src.js → Stock/Indicators/WilliamsRIndicator.js} +7 -6
  308. package/es-modules/{indicators/zigzag.src.js → Stock/Indicators/ZigzagIndicator.js} +5 -7
  309. package/es-modules/{modules/stock-tools-bindings.js → Stock/StockToolsBindings.js} +22 -7
  310. package/es-modules/{modules/stock-tools-gui.js → Stock/StockToolsGui.js} +17 -17
  311. package/es-modules/error-messages.js +7 -2
  312. package/es-modules/highcharts.src.js +19853 -0
  313. package/es-modules/masters/highcharts-3d.src.js +11 -12
  314. package/es-modules/masters/highcharts-gantt.src.js +1 -1
  315. package/es-modules/masters/highcharts-more.src.js +15 -15
  316. package/es-modules/masters/highcharts.src.js +28 -27
  317. package/es-modules/masters/highmaps.src.js +1 -1
  318. package/es-modules/masters/highstock.src.js +1 -1
  319. package/es-modules/masters/indicators/acceleration-bands.src.js +2 -2
  320. package/es-modules/masters/indicators/accumulation-distribution.src.js +2 -2
  321. package/es-modules/masters/indicators/ao.src.js +2 -2
  322. package/es-modules/masters/indicators/apo.src.js +2 -2
  323. package/es-modules/masters/indicators/aroon-oscillator.src.js +2 -2
  324. package/es-modules/masters/indicators/aroon.src.js +2 -2
  325. package/es-modules/masters/indicators/atr.src.js +2 -2
  326. package/es-modules/masters/indicators/bollinger-bands.src.js +2 -2
  327. package/es-modules/masters/indicators/cci.src.js +2 -2
  328. package/es-modules/masters/indicators/chaikin.src.js +2 -2
  329. package/es-modules/masters/indicators/cmf.src.js +2 -2
  330. package/es-modules/masters/indicators/dema.src.js +2 -2
  331. package/es-modules/masters/indicators/dpo.src.js +2 -2
  332. package/es-modules/masters/indicators/ema.src.js +2 -2
  333. package/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +2 -2
  334. package/es-modules/masters/indicators/indicators-all.src.js +41 -41
  335. package/es-modules/masters/indicators/indicators.src.js +2 -2
  336. package/es-modules/masters/indicators/keltner-channels.src.js +2 -2
  337. package/es-modules/masters/indicators/macd.src.js +2 -2
  338. package/es-modules/masters/indicators/mfi.src.js +2 -2
  339. package/es-modules/masters/indicators/momentum.src.js +2 -2
  340. package/es-modules/masters/indicators/natr.src.js +2 -2
  341. package/es-modules/masters/indicators/pivot-points.src.js +2 -2
  342. package/es-modules/masters/indicators/ppo.src.js +2 -2
  343. package/es-modules/masters/indicators/price-channel.src.js +2 -2
  344. package/es-modules/masters/indicators/price-envelopes.src.js +2 -2
  345. package/es-modules/masters/indicators/psar.src.js +2 -2
  346. package/es-modules/masters/indicators/regressions.src.js +2 -2
  347. package/es-modules/masters/indicators/roc.src.js +2 -2
  348. package/es-modules/masters/indicators/rsi.src.js +2 -2
  349. package/es-modules/masters/indicators/slow-stochastic.src.js +2 -2
  350. package/es-modules/masters/indicators/stochastic.src.js +2 -2
  351. package/es-modules/masters/indicators/supertrend.src.js +2 -2
  352. package/es-modules/masters/indicators/tema.src.js +2 -2
  353. package/es-modules/masters/indicators/trendline.src.js +2 -2
  354. package/es-modules/masters/indicators/trix.src.js +2 -2
  355. package/es-modules/masters/indicators/volume-by-price.src.js +2 -2
  356. package/es-modules/masters/indicators/vwap.src.js +2 -2
  357. package/es-modules/masters/indicators/williams-r.src.js +2 -2
  358. package/es-modules/masters/indicators/wma.src.js +2 -2
  359. package/es-modules/masters/indicators/zigzag.src.js +2 -2
  360. package/es-modules/masters/modules/accessibility.src.js +2 -2
  361. package/es-modules/masters/modules/annotations-advanced.src.js +13 -13
  362. package/es-modules/masters/modules/annotations.src.js +4 -4
  363. package/es-modules/masters/modules/arrow-symbols.src.js +2 -2
  364. package/es-modules/masters/modules/boost-canvas.src.js +2 -2
  365. package/es-modules/masters/modules/boost.src.js +2 -2
  366. package/es-modules/masters/modules/broken-axis.src.js +2 -2
  367. package/es-modules/masters/modules/bullet.src.js +2 -2
  368. package/es-modules/masters/modules/coloraxis.src.js +2 -2
  369. package/es-modules/masters/modules/current-date-indicator.src.js +2 -2
  370. package/es-modules/masters/modules/cylinder.src.js +2 -2
  371. package/es-modules/masters/modules/data.src.js +2 -2
  372. package/es-modules/masters/modules/datagrouping.src.js +2 -2
  373. package/es-modules/masters/modules/debugger.src.js +2 -2
  374. package/es-modules/masters/modules/dependency-wheel.src.js +2 -2
  375. package/es-modules/masters/modules/dotplot.src.js +2 -2
  376. package/es-modules/masters/modules/drag-panes.src.js +2 -2
  377. package/es-modules/masters/modules/draggable-points.src.js +2 -2
  378. package/es-modules/masters/modules/drilldown.src.js +2 -2
  379. package/es-modules/masters/modules/dumbbell.src.js +2 -2
  380. package/es-modules/masters/modules/export-data.src.js +2 -2
  381. package/es-modules/masters/modules/exporting.src.js +3 -3
  382. package/es-modules/masters/modules/full-screen.src.js +2 -2
  383. package/es-modules/masters/modules/funnel.src.js +2 -2
  384. package/es-modules/masters/modules/funnel3d.src.js +2 -2
  385. package/es-modules/masters/modules/gantt.src.js +6 -6
  386. package/es-modules/masters/modules/grid-axis.src.js +2 -2
  387. package/es-modules/masters/modules/heatmap.src.js +4 -4
  388. package/es-modules/masters/modules/histogram-bellcurve.src.js +3 -3
  389. package/es-modules/masters/modules/item-series.src.js +2 -2
  390. package/es-modules/masters/modules/lollipop.src.js +2 -2
  391. package/es-modules/masters/modules/map.src.js +13 -13
  392. package/es-modules/masters/modules/marker-clusters.src.js +2 -2
  393. package/es-modules/masters/modules/networkgraph.src.js +2 -2
  394. package/es-modules/masters/modules/no-data-to-display.src.js +2 -2
  395. package/es-modules/masters/modules/offline-exporting.src.js +2 -2
  396. package/es-modules/masters/modules/oldie-polyfills.src.js +2 -2
  397. package/es-modules/masters/modules/oldie.src.js +2 -2
  398. package/es-modules/masters/modules/organization.src.js +2 -2
  399. package/es-modules/masters/modules/overlapping-datalabels.src.js +2 -2
  400. package/es-modules/masters/modules/parallel-coordinates.src.js +2 -2
  401. package/es-modules/masters/modules/pareto.src.js +2 -2
  402. package/es-modules/masters/modules/pathfinder.src.js +2 -2
  403. package/es-modules/masters/modules/pattern-fill.src.js +2 -2
  404. package/es-modules/masters/modules/price-indicator.src.js +2 -2
  405. package/es-modules/masters/modules/pyramid3d.src.js +2 -2
  406. package/es-modules/masters/modules/sankey.src.js +2 -2
  407. package/es-modules/masters/modules/series-label.src.js +2 -2
  408. package/es-modules/masters/modules/solid-gauge.src.js +2 -2
  409. package/es-modules/masters/modules/sonification.src.js +2 -2
  410. package/es-modules/masters/modules/static-scale.src.js +2 -2
  411. package/es-modules/masters/modules/stock-tools.src.js +3 -3
  412. package/es-modules/masters/modules/stock.src.js +10 -10
  413. package/es-modules/masters/modules/streamgraph.src.js +2 -2
  414. package/es-modules/masters/modules/sunburst.src.js +2 -2
  415. package/es-modules/masters/modules/tilemap.src.js +2 -2
  416. package/es-modules/masters/modules/timeline.src.js +2 -2
  417. package/es-modules/masters/modules/treegrid.src.js +2 -2
  418. package/es-modules/masters/modules/treemap.src.js +2 -2
  419. package/es-modules/masters/modules/variable-pie.src.js +2 -2
  420. package/es-modules/masters/modules/variwide.src.js +2 -2
  421. package/es-modules/masters/modules/vector.src.js +2 -2
  422. package/es-modules/masters/modules/venn.src.js +2 -2
  423. package/es-modules/masters/modules/windbarb.src.js +2 -2
  424. package/es-modules/masters/modules/wordcloud.src.js +2 -2
  425. package/es-modules/masters/modules/xrange.src.js +2 -2
  426. package/es-modules/masters/themes/avocado.src.js +2 -2
  427. package/es-modules/masters/themes/dark-blue.src.js +2 -2
  428. package/es-modules/masters/themes/dark-green.src.js +2 -2
  429. package/es-modules/masters/themes/dark-unica.src.js +2 -2
  430. package/es-modules/masters/themes/gray.src.js +2 -2
  431. package/es-modules/masters/themes/grid-light.src.js +2 -2
  432. package/es-modules/masters/themes/grid.src.js +2 -2
  433. package/es-modules/masters/themes/high-contrast-dark.src.js +2 -2
  434. package/es-modules/masters/themes/high-contrast-light.src.js +2 -2
  435. package/es-modules/masters/themes/sand-signika.src.js +2 -2
  436. package/es-modules/masters/themes/skies.src.js +2 -2
  437. package/es-modules/masters/themes/sunset.src.js +2 -2
  438. package/highcharts-3d.js +86 -88
  439. package/highcharts-3d.js.map +1 -1
  440. package/highcharts-3d.src.js +1713 -1615
  441. package/highcharts-gantt.js +730 -697
  442. package/highcharts-gantt.js.map +1 -1
  443. package/highcharts-gantt.src.js +11747 -10110
  444. package/highcharts-more.js +164 -161
  445. package/highcharts-more.js.map +1 -1
  446. package/highcharts-more.src.js +766 -523
  447. package/highcharts.d.ts +7728 -1337
  448. package/highcharts.js +538 -515
  449. package/highcharts.js.map +1 -1
  450. package/highcharts.src.d.ts +7728 -1337
  451. package/highcharts.src.js +8517 -7691
  452. package/highmaps.js +636 -612
  453. package/highmaps.js.map +1 -1
  454. package/highmaps.src.js +9151 -8209
  455. package/highstock.js +697 -671
  456. package/highstock.js.map +1 -1
  457. package/highstock.src.js +8919 -8049
  458. package/indicators/acceleration-bands.js +8 -8
  459. package/indicators/acceleration-bands.js.map +1 -1
  460. package/indicators/acceleration-bands.src.js +8 -8
  461. package/indicators/accumulation-distribution.js +4 -4
  462. package/indicators/accumulation-distribution.js.map +1 -1
  463. package/indicators/accumulation-distribution.src.js +5 -5
  464. package/indicators/ao.js +5 -5
  465. package/indicators/ao.js.map +1 -1
  466. package/indicators/ao.src.js +6 -6
  467. package/indicators/apo.js +5 -5
  468. package/indicators/apo.js.map +1 -1
  469. package/indicators/apo.src.js +8 -9
  470. package/indicators/aroon-oscillator.js +8 -8
  471. package/indicators/aroon-oscillator.js.map +1 -1
  472. package/indicators/aroon-oscillator.src.js +8 -9
  473. package/indicators/aroon.js +7 -7
  474. package/indicators/aroon.js.map +1 -1
  475. package/indicators/aroon.src.js +7 -7
  476. package/indicators/atr.js +4 -4
  477. package/indicators/atr.js.map +1 -1
  478. package/indicators/atr.src.js +6 -14
  479. package/indicators/bollinger-bands.js +8 -8
  480. package/indicators/bollinger-bands.js.map +1 -1
  481. package/indicators/bollinger-bands.src.js +8 -8
  482. package/indicators/cci.js +4 -4
  483. package/indicators/cci.js.map +1 -1
  484. package/indicators/cci.src.js +5 -5
  485. package/indicators/chaikin.js +6 -6
  486. package/indicators/chaikin.js.map +1 -1
  487. package/indicators/chaikin.src.js +75 -75
  488. package/indicators/cmf.js +4 -4
  489. package/indicators/cmf.js.map +1 -1
  490. package/indicators/cmf.src.js +4 -4
  491. package/indicators/dema.js +5 -5
  492. package/indicators/dema.js.map +1 -1
  493. package/indicators/dema.src.js +8 -9
  494. package/indicators/dpo.js +4 -4
  495. package/indicators/dpo.js.map +1 -1
  496. package/indicators/dpo.src.js +5 -5
  497. package/indicators/ema.js +4 -4
  498. package/indicators/ema.js.map +1 -1
  499. package/indicators/ema.src.js +4 -5
  500. package/indicators/ichimoku-kinko-hyo.js +13 -13
  501. package/indicators/ichimoku-kinko-hyo.js.map +1 -1
  502. package/indicators/ichimoku-kinko-hyo.src.js +21 -20
  503. package/indicators/indicators-all.js +119 -118
  504. package/indicators/indicators-all.js.map +1 -1
  505. package/indicators/indicators-all.src.js +231 -240
  506. package/indicators/indicators.js +9 -9
  507. package/indicators/indicators.js.map +1 -1
  508. package/indicators/indicators.src.js +9 -9
  509. package/indicators/keltner-channels.js +8 -8
  510. package/indicators/keltner-channels.js.map +1 -1
  511. package/indicators/keltner-channels.src.js +13 -10
  512. package/indicators/macd.js +10 -10
  513. package/indicators/macd.js.map +1 -1
  514. package/indicators/macd.src.js +8 -7
  515. package/indicators/mfi.js +4 -4
  516. package/indicators/mfi.js.map +1 -1
  517. package/indicators/mfi.src.js +5 -5
  518. package/indicators/momentum.js +4 -4
  519. package/indicators/momentum.js.map +1 -1
  520. package/indicators/momentum.src.js +5 -5
  521. package/indicators/natr.js +3 -3
  522. package/indicators/natr.js.map +1 -1
  523. package/indicators/natr.src.js +5 -5
  524. package/indicators/pivot-points.js +8 -8
  525. package/indicators/pivot-points.js.map +1 -1
  526. package/indicators/pivot-points.src.js +6 -6
  527. package/indicators/ppo.js +5 -5
  528. package/indicators/ppo.js.map +1 -1
  529. package/indicators/ppo.src.js +8 -9
  530. package/indicators/price-channel.js +8 -8
  531. package/indicators/price-channel.js.map +1 -1
  532. package/indicators/price-channel.src.js +66 -66
  533. package/indicators/price-envelopes.js +6 -6
  534. package/indicators/price-envelopes.js.map +1 -1
  535. package/indicators/price-envelopes.src.js +6 -6
  536. package/indicators/psar.js +3 -3
  537. package/indicators/psar.js.map +1 -1
  538. package/indicators/psar.src.js +4 -4
  539. package/indicators/regressions.js +6 -6
  540. package/indicators/regressions.js.map +1 -1
  541. package/indicators/regressions.src.js +8 -8
  542. package/indicators/roc.js +3 -3
  543. package/indicators/roc.js.map +1 -1
  544. package/indicators/roc.src.js +5 -5
  545. package/indicators/rsi.js +4 -4
  546. package/indicators/rsi.js.map +1 -1
  547. package/indicators/rsi.src.js +5 -5
  548. package/indicators/slow-stochastic.js +5 -5
  549. package/indicators/slow-stochastic.js.map +1 -1
  550. package/indicators/slow-stochastic.src.js +7 -7
  551. package/indicators/stochastic.js +9 -9
  552. package/indicators/stochastic.js.map +1 -1
  553. package/indicators/stochastic.src.js +67 -67
  554. package/indicators/supertrend.js +9 -9
  555. package/indicators/supertrend.js.map +1 -1
  556. package/indicators/supertrend.src.js +9 -7
  557. package/indicators/tema.js +6 -6
  558. package/indicators/tema.js.map +1 -1
  559. package/indicators/tema.src.js +8 -9
  560. package/indicators/trendline.js +3 -3
  561. package/indicators/trendline.js.map +1 -1
  562. package/indicators/trendline.src.js +5 -5
  563. package/indicators/trix.js +4 -4
  564. package/indicators/trix.js.map +1 -1
  565. package/indicators/trix.src.js +8 -8
  566. package/indicators/volume-by-price.js +13 -13
  567. package/indicators/volume-by-price.js.map +1 -1
  568. package/indicators/volume-by-price.src.js +7 -8
  569. package/indicators/vwap.js +4 -4
  570. package/indicators/vwap.js.map +1 -1
  571. package/indicators/vwap.src.js +5 -5
  572. package/indicators/williams-r.js +4 -4
  573. package/indicators/williams-r.js.map +1 -1
  574. package/indicators/williams-r.src.js +7 -7
  575. package/indicators/wma.js +4 -4
  576. package/indicators/wma.js.map +1 -1
  577. package/indicators/wma.src.js +5 -5
  578. package/indicators/zigzag.js +4 -4
  579. package/indicators/zigzag.js.map +1 -1
  580. package/indicators/zigzag.src.js +6 -7
  581. package/modules/accessibility.d.ts +0 -35
  582. package/modules/accessibility.js +171 -168
  583. package/modules/accessibility.js.map +1 -1
  584. package/modules/accessibility.src.d.ts +0 -35
  585. package/modules/accessibility.src.js +369 -252
  586. package/modules/annotations-advanced.js +158 -136
  587. package/modules/annotations-advanced.js.map +1 -1
  588. package/modules/annotations-advanced.src.js +1929 -1263
  589. package/modules/annotations.js +105 -94
  590. package/modules/annotations.js.map +1 -1
  591. package/modules/annotations.src.js +1485 -1101
  592. package/modules/arrow-symbols.js +4 -4
  593. package/modules/arrow-symbols.js.map +1 -1
  594. package/modules/arrow-symbols.src.js +10 -12
  595. package/modules/boost-canvas.js +15 -15
  596. package/modules/boost-canvas.js.map +1 -1
  597. package/modules/boost-canvas.src.js +17 -17
  598. package/modules/boost.d.ts +4 -0
  599. package/modules/boost.js +77 -64
  600. package/modules/boost.js.map +1 -1
  601. package/modules/boost.src.d.ts +4 -0
  602. package/modules/boost.src.js +581 -33
  603. package/modules/broken-axis.js +10 -10
  604. package/modules/broken-axis.js.map +1 -1
  605. package/modules/broken-axis.src.js +4 -5
  606. package/modules/bullet.js +6 -6
  607. package/modules/bullet.js.map +1 -1
  608. package/modules/bullet.src.js +8 -8
  609. package/modules/coloraxis.js +22 -21
  610. package/modules/coloraxis.js.map +1 -1
  611. package/modules/coloraxis.src.js +67 -59
  612. package/modules/current-date-indicator.js +3 -3
  613. package/modules/current-date-indicator.js.map +1 -1
  614. package/modules/current-date-indicator.src.js +4 -5
  615. package/modules/cylinder.js +8 -8
  616. package/modules/cylinder.js.map +1 -1
  617. package/modules/cylinder.src.js +21 -23
  618. package/modules/data.d.ts +2 -2
  619. package/modules/data.js +32 -32
  620. package/modules/data.js.map +1 -1
  621. package/modules/data.src.d.ts +2 -2
  622. package/modules/data.src.js +26 -25
  623. package/modules/datagrouping.js +17 -17
  624. package/modules/datagrouping.js.map +1 -1
  625. package/modules/datagrouping.src.js +6 -7
  626. package/modules/debugger.js +5 -5
  627. package/modules/debugger.js.map +1 -1
  628. package/modules/debugger.src.js +13 -8
  629. package/modules/dependency-wheel.js +8 -8
  630. package/modules/dependency-wheel.js.map +1 -1
  631. package/modules/dependency-wheel.src.js +10 -10
  632. package/modules/dotplot.js +5 -5
  633. package/modules/dotplot.js.map +1 -1
  634. package/modules/dotplot.src.js +6 -14
  635. package/modules/drag-panes.js +10 -10
  636. package/modules/drag-panes.js.map +1 -1
  637. package/modules/drag-panes.src.js +4 -6
  638. package/modules/draggable-points.js +33 -33
  639. package/modules/draggable-points.js.map +1 -1
  640. package/modules/draggable-points.src.js +22 -35
  641. package/modules/drilldown.d.ts +1 -1
  642. package/modules/drilldown.js +23 -22
  643. package/modules/drilldown.js.map +1 -1
  644. package/modules/drilldown.src.d.ts +1 -1
  645. package/modules/drilldown.src.js +66 -53
  646. package/modules/dumbbell.d.ts +4 -0
  647. package/modules/dumbbell.js +24 -9
  648. package/modules/dumbbell.js.map +1 -1
  649. package/modules/dumbbell.src.d.ts +4 -0
  650. package/modules/dumbbell.src.js +1029 -104
  651. package/modules/export-data.d.ts +4 -29
  652. package/modules/export-data.js +21 -21
  653. package/modules/export-data.js.map +1 -1
  654. package/modules/export-data.src.d.ts +4 -29
  655. package/modules/export-data.src.js +155 -189
  656. package/modules/exporting.d.ts +2 -0
  657. package/modules/exporting.js +33 -33
  658. package/modules/exporting.js.map +1 -1
  659. package/modules/exporting.src.d.ts +2 -0
  660. package/modules/exporting.src.js +40 -30
  661. package/modules/full-screen.js +7 -7
  662. package/modules/full-screen.js.map +1 -1
  663. package/modules/full-screen.src.js +4 -3
  664. package/modules/funnel.js +9 -9
  665. package/modules/funnel.js.map +1 -1
  666. package/modules/funnel.src.js +14 -15
  667. package/modules/funnel3d.js +17 -17
  668. package/modules/funnel3d.js.map +1 -1
  669. package/modules/funnel3d.src.js +12 -14
  670. package/modules/gantt.js +194 -183
  671. package/modules/gantt.js.map +1 -1
  672. package/modules/gantt.src.js +2071 -1260
  673. package/modules/grid-axis.js +22 -19
  674. package/modules/grid-axis.js.map +1 -1
  675. package/modules/grid-axis.src.js +149 -43
  676. package/modules/heatmap.js +33 -32
  677. package/modules/heatmap.js.map +1 -1
  678. package/modules/heatmap.src.js +130 -114
  679. package/modules/histogram-bellcurve.js +10 -10
  680. package/modules/histogram-bellcurve.js.map +1 -1
  681. package/modules/histogram-bellcurve.src.js +57 -16
  682. package/modules/item-series.js +9 -9
  683. package/modules/item-series.js.map +1 -1
  684. package/modules/item-series.src.js +20 -13
  685. package/modules/lollipop.d.ts +20 -1
  686. package/modules/lollipop.js +26 -4
  687. package/modules/lollipop.js.map +1 -1
  688. package/modules/lollipop.src.d.ts +20 -1
  689. package/modules/lollipop.src.js +1452 -10
  690. package/modules/map.d.ts +2 -2
  691. package/modules/map.js +99 -98
  692. package/modules/map.js.map +1 -1
  693. package/modules/map.src.d.ts +2 -2
  694. package/modules/map.src.js +1442 -1326
  695. package/modules/marker-clusters.js +35 -36
  696. package/modules/marker-clusters.js.map +1 -1
  697. package/modules/marker-clusters.src.js +31 -51
  698. package/modules/networkgraph.js +47 -46
  699. package/modules/networkgraph.js.map +1 -1
  700. package/modules/networkgraph.src.js +98 -81
  701. package/modules/no-data-to-display.js +4 -4
  702. package/modules/no-data-to-display.js.map +1 -1
  703. package/modules/no-data-to-display.src.js +17 -13
  704. package/modules/offline-exporting.js +15 -15
  705. package/modules/offline-exporting.js.map +1 -1
  706. package/modules/offline-exporting.src.js +63 -46
  707. package/modules/oldie-polyfills.js +6 -6
  708. package/modules/oldie-polyfills.js.map +1 -1
  709. package/modules/oldie-polyfills.src.js +7 -2
  710. package/modules/oldie.js +52 -26
  711. package/modules/oldie.js.map +1 -1
  712. package/modules/oldie.src.js +1411 -34
  713. package/modules/organization.js +11 -11
  714. package/modules/organization.js.map +1 -1
  715. package/modules/organization.src.js +7 -6
  716. package/modules/overlapping-datalabels.js +1 -1
  717. package/modules/overlapping-datalabels.src.js +1 -1
  718. package/modules/parallel-coordinates.js +11 -11
  719. package/modules/parallel-coordinates.js.map +1 -1
  720. package/modules/parallel-coordinates.src.js +144 -136
  721. package/modules/pareto.js +5 -5
  722. package/modules/pareto.js.map +1 -1
  723. package/modules/pareto.src.js +8 -9
  724. package/modules/pathfinder.js +31 -27
  725. package/modules/pathfinder.js.map +1 -1
  726. package/modules/pathfinder.src.js +1589 -985
  727. package/modules/pattern-fill.js +13 -13
  728. package/modules/pattern-fill.js.map +1 -1
  729. package/modules/pattern-fill.src.js +25 -21
  730. package/modules/price-indicator.js +4 -4
  731. package/modules/price-indicator.js.map +1 -1
  732. package/modules/price-indicator.src.js +5 -3
  733. package/modules/pyramid3d.js +3 -3
  734. package/modules/pyramid3d.js.map +1 -1
  735. package/modules/pyramid3d.src.js +4 -5
  736. package/modules/sankey.js +25 -26
  737. package/modules/sankey.js.map +1 -1
  738. package/modules/sankey.src.js +39 -36
  739. package/modules/series-label.js +17 -17
  740. package/modules/series-label.js.map +1 -1
  741. package/modules/series-label.src.js +17 -17
  742. package/modules/solid-gauge.js +8 -8
  743. package/modules/solid-gauge.js.map +1 -1
  744. package/modules/solid-gauge.src.js +123 -91
  745. package/modules/sonification.d.ts +33 -16
  746. package/modules/sonification.js +55 -49
  747. package/modules/sonification.js.map +1 -1
  748. package/modules/sonification.src.d.ts +33 -16
  749. package/modules/sonification.src.js +361 -115
  750. package/modules/static-scale.js +4 -4
  751. package/modules/static-scale.js.map +1 -1
  752. package/modules/static-scale.src.js +3 -4
  753. package/modules/stock-tools.d.ts +23 -1
  754. package/modules/stock-tools.js +150 -84
  755. package/modules/stock-tools.js.map +1 -1
  756. package/modules/stock-tools.src.d.ts +23 -1
  757. package/modules/stock-tools.src.js +3792 -44
  758. package/modules/stock.js +161 -158
  759. package/modules/stock.js.map +1 -1
  760. package/modules/stock.src.js +456 -412
  761. package/modules/streamgraph.js +2 -2
  762. package/modules/streamgraph.js.map +1 -1
  763. package/modules/streamgraph.src.js +42 -5
  764. package/modules/sunburst.js +51 -49
  765. package/modules/sunburst.js.map +1 -1
  766. package/modules/sunburst.src.js +152 -52
  767. package/modules/tilemap.js +14 -14
  768. package/modules/tilemap.js.map +1 -1
  769. package/modules/tilemap.src.js +12 -11
  770. package/modules/timeline.js +14 -14
  771. package/modules/timeline.js.map +1 -1
  772. package/modules/timeline.src.js +19 -18
  773. package/modules/treegrid.js +57 -52
  774. package/modules/treegrid.js.map +1 -1
  775. package/modules/treegrid.src.js +236 -60
  776. package/modules/treemap.js +35 -34
  777. package/modules/treemap.js.map +1 -1
  778. package/modules/treemap.src.js +213 -118
  779. package/modules/variable-pie.js +8 -8
  780. package/modules/variable-pie.js.map +1 -1
  781. package/modules/variable-pie.src.js +12 -10
  782. package/modules/variwide.js +8 -8
  783. package/modules/variwide.js.map +1 -1
  784. package/modules/variwide.src.js +8 -8
  785. package/modules/vector.js +6 -6
  786. package/modules/vector.js.map +1 -1
  787. package/modules/vector.src.js +9 -9
  788. package/modules/venn.js +26 -26
  789. package/modules/venn.js.map +1 -1
  790. package/modules/venn.src.js +49 -37
  791. package/modules/windbarb.js +11 -11
  792. package/modules/windbarb.js.map +1 -1
  793. package/modules/windbarb.src.js +11 -12
  794. package/modules/wordcloud.js +19 -19
  795. package/modules/wordcloud.js.map +1 -1
  796. package/modules/wordcloud.src.js +26 -18
  797. package/modules/xrange.js +12 -12
  798. package/modules/xrange.js.map +1 -1
  799. package/modules/xrange.src.js +19 -20
  800. package/package.json +1 -1
  801. package/themes/avocado.js +3 -3
  802. package/themes/avocado.js.map +1 -1
  803. package/themes/avocado.src.js +5 -4
  804. package/themes/dark-blue.js +3 -3
  805. package/themes/dark-blue.js.map +1 -1
  806. package/themes/dark-blue.src.js +4 -3
  807. package/themes/dark-green.js +3 -3
  808. package/themes/dark-green.js.map +1 -1
  809. package/themes/dark-green.src.js +4 -3
  810. package/themes/dark-unica.js +7 -7
  811. package/themes/dark-unica.js.map +1 -1
  812. package/themes/dark-unica.src.js +6 -6
  813. package/themes/gray.js +3 -3
  814. package/themes/gray.js.map +1 -1
  815. package/themes/gray.src.js +5 -4
  816. package/themes/grid-light.js +4 -4
  817. package/themes/grid-light.js.map +1 -1
  818. package/themes/grid-light.src.js +4 -3
  819. package/themes/grid.js +3 -3
  820. package/themes/grid.js.map +1 -1
  821. package/themes/grid.src.js +4 -3
  822. package/themes/high-contrast-dark.js +6 -6
  823. package/themes/high-contrast-dark.js.map +1 -1
  824. package/themes/high-contrast-dark.src.js +5 -4
  825. package/themes/high-contrast-light.js +3 -3
  826. package/themes/high-contrast-light.js.map +1 -1
  827. package/themes/high-contrast-light.src.js +4 -3
  828. package/themes/sand-signika.js +5 -5
  829. package/themes/sand-signika.js.map +1 -1
  830. package/themes/sand-signika.src.js +4 -3
  831. package/themes/skies.js +4 -4
  832. package/themes/skies.js.map +1 -1
  833. package/themes/skies.src.js +5 -4
  834. package/themes/sunset.js +3 -3
  835. package/themes/sunset.js.map +1 -1
  836. package/themes/sunset.src.js +5 -4
  837. package/es-modules/annotations/controllable/ControllableCircle.js +0 -79
  838. package/es-modules/annotations/controllable/ControllableImage.js +0 -79
  839. package/es-modules/annotations/controllable/ControllableRect.js +0 -82
  840. package/es-modules/annotations/types/InfinityLine.js +0 -110
  841. package/es-modules/masters/modules/map-parser.src.js +0 -12
  842. package/es-modules/modules/accessibility/components/InfoRegionsComponent/AnnotationsA11y.js +0 -80
  843. package/es-modules/modules/accessibility/components/InfoRegionsComponent/InfoRegionsComponent.js +0 -499
  844. package/es-modules/modules/accessibility/components/SeriesComponent/forcedMarkers.js +0 -147
  845. package/es-modules/modules/map-parser.src.js +0 -365
  846. package/es-modules/modules/sonification/options.js +0 -36
  847. package/es-modules/parts-3d/Chart.js +0 -1577
  848. package/es-modules/parts-3d/VMLRenderer.js +0 -35
  849. package/es-modules/parts-gantt/PathfinderAlgorithms.js +0 -656
  850. package/modules/map-parser.d.ts +0 -17
  851. package/modules/map-parser.js +0 -17
  852. package/modules/map-parser.js.map +0 -1
  853. package/modules/map-parser.src.d.ts +0 -17
  854. package/modules/map-parser.src.js +0 -421
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Highcharts JS v8.1.0 (2020-05-05)
2
+ * @license Highcharts JS v8.2.2 (2020-10-22)
3
3
  *
4
4
  * 3D features for Highcharts JS
5
5
  *
@@ -26,7 +26,7 @@
26
26
  obj[path] = fn.apply(null, args);
27
27
  }
28
28
  }
29
- _registerModule(_modules, 'parts-3d/Math.js', [_modules['parts/Globals.js'], _modules['parts/Utilities.js']], function (H, U) {
29
+ _registerModule(_modules, 'Extensions/Math3D.js', [_modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (H, U) {
30
30
  /* *
31
31
  *
32
32
  * (c) 2010-2020 Torstein Honsi
@@ -110,8 +110,10 @@
110
110
  *
111
111
  * @requires highcharts-3d
112
112
  */
113
- H.perspective3D = function (coordinate, origin, distance) {
114
- var projection = ((distance > 0) && (distance < Number.POSITIVE_INFINITY)) ?
113
+ var perspective3D = H.perspective3D = function (coordinate,
114
+ origin,
115
+ distance) {
116
+ var projection = ((distance > 0) && (distance < Number.POSITIVE_INFINITY)) ?
115
117
  distance / (coordinate.z + origin.z + distance) :
116
118
  1;
117
119
  return {
@@ -142,24 +144,27 @@
142
144
  *
143
145
  * @requires highcharts-3d
144
146
  */
145
- H.perspective = function (points, chart, insidePlotArea, useInvertedPersp) {
146
- var options3d = chart.options.chart.options3d,
147
+ var perspective = H.perspective = function (points,
148
+ chart,
149
+ insidePlotArea,
150
+ useInvertedPersp) {
151
+ var options3d = chart.options.chart.options3d,
147
152
  /* The useInvertedPersp argument is used for
148
153
  * inverted charts with already inverted elements,
149
154
  * such as dataLabels or tooltip positions.
150
155
  */
151
156
  inverted = pick(useInvertedPersp,
152
- insidePlotArea ? chart.inverted : false),
153
- origin = {
157
+ insidePlotArea ? chart.inverted : false),
158
+ origin = {
154
159
  x: chart.plotWidth / 2,
155
160
  y: chart.plotHeight / 2,
156
161
  z: options3d.depth / 2,
157
162
  vd: pick(options3d.depth, 1) * pick(options3d.viewDistance, 0)
158
163
  },
159
- scale = chart.scale3d || 1,
160
- beta = deg2rad * options3d.beta * (inverted ? -1 : 1),
161
- alpha = deg2rad * options3d.alpha * (inverted ? -1 : 1),
162
- angles = {
164
+ scale = chart.scale3d || 1,
165
+ beta = deg2rad * options3d.beta * (inverted ? -1 : 1),
166
+ alpha = deg2rad * options3d.alpha * (inverted ? -1 : 1),
167
+ angles = {
163
168
  cosA: Math.cos(alpha),
164
169
  cosB: Math.cos(-beta),
165
170
  sinA: Math.sin(alpha),
@@ -174,7 +179,7 @@
174
179
  var rotated = rotate3D((inverted ? point.y : point.x) - origin.x, (inverted ? point.x : point.y) - origin.y, (point.z || 0) - origin.z,
175
180
  angles),
176
181
  // Apply perspective
177
- coordinate = H.perspective3D(rotated,
182
+ coordinate = perspective3D(rotated,
178
183
  origin,
179
184
  origin.vd);
180
185
  // Apply translation
@@ -206,9 +211,10 @@
206
211
  *
207
212
  * @requires highcharts-3d
208
213
  */
209
- H.pointCameraDistance = function (coordinates, chart) {
210
- var options3d = chart.options.chart.options3d,
211
- cameraPosition = {
214
+ var pointCameraDistance = H.pointCameraDistance = function (coordinates,
215
+ chart) {
216
+ var options3d = chart.options.chart.options3d,
217
+ cameraPosition = {
212
218
  x: chart.plotWidth / 2,
213
219
  y: chart.plotHeight / 2,
214
220
  z: pick(options3d.depth, 1) * pick(options3d.viewDistance, 0) +
@@ -216,11 +222,11 @@
216
222
  },
217
223
  // Added support for objects with plotX or x coordinates.
218
224
  distance = Math.sqrt(Math.pow(cameraPosition.x - pick(coordinates.plotX,
219
- coordinates.x), 2) +
225
+ coordinates.x), 2) +
220
226
  Math.pow(cameraPosition.y - pick(coordinates.plotY,
221
- coordinates.y), 2) +
227
+ coordinates.y), 2) +
222
228
  Math.pow(cameraPosition.z - pick(coordinates.plotZ,
223
- coordinates.z), 2));
229
+ coordinates.z), 2));
224
230
  return distance;
225
231
  };
226
232
  /**
@@ -238,10 +244,10 @@
238
244
  *
239
245
  * @requires highcharts-3d
240
246
  */
241
- H.shapeArea = function (vertexes) {
242
- var area = 0,
243
- i,
244
- j;
247
+ var shapeArea = H.shapeArea = function (vertexes) {
248
+ var area = 0,
249
+ i,
250
+ j;
245
251
  for (i = 0; i < vertexes.length; i++) {
246
252
  j = (i + 1) % vertexes.length;
247
253
  area += vertexes[i].x * vertexes[j].y - vertexes[j].x * vertexes[i].y;
@@ -268,12 +274,24 @@
268
274
  *
269
275
  * @requires highcharts-3d
270
276
  */
271
- H.shapeArea3d = function (vertexes, chart, insidePlotArea) {
272
- return H.shapeArea(H.perspective(vertexes, chart, insidePlotArea));
277
+ var shapeArea3D = H.shapeArea3d = function (vertexes,
278
+ chart,
279
+ insidePlotArea) {
280
+ return shapeArea(perspective(vertexes,
281
+ chart,
282
+ insidePlotArea));
273
283
  };
284
+ var mathModule = {
285
+ perspective: perspective,
286
+ perspective3D: perspective3D,
287
+ pointCameraDistance: pointCameraDistance,
288
+ shapeArea: shapeArea,
289
+ shapeArea3D: shapeArea3D
290
+ };
274
291
 
292
+ return mathModule;
275
293
  });
276
- _registerModule(_modules, 'parts-3d/SVGRenderer.js', [_modules['parts/Globals.js'], _modules['parts/Utilities.js']], function (H, U) {
294
+ _registerModule(_modules, 'Core/Renderer/SVG/SVGRenderer3D.js', [_modules['Core/Animation/AnimationUtilities.js'], _modules['Core/Color/Color.js'], _modules['Core/Globals.js'], _modules['Extensions/Math3D.js'], _modules['Core/Renderer/SVG/SVGElement.js'], _modules['Core/Renderer/SVG/SVGRenderer.js'], _modules['Core/Utilities.js']], function (A, Color, H, Math3D, SVGElement, SVGRenderer, U) {
277
295
  /* *
278
296
  *
279
297
  * (c) 2010-2020 Torstein Honsi
@@ -285,8 +303,11 @@
285
303
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
286
304
  *
287
305
  * */
288
- var animObject = U.animObject,
289
- defined = U.defined,
306
+ var animObject = A.animObject;
307
+ var color = Color.parse;
308
+ var perspective = Math3D.perspective,
309
+ shapeArea = Math3D.shapeArea;
310
+ var defined = U.defined,
290
311
  extend = U.extend,
291
312
  merge = U.merge,
292
313
  objectEach = U.objectEach,
@@ -295,11 +316,7 @@
295
316
  PI = Math.PI,
296
317
  sin = Math.sin;
297
318
  var charts = H.charts,
298
- color = H.color,
299
- deg2rad = H.deg2rad,
300
- perspective = H.perspective,
301
- SVGElement = H.SVGElement,
302
- SVGRenderer = H.SVGRenderer,
319
+ deg2rad = H.deg2rad,
303
320
  // internal:
304
321
  dFactor,
305
322
  element3dMethods,
@@ -392,7 +409,7 @@
392
409
  this.insidePlotArea),
393
410
  path = renderer.toLinePath(vertexes2d,
394
411
  true),
395
- area = H.shapeArea(vertexes2d),
412
+ area = shapeArea(vertexes2d),
396
413
  visibility = (this.enabled && area > 0) ? 'visible' : 'hidden';
397
414
  hash.d = path;
398
415
  hash.visibility = visibility;
@@ -416,7 +433,7 @@
416
433
  this.insidePlotArea),
417
434
  path = renderer.toLinePath(vertexes2d,
418
435
  true),
419
- area = H.shapeArea(vertexes2d),
436
+ area = shapeArea(vertexes2d),
420
437
  visibility = (this.enabled && area > 0) ? 'visible' : 'hidden';
421
438
  params.d = path;
422
439
  this.attr('visibility', visibility);
@@ -645,7 +662,7 @@
645
662
  return this.element3d('cuboid', shapeArgs);
646
663
  };
647
664
  // Generates a cuboid path and zIndexes
648
- H.SVGRenderer.prototype.cuboidPath = function (shapeArgs) {
665
+ SVGRenderer.prototype.cuboidPath = function (shapeArgs) {
649
666
  var x = shapeArgs.x,
650
667
  y = shapeArgs.y,
651
668
  z = shapeArgs.z || 0,
@@ -787,18 +804,18 @@
787
804
  // possible to use this vertices array for visible face calculation
788
805
  dummyFace1 = verticesIndex1.map(mapSidePath),
789
806
  dummyFace2 = verticesIndex2.map(mapSidePath);
790
- if (H.shapeArea(face1) < 0) {
807
+ if (shapeArea(face1) < 0) {
791
808
  ret = [face1, 0];
792
809
  }
793
- else if (H.shapeArea(face2) < 0) {
810
+ else if (shapeArea(face2) < 0) {
794
811
  ret = [face2, 1];
795
812
  }
796
813
  else if (side) {
797
814
  forcedSides.push(side);
798
- if (H.shapeArea(dummyFace1) < 0) {
815
+ if (shapeArea(dummyFace1) < 0) {
799
816
  ret = [face1, 0];
800
817
  }
801
- else if (H.shapeArea(dummyFace2) < 0) {
818
+ else if (shapeArea(dummyFace2) < 0) {
802
819
  ret = [face2, 1];
803
820
  }
804
821
  else {
@@ -865,7 +882,7 @@
865
882
  }; // #4774
866
883
  };
867
884
  // SECTORS //
868
- H.SVGRenderer.prototype.arc3d = function (attribs) {
885
+ SVGRenderer.prototype.arc3d = function (attribs) {
869
886
  var wrapper = this.g(), renderer = wrapper.renderer, customAttribs = ['x', 'y', 'r', 'innerR', 'start', 'end', 'depth'];
870
887
  /**
871
888
  * Get custom attributes. Don't mutate the original object and return an
@@ -884,7 +901,7 @@
884
901
  hasCA = true;
885
902
  }
886
903
  }
887
- return hasCA ? ca : false;
904
+ return hasCA ? [ca, params] : false;
888
905
  }
889
906
  attribs = merge(attribs);
890
907
  attribs.alpha = (attribs.alpha || 0) * deg2rad;
@@ -968,10 +985,13 @@
968
985
  });
969
986
  // Override attr to remove shape attributes and use those to set child paths
970
987
  wrapper.attr = function (params) {
971
- var ca;
988
+ var ca,
989
+ paramArr;
972
990
  if (typeof params === 'object') {
973
- ca = suckOutCustom(params);
974
- if (ca) {
991
+ paramArr = suckOutCustom(params);
992
+ if (paramArr) {
993
+ ca = paramArr[0];
994
+ arguments[0] = paramArr[1];
975
995
  extend(wrapper.attribs, ca);
976
996
  wrapper.setPaths(wrapper.attribs);
977
997
  }
@@ -981,7 +1001,7 @@
981
1001
  // Override the animate function by sucking out custom parameters related to
982
1002
  // the shapes directly, and update the shapes from the animation step.
983
1003
  wrapper.animate = function (params, animation, complete) {
984
- var ca,
1004
+ var paramArr,
985
1005
  from = this.attribs,
986
1006
  to,
987
1007
  anim,
@@ -994,14 +1014,14 @@
994
1014
  delete params.beta;
995
1015
  anim = animObject(pick(animation, this.renderer.globalAnimation));
996
1016
  if (anim.duration) {
997
- ca = suckOutCustom(params);
1017
+ paramArr = suckOutCustom(params);
998
1018
  // Params need to have a property in order for the step to run
999
1019
  // (#5765, #7097, #7437)
1000
1020
  wrapper[randomProp] = 0;
1001
1021
  params[randomProp] = 1;
1002
1022
  wrapper[randomProp + 'Setter'] = H.noop;
1003
- if (ca) {
1004
- to = ca;
1023
+ if (paramArr) {
1024
+ to = paramArr[0]; // custom attr
1005
1025
  anim.step = function (a, fx) {
1006
1026
  /**
1007
1027
  * @private
@@ -1254,8 +1274,9 @@
1254
1274
  };
1255
1275
  };
1256
1276
 
1277
+ return SVGRenderer;
1257
1278
  });
1258
- _registerModule(_modules, 'parts-3d/Tick3D.js', [_modules['parts/Utilities.js']], function (U) {
1279
+ _registerModule(_modules, 'Core/Axis/Tick3D.js', [_modules['Core/Utilities.js']], function (U) {
1259
1280
  /* *
1260
1281
  *
1261
1282
  * (c) 2010-2020 Torstein Honsi
@@ -1331,7 +1352,7 @@
1331
1352
 
1332
1353
  return Tick3D;
1333
1354
  });
1334
- _registerModule(_modules, 'parts-3d/Axis3D.js', [_modules['parts/Globals.js'], _modules['parts/Tick.js'], _modules['parts-3d/Tick3D.js'], _modules['parts/Utilities.js']], function (H, Tick, Tick3D, U) {
1355
+ _registerModule(_modules, 'Core/Axis/Axis3D.js', [_modules['Core/Globals.js'], _modules['Extensions/Math3D.js'], _modules['Core/Axis/Tick.js'], _modules['Core/Axis/Tick3D.js'], _modules['Core/Utilities.js']], function (H, Math3D, Tick, Tick3D, U) {
1335
1356
  /* *
1336
1357
  *
1337
1358
  * (c) 2010-2020 Torstein Honsi
@@ -1343,14 +1364,14 @@
1343
1364
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
1344
1365
  *
1345
1366
  * */
1367
+ var perspective = Math3D.perspective,
1368
+ perspective3D = Math3D.perspective3D,
1369
+ shapeArea = Math3D.shapeArea;
1346
1370
  var addEvent = U.addEvent,
1347
1371
  merge = U.merge,
1348
1372
  pick = U.pick,
1349
1373
  wrap = U.wrap;
1350
- var deg2rad = H.deg2rad,
1351
- perspective = H.perspective,
1352
- perspective3D = H.perspective3D,
1353
- shapeArea = H.shapeArea;
1374
+ var deg2rad = H.deg2rad;
1354
1375
  /* eslint-disable valid-jsdoc */
1355
1376
  /**
1356
1377
  * Adds 3D support to axes.
@@ -1391,6 +1412,7 @@
1391
1412
  var chart = axis.chart;
1392
1413
  // Do not do this if the chart is not 3D
1393
1414
  if (axis.coll === 'colorAxis' ||
1415
+ !chart.chart3d ||
1394
1416
  !chart.is3d()) {
1395
1417
  return pos;
1396
1418
  }
@@ -1400,7 +1422,7 @@
1400
1422
  axis.options.labels.position3d),
1401
1423
  skew = pick(isTitle && axis.options.title.skew3d,
1402
1424
  axis.options.labels.skew3d),
1403
- frame = chart.frame3d,
1425
+ frame = chart.chart3d.frame3d,
1404
1426
  plotLeft = chart.plotLeft,
1405
1427
  plotRight = chart.plotWidth + plotLeft,
1406
1428
  plotTop = chart.plotTop,
@@ -1736,7 +1758,9 @@
1736
1758
  var path = proceed.apply(axis,
1737
1759
  [].slice.call(arguments, 1));
1738
1760
  // Do not do this if the chart is not 3D
1739
- if (!chart.is3d() || axis.coll === 'colorAxis') {
1761
+ if (axis.coll === 'colorAxis' ||
1762
+ !chart.chart3d ||
1763
+ !chart.is3d()) {
1740
1764
  return path;
1741
1765
  }
1742
1766
  if (path === null) {
@@ -1744,7 +1768,7 @@
1744
1768
  }
1745
1769
  var options3d = chart.options.chart.options3d,
1746
1770
  d = axis.isZAxis ? chart.plotWidth : options3d.depth,
1747
- frame = chart.frame3d,
1771
+ frame = chart.chart3d.frame3d,
1748
1772
  startSegment = path[0],
1749
1773
  endSegment = path[1],
1750
1774
  pArr,
@@ -1998,7 +2022,7 @@
1998
2022
 
1999
2023
  return Axis3D;
2000
2024
  });
2001
- _registerModule(_modules, 'parts-3d/ZAxis.js', [_modules['parts/Axis.js'], _modules['parts/Utilities.js']], function (Axis, U) {
2025
+ _registerModule(_modules, 'Core/Axis/ZAxis.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Utilities.js']], function (Axis, U) {
2002
2026
  /* *
2003
2027
  *
2004
2028
  * (c) 2010-2020 Torstein Honsi
@@ -2164,7 +2188,7 @@
2164
2188
 
2165
2189
  return ZAxis;
2166
2190
  });
2167
- _registerModule(_modules, 'parts-3d/Chart.js', [_modules['parts/Axis.js'], _modules['parts-3d/Axis3D.js'], _modules['parts/Globals.js'], _modules['parts/Utilities.js'], _modules['parts-3d/ZAxis.js']], function (Axis, Axis3D, H, U, ZAxis) {
2191
+ _registerModule(_modules, 'Core/Chart/Chart3D.js', [_modules['Core/Axis/Axis.js'], _modules['Core/Axis/Axis3D.js'], _modules['Core/Chart/Chart.js'], _modules['Core/Animation/Fx.js'], _modules['Core/Globals.js'], _modules['Extensions/Math3D.js'], _modules['Core/Options.js'], _modules['Core/Utilities.js'], _modules['Core/Axis/ZAxis.js']], function (Axis, Axis3D, Chart, Fx, H, Math3D, O, U, ZAxis) {
2168
2192
  /* *
2169
2193
  *
2170
2194
  * (c) 2010-2020 Torstein Honsi
@@ -2176,158 +2200,493 @@
2176
2200
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
2177
2201
  *
2178
2202
  * */
2203
+ var perspective = Math3D.perspective,
2204
+ shapeArea3D = Math3D.shapeArea3D;
2205
+ var genericDefaultOptions = O.defaultOptions;
2179
2206
  var addEvent = U.addEvent,
2180
- Fx = U.Fx,
2181
2207
  isArray = U.isArray,
2182
2208
  merge = U.merge,
2183
2209
  pick = U.pick,
2184
2210
  wrap = U.wrap;
2185
- var Chart = H.Chart,
2186
- perspective = H.perspective;
2187
- /**
2188
- * Shorthand to check the is3d flag.
2189
- * @private
2190
- * @return {boolean}
2191
- * Whether it is a 3D chart.
2192
- */
2193
- Chart.prototype.is3d = function () {
2194
- return (this.options.chart.options3d &&
2195
- this.options.chart.options3d.enabled); // #4280
2196
- };
2197
- Chart.prototype.propsRequireDirtyBox.push('chart.options3d');
2198
- Chart.prototype.propsRequireUpdateSeries.push('chart.options3d');
2199
- /* eslint-disable no-invalid-this */
2200
- // Legacy support for HC < 6 to make 'scatter' series in a 3D chart route to the
2201
- // real 'scatter3d' series type.
2202
- addEvent(Chart, 'afterInit', function () {
2203
- var options = this.options;
2204
- if (this.is3d()) {
2205
- (options.series || []).forEach(function (s) {
2206
- var type = s.type ||
2207
- options.chart.type ||
2208
- options.chart.defaultSeriesType;
2209
- if (type === 'scatter') {
2210
- s.type = 'scatter3d';
2211
- }
2212
- });
2213
- }
2214
- });
2215
- // And do it on dynamic add (#8407)
2216
- addEvent(Chart, 'addSeries', function (e) {
2217
- if (this.is3d()) {
2218
- if (e.options.type === 'scatter') {
2219
- e.options.type = 'scatter3d';
2220
- }
2221
- }
2222
- });
2223
- /**
2224
- * Calculate scale of the 3D view. That is required to
2225
- * fit chart's 3D projection into the actual plotting area. Reported as #4933.
2226
- * @notice This function should ideally take the plot values instead of a chart
2227
- * object, but since the chart object is needed for perspective it is
2228
- * not practical. Possible to make both getScale and perspective more
2229
- * logical and also immutable.
2230
- *
2231
- * @private
2232
- * @function getScale
2233
- *
2234
- * @param {Highcharts.Chart} chart
2235
- * Chart object
2236
- *
2237
- * @param {number} depth
2238
- * The depth of the chart
2239
- *
2240
- * @return {number}
2241
- * The scale to fit the 3D chart into the plotting area.
2242
- *
2243
- * @requires highcharts-3d
2244
- */
2245
- function getScale(chart, depth) {
2246
- var plotLeft = chart.plotLeft,
2247
- plotRight = chart.plotWidth + plotLeft,
2248
- plotTop = chart.plotTop,
2249
- plotBottom = chart.plotHeight + plotTop,
2250
- originX = plotLeft + chart.plotWidth / 2,
2251
- originY = plotTop + chart.plotHeight / 2,
2252
- bbox3d = {
2253
- minX: Number.MAX_VALUE,
2254
- maxX: -Number.MAX_VALUE,
2255
- minY: Number.MAX_VALUE,
2256
- maxY: -Number.MAX_VALUE
2257
- },
2258
- corners,
2259
- scale = 1;
2260
- // Top left corners:
2261
- corners = [{
2262
- x: plotLeft,
2263
- y: plotTop,
2264
- z: 0
2265
- }, {
2266
- x: plotLeft,
2267
- y: plotTop,
2268
- z: depth
2269
- }];
2270
- // Top right corners:
2271
- [0, 1].forEach(function (i) {
2272
- corners.push({
2273
- x: plotRight,
2274
- y: corners[i].y,
2275
- z: corners[i].z
2276
- });
2277
- });
2278
- // All bottom corners:
2279
- [0, 1, 2, 3].forEach(function (i) {
2280
- corners.push({
2281
- x: corners[i].x,
2282
- y: plotBottom,
2283
- z: corners[i].z
2284
- });
2285
- });
2286
- // Calculate 3D corners:
2287
- corners = perspective(corners, chart, false);
2288
- // Get bounding box of 3D element:
2289
- corners.forEach(function (corner) {
2290
- bbox3d.minX = Math.min(bbox3d.minX, corner.x);
2291
- bbox3d.maxX = Math.max(bbox3d.maxX, corner.x);
2292
- bbox3d.minY = Math.min(bbox3d.minY, corner.y);
2293
- bbox3d.maxY = Math.max(bbox3d.maxY, corner.y);
2294
- });
2295
- // Left edge:
2296
- if (plotLeft > bbox3d.minX) {
2297
- scale = Math.min(scale, 1 - Math.abs((plotLeft + originX) / (bbox3d.minX + originX)) % 1);
2298
- }
2299
- // Right edge:
2300
- if (plotRight < bbox3d.maxX) {
2301
- scale = Math.min(scale, (plotRight - originX) / (bbox3d.maxX - originX));
2302
- }
2303
- // Top edge:
2304
- if (plotTop > bbox3d.minY) {
2305
- if (bbox3d.minY < 0) {
2306
- scale = Math.min(scale, (plotTop + originY) / (-bbox3d.minY + plotTop + originY));
2307
- }
2308
- else {
2309
- scale = Math.min(scale, 1 - (plotTop + originY) / (bbox3d.minY + originY) % 1);
2211
+ var Chart3D;
2212
+ (function (Chart3D) {
2213
+ /* *
2214
+ *
2215
+ * Interfaces
2216
+ *
2217
+ * */
2218
+ /* *
2219
+ *
2220
+ * Classes
2221
+ *
2222
+ * */
2223
+ var Composition = /** @class */ (function () {
2224
+ /* *
2225
+ *
2226
+ * Constructors
2227
+ *
2228
+ * */
2229
+ /**
2230
+ * @private
2231
+ */
2232
+ function Composition(chart) {
2233
+ this.frame3d = void 0;
2234
+ this.chart = chart;
2310
2235
  }
2311
- }
2312
- // Bottom edge:
2313
- if (plotBottom < bbox3d.maxY) {
2314
- scale = Math.min(scale, Math.abs((plotBottom - originY) / (bbox3d.maxY - originY)));
2315
- }
2316
- return scale;
2317
- }
2318
- wrap(H.Chart.prototype, 'isInsidePlot', function (proceed) {
2319
- return this.is3d() || proceed.apply(this, [].slice.call(arguments, 1));
2320
- });
2321
- var defaultOptions = H.getOptions();
2322
- /**
2323
- * @optionparent
2324
- */
2325
- var extendedOptions = {
2236
+ /* *
2237
+ *
2238
+ * Functions
2239
+ *
2240
+ * */
2241
+ Composition.prototype.get3dFrame = function () {
2242
+ var chart = this.chart,
2243
+ options3d = chart.options.chart.options3d,
2244
+ frameOptions = options3d.frame,
2245
+ xm = chart.plotLeft,
2246
+ xp = chart.plotLeft + chart.plotWidth,
2247
+ ym = chart.plotTop,
2248
+ yp = chart.plotTop + chart.plotHeight,
2249
+ zm = 0,
2250
+ zp = options3d.depth,
2251
+ faceOrientation = function (vertexes) {
2252
+ var area = shapeArea3D(vertexes,
2253
+ chart);
2254
+ // Give it 0.5 squared-pixel as a margin for rounding errors
2255
+ if (area > 0.5) {
2256
+ return 1;
2257
+ }
2258
+ if (area < -0.5) {
2259
+ return -1;
2260
+ }
2261
+ return 0;
2262
+ }, bottomOrientation = faceOrientation([
2263
+ { x: xm, y: yp, z: zp },
2264
+ { x: xp, y: yp, z: zp },
2265
+ { x: xp, y: yp, z: zm },
2266
+ { x: xm, y: yp, z: zm }
2267
+ ]), topOrientation = faceOrientation([
2268
+ { x: xm, y: ym, z: zm },
2269
+ { x: xp, y: ym, z: zm },
2270
+ { x: xp, y: ym, z: zp },
2271
+ { x: xm, y: ym, z: zp }
2272
+ ]), leftOrientation = faceOrientation([
2273
+ { x: xm, y: ym, z: zm },
2274
+ { x: xm, y: ym, z: zp },
2275
+ { x: xm, y: yp, z: zp },
2276
+ { x: xm, y: yp, z: zm }
2277
+ ]), rightOrientation = faceOrientation([
2278
+ { x: xp, y: ym, z: zp },
2279
+ { x: xp, y: ym, z: zm },
2280
+ { x: xp, y: yp, z: zm },
2281
+ { x: xp, y: yp, z: zp }
2282
+ ]), frontOrientation = faceOrientation([
2283
+ { x: xm, y: yp, z: zm },
2284
+ { x: xp, y: yp, z: zm },
2285
+ { x: xp, y: ym, z: zm },
2286
+ { x: xm, y: ym, z: zm }
2287
+ ]), backOrientation = faceOrientation([
2288
+ { x: xm, y: ym, z: zp },
2289
+ { x: xp, y: ym, z: zp },
2290
+ { x: xp, y: yp, z: zp },
2291
+ { x: xm, y: yp, z: zp }
2292
+ ]), defaultShowBottom = false, defaultShowTop = false, defaultShowLeft = false, defaultShowRight = false, defaultShowFront = false, defaultShowBack = true;
2293
+ // The 'default' criteria to visible faces of the frame is looking
2294
+ // up every axis to decide whenever the left/right//top/bottom sides
2295
+ // of the frame will be shown
2296
+ []
2297
+ .concat(chart.xAxis, chart.yAxis, chart.zAxis)
2298
+ .forEach(function (axis) {
2299
+ if (axis) {
2300
+ if (axis.horiz) {
2301
+ if (axis.opposite) {
2302
+ defaultShowTop = true;
2303
+ }
2304
+ else {
2305
+ defaultShowBottom = true;
2306
+ }
2307
+ }
2308
+ else {
2309
+ if (axis.opposite) {
2310
+ defaultShowRight = true;
2311
+ }
2312
+ else {
2313
+ defaultShowLeft = true;
2314
+ }
2315
+ }
2316
+ }
2317
+ });
2318
+ var getFaceOptions = function (sources, faceOrientation, defaultVisible) {
2319
+ var faceAttrs = ['size', 'color', 'visible'];
2320
+ var options = {};
2321
+ for (var i = 0; i < faceAttrs.length; i++) {
2322
+ var attr = faceAttrs[i];
2323
+ for (var j = 0; j < sources.length; j++) {
2324
+ if (typeof sources[j] === 'object') {
2325
+ var val = sources[j][attr];
2326
+ if (typeof val !== 'undefined' && val !== null) {
2327
+ options[attr] = val;
2328
+ break;
2329
+ }
2330
+ }
2331
+ }
2332
+ }
2333
+ var isVisible = defaultVisible;
2334
+ if (options.visible === true || options.visible === false) {
2335
+ isVisible = options.visible;
2336
+ }
2337
+ else if (options.visible === 'auto') {
2338
+ isVisible = faceOrientation > 0;
2339
+ }
2340
+ return {
2341
+ size: pick(options.size, 1),
2342
+ color: pick(options.color, 'none'),
2343
+ frontFacing: faceOrientation > 0,
2344
+ visible: isVisible
2345
+ };
2346
+ };
2347
+ // docs @TODO: Add all frame options (left, right, top, bottom,
2348
+ // front, back) to apioptions JSDoc once the new system is up.
2349
+ var ret = {
2350
+ axes: {},
2351
+ // FIXME: Previously, left/right, top/bottom and front/back
2352
+ // pairs shared size and color.
2353
+ // For compatibility and consistency sake, when one face have
2354
+ // size/color/visibility set, the opposite face will default to
2355
+ // the same values. Also, left/right used to be called 'side',
2356
+ // so that's also added as a fallback.
2357
+ bottom: getFaceOptions([frameOptions.bottom,
2358
+ frameOptions.top,
2359
+ frameOptions],
2360
+ bottomOrientation,
2361
+ defaultShowBottom),
2362
+ top: getFaceOptions([frameOptions.top,
2363
+ frameOptions.bottom,
2364
+ frameOptions],
2365
+ topOrientation,
2366
+ defaultShowTop),
2367
+ left: getFaceOptions([
2368
+ frameOptions.left,
2369
+ frameOptions.right,
2370
+ frameOptions.side,
2371
+ frameOptions
2372
+ ],
2373
+ leftOrientation,
2374
+ defaultShowLeft),
2375
+ right: getFaceOptions([
2376
+ frameOptions.right,
2377
+ frameOptions.left,
2378
+ frameOptions.side,
2379
+ frameOptions
2380
+ ],
2381
+ rightOrientation,
2382
+ defaultShowRight),
2383
+ back: getFaceOptions([frameOptions.back,
2384
+ frameOptions.front,
2385
+ frameOptions],
2386
+ backOrientation,
2387
+ defaultShowBack),
2388
+ front: getFaceOptions([frameOptions.front,
2389
+ frameOptions.back,
2390
+ frameOptions],
2391
+ frontOrientation,
2392
+ defaultShowFront)
2393
+ };
2394
+ // Decide the bast place to put axis title/labels based on the
2395
+ // visible faces. Ideally, The labels can only be on the edge
2396
+ // between a visible face and an invisble one. Also, the Y label
2397
+ // should be one the left-most edge (right-most if opposite).
2398
+ if (options3d.axisLabelPosition === 'auto') {
2399
+ var isValidEdge = function (face1,
2400
+ face2) {
2401
+ return ((face1.visible !== face2.visible) ||
2402
+ (face1.visible &&
2403
+ face2.visible &&
2404
+ (face1.frontFacing !== face2.frontFacing)));
2405
+ };
2406
+ var yEdges = [];
2407
+ if (isValidEdge(ret.left, ret.front)) {
2408
+ yEdges.push({
2409
+ y: (ym + yp) / 2,
2410
+ x: xm,
2411
+ z: zm,
2412
+ xDir: { x: 1, y: 0, z: 0 }
2413
+ });
2414
+ }
2415
+ if (isValidEdge(ret.left, ret.back)) {
2416
+ yEdges.push({
2417
+ y: (ym + yp) / 2,
2418
+ x: xm,
2419
+ z: zp,
2420
+ xDir: { x: 0, y: 0, z: -1 }
2421
+ });
2422
+ }
2423
+ if (isValidEdge(ret.right, ret.front)) {
2424
+ yEdges.push({
2425
+ y: (ym + yp) / 2,
2426
+ x: xp,
2427
+ z: zm,
2428
+ xDir: { x: 0, y: 0, z: 1 }
2429
+ });
2430
+ }
2431
+ if (isValidEdge(ret.right, ret.back)) {
2432
+ yEdges.push({
2433
+ y: (ym + yp) / 2,
2434
+ x: xp,
2435
+ z: zp,
2436
+ xDir: { x: -1, y: 0, z: 0 }
2437
+ });
2438
+ }
2439
+ var xBottomEdges = [];
2440
+ if (isValidEdge(ret.bottom, ret.front)) {
2441
+ xBottomEdges.push({
2442
+ x: (xm + xp) / 2,
2443
+ y: yp,
2444
+ z: zm,
2445
+ xDir: { x: 1, y: 0, z: 0 }
2446
+ });
2447
+ }
2448
+ if (isValidEdge(ret.bottom, ret.back)) {
2449
+ xBottomEdges.push({
2450
+ x: (xm + xp) / 2,
2451
+ y: yp,
2452
+ z: zp,
2453
+ xDir: { x: -1, y: 0, z: 0 }
2454
+ });
2455
+ }
2456
+ var xTopEdges = [];
2457
+ if (isValidEdge(ret.top, ret.front)) {
2458
+ xTopEdges.push({
2459
+ x: (xm + xp) / 2,
2460
+ y: ym,
2461
+ z: zm,
2462
+ xDir: { x: 1, y: 0, z: 0 }
2463
+ });
2464
+ }
2465
+ if (isValidEdge(ret.top, ret.back)) {
2466
+ xTopEdges.push({
2467
+ x: (xm + xp) / 2,
2468
+ y: ym,
2469
+ z: zp,
2470
+ xDir: { x: -1, y: 0, z: 0 }
2471
+ });
2472
+ }
2473
+ var zBottomEdges = [];
2474
+ if (isValidEdge(ret.bottom, ret.left)) {
2475
+ zBottomEdges.push({
2476
+ z: (zm + zp) / 2,
2477
+ y: yp,
2478
+ x: xm,
2479
+ xDir: { x: 0, y: 0, z: -1 }
2480
+ });
2481
+ }
2482
+ if (isValidEdge(ret.bottom, ret.right)) {
2483
+ zBottomEdges.push({
2484
+ z: (zm + zp) / 2,
2485
+ y: yp,
2486
+ x: xp,
2487
+ xDir: { x: 0, y: 0, z: 1 }
2488
+ });
2489
+ }
2490
+ var zTopEdges = [];
2491
+ if (isValidEdge(ret.top, ret.left)) {
2492
+ zTopEdges.push({
2493
+ z: (zm + zp) / 2,
2494
+ y: ym,
2495
+ x: xm,
2496
+ xDir: { x: 0, y: 0, z: -1 }
2497
+ });
2498
+ }
2499
+ if (isValidEdge(ret.top, ret.right)) {
2500
+ zTopEdges.push({
2501
+ z: (zm + zp) / 2,
2502
+ y: ym,
2503
+ x: xp,
2504
+ xDir: { x: 0, y: 0, z: 1 }
2505
+ });
2506
+ }
2507
+ var pickEdge = function (edges,
2508
+ axis,
2509
+ mult) {
2510
+ if (edges.length === 0) {
2511
+ return null;
2512
+ }
2513
+ if (edges.length === 1) {
2514
+ return edges[0];
2515
+ }
2516
+ var best = 0,
2517
+ projections = perspective(edges,
2518
+ chart,
2519
+ false);
2520
+ for (var i = 1; i < projections.length; i++) {
2521
+ if (mult * projections[i][axis] >
2522
+ mult * projections[best][axis]) {
2523
+ best = i;
2524
+ }
2525
+ else if ((mult * projections[i][axis] ===
2526
+ mult * projections[best][axis]) &&
2527
+ (projections[i].z < projections[best].z)) {
2528
+ best = i;
2529
+ }
2530
+ }
2531
+ return edges[best];
2532
+ };
2533
+ ret.axes = {
2534
+ y: {
2535
+ 'left': pickEdge(yEdges, 'x', -1),
2536
+ 'right': pickEdge(yEdges, 'x', +1)
2537
+ },
2538
+ x: {
2539
+ 'top': pickEdge(xTopEdges, 'y', -1),
2540
+ 'bottom': pickEdge(xBottomEdges, 'y', +1)
2541
+ },
2542
+ z: {
2543
+ 'top': pickEdge(zTopEdges, 'y', -1),
2544
+ 'bottom': pickEdge(zBottomEdges, 'y', +1)
2545
+ }
2546
+ };
2547
+ }
2548
+ else {
2549
+ ret.axes = {
2550
+ y: {
2551
+ 'left': { x: xm, z: zm, xDir: { x: 1, y: 0, z: 0 } },
2552
+ 'right': { x: xp, z: zm, xDir: { x: 0, y: 0, z: 1 } }
2553
+ },
2554
+ x: {
2555
+ 'top': { y: ym, z: zm, xDir: { x: 1, y: 0, z: 0 } },
2556
+ 'bottom': { y: yp, z: zm, xDir: { x: 1, y: 0, z: 0 } }
2557
+ },
2558
+ z: {
2559
+ 'top': {
2560
+ x: defaultShowLeft ? xp : xm,
2561
+ y: ym,
2562
+ xDir: defaultShowLeft ?
2563
+ { x: 0, y: 0, z: 1 } :
2564
+ { x: 0, y: 0, z: -1 }
2565
+ },
2566
+ 'bottom': {
2567
+ x: defaultShowLeft ? xp : xm,
2568
+ y: yp,
2569
+ xDir: defaultShowLeft ?
2570
+ { x: 0, y: 0, z: 1 } :
2571
+ { x: 0, y: 0, z: -1 }
2572
+ }
2573
+ }
2574
+ };
2575
+ }
2576
+ return ret;
2577
+ };
2578
+ /**
2579
+ * Calculate scale of the 3D view. That is required to fit chart's 3D
2580
+ * projection into the actual plotting area. Reported as #4933.
2581
+ *
2582
+ * @notice
2583
+ * This function should ideally take the plot values instead of a chart
2584
+ * object, but since the chart object is needed for perspective it is
2585
+ * not practical. Possible to make both getScale and perspective more
2586
+ * logical and also immutable.
2587
+ *
2588
+ * @private
2589
+ * @function getScale
2590
+ *
2591
+ * @param {number} depth
2592
+ * The depth of the chart
2593
+ *
2594
+ * @return {number}
2595
+ * The scale to fit the 3D chart into the plotting area.
2596
+ *
2597
+ * @requires highcharts-3d
2598
+ */
2599
+ Composition.prototype.getScale = function (depth) {
2600
+ var chart = this.chart,
2601
+ plotLeft = chart.plotLeft,
2602
+ plotRight = chart.plotWidth + plotLeft,
2603
+ plotTop = chart.plotTop,
2604
+ plotBottom = chart.plotHeight + plotTop,
2605
+ originX = plotLeft + chart.plotWidth / 2,
2606
+ originY = plotTop + chart.plotHeight / 2,
2607
+ bbox3d = {
2608
+ minX: Number.MAX_VALUE,
2609
+ maxX: -Number.MAX_VALUE,
2610
+ minY: Number.MAX_VALUE,
2611
+ maxY: -Number.MAX_VALUE
2612
+ },
2613
+ corners,
2614
+ scale = 1;
2615
+ // Top left corners:
2616
+ corners = [{
2617
+ x: plotLeft,
2618
+ y: plotTop,
2619
+ z: 0
2620
+ }, {
2621
+ x: plotLeft,
2622
+ y: plotTop,
2623
+ z: depth
2624
+ }];
2625
+ // Top right corners:
2626
+ [0, 1].forEach(function (i) {
2627
+ corners.push({
2628
+ x: plotRight,
2629
+ y: corners[i].y,
2630
+ z: corners[i].z
2631
+ });
2632
+ });
2633
+ // All bottom corners:
2634
+ [0, 1, 2, 3].forEach(function (i) {
2635
+ corners.push({
2636
+ x: corners[i].x,
2637
+ y: plotBottom,
2638
+ z: corners[i].z
2639
+ });
2640
+ });
2641
+ // Calculate 3D corners:
2642
+ corners = perspective(corners, chart, false);
2643
+ // Get bounding box of 3D element:
2644
+ corners.forEach(function (corner) {
2645
+ bbox3d.minX = Math.min(bbox3d.minX, corner.x);
2646
+ bbox3d.maxX = Math.max(bbox3d.maxX, corner.x);
2647
+ bbox3d.minY = Math.min(bbox3d.minY, corner.y);
2648
+ bbox3d.maxY = Math.max(bbox3d.maxY, corner.y);
2649
+ });
2650
+ // Left edge:
2651
+ if (plotLeft > bbox3d.minX) {
2652
+ scale = Math.min(scale, 1 - Math.abs((plotLeft + originX) / (bbox3d.minX + originX)) % 1);
2653
+ }
2654
+ // Right edge:
2655
+ if (plotRight < bbox3d.maxX) {
2656
+ scale = Math.min(scale, (plotRight - originX) / (bbox3d.maxX - originX));
2657
+ }
2658
+ // Top edge:
2659
+ if (plotTop > bbox3d.minY) {
2660
+ if (bbox3d.minY < 0) {
2661
+ scale = Math.min(scale, (plotTop + originY) / (-bbox3d.minY + plotTop + originY));
2662
+ }
2663
+ else {
2664
+ scale = Math.min(scale, 1 - (plotTop + originY) / (bbox3d.minY + originY) % 1);
2665
+ }
2666
+ }
2667
+ // Bottom edge:
2668
+ if (plotBottom < bbox3d.maxY) {
2669
+ scale = Math.min(scale, Math.abs((plotBottom - originY) / (bbox3d.maxY - originY)));
2670
+ }
2671
+ return scale;
2672
+ };
2673
+ return Composition;
2674
+ }());
2675
+ Chart3D.Composition = Composition;
2676
+ /* *
2677
+ *
2678
+ * Constants
2679
+ *
2680
+ * */
2681
+ /**
2682
+ * @optionparent
2683
+ * @private
2684
+ */
2685
+ Chart3D.defaultOptions = {
2326
2686
  chart: {
2327
2687
  /**
2328
2688
  * Options to render charts in 3 dimensions. This feature requires
2329
- * `highcharts-3d.js`,
2330
- found in the download package or online at
2689
+ * `highcharts-3d.js`, found in the download package or online at
2331
2690
  * [code.highcharts.com/highcharts-3d.js](https://code.highcharts.com/highcharts-3d.js).
2332
2691
  *
2333
2692
  * @since 4.0
@@ -2364,8 +2723,8 @@
2364
2723
  */
2365
2724
  depth: 100,
2366
2725
  /**
2367
- * Whether the 3d box should automatically adjust to the chart plot
2368
- * area.
2726
+ * Whether the 3d box should automatically adjust to the chart
2727
+ * plot area.
2369
2728
  *
2370
2729
  * @since 4.2.4
2371
2730
  * @product highcharts
@@ -2373,18 +2732,17 @@
2373
2732
  fitToPlot: true,
2374
2733
  /**
2375
2734
  * Defines the distance the viewer is standing in front of the
2376
- * chart,
2377
- this setting is important to calculate the perspective
2378
- * effect in column and scatter charts. It is not used for 3D pie
2379
- * charts.
2735
+ * chart, this setting is important to calculate the perspective
2736
+ * effect in column and scatter charts. It is not used for 3D
2737
+ * pie charts.
2380
2738
  *
2381
2739
  * @since 4.0
2382
2740
  * @product highcharts
2383
2741
  */
2384
2742
  viewDistance: 25,
2385
2743
  /**
2386
- * Set it to `"auto"` to automatically move the labels to the best
2387
- * edge.
2744
+ * Set it to `"auto"` to automatically move the labels to the
2745
+ * best edge.
2388
2746
  *
2389
2747
  * @type {"auto"|null}
2390
2748
  * @since 5.0.12
@@ -2392,9 +2750,8 @@
2392
2750
  */
2393
2751
  axisLabelPosition: null,
2394
2752
  /**
2395
- * Provides the option to draw a frame around the charts by defining
2396
- * a bottom,
2397
- front and back panel.
2753
+ * Provides the option to draw a frame around the charts by
2754
+ * defining a bottom, front and back panel.
2398
2755
  *
2399
2756
  * @since 4.0
2400
2757
  * @product highcharts
@@ -2436,11 +2793,9 @@
2436
2793
  */
2437
2794
  /**
2438
2795
  * Whether to display the frame. Possible values are `true`,
2439
- * `false`,
2440
- `"auto"` to display only the frames behind the data,
2441
- * and `"default"` to display faces behind the data based on the
2442
- * axis layout,
2443
- ignoring the point of view.
2796
+ * `false`, `"auto"` to display only the frames behind the
2797
+ * data, and `"default"` to display faces behind the data
2798
+ * based on the axis layout, ignoring the point of view.
2444
2799
  *
2445
2800
  * @sample {highcharts} highcharts/3d/scatter-frame/
2446
2801
  * Auto frames
@@ -2489,1274 +2844,1048 @@
2489
2844
  }
2490
2845
  }
2491
2846
  };
2492
- merge(true, defaultOptions, extendedOptions);
2493
- // Add the required CSS classes for column sides (#6018)
2494
- addEvent(Chart, 'afterGetContainer', function () {
2495
- if (this.styledMode) {
2496
- this.renderer.definition({
2497
- tagName: 'style',
2498
- textContent: '.highcharts-3d-top{' +
2499
- 'filter: url(#highcharts-brighter)' +
2500
- '}\n' +
2501
- '.highcharts-3d-side{' +
2502
- 'filter: url(#highcharts-darker)' +
2503
- '}\n'
2504
- });
2505
- // Add add definitions used by brighter and darker faces of the cuboids.
2506
- [{
2507
- name: 'darker',
2508
- slope: 0.6
2509
- }, {
2510
- name: 'brighter',
2511
- slope: 1.4
2512
- }].forEach(function (cfg) {
2513
- this.renderer.definition({
2514
- tagName: 'filter',
2515
- id: 'highcharts-' + cfg.name,
2516
- children: [{
2517
- tagName: 'feComponentTransfer',
2518
- children: [{
2519
- tagName: 'feFuncR',
2520
- type: 'linear',
2521
- slope: cfg.slope
2847
+ /* *
2848
+ *
2849
+ * Functions
2850
+ *
2851
+ * */
2852
+ /**
2853
+ * @private
2854
+ */
2855
+ function compose(ChartClass, FxClass) {
2856
+ var chartProto = ChartClass.prototype;
2857
+ var fxProto = FxClass.prototype;
2858
+ /**
2859
+ * Shorthand to check the is3d flag.
2860
+ * @private
2861
+ * @return {boolean}
2862
+ * Whether it is a 3D chart.
2863
+ */
2864
+ chartProto.is3d = function () {
2865
+ return (this.options.chart.options3d &&
2866
+ this.options.chart.options3d.enabled); // #4280
2867
+ };
2868
+ chartProto.propsRequireDirtyBox.push('chart.options3d');
2869
+ chartProto.propsRequireUpdateSeries.push('chart.options3d');
2870
+ /**
2871
+ * Animation setter for matrix property.
2872
+ * @private
2873
+ */
2874
+ fxProto.matrixSetter = function () {
2875
+ var interpolated;
2876
+ if (this.pos < 1 &&
2877
+ (isArray(this.start) || isArray(this.end))) {
2878
+ var start = this.start || [1, 0, 0, 1, 0, 0];
2879
+ var end = this.end || [1, 0, 0, 1, 0, 0];
2880
+ interpolated = [];
2881
+ for (var i = 0; i < 6; i++) {
2882
+ interpolated.push(this.pos * end[i] + (1 - this.pos) * start[i]);
2883
+ }
2884
+ }
2885
+ else {
2886
+ interpolated = this.end;
2887
+ }
2888
+ this.elem.attr(this.prop, interpolated, null, true);
2889
+ };
2890
+ merge(true, genericDefaultOptions, Chart3D.defaultOptions);
2891
+ addEvent(ChartClass, 'init', onInit);
2892
+ addEvent(ChartClass, 'addSeries', onAddSeries);
2893
+ addEvent(ChartClass, 'afterDrawChartBox', onAfterDrawChartBox);
2894
+ addEvent(ChartClass, 'afterGetContainer', onAfterGetContainer);
2895
+ addEvent(ChartClass, 'afterInit', onAfterInit);
2896
+ addEvent(ChartClass, 'afterSetChartSize', onAfterSetChartSize);
2897
+ addEvent(ChartClass, 'beforeRedraw', onBeforeRedraw);
2898
+ addEvent(ChartClass, 'beforeRender', onBeforeRender);
2899
+ wrap(H.Chart.prototype, 'isInsidePlot', wrapIsInsidePlot);
2900
+ wrap(ChartClass, 'renderSeries', wrapRenderSeries);
2901
+ wrap(ChartClass, 'setClassName', wrapSetClassName);
2902
+ }
2903
+ Chart3D.compose = compose;
2904
+ /**
2905
+ * Legacy support for HC < 6 to make 'scatter' series in a 3D chart route to
2906
+ * the real 'scatter3d' series type. (#8407)
2907
+ * @private
2908
+ */
2909
+ function onAddSeries(e) {
2910
+ if (this.is3d()) {
2911
+ if (e.options.type === 'scatter') {
2912
+ e.options.type = 'scatter3d';
2913
+ }
2914
+ }
2915
+ }
2916
+ /**
2917
+ * @private
2918
+ */
2919
+ function onAfterDrawChartBox() {
2920
+ if (this.chart3d &&
2921
+ this.is3d()) {
2922
+ var chart = this,
2923
+ renderer = chart.renderer,
2924
+ options3d = this.options.chart.options3d,
2925
+ frame = this.chart3d.get3dFrame(),
2926
+ xm = this.plotLeft,
2927
+ xp = this.plotLeft + this.plotWidth,
2928
+ ym = this.plotTop,
2929
+ yp = this.plotTop + this.plotHeight,
2930
+ zm = 0,
2931
+ zp = options3d.depth,
2932
+ xmm = xm - (frame.left.visible ? frame.left.size : 0),
2933
+ xpp = xp + (frame.right.visible ? frame.right.size : 0),
2934
+ ymm = ym - (frame.top.visible ? frame.top.size : 0),
2935
+ ypp = yp + (frame.bottom.visible ? frame.bottom.size : 0),
2936
+ zmm = zm - (frame.front.visible ? frame.front.size : 0),
2937
+ zpp = zp + (frame.back.visible ? frame.back.size : 0),
2938
+ verb = chart.hasRendered ? 'animate' : 'attr';
2939
+ this.chart3d.frame3d = frame;
2940
+ if (!this.frameShapes) {
2941
+ this.frameShapes = {
2942
+ bottom: renderer.polyhedron().add(),
2943
+ top: renderer.polyhedron().add(),
2944
+ left: renderer.polyhedron().add(),
2945
+ right: renderer.polyhedron().add(),
2946
+ back: renderer.polyhedron().add(),
2947
+ front: renderer.polyhedron().add()
2948
+ };
2949
+ }
2950
+ this.frameShapes.bottom[verb]({
2951
+ 'class': 'highcharts-3d-frame highcharts-3d-frame-bottom',
2952
+ zIndex: frame.bottom.frontFacing ? -1000 : 1000,
2953
+ faces: [{
2954
+ fill: H.color(frame.bottom.color).brighten(0.1).get(),
2955
+ vertexes: [{
2956
+ x: xmm,
2957
+ y: ypp,
2958
+ z: zmm
2959
+ }, {
2960
+ x: xpp,
2961
+ y: ypp,
2962
+ z: zmm
2963
+ }, {
2964
+ x: xpp,
2965
+ y: ypp,
2966
+ z: zpp
2967
+ }, {
2968
+ x: xmm,
2969
+ y: ypp,
2970
+ z: zpp
2971
+ }],
2972
+ enabled: frame.bottom.visible
2973
+ },
2974
+ {
2975
+ fill: H.color(frame.bottom.color).brighten(0.1).get(),
2976
+ vertexes: [{
2977
+ x: xm,
2978
+ y: yp,
2979
+ z: zp
2980
+ }, {
2981
+ x: xp,
2982
+ y: yp,
2983
+ z: zp
2984
+ }, {
2985
+ x: xp,
2986
+ y: yp,
2987
+ z: zm
2988
+ }, {
2989
+ x: xm,
2990
+ y: yp,
2991
+ z: zm
2992
+ }],
2993
+ enabled: frame.bottom.visible
2994
+ },
2995
+ {
2996
+ fill: H.color(frame.bottom.color).brighten(-0.1).get(),
2997
+ vertexes: [{
2998
+ x: xmm,
2999
+ y: ypp,
3000
+ z: zmm
3001
+ }, {
3002
+ x: xmm,
3003
+ y: ypp,
3004
+ z: zpp
3005
+ }, {
3006
+ x: xm,
3007
+ y: yp,
3008
+ z: zp
3009
+ }, {
3010
+ x: xm,
3011
+ y: yp,
3012
+ z: zm
3013
+ }],
3014
+ enabled: frame.bottom.visible && !frame.left.visible
3015
+ },
3016
+ {
3017
+ fill: H.color(frame.bottom.color).brighten(-0.1).get(),
3018
+ vertexes: [{
3019
+ x: xpp,
3020
+ y: ypp,
3021
+ z: zpp
3022
+ }, {
3023
+ x: xpp,
3024
+ y: ypp,
3025
+ z: zmm
3026
+ }, {
3027
+ x: xp,
3028
+ y: yp,
3029
+ z: zm
3030
+ }, {
3031
+ x: xp,
3032
+ y: yp,
3033
+ z: zp
3034
+ }],
3035
+ enabled: frame.bottom.visible && !frame.right.visible
3036
+ },
3037
+ {
3038
+ fill: H.color(frame.bottom.color).get(),
3039
+ vertexes: [{
3040
+ x: xpp,
3041
+ y: ypp,
3042
+ z: zmm
3043
+ }, {
3044
+ x: xmm,
3045
+ y: ypp,
3046
+ z: zmm
2522
3047
  }, {
2523
- tagName: 'feFuncG',
2524
- type: 'linear',
2525
- slope: cfg.slope
3048
+ x: xm,
3049
+ y: yp,
3050
+ z: zm
2526
3051
  }, {
2527
- tagName: 'feFuncB',
2528
- type: 'linear',
2529
- slope: cfg.slope
2530
- }]
3052
+ x: xp,
3053
+ y: yp,
3054
+ z: zm
3055
+ }],
3056
+ enabled: frame.bottom.visible && !frame.front.visible
3057
+ },
3058
+ {
3059
+ fill: H.color(frame.bottom.color).get(),
3060
+ vertexes: [{
3061
+ x: xmm,
3062
+ y: ypp,
3063
+ z: zpp
3064
+ }, {
3065
+ x: xpp,
3066
+ y: ypp,
3067
+ z: zpp
3068
+ }, {
3069
+ x: xp,
3070
+ y: yp,
3071
+ z: zp
3072
+ }, {
3073
+ x: xm,
3074
+ y: yp,
3075
+ z: zp
3076
+ }],
3077
+ enabled: frame.bottom.visible && !frame.back.visible
2531
3078
  }]
2532
3079
  });
2533
- }, this);
2534
- }
2535
- });
2536
- wrap(Chart.prototype, 'setClassName', function (proceed) {
2537
- proceed.apply(this, [].slice.call(arguments, 1));
2538
- if (this.is3d()) {
2539
- this.container.className += ' highcharts-3d-chart';
2540
- }
2541
- });
2542
- addEvent(H.Chart, 'afterSetChartSize', function () {
2543
- var chart = this,
2544
- options3d = chart.options.chart.options3d;
2545
- if (chart.is3d()) {
2546
- // Add a 0-360 normalisation for alfa and beta angles in 3d graph
2547
- if (options3d) {
2548
- options3d.alpha = options3d.alpha % 360 + (options3d.alpha >= 0 ? 0 : 360);
2549
- options3d.beta = options3d.beta % 360 + (options3d.beta >= 0 ? 0 : 360);
2550
- }
2551
- var inverted = chart.inverted, clipBox = chart.clipBox, margin = chart.margin, x = inverted ? 'y' : 'x', y = inverted ? 'x' : 'y', w = inverted ? 'height' : 'width', h = inverted ? 'width' : 'height';
2552
- clipBox[x] = -(margin[3] || 0);
2553
- clipBox[y] = -(margin[0] || 0);
2554
- clipBox[w] =
2555
- chart.chartWidth + (margin[3] || 0) + (margin[1] || 0);
2556
- clipBox[h] =
2557
- chart.chartHeight + (margin[0] || 0) + (margin[2] || 0);
2558
- // Set scale, used later in perspective method():
2559
- // getScale uses perspective, so scale3d has to be reset.
2560
- chart.scale3d = 1;
2561
- if (options3d.fitToPlot === true) {
2562
- chart.scale3d = getScale(chart, options3d.depth);
2563
- }
2564
- // Recalculate the 3d frame with every call of setChartSize,
2565
- // instead of doing it after every redraw(). It avoids ticks
2566
- // and axis title outside of chart.
2567
- chart.frame3d = this.get3dFrame(); // #7942
2568
- }
2569
- });
2570
- addEvent(Chart, 'beforeRedraw', function () {
2571
- if (this.is3d()) {
2572
- // Set to force a redraw of all elements
2573
- this.isDirtyBox = true;
2574
- }
2575
- });
2576
- addEvent(Chart, 'beforeRender', function () {
2577
- if (this.is3d()) {
2578
- this.frame3d = this.get3dFrame();
2579
- }
2580
- });
2581
- // Draw the series in the reverse order (#3803, #3917)
2582
- wrap(Chart.prototype, 'renderSeries', function (proceed) {
2583
- var series,
2584
- i = this.series.length;
2585
- if (this.is3d()) {
2586
- while (i--) {
2587
- series = this.series[i];
2588
- series.translate();
2589
- series.render();
2590
- }
2591
- }
2592
- else {
2593
- proceed.call(this);
2594
- }
2595
- });
2596
- addEvent(Chart, 'afterDrawChartBox', function () {
2597
- if (this.is3d()) {
2598
- var chart = this,
2599
- renderer = chart.renderer,
2600
- options3d = this.options.chart.options3d,
2601
- frame = chart.get3dFrame(),
2602
- xm = this.plotLeft,
2603
- xp = this.plotLeft + this.plotWidth,
2604
- ym = this.plotTop,
2605
- yp = this.plotTop + this.plotHeight,
2606
- zm = 0,
2607
- zp = options3d.depth,
2608
- xmm = xm - (frame.left.visible ? frame.left.size : 0),
2609
- xpp = xp + (frame.right.visible ? frame.right.size : 0),
2610
- ymm = ym - (frame.top.visible ? frame.top.size : 0),
2611
- ypp = yp + (frame.bottom.visible ? frame.bottom.size : 0),
2612
- zmm = zm - (frame.front.visible ? frame.front.size : 0),
2613
- zpp = zp + (frame.back.visible ? frame.back.size : 0),
2614
- verb = chart.hasRendered ? 'animate' : 'attr';
2615
- this.frame3d = frame;
2616
- if (!this.frameShapes) {
2617
- this.frameShapes = {
2618
- bottom: renderer.polyhedron().add(),
2619
- top: renderer.polyhedron().add(),
2620
- left: renderer.polyhedron().add(),
2621
- right: renderer.polyhedron().add(),
2622
- back: renderer.polyhedron().add(),
2623
- front: renderer.polyhedron().add()
2624
- };
2625
- }
2626
- this.frameShapes.bottom[verb]({
2627
- 'class': 'highcharts-3d-frame highcharts-3d-frame-bottom',
2628
- zIndex: frame.bottom.frontFacing ? -1000 : 1000,
2629
- faces: [{
2630
- fill: H.color(frame.bottom.color).brighten(0.1).get(),
2631
- vertexes: [{
2632
- x: xmm,
2633
- y: ypp,
2634
- z: zmm
2635
- }, {
2636
- x: xpp,
2637
- y: ypp,
2638
- z: zmm
2639
- }, {
2640
- x: xpp,
2641
- y: ypp,
2642
- z: zpp
2643
- }, {
2644
- x: xmm,
2645
- y: ypp,
2646
- z: zpp
2647
- }],
2648
- enabled: frame.bottom.visible
2649
- },
2650
- {
2651
- fill: H.color(frame.bottom.color).brighten(0.1).get(),
2652
- vertexes: [{
2653
- x: xm,
2654
- y: yp,
2655
- z: zp
2656
- }, {
2657
- x: xp,
2658
- y: yp,
2659
- z: zp
2660
- }, {
2661
- x: xp,
2662
- y: yp,
2663
- z: zm
2664
- }, {
2665
- x: xm,
2666
- y: yp,
2667
- z: zm
2668
- }],
2669
- enabled: frame.bottom.visible
2670
- },
2671
- {
2672
- fill: H.color(frame.bottom.color).brighten(-0.1).get(),
2673
- vertexes: [{
2674
- x: xmm,
2675
- y: ypp,
2676
- z: zmm
2677
- }, {
2678
- x: xmm,
2679
- y: ypp,
2680
- z: zpp
2681
- }, {
2682
- x: xm,
2683
- y: yp,
2684
- z: zp
2685
- }, {
2686
- x: xm,
2687
- y: yp,
2688
- z: zm
2689
- }],
2690
- enabled: frame.bottom.visible && !frame.left.visible
2691
- },
2692
- {
2693
- fill: H.color(frame.bottom.color).brighten(-0.1).get(),
2694
- vertexes: [{
2695
- x: xpp,
2696
- y: ypp,
2697
- z: zpp
2698
- }, {
2699
- x: xpp,
2700
- y: ypp,
2701
- z: zmm
2702
- }, {
2703
- x: xp,
2704
- y: yp,
2705
- z: zm
2706
- }, {
2707
- x: xp,
2708
- y: yp,
2709
- z: zp
2710
- }],
2711
- enabled: frame.bottom.visible && !frame.right.visible
2712
- },
2713
- {
2714
- fill: H.color(frame.bottom.color).get(),
2715
- vertexes: [{
2716
- x: xpp,
2717
- y: ypp,
2718
- z: zmm
2719
- }, {
2720
- x: xmm,
2721
- y: ypp,
2722
- z: zmm
2723
- }, {
2724
- x: xm,
2725
- y: yp,
2726
- z: zm
2727
- }, {
2728
- x: xp,
2729
- y: yp,
2730
- z: zm
2731
- }],
2732
- enabled: frame.bottom.visible && !frame.front.visible
2733
- },
2734
- {
2735
- fill: H.color(frame.bottom.color).get(),
2736
- vertexes: [{
2737
- x: xmm,
2738
- y: ypp,
2739
- z: zpp
2740
- }, {
2741
- x: xpp,
2742
- y: ypp,
2743
- z: zpp
2744
- }, {
2745
- x: xp,
2746
- y: yp,
2747
- z: zp
2748
- }, {
2749
- x: xm,
2750
- y: yp,
2751
- z: zp
2752
- }],
2753
- enabled: frame.bottom.visible && !frame.back.visible
2754
- }]
2755
- });
2756
- this.frameShapes.top[verb]({
2757
- 'class': 'highcharts-3d-frame highcharts-3d-frame-top',
2758
- zIndex: frame.top.frontFacing ? -1000 : 1000,
2759
- faces: [{
2760
- fill: H.color(frame.top.color).brighten(0.1).get(),
2761
- vertexes: [{
2762
- x: xmm,
2763
- y: ymm,
2764
- z: zpp
2765
- }, {
2766
- x: xpp,
2767
- y: ymm,
2768
- z: zpp
2769
- }, {
2770
- x: xpp,
2771
- y: ymm,
2772
- z: zmm
2773
- }, {
2774
- x: xmm,
2775
- y: ymm,
2776
- z: zmm
2777
- }],
2778
- enabled: frame.top.visible
2779
- },
2780
- {
2781
- fill: H.color(frame.top.color).brighten(0.1).get(),
2782
- vertexes: [{
2783
- x: xm,
2784
- y: ym,
2785
- z: zm
2786
- }, {
2787
- x: xp,
2788
- y: ym,
2789
- z: zm
2790
- }, {
2791
- x: xp,
2792
- y: ym,
2793
- z: zp
2794
- }, {
2795
- x: xm,
2796
- y: ym,
2797
- z: zp
2798
- }],
2799
- enabled: frame.top.visible
2800
- },
2801
- {
2802
- fill: H.color(frame.top.color).brighten(-0.1).get(),
2803
- vertexes: [{
2804
- x: xmm,
2805
- y: ymm,
2806
- z: zpp
2807
- }, {
2808
- x: xmm,
2809
- y: ymm,
2810
- z: zmm
2811
- }, {
2812
- x: xm,
2813
- y: ym,
2814
- z: zm
2815
- }, {
2816
- x: xm,
2817
- y: ym,
2818
- z: zp
2819
- }],
2820
- enabled: frame.top.visible && !frame.left.visible
2821
- },
2822
- {
2823
- fill: H.color(frame.top.color).brighten(-0.1).get(),
2824
- vertexes: [{
2825
- x: xpp,
2826
- y: ymm,
2827
- z: zmm
2828
- }, {
2829
- x: xpp,
2830
- y: ymm,
2831
- z: zpp
2832
- }, {
2833
- x: xp,
2834
- y: ym,
2835
- z: zp
2836
- }, {
2837
- x: xp,
2838
- y: ym,
2839
- z: zm
2840
- }],
2841
- enabled: frame.top.visible && !frame.right.visible
2842
- },
2843
- {
2844
- fill: H.color(frame.top.color).get(),
2845
- vertexes: [{
2846
- x: xmm,
2847
- y: ymm,
2848
- z: zmm
2849
- }, {
2850
- x: xpp,
2851
- y: ymm,
2852
- z: zmm
2853
- }, {
2854
- x: xp,
2855
- y: ym,
2856
- z: zm
2857
- }, {
2858
- x: xm,
2859
- y: ym,
2860
- z: zm
2861
- }],
2862
- enabled: frame.top.visible && !frame.front.visible
2863
- },
2864
- {
2865
- fill: H.color(frame.top.color).get(),
2866
- vertexes: [{
2867
- x: xpp,
2868
- y: ymm,
2869
- z: zpp
2870
- }, {
2871
- x: xmm,
2872
- y: ymm,
2873
- z: zpp
2874
- }, {
2875
- x: xm,
2876
- y: ym,
2877
- z: zp
2878
- }, {
2879
- x: xp,
2880
- y: ym,
2881
- z: zp
2882
- }],
2883
- enabled: frame.top.visible && !frame.back.visible
2884
- }]
2885
- });
2886
- this.frameShapes.left[verb]({
2887
- 'class': 'highcharts-3d-frame highcharts-3d-frame-left',
2888
- zIndex: frame.left.frontFacing ? -1000 : 1000,
2889
- faces: [{
2890
- fill: H.color(frame.left.color).brighten(0.1).get(),
2891
- vertexes: [{
2892
- x: xmm,
2893
- y: ypp,
2894
- z: zmm
2895
- }, {
2896
- x: xm,
2897
- y: yp,
2898
- z: zm
2899
- }, {
2900
- x: xm,
2901
- y: yp,
2902
- z: zp
2903
- }, {
2904
- x: xmm,
2905
- y: ypp,
2906
- z: zpp
2907
- }],
2908
- enabled: frame.left.visible && !frame.bottom.visible
2909
- },
2910
- {
2911
- fill: H.color(frame.left.color).brighten(0.1).get(),
2912
- vertexes: [{
2913
- x: xmm,
2914
- y: ymm,
2915
- z: zpp
2916
- }, {
2917
- x: xm,
2918
- y: ym,
2919
- z: zp
2920
- }, {
2921
- x: xm,
2922
- y: ym,
2923
- z: zm
2924
- }, {
2925
- x: xmm,
2926
- y: ymm,
2927
- z: zmm
2928
- }],
2929
- enabled: frame.left.visible && !frame.top.visible
2930
- },
2931
- {
2932
- fill: H.color(frame.left.color).brighten(-0.1).get(),
2933
- vertexes: [{
2934
- x: xmm,
2935
- y: ypp,
2936
- z: zpp
2937
- }, {
2938
- x: xmm,
2939
- y: ymm,
2940
- z: zpp
2941
- }, {
2942
- x: xmm,
2943
- y: ymm,
2944
- z: zmm
2945
- }, {
2946
- x: xmm,
2947
- y: ypp,
2948
- z: zmm
2949
- }],
2950
- enabled: frame.left.visible
2951
- },
2952
- {
2953
- fill: H.color(frame.left.color).brighten(-0.1).get(),
2954
- vertexes: [{
2955
- x: xm,
2956
- y: ym,
2957
- z: zp
2958
- }, {
2959
- x: xm,
2960
- y: yp,
2961
- z: zp
2962
- }, {
2963
- x: xm,
2964
- y: yp,
2965
- z: zm
2966
- }, {
2967
- x: xm,
2968
- y: ym,
2969
- z: zm
2970
- }],
2971
- enabled: frame.left.visible
2972
- },
2973
- {
2974
- fill: H.color(frame.left.color).get(),
2975
- vertexes: [{
2976
- x: xmm,
2977
- y: ypp,
2978
- z: zmm
2979
- }, {
2980
- x: xmm,
2981
- y: ymm,
2982
- z: zmm
2983
- }, {
2984
- x: xm,
2985
- y: ym,
2986
- z: zm
2987
- }, {
2988
- x: xm,
2989
- y: yp,
2990
- z: zm
2991
- }],
2992
- enabled: frame.left.visible && !frame.front.visible
2993
- },
2994
- {
2995
- fill: H.color(frame.left.color).get(),
2996
- vertexes: [{
2997
- x: xmm,
2998
- y: ymm,
2999
- z: zpp
3000
- }, {
3001
- x: xmm,
3002
- y: ypp,
3003
- z: zpp
3004
- }, {
3005
- x: xm,
3006
- y: yp,
3007
- z: zp
3008
- }, {
3009
- x: xm,
3010
- y: ym,
3011
- z: zp
3012
- }],
3013
- enabled: frame.left.visible && !frame.back.visible
3014
- }]
3015
- });
3016
- this.frameShapes.right[verb]({
3017
- 'class': 'highcharts-3d-frame highcharts-3d-frame-right',
3018
- zIndex: frame.right.frontFacing ? -1000 : 1000,
3019
- faces: [{
3020
- fill: H.color(frame.right.color).brighten(0.1).get(),
3021
- vertexes: [{
3022
- x: xpp,
3023
- y: ypp,
3024
- z: zpp
3025
- }, {
3026
- x: xp,
3027
- y: yp,
3028
- z: zp
3029
- }, {
3030
- x: xp,
3031
- y: yp,
3032
- z: zm
3033
- }, {
3034
- x: xpp,
3035
- y: ypp,
3036
- z: zmm
3037
- }],
3038
- enabled: frame.right.visible && !frame.bottom.visible
3039
- },
3040
- {
3041
- fill: H.color(frame.right.color).brighten(0.1).get(),
3042
- vertexes: [{
3043
- x: xpp,
3044
- y: ymm,
3045
- z: zmm
3046
- }, {
3047
- x: xp,
3048
- y: ym,
3049
- z: zm
3050
- }, {
3051
- x: xp,
3052
- y: ym,
3053
- z: zp
3054
- }, {
3055
- x: xpp,
3056
- y: ymm,
3057
- z: zpp
3058
- }],
3059
- enabled: frame.right.visible && !frame.top.visible
3060
- },
3061
- {
3062
- fill: H.color(frame.right.color).brighten(-0.1).get(),
3063
- vertexes: [{
3064
- x: xp,
3065
- y: ym,
3066
- z: zm
3067
- }, {
3068
- x: xp,
3069
- y: yp,
3070
- z: zm
3071
- }, {
3072
- x: xp,
3073
- y: yp,
3074
- z: zp
3075
- }, {
3076
- x: xp,
3077
- y: ym,
3078
- z: zp
3079
- }],
3080
- enabled: frame.right.visible
3081
- },
3082
- {
3083
- fill: H.color(frame.right.color).brighten(-0.1).get(),
3084
- vertexes: [{
3085
- x: xpp,
3086
- y: ypp,
3087
- z: zmm
3088
- }, {
3089
- x: xpp,
3090
- y: ymm,
3091
- z: zmm
3092
- }, {
3093
- x: xpp,
3094
- y: ymm,
3095
- z: zpp
3096
- }, {
3097
- x: xpp,
3098
- y: ypp,
3099
- z: zpp
3100
- }],
3101
- enabled: frame.right.visible
3102
- },
3103
- {
3104
- fill: H.color(frame.right.color).get(),
3105
- vertexes: [{
3106
- x: xpp,
3107
- y: ymm,
3108
- z: zmm
3109
- }, {
3110
- x: xpp,
3111
- y: ypp,
3112
- z: zmm
3113
- }, {
3114
- x: xp,
3115
- y: yp,
3116
- z: zm
3117
- }, {
3118
- x: xp,
3119
- y: ym,
3120
- z: zm
3121
- }],
3122
- enabled: frame.right.visible && !frame.front.visible
3123
- },
3124
- {
3125
- fill: H.color(frame.right.color).get(),
3126
- vertexes: [{
3127
- x: xpp,
3128
- y: ypp,
3129
- z: zpp
3130
- }, {
3131
- x: xpp,
3132
- y: ymm,
3133
- z: zpp
3134
- }, {
3135
- x: xp,
3136
- y: ym,
3137
- z: zp
3138
- }, {
3139
- x: xp,
3140
- y: yp,
3141
- z: zp
3142
- }],
3143
- enabled: frame.right.visible && !frame.back.visible
3144
- }]
3145
- });
3146
- this.frameShapes.back[verb]({
3147
- 'class': 'highcharts-3d-frame highcharts-3d-frame-back',
3148
- zIndex: frame.back.frontFacing ? -1000 : 1000,
3149
- faces: [{
3150
- fill: H.color(frame.back.color).brighten(0.1).get(),
3151
- vertexes: [{
3152
- x: xpp,
3153
- y: ypp,
3154
- z: zpp
3155
- }, {
3156
- x: xmm,
3157
- y: ypp,
3158
- z: zpp
3159
- }, {
3160
- x: xm,
3161
- y: yp,
3162
- z: zp
3163
- }, {
3164
- x: xp,
3165
- y: yp,
3166
- z: zp
3167
- }],
3168
- enabled: frame.back.visible && !frame.bottom.visible
3169
- },
3170
- {
3171
- fill: H.color(frame.back.color).brighten(0.1).get(),
3172
- vertexes: [{
3173
- x: xmm,
3174
- y: ymm,
3175
- z: zpp
3176
- }, {
3177
- x: xpp,
3178
- y: ymm,
3179
- z: zpp
3180
- }, {
3181
- x: xp,
3182
- y: ym,
3183
- z: zp
3184
- }, {
3185
- x: xm,
3186
- y: ym,
3187
- z: zp
3188
- }],
3189
- enabled: frame.back.visible && !frame.top.visible
3190
- },
3191
- {
3192
- fill: H.color(frame.back.color).brighten(-0.1).get(),
3193
- vertexes: [{
3194
- x: xmm,
3195
- y: ypp,
3196
- z: zpp
3197
- }, {
3198
- x: xmm,
3199
- y: ymm,
3200
- z: zpp
3201
- }, {
3202
- x: xm,
3203
- y: ym,
3204
- z: zp
3205
- }, {
3206
- x: xm,
3207
- y: yp,
3208
- z: zp
3209
- }],
3210
- enabled: frame.back.visible && !frame.left.visible
3211
- },
3212
- {
3213
- fill: H.color(frame.back.color).brighten(-0.1).get(),
3214
- vertexes: [{
3215
- x: xpp,
3216
- y: ymm,
3217
- z: zpp
3218
- }, {
3219
- x: xpp,
3220
- y: ypp,
3221
- z: zpp
3222
- }, {
3223
- x: xp,
3224
- y: yp,
3225
- z: zp
3226
- }, {
3227
- x: xp,
3228
- y: ym,
3229
- z: zp
3230
- }],
3231
- enabled: frame.back.visible && !frame.right.visible
3232
- },
3233
- {
3234
- fill: H.color(frame.back.color).get(),
3235
- vertexes: [{
3236
- x: xm,
3237
- y: ym,
3238
- z: zp
3239
- }, {
3240
- x: xp,
3241
- y: ym,
3242
- z: zp
3243
- }, {
3244
- x: xp,
3245
- y: yp,
3246
- z: zp
3247
- }, {
3248
- x: xm,
3249
- y: yp,
3250
- z: zp
3251
- }],
3252
- enabled: frame.back.visible
3253
- },
3254
- {
3255
- fill: H.color(frame.back.color).get(),
3256
- vertexes: [{
3257
- x: xmm,
3258
- y: ypp,
3259
- z: zpp
3260
- }, {
3261
- x: xpp,
3262
- y: ypp,
3263
- z: zpp
3264
- }, {
3265
- x: xpp,
3266
- y: ymm,
3267
- z: zpp
3268
- }, {
3269
- x: xmm,
3270
- y: ymm,
3271
- z: zpp
3272
- }],
3273
- enabled: frame.back.visible
3274
- }]
3275
- });
3276
- this.frameShapes.front[verb]({
3277
- 'class': 'highcharts-3d-frame highcharts-3d-frame-front',
3278
- zIndex: frame.front.frontFacing ? -1000 : 1000,
3279
- faces: [{
3280
- fill: H.color(frame.front.color).brighten(0.1).get(),
3281
- vertexes: [{
3282
- x: xmm,
3283
- y: ypp,
3284
- z: zmm
3285
- }, {
3286
- x: xpp,
3287
- y: ypp,
3288
- z: zmm
3289
- }, {
3290
- x: xp,
3291
- y: yp,
3292
- z: zm
3293
- }, {
3294
- x: xm,
3295
- y: yp,
3296
- z: zm
3297
- }],
3298
- enabled: frame.front.visible && !frame.bottom.visible
3299
- },
3300
- {
3301
- fill: H.color(frame.front.color).brighten(0.1).get(),
3302
- vertexes: [{
3303
- x: xpp,
3304
- y: ymm,
3305
- z: zmm
3306
- }, {
3307
- x: xmm,
3308
- y: ymm,
3309
- z: zmm
3310
- }, {
3311
- x: xm,
3312
- y: ym,
3313
- z: zm
3314
- }, {
3315
- x: xp,
3316
- y: ym,
3317
- z: zm
3318
- }],
3319
- enabled: frame.front.visible && !frame.top.visible
3320
- },
3321
- {
3322
- fill: H.color(frame.front.color).brighten(-0.1).get(),
3323
- vertexes: [{
3324
- x: xmm,
3325
- y: ymm,
3326
- z: zmm
3327
- }, {
3328
- x: xmm,
3329
- y: ypp,
3330
- z: zmm
3331
- }, {
3332
- x: xm,
3333
- y: yp,
3334
- z: zm
3335
- }, {
3336
- x: xm,
3337
- y: ym,
3338
- z: zm
3339
- }],
3340
- enabled: frame.front.visible && !frame.left.visible
3341
- },
3342
- {
3343
- fill: H.color(frame.front.color).brighten(-0.1).get(),
3344
- vertexes: [{
3345
- x: xpp,
3346
- y: ypp,
3347
- z: zmm
3348
- }, {
3349
- x: xpp,
3350
- y: ymm,
3351
- z: zmm
3352
- }, {
3353
- x: xp,
3354
- y: ym,
3355
- z: zm
3356
- }, {
3357
- x: xp,
3358
- y: yp,
3359
- z: zm
3360
- }],
3361
- enabled: frame.front.visible && !frame.right.visible
3362
- },
3363
- {
3364
- fill: H.color(frame.front.color).get(),
3365
- vertexes: [{
3366
- x: xp,
3367
- y: ym,
3368
- z: zm
3369
- }, {
3370
- x: xm,
3371
- y: ym,
3372
- z: zm
3373
- }, {
3374
- x: xm,
3375
- y: yp,
3376
- z: zm
3377
- }, {
3378
- x: xp,
3379
- y: yp,
3380
- z: zm
3381
- }],
3382
- enabled: frame.front.visible
3383
- },
3384
- {
3385
- fill: H.color(frame.front.color).get(),
3386
- vertexes: [{
3387
- x: xpp,
3388
- y: ypp,
3389
- z: zmm
3390
- }, {
3391
- x: xmm,
3392
- y: ypp,
3393
- z: zmm
3394
- }, {
3395
- x: xmm,
3396
- y: ymm,
3397
- z: zmm
3398
- }, {
3399
- x: xpp,
3400
- y: ymm,
3401
- z: zmm
3402
- }],
3403
- enabled: frame.front.visible
3404
- }]
3405
- });
3406
- }
3407
- });
3408
- Chart.prototype.retrieveStacks = function (stacking) {
3409
- var series = this.series,
3410
- stacks = {},
3411
- stackNumber,
3412
- i = 1;
3413
- this.series.forEach(function (s) {
3414
- stackNumber = pick(s.options.stack, (stacking ? 0 : series.length - 1 - s.index)); // #3841, #4532
3415
- if (!stacks[stackNumber]) {
3416
- stacks[stackNumber] = { series: [s], position: i };
3417
- i++;
3418
- }
3419
- else {
3420
- stacks[stackNumber].series.push(s);
3421
- }
3422
- });
3423
- stacks.totalStacks = i + 1;
3424
- return stacks;
3425
- };
3426
- Chart.prototype.get3dFrame = function () {
3427
- var chart = this,
3428
- options3d = chart.options.chart.options3d,
3429
- frameOptions = options3d.frame,
3430
- xm = chart.plotLeft,
3431
- xp = chart.plotLeft + chart.plotWidth,
3432
- ym = chart.plotTop,
3433
- yp = chart.plotTop + chart.plotHeight,
3434
- zm = 0,
3435
- zp = options3d.depth,
3436
- faceOrientation = function (vertexes) {
3437
- var area = H.shapeArea3d(vertexes,
3438
- chart);
3439
- // Give it 0.5 squared-pixel as a margin for rounding errors.
3440
- if (area > 0.5) {
3441
- return 1;
3442
- }
3443
- if (area < -0.5) {
3444
- return -1;
3445
- }
3446
- return 0;
3447
- }, bottomOrientation = faceOrientation([
3448
- { x: xm, y: yp, z: zp },
3449
- { x: xp, y: yp, z: zp },
3450
- { x: xp, y: yp, z: zm },
3451
- { x: xm, y: yp, z: zm }
3452
- ]), topOrientation = faceOrientation([
3453
- { x: xm, y: ym, z: zm },
3454
- { x: xp, y: ym, z: zm },
3455
- { x: xp, y: ym, z: zp },
3456
- { x: xm, y: ym, z: zp }
3457
- ]), leftOrientation = faceOrientation([
3458
- { x: xm, y: ym, z: zm },
3459
- { x: xm, y: ym, z: zp },
3460
- { x: xm, y: yp, z: zp },
3461
- { x: xm, y: yp, z: zm }
3462
- ]), rightOrientation = faceOrientation([
3463
- { x: xp, y: ym, z: zp },
3464
- { x: xp, y: ym, z: zm },
3465
- { x: xp, y: yp, z: zm },
3466
- { x: xp, y: yp, z: zp }
3467
- ]), frontOrientation = faceOrientation([
3468
- { x: xm, y: yp, z: zm },
3469
- { x: xp, y: yp, z: zm },
3470
- { x: xp, y: ym, z: zm },
3471
- { x: xm, y: ym, z: zm }
3472
- ]), backOrientation = faceOrientation([
3473
- { x: xm, y: ym, z: zp },
3474
- { x: xp, y: ym, z: zp },
3475
- { x: xp, y: yp, z: zp },
3476
- { x: xm, y: yp, z: zp }
3477
- ]), defaultShowBottom = false, defaultShowTop = false, defaultShowLeft = false, defaultShowRight = false, defaultShowFront = false, defaultShowBack = true;
3478
- // The 'default' criteria to visible faces of the frame is looking up every
3479
- // axis to decide whenever the left/right//top/bottom sides of the frame
3480
- // will be shown
3481
- []
3482
- .concat(chart.xAxis, chart.yAxis, chart.zAxis)
3483
- .forEach(function (axis) {
3484
- if (axis) {
3485
- if (axis.horiz) {
3486
- if (axis.opposite) {
3487
- defaultShowTop = true;
3488
- }
3489
- else {
3490
- defaultShowBottom = true;
3491
- }
3492
- }
3493
- else {
3494
- if (axis.opposite) {
3495
- defaultShowRight = true;
3496
- }
3497
- else {
3498
- defaultShowLeft = true;
3499
- }
3500
- }
3501
- }
3502
- });
3503
- var getFaceOptions = function (sources, faceOrientation, defaultVisible) {
3504
- var faceAttrs = ['size', 'color', 'visible'];
3505
- var options = {};
3506
- for (var i = 0; i < faceAttrs.length; i++) {
3507
- var attr = faceAttrs[i];
3508
- for (var j = 0; j < sources.length; j++) {
3509
- if (typeof sources[j] === 'object') {
3510
- var val = sources[j][attr];
3511
- if (typeof val !== 'undefined' && val !== null) {
3512
- options[attr] = val;
3513
- break;
3514
- }
3515
- }
3516
- }
3517
- }
3518
- var isVisible = defaultVisible;
3519
- if (options.visible === true || options.visible === false) {
3520
- isVisible = options.visible;
3521
- }
3522
- else if (options.visible === 'auto') {
3523
- isVisible = faceOrientation > 0;
3524
- }
3525
- return {
3526
- size: pick(options.size, 1),
3527
- color: pick(options.color, 'none'),
3528
- frontFacing: faceOrientation > 0,
3529
- visible: isVisible
3530
- };
3531
- };
3532
- // docs @TODO: Add all frame options (left, right, top, bottom, front, back)
3533
- // to apioptions JSDoc once the new system is up.
3534
- var ret = {
3535
- axes: {},
3536
- // FIXME: Previously, left/right, top/bottom and front/back pairs shared
3537
- // size and color.
3538
- // For compatibility and consistency sake, when one face have
3539
- // size/color/visibility set, the opposite face will default to the same
3540
- // values. Also, left/right used to be called 'side', so that's also
3541
- // added as a fallback
3542
- bottom: getFaceOptions([frameOptions.bottom, frameOptions.top, frameOptions], bottomOrientation, defaultShowBottom),
3543
- top: getFaceOptions([frameOptions.top, frameOptions.bottom, frameOptions], topOrientation, defaultShowTop),
3544
- left: getFaceOptions([
3545
- frameOptions.left,
3546
- frameOptions.right,
3547
- frameOptions.side,
3548
- frameOptions
3549
- ], leftOrientation, defaultShowLeft),
3550
- right: getFaceOptions([
3551
- frameOptions.right,
3552
- frameOptions.left,
3553
- frameOptions.side,
3554
- frameOptions
3555
- ], rightOrientation, defaultShowRight),
3556
- back: getFaceOptions([frameOptions.back, frameOptions.front, frameOptions], backOrientation, defaultShowBack),
3557
- front: getFaceOptions([frameOptions.front, frameOptions.back, frameOptions], frontOrientation, defaultShowFront)
3558
- };
3559
- // Decide the bast place to put axis title/labels based on the visible
3560
- // faces. Ideally, The labels can only be on the edge between a visible face
3561
- // and an invisble one. Also, the Y label should be one the left-most edge
3562
- // (right-most if opposite),
3563
- if (options3d.axisLabelPosition === 'auto') {
3564
- var isValidEdge = function (face1,
3565
- face2) {
3566
- return ((face1.visible !== face2.visible) ||
3567
- (face1.visible &&
3568
- face2.visible &&
3569
- (face1.frontFacing !== face2.frontFacing)));
3570
- };
3571
- var yEdges = [];
3572
- if (isValidEdge(ret.left, ret.front)) {
3573
- yEdges.push({
3574
- y: (ym + yp) / 2,
3575
- x: xm,
3576
- z: zm,
3577
- xDir: { x: 1, y: 0, z: 0 }
3578
- });
3579
- }
3580
- if (isValidEdge(ret.left, ret.back)) {
3581
- yEdges.push({
3582
- y: (ym + yp) / 2,
3583
- x: xm,
3584
- z: zp,
3585
- xDir: { x: 0, y: 0, z: -1 }
3080
+ this.frameShapes.top[verb]({
3081
+ 'class': 'highcharts-3d-frame highcharts-3d-frame-top',
3082
+ zIndex: frame.top.frontFacing ? -1000 : 1000,
3083
+ faces: [{
3084
+ fill: H.color(frame.top.color).brighten(0.1).get(),
3085
+ vertexes: [{
3086
+ x: xmm,
3087
+ y: ymm,
3088
+ z: zpp
3089
+ }, {
3090
+ x: xpp,
3091
+ y: ymm,
3092
+ z: zpp
3093
+ }, {
3094
+ x: xpp,
3095
+ y: ymm,
3096
+ z: zmm
3097
+ }, {
3098
+ x: xmm,
3099
+ y: ymm,
3100
+ z: zmm
3101
+ }],
3102
+ enabled: frame.top.visible
3103
+ },
3104
+ {
3105
+ fill: H.color(frame.top.color).brighten(0.1).get(),
3106
+ vertexes: [{
3107
+ x: xm,
3108
+ y: ym,
3109
+ z: zm
3110
+ }, {
3111
+ x: xp,
3112
+ y: ym,
3113
+ z: zm
3114
+ }, {
3115
+ x: xp,
3116
+ y: ym,
3117
+ z: zp
3118
+ }, {
3119
+ x: xm,
3120
+ y: ym,
3121
+ z: zp
3122
+ }],
3123
+ enabled: frame.top.visible
3124
+ },
3125
+ {
3126
+ fill: H.color(frame.top.color).brighten(-0.1).get(),
3127
+ vertexes: [{
3128
+ x: xmm,
3129
+ y: ymm,
3130
+ z: zpp
3131
+ }, {
3132
+ x: xmm,
3133
+ y: ymm,
3134
+ z: zmm
3135
+ }, {
3136
+ x: xm,
3137
+ y: ym,
3138
+ z: zm
3139
+ }, {
3140
+ x: xm,
3141
+ y: ym,
3142
+ z: zp
3143
+ }],
3144
+ enabled: frame.top.visible && !frame.left.visible
3145
+ },
3146
+ {
3147
+ fill: H.color(frame.top.color).brighten(-0.1).get(),
3148
+ vertexes: [{
3149
+ x: xpp,
3150
+ y: ymm,
3151
+ z: zmm
3152
+ }, {
3153
+ x: xpp,
3154
+ y: ymm,
3155
+ z: zpp
3156
+ }, {
3157
+ x: xp,
3158
+ y: ym,
3159
+ z: zp
3160
+ }, {
3161
+ x: xp,
3162
+ y: ym,
3163
+ z: zm
3164
+ }],
3165
+ enabled: frame.top.visible && !frame.right.visible
3166
+ },
3167
+ {
3168
+ fill: H.color(frame.top.color).get(),
3169
+ vertexes: [{
3170
+ x: xmm,
3171
+ y: ymm,
3172
+ z: zmm
3173
+ }, {
3174
+ x: xpp,
3175
+ y: ymm,
3176
+ z: zmm
3177
+ }, {
3178
+ x: xp,
3179
+ y: ym,
3180
+ z: zm
3181
+ }, {
3182
+ x: xm,
3183
+ y: ym,
3184
+ z: zm
3185
+ }],
3186
+ enabled: frame.top.visible && !frame.front.visible
3187
+ },
3188
+ {
3189
+ fill: H.color(frame.top.color).get(),
3190
+ vertexes: [{
3191
+ x: xpp,
3192
+ y: ymm,
3193
+ z: zpp
3194
+ }, {
3195
+ x: xmm,
3196
+ y: ymm,
3197
+ z: zpp
3198
+ }, {
3199
+ x: xm,
3200
+ y: ym,
3201
+ z: zp
3202
+ }, {
3203
+ x: xp,
3204
+ y: ym,
3205
+ z: zp
3206
+ }],
3207
+ enabled: frame.top.visible && !frame.back.visible
3208
+ }]
3586
3209
  });
3587
- }
3588
- if (isValidEdge(ret.right, ret.front)) {
3589
- yEdges.push({
3590
- y: (ym + yp) / 2,
3591
- x: xp,
3592
- z: zm,
3593
- xDir: { x: 0, y: 0, z: 1 }
3210
+ this.frameShapes.left[verb]({
3211
+ 'class': 'highcharts-3d-frame highcharts-3d-frame-left',
3212
+ zIndex: frame.left.frontFacing ? -1000 : 1000,
3213
+ faces: [{
3214
+ fill: H.color(frame.left.color).brighten(0.1).get(),
3215
+ vertexes: [{
3216
+ x: xmm,
3217
+ y: ypp,
3218
+ z: zmm
3219
+ }, {
3220
+ x: xm,
3221
+ y: yp,
3222
+ z: zm
3223
+ }, {
3224
+ x: xm,
3225
+ y: yp,
3226
+ z: zp
3227
+ }, {
3228
+ x: xmm,
3229
+ y: ypp,
3230
+ z: zpp
3231
+ }],
3232
+ enabled: frame.left.visible && !frame.bottom.visible
3233
+ },
3234
+ {
3235
+ fill: H.color(frame.left.color).brighten(0.1).get(),
3236
+ vertexes: [{
3237
+ x: xmm,
3238
+ y: ymm,
3239
+ z: zpp
3240
+ }, {
3241
+ x: xm,
3242
+ y: ym,
3243
+ z: zp
3244
+ }, {
3245
+ x: xm,
3246
+ y: ym,
3247
+ z: zm
3248
+ }, {
3249
+ x: xmm,
3250
+ y: ymm,
3251
+ z: zmm
3252
+ }],
3253
+ enabled: frame.left.visible && !frame.top.visible
3254
+ },
3255
+ {
3256
+ fill: H.color(frame.left.color).brighten(-0.1).get(),
3257
+ vertexes: [{
3258
+ x: xmm,
3259
+ y: ypp,
3260
+ z: zpp
3261
+ }, {
3262
+ x: xmm,
3263
+ y: ymm,
3264
+ z: zpp
3265
+ }, {
3266
+ x: xmm,
3267
+ y: ymm,
3268
+ z: zmm
3269
+ }, {
3270
+ x: xmm,
3271
+ y: ypp,
3272
+ z: zmm
3273
+ }],
3274
+ enabled: frame.left.visible
3275
+ },
3276
+ {
3277
+ fill: H.color(frame.left.color).brighten(-0.1).get(),
3278
+ vertexes: [{
3279
+ x: xm,
3280
+ y: ym,
3281
+ z: zp
3282
+ }, {
3283
+ x: xm,
3284
+ y: yp,
3285
+ z: zp
3286
+ }, {
3287
+ x: xm,
3288
+ y: yp,
3289
+ z: zm
3290
+ }, {
3291
+ x: xm,
3292
+ y: ym,
3293
+ z: zm
3294
+ }],
3295
+ enabled: frame.left.visible
3296
+ },
3297
+ {
3298
+ fill: H.color(frame.left.color).get(),
3299
+ vertexes: [{
3300
+ x: xmm,
3301
+ y: ypp,
3302
+ z: zmm
3303
+ }, {
3304
+ x: xmm,
3305
+ y: ymm,
3306
+ z: zmm
3307
+ }, {
3308
+ x: xm,
3309
+ y: ym,
3310
+ z: zm
3311
+ }, {
3312
+ x: xm,
3313
+ y: yp,
3314
+ z: zm
3315
+ }],
3316
+ enabled: frame.left.visible && !frame.front.visible
3317
+ },
3318
+ {
3319
+ fill: H.color(frame.left.color).get(),
3320
+ vertexes: [{
3321
+ x: xmm,
3322
+ y: ymm,
3323
+ z: zpp
3324
+ }, {
3325
+ x: xmm,
3326
+ y: ypp,
3327
+ z: zpp
3328
+ }, {
3329
+ x: xm,
3330
+ y: yp,
3331
+ z: zp
3332
+ }, {
3333
+ x: xm,
3334
+ y: ym,
3335
+ z: zp
3336
+ }],
3337
+ enabled: frame.left.visible && !frame.back.visible
3338
+ }]
3594
3339
  });
3595
- }
3596
- if (isValidEdge(ret.right, ret.back)) {
3597
- yEdges.push({
3598
- y: (ym + yp) / 2,
3599
- x: xp,
3600
- z: zp,
3601
- xDir: { x: -1, y: 0, z: 0 }
3340
+ this.frameShapes.right[verb]({
3341
+ 'class': 'highcharts-3d-frame highcharts-3d-frame-right',
3342
+ zIndex: frame.right.frontFacing ? -1000 : 1000,
3343
+ faces: [{
3344
+ fill: H.color(frame.right.color).brighten(0.1).get(),
3345
+ vertexes: [{
3346
+ x: xpp,
3347
+ y: ypp,
3348
+ z: zpp
3349
+ }, {
3350
+ x: xp,
3351
+ y: yp,
3352
+ z: zp
3353
+ }, {
3354
+ x: xp,
3355
+ y: yp,
3356
+ z: zm
3357
+ }, {
3358
+ x: xpp,
3359
+ y: ypp,
3360
+ z: zmm
3361
+ }],
3362
+ enabled: frame.right.visible && !frame.bottom.visible
3363
+ },
3364
+ {
3365
+ fill: H.color(frame.right.color).brighten(0.1).get(),
3366
+ vertexes: [{
3367
+ x: xpp,
3368
+ y: ymm,
3369
+ z: zmm
3370
+ }, {
3371
+ x: xp,
3372
+ y: ym,
3373
+ z: zm
3374
+ }, {
3375
+ x: xp,
3376
+ y: ym,
3377
+ z: zp
3378
+ }, {
3379
+ x: xpp,
3380
+ y: ymm,
3381
+ z: zpp
3382
+ }],
3383
+ enabled: frame.right.visible && !frame.top.visible
3384
+ },
3385
+ {
3386
+ fill: H.color(frame.right.color).brighten(-0.1).get(),
3387
+ vertexes: [{
3388
+ x: xp,
3389
+ y: ym,
3390
+ z: zm
3391
+ }, {
3392
+ x: xp,
3393
+ y: yp,
3394
+ z: zm
3395
+ }, {
3396
+ x: xp,
3397
+ y: yp,
3398
+ z: zp
3399
+ }, {
3400
+ x: xp,
3401
+ y: ym,
3402
+ z: zp
3403
+ }],
3404
+ enabled: frame.right.visible
3405
+ },
3406
+ {
3407
+ fill: H.color(frame.right.color).brighten(-0.1).get(),
3408
+ vertexes: [{
3409
+ x: xpp,
3410
+ y: ypp,
3411
+ z: zmm
3412
+ }, {
3413
+ x: xpp,
3414
+ y: ymm,
3415
+ z: zmm
3416
+ }, {
3417
+ x: xpp,
3418
+ y: ymm,
3419
+ z: zpp
3420
+ }, {
3421
+ x: xpp,
3422
+ y: ypp,
3423
+ z: zpp
3424
+ }],
3425
+ enabled: frame.right.visible
3426
+ },
3427
+ {
3428
+ fill: H.color(frame.right.color).get(),
3429
+ vertexes: [{
3430
+ x: xpp,
3431
+ y: ymm,
3432
+ z: zmm
3433
+ }, {
3434
+ x: xpp,
3435
+ y: ypp,
3436
+ z: zmm
3437
+ }, {
3438
+ x: xp,
3439
+ y: yp,
3440
+ z: zm
3441
+ }, {
3442
+ x: xp,
3443
+ y: ym,
3444
+ z: zm
3445
+ }],
3446
+ enabled: frame.right.visible && !frame.front.visible
3447
+ },
3448
+ {
3449
+ fill: H.color(frame.right.color).get(),
3450
+ vertexes: [{
3451
+ x: xpp,
3452
+ y: ypp,
3453
+ z: zpp
3454
+ }, {
3455
+ x: xpp,
3456
+ y: ymm,
3457
+ z: zpp
3458
+ }, {
3459
+ x: xp,
3460
+ y: ym,
3461
+ z: zp
3462
+ }, {
3463
+ x: xp,
3464
+ y: yp,
3465
+ z: zp
3466
+ }],
3467
+ enabled: frame.right.visible && !frame.back.visible
3468
+ }]
3602
3469
  });
3603
- }
3604
- var xBottomEdges = [];
3605
- if (isValidEdge(ret.bottom, ret.front)) {
3606
- xBottomEdges.push({
3607
- x: (xm + xp) / 2,
3608
- y: yp,
3609
- z: zm,
3610
- xDir: { x: 1, y: 0, z: 0 }
3470
+ this.frameShapes.back[verb]({
3471
+ 'class': 'highcharts-3d-frame highcharts-3d-frame-back',
3472
+ zIndex: frame.back.frontFacing ? -1000 : 1000,
3473
+ faces: [{
3474
+ fill: H.color(frame.back.color).brighten(0.1).get(),
3475
+ vertexes: [{
3476
+ x: xpp,
3477
+ y: ypp,
3478
+ z: zpp
3479
+ }, {
3480
+ x: xmm,
3481
+ y: ypp,
3482
+ z: zpp
3483
+ }, {
3484
+ x: xm,
3485
+ y: yp,
3486
+ z: zp
3487
+ }, {
3488
+ x: xp,
3489
+ y: yp,
3490
+ z: zp
3491
+ }],
3492
+ enabled: frame.back.visible && !frame.bottom.visible
3493
+ },
3494
+ {
3495
+ fill: H.color(frame.back.color).brighten(0.1).get(),
3496
+ vertexes: [{
3497
+ x: xmm,
3498
+ y: ymm,
3499
+ z: zpp
3500
+ }, {
3501
+ x: xpp,
3502
+ y: ymm,
3503
+ z: zpp
3504
+ }, {
3505
+ x: xp,
3506
+ y: ym,
3507
+ z: zp
3508
+ }, {
3509
+ x: xm,
3510
+ y: ym,
3511
+ z: zp
3512
+ }],
3513
+ enabled: frame.back.visible && !frame.top.visible
3514
+ },
3515
+ {
3516
+ fill: H.color(frame.back.color).brighten(-0.1).get(),
3517
+ vertexes: [{
3518
+ x: xmm,
3519
+ y: ypp,
3520
+ z: zpp
3521
+ }, {
3522
+ x: xmm,
3523
+ y: ymm,
3524
+ z: zpp
3525
+ }, {
3526
+ x: xm,
3527
+ y: ym,
3528
+ z: zp
3529
+ }, {
3530
+ x: xm,
3531
+ y: yp,
3532
+ z: zp
3533
+ }],
3534
+ enabled: frame.back.visible && !frame.left.visible
3535
+ },
3536
+ {
3537
+ fill: H.color(frame.back.color).brighten(-0.1).get(),
3538
+ vertexes: [{
3539
+ x: xpp,
3540
+ y: ymm,
3541
+ z: zpp
3542
+ }, {
3543
+ x: xpp,
3544
+ y: ypp,
3545
+ z: zpp
3546
+ }, {
3547
+ x: xp,
3548
+ y: yp,
3549
+ z: zp
3550
+ }, {
3551
+ x: xp,
3552
+ y: ym,
3553
+ z: zp
3554
+ }],
3555
+ enabled: frame.back.visible && !frame.right.visible
3556
+ },
3557
+ {
3558
+ fill: H.color(frame.back.color).get(),
3559
+ vertexes: [{
3560
+ x: xm,
3561
+ y: ym,
3562
+ z: zp
3563
+ }, {
3564
+ x: xp,
3565
+ y: ym,
3566
+ z: zp
3567
+ }, {
3568
+ x: xp,
3569
+ y: yp,
3570
+ z: zp
3571
+ }, {
3572
+ x: xm,
3573
+ y: yp,
3574
+ z: zp
3575
+ }],
3576
+ enabled: frame.back.visible
3577
+ },
3578
+ {
3579
+ fill: H.color(frame.back.color).get(),
3580
+ vertexes: [{
3581
+ x: xmm,
3582
+ y: ypp,
3583
+ z: zpp
3584
+ }, {
3585
+ x: xpp,
3586
+ y: ypp,
3587
+ z: zpp
3588
+ }, {
3589
+ x: xpp,
3590
+ y: ymm,
3591
+ z: zpp
3592
+ }, {
3593
+ x: xmm,
3594
+ y: ymm,
3595
+ z: zpp
3596
+ }],
3597
+ enabled: frame.back.visible
3598
+ }]
3611
3599
  });
3612
- }
3613
- if (isValidEdge(ret.bottom, ret.back)) {
3614
- xBottomEdges.push({
3615
- x: (xm + xp) / 2,
3616
- y: yp,
3617
- z: zp,
3618
- xDir: { x: -1, y: 0, z: 0 }
3600
+ this.frameShapes.front[verb]({
3601
+ 'class': 'highcharts-3d-frame highcharts-3d-frame-front',
3602
+ zIndex: frame.front.frontFacing ? -1000 : 1000,
3603
+ faces: [{
3604
+ fill: H.color(frame.front.color).brighten(0.1).get(),
3605
+ vertexes: [{
3606
+ x: xmm,
3607
+ y: ypp,
3608
+ z: zmm
3609
+ }, {
3610
+ x: xpp,
3611
+ y: ypp,
3612
+ z: zmm
3613
+ }, {
3614
+ x: xp,
3615
+ y: yp,
3616
+ z: zm
3617
+ }, {
3618
+ x: xm,
3619
+ y: yp,
3620
+ z: zm
3621
+ }],
3622
+ enabled: frame.front.visible && !frame.bottom.visible
3623
+ },
3624
+ {
3625
+ fill: H.color(frame.front.color).brighten(0.1).get(),
3626
+ vertexes: [{
3627
+ x: xpp,
3628
+ y: ymm,
3629
+ z: zmm
3630
+ }, {
3631
+ x: xmm,
3632
+ y: ymm,
3633
+ z: zmm
3634
+ }, {
3635
+ x: xm,
3636
+ y: ym,
3637
+ z: zm
3638
+ }, {
3639
+ x: xp,
3640
+ y: ym,
3641
+ z: zm
3642
+ }],
3643
+ enabled: frame.front.visible && !frame.top.visible
3644
+ },
3645
+ {
3646
+ fill: H.color(frame.front.color).brighten(-0.1).get(),
3647
+ vertexes: [{
3648
+ x: xmm,
3649
+ y: ymm,
3650
+ z: zmm
3651
+ }, {
3652
+ x: xmm,
3653
+ y: ypp,
3654
+ z: zmm
3655
+ }, {
3656
+ x: xm,
3657
+ y: yp,
3658
+ z: zm
3659
+ }, {
3660
+ x: xm,
3661
+ y: ym,
3662
+ z: zm
3663
+ }],
3664
+ enabled: frame.front.visible && !frame.left.visible
3665
+ },
3666
+ {
3667
+ fill: H.color(frame.front.color).brighten(-0.1).get(),
3668
+ vertexes: [{
3669
+ x: xpp,
3670
+ y: ypp,
3671
+ z: zmm
3672
+ }, {
3673
+ x: xpp,
3674
+ y: ymm,
3675
+ z: zmm
3676
+ }, {
3677
+ x: xp,
3678
+ y: ym,
3679
+ z: zm
3680
+ }, {
3681
+ x: xp,
3682
+ y: yp,
3683
+ z: zm
3684
+ }],
3685
+ enabled: frame.front.visible && !frame.right.visible
3686
+ },
3687
+ {
3688
+ fill: H.color(frame.front.color).get(),
3689
+ vertexes: [{
3690
+ x: xp,
3691
+ y: ym,
3692
+ z: zm
3693
+ }, {
3694
+ x: xm,
3695
+ y: ym,
3696
+ z: zm
3697
+ }, {
3698
+ x: xm,
3699
+ y: yp,
3700
+ z: zm
3701
+ }, {
3702
+ x: xp,
3703
+ y: yp,
3704
+ z: zm
3705
+ }],
3706
+ enabled: frame.front.visible
3707
+ },
3708
+ {
3709
+ fill: H.color(frame.front.color).get(),
3710
+ vertexes: [{
3711
+ x: xpp,
3712
+ y: ypp,
3713
+ z: zmm
3714
+ }, {
3715
+ x: xmm,
3716
+ y: ypp,
3717
+ z: zmm
3718
+ }, {
3719
+ x: xmm,
3720
+ y: ymm,
3721
+ z: zmm
3722
+ }, {
3723
+ x: xpp,
3724
+ y: ymm,
3725
+ z: zmm
3726
+ }],
3727
+ enabled: frame.front.visible
3728
+ }]
3619
3729
  });
3620
3730
  }
3621
- var xTopEdges = [];
3622
- if (isValidEdge(ret.top, ret.front)) {
3623
- xTopEdges.push({
3624
- x: (xm + xp) / 2,
3625
- y: ym,
3626
- z: zm,
3627
- xDir: { x: 1, y: 0, z: 0 }
3731
+ }
3732
+ /**
3733
+ * Add the required CSS classes for column sides (#6018)
3734
+ * @private
3735
+ */
3736
+ function onAfterGetContainer() {
3737
+ if (this.styledMode) {
3738
+ this.renderer.definition({
3739
+ tagName: 'style',
3740
+ textContent: '.highcharts-3d-top{' +
3741
+ 'filter: url(#highcharts-brighter)' +
3742
+ '}\n' +
3743
+ '.highcharts-3d-side{' +
3744
+ 'filter: url(#highcharts-darker)' +
3745
+ '}\n'
3628
3746
  });
3747
+ // Add add definitions used by brighter and darker faces of the
3748
+ // cuboids.
3749
+ [{
3750
+ name: 'darker',
3751
+ slope: 0.6
3752
+ }, {
3753
+ name: 'brighter',
3754
+ slope: 1.4
3755
+ }].forEach(function (cfg) {
3756
+ this.renderer.definition({
3757
+ tagName: 'filter',
3758
+ id: 'highcharts-' + cfg.name,
3759
+ children: [{
3760
+ tagName: 'feComponentTransfer',
3761
+ children: [{
3762
+ tagName: 'feFuncR',
3763
+ type: 'linear',
3764
+ slope: cfg.slope
3765
+ }, {
3766
+ tagName: 'feFuncG',
3767
+ type: 'linear',
3768
+ slope: cfg.slope
3769
+ }, {
3770
+ tagName: 'feFuncB',
3771
+ type: 'linear',
3772
+ slope: cfg.slope
3773
+ }]
3774
+ }]
3775
+ });
3776
+ }, this);
3629
3777
  }
3630
- if (isValidEdge(ret.top, ret.back)) {
3631
- xTopEdges.push({
3632
- x: (xm + xp) / 2,
3633
- y: ym,
3634
- z: zp,
3635
- xDir: { x: -1, y: 0, z: 0 }
3778
+ }
3779
+ /**
3780
+ * Legacy support for HC < 6 to make 'scatter' series in a 3D chart route to
3781
+ * the real 'scatter3d' series type. (#8407)
3782
+ * @private
3783
+ */
3784
+ function onAfterInit() {
3785
+ var options = this.options;
3786
+ if (this.is3d()) {
3787
+ (options.series || []).forEach(function (s) {
3788
+ var type = s.type ||
3789
+ options.chart.type ||
3790
+ options.chart.defaultSeriesType;
3791
+ if (type === 'scatter') {
3792
+ s.type = 'scatter3d';
3793
+ }
3636
3794
  });
3637
3795
  }
3638
- var zBottomEdges = [];
3639
- if (isValidEdge(ret.bottom, ret.left)) {
3640
- zBottomEdges.push({
3641
- z: (zm + zp) / 2,
3642
- y: yp,
3643
- x: xm,
3644
- xDir: { x: 0, y: 0, z: -1 }
3645
- });
3796
+ }
3797
+ /**
3798
+ * @private
3799
+ */
3800
+ function onAfterSetChartSize() {
3801
+ var chart = this,
3802
+ options3d = chart.options.chart.options3d;
3803
+ if (chart.chart3d &&
3804
+ chart.is3d()) {
3805
+ // Add a 0-360 normalisation for alfa and beta angles in 3d graph
3806
+ if (options3d) {
3807
+ options3d.alpha = options3d.alpha % 360 + (options3d.alpha >= 0 ? 0 : 360);
3808
+ options3d.beta = options3d.beta % 360 + (options3d.beta >= 0 ? 0 : 360);
3809
+ }
3810
+ var inverted = chart.inverted, clipBox = chart.clipBox, margin = chart.margin, x = inverted ? 'y' : 'x', y = inverted ? 'x' : 'y', w = inverted ? 'height' : 'width', h = inverted ? 'width' : 'height';
3811
+ clipBox[x] = -(margin[3] || 0);
3812
+ clipBox[y] = -(margin[0] || 0);
3813
+ clipBox[w] =
3814
+ chart.chartWidth + (margin[3] || 0) + (margin[1] || 0);
3815
+ clipBox[h] =
3816
+ chart.chartHeight + (margin[0] || 0) + (margin[2] || 0);
3817
+ // Set scale, used later in perspective method():
3818
+ // getScale uses perspective, so scale3d has to be reset.
3819
+ chart.scale3d = 1;
3820
+ if (options3d.fitToPlot === true) {
3821
+ chart.scale3d = chart.chart3d.getScale(options3d.depth);
3822
+ }
3823
+ // Recalculate the 3d frame with every call of setChartSize,
3824
+ // instead of doing it after every redraw(). It avoids ticks
3825
+ // and axis title outside of chart.
3826
+ chart.chart3d.frame3d = chart.chart3d.get3dFrame(); // #7942
3646
3827
  }
3647
- if (isValidEdge(ret.bottom, ret.right)) {
3648
- zBottomEdges.push({
3649
- z: (zm + zp) / 2,
3650
- y: yp,
3651
- x: xp,
3652
- xDir: { x: 0, y: 0, z: 1 }
3653
- });
3828
+ }
3829
+ /**
3830
+ * @private
3831
+ */
3832
+ function onBeforeRedraw() {
3833
+ if (this.is3d()) {
3834
+ // Set to force a redraw of all elements
3835
+ this.isDirtyBox = true;
3654
3836
  }
3655
- var zTopEdges = [];
3656
- if (isValidEdge(ret.top, ret.left)) {
3657
- zTopEdges.push({
3658
- z: (zm + zp) / 2,
3659
- y: ym,
3660
- x: xm,
3661
- xDir: { x: 0, y: 0, z: -1 }
3662
- });
3837
+ }
3838
+ /**
3839
+ * @private
3840
+ */
3841
+ function onBeforeRender() {
3842
+ if (this.chart3d && this.is3d()) {
3843
+ this.chart3d.frame3d = this.chart3d.get3dFrame();
3663
3844
  }
3664
- if (isValidEdge(ret.top, ret.right)) {
3665
- zTopEdges.push({
3666
- z: (zm + zp) / 2,
3667
- y: ym,
3668
- x: xp,
3669
- xDir: { x: 0, y: 0, z: 1 }
3670
- });
3845
+ }
3846
+ /**
3847
+ * @private
3848
+ */
3849
+ function onInit() {
3850
+ if (!this.chart3d) {
3851
+ this.chart3d = new Composition(this);
3671
3852
  }
3672
- var pickEdge = function (edges,
3673
- axis,
3674
- mult) {
3675
- if (edges.length === 0) {
3676
- return null;
3677
- }
3678
- if (edges.length === 1) {
3679
- return edges[0];
3680
- }
3681
- var best = 0,
3682
- projections = perspective(edges,
3683
- chart,
3684
- false);
3685
- for (var i = 1; i < projections.length; i++) {
3686
- if (mult * projections[i][axis] >
3687
- mult * projections[best][axis]) {
3688
- best = i;
3689
- }
3690
- else if ((mult * projections[i][axis] ===
3691
- mult * projections[best][axis]) &&
3692
- (projections[i].z < projections[best].z)) {
3693
- best = i;
3694
- }
3695
- }
3696
- return edges[best];
3697
- };
3698
- ret.axes = {
3699
- y: {
3700
- 'left': pickEdge(yEdges, 'x', -1),
3701
- 'right': pickEdge(yEdges, 'x', +1)
3702
- },
3703
- x: {
3704
- 'top': pickEdge(xTopEdges, 'y', -1),
3705
- 'bottom': pickEdge(xBottomEdges, 'y', +1)
3706
- },
3707
- z: {
3708
- 'top': pickEdge(zTopEdges, 'y', -1),
3709
- 'bottom': pickEdge(zBottomEdges, 'y', +1)
3710
- }
3711
- };
3712
3853
  }
3713
- else {
3714
- ret.axes = {
3715
- y: {
3716
- 'left': { x: xm, z: zm, xDir: { x: 1, y: 0, z: 0 } },
3717
- 'right': { x: xp, z: zm, xDir: { x: 0, y: 0, z: 1 } }
3718
- },
3719
- x: {
3720
- 'top': { y: ym, z: zm, xDir: { x: 1, y: 0, z: 0 } },
3721
- 'bottom': { y: yp, z: zm, xDir: { x: 1, y: 0, z: 0 } }
3722
- },
3723
- z: {
3724
- 'top': {
3725
- x: defaultShowLeft ? xp : xm,
3726
- y: ym,
3727
- xDir: defaultShowLeft ?
3728
- { x: 0, y: 0, z: 1 } :
3729
- { x: 0, y: 0, z: -1 }
3730
- },
3731
- 'bottom': {
3732
- x: defaultShowLeft ? xp : xm,
3733
- y: yp,
3734
- xDir: defaultShowLeft ?
3735
- { x: 0, y: 0, z: 1 } :
3736
- { x: 0, y: 0, z: -1 }
3737
- }
3738
- }
3739
- };
3854
+ /**
3855
+ * @private
3856
+ */
3857
+ function wrapIsInsidePlot(proceed) {
3858
+ return this.is3d() || proceed.apply(this, [].slice.call(arguments, 1));
3740
3859
  }
3741
- return ret;
3742
- };
3743
- // Animation setter for matrix property.
3744
- Fx.prototype.matrixSetter = function () {
3745
- var interpolated;
3746
- if (this.pos < 1 &&
3747
- (isArray(this.start) || isArray(this.end))) {
3748
- var start = this.start || [1, 0, 0, 1, 0, 0];
3749
- var end = this.end || [1, 0, 0, 1, 0, 0];
3750
- interpolated = [];
3751
- for (var i = 0; i < 6; i++) {
3752
- interpolated.push(this.pos * end[i] + (1 - this.pos) * start[i]);
3860
+ /**
3861
+ * Draw the series in the reverse order (#3803, #3917)
3862
+ * @private
3863
+ */
3864
+ function wrapRenderSeries(proceed) {
3865
+ var series,
3866
+ i = this.series.length;
3867
+ if (this.is3d()) {
3868
+ while (i--) {
3869
+ series = this.series[i];
3870
+ series.translate();
3871
+ series.render();
3872
+ }
3873
+ }
3874
+ else {
3875
+ proceed.call(this);
3753
3876
  }
3754
3877
  }
3755
- else {
3756
- interpolated = this.end;
3878
+ /**
3879
+ * @private
3880
+ */
3881
+ function wrapSetClassName(proceed) {
3882
+ proceed.apply(this, [].slice.call(arguments, 1));
3883
+ if (this.is3d()) {
3884
+ this.container.className += ' highcharts-3d-chart';
3885
+ }
3757
3886
  }
3758
- this.elem.attr(this.prop, interpolated, null, true);
3759
- };
3887
+ })(Chart3D || (Chart3D = {}));
3888
+ Chart3D.compose(Chart, Fx);
3760
3889
  ZAxis.ZChartComposition.compose(Chart);
3761
3890
  Axis3D.compose(Axis);
3762
3891
  /**
@@ -3792,8 +3921,9 @@
3792
3921
  */
3793
3922
  ''; // adds doclets above to transpiled file
3794
3923
 
3924
+ return Chart3D;
3795
3925
  });
3796
- _registerModule(_modules, 'parts-3d/Series.js', [_modules['parts/Globals.js'], _modules['parts/Utilities.js']], function (H, U) {
3926
+ _registerModule(_modules, 'Core/Series/Series3D.js', [_modules['Core/Globals.js'], _modules['Extensions/Math3D.js'], _modules['Core/Utilities.js']], function (H, Math3D, U) {
3797
3927
  /* *
3798
3928
  *
3799
3929
  * (c) 2010-2020 Torstein Honsi
@@ -3805,9 +3935,9 @@
3805
3935
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
3806
3936
  *
3807
3937
  * */
3938
+ var perspective = Math3D.perspective;
3808
3939
  var addEvent = U.addEvent,
3809
3940
  pick = U.pick;
3810
- var perspective = H.perspective;
3811
3941
  /* eslint-disable no-invalid-this */
3812
3942
  // Wrap the translate method to post-translate points into 3D perspective
3813
3943
  addEvent(H.Series, 'afterTranslate', function () {
@@ -3862,7 +3992,7 @@
3862
3992
  };
3863
3993
 
3864
3994
  });
3865
- _registerModule(_modules, 'parts-3d/Column.js', [_modules['parts/Globals.js'], _modules['parts/Utilities.js'], _modules['parts/Stacking.js']], function (H, U, StackItem) {
3995
+ _registerModule(_modules, 'Series/Column3DSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Globals.js'], _modules['Extensions/Math3D.js'], _modules['Extensions/Stacking.js'], _modules['Core/Utilities.js']], function (BaseSeries, H, Math3D, StackItem, U) {
3866
3996
  /* *
3867
3997
  *
3868
3998
  * (c) 2010-2020 Torstein Honsi
@@ -3872,12 +4002,12 @@
3872
4002
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
3873
4003
  *
3874
4004
  * */
4005
+ var perspective = Math3D.perspective;
3875
4006
  var addEvent = U.addEvent,
3876
4007
  pick = U.pick,
3877
4008
  wrap = U.wrap;
3878
- var perspective = H.perspective,
3879
- Series = H.Series,
3880
- seriesTypes = H.seriesTypes,
4009
+ var Series = H.Series,
4010
+ columnProto = BaseSeries.seriesTypes.column.prototype,
3881
4011
  svg = H.svg;
3882
4012
  /**
3883
4013
  * Depth of the columns in a 3D column chart.
@@ -3918,7 +4048,33 @@
3918
4048
  * @apioption plotOptions.column.groupZPadding
3919
4049
  */
3920
4050
  /* eslint-disable no-invalid-this */
3921
- wrap(seriesTypes.column.prototype, 'translate', function (proceed) {
4051
+ /**
4052
+ * @private
4053
+ * @param {Highcharts.Chart} chart
4054
+ * Chart with stacks
4055
+ * @param {string} stacking
4056
+ * Stacking option
4057
+ * @return {Highcharts.Stack3dDictionary}
4058
+ */
4059
+ function retrieveStacks(chart, stacking) {
4060
+ var series = chart.series,
4061
+ stacks = {};
4062
+ var stackNumber,
4063
+ i = 1;
4064
+ series.forEach(function (s) {
4065
+ stackNumber = pick(s.options.stack, (stacking ? 0 : series.length - 1 - s.index)); // #3841, #4532
4066
+ if (!stacks[stackNumber]) {
4067
+ stacks[stackNumber] = { series: [s], position: i };
4068
+ i++;
4069
+ }
4070
+ else {
4071
+ stacks[stackNumber].series.push(s);
4072
+ }
4073
+ });
4074
+ stacks.totalStacks = i + 1;
4075
+ return stacks;
4076
+ }
4077
+ wrap(columnProto, 'translate', function (proceed) {
3922
4078
  proceed.apply(this, [].slice.call(arguments, 1));
3923
4079
  // Do not do this if the chart is not 3D
3924
4080
  if (this.chart.is3d()) {
@@ -3926,13 +4082,13 @@
3926
4082
  }
3927
4083
  });
3928
4084
  // Don't use justifyDataLabel when point is outsidePlot
3929
- wrap(H.Series.prototype, 'justifyDataLabel', function (proceed) {
4085
+ wrap(Series.prototype, 'justifyDataLabel', function (proceed) {
3930
4086
  return !(arguments[2].outside3dPlot) ?
3931
4087
  proceed.apply(this, [].slice.call(arguments, 1)) :
3932
4088
  false;
3933
4089
  });
3934
- seriesTypes.column.prototype.translate3dPoints = function () { };
3935
- seriesTypes.column.prototype.translate3dShapes = function () {
4090
+ columnProto.translate3dPoints = function () { };
4091
+ columnProto.translate3dShapes = function () {
3936
4092
  var series = this,
3937
4093
  chart = series.chart,
3938
4094
  seriesOptions = series.options,
@@ -4027,7 +4183,7 @@
4027
4183
  // store for later use #4067
4028
4184
  series.z = z;
4029
4185
  };
4030
- wrap(seriesTypes.column.prototype, 'animate', function (proceed) {
4186
+ wrap(columnProto, 'animate', function (proceed) {
4031
4187
  if (!this.chart.is3d()) {
4032
4188
  proceed.apply(this, [].slice.call(arguments, 1));
4033
4189
  }
@@ -4081,7 +4237,7 @@
4081
4237
  // In case of 3d columns there is no sense to add this columns to a specific
4082
4238
  // series group - if series is added to a group all columns will have the same
4083
4239
  // zIndex in comparison with different series.
4084
- wrap(seriesTypes.column.prototype, 'plotGroup', function (proceed, prop, name, visibility, zIndex, parent) {
4240
+ wrap(columnProto, 'plotGroup', function (proceed, prop, name, visibility, zIndex, parent) {
4085
4241
  if (prop !== 'dataLabelsGroup') {
4086
4242
  if (this.chart.is3d()) {
4087
4243
  if (this[prop]) {
@@ -4106,7 +4262,7 @@
4106
4262
  });
4107
4263
  // When series is not added to group it is needed to change setVisible method to
4108
4264
  // allow correct Legend funcionality. This wrap is basing on pie chart series.
4109
- wrap(seriesTypes.column.prototype, 'setVisible', function (proceed, vis) {
4265
+ wrap(columnProto, 'setVisible', function (proceed, vis) {
4110
4266
  var series = this,
4111
4267
  pointVis;
4112
4268
  if (series.chart.is3d()) {
@@ -4126,8 +4282,7 @@
4126
4282
  }
4127
4283
  proceed.apply(this, Array.prototype.slice.call(arguments, 1));
4128
4284
  });
4129
- seriesTypes.column.prototype
4130
- .handle3dGrouping = true;
4285
+ columnProto.handle3dGrouping = true;
4131
4286
  addEvent(Series, 'afterInit', function () {
4132
4287
  if (this.chart.is3d() &&
4133
4288
  this.handle3dGrouping) {
@@ -4140,7 +4295,8 @@
4140
4295
  z = 0;
4141
4296
  // @todo grouping === true ?
4142
4297
  if (!(typeof grouping !== 'undefined' && !grouping)) {
4143
- var stacks = this.chart.retrieveStacks(stacking),
4298
+ var stacks = retrieveStacks(this.chart,
4299
+ stacking),
4144
4300
  stack = seriesOptions.stack || 0,
4145
4301
  i; // position within the stack
4146
4302
  for (i = 0; i < stacks[stack].series.length; i++) {
@@ -4206,17 +4362,16 @@
4206
4362
  this.graphic && this.graphic.element.nodeName !== 'g' :
4207
4363
  proceed.apply(this, args);
4208
4364
  }
4209
- wrap(seriesTypes.column.prototype, 'pointAttribs', pointAttribs);
4210
- wrap(seriesTypes.column.prototype, 'setState', setState);
4211
- wrap(seriesTypes.column.prototype.pointClass.prototype, 'hasNewShapeType', hasNewShapeType);
4212
- if (seriesTypes.columnrange) {
4213
- wrap(seriesTypes.columnrange.prototype, 'pointAttribs', pointAttribs);
4214
- wrap(seriesTypes.columnrange.prototype, 'setState', setState);
4215
- wrap(seriesTypes.columnrange.prototype.pointClass.prototype, 'hasNewShapeType', hasNewShapeType);
4216
- seriesTypes.columnrange.prototype.plotGroup =
4217
- seriesTypes.column.prototype.plotGroup;
4218
- seriesTypes.columnrange.prototype.setVisible =
4219
- seriesTypes.column.prototype.setVisible;
4365
+ wrap(columnProto, 'pointAttribs', pointAttribs);
4366
+ wrap(columnProto, 'setState', setState);
4367
+ wrap(columnProto.pointClass.prototype, 'hasNewShapeType', hasNewShapeType);
4368
+ if (BaseSeries.seriesTypes.columnRange) {
4369
+ var columnRangeProto = BaseSeries.seriesTypes.columnrange.prototype;
4370
+ wrap(columnRangeProto, 'pointAttribs', pointAttribs);
4371
+ wrap(columnRangeProto, 'setState', setState);
4372
+ wrap(columnRangeProto.pointClass.prototype, 'hasNewShapeType', hasNewShapeType);
4373
+ columnRangeProto.plotGroup = columnProto.plotGroup;
4374
+ columnRangeProto.setVisible = columnProto.setVisible;
4220
4375
  }
4221
4376
  wrap(Series.prototype, 'alignDataLabel', function (proceed, point, dataLabel, options, alignTo) {
4222
4377
  var chart = this.chart;
@@ -4273,7 +4428,7 @@
4273
4428
  // use its barW, z and depth parameters
4274
4429
  // for correct stackLabels position calculation
4275
4430
  if (columnSeries &&
4276
- columnSeries instanceof seriesTypes.column) {
4431
+ columnSeries instanceof BaseSeries.seriesTypes.column) {
4277
4432
  var dLPosition = {
4278
4433
  x: stackBox.x + (chart.inverted ? h : xWidth / 2),
4279
4434
  y: stackBox.y,
@@ -4297,9 +4452,64 @@
4297
4452
  }
4298
4453
  return stackBox;
4299
4454
  });
4455
+ /*
4456
+ @merge v6.2
4457
+ @todo
4458
+ EXTENSION FOR 3D CYLINDRICAL COLUMNS
4459
+ Not supported
4460
+ */
4461
+ /*
4462
+ var defaultOptions = H.getOptions();
4463
+ defaultOptions.plotOptions.cylinder =
4464
+ merge(defaultOptions.plotOptions.column);
4465
+ var CylinderSeries = extendClass(seriesTypes.column, {
4466
+ type: 'cylinder'
4467
+ });
4468
+ seriesTypes.cylinder = CylinderSeries;
4469
+
4470
+ wrap(seriesTypes.cylinder.prototype, 'translate', function (proceed) {
4471
+ proceed.apply(this, [].slice.call(arguments, 1));
4472
+
4473
+ // Do not do this if the chart is not 3D
4474
+ if (!this.chart.is3d()) {
4475
+ return;
4476
+ }
4477
+
4478
+ var series = this,
4479
+ chart = series.chart,
4480
+ options = chart.options,
4481
+ cylOptions = options.plotOptions.cylinder,
4482
+ options3d = options.chart.options3d,
4483
+ depth = cylOptions.depth || 0,
4484
+ alpha = chart.alpha3d;
4485
+
4486
+ var z = cylOptions.stacking ?
4487
+ (this.options.stack || 0) * depth :
4488
+ series._i * depth;
4489
+ z += depth / 2;
4490
+
4491
+ if (cylOptions.grouping !== false) { z = 0; }
4492
+
4493
+ each(series.data, function (point) {
4494
+ var shapeArgs = point.shapeArgs,
4495
+ deg2rad = H.deg2rad;
4496
+ point.shapeType = 'arc3d';
4497
+ shapeArgs.x += depth / 2;
4498
+ shapeArgs.z = z;
4499
+ shapeArgs.start = 0;
4500
+ shapeArgs.end = 2 * PI;
4501
+ shapeArgs.r = depth * 0.95;
4502
+ shapeArgs.innerR = 0;
4503
+ shapeArgs.depth =
4504
+ shapeArgs.height * (1 / sin((90 - alpha) * deg2rad)) - z;
4505
+ shapeArgs.alpha = 90 - alpha;
4506
+ shapeArgs.beta = 0;
4507
+ });
4508
+ });
4509
+ */
4300
4510
 
4301
4511
  });
4302
- _registerModule(_modules, 'parts-3d/Pie.js', [_modules['parts/Globals.js'], _modules['parts/Utilities.js']], function (H, U) {
4512
+ _registerModule(_modules, 'Series/Pie3DSeries.js', [_modules['Core/Series/Series.js'], _modules['Core/Globals.js'], _modules['Core/Utilities.js']], function (BaseSeries, H, U) {
4303
4513
  /* *
4304
4514
  *
4305
4515
  * (c) 2010-2020 Torstein Honsi
@@ -4311,11 +4521,11 @@
4311
4521
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
4312
4522
  *
4313
4523
  * */
4314
- var pick = U.pick,
4315
- wrap = U.wrap;
4316
4524
  var deg2rad = H.deg2rad,
4317
- seriesTypes = H.seriesTypes,
4318
4525
  svg = H.svg;
4526
+ var pick = U.pick,
4527
+ wrap = U.wrap;
4528
+ var seriesTypes = BaseSeries.seriesTypes;
4319
4529
  /**
4320
4530
  * The thickness of a 3D pie.
4321
4531
  *
@@ -4468,7 +4678,7 @@
4468
4678
  });
4469
4679
 
4470
4680
  });
4471
- _registerModule(_modules, 'parts-3d/Scatter.js', [_modules['parts/Globals.js'], _modules['parts/Point.js'], _modules['parts/Utilities.js']], function (H, Point, U) {
4681
+ _registerModule(_modules, 'Series/Scatter3DSeries.js', [_modules['Core/Series/Series.js'], _modules['Extensions/Math3D.js'], _modules['Core/Series/Point.js']], function (BaseSeries, Math3D, Point) {
4472
4682
  /* *
4473
4683
  *
4474
4684
  * (c) 2010-2020 Torstein Honsi
@@ -4480,8 +4690,8 @@
4480
4690
  * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
4481
4691
  *
4482
4692
  * */
4483
- var seriesType = U.seriesType;
4484
- var seriesTypes = H.seriesTypes;
4693
+ var seriesTypes = BaseSeries.seriesTypes;
4694
+ var pointCameraDistance = Math3D.pointCameraDistance;
4485
4695
  /**
4486
4696
  * @private
4487
4697
  * @class
@@ -4489,7 +4699,7 @@
4489
4699
  *
4490
4700
  * @augments Highcharts.Series
4491
4701
  */
4492
- seriesType('scatter3d', 'scatter',
4702
+ BaseSeries.seriesType('scatter3d', 'scatter',
4493
4703
  /**
4494
4704
  * A 3D scatter plot uses x, y and z coordinates to display values for three
4495
4705
  * variables for a set of data.
@@ -4500,7 +4710,7 @@
4500
4710
  * Draggable 3d scatter
4501
4711
  *
4502
4712
  * @extends plotOptions.scatter
4503
- * @excluding dragDrop, cluster
4713
+ * @excluding dragDrop, cluster, boostThreshold, boostBlending
4504
4714
  * @product highcharts
4505
4715
  * @requires highcharts-3d
4506
4716
  * @optionparent plotOptions.scatter3d
@@ -4517,7 +4727,7 @@
4517
4727
  arguments);
4518
4728
  if (this.chart.is3d() && point) {
4519
4729
  attribs.zIndex =
4520
- H.pointCameraDistance(point, this.chart);
4730
+ pointCameraDistance(point, this.chart);
4521
4731
  }
4522
4732
  return attribs;
4523
4733
  },
@@ -4545,6 +4755,7 @@
4545
4755
  * scatter3d](#plotOptions.scatter3d).
4546
4756
  *
4547
4757
  * @extends series,plotOptions.scatter3d
4758
+ * @excluding boostThreshold, boostBlending
4548
4759
  * @product highcharts
4549
4760
  * @requires highcharts-3d
4550
4761
  * @apioption series.scatter3d
@@ -4612,119 +4823,6 @@
4612
4823
  */
4613
4824
  ''; // adds doclets above to transpiled file
4614
4825
 
4615
- });
4616
- _registerModule(_modules, 'parts-3d/VMLAxis3D.js', [_modules['parts/Utilities.js']], function (U) {
4617
- /* *
4618
- *
4619
- * (c) 2010-2020 Torstein Honsi
4620
- *
4621
- * Extension to the VML Renderer
4622
- *
4623
- * License: www.highcharts.com/license
4624
- *
4625
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
4626
- *
4627
- * */
4628
- var addEvent = U.addEvent;
4629
- /* eslint-disable valid-jsdoc */
4630
- var VMLAxis3DAdditions = /** @class */ (function () {
4631
- /* *
4632
- *
4633
- * Constructors
4634
- *
4635
- * */
4636
- function VMLAxis3DAdditions(axis) {
4637
- this.axis = axis;
4638
- }
4639
- return VMLAxis3DAdditions;
4640
- }());
4641
- var VMLAxis3D = /** @class */ (function () {
4642
- function VMLAxis3D() {
4643
- }
4644
- /* *
4645
- *
4646
- * Static Properties
4647
- *
4648
- * */
4649
- VMLAxis3D.compose = function (AxisClass) {
4650
- AxisClass.keepProps.push('vml');
4651
- addEvent(AxisClass, 'init', VMLAxis3D.onInit);
4652
- addEvent(AxisClass, 'render', VMLAxis3D.onRender);
4653
- };
4654
- /**
4655
- * @private
4656
- */
4657
- VMLAxis3D.onInit = function () {
4658
- var axis = this;
4659
- if (!axis.vml) {
4660
- axis.vml = new VMLAxis3DAdditions(axis);
4661
- }
4662
- };
4663
- /**
4664
- * @private
4665
- */
4666
- VMLAxis3D.onRender = function () {
4667
- var axis = this;
4668
- var vml = axis.vml;
4669
- // VML doesn't support a negative z-index
4670
- if (vml.sideFrame) {
4671
- vml.sideFrame.css({ zIndex: 0 });
4672
- vml.sideFrame.front.attr({
4673
- fill: vml.sideFrame.color
4674
- });
4675
- }
4676
- if (vml.bottomFrame) {
4677
- vml.bottomFrame.css({ zIndex: 1 });
4678
- vml.bottomFrame.front.attr({
4679
- fill: vml.bottomFrame.color
4680
- });
4681
- }
4682
- if (vml.backFrame) {
4683
- vml.backFrame.css({ zIndex: 0 });
4684
- vml.backFrame.front.attr({
4685
- fill: vml.backFrame.color
4686
- });
4687
- }
4688
- };
4689
- return VMLAxis3D;
4690
- }());
4691
-
4692
- return VMLAxis3D;
4693
- });
4694
- _registerModule(_modules, 'parts-3d/VMLRenderer.js', [_modules['parts/Axis.js'], _modules['parts/Globals.js'], _modules['parts-3d/VMLAxis3D.js']], function (Axis, H, VMLAxis3D) {
4695
- /* *
4696
- *
4697
- * (c) 2010-2020 Torstein Honsi
4698
- *
4699
- * Extension to the VML Renderer
4700
- *
4701
- * License: www.highcharts.com/license
4702
- *
4703
- * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
4704
- *
4705
- * */
4706
- var SVGRenderer = H.SVGRenderer,
4707
- VMLRenderer = H.VMLRenderer;
4708
- if (VMLRenderer) {
4709
- H.setOptions({ animate: false });
4710
- VMLRenderer.prototype.face3d = SVGRenderer.prototype.face3d;
4711
- VMLRenderer.prototype.polyhedron = SVGRenderer.prototype.polyhedron;
4712
- VMLRenderer.prototype.elements3d = SVGRenderer.prototype.elements3d;
4713
- VMLRenderer.prototype.element3d = SVGRenderer.prototype.element3d;
4714
- VMLRenderer.prototype.cuboid = SVGRenderer.prototype.cuboid;
4715
- VMLRenderer.prototype.cuboidPath = SVGRenderer.prototype.cuboidPath;
4716
- VMLRenderer.prototype.toLinePath = SVGRenderer.prototype.toLinePath;
4717
- VMLRenderer.prototype.toLineSegments = SVGRenderer.prototype.toLineSegments;
4718
- VMLRenderer.prototype.arc3d = function (shapeArgs) {
4719
- var result = SVGRenderer.prototype.arc3d.call(this,
4720
- shapeArgs);
4721
- result.css({ zIndex: result.zIndex });
4722
- return result;
4723
- };
4724
- H.VMLRenderer.prototype.arc3dPath = H.SVGRenderer.prototype.arc3dPath;
4725
- VMLAxis3D.compose(Axis);
4726
- }
4727
-
4728
4826
  });
4729
4827
  _registerModule(_modules, 'masters/highcharts-3d.src.js', [], function () {
4730
4828