highcharts 7.1.1 → 7.1.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 (415) hide show
  1. package/bower.json +1 -1
  2. package/css/annotations/popup.css +3 -3
  3. package/css/annotations/popup.scss +1 -1
  4. package/css/stocktools/gui.css +5 -5
  5. package/css/stocktools/gui.scss +1 -1
  6. package/es-modules/annotations/ControlPoint.js +1 -1
  7. package/es-modules/annotations/MockPoint.js +45 -12
  8. package/es-modules/annotations/annotations.src.js +203 -166
  9. package/es-modules/annotations/controllable/ControllableCircle.js +2 -10
  10. package/es-modules/annotations/controllable/ControllableImage.js +2 -10
  11. package/es-modules/annotations/controllable/ControllableLabel.js +54 -9
  12. package/es-modules/annotations/controllable/ControllableRect.js +2 -10
  13. package/es-modules/annotations/controllable/controllableMixin.js +32 -4
  14. package/es-modules/annotations/controllable/markerMixin.js +1 -0
  15. package/es-modules/annotations/eventEmitterMixin.js +1 -0
  16. package/es-modules/annotations/navigationBindings.js +15 -11
  17. package/es-modules/annotations/popup.js +59 -81
  18. package/es-modules/annotations/types/CrookedLine.js +19 -7
  19. package/es-modules/annotations/types/ElliottWave.js +7 -6
  20. package/es-modules/annotations/types/Fibonacci.js +14 -14
  21. package/es-modules/annotations/types/InfinityLine.js +4 -4
  22. package/es-modules/annotations/types/Measure.js +41 -41
  23. package/es-modules/annotations/types/Pitchfork.js +5 -4
  24. package/es-modules/annotations/types/VerticalLine.js +6 -5
  25. package/es-modules/error-messages.js +6 -1
  26. package/es-modules/indicators/indicators.src.js +5 -3
  27. package/es-modules/mixins/nodes.js +16 -8
  28. package/es-modules/modules/accessibility/AccessibilityComponent.js +4 -4
  29. package/es-modules/modules/accessibility/KeyboardNavigation.js +17 -4
  30. package/es-modules/modules/accessibility/components/RangeSelectorComponent.js +3 -2
  31. package/es-modules/modules/accessibility/components/SeriesComponent.js +110 -2
  32. package/es-modules/modules/accessibility/components/ZoomComponent.js +1 -1
  33. package/es-modules/modules/accessibility/options.js +2 -1
  34. package/es-modules/modules/bellcurve.src.js +27 -29
  35. package/es-modules/modules/boost/boost-init.js +14 -0
  36. package/es-modules/modules/boost/boost-overrides.js +13 -3
  37. package/es-modules/modules/boost/wgl-renderer.js +30 -15
  38. package/es-modules/modules/boost/wgl-shader.js +33 -16
  39. package/es-modules/modules/boost/wgl-vbuffer.js +8 -4
  40. package/es-modules/modules/broken-axis.src.js +1 -1
  41. package/es-modules/modules/bullet.src.js +68 -68
  42. package/es-modules/modules/cylinder.src.js +3 -1
  43. package/es-modules/modules/data.src.js +9 -5
  44. package/es-modules/modules/draggable-points.src.js +1 -1
  45. package/es-modules/modules/drilldown.src.js +1 -1
  46. package/es-modules/modules/export-data.src.js +7 -8
  47. package/es-modules/modules/exporting.src.js +9 -1
  48. package/es-modules/modules/full-screen.src.js +1 -1
  49. package/es-modules/modules/funnel3d.src.js +10 -3
  50. package/es-modules/modules/histogram.src.js +162 -164
  51. package/es-modules/modules/item-series.src.js +10 -10
  52. package/es-modules/modules/networkgraph/layouts.js +16 -12
  53. package/es-modules/modules/networkgraph/networkgraph.src.js +147 -51
  54. package/es-modules/modules/offline-exporting.src.js +15 -2
  55. package/es-modules/modules/oldie-polyfills.src.js +1 -1
  56. package/es-modules/modules/organization.src.js +65 -20
  57. package/es-modules/modules/pareto.src.js +52 -51
  58. package/es-modules/modules/pattern-fill.src.js +1 -1
  59. package/es-modules/modules/price-indicator.src.js +1 -1
  60. package/es-modules/modules/pyramid3d.src.js +1 -1
  61. package/es-modules/modules/sankey.src.js +22 -10
  62. package/es-modules/modules/series-label.src.js +16 -8
  63. package/es-modules/modules/solid-gauge.src.js +128 -79
  64. package/es-modules/modules/static-scale.src.js +8 -1
  65. package/es-modules/modules/stock-tools-gui.js +1 -1
  66. package/es-modules/modules/streamgraph.src.js +11 -11
  67. package/es-modules/modules/sunburst.src.js +23 -2
  68. package/es-modules/modules/tilemap.src.js +58 -57
  69. package/es-modules/modules/timeline.src.js +17 -12
  70. package/es-modules/modules/treemap.src.js +6 -6
  71. package/es-modules/modules/variwide.src.js +39 -39
  72. package/es-modules/modules/vector.src.js +108 -107
  73. package/es-modules/modules/venn.src.js +4 -2
  74. package/es-modules/modules/windbarb.src.js +43 -43
  75. package/es-modules/modules/wordcloud.src.js +1 -0
  76. package/es-modules/modules/xrange.src.js +112 -104
  77. package/es-modules/parts/AreaSeries.js +4 -1
  78. package/es-modules/parts/Axis.js +809 -1870
  79. package/es-modules/parts/Chart.js +254 -743
  80. package/es-modules/parts/Color.js +160 -113
  81. package/es-modules/parts/ColumnSeries.js +9 -3
  82. package/es-modules/parts/DataLabels.js +31 -2
  83. package/es-modules/parts/Dynamics.js +73 -26
  84. package/es-modules/parts/FlagsSeries.js +6 -4
  85. package/es-modules/parts/Globals.js +20 -36
  86. package/es-modules/parts/Html.js +116 -235
  87. package/es-modules/parts/Interaction.js +17 -7
  88. package/es-modules/parts/Legend.js +277 -632
  89. package/es-modules/parts/MSPointer.js +62 -106
  90. package/es-modules/parts/Options.js +128 -367
  91. package/es-modules/parts/OrdinalAxis.js +12 -0
  92. package/es-modules/parts/PieSeries.js +61 -44
  93. package/es-modules/parts/PlotLineOrBand.js +38 -3
  94. package/es-modules/parts/Point.js +117 -227
  95. package/es-modules/parts/Pointer.js +273 -558
  96. package/es-modules/parts/RangeSelector.js +5 -3
  97. package/es-modules/parts/Responsive.js +8 -4
  98. package/es-modules/parts/ScrollablePlotArea.js +215 -81
  99. package/es-modules/parts/Scrollbar.js +38 -23
  100. package/es-modules/parts/Series.js +151 -47
  101. package/es-modules/parts/Stacking.js +8 -3
  102. package/es-modules/parts/StockChart.js +42 -29
  103. package/es-modules/parts/SvgRenderer.js +1080 -2100
  104. package/es-modules/parts/Tick.js +11 -4
  105. package/es-modules/parts/Time.js +179 -363
  106. package/es-modules/parts/Tooltip.js +23 -12
  107. package/es-modules/parts/TouchPointer.js +69 -187
  108. package/es-modules/parts/Utilities.js +593 -846
  109. package/es-modules/parts-3d/Axis.js +2 -2
  110. package/es-modules/parts-3d/Column.js +18 -8
  111. package/es-modules/parts-gantt/GanttSeries.js +17 -21
  112. package/es-modules/parts-gantt/GridAxis.js +183 -101
  113. package/es-modules/parts-gantt/PathfinderAlgorithms.js +2 -2
  114. package/es-modules/parts-gantt/TreeGrid.js +53 -36
  115. package/es-modules/parts-map/ColorAxis.js +35 -14
  116. package/es-modules/parts-map/MapBubbleSeries.js +2 -1
  117. package/es-modules/parts-map/MapSeries.js +29 -18
  118. package/es-modules/parts-more/AreaRangeSeries.js +13 -12
  119. package/es-modules/parts-more/ColumnRangeSeries.js +8 -2
  120. package/es-modules/parts-more/GaugeSeries.js +9 -9
  121. package/es-modules/parts-more/PackedBubbleSeries.js +152 -115
  122. package/es-modules/parts-more/RadialAxis.js +102 -8
  123. package/es-modules/parts-more/WaterfallSeries.js +148 -35
  124. package/highcharts-3d.js +68 -67
  125. package/highcharts-3d.js.map +1 -1
  126. package/highcharts-3d.src.js +21 -11
  127. package/highcharts-gantt.d.ts +5 -3
  128. package/highcharts-gantt.js +618 -610
  129. package/highcharts-gantt.js.map +1 -1
  130. package/highcharts-gantt.src.d.ts +5 -3
  131. package/highcharts-gantt.src.js +5185 -8892
  132. package/highcharts-more.js +144 -140
  133. package/highcharts-more.js.map +1 -1
  134. package/highcharts-more.src.js +449 -194
  135. package/highcharts.d.ts +3943 -5236
  136. package/highcharts.js +454 -449
  137. package/highcharts.js.map +1 -1
  138. package/highcharts.src.d.ts +3943 -5236
  139. package/highcharts.src.js +4767 -8601
  140. package/highmaps.d.ts +5 -3
  141. package/highmaps.js +498 -494
  142. package/highmaps.js.map +1 -1
  143. package/highmaps.src.d.ts +5 -3
  144. package/highmaps.src.js +4547 -8507
  145. package/highstock.d.ts +5 -3
  146. package/highstock.js +597 -590
  147. package/highstock.js.map +1 -1
  148. package/highstock.src.d.ts +5 -3
  149. package/highstock.src.js +4871 -8661
  150. package/indicators/acceleration-bands.js +1 -1
  151. package/indicators/acceleration-bands.src.js +1 -1
  152. package/indicators/accumulation-distribution.js +1 -1
  153. package/indicators/accumulation-distribution.src.js +1 -1
  154. package/indicators/ao.js +1 -1
  155. package/indicators/ao.src.js +1 -1
  156. package/indicators/apo.js +1 -1
  157. package/indicators/apo.src.js +1 -1
  158. package/indicators/aroon-oscillator.js +1 -1
  159. package/indicators/aroon-oscillator.src.js +1 -1
  160. package/indicators/aroon.js +1 -1
  161. package/indicators/aroon.src.js +1 -1
  162. package/indicators/atr.js +1 -1
  163. package/indicators/atr.src.js +1 -1
  164. package/indicators/bollinger-bands.js +1 -1
  165. package/indicators/bollinger-bands.src.js +1 -1
  166. package/indicators/cci.js +1 -1
  167. package/indicators/cci.src.js +1 -1
  168. package/indicators/chaikin.js +1 -1
  169. package/indicators/chaikin.src.js +1 -1
  170. package/indicators/cmf.js +1 -1
  171. package/indicators/cmf.src.js +1 -1
  172. package/indicators/dema.js +1 -1
  173. package/indicators/dema.src.js +1 -1
  174. package/indicators/dpo.js +1 -1
  175. package/indicators/dpo.src.js +1 -1
  176. package/indicators/ema.js +1 -1
  177. package/indicators/ema.src.js +1 -1
  178. package/indicators/ichimoku-kinko-hyo.js +1 -1
  179. package/indicators/ichimoku-kinko-hyo.src.js +1 -1
  180. package/indicators/indicators-all.js +105 -105
  181. package/indicators/indicators-all.js.map +1 -1
  182. package/indicators/indicators-all.src.js +6 -4
  183. package/indicators/indicators.js +9 -9
  184. package/indicators/indicators.js.map +1 -1
  185. package/indicators/indicators.src.js +6 -4
  186. package/indicators/keltner-channels.js +1 -1
  187. package/indicators/keltner-channels.src.js +1 -1
  188. package/indicators/macd.js +1 -1
  189. package/indicators/macd.src.js +1 -1
  190. package/indicators/mfi.js +1 -1
  191. package/indicators/mfi.src.js +1 -1
  192. package/indicators/momentum.js +1 -1
  193. package/indicators/momentum.src.js +1 -1
  194. package/indicators/natr.js +1 -1
  195. package/indicators/natr.src.js +1 -1
  196. package/indicators/pivot-points.js +1 -1
  197. package/indicators/pivot-points.src.js +1 -1
  198. package/indicators/ppo.js +1 -1
  199. package/indicators/ppo.src.js +1 -1
  200. package/indicators/price-channel.js +1 -1
  201. package/indicators/price-channel.src.js +1 -1
  202. package/indicators/price-envelopes.js +1 -1
  203. package/indicators/price-envelopes.src.js +1 -1
  204. package/indicators/psar.js +1 -1
  205. package/indicators/psar.src.js +1 -1
  206. package/indicators/regressions.js +1 -1
  207. package/indicators/regressions.src.js +1 -1
  208. package/indicators/roc.js +1 -1
  209. package/indicators/roc.src.js +1 -1
  210. package/indicators/rsi.js +1 -1
  211. package/indicators/rsi.src.js +1 -1
  212. package/indicators/stochastic.js +1 -1
  213. package/indicators/stochastic.src.js +1 -1
  214. package/indicators/supertrend.js +1 -1
  215. package/indicators/supertrend.src.js +1 -1
  216. package/indicators/tema.js +1 -1
  217. package/indicators/tema.src.js +1 -1
  218. package/indicators/trix.js +1 -1
  219. package/indicators/trix.src.js +1 -1
  220. package/indicators/volume-by-price.js +1 -1
  221. package/indicators/volume-by-price.src.js +1 -1
  222. package/indicators/vwap.js +1 -1
  223. package/indicators/vwap.src.js +1 -1
  224. package/indicators/williams-r.js +1 -1
  225. package/indicators/williams-r.src.js +1 -1
  226. package/indicators/wma.js +1 -1
  227. package/indicators/wma.src.js +1 -1
  228. package/indicators/zigzag.js +1 -1
  229. package/indicators/zigzag.src.js +1 -1
  230. package/modules/accessibility.js +92 -89
  231. package/modules/accessibility.js.map +1 -1
  232. package/modules/accessibility.src.js +138 -15
  233. package/modules/annotations-advanced.js +128 -127
  234. package/modules/annotations-advanced.js.map +1 -1
  235. package/modules/annotations-advanced.src.js +514 -396
  236. package/modules/annotations.d.ts +36 -0
  237. package/modules/annotations.js +81 -81
  238. package/modules/annotations.js.map +1 -1
  239. package/modules/annotations.src.d.ts +36 -0
  240. package/modules/annotations.src.js +418 -315
  241. package/modules/arrow-symbols.js +1 -1
  242. package/modules/arrow-symbols.src.js +1 -1
  243. package/modules/boost-canvas.js +1 -1
  244. package/modules/boost-canvas.src.js +1 -1
  245. package/modules/boost.js +63 -63
  246. package/modules/boost.js.map +1 -1
  247. package/modules/boost.src.js +99 -39
  248. package/modules/broken-axis.js +1 -1
  249. package/modules/broken-axis.src.js +2 -2
  250. package/modules/bullet.js +1 -1
  251. package/modules/bullet.src.js +69 -69
  252. package/modules/current-date-indicator.js +1 -1
  253. package/modules/current-date-indicator.src.js +1 -1
  254. package/modules/cylinder.js +1 -1
  255. package/modules/cylinder.js.map +1 -1
  256. package/modules/cylinder.src.js +4 -2
  257. package/modules/data.js +4 -4
  258. package/modules/data.js.map +1 -1
  259. package/modules/data.src.js +10 -6
  260. package/modules/datagrouping.js +1 -1
  261. package/modules/datagrouping.src.js +1 -1
  262. package/modules/debugger.js +4 -4
  263. package/modules/debugger.js.map +1 -1
  264. package/modules/debugger.src.js +7 -2
  265. package/modules/dependency-wheel.js +1 -1
  266. package/modules/dependency-wheel.src.js +1 -1
  267. package/modules/dotplot.js +1 -1
  268. package/modules/dotplot.src.js +1 -1
  269. package/modules/drag-panes.js +1 -1
  270. package/modules/drag-panes.src.js +1 -1
  271. package/modules/draggable-points.js +1 -1
  272. package/modules/draggable-points.src.js +2 -2
  273. package/modules/drilldown.js +1 -1
  274. package/modules/drilldown.src.js +2 -2
  275. package/modules/export-data.js +2 -2
  276. package/modules/export-data.js.map +1 -1
  277. package/modules/export-data.src.js +8 -9
  278. package/modules/exporting.js +25 -25
  279. package/modules/exporting.js.map +1 -1
  280. package/modules/exporting.src.js +11 -3
  281. package/modules/full-screen.js +1 -1
  282. package/modules/full-screen.src.js +2 -2
  283. package/modules/funnel.js +1 -1
  284. package/modules/funnel.src.js +1 -1
  285. package/modules/funnel3d.js +2 -2
  286. package/modules/funnel3d.js.map +1 -1
  287. package/modules/funnel3d.src.js +11 -4
  288. package/modules/gantt.js +166 -164
  289. package/modules/gantt.js.map +1 -1
  290. package/modules/gantt.src.js +422 -295
  291. package/modules/grid-axis.js +18 -16
  292. package/modules/grid-axis.js.map +1 -1
  293. package/modules/grid-axis.src.js +184 -102
  294. package/modules/heatmap.js +22 -22
  295. package/modules/heatmap.js.map +1 -1
  296. package/modules/heatmap.src.js +36 -15
  297. package/modules/histogram-bellcurve.js +1 -1
  298. package/modules/histogram-bellcurve.js.map +1 -1
  299. package/modules/histogram-bellcurve.src.js +186 -183
  300. package/modules/item-series.js +1 -1
  301. package/modules/item-series.src.js +11 -11
  302. package/modules/map-parser.js +1 -1
  303. package/modules/map-parser.src.js +1 -1
  304. package/modules/map.js +83 -83
  305. package/modules/map.js.map +1 -1
  306. package/modules/map.src.js +67 -34
  307. package/modules/networkgraph.js +10 -9
  308. package/modules/networkgraph.js.map +1 -1
  309. package/modules/networkgraph.src.js +180 -72
  310. package/modules/no-data-to-display.js +1 -1
  311. package/modules/no-data-to-display.src.js +1 -1
  312. package/modules/offline-exporting.js +15 -15
  313. package/modules/offline-exporting.js.map +1 -1
  314. package/modules/offline-exporting.src.js +17 -4
  315. package/modules/oldie-polyfills.js +1 -1
  316. package/modules/oldie-polyfills.src.js +2 -2
  317. package/modules/oldie.js +2 -2
  318. package/modules/oldie.src.js +2 -2
  319. package/modules/organization.js +1 -1
  320. package/modules/organization.js.map +1 -1
  321. package/modules/organization.src.js +66 -21
  322. package/modules/overlapping-datalabels.js +1 -1
  323. package/modules/overlapping-datalabels.src.js +1 -1
  324. package/modules/parallel-coordinates.js +1 -1
  325. package/modules/parallel-coordinates.src.js +1 -1
  326. package/modules/pareto.js +1 -1
  327. package/modules/pareto.js.map +1 -1
  328. package/modules/pareto.src.js +53 -52
  329. package/modules/pathfinder.js +3 -3
  330. package/modules/pathfinder.js.map +1 -1
  331. package/modules/pathfinder.src.js +3 -3
  332. package/modules/pattern-fill.js +1 -1
  333. package/modules/pattern-fill.src.js +2 -2
  334. package/modules/price-indicator.js +1 -1
  335. package/modules/price-indicator.src.js +2 -2
  336. package/modules/pyramid3d.js +1 -1
  337. package/modules/pyramid3d.src.js +2 -2
  338. package/modules/sankey.js +14 -14
  339. package/modules/sankey.js.map +1 -1
  340. package/modules/sankey.src.js +39 -19
  341. package/modules/series-label.js +16 -16
  342. package/modules/series-label.js.map +1 -1
  343. package/modules/series-label.src.js +17 -9
  344. package/modules/solid-gauge.js +5 -5
  345. package/modules/solid-gauge.js.map +1 -1
  346. package/modules/solid-gauge.src.js +129 -80
  347. package/modules/sonification.js +1 -1
  348. package/modules/sonification.src.js +1 -1
  349. package/modules/static-scale.js +4 -4
  350. package/modules/static-scale.js.map +1 -1
  351. package/modules/static-scale.src.js +9 -2
  352. package/modules/stock-tools.js +2 -2
  353. package/modules/stock-tools.src.js +3 -3
  354. package/modules/stock.js +146 -145
  355. package/modules/stock.js.map +1 -1
  356. package/modules/stock.src.js +105 -61
  357. package/modules/streamgraph.js +1 -1
  358. package/modules/streamgraph.src.js +12 -12
  359. package/modules/sunburst.js +40 -40
  360. package/modules/sunburst.js.map +1 -1
  361. package/modules/sunburst.src.js +30 -9
  362. package/modules/tilemap.js +1 -1
  363. package/modules/tilemap.js.map +1 -1
  364. package/modules/tilemap.src.js +59 -58
  365. package/modules/timeline.js +12 -11
  366. package/modules/timeline.js.map +1 -1
  367. package/modules/timeline.src.js +18 -13
  368. package/modules/treegrid.js +45 -43
  369. package/modules/treegrid.js.map +1 -1
  370. package/modules/treegrid.src.js +238 -139
  371. package/modules/treemap.js +1 -1
  372. package/modules/treemap.src.js +7 -7
  373. package/modules/variable-pie.js +1 -1
  374. package/modules/variable-pie.src.js +1 -1
  375. package/modules/variwide.js +1 -1
  376. package/modules/variwide.src.js +40 -40
  377. package/modules/vector.js +1 -1
  378. package/modules/vector.js.map +1 -1
  379. package/modules/vector.src.js +109 -108
  380. package/modules/venn.js +23 -23
  381. package/modules/venn.js.map +1 -1
  382. package/modules/venn.src.js +5 -3
  383. package/modules/windbarb.js +1 -1
  384. package/modules/windbarb.src.js +44 -44
  385. package/modules/wordcloud.js +10 -10
  386. package/modules/wordcloud.js.map +1 -1
  387. package/modules/wordcloud.src.js +2 -1
  388. package/modules/xrange.js +12 -12
  389. package/modules/xrange.js.map +1 -1
  390. package/modules/xrange.src.js +113 -105
  391. package/package.json +1 -1
  392. package/themes/avocado.js +21 -37
  393. package/themes/avocado.src.js +1 -1
  394. package/themes/dark-blue.js +1 -1
  395. package/themes/dark-blue.src.js +1 -1
  396. package/themes/dark-green.js +1 -1
  397. package/themes/dark-green.src.js +1 -1
  398. package/themes/dark-unica.js +1 -1
  399. package/themes/dark-unica.src.js +1 -1
  400. package/themes/gray.js +1 -1
  401. package/themes/gray.src.js +1 -1
  402. package/themes/grid-light.js +1 -1
  403. package/themes/grid-light.src.js +1 -1
  404. package/themes/grid.js +1 -1
  405. package/themes/grid.src.js +1 -1
  406. package/themes/sand-signika.js +1 -1
  407. package/themes/sand-signika.src.js +1 -1
  408. package/themes/skies.js +1 -1
  409. package/themes/skies.src.js +1 -1
  410. package/themes/sunset.js +21 -37
  411. package/themes/sunset.src.js +1 -1
  412. package/.DS_Store +0 -0
  413. package/es-modules/.DS_Store +0 -0
  414. package/es-modules/modules/annotations-legacy.src.js +0 -1977
  415. package/js/.DS_Store +0 -0
@@ -1,123 +1,103 @@
1
1
  /* *
2
- * (c) 2010-2019 Torstein Honsi
3
2
  *
4
- * License: www.highcharts.com/license
5
- */
6
-
3
+ * (c) 2010-2019 Torstein Honsi
4
+ *
5
+ * License: www.highcharts.com/license
6
+ *
7
+ * !!!!!!! SOURCE GETS TRANSPILED BY TYPESCRIPT. EDIT TS FILE ONLY. !!!!!!!
8
+ *
9
+ * */
10
+ 'use strict';
11
+ import Highcharts from './Globals.js';
7
12
  /**
8
13
  * One position in relation to an axis.
9
14
  *
10
15
  * @interface Highcharts.PointerAxisCoordinateObject
11
- *//**
12
- * Related axis.
13
- *
14
- * @name Highcharts.PointerAxisCoordinateObject#axis
15
- * @type {Highcharts.Axis}
16
- *//**
17
- * Axis value.
18
- *
19
- * @name Highcharts.PointerAxisCoordinateObject#value
20
- * @type {number}
21
- */
22
-
16
+ */ /**
17
+ * Related axis.
18
+ *
19
+ * @name Highcharts.PointerAxisCoordinateObject#axis
20
+ * @type {Highcharts.Axis}
21
+ */ /**
22
+ * Axis value.
23
+ *
24
+ * @name Highcharts.PointerAxisCoordinateObject#value
25
+ * @type {number}
26
+ */
23
27
  /**
24
28
  * Positions in terms of axis values.
25
29
  *
26
30
  * @interface Highcharts.PointerAxisCoordinatesObject
27
- *//**
28
- * Positions on the x-axis.
29
- * @name Highcharts.PointerAxisCoordinatesObject#xAxis
30
- * @type {Array<Highcharts.PointerAxisCoordinateObject>}
31
- *//**
32
- * Positions on the y-axis.
33
- * @name Highcharts.PointerAxisCoordinatesObject#yAxis
34
- * @type {Array<Highcharts.PointerAxisCoordinateObject>}
35
- */
36
-
31
+ */ /**
32
+ * Positions on the x-axis.
33
+ * @name Highcharts.PointerAxisCoordinatesObject#xAxis
34
+ * @type {Array<Highcharts.PointerAxisCoordinateObject>}
35
+ */ /**
36
+ * Positions on the y-axis.
37
+ * @name Highcharts.PointerAxisCoordinatesObject#yAxis
38
+ * @type {Array<Highcharts.PointerAxisCoordinateObject>}
39
+ */
37
40
  /**
38
41
  * Pointer coordinates.
39
42
  *
40
43
  * @interface Highcharts.PointerCoordinatesObject
41
- *//**
42
- * @name Highcharts.PointerCoordinatesObject#chartX
43
- * @type {number}
44
- *//**
45
- * @name Highcharts.PointerCoordinatesObject#chartY
46
- * @type {number}
47
- */
48
-
44
+ */ /**
45
+ * @name Highcharts.PointerCoordinatesObject#chartX
46
+ * @type {number}
47
+ */ /**
48
+ * @name Highcharts.PointerCoordinatesObject#chartY
49
+ * @type {number}
50
+ */
49
51
  /**
50
52
  * A native browser mouse or touch event, extended with position information
51
53
  * relative to the {@link Chart.container}.
52
54
  *
53
55
  * @interface Highcharts.PointerEventObject
54
56
  * @extends global.PointerEvent
55
- *//**
56
- * The X coordinate of the pointer interaction relative to the chart.
57
- *
58
- * @name Highcharts.PointerEventObject#chartX
59
- * @type {number}
60
- *//**
61
- * The Y coordinate of the pointer interaction relative to the chart.
62
- *
63
- * @name Highcharts.PointerEventObject#chartY
64
- * @type {number}
65
- */
66
-
57
+ */ /**
58
+ * The X coordinate of the pointer interaction relative to the chart.
59
+ *
60
+ * @name Highcharts.PointerEventObject#chartX
61
+ * @type {number}
62
+ */ /**
63
+ * The Y coordinate of the pointer interaction relative to the chart.
64
+ *
65
+ * @name Highcharts.PointerEventObject#chartY
66
+ * @type {number}
67
+ */
67
68
  /**
68
69
  * Axis-specific data of a selection.
69
70
  *
70
71
  * @interface Highcharts.SelectDataObject
71
- *//**
72
- * @name Highcharts.SelectDataObject#axis
73
- * @type {Highcharts.Axis}
74
- *//**
75
- * @name Highcharts.SelectDataObject#min
76
- * @type {number}
77
- *//**
78
- * @name Highcharts.SelectDataObject#max
79
- * @type {number}
80
- */
81
-
72
+ */ /**
73
+ * @name Highcharts.SelectDataObject#axis
74
+ * @type {Highcharts.Axis}
75
+ */ /**
76
+ * @name Highcharts.SelectDataObject#max
77
+ * @type {number}
78
+ */ /**
79
+ * @name Highcharts.SelectDataObject#min
80
+ * @type {number}
81
+ */
82
82
  /**
83
83
  * Object for select events.
84
84
  *
85
85
  * @interface Highcharts.SelectEventObject
86
- *//**
87
- * @name Highcharts.SelectEventObject#originalEvent
88
- * @type {global.Event}
89
- *//**
90
- * @name Highcharts.SelectEventObject#xAxis
91
- * @type {Array<Highcharts.SelectDataObject>}
92
- *//**
93
- * @name Highcharts.SelectEventObject#yAxis
94
- * @type {Array<Highcharts.SelectDataObject>}
95
- */
96
-
97
- 'use strict';
98
-
99
- import Highcharts from './Globals.js';
86
+ */ /**
87
+ * @name Highcharts.SelectEventObject#originalEvent
88
+ * @type {global.Event}
89
+ */ /**
90
+ * @name Highcharts.SelectEventObject#xAxis
91
+ * @type {Array<Highcharts.SelectDataObject>}
92
+ */ /**
93
+ * @name Highcharts.SelectEventObject#yAxis
94
+ * @type {Array<Highcharts.SelectDataObject>}
95
+ */
100
96
  import './Utilities.js';
101
97
  import './Tooltip.js';
102
98
  import './Color.js';
103
-
104
- var H = Highcharts,
105
- addEvent = H.addEvent,
106
- attr = H.attr,
107
- charts = H.charts,
108
- color = H.color,
109
- css = H.css,
110
- defined = H.defined,
111
- extend = H.extend,
112
- find = H.find,
113
- fireEvent = H.fireEvent,
114
- isNumber = H.isNumber,
115
- isObject = H.isObject,
116
- offset = H.offset,
117
- pick = H.pick,
118
- splat = H.splat,
119
- Tooltip = H.Tooltip;
120
-
99
+ var H = Highcharts, addEvent = H.addEvent, attr = H.attr, charts = H.charts, color = H.color, css = H.css, defined = H.defined, extend = H.extend, find = H.find, fireEvent = H.fireEvent, isNumber = H.isNumber, isObject = H.isObject, offset = H.offset, pick = H.pick, splat = H.splat, Tooltip = H.Tooltip;
100
+ /* eslint-disable no-invalid-this, valid-jsdoc */
121
101
  /**
122
102
  * The mouse and touch tracker object. Each {@link Chart} item has one
123
103
  * assosiated Pointer item that can be accessed from the {@link Chart.pointer}
@@ -136,7 +116,6 @@ var H = Highcharts,
136
116
  Highcharts.Pointer = function (chart, options) {
137
117
  this.init(chart, options);
138
118
  };
139
-
140
119
  Highcharts.Pointer.prototype = {
141
120
  /**
142
121
  * Initialize the Pointer.
@@ -150,20 +129,19 @@ Highcharts.Pointer.prototype = {
150
129
  * @param {Highcharts.Options} options
151
130
  * The root options object. The pointer uses options from the chart
152
131
  * and tooltip structures.
132
+ *
133
+ * @return {void}
153
134
  */
154
135
  init: function (chart, options) {
155
-
156
136
  // Store references
157
137
  this.options = options;
158
138
  this.chart = chart;
159
-
160
139
  // Do we need to handle click on a touch device?
161
140
  this.runChartClick =
162
- options.chart.events && !!options.chart.events.click;
163
-
141
+ options.chart.events &&
142
+ !!options.chart.events.click;
164
143
  this.pinchDown = [];
165
144
  this.lastValidTouch = {};
166
-
167
145
  if (Tooltip) {
168
146
  /**
169
147
  * Tooltip object for points of series.
@@ -174,10 +152,8 @@ Highcharts.Pointer.prototype = {
174
152
  chart.tooltip = new Tooltip(chart, options.tooltip);
175
153
  this.followTouchMove = pick(options.tooltip.followTouchMove, true);
176
154
  }
177
-
178
155
  this.setDOMEvents();
179
156
  },
180
-
181
157
  /**
182
158
  * Resolve the zoomType option, this is reset on all touch start and mouse
183
159
  * down events.
@@ -187,27 +163,21 @@ Highcharts.Pointer.prototype = {
187
163
  *
188
164
  * @param {global.Event} e
189
165
  * Event object.
166
+ *
167
+ * @param {void}
190
168
  */
191
169
  zoomOption: function (e) {
192
- var chart = this.chart,
193
- options = chart.options.chart,
194
- zoomType = options.zoomType || '',
195
- inverted = chart.inverted,
196
- zoomX,
197
- zoomY;
198
-
170
+ var chart = this.chart, options = chart.options.chart, zoomType = options.zoomType || '', inverted = chart.inverted, zoomX, zoomY;
199
171
  // Look for the pinchType option
200
172
  if (/touch/.test(e.type)) {
201
173
  zoomType = pick(options.pinchType, zoomType);
202
174
  }
203
-
204
175
  this.zoomX = zoomX = /x/.test(zoomType);
205
176
  this.zoomY = zoomY = /y/.test(zoomType);
206
177
  this.zoomHor = (zoomX && !inverted) || (zoomY && inverted);
207
178
  this.zoomVert = (zoomY && !inverted) || (zoomX && inverted);
208
179
  this.hasZoom = zoomX || zoomY;
209
180
  },
210
-
211
181
  /**
212
182
  * Takes a browser event object and extends it with custom Highcharts
213
183
  * properties `chartX` and `chartY` in order to work on the internal
@@ -218,28 +188,29 @@ Highcharts.Pointer.prototype = {
218
188
  * @param {global.Event} e
219
189
  * Event object in standard browsers.
220
190
  *
191
+ * @param {Highcharts.OffsetObject} [chartPosition]
192
+ * Additional chart offset.
193
+ *
221
194
  * @return {Highcharts.PointerEventObject}
222
195
  * A browser event with extended properties `chartX` and `chartY`.
223
196
  */
224
197
  normalize: function (e, chartPosition) {
225
198
  var ePos;
226
-
227
199
  // iOS (#2757)
228
200
  ePos = e.touches ?
229
- (e.touches.length ? e.touches.item(0) : e.changedTouches[0]) :
201
+ (e.touches.length ?
202
+ e.touches.item(0) :
203
+ e.changedTouches[0]) :
230
204
  e;
231
-
232
205
  // Get mouse position
233
206
  if (!chartPosition) {
234
207
  this.chartPosition = chartPosition = offset(this.chart.container);
235
208
  }
236
-
237
209
  return extend(e, {
238
210
  chartX: Math.round(ePos.pageX - chartPosition.left),
239
211
  chartY: Math.round(ePos.pageY - chartPosition.top)
240
212
  });
241
213
  },
242
-
243
214
  /**
244
215
  * Get the click position in terms of axis values.
245
216
  *
@@ -251,22 +222,18 @@ Highcharts.Pointer.prototype = {
251
222
  * @return {Highcharts.PointerAxisCoordinatesObject}
252
223
  */
253
224
  getCoordinates: function (e) {
254
-
255
225
  var coordinates = {
256
226
  xAxis: [],
257
227
  yAxis: []
258
228
  };
259
-
260
229
  this.chart.axes.forEach(function (axis) {
261
230
  coordinates[axis.isXAxis ? 'xAxis' : 'yAxis'].push({
262
231
  axis: axis,
263
232
  value: axis.toValue(e[axis.horiz ? 'chartX' : 'chartY'])
264
233
  });
265
234
  });
266
-
267
235
  return coordinates;
268
236
  },
269
-
270
237
  /**
271
238
  * Finds the closest point to a set of coordinates, using the k-d-tree
272
239
  * algorithm.
@@ -283,59 +250,45 @@ Highcharts.Pointer.prototype = {
283
250
  * The pointer event object, containing chart coordinates of the
284
251
  * pointer.
285
252
  *
286
- * @return {Point|undefined}
253
+ * @return {Highcharts.Point|undefined}
287
254
  * The point closest to given coordinates.
288
255
  */
289
256
  findNearestKDPoint: function (series, shared, e) {
290
- var closest,
291
- sort = function (p1, p2) {
292
- var isCloserX = p1.distX - p2.distX,
293
- isCloser = p1.dist - p2.dist,
294
- isAbove =
295
- (p2.series.group && p2.series.group.zIndex) -
296
- (p1.series.group && p1.series.group.zIndex),
297
- result;
298
-
299
- // We have two points which are not in the same place on xAxis
300
- // and shared tooltip:
301
- if (isCloserX !== 0 && shared) { // #5721
302
- result = isCloserX;
257
+ var closest, sort = function (p1, p2) {
258
+ var isCloserX = p1.distX - p2.distX, isCloser = p1.dist - p2.dist, isAbove = (p2.series.group && p2.series.group.zIndex) -
259
+ (p1.series.group && p1.series.group.zIndex), result;
260
+ // We have two points which are not in the same place on xAxis
261
+ // and shared tooltip:
262
+ if (isCloserX !== 0 && shared) { // #5721
263
+ result = isCloserX;
303
264
  // Points are not exactly in the same place on x/yAxis:
304
- } else if (isCloser !== 0) {
305
- result = isCloser;
265
+ }
266
+ else if (isCloser !== 0) {
267
+ result = isCloser;
306
268
  // The same xAxis and yAxis position, sort by z-index:
307
- } else if (isAbove !== 0) {
308
- result = isAbove;
269
+ }
270
+ else if (isAbove !== 0) {
271
+ result = isAbove;
309
272
  // The same zIndex, sort by array index:
310
- } else {
311
- result = p1.series.index > p2.series.index ? -1 : 1;
312
- }
313
- return result;
314
- };
315
-
273
+ }
274
+ else {
275
+ result = p1.series.index > p2.series.index ? -1 : 1;
276
+ }
277
+ return result;
278
+ };
316
279
  series.forEach(function (s) {
317
- var noSharedTooltip = s.noSharedTooltip && shared,
318
- compareX = (
319
- !noSharedTooltip &&
320
- s.options.findNearestPointBy.indexOf('y') < 0
321
- ),
322
- point = s.searchPoint(
323
- e,
324
- compareX
325
- );
326
-
280
+ var noSharedTooltip = s.noSharedTooltip && shared, compareX = (!noSharedTooltip &&
281
+ s.options.findNearestPointBy.indexOf('y') < 0), point = s.searchPoint(e, compareX);
327
282
  if (
328
- // Check that we actually found a point on the series.
329
- isObject(point, true) &&
283
+ // Check that we actually found a point on the series.
284
+ isObject(point, true) &&
330
285
  // Use the new point if it is closer.
331
- (!isObject(closest, true) || (sort(closest, point) > 0))
332
- ) {
286
+ (!isObject(closest, true) || (sort(closest, point) > 0))) {
333
287
  closest = point;
334
288
  }
335
289
  });
336
290
  return closest;
337
291
  },
338
-
339
292
  /**
340
293
  * @private
341
294
  * @function Highcharts.Pointer#getPointFromEvent
@@ -345,16 +298,13 @@ Highcharts.Pointer.prototype = {
345
298
  * @return {Highcharts.Point|undefined}
346
299
  */
347
300
  getPointFromEvent: function (e) {
348
- var target = e.target,
349
- point;
350
-
301
+ var target = e.target, point;
351
302
  while (target && !point) {
352
303
  point = target.point;
353
304
  target = target.parentNode;
354
305
  }
355
306
  return point;
356
307
  },
357
-
358
308
  /**
359
309
  * @private
360
310
  * @function Highcharts.Pointer#getChartCoordinatesFromPoint
@@ -363,15 +313,10 @@ Highcharts.Pointer.prototype = {
363
313
  *
364
314
  * @param {boolean} inverted
365
315
  *
366
- * @return {Highcharts.PointerCoordinatesObject}
316
+ * @return {Highcharts.PointerCoordinatesObject|undefined}
367
317
  */
368
318
  getChartCoordinatesFromPoint: function (point, inverted) {
369
- var series = point.series,
370
- xAxis = series.xAxis,
371
- yAxis = series.yAxis,
372
- plotX = pick(point.clientX, point.plotX),
373
- shapeArgs = point.shapeArgs;
374
-
319
+ var series = point.series, xAxis = series.xAxis, yAxis = series.yAxis, plotX = pick(point.clientX, point.plotX), shapeArgs = point.shapeArgs;
375
320
  if (xAxis && yAxis) {
376
321
  return inverted ? {
377
322
  chartX: xAxis.len + xAxis.pos - plotX,
@@ -381,7 +326,6 @@ Highcharts.Pointer.prototype = {
381
326
  chartY: point.plotY + yAxis.pos
382
327
  };
383
328
  }
384
-
385
329
  if (shapeArgs && shapeArgs.x && shapeArgs.y) {
386
330
  // E.g. pies do not have axes
387
331
  return {
@@ -390,7 +334,6 @@ Highcharts.Pointer.prototype = {
390
334
  };
391
335
  }
392
336
  },
393
-
394
337
  /**
395
338
  * Calculates what is the current hovered point/points and series.
396
339
  *
@@ -415,47 +358,30 @@ Highcharts.Pointer.prototype = {
415
358
  * @param {Highcharts.PointerEventObject} e
416
359
  * The triggering event, containing chart coordinates of the pointer.
417
360
  *
418
- * @return {*}
361
+ * @return {object}
419
362
  * Object containing resulting hover data: hoverPoint, hoverSeries,
420
363
  * and hoverPoints.
421
364
  */
422
- getHoverData: function (
423
- existingHoverPoint,
424
- existingHoverSeries,
425
- series,
426
- isDirectTouch,
427
- shared,
428
- e
429
- ) {
430
- var hoverPoint,
431
- hoverPoints = [],
432
- hoverSeries = existingHoverSeries,
433
- useExisting = !!(isDirectTouch && existingHoverPoint),
434
- notSticky = hoverSeries && !hoverSeries.stickyTracking,
435
- filter = function (s) {
436
- return (
437
- s.visible &&
438
- !(!shared && s.directTouch) && // #3821
439
- pick(s.options.enableMouseTracking, true)
440
- );
441
- },
442
- // Which series to look in for the hover point
443
- searchSeries = notSticky ?
444
- // Only search on hovered series if it has stickyTracking false
445
- [hoverSeries] :
446
- // Filter what series to look in.
447
- series.filter(function (s) {
448
- return filter(s) && s.stickyTracking;
449
- });
450
-
365
+ getHoverData: function (existingHoverPoint, existingHoverSeries, series, isDirectTouch, shared, e) {
366
+ var hoverPoint, hoverPoints = [], hoverSeries = existingHoverSeries, useExisting = !!(isDirectTouch && existingHoverPoint), notSticky = hoverSeries && !hoverSeries.stickyTracking, filter = function (s) {
367
+ return (s.visible &&
368
+ !(!shared && s.directTouch) && // #3821
369
+ pick(s.options.enableMouseTracking, true));
370
+ },
371
+ // Which series to look in for the hover point
372
+ searchSeries = notSticky ?
373
+ // Only search on hovered series if it has stickyTracking false
374
+ [hoverSeries] :
375
+ // Filter what series to look in.
376
+ series.filter(function (s) {
377
+ return filter(s) && s.stickyTracking;
378
+ });
451
379
  // Use existing hovered point or find the one closest to coordinates.
452
380
  hoverPoint = useExisting ?
453
381
  existingHoverPoint :
454
382
  this.findNearestKDPoint(searchSeries, shared, e);
455
-
456
383
  // Assign hover series
457
384
  hoverSeries = hoverPoint && hoverPoint.series;
458
-
459
385
  // If we have a hoverPoint, assign hoverPoints.
460
386
  if (hoverPoint) {
461
387
  // When tooltip is shared, it displays more than one point
@@ -463,13 +389,11 @@ Highcharts.Pointer.prototype = {
463
389
  searchSeries = series.filter(function (s) {
464
390
  return filter(s) && !s.noSharedTooltip;
465
391
  });
466
-
467
392
  // Get all points with the same x value as the hoverPoint
468
393
  searchSeries.forEach(function (s) {
469
394
  var point = find(s.points, function (p) {
470
395
  return p.x === hoverPoint.x && !p.isNull;
471
396
  });
472
-
473
397
  if (isObject(point)) {
474
398
  /*
475
399
  * Boost returns a minimal point. Convert it to a usable
@@ -481,7 +405,8 @@ Highcharts.Pointer.prototype = {
481
405
  hoverPoints.push(point);
482
406
  }
483
407
  });
484
- } else {
408
+ }
409
+ else {
485
410
  hoverPoints.push(hoverPoint);
486
411
  }
487
412
  }
@@ -491,7 +416,6 @@ Highcharts.Pointer.prototype = {
491
416
  hoverPoints: hoverPoints
492
417
  };
493
418
  },
494
-
495
419
  /**
496
420
  * With line type charts with a single tracker, get the point closest to the
497
421
  * mouse. Run Point.onMouseOver and display tooltip for the point or points.
@@ -501,101 +425,64 @@ Highcharts.Pointer.prototype = {
501
425
  *
502
426
  * @param {global.Event} e
503
427
  *
504
- * @param {Highcharts.Point} p
428
+ * @param {Highcharts.PointerEventObject} [p]
429
+ *
430
+ * @return {void}
505
431
  *
506
432
  * @fires Highcharts.Point#event:mouseOut
507
433
  * @fires Highcharts.Point#event:mouseOver
508
434
  */
509
435
  runPointActions: function (e, p) {
510
- var pointer = this,
511
- chart = pointer.chart,
512
- series = chart.series,
513
- tooltip = chart.tooltip && chart.tooltip.options.enabled ?
514
- chart.tooltip :
515
- undefined,
516
- shared = tooltip ? tooltip.shared : false,
517
- hoverPoint = p || chart.hoverPoint,
518
- hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries,
519
- // onMouseOver or already hovering a series with directTouch
520
- isDirectTouch = e.type !== 'touchmove' && (
521
- !!p || (
522
- (hoverSeries && hoverSeries.directTouch) &&
523
- pointer.isDirectTouch
524
- )
525
- ),
526
- hoverData = this.getHoverData(
527
- hoverPoint,
528
- hoverSeries,
529
- series,
530
- isDirectTouch,
531
- shared,
532
- e
533
- ),
534
- activeSeries = [],
535
- useSharedTooltip,
536
- followPointer,
537
- anchor,
538
- points;
539
-
436
+ var pointer = this, chart = pointer.chart, series = chart.series, tooltip = chart.tooltip && chart.tooltip.options.enabled ?
437
+ chart.tooltip :
438
+ undefined, shared = tooltip ? tooltip.shared : false, hoverPoint = p || chart.hoverPoint, hoverSeries = hoverPoint && hoverPoint.series || chart.hoverSeries,
439
+ // onMouseOver or already hovering a series with directTouch
440
+ isDirectTouch = e.type !== 'touchmove' && (!!p || ((hoverSeries && hoverSeries.directTouch) &&
441
+ pointer.isDirectTouch)), hoverData = this.getHoverData(hoverPoint, hoverSeries, series, isDirectTouch, shared, e), activeSeries = [], useSharedTooltip, followPointer, anchor, points;
540
442
  // Update variables from hoverData.
541
443
  hoverPoint = hoverData.hoverPoint;
542
444
  points = hoverData.hoverPoints;
543
445
  hoverSeries = hoverData.hoverSeries;
544
446
  followPointer = hoverSeries && hoverSeries.tooltipOptions.followPointer;
545
- useSharedTooltip = (
546
- shared &&
447
+ useSharedTooltip = (shared &&
547
448
  hoverSeries &&
548
- !hoverSeries.noSharedTooltip
549
- );
550
-
449
+ !hoverSeries.noSharedTooltip);
551
450
  // Refresh tooltip for kdpoint if new hover point or tooltip was hidden
552
451
  // #3926, #4200
553
- if (
554
- hoverPoint &&
452
+ if (hoverPoint &&
555
453
  // !(hoverSeries && hoverSeries.directTouch) &&
556
- (hoverPoint !== chart.hoverPoint || (tooltip && tooltip.isHidden))
557
- ) {
454
+ (hoverPoint !== chart.hoverPoint || (tooltip && tooltip.isHidden))) {
558
455
  (chart.hoverPoints || []).forEach(function (p) {
559
456
  if (points.indexOf(p) === -1) {
560
457
  p.setState();
561
458
  }
562
459
  });
563
-
564
460
  // Set normal state to previous series
565
461
  if (chart.hoverSeries !== hoverSeries) {
566
462
  hoverSeries.onMouseOver();
567
463
  }
568
-
569
464
  // Set inactive state for all points
570
465
  activeSeries = pointer.getActiveSeries(points);
571
-
572
466
  chart.series.forEach(function (inactiveSeries) {
573
- if (
574
- inactiveSeries.options.inactiveOtherPoints ||
575
- activeSeries.indexOf(inactiveSeries) === -1
576
- ) {
467
+ if (inactiveSeries.options.inactiveOtherPoints ||
468
+ activeSeries.indexOf(inactiveSeries) === -1) {
577
469
  inactiveSeries.setState('inactive', true);
578
470
  }
579
471
  });
580
-
581
472
  // Do mouseover on all points (#3919, #3985, #4410, #5622)
582
473
  (points || []).forEach(function (p) {
583
474
  p.setState('hover');
584
475
  });
585
-
586
476
  // If tracking is on series in stead of on each point,
587
477
  // fire mouseOver on hover point. // #4448
588
478
  if (chart.hoverPoint) {
589
479
  chart.hoverPoint.firePointEvent('mouseOut');
590
480
  }
591
-
592
481
  // Hover point may have been destroyed in the event handlers (#7127)
593
482
  if (!hoverPoint.series) {
594
483
  return;
595
484
  }
596
-
597
485
  hoverPoint.firePointEvent('mouseOver');
598
-
599
486
  /**
600
487
  * Contains all hovered points.
601
488
  *
@@ -603,7 +490,6 @@ Highcharts.Pointer.prototype = {
603
490
  * @type {Array<Highcharts.Point>|null}
604
491
  */
605
492
  chart.hoverPoints = points;
606
-
607
493
  /**
608
494
  * Contains the original hovered point.
609
495
  *
@@ -611,52 +497,43 @@ Highcharts.Pointer.prototype = {
611
497
  * @type {Highcharts.Point|null}
612
498
  */
613
499
  chart.hoverPoint = hoverPoint;
614
-
615
500
  // Draw tooltip if necessary
616
501
  if (tooltip) {
617
502
  tooltip.refresh(useSharedTooltip ? points : hoverPoint, e);
618
503
  }
619
- // Update positions (regardless of kdpoint or hoverPoint)
620
- } else if (followPointer && tooltip && !tooltip.isHidden) {
504
+ // Update positions (regardless of kdpoint or hoverPoint)
505
+ }
506
+ else if (followPointer && tooltip && !tooltip.isHidden) {
621
507
  anchor = tooltip.getAnchor([{}], e);
622
508
  tooltip.updatePosition({ plotX: anchor[0], plotY: anchor[1] });
623
509
  }
624
-
625
510
  // Start the event listener to pick up the tooltip and crosshairs
626
511
  if (!pointer.unDocMouseMove) {
627
- pointer.unDocMouseMove = addEvent(
628
- chart.container.ownerDocument,
629
- 'mousemove',
630
- function (e) {
631
- var chart = charts[H.hoverChartIndex];
632
-
633
- if (chart) {
634
- chart.pointer.onDocumentMouseMove(e);
635
- }
512
+ pointer.unDocMouseMove = addEvent(chart.container.ownerDocument, 'mousemove', function (e) {
513
+ var chart = charts[H.hoverChartIndex];
514
+ if (chart) {
515
+ chart.pointer.onDocumentMouseMove(e);
636
516
  }
637
- );
517
+ });
638
518
  }
639
-
640
519
  // Issues related to crosshair #4927, #5269 #5066, #5658
641
520
  chart.axes.forEach(function drawAxisCrosshair(axis) {
642
- var snap = pick(axis.crosshair.snap, true),
643
- point = !snap ?
644
- undefined :
645
- H.find(points, function (p) {
646
- return p.series[axis.coll] === axis;
647
- });
648
-
521
+ var snap = pick(axis.crosshair.snap, true), point = !snap ?
522
+ undefined :
523
+ H.find(points, function (p) {
524
+ return p.series[axis.coll] === axis;
525
+ });
649
526
  // Axis has snapping crosshairs, and one of the hover points belongs
650
527
  // to axis. Always call drawCrosshair when it is not snap.
651
528
  if (point || !snap) {
652
529
  axis.drawCrosshair(e, point);
653
- // Axis has snapping crosshairs, but no hover point belongs to axis
654
- } else {
530
+ // Axis has snapping crosshairs, but no hover point belongs to axis
531
+ }
532
+ else {
655
533
  axis.hideCrosshair();
656
534
  }
657
535
  });
658
536
  },
659
-
660
537
  /**
661
538
  * Get currently active series, in opposite to `inactive` series.
662
539
  * Active series includes also it's parents/childs (via linkedTo) option
@@ -673,59 +550,44 @@ Highcharts.Pointer.prototype = {
673
550
  * Array of series
674
551
  */
675
552
  getActiveSeries: function (points) {
676
- var activeSeries = [],
677
- series;
678
-
553
+ var activeSeries = [], series;
679
554
  (points || []).forEach(function (item) {
680
555
  series = item.series;
681
-
682
556
  // Include itself
683
557
  activeSeries.push(series);
684
-
685
558
  // Include parent series
686
559
  if (series.linkedParent) {
687
560
  activeSeries.push(series.linkedParent);
688
561
  }
689
-
690
562
  // Include all child series
691
563
  if (series.linkedSeries) {
692
- activeSeries = activeSeries.concat(
693
- series.linkedSeries
694
- );
564
+ activeSeries = activeSeries.concat(series.linkedSeries);
695
565
  }
696
-
697
566
  // Include navigator series
698
567
  if (series.navigatorSeries) {
699
568
  activeSeries.push(series.navigatorSeries);
700
569
  }
701
570
  });
702
-
703
571
  return activeSeries;
704
572
  },
705
-
706
573
  /**
707
574
  * Reset the tracking by hiding the tooltip, the hover series state and the
708
575
  * hover point
709
576
  *
710
577
  * @function Highcharts.Pointer#reset
711
578
  *
712
- * @param {boolean} allowMove
579
+ * @param {boolean} [allowMove]
713
580
  * Instead of destroying the tooltip altogether, allow moving it if
714
581
  * possible.
715
582
  *
716
- * @param {number} delay
583
+ * @param {number} [delay]
584
+ *
585
+ * @return {void}
717
586
  */
718
587
  reset: function (allowMove, delay) {
719
- var pointer = this,
720
- chart = pointer.chart,
721
- hoverSeries = chart.hoverSeries,
722
- hoverPoint = chart.hoverPoint,
723
- hoverPoints = chart.hoverPoints,
724
- tooltip = chart.tooltip,
725
- tooltipPoints = tooltip && tooltip.shared ?
726
- hoverPoints :
727
- hoverPoint;
728
-
588
+ var pointer = this, chart = pointer.chart, hoverSeries = chart.hoverSeries, hoverPoint = chart.hoverPoint, hoverPoints = chart.hoverPoints, tooltip = chart.tooltip, tooltipPoints = tooltip && tooltip.shared ?
589
+ hoverPoints :
590
+ hoverPoint;
729
591
  // Check if the points have moved outside the plot area (#1003, #4736,
730
592
  // #5101)
731
593
  if (allowMove && tooltipPoints) {
@@ -735,7 +597,6 @@ Highcharts.Pointer.prototype = {
735
597
  }
736
598
  });
737
599
  }
738
-
739
600
  // Just move the tooltip, #349
740
601
  if (allowMove) {
741
602
  if (tooltip && tooltipPoints && splat(tooltipPoints).length) {
@@ -752,7 +613,8 @@ Highcharts.Pointer.prototype = {
752
613
  }
753
614
  }
754
615
  });
755
- } else if (hoverPoint) { // #2500
616
+ }
617
+ else if (hoverPoint) { // #2500
756
618
  hoverPoint.setState(hoverPoint.state, true);
757
619
  chart.axes.forEach(function (axis) {
758
620
  if (axis.crosshair) {
@@ -761,56 +623,47 @@ Highcharts.Pointer.prototype = {
761
623
  });
762
624
  }
763
625
  }
764
-
765
- // Full reset
766
- } else {
767
-
626
+ // Full reset
627
+ }
628
+ else {
768
629
  if (hoverPoint) {
769
630
  hoverPoint.onMouseOut();
770
631
  }
771
-
772
632
  if (hoverPoints) {
773
633
  hoverPoints.forEach(function (point) {
774
634
  point.setState();
775
635
  });
776
636
  }
777
-
778
637
  if (hoverSeries) {
779
638
  hoverSeries.onMouseOut();
780
639
  }
781
-
782
640
  if (tooltip) {
783
641
  tooltip.hide(delay);
784
642
  }
785
-
786
643
  if (pointer.unDocMouseMove) {
787
644
  pointer.unDocMouseMove = pointer.unDocMouseMove();
788
645
  }
789
-
790
646
  // Remove crosshairs
791
647
  chart.axes.forEach(function (axis) {
792
648
  axis.hideCrosshair();
793
649
  });
794
-
795
650
  pointer.hoverX = chart.hoverPoints = chart.hoverPoint = null;
796
651
  }
797
652
  },
798
-
799
653
  /**
800
654
  * Scale series groups to a certain scale and translation.
801
655
  *
802
656
  * @private
803
657
  * @function Highcharts.Pointer#scaleGroups
804
658
  *
805
- * @param {Highcharts.SeriesPlotBoxObject} attribs
659
+ * @param {Highcharts.SeriesPlotBoxObject} [attribs]
806
660
  *
807
- * @param {boolean} clip
661
+ * @param {boolean} [clip]
662
+ *
663
+ * @return {void}
808
664
  */
809
665
  scaleGroups: function (attribs, clip) {
810
-
811
- var chart = this.chart,
812
- seriesAttribs;
813
-
666
+ var chart = this.chart, seriesAttribs;
814
667
  // Scale each series
815
668
  chart.series.forEach(function (series) {
816
669
  seriesAttribs = attribs || series.getPlotBox(); // #1701
@@ -825,11 +678,9 @@ Highcharts.Pointer.prototype = {
825
678
  }
826
679
  }
827
680
  });
828
-
829
681
  // Clip
830
682
  chart.clipRect.attr(clip || chart.clipBox);
831
683
  },
832
-
833
684
  /**
834
685
  * Start a drag operation.
835
686
  *
@@ -837,17 +688,17 @@ Highcharts.Pointer.prototype = {
837
688
  * @function Highcharts.Pointer#dragStart
838
689
  *
839
690
  * @param {Highcharts.PointerEventObject} e
691
+ *
692
+ * @return {void}
840
693
  */
841
694
  dragStart: function (e) {
842
695
  var chart = this.chart;
843
-
844
696
  // Record the start position
845
697
  chart.mouseIsDown = e.type;
846
698
  chart.cancelClick = false;
847
699
  chart.mouseDownX = this.mouseDownX = e.chartX;
848
700
  chart.mouseDownY = this.mouseDownY = e.chartY;
849
701
  },
850
-
851
702
  /**
852
703
  * Perform a drag operation in response to a mousemove event while the mouse
853
704
  * is down.
@@ -856,93 +707,58 @@ Highcharts.Pointer.prototype = {
856
707
  * @function Highcharts.Pointer#drag
857
708
  *
858
709
  * @param {Highcharts.PointerEventObject} e
710
+ *
711
+ * @return {void}
859
712
  */
860
713
  drag: function (e) {
861
-
862
- var chart = this.chart,
863
- chartOptions = chart.options.chart,
864
- chartX = e.chartX,
865
- chartY = e.chartY,
866
- zoomHor = this.zoomHor,
867
- zoomVert = this.zoomVert,
868
- plotLeft = chart.plotLeft,
869
- plotTop = chart.plotTop,
870
- plotWidth = chart.plotWidth,
871
- plotHeight = chart.plotHeight,
872
- clickedInside,
873
- size,
874
- selectionMarker = this.selectionMarker,
875
- mouseDownX = this.mouseDownX,
876
- mouseDownY = this.mouseDownY,
877
- panKey = chartOptions.panKey && e[chartOptions.panKey + 'Key'];
878
-
714
+ var chart = this.chart, chartOptions = chart.options.chart, chartX = e.chartX, chartY = e.chartY, zoomHor = this.zoomHor, zoomVert = this.zoomVert, plotLeft = chart.plotLeft, plotTop = chart.plotTop, plotWidth = chart.plotWidth, plotHeight = chart.plotHeight, clickedInside, size, selectionMarker = this.selectionMarker, mouseDownX = this.mouseDownX, mouseDownY = this.mouseDownY, panKey = (chartOptions.panKey && e[chartOptions.panKey + 'Key']);
879
715
  // If the device supports both touch and mouse (like IE11), and we are
880
716
  // touch-dragging inside the plot area, don't handle the mouse event.
881
717
  // #4339.
882
718
  if (selectionMarker && selectionMarker.touch) {
883
719
  return;
884
720
  }
885
-
886
721
  // If the mouse is outside the plot area, adjust to cooordinates
887
722
  // inside to prevent the selection marker from going outside
888
723
  if (chartX < plotLeft) {
889
724
  chartX = plotLeft;
890
- } else if (chartX > plotLeft + plotWidth) {
725
+ }
726
+ else if (chartX > plotLeft + plotWidth) {
891
727
  chartX = plotLeft + plotWidth;
892
728
  }
893
-
894
729
  if (chartY < plotTop) {
895
730
  chartY = plotTop;
896
- } else if (chartY > plotTop + plotHeight) {
731
+ }
732
+ else if (chartY > plotTop + plotHeight) {
897
733
  chartY = plotTop + plotHeight;
898
734
  }
899
-
900
735
  // determine if the mouse has moved more than 10px
901
- this.hasDragged = Math.sqrt(
902
- Math.pow(mouseDownX - chartX, 2) +
903
- Math.pow(mouseDownY - chartY, 2)
904
- );
905
-
736
+ this.hasDragged = Math.sqrt(Math.pow(mouseDownX - chartX, 2) +
737
+ Math.pow(mouseDownY - chartY, 2));
906
738
  if (this.hasDragged > 10) {
907
- clickedInside = chart.isInsidePlot(
908
- mouseDownX - plotLeft,
909
- mouseDownY - plotTop
910
- );
911
-
739
+ clickedInside = chart.isInsidePlot(mouseDownX - plotLeft, mouseDownY - plotTop);
912
740
  // make a selection
913
- if (
914
- chart.hasCartesianSeries &&
741
+ if (chart.hasCartesianSeries &&
915
742
  (this.zoomX || this.zoomY) &&
916
743
  clickedInside &&
917
- !panKey
918
- ) {
744
+ !panKey) {
919
745
  if (!selectionMarker) {
920
746
  this.selectionMarker = selectionMarker =
921
- chart.renderer.rect(
922
- plotLeft,
923
- plotTop,
924
- zoomHor ? 1 : plotWidth,
925
- zoomVert ? 1 : plotHeight,
926
- 0
927
- )
747
+ chart.renderer.rect(plotLeft, plotTop, zoomHor ? 1 : plotWidth, zoomVert ? 1 : plotHeight, 0)
928
748
  .attr({
929
- 'class': 'highcharts-selection-marker',
930
- 'zIndex': 7
931
- })
749
+ 'class': 'highcharts-selection-marker',
750
+ zIndex: 7
751
+ })
932
752
  .add();
933
-
934
753
  if (!chart.styledMode) {
935
754
  selectionMarker.attr({
936
- fill: (
937
- chartOptions.selectionMarkerFill ||
755
+ fill: (chartOptions.selectionMarkerFill ||
938
756
  color('#335cad')
939
- .setOpacity(0.25).get()
940
- )
757
+ .setOpacity(0.25).get())
941
758
  });
942
759
  }
943
760
  }
944
761
  }
945
-
946
762
  // adjust the width of the selection marker
947
763
  if (selectionMarker && zoomHor) {
948
764
  size = chartX - mouseDownX;
@@ -959,14 +775,12 @@ Highcharts.Pointer.prototype = {
959
775
  y: (size > 0 ? 0 : size) + mouseDownY
960
776
  });
961
777
  }
962
-
963
778
  // panning
964
779
  if (clickedInside && !selectionMarker && chartOptions.panning) {
965
780
  chart.pan(e, chartOptions.panning);
966
781
  }
967
782
  }
968
783
  },
969
-
970
784
  /**
971
785
  * On mouse up or touch end across the entire document, drop the selection.
972
786
  *
@@ -974,65 +788,43 @@ Highcharts.Pointer.prototype = {
974
788
  * @function Highcharts.Pointer#drop
975
789
  *
976
790
  * @param {global.Event} e
791
+ *
792
+ * @return {void}
977
793
  */
978
794
  drop: function (e) {
979
- var pointer = this,
980
- chart = this.chart,
981
- hasPinched = this.hasPinched;
982
-
795
+ var pointer = this, chart = this.chart, hasPinched = this.hasPinched;
983
796
  if (this.selectionMarker) {
984
797
  var selectionData = {
985
- originalEvent: e, // #4890
986
- xAxis: [],
987
- yAxis: []
988
- },
989
- selectionBox = this.selectionMarker,
990
- selectionLeft = selectionBox.attr ?
991
- selectionBox.attr('x') :
992
- selectionBox.x,
993
- selectionTop = selectionBox.attr ?
994
- selectionBox.attr('y') :
995
- selectionBox.y,
996
- selectionWidth = selectionBox.attr ?
997
- selectionBox.attr('width') :
998
- selectionBox.width,
999
- selectionHeight = selectionBox.attr ?
1000
- selectionBox.attr('height') :
1001
- selectionBox.height,
1002
- runZoom;
1003
-
798
+ originalEvent: e,
799
+ xAxis: [],
800
+ yAxis: []
801
+ }, selectionBox = this.selectionMarker, selectionLeft = selectionBox.attr ?
802
+ selectionBox.attr('x') :
803
+ selectionBox.x, selectionTop = selectionBox.attr ?
804
+ selectionBox.attr('y') :
805
+ selectionBox.y, selectionWidth = selectionBox.attr ?
806
+ selectionBox.attr('width') :
807
+ selectionBox.width, selectionHeight = selectionBox.attr ?
808
+ selectionBox.attr('height') :
809
+ selectionBox.height, runZoom;
1004
810
  // a selection has been made
1005
811
  if (this.hasDragged || hasPinched) {
1006
-
1007
812
  // record each axis' min and max
1008
813
  chart.axes.forEach(function (axis) {
1009
- if (
1010
- axis.zoomEnabled &&
814
+ if (axis.zoomEnabled &&
1011
815
  defined(axis.min) &&
1012
- (
1013
- hasPinched ||
816
+ (hasPinched ||
1014
817
  pointer[{
1015
818
  xAxis: 'zoomX',
1016
819
  yAxis: 'zoomY'
1017
- }[axis.coll]]
1018
- )
1019
- ) { // #859, #3569
1020
- var horiz = axis.horiz,
1021
- minPixelPadding = e.type === 'touchend' ?
1022
- axis.minPixelPadding :
1023
- 0, // #1207, #3075
1024
- selectionMin = axis.toValue(
1025
- (horiz ? selectionLeft : selectionTop) +
1026
- minPixelPadding
1027
- ),
1028
- selectionMax = axis.toValue(
1029
- (
1030
- horiz ?
1031
- selectionLeft + selectionWidth :
1032
- selectionTop + selectionHeight
1033
- ) - minPixelPadding
1034
- );
1035
-
820
+ }[axis.coll]])) { // #859, #3569
821
+ var horiz = axis.horiz, minPixelPadding = e.type === 'touchend' ?
822
+ axis.minPixelPadding :
823
+ 0, // #1207, #3075
824
+ selectionMin = axis.toValue((horiz ? selectionLeft : selectionTop) +
825
+ minPixelPadding), selectionMax = axis.toValue((horiz ?
826
+ selectionLeft + selectionWidth :
827
+ selectionTop + selectionHeight) - minPixelPadding);
1036
828
  selectionData[axis.coll].push({
1037
829
  axis: axis,
1038
830
  // Min/max for reversed axes
@@ -1043,33 +835,21 @@ Highcharts.Pointer.prototype = {
1043
835
  }
1044
836
  });
1045
837
  if (runZoom) {
1046
- fireEvent(
1047
- chart,
1048
- 'selection',
1049
- selectionData,
1050
- function (args) {
1051
- chart.zoom(
1052
- extend(
1053
- args,
1054
- hasPinched ? { animation: false } : null
1055
- )
1056
- );
1057
- }
1058
- );
838
+ fireEvent(chart, 'selection', selectionData, function (args) {
839
+ chart.zoom(extend(args, hasPinched ?
840
+ { animation: false } :
841
+ null));
842
+ });
1059
843
  }
1060
-
1061
844
  }
1062
-
1063
845
  if (isNumber(chart.index)) {
1064
846
  this.selectionMarker = this.selectionMarker.destroy();
1065
847
  }
1066
-
1067
848
  // Reset scaling preview
1068
849
  if (hasPinched) {
1069
850
  this.scaleGroups();
1070
851
  }
1071
852
  }
1072
-
1073
853
  // Reset all. Check isNumber because it may be destroyed on mouse up
1074
854
  // (#877)
1075
855
  if (chart && isNumber(chart.index)) {
@@ -1079,42 +859,39 @@ Highcharts.Pointer.prototype = {
1079
859
  this.pinchDown = [];
1080
860
  }
1081
861
  },
1082
-
1083
862
  /**
1084
863
  * @private
1085
864
  * @function Highcharts.Pointer#onContainerMouseDown
1086
865
  *
1087
- * @param {global.Event} e
866
+ * @param {Highcharts.PointerEventObject} e
867
+ *
868
+ * @return {void}
1088
869
  */
1089
870
  onContainerMouseDown: function (e) {
1090
871
  // Normalize before the 'if' for the legacy IE (#7850)
1091
872
  e = this.normalize(e);
1092
-
1093
873
  if (e.button !== 2) {
1094
-
1095
874
  this.zoomOption(e);
1096
-
1097
875
  // issue #295, dragging not always working in Firefox
1098
876
  if (e.preventDefault) {
1099
877
  e.preventDefault();
1100
878
  }
1101
-
1102
879
  this.dragStart(e);
1103
880
  }
1104
881
  },
1105
-
1106
882
  /**
1107
883
  * @private
1108
884
  * @function Highcharts.Pointer#onDocumentMouseUp
1109
885
  *
1110
- * @param {global.Event} e
886
+ * @param {Highcharts.PointerEventObject} e
887
+ *
888
+ * @return {void}
1111
889
  */
1112
890
  onDocumentMouseUp: function (e) {
1113
891
  if (charts[H.hoverChartIndex]) {
1114
892
  charts[H.hoverChartIndex].pointer.drop(e);
1115
893
  }
1116
894
  },
1117
-
1118
895
  /**
1119
896
  * Special handler for mouse move that will hide the tooltip when the mouse
1120
897
  * leaves the plotarea. Issue #149 workaround. The mouseleave event does not
@@ -1124,37 +901,31 @@ Highcharts.Pointer.prototype = {
1124
901
  * @function Highcharts.Pointer#onDocumentMouseMove
1125
902
  *
1126
903
  * @param {Highcharts.PointerEventObject} e
904
+ *
905
+ * @return {void}
1127
906
  */
1128
907
  onDocumentMouseMove: function (e) {
1129
- var chart = this.chart,
1130
- chartPosition = this.chartPosition;
1131
-
908
+ var chart = this.chart, chartPosition = this.chartPosition;
1132
909
  e = this.normalize(e, chartPosition);
1133
-
1134
910
  // If we're outside, hide the tooltip
1135
- if (
1136
- chartPosition &&
911
+ if (chartPosition &&
1137
912
  !this.inClass(e.target, 'highcharts-tracker') &&
1138
- !chart.isInsidePlot(
1139
- e.chartX - chart.plotLeft,
1140
- e.chartY - chart.plotTop
1141
- )
1142
- ) {
913
+ !chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) {
1143
914
  this.reset();
1144
915
  }
1145
916
  },
1146
-
1147
917
  /**
1148
918
  * When mouse leaves the container, hide the tooltip.
1149
919
  *
1150
920
  * @private
1151
921
  * @function Highcharts.Pointer#onContainerMouseLeave
1152
922
  *
1153
- * @param {global.Event} e
923
+ * @param {Highcharts.PointerEventObject} e
924
+ *
925
+ * @return {void}
1154
926
  */
1155
927
  onContainerMouseLeave: function (e) {
1156
928
  var chart = charts[H.hoverChartIndex];
1157
-
1158
929
  // #4886, MS Touch end fires mouseleave but with no related target
1159
930
  if (chart && (e.relatedTarget || e.toElement)) {
1160
931
  chart.pointer.reset();
@@ -1162,7 +933,6 @@ Highcharts.Pointer.prototype = {
1162
933
  chart.pointer.chartPosition = null;
1163
934
  }
1164
935
  },
1165
-
1166
936
  /**
1167
937
  * The mousemove, touchmove and touchstart event handler
1168
938
  *
@@ -1170,21 +940,17 @@ Highcharts.Pointer.prototype = {
1170
940
  * @function Highcharts.Pointer#onContainerMouseMove
1171
941
  *
1172
942
  * @param {Highcharts.PointerEventObject} e
943
+ *
944
+ * @return {void}
1173
945
  */
1174
946
  onContainerMouseMove: function (e) {
1175
-
1176
947
  var chart = this.chart;
1177
-
1178
- if (
1179
- !defined(H.hoverChartIndex) ||
948
+ if (!defined(H.hoverChartIndex) ||
1180
949
  !charts[H.hoverChartIndex] ||
1181
- !charts[H.hoverChartIndex].mouseIsDown
1182
- ) {
950
+ !charts[H.hoverChartIndex].mouseIsDown) {
1183
951
  H.hoverChartIndex = chart.index;
1184
952
  }
1185
-
1186
953
  e = this.normalize(e);
1187
-
1188
954
  // In IE8 we apparently need this returnValue set to false in order to
1189
955
  // avoid text being selected. But in Chrome, e.returnValue is prevented,
1190
956
  // plus we don't need to run e.preventDefault to prevent selected text
@@ -1193,26 +959,16 @@ Highcharts.Pointer.prototype = {
1193
959
  if (!e.preventDefault) {
1194
960
  e.returnValue = false;
1195
961
  }
1196
-
1197
962
  if (chart.mouseIsDown === 'mousedown') {
1198
963
  this.drag(e);
1199
964
  }
1200
-
1201
965
  // Show the tooltip and run mouse over events (#977)
1202
- if (
1203
- (
1204
- this.inClass(e.target, 'highcharts-tracker') ||
1205
- chart.isInsidePlot(
1206
- e.chartX - chart.plotLeft,
1207
- e.chartY - chart.plotTop
1208
- )
1209
- ) &&
1210
- !chart.openMenu
1211
- ) {
966
+ if ((this.inClass(e.target, 'highcharts-tracker') ||
967
+ chart.isInsidePlot(e.chartX - chart.plotLeft, e.chartY - chart.plotTop)) &&
968
+ !chart.openMenu) {
1212
969
  this.runPointActions(e);
1213
970
  }
1214
971
  },
1215
-
1216
972
  /**
1217
973
  * Utility to detect whether an element has, or has a parent with, a
1218
974
  * specificclass name. Used on detection of tracker objects and on deciding
@@ -1226,13 +982,12 @@ Highcharts.Pointer.prototype = {
1226
982
  * @param {string} className
1227
983
  * The class name to look for.
1228
984
  *
1229
- * @return {boolean}
985
+ * @return {boolean|undefined}
1230
986
  * True if either the element or one of its parents has the given
1231
987
  * class name.
1232
988
  */
1233
989
  inClass: function (element, className) {
1234
990
  var elemClassName;
1235
-
1236
991
  while (element) {
1237
992
  elemClassName = attr(element, 'class');
1238
993
  if (elemClassName) {
@@ -1246,81 +1001,60 @@ Highcharts.Pointer.prototype = {
1246
1001
  element = element.parentNode;
1247
1002
  }
1248
1003
  },
1249
-
1250
1004
  /**
1251
1005
  * @private
1252
1006
  * @function Highcharts.Pointer#onTrackerMouseOut
1253
1007
  *
1254
- * @param {global.Event} e
1008
+ * @param {Highcharts.PointerEventObject} e
1009
+ *
1010
+ * @return {void}
1255
1011
  */
1256
1012
  onTrackerMouseOut: function (e) {
1257
- var series = this.chart.hoverSeries,
1258
- relatedTarget = e.relatedTarget || e.toElement;
1259
-
1013
+ var series = this.chart.hoverSeries, relatedTarget = e.relatedTarget || e.toElement;
1260
1014
  this.isDirectTouch = false;
1261
-
1262
- if (
1263
- series &&
1015
+ if (series &&
1264
1016
  relatedTarget &&
1265
1017
  !series.stickyTracking &&
1266
1018
  !this.inClass(relatedTarget, 'highcharts-tooltip') &&
1267
- (
1268
- !this.inClass(
1269
- relatedTarget,
1270
- 'highcharts-series-' + series.index
1271
- ) || // #2499, #4465
1272
- !this.inClass(relatedTarget, 'highcharts-tracker') // #5553
1273
- )
1274
- ) {
1019
+ (!this.inClass(relatedTarget, 'highcharts-series-' + series.index) || // #2499, #4465, #5553
1020
+ !this.inClass(relatedTarget, 'highcharts-tracker'))) {
1275
1021
  series.onMouseOut();
1276
1022
  }
1277
1023
  },
1278
-
1279
1024
  /**
1280
1025
  * @private
1281
1026
  * @function Highcharts.Pointer#onContainerClick
1282
1027
  *
1283
1028
  * @param {Highcharts.PointerEventObject} e
1029
+ *
1030
+ * @return {void}
1284
1031
  */
1285
1032
  onContainerClick: function (e) {
1286
- var chart = this.chart,
1287
- hoverPoint = chart.hoverPoint,
1288
- plotLeft = chart.plotLeft,
1289
- plotTop = chart.plotTop;
1290
-
1033
+ var chart = this.chart, hoverPoint = chart.hoverPoint, plotLeft = chart.plotLeft, plotTop = chart.plotTop;
1291
1034
  e = this.normalize(e);
1292
-
1293
1035
  if (!chart.cancelClick) {
1294
-
1295
1036
  // On tracker click, fire the series and point events. #783, #1583
1296
- if (hoverPoint && this.inClass(e.target, 'highcharts-tracker')) {
1297
-
1037
+ if (hoverPoint &&
1038
+ this.inClass(e.target, 'highcharts-tracker')) {
1298
1039
  // the series click event
1299
1040
  fireEvent(hoverPoint.series, 'click', extend(e, {
1300
1041
  point: hoverPoint
1301
1042
  }));
1302
-
1303
1043
  // the point click event
1304
1044
  if (chart.hoverPoint) { // it may be destroyed (#1844)
1305
1045
  hoverPoint.firePointEvent('click', e);
1306
1046
  }
1307
-
1308
- // When clicking outside a tracker, fire a chart event
1309
- } else {
1047
+ // When clicking outside a tracker, fire a chart event
1048
+ }
1049
+ else {
1310
1050
  extend(e, this.getCoordinates(e));
1311
-
1312
1051
  // fire a click event in the chart
1313
- if (
1314
- chart.isInsidePlot(e.chartX - plotLeft, e.chartY - plotTop)
1315
- ) {
1052
+ if (chart.isInsidePlot(e.chartX - plotLeft, e.chartY - plotTop)) {
1316
1053
  fireEvent(chart, 'click', e);
1317
1054
  }
1318
1055
  }
1319
-
1320
-
1321
1056
  }
1322
1057
  },
1323
-
1324
1058
  /**
1325
1059
  * Set the JS DOM events on the container and document. This method should
1326
1060
  * contain a one-to-one assignment between methods and their handlers. Any
@@ -1329,13 +1063,11 @@ Highcharts.Pointer.prototype = {
1329
1063
  *
1330
1064
  * @private
1331
1065
  * @function Highcharts.Pointer#setDOMEvents
1066
+ *
1067
+ * @return {void}
1332
1068
  */
1333
1069
  setDOMEvents: function () {
1334
-
1335
- var pointer = this,
1336
- container = pointer.chart.container,
1337
- ownerDoc = container.ownerDocument;
1338
-
1070
+ var pointer = this, container = pointer.chart.container, ownerDoc = container.ownerDocument;
1339
1071
  container.onmousedown = function (e) {
1340
1072
  pointer.onContainerMouseDown(e);
1341
1073
  };
@@ -1345,17 +1077,9 @@ Highcharts.Pointer.prototype = {
1345
1077
  container.onclick = function (e) {
1346
1078
  pointer.onContainerClick(e);
1347
1079
  };
1348
- this.unbindContainerMouseLeave = addEvent(
1349
- container,
1350
- 'mouseleave',
1351
- pointer.onContainerMouseLeave
1352
- );
1080
+ this.unbindContainerMouseLeave = addEvent(container, 'mouseleave', pointer.onContainerMouseLeave);
1353
1081
  if (!H.unbindDocumentMouseUp) {
1354
- H.unbindDocumentMouseUp = addEvent(
1355
- ownerDoc,
1356
- 'mouseup',
1357
- pointer.onDocumentMouseUp
1358
- );
1082
+ H.unbindDocumentMouseUp = addEvent(ownerDoc, 'mouseup', pointer.onDocumentMouseUp);
1359
1083
  }
1360
1084
  if (H.hasTouch) {
1361
1085
  container.ontouchstart = function (e) {
@@ -1365,30 +1089,23 @@ Highcharts.Pointer.prototype = {
1365
1089
  pointer.onContainerTouchMove(e);
1366
1090
  };
1367
1091
  if (!H.unbindDocumentTouchEnd) {
1368
- H.unbindDocumentTouchEnd = addEvent(
1369
- ownerDoc,
1370
- 'touchend',
1371
- pointer.onDocumentTouchEnd
1372
- );
1092
+ H.unbindDocumentTouchEnd = addEvent(ownerDoc, 'touchend', pointer.onDocumentTouchEnd);
1373
1093
  }
1374
1094
  }
1375
-
1376
1095
  },
1377
-
1378
1096
  /**
1379
1097
  * Destroys the Pointer object and disconnects DOM events.
1380
1098
  *
1381
1099
  * @function Highcharts.Pointer#destroy
1100
+ *
1101
+ * @return {void}
1382
1102
  */
1383
1103
  destroy: function () {
1384
1104
  var pointer = this;
1385
-
1386
1105
  if (pointer.unDocMouseMove) {
1387
1106
  pointer.unDocMouseMove();
1388
1107
  }
1389
-
1390
1108
  this.unbindContainerMouseLeave();
1391
-
1392
1109
  if (!H.chartCount) {
1393
1110
  if (H.unbindDocumentMouseUp) {
1394
1111
  H.unbindDocumentMouseUp = H.unbindDocumentMouseUp();
@@ -1397,10 +1114,8 @@ Highcharts.Pointer.prototype = {
1397
1114
  H.unbindDocumentTouchEnd = H.unbindDocumentTouchEnd();
1398
1115
  }
1399
1116
  }
1400
-
1401
1117
  // memory and CPU leak
1402
1118
  clearInterval(pointer.tooltipTimeout);
1403
-
1404
1119
  H.objectEach(pointer, function (val, prop) {
1405
1120
  pointer[prop] = null;
1406
1121
  });