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,32 +1,20 @@
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
+ * */
7
10
  'use strict';
8
-
9
11
  import H from './Globals.js';
10
12
  import './Utilities.js';
11
13
  import './SvgRenderer.js';
12
-
13
- var attr = H.attr,
14
- createElement = H.createElement,
15
- css = H.css,
16
- defined = H.defined,
17
- extend = H.extend,
18
- isFirefox = H.isFirefox,
19
- isMS = H.isMS,
20
- isWebKit = H.isWebKit,
21
- pick = H.pick,
22
- pInt = H.pInt,
23
- SVGElement = H.SVGElement,
24
- SVGRenderer = H.SVGRenderer,
25
- win = H.win;
26
-
14
+ var attr = H.attr, createElement = H.createElement, css = H.css, defined = H.defined, extend = H.extend, isFirefox = H.isFirefox, isMS = H.isMS, isWebKit = H.isWebKit, pick = H.pick, pInt = H.pInt, SVGElement = H.SVGElement, SVGRenderer = H.SVGRenderer, win = H.win;
15
+ /* eslint-disable valid-jsdoc */
27
16
  // Extend SvgElement for useHTML option.
28
17
  extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
29
-
30
18
  /**
31
19
  * Apply CSS to HTML elements. This is used in text within SVG rendering and
32
20
  * by the VML renderer
@@ -39,42 +27,29 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
39
27
  * @return {Highcharts.SVGElement}
40
28
  */
41
29
  htmlCss: function (styles) {
42
- var wrapper = this,
43
- element = wrapper.element,
44
- // When setting or unsetting the width style, we need to update
45
- // transform (#8809)
46
- isSettingWidth = (
47
- element.tagName === 'SPAN' &&
48
- styles &&
49
- 'width' in styles
50
- ),
51
- textWidth = pick(
52
- isSettingWidth && styles.width,
53
- undefined
54
- ),
55
- doTransform;
56
-
30
+ var wrapper = this, element = wrapper.element,
31
+ // When setting or unsetting the width style, we need to update
32
+ // transform (#8809)
33
+ isSettingWidth = (element.tagName === 'SPAN' &&
34
+ styles &&
35
+ 'width' in styles), textWidth = pick(isSettingWidth && styles.width, undefined), doTransform;
57
36
  if (isSettingWidth) {
58
37
  delete styles.width;
59
38
  wrapper.textWidth = textWidth;
60
39
  doTransform = true;
61
40
  }
62
-
63
41
  if (styles && styles.textOverflow === 'ellipsis') {
64
42
  styles.whiteSpace = 'nowrap';
65
43
  styles.overflow = 'hidden';
66
44
  }
67
45
  wrapper.styles = extend(wrapper.styles, styles);
68
46
  css(wrapper.element, styles);
69
-
70
47
  // Now that all styles are applied, to the transform
71
48
  if (doTransform) {
72
49
  wrapper.htmlUpdateTransform();
73
50
  }
74
-
75
51
  return wrapper;
76
52
  },
77
-
78
53
  /**
79
54
  * VML and useHTML method for calculating the bounding box based on offsets.
80
55
  *
@@ -89,9 +64,7 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
89
64
  * A hash containing values for x, y, width and height.
90
65
  */
91
66
  htmlGetBBox: function () {
92
- var wrapper = this,
93
- element = wrapper.element;
94
-
67
+ var wrapper = this, element = wrapper.element;
95
68
  return {
96
69
  x: element.offsetLeft,
97
70
  y: element.offsetTop,
@@ -99,13 +72,13 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
99
72
  height: element.offsetHeight
100
73
  };
101
74
  },
102
-
103
75
  /**
104
76
  * VML override private method to update elements based on internal
105
77
  * properties based on SVG transform.
106
78
  *
107
79
  * @private
108
80
  * @function Highcharts.SVGElement#htmlUpdateTransform
81
+ * @return {void}
109
82
  */
110
83
  htmlUpdateTransform: function () {
111
84
  // aligning non added elements is expensive
@@ -113,19 +86,13 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
113
86
  this.alignOnAdd = true;
114
87
  return;
115
88
  }
116
-
117
- var wrapper = this,
118
- renderer = wrapper.renderer,
119
- elem = wrapper.element,
120
- translateX = wrapper.translateX || 0,
121
- translateY = wrapper.translateY || 0,
122
- x = wrapper.x || 0,
123
- y = wrapper.y || 0,
124
- align = wrapper.textAlign || 'left',
125
- alignCorrection = { left: 0, center: 0.5, right: 1 }[align],
126
- styles = wrapper.styles,
127
- whiteSpace = styles && styles.whiteSpace;
128
-
89
+ var wrapper = this, renderer = wrapper.renderer, elem = wrapper.element, translateX = wrapper.translateX || 0, translateY = wrapper.translateY || 0, x = wrapper.x || 0, y = wrapper.y || 0, align = wrapper.textAlign || 'left', alignCorrection = {
90
+ left: 0, center: 0.5, right: 1
91
+ }[align], styles = wrapper.styles, whiteSpace = styles && styles.whiteSpace;
92
+ /**
93
+ * @private
94
+ * @return {number}
95
+ */
129
96
  function getTextPxLength() {
130
97
  // Reset multiline/ellipsis in order to read width (#4928,
131
98
  // #5417)
@@ -135,13 +102,11 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
135
102
  });
136
103
  return elem.offsetWidth;
137
104
  }
138
-
139
105
  // apply translate
140
106
  css(elem, {
141
107
  marginLeft: translateX,
142
108
  marginTop: translateY
143
109
  });
144
-
145
110
  if (!renderer.styledMode && wrapper.shadows) { // used in labels/tooltip
146
111
  wrapper.shadows.forEach(function (shadow) {
147
112
  css(shadow, {
@@ -150,43 +115,31 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
150
115
  });
151
116
  });
152
117
  }
153
-
154
118
  // apply inversion
155
119
  if (wrapper.inverted) { // wrapper is a group
156
120
  [].forEach.call(elem.childNodes, function (child) {
157
121
  renderer.invertChild(child, elem);
158
122
  });
159
123
  }
160
-
161
124
  if (elem.tagName === 'SPAN') {
162
-
163
- var rotation = wrapper.rotation,
164
- baseline,
165
- textWidth = wrapper.textWidth && pInt(wrapper.textWidth),
166
- currentTextTransform = [
167
- rotation,
168
- align,
169
- elem.innerHTML,
170
- wrapper.textWidth,
171
- wrapper.textAlign
172
- ].join(',');
173
-
125
+ var rotation = wrapper.rotation, baseline, textWidth = wrapper.textWidth && pInt(wrapper.textWidth), currentTextTransform = [
126
+ rotation,
127
+ align,
128
+ elem.innerHTML,
129
+ wrapper.textWidth,
130
+ wrapper.textAlign
131
+ ].join(',');
174
132
  // Update textWidth. Use the memoized textPxLength if possible, to
175
133
  // avoid the getTextPxLength function using elem.offsetWidth.
176
134
  // Calling offsetWidth affects rendering time as it forces layout
177
135
  // (#7656).
178
- if (
179
- textWidth !== wrapper.oldTextWidth &&
180
- (
181
- (textWidth > wrapper.oldTextWidth) ||
182
- (wrapper.textPxLength || getTextPxLength()) > textWidth
183
- ) && (
184
- // Only set the width if the text is able to word-wrap, or
185
- // text-overflow is ellipsis (#9537)
186
- /[ \-]/.test(elem.textContent || elem.innerText) ||
187
- elem.style.textOverflow === 'ellipsis'
188
- )
189
- ) { // #983, #1254
136
+ if (textWidth !== wrapper.oldTextWidth &&
137
+ ((textWidth > wrapper.oldTextWidth) ||
138
+ (wrapper.textPxLength || getTextPxLength()) > textWidth) && (
139
+ // Only set the width if the text is able to word-wrap, or
140
+ // text-overflow is ellipsis (#9537)
141
+ /[ \-]/.test(elem.textContent || elem.innerText) ||
142
+ elem.style.textOverflow === 'ellipsis')) { // #983, #1254
190
143
  css(elem, {
191
144
  width: textWidth + 'px',
192
145
  display: 'block',
@@ -194,102 +147,73 @@ extend(SVGElement.prototype, /** @lends SVGElement.prototype */ {
194
147
  });
195
148
  wrapper.oldTextWidth = textWidth;
196
149
  wrapper.hasBoxWidthChanged = true; // #8159
197
- } else {
150
+ }
151
+ else {
198
152
  wrapper.hasBoxWidthChanged = false; // #8159
199
153
  }
200
-
201
154
  // Do the calculations and DOM access only if properties changed
202
155
  if (currentTextTransform !== wrapper.cTT) {
203
156
  baseline = renderer.fontMetrics(elem.style.fontSize, elem).b;
204
-
205
157
  // Renderer specific handling of span rotation, but only if we
206
158
  // have something to update.
207
- if (
208
- defined(rotation) &&
209
- (
210
- (rotation !== (wrapper.oldRotation || 0)) ||
211
- (align !== wrapper.oldAlign)
212
- )
213
- ) {
214
- wrapper.setSpanRotation(
215
- rotation,
216
- alignCorrection,
217
- baseline
218
- );
159
+ if (defined(rotation) &&
160
+ ((rotation !== (wrapper.oldRotation || 0)) ||
161
+ (align !== wrapper.oldAlign))) {
162
+ wrapper.setSpanRotation(rotation, alignCorrection, baseline);
219
163
  }
220
-
221
164
  wrapper.getSpanCorrection(
222
- // Avoid elem.offsetWidth if we can, it affects rendering
223
- // time heavily (#7656)
224
- (
225
- (!defined(rotation) && wrapper.textPxLength) || // #7920
226
- elem.offsetWidth
227
- ),
228
- baseline,
229
- alignCorrection,
230
- rotation,
231
- align
232
- );
165
+ // Avoid elem.offsetWidth if we can, it affects rendering
166
+ // time heavily (#7656)
167
+ ((!defined(rotation) && wrapper.textPxLength) || // #7920
168
+ elem.offsetWidth), baseline, alignCorrection, rotation, align);
233
169
  }
234
-
235
170
  // apply position with correction
236
171
  css(elem, {
237
172
  left: (x + (wrapper.xCorr || 0)) + 'px',
238
173
  top: (y + (wrapper.yCorr || 0)) + 'px'
239
174
  });
240
-
241
175
  // record current text transform
242
176
  wrapper.cTT = currentTextTransform;
243
177
  wrapper.oldRotation = rotation;
244
178
  wrapper.oldAlign = align;
245
179
  }
246
180
  },
247
-
248
181
  /**
249
182
  * Set the rotation of an individual HTML span.
250
183
  *
251
184
  * @private
252
185
  * @function Highcharts.SVGElement#setSpanRotation
253
- *
254
186
  * @param {number} rotation
255
- *
256
187
  * @param {number} alignCorrection
257
- *
258
188
  * @param {number} baseline
189
+ * @return {void}
259
190
  */
260
191
  setSpanRotation: function (rotation, alignCorrection, baseline) {
261
- var rotationStyle = {},
262
- cssTransformKey = this.renderer.getTransformKey();
263
-
192
+ var rotationStyle = {}, cssTransformKey = this.renderer.getTransformKey();
264
193
  rotationStyle[cssTransformKey] = rotationStyle.transform =
265
194
  'rotate(' + rotation + 'deg)';
266
195
  rotationStyle[cssTransformKey + (isFirefox ? 'Origin' : '-origin')] =
267
- rotationStyle.transformOrigin =
268
- (alignCorrection * 100) + '% ' + baseline + 'px';
196
+ rotationStyle.transformOrigin =
197
+ (alignCorrection * 100) + '% ' + baseline + 'px';
269
198
  css(this.element, rotationStyle);
270
199
  },
271
-
272
200
  /**
273
201
  * Get the correction in X and Y positioning as the element is rotated.
274
202
  *
275
203
  * @private
276
204
  * @function Highcharts.SVGElement#getSpanCorrection
277
- *
278
205
  * @param {number} width
279
- *
280
206
  * @param {number} baseline
281
- *
282
207
  * @param {number} alignCorrection
208
+ * @return {void}
283
209
  */
284
210
  getSpanCorrection: function (width, baseline, alignCorrection) {
285
211
  this.xCorr = -width * alignCorrection;
286
212
  this.yCorr = -baseline;
287
213
  }
288
214
  });
289
-
290
215
  // Extend SvgRenderer for useHTML option.
291
216
  extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
292
-
293
217
  /**
294
218
  * @private
295
219
  * @function Highcharts.SVGRenderer#getTransformKey
@@ -307,7 +231,6 @@ extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
307
231
  '-o-transform' :
308
232
  '';
309
233
  },
310
-
311
234
  /**
312
235
  * Create HTML text node. This is used by the VML renderer as well as the
313
236
  * SVG renderer through the useHTML option.
@@ -327,34 +250,23 @@ extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
327
250
  * @return {Highcharts.HTMLDOMElement}
328
251
  */
329
252
  html: function (str, x, y) {
330
- var wrapper = this.createElement('span'),
331
- element = wrapper.element,
332
- renderer = wrapper.renderer,
333
- isSVG = renderer.isSVG,
334
- addSetters = function (gWrapper, style) {
335
- // These properties are set as attributes on the SVG group, and
336
- // as identical CSS properties on the div. (#3542)
337
- ['opacity', 'visibility'].forEach(function (prop) {
338
- gWrapper[prop + 'Setter'] = function (
339
- value,
340
- key,
341
- elem
342
- ) {
343
- var styleObject = gWrapper.div ?
344
- gWrapper.div.style :
345
- style;
346
- SVGElement.prototype[prop + 'Setter']
347
- .call(this, value, key, elem);
348
- if (styleObject) {
349
- styleObject[key] = value;
350
- }
351
- };
352
- });
353
- gWrapper.addedSetters = true;
354
- },
355
- chart = H.charts[renderer.chartIndex],
356
- styledMode = chart && chart.styledMode;
357
-
253
+ var wrapper = this.createElement('span'), element = wrapper.element, renderer = wrapper.renderer, isSVG = renderer.isSVG, addSetters = function (gWrapper, style) {
254
+ // These properties are set as attributes on the SVG group, and
255
+ // as identical CSS properties on the div. (#3542)
256
+ ['opacity', 'visibility'].forEach(function (prop) {
257
+ gWrapper[prop + 'Setter'] = function (value, key, elem) {
258
+ var styleObject = gWrapper.div ?
259
+ gWrapper.div.style :
260
+ style;
261
+ SVGElement.prototype[prop + 'Setter']
262
+ .call(this, value, key, elem);
263
+ if (styleObject) {
264
+ styleObject[key] = value;
265
+ }
266
+ };
267
+ });
268
+ gWrapper.addedSetters = true;
269
+ }, chart = H.charts[renderer.chartIndex], styledMode = chart && chart.styledMode;
358
270
  // Text setter
359
271
  wrapper.textSetter = function (value) {
360
272
  if (value !== element.innerHTML) {
@@ -365,26 +277,23 @@ extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
365
277
  element.innerHTML = pick(value, '');
366
278
  wrapper.doTransform = true;
367
279
  };
368
-
369
280
  // Add setters for the element itself (#4938)
370
281
  if (isSVG) { // #4938, only for HTML within SVG
371
282
  addSetters(wrapper, wrapper.element.style);
372
283
  }
373
-
374
284
  // Various setters which rely on update transform
375
285
  wrapper.xSetter =
376
- wrapper.ySetter =
377
- wrapper.alignSetter =
378
- wrapper.rotationSetter =
379
- function (value, key) {
380
- if (key === 'align') {
381
- // Do not overwrite the SVGElement.align method. Same as VML.
382
- key = 'textAlign';
383
- }
384
- wrapper[key] = value;
385
- wrapper.doTransform = true;
386
- };
387
-
286
+ wrapper.ySetter =
287
+ wrapper.alignSetter =
288
+ wrapper.rotationSetter =
289
+ function (value, key) {
290
+ if (key === 'align') {
291
+ // Do not overwrite the SVGElement.align method. Same as VML.
292
+ key = 'textAlign';
293
+ }
294
+ wrapper[key] = value;
295
+ wrapper.doTransform = true;
296
+ };
388
297
  // Runs at the end of .attr()
389
298
  wrapper.afterSetters = function () {
390
299
  // Update transform. Do this outside the loop to prevent redundant
@@ -394,105 +303,86 @@ extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
394
303
  this.doTransform = false;
395
304
  }
396
305
  };
397
-
398
306
  // Set the default attributes
399
307
  wrapper
400
308
  .attr({
401
- text: str,
402
- x: Math.round(x),
403
- y: Math.round(y)
404
- })
309
+ text: str,
310
+ x: Math.round(x),
311
+ y: Math.round(y)
312
+ })
405
313
  .css({
406
- position: 'absolute'
407
- });
408
-
314
+ position: 'absolute'
315
+ });
409
316
  if (!styledMode) {
410
317
  wrapper.css({
411
318
  fontFamily: this.style.fontFamily,
412
319
  fontSize: this.style.fontSize
413
320
  });
414
321
  }
415
-
416
322
  // Keep the whiteSpace style outside the wrapper.styles collection
417
323
  element.style.whiteSpace = 'nowrap';
418
-
419
324
  // Use the HTML specific .css method
420
325
  wrapper.css = wrapper.htmlCss;
421
-
422
326
  // This is specific for HTML within SVG
423
327
  if (isSVG) {
424
328
  wrapper.add = function (svgGroupWrapper) {
425
-
426
- var htmlGroup,
427
- container = renderer.box.parentNode,
428
- parentGroup,
429
- parents = [];
430
-
329
+ var htmlGroup, container = renderer.box.parentNode, parentGroup, parents = [];
431
330
  this.parentGroup = svgGroupWrapper;
432
-
433
331
  // Create a mock group to hold the HTML elements
434
332
  if (svgGroupWrapper) {
435
333
  htmlGroup = svgGroupWrapper.div;
436
334
  if (!htmlGroup) {
437
-
438
335
  // Read the parent chain into an array and read from top
439
336
  // down
440
337
  parentGroup = svgGroupWrapper;
441
338
  while (parentGroup) {
442
-
443
339
  parents.push(parentGroup);
444
-
445
340
  // Move up to the next parent group
446
341
  parentGroup = parentGroup.parentGroup;
447
342
  }
448
-
449
343
  // Ensure dynamically updating position when any parent
450
344
  // is translated
451
345
  parents.reverse().forEach(function (parentGroup) {
452
- var htmlGroupStyle,
453
- cls = attr(parentGroup.element, 'class');
454
-
455
- // Common translate setter for X and Y on the HTML
456
- // group. Reverted the fix for #6957 du to
457
- // positioning problems and offline export (#7254,
458
- // #7280, #7529)
346
+ var htmlGroupStyle, cls = attr(parentGroup.element, 'class');
347
+ /**
348
+ * Common translate setter for X and Y on the HTML
349
+ * group. Reverted the fix for #6957 du to
350
+ * positioning problems and offline export (#7254,
351
+ * #7280, #7529)
352
+ * @private
353
+ * @param {*} value
354
+ * @param {string} key
355
+ * @return {void}
356
+ */
459
357
  function translateSetter(value, key) {
460
358
  parentGroup[key] = value;
461
-
462
359
  if (key === 'translateX') {
463
360
  htmlGroupStyle.left = value + 'px';
464
- } else {
361
+ }
362
+ else {
465
363
  htmlGroupStyle.top = value + 'px';
466
364
  }
467
-
468
365
  parentGroup.doTransform = true;
469
366
  }
470
-
471
367
  if (cls) {
472
368
  cls = { className: cls };
473
369
  } // else null
474
-
475
370
  // Create a HTML div and append it to the parent div
476
371
  // to emulate the SVG group structure
477
372
  htmlGroup =
478
- parentGroup.div =
479
- parentGroup.div || createElement('div', cls, {
480
- position: 'absolute',
481
- left: (parentGroup.translateX || 0) + 'px',
482
- top: (parentGroup.translateY || 0) + 'px',
483
- display: parentGroup.display,
484
- opacity: parentGroup.opacity, // #5075
485
- pointerEvents: (
486
- parentGroup.styles &&
487
- parentGroup.styles.pointerEvents
488
- ) // #5595
489
-
490
- // the top group is appended to container
491
- }, htmlGroup || container);
492
-
373
+ parentGroup.div =
374
+ parentGroup.div || createElement('div', cls, {
375
+ position: 'absolute',
376
+ left: (parentGroup.translateX || 0) + 'px',
377
+ top: (parentGroup.translateY || 0) + 'px',
378
+ display: parentGroup.display,
379
+ opacity: parentGroup.opacity,
380
+ pointerEvents: (parentGroup.styles &&
381
+ parentGroup.styles.pointerEvents) // #5595
382
+ // the top group is appended to container
383
+ }, htmlGroup || container);
493
384
  // Shortcut
494
385
  htmlGroupStyle = htmlGroup.style;
495
-
496
386
  // Set listeners to update the HTML div's position
497
387
  // whenever the SVG group position is changed.
498
388
  extend(parentGroup, {
@@ -500,19 +390,13 @@ extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
500
390
  // the related group
501
391
  classSetter: (function (htmlGroup) {
502
392
  return function (value) {
503
- this.element.setAttribute(
504
- 'class',
505
- value
506
- );
393
+ this.element.setAttribute('class', value);
507
394
  htmlGroup.className = value;
508
395
  };
509
396
  }(htmlGroup)),
510
397
  on: function () {
511
398
  if (parents[0].div) { // #6418
512
- wrapper.on.apply(
513
- { element: parents[0].div },
514
- arguments
515
- );
399
+ wrapper.on.apply({ element: parents[0].div }, arguments);
516
400
  }
517
401
  return parentGroup;
518
402
  },
@@ -523,20 +407,17 @@ extend(SVGRenderer.prototype, /** @lends SVGRenderer.prototype */ {
523
407
  addSetters(parentGroup);
524
408
  }
525
409
  });
526
-
527
410
  }
528
- } else {
411
+ }
412
+ else {
529
413
  htmlGroup = container;
530
414
  }
531
-
532
415
  htmlGroup.appendChild(element);
533
-
534
416
  // Shared with VML:
535
417
  wrapper.added = true;
536
418
  if (wrapper.alignOnAdd) {
537
419
  wrapper.htmlUpdateTransform();
538
420
  }
539
-
540
421
  return wrapper;
541
422
  };
542
423
  }
@@ -24,6 +24,7 @@ var addEvent = H.addEvent,
24
24
  fireEvent = H.fireEvent,
25
25
  hasTouch = H.hasTouch,
26
26
  isObject = H.isObject,
27
+ isArray = H.isArray,
27
28
  Legend = H.Legend,
28
29
  merge = H.merge,
29
30
  pick = H.pick,
@@ -61,20 +62,27 @@ TrackerMixin = H.TrackerMixin = {
61
62
  pointer.isDirectTouch = true;
62
63
  point.onMouseOver(e);
63
64
  }
64
- };
65
+ },
66
+ dataLabels;
65
67
 
66
68
  // Add reference to the point
67
69
  series.points.forEach(function (point) {
70
+ dataLabels = (
71
+ isArray(point.dataLabels) ?
72
+ point.dataLabels :
73
+ (point.dataLabel ? [point.dataLabel] : [])
74
+ );
75
+
68
76
  if (point.graphic) {
69
77
  point.graphic.element.point = point;
70
78
  }
71
- if (point.dataLabel) {
72
- if (point.dataLabel.div) {
73
- point.dataLabel.div.point = point;
79
+ dataLabels.forEach(function (dataLabel) {
80
+ if (dataLabel.div) {
81
+ dataLabel.div.point = point;
74
82
  } else {
75
- point.dataLabel.element.point = point;
83
+ dataLabel.element.point = point;
76
84
  }
77
- }
85
+ });
78
86
  });
79
87
 
80
88
  // Add the event listeners, we need to do this only once
@@ -791,7 +799,9 @@ extend(Point.prototype, /** @lends Highcharts.Point.prototype */ {
791
799
  point.events = events;
792
800
 
793
801
  H.objectEach(events, function (event, eventType) {
794
- addEvent(point, eventType, event);
802
+ if (H.isFunction(event)) {
803
+ addEvent(point, eventType, event);
804
+ }
795
805
  });
796
806
  this.hasImportedEvents = true;
797
807