aw-highstock_rails 7.0.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (697) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +9 -0
  3. data/.travis.yml +7 -0
  4. data/CODE_OF_CONDUCT.md +74 -0
  5. data/Gemfile +6 -0
  6. data/Gemfile.lock +22 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +53 -0
  9. data/Rakefile +10 -0
  10. data/aw-highstock_rails.gemspec +28 -0
  11. data/bin/console +14 -0
  12. data/bin/setup +8 -0
  13. data/lib/aw/highstock_rails.rb +9 -0
  14. data/lib/aw/highstock_rails/version.rb +5 -0
  15. data/vendor/assets/javascripts/highstock/css/annotations/popup.css +229 -0
  16. data/vendor/assets/javascripts/highstock/css/annotations/popup.scss +235 -0
  17. data/vendor/assets/javascripts/highstock/css/highcharts.css +890 -0
  18. data/vendor/assets/javascripts/highstock/css/highcharts.scss +788 -0
  19. data/vendor/assets/javascripts/highstock/css/stocktools/gui.css +268 -0
  20. data/vendor/assets/javascripts/highstock/css/stocktools/gui.scss +270 -0
  21. data/vendor/assets/javascripts/highstock/css/themes/dark-unica.css +951 -0
  22. data/vendor/assets/javascripts/highstock/css/themes/dark-unica.scss +122 -0
  23. data/vendor/assets/javascripts/highstock/css/themes/grid-light.css +904 -0
  24. data/vendor/assets/javascripts/highstock/css/themes/grid-light.scss +33 -0
  25. data/vendor/assets/javascripts/highstock/css/themes/sand-signika.css +920 -0
  26. data/vendor/assets/javascripts/highstock/css/themes/sand-signika.scss +74 -0
  27. data/vendor/assets/javascripts/highstock/es-modules/annotations/ControlPoint.js +130 -0
  28. data/vendor/assets/javascripts/highstock/es-modules/annotations/MockPoint.js +415 -0
  29. data/vendor/assets/javascripts/highstock/es-modules/annotations/annotations.src.js +1231 -0
  30. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableCircle.js +92 -0
  31. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableImage.js +101 -0
  32. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableLabel.js +452 -0
  33. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllablePath.js +175 -0
  34. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/ControllableRect.js +93 -0
  35. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/controllableMixin.js +411 -0
  36. data/vendor/assets/javascripts/highstock/es-modules/annotations/controllable/markerMixin.js +214 -0
  37. data/vendor/assets/javascripts/highstock/es-modules/annotations/eventEmitterMixin.js +271 -0
  38. data/vendor/assets/javascripts/highstock/es-modules/annotations/navigationBindings.js +1283 -0
  39. data/vendor/assets/javascripts/highstock/es-modules/annotations/popup.js +1069 -0
  40. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/CrookedLine.js +191 -0
  41. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/ElliottWave.js +76 -0
  42. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Fibonacci.js +247 -0
  43. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/InfinityLine.js +185 -0
  44. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Measure.js +928 -0
  45. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Pitchfork.js +203 -0
  46. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/Tunnel.js +242 -0
  47. data/vendor/assets/javascripts/highstock/es-modules/annotations/types/VerticalLine.js +157 -0
  48. data/vendor/assets/javascripts/highstock/es-modules/error-messages.js +128 -0
  49. data/vendor/assets/javascripts/highstock/es-modules/error.js +1 -0
  50. data/vendor/assets/javascripts/highstock/es-modules/indicators/acceleration-bands.src.js +199 -0
  51. data/vendor/assets/javascripts/highstock/es-modules/indicators/accumulation-distribution.src.js +129 -0
  52. data/vendor/assets/javascripts/highstock/es-modules/indicators/ao.src.js +206 -0
  53. data/vendor/assets/javascripts/highstock/es-modules/indicators/apo.src.js +148 -0
  54. data/vendor/assets/javascripts/highstock/es-modules/indicators/aroon-oscillator.src.js +128 -0
  55. data/vendor/assets/javascripts/highstock/es-modules/indicators/aroon.src.js +173 -0
  56. data/vendor/assets/javascripts/highstock/es-modules/indicators/atr.src.js +151 -0
  57. data/vendor/assets/javascripts/highstock/es-modules/indicators/bollinger-bands.src.js +209 -0
  58. data/vendor/assets/javascripts/highstock/es-modules/indicators/cci.src.js +131 -0
  59. data/vendor/assets/javascripts/highstock/es-modules/indicators/chaikin.src.js +167 -0
  60. data/vendor/assets/javascripts/highstock/es-modules/indicators/cmf.src.js +246 -0
  61. data/vendor/assets/javascripts/highstock/es-modules/indicators/dema.src.js +191 -0
  62. data/vendor/assets/javascripts/highstock/es-modules/indicators/dpo.src.js +138 -0
  63. data/vendor/assets/javascripts/highstock/es-modules/indicators/ema.src.js +166 -0
  64. data/vendor/assets/javascripts/highstock/es-modules/indicators/ichimoku-kinko-hyo.src.js +850 -0
  65. data/vendor/assets/javascripts/highstock/es-modules/indicators/indicators.src.js +425 -0
  66. data/vendor/assets/javascripts/highstock/es-modules/indicators/keltner-channels.src.js +193 -0
  67. data/vendor/assets/javascripts/highstock/es-modules/indicators/macd.src.js +417 -0
  68. data/vendor/assets/javascripts/highstock/es-modules/indicators/mfi.src.js +198 -0
  69. data/vendor/assets/javascripts/highstock/es-modules/indicators/momentum.src.js +119 -0
  70. data/vendor/assets/javascripts/highstock/es-modules/indicators/natr.src.js +74 -0
  71. data/vendor/assets/javascripts/highstock/es-modules/indicators/pivot-points.src.js +360 -0
  72. data/vendor/assets/javascripts/highstock/es-modules/indicators/ppo.src.js +152 -0
  73. data/vendor/assets/javascripts/highstock/es-modules/indicators/price-channel.src.js +149 -0
  74. data/vendor/assets/javascripts/highstock/es-modules/indicators/price-envelopes.src.js +251 -0
  75. data/vendor/assets/javascripts/highstock/es-modules/indicators/psar.src.js +307 -0
  76. data/vendor/assets/javascripts/highstock/es-modules/indicators/regressions.src.js +427 -0
  77. data/vendor/assets/javascripts/highstock/es-modules/indicators/roc.src.js +149 -0
  78. data/vendor/assets/javascripts/highstock/es-modules/indicators/rsi.src.js +163 -0
  79. data/vendor/assets/javascripts/highstock/es-modules/indicators/stochastic.src.js +193 -0
  80. data/vendor/assets/javascripts/highstock/es-modules/indicators/supertrend.src.js +544 -0
  81. data/vendor/assets/javascripts/highstock/es-modules/indicators/tema.src.js +247 -0
  82. data/vendor/assets/javascripts/highstock/es-modules/indicators/trix.src.js +96 -0
  83. data/vendor/assets/javascripts/highstock/es-modules/indicators/volume-by-price.src.js +671 -0
  84. data/vendor/assets/javascripts/highstock/es-modules/indicators/vwap.src.js +189 -0
  85. data/vendor/assets/javascripts/highstock/es-modules/indicators/williams-r.src.js +128 -0
  86. data/vendor/assets/javascripts/highstock/es-modules/indicators/wma.src.js +146 -0
  87. data/vendor/assets/javascripts/highstock/es-modules/indicators/zigzag.src.js +221 -0
  88. data/vendor/assets/javascripts/highstock/es-modules/masters/highcharts-3d.src.js +17 -0
  89. data/vendor/assets/javascripts/highstock/es-modules/masters/highcharts-more.src.js +22 -0
  90. data/vendor/assets/javascripts/highstock/es-modules/masters/highstock.src.js +11 -0
  91. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/acceleration-bands.src.js +11 -0
  92. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/accumulation-distribution.src.js +11 -0
  93. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ao.src.js +11 -0
  94. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/apo.src.js +11 -0
  95. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/aroon-oscillator.src.js +11 -0
  96. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/aroon.src.js +11 -0
  97. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/atr.src.js +11 -0
  98. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/bollinger-bands.src.js +11 -0
  99. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/cci.src.js +11 -0
  100. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/chaikin.src.js +11 -0
  101. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/cmf.src.js +10 -0
  102. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/dema.src.js +11 -0
  103. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/dpo.src.js +11 -0
  104. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ema.src.js +11 -0
  105. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ichimoku-kinko-hyo.src.js +11 -0
  106. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/indicators-all.src.js +49 -0
  107. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/indicators.src.js +11 -0
  108. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/keltner-channels.src.js +11 -0
  109. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/macd.src.js +11 -0
  110. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/mfi.src.js +11 -0
  111. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/momentum.src.js +11 -0
  112. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/natr.src.js +11 -0
  113. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/pivot-points.src.js +11 -0
  114. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/ppo.src.js +11 -0
  115. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/price-channel.src.js +11 -0
  116. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/price-envelopes.src.js +11 -0
  117. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/psar.src.js +11 -0
  118. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/regressions.src.js +11 -0
  119. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/roc.src.js +11 -0
  120. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/rsi.src.js +11 -0
  121. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/stochastic.src.js +11 -0
  122. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/supertrend.src.js +11 -0
  123. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/tema.src.js +11 -0
  124. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/trix.src.js +11 -0
  125. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/volume-by-price.src.js +11 -0
  126. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/vwap.src.js +11 -0
  127. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/williams-r.src.js +11 -0
  128. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/wma.src.js +11 -0
  129. data/vendor/assets/javascripts/highstock/es-modules/masters/indicators/zigzag.src.js +11 -0
  130. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/accessibility.src.js +13 -0
  131. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/annotations-advanced.src.js +20 -0
  132. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/annotations.src.js +12 -0
  133. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/arrow-symbols.src.js +10 -0
  134. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/boost-canvas.src.js +11 -0
  135. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/boost.src.js +11 -0
  136. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/bullet.src.js +11 -0
  137. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/current-date-indicator.src.js +10 -0
  138. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/cylinder.src.js +10 -0
  139. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/data.src.js +10 -0
  140. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/datagrouping.src.js +12 -0
  141. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/debugger.src.js +13 -0
  142. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/dependency-wheel.src.js +10 -0
  143. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/drag-panes.src.js +11 -0
  144. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/draggable-points.src.js +9 -0
  145. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/drilldown.src.js +10 -0
  146. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/export-data.src.js +10 -0
  147. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/exporting.src.js +10 -0
  148. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/full-screen.src.js +11 -0
  149. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/funnel.src.js +10 -0
  150. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/grid-axis.src.js +10 -0
  151. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/heatmap.src.js +11 -0
  152. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/histogram-bellcurve.src.js +11 -0
  153. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/item-series.src.js +11 -0
  154. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/networkgraph.src.js +10 -0
  155. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/no-data-to-display.src.js +11 -0
  156. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/offline-exporting.src.js +10 -0
  157. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/oldie-polyfills.src.js +11 -0
  158. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/oldie.src.js +11 -0
  159. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/overlapping-datalabels.src.js +9 -0
  160. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/parallel-coordinates.src.js +11 -0
  161. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pareto.src.js +11 -0
  162. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pathfinder.src.js +10 -0
  163. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/pattern-fill.src.js +11 -0
  164. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/price-indicator.src.js +11 -0
  165. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sankey.src.js +10 -0
  166. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/series-label.src.js +9 -0
  167. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/solid-gauge.src.js +10 -0
  168. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sonification.src.js +12 -0
  169. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/static-scale.src.js +10 -0
  170. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/stock-tools.src.js +12 -0
  171. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/stock.src.js +19 -0
  172. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/streamgraph.src.js +10 -0
  173. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/sunburst.src.js +10 -0
  174. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/tilemap.src.js +10 -0
  175. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/timeline.src.js +11 -0
  176. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/treegrid.src.js +10 -0
  177. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/treemap.src.js +10 -0
  178. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/variable-pie.src.js +11 -0
  179. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/variwide.src.js +10 -0
  180. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/vector.src.js +10 -0
  181. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/venn.src.js +10 -0
  182. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/windbarb.src.js +10 -0
  183. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/wordcloud.src.js +10 -0
  184. data/vendor/assets/javascripts/highstock/es-modules/masters/modules/xrange.src.js +10 -0
  185. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/avocado.js +9 -0
  186. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/avocado.src.js +9 -0
  187. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-blue.src.js +9 -0
  188. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-green.src.js +9 -0
  189. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/dark-unica.src.js +9 -0
  190. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/gray.src.js +9 -0
  191. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/grid-light.src.js +9 -0
  192. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/grid.src.js +9 -0
  193. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sand-signika.src.js +9 -0
  194. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/skies.src.js +9 -0
  195. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sunset.js +9 -0
  196. data/vendor/assets/javascripts/highstock/es-modules/masters/themes/sunset.src.js +9 -0
  197. data/vendor/assets/javascripts/highstock/es-modules/mixins/ajax.js +123 -0
  198. data/vendor/assets/javascripts/highstock/es-modules/mixins/centered-series.js +116 -0
  199. data/vendor/assets/javascripts/highstock/es-modules/mixins/derived-series.js +150 -0
  200. data/vendor/assets/javascripts/highstock/es-modules/mixins/download-url.js +103 -0
  201. data/vendor/assets/javascripts/highstock/es-modules/mixins/draw-point.js +51 -0
  202. data/vendor/assets/javascripts/highstock/es-modules/mixins/geometry-circles.js +300 -0
  203. data/vendor/assets/javascripts/highstock/es-modules/mixins/geometry.js +50 -0
  204. data/vendor/assets/javascripts/highstock/es-modules/mixins/indicator-required.js +49 -0
  205. data/vendor/assets/javascripts/highstock/es-modules/mixins/multipe-lines.js +223 -0
  206. data/vendor/assets/javascripts/highstock/es-modules/mixins/navigation.js +59 -0
  207. data/vendor/assets/javascripts/highstock/es-modules/mixins/nodes.js +76 -0
  208. data/vendor/assets/javascripts/highstock/es-modules/mixins/on-series.js +167 -0
  209. data/vendor/assets/javascripts/highstock/es-modules/mixins/polygon.js +293 -0
  210. data/vendor/assets/javascripts/highstock/es-modules/mixins/reduce-array.js +53 -0
  211. data/vendor/assets/javascripts/highstock/es-modules/mixins/tree-series.js +256 -0
  212. data/vendor/assets/javascripts/highstock/es-modules/modules/a11y-i18n.src.js +524 -0
  213. data/vendor/assets/javascripts/highstock/es-modules/modules/annotations-legacy.src.js +1951 -0
  214. data/vendor/assets/javascripts/highstock/es-modules/modules/bellcurve.src.js +173 -0
  215. data/vendor/assets/javascripts/highstock/es-modules/modules/boost-canvas.src.js +732 -0
  216. data/vendor/assets/javascripts/highstock/es-modules/modules/boost.src.js +3730 -0
  217. data/vendor/assets/javascripts/highstock/es-modules/modules/bullet.src.js +361 -0
  218. data/vendor/assets/javascripts/highstock/es-modules/modules/cylinder.src.js +389 -0
  219. data/vendor/assets/javascripts/highstock/es-modules/modules/data.src.js +2417 -0
  220. data/vendor/assets/javascripts/highstock/es-modules/modules/debugger.src.js +109 -0
  221. data/vendor/assets/javascripts/highstock/es-modules/modules/dependency-wheel.src.js +199 -0
  222. data/vendor/assets/javascripts/highstock/es-modules/modules/drag-panes.src.js +624 -0
  223. data/vendor/assets/javascripts/highstock/es-modules/modules/draggable-points.src.js +2625 -0
  224. data/vendor/assets/javascripts/highstock/es-modules/modules/drilldown.src.js +1300 -0
  225. data/vendor/assets/javascripts/highstock/es-modules/modules/export-data.src.js +983 -0
  226. data/vendor/assets/javascripts/highstock/es-modules/modules/exporting.src.js +2149 -0
  227. data/vendor/assets/javascripts/highstock/es-modules/modules/full-screen.src.js +40 -0
  228. data/vendor/assets/javascripts/highstock/es-modules/modules/funnel.src.js +552 -0
  229. data/vendor/assets/javascripts/highstock/es-modules/modules/histogram.src.js +229 -0
  230. data/vendor/assets/javascripts/highstock/es-modules/modules/item-series.src.js +150 -0
  231. data/vendor/assets/javascripts/highstock/es-modules/modules/keyboard-navigation.src.js +1606 -0
  232. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/QuadTree.js +175 -0
  233. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/layouts.js +506 -0
  234. data/vendor/assets/javascripts/highstock/es-modules/modules/networkgraph/networkgraph.src.js +740 -0
  235. data/vendor/assets/javascripts/highstock/es-modules/modules/no-data-to-display.src.js +260 -0
  236. data/vendor/assets/javascripts/highstock/es-modules/modules/offline-exporting.src.js +710 -0
  237. data/vendor/assets/javascripts/highstock/es-modules/modules/oldie-polyfills.src.js +121 -0
  238. data/vendor/assets/javascripts/highstock/es-modules/modules/oldie.src.js +1556 -0
  239. data/vendor/assets/javascripts/highstock/es-modules/modules/overlapping-datalabels.src.js +250 -0
  240. data/vendor/assets/javascripts/highstock/es-modules/modules/parallel-coordinates.src.js +492 -0
  241. data/vendor/assets/javascripts/highstock/es-modules/modules/pareto.src.js +152 -0
  242. data/vendor/assets/javascripts/highstock/es-modules/modules/pattern-fill.src.js +607 -0
  243. data/vendor/assets/javascripts/highstock/es-modules/modules/price-indicator.src.js +149 -0
  244. data/vendor/assets/javascripts/highstock/es-modules/modules/sankey.src.js +809 -0
  245. data/vendor/assets/javascripts/highstock/es-modules/modules/screen-reader.src.js +954 -0
  246. data/vendor/assets/javascripts/highstock/es-modules/modules/series-label.src.js +1042 -0
  247. data/vendor/assets/javascripts/highstock/es-modules/modules/solid-gauge.src.js +486 -0
  248. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Earcon.js +184 -0
  249. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Instrument.js +582 -0
  250. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/Timeline.js +702 -0
  251. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/chartSonify.js +1026 -0
  252. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/instrumentDefinitions.js +37 -0
  253. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/musicalFrequencies.js +113 -0
  254. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/pointSonify.js +385 -0
  255. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/sonification.js +107 -0
  256. data/vendor/assets/javascripts/highstock/es-modules/modules/sonification/utilities.js +178 -0
  257. data/vendor/assets/javascripts/highstock/es-modules/modules/static-scale.src.js +88 -0
  258. data/vendor/assets/javascripts/highstock/es-modules/modules/stock-tools-bindings.js +1950 -0
  259. data/vendor/assets/javascripts/highstock/es-modules/modules/stock-tools-gui.js +1458 -0
  260. data/vendor/assets/javascripts/highstock/es-modules/modules/streamgraph.src.js +132 -0
  261. data/vendor/assets/javascripts/highstock/es-modules/modules/sunburst.src.js +1041 -0
  262. data/vendor/assets/javascripts/highstock/es-modules/modules/tilemap.src.js +769 -0
  263. data/vendor/assets/javascripts/highstock/es-modules/modules/timeline.src.js +750 -0
  264. data/vendor/assets/javascripts/highstock/es-modules/modules/treemap.src.js +1803 -0
  265. data/vendor/assets/javascripts/highstock/es-modules/modules/variable-pie.src.js +459 -0
  266. data/vendor/assets/javascripts/highstock/es-modules/modules/variwide.src.js +350 -0
  267. data/vendor/assets/javascripts/highstock/es-modules/modules/vector.src.js +354 -0
  268. data/vendor/assets/javascripts/highstock/es-modules/modules/venn.src.js +1192 -0
  269. data/vendor/assets/javascripts/highstock/es-modules/modules/windbarb.src.js +380 -0
  270. data/vendor/assets/javascripts/highstock/es-modules/modules/wordcloud.src.js +1103 -0
  271. data/vendor/assets/javascripts/highstock/es-modules/modules/xrange.src.js +761 -0
  272. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Axis.js +669 -0
  273. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Chart.js +1753 -0
  274. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Column.js +437 -0
  275. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Math.js +206 -0
  276. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Pie.js +207 -0
  277. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/SVGRenderer.js +1002 -0
  278. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Scatter.js +154 -0
  279. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/Series.js +73 -0
  280. data/vendor/assets/javascripts/highstock/es-modules/parts-3d/VMLRenderer.js +62 -0
  281. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/ArrowSymbols.js +198 -0
  282. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/CurrentDateIndicator.js +100 -0
  283. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GanttChart.js +140 -0
  284. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GanttSeries.js +415 -0
  285. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/GridAxis.js +961 -0
  286. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/Pathfinder.js +1298 -0
  287. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/PathfinderAlgorithms.js +816 -0
  288. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/Tree.js +158 -0
  289. data/vendor/assets/javascripts/highstock/es-modules/parts-gantt/TreeGrid.js +1003 -0
  290. data/vendor/assets/javascripts/highstock/es-modules/parts-map/ColorAxis.js +1103 -0
  291. data/vendor/assets/javascripts/highstock/es-modules/parts-map/ColorSeriesMixin.js +138 -0
  292. data/vendor/assets/javascripts/highstock/es-modules/parts-map/GeoJSON.js +435 -0
  293. data/vendor/assets/javascripts/highstock/es-modules/parts-map/HeatmapSeries.js +474 -0
  294. data/vendor/assets/javascripts/highstock/es-modules/parts-map/Map.js +477 -0
  295. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapAxis.js +124 -0
  296. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapBubbleSeries.js +274 -0
  297. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapLineSeries.js +143 -0
  298. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapNavigation.js +357 -0
  299. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapPointSeries.js +187 -0
  300. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapPointer.js +132 -0
  301. data/vendor/assets/javascripts/highstock/es-modules/parts-map/MapSeries.js +1294 -0
  302. data/vendor/assets/javascripts/highstock/es-modules/parts-more/AreaRangeSeries.js +725 -0
  303. data/vendor/assets/javascripts/highstock/es-modules/parts-more/AreaSplineRangeSeries.js +98 -0
  304. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BoxPlotSeries.js +617 -0
  305. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BubbleLegend.js +1167 -0
  306. data/vendor/assets/javascripts/highstock/es-modules/parts-more/BubbleSeries.js +661 -0
  307. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ColumnPyramidSeries.js +288 -0
  308. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ColumnRangeSeries.js +278 -0
  309. data/vendor/assets/javascripts/highstock/es-modules/parts-more/ErrorBarSeries.js +172 -0
  310. data/vendor/assets/javascripts/highstock/es-modules/parts-more/GaugeSeries.js +618 -0
  311. data/vendor/assets/javascripts/highstock/es-modules/parts-more/PackedBubbleSeries.js +567 -0
  312. data/vendor/assets/javascripts/highstock/es-modules/parts-more/Pane.js +399 -0
  313. data/vendor/assets/javascripts/highstock/es-modules/parts-more/Polar.js +634 -0
  314. data/vendor/assets/javascripts/highstock/es-modules/parts-more/PolygonSeries.js +151 -0
  315. data/vendor/assets/javascripts/highstock/es-modules/parts-more/RadialAxis.js +685 -0
  316. data/vendor/assets/javascripts/highstock/es-modules/parts-more/WaterfallSeries.js +765 -0
  317. data/vendor/assets/javascripts/highstock/es-modules/parts.js +684 -0
  318. data/vendor/assets/javascripts/highstock/es-modules/parts/AreaSeries.js +578 -0
  319. data/vendor/assets/javascripts/highstock/es-modules/parts/AreaSplineSeries.js +122 -0
  320. data/vendor/assets/javascripts/highstock/es-modules/parts/Axis.js +6453 -0
  321. data/vendor/assets/javascripts/highstock/es-modules/parts/BarSeries.js +153 -0
  322. data/vendor/assets/javascripts/highstock/es-modules/parts/CandlestickSeries.js +358 -0
  323. data/vendor/assets/javascripts/highstock/es-modules/parts/Chart.js +2307 -0
  324. data/vendor/assets/javascripts/highstock/es-modules/parts/Color.js +301 -0
  325. data/vendor/assets/javascripts/highstock/es-modules/parts/ColumnSeries.js +1125 -0
  326. data/vendor/assets/javascripts/highstock/es-modules/parts/DataGrouping.js +1115 -0
  327. data/vendor/assets/javascripts/highstock/es-modules/parts/DataLabels.js +1431 -0
  328. data/vendor/assets/javascripts/highstock/es-modules/parts/DateTimeAxis.js +134 -0
  329. data/vendor/assets/javascripts/highstock/es-modules/parts/Dynamics.js +1301 -0
  330. data/vendor/assets/javascripts/highstock/es-modules/parts/FlagsSeries.js +739 -0
  331. data/vendor/assets/javascripts/highstock/es-modules/parts/Globals.js +75 -0
  332. data/vendor/assets/javascripts/highstock/es-modules/parts/Html.js +539 -0
  333. data/vendor/assets/javascripts/highstock/es-modules/parts/Interaction.js +1299 -0
  334. data/vendor/assets/javascripts/highstock/es-modules/parts/Legend.js +1411 -0
  335. data/vendor/assets/javascripts/highstock/es-modules/parts/LogarithmicAxis.js +168 -0
  336. data/vendor/assets/javascripts/highstock/es-modules/parts/MSPointer.js +176 -0
  337. data/vendor/assets/javascripts/highstock/es-modules/parts/Navigator.js +2486 -0
  338. data/vendor/assets/javascripts/highstock/es-modules/parts/OHLCSeries.js +412 -0
  339. data/vendor/assets/javascripts/highstock/es-modules/parts/Options.js +3732 -0
  340. data/vendor/assets/javascripts/highstock/es-modules/parts/OrdinalAxis.js +962 -0
  341. data/vendor/assets/javascripts/highstock/es-modules/parts/PieSeries.js +1328 -0
  342. data/vendor/assets/javascripts/highstock/es-modules/parts/PlotBandSeries.experimental.js +74 -0
  343. data/vendor/assets/javascripts/highstock/es-modules/parts/PlotLineOrBand.js +1061 -0
  344. data/vendor/assets/javascripts/highstock/es-modules/parts/Point.js +681 -0
  345. data/vendor/assets/javascripts/highstock/es-modules/parts/Pointer.js +1332 -0
  346. data/vendor/assets/javascripts/highstock/es-modules/parts/RangeSelector.js +2063 -0
  347. data/vendor/assets/javascripts/highstock/es-modules/parts/Responsive.js +295 -0
  348. data/vendor/assets/javascripts/highstock/es-modules/parts/ScatterSeries.js +278 -0
  349. data/vendor/assets/javascripts/highstock/es-modules/parts/ScrollablePlotArea.js +266 -0
  350. data/vendor/assets/javascripts/highstock/es-modules/parts/Scrollbar.js +1134 -0
  351. data/vendor/assets/javascripts/highstock/es-modules/parts/Series.js +5864 -0
  352. data/vendor/assets/javascripts/highstock/es-modules/parts/SplineSeries.js +267 -0
  353. data/vendor/assets/javascripts/highstock/es-modules/parts/Stacking.js +604 -0
  354. data/vendor/assets/javascripts/highstock/es-modules/parts/StockChart.js +951 -0
  355. data/vendor/assets/javascripts/highstock/es-modules/parts/SvgRenderer.js +5109 -0
  356. data/vendor/assets/javascripts/highstock/es-modules/parts/Tick.js +746 -0
  357. data/vendor/assets/javascripts/highstock/es-modules/parts/Time.js +881 -0
  358. data/vendor/assets/javascripts/highstock/es-modules/parts/Tooltip.js +1318 -0
  359. data/vendor/assets/javascripts/highstock/es-modules/parts/TouchPointer.js +404 -0
  360. data/vendor/assets/javascripts/highstock/es-modules/parts/Utilities.js +2751 -0
  361. data/vendor/assets/javascripts/highstock/es-modules/themes/avocado.js +37 -0
  362. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-blue.js +259 -0
  363. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-green.js +261 -0
  364. data/vendor/assets/javascripts/highstock/es-modules/themes/dark-unica.js +220 -0
  365. data/vendor/assets/javascripts/highstock/es-modules/themes/gray.js +267 -0
  366. data/vendor/assets/javascripts/highstock/es-modules/themes/grid-light.js +81 -0
  367. data/vendor/assets/javascripts/highstock/es-modules/themes/grid.js +110 -0
  368. data/vendor/assets/javascripts/highstock/es-modules/themes/sand-signika.js +111 -0
  369. data/vendor/assets/javascripts/highstock/es-modules/themes/skies.js +100 -0
  370. data/vendor/assets/javascripts/highstock/es-modules/themes/sunset.js +36 -0
  371. data/vendor/assets/javascripts/highstock/highcharts-3d.js +85 -0
  372. data/vendor/assets/javascripts/highstock/highcharts-3d.js.map +1 -0
  373. data/vendor/assets/javascripts/highstock/highcharts-more.js +101 -0
  374. data/vendor/assets/javascripts/highstock/highcharts-more.js.map +1 -0
  375. data/vendor/assets/javascripts/highstock/highstock.js +583 -0
  376. data/vendor/assets/javascripts/highstock/highstock.js.map +1 -0
  377. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.js +16 -0
  378. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.js.map +1 -0
  379. data/vendor/assets/javascripts/highstock/indicators/acceleration-bands.src.js +448 -0
  380. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.js +12 -0
  381. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.js.map +1 -0
  382. data/vendor/assets/javascripts/highstock/indicators/accumulation-distribution.src.js +156 -0
  383. data/vendor/assets/javascripts/highstock/indicators/ao.js +13 -0
  384. data/vendor/assets/javascripts/highstock/indicators/ao.js.map +1 -0
  385. data/vendor/assets/javascripts/highstock/indicators/ao.src.js +233 -0
  386. data/vendor/assets/javascripts/highstock/indicators/apo.js +13 -0
  387. data/vendor/assets/javascripts/highstock/indicators/apo.js.map +1 -0
  388. data/vendor/assets/javascripts/highstock/indicators/apo.src.js +223 -0
  389. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.js +15 -0
  390. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.js.map +1 -0
  391. data/vendor/assets/javascripts/highstock/indicators/aroon-oscillator.src.js +426 -0
  392. data/vendor/assets/javascripts/highstock/indicators/aroon.js +16 -0
  393. data/vendor/assets/javascripts/highstock/indicators/aroon.js.map +1 -0
  394. data/vendor/assets/javascripts/highstock/indicators/aroon.src.js +423 -0
  395. data/vendor/assets/javascripts/highstock/indicators/atr.js +12 -0
  396. data/vendor/assets/javascripts/highstock/indicators/atr.js.map +1 -0
  397. data/vendor/assets/javascripts/highstock/indicators/atr.src.js +178 -0
  398. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.js +16 -0
  399. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.js.map +1 -0
  400. data/vendor/assets/javascripts/highstock/indicators/bollinger-bands.src.js +458 -0
  401. data/vendor/assets/javascripts/highstock/indicators/cci.js +12 -0
  402. data/vendor/assets/javascripts/highstock/indicators/cci.js.map +1 -0
  403. data/vendor/assets/javascripts/highstock/indicators/cci.src.js +158 -0
  404. data/vendor/assets/javascripts/highstock/indicators/chaikin.js +15 -0
  405. data/vendor/assets/javascripts/highstock/indicators/chaikin.js.map +1 -0
  406. data/vendor/assets/javascripts/highstock/indicators/chaikin.src.js +370 -0
  407. data/vendor/assets/javascripts/highstock/indicators/cmf.js +12 -0
  408. data/vendor/assets/javascripts/highstock/indicators/cmf.js.map +1 -0
  409. data/vendor/assets/javascripts/highstock/indicators/cmf.src.js +273 -0
  410. data/vendor/assets/javascripts/highstock/indicators/dema.js +13 -0
  411. data/vendor/assets/javascripts/highstock/indicators/dema.js.map +1 -0
  412. data/vendor/assets/javascripts/highstock/indicators/dema.src.js +266 -0
  413. data/vendor/assets/javascripts/highstock/indicators/dpo.js +12 -0
  414. data/vendor/assets/javascripts/highstock/indicators/dpo.js.map +1 -0
  415. data/vendor/assets/javascripts/highstock/indicators/dpo.src.js +166 -0
  416. data/vendor/assets/javascripts/highstock/indicators/ema.js +12 -0
  417. data/vendor/assets/javascripts/highstock/indicators/ema.js.map +1 -0
  418. data/vendor/assets/javascripts/highstock/indicators/ema.src.js +193 -0
  419. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.js +22 -0
  420. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.js.map +1 -0
  421. data/vendor/assets/javascripts/highstock/indicators/ichimoku-kinko-hyo.src.js +877 -0
  422. data/vendor/assets/javascripts/highstock/indicators/indicators-all.js +117 -0
  423. data/vendor/assets/javascripts/highstock/indicators/indicators-all.js.map +1 -0
  424. data/vendor/assets/javascripts/highstock/indicators/indicators-all.src.js +9389 -0
  425. data/vendor/assets/javascripts/highstock/indicators/indicators.js +17 -0
  426. data/vendor/assets/javascripts/highstock/indicators/indicators.js.map +1 -0
  427. data/vendor/assets/javascripts/highstock/indicators/indicators.src.js +500 -0
  428. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.js +16 -0
  429. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.js.map +1 -0
  430. data/vendor/assets/javascripts/highstock/indicators/keltner-channels.src.js +442 -0
  431. data/vendor/assets/javascripts/highstock/indicators/macd.js +18 -0
  432. data/vendor/assets/javascripts/highstock/indicators/macd.js.map +1 -0
  433. data/vendor/assets/javascripts/highstock/indicators/macd.src.js +444 -0
  434. data/vendor/assets/javascripts/highstock/indicators/mfi.js +13 -0
  435. data/vendor/assets/javascripts/highstock/indicators/mfi.js.map +1 -0
  436. data/vendor/assets/javascripts/highstock/indicators/mfi.src.js +225 -0
  437. data/vendor/assets/javascripts/highstock/indicators/momentum.js +12 -0
  438. data/vendor/assets/javascripts/highstock/indicators/momentum.js.map +1 -0
  439. data/vendor/assets/javascripts/highstock/indicators/momentum.src.js +146 -0
  440. data/vendor/assets/javascripts/highstock/indicators/natr.js +12 -0
  441. data/vendor/assets/javascripts/highstock/indicators/natr.js.map +1 -0
  442. data/vendor/assets/javascripts/highstock/indicators/natr.src.js +101 -0
  443. data/vendor/assets/javascripts/highstock/indicators/pivot-points.js +16 -0
  444. data/vendor/assets/javascripts/highstock/indicators/pivot-points.js.map +1 -0
  445. data/vendor/assets/javascripts/highstock/indicators/pivot-points.src.js +387 -0
  446. data/vendor/assets/javascripts/highstock/indicators/ppo.js +13 -0
  447. data/vendor/assets/javascripts/highstock/indicators/ppo.js.map +1 -0
  448. data/vendor/assets/javascripts/highstock/indicators/ppo.src.js +227 -0
  449. data/vendor/assets/javascripts/highstock/indicators/price-channel.js +16 -0
  450. data/vendor/assets/javascripts/highstock/indicators/price-channel.js.map +1 -0
  451. data/vendor/assets/javascripts/highstock/indicators/price-channel.src.js +450 -0
  452. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.js +15 -0
  453. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.js.map +1 -0
  454. data/vendor/assets/javascripts/highstock/indicators/price-envelopes.src.js +278 -0
  455. data/vendor/assets/javascripts/highstock/indicators/psar.js +13 -0
  456. data/vendor/assets/javascripts/highstock/indicators/psar.js.map +1 -0
  457. data/vendor/assets/javascripts/highstock/indicators/psar.src.js +334 -0
  458. data/vendor/assets/javascripts/highstock/indicators/regressions.js +14 -0
  459. data/vendor/assets/javascripts/highstock/indicators/regressions.js.map +1 -0
  460. data/vendor/assets/javascripts/highstock/indicators/regressions.src.js +454 -0
  461. data/vendor/assets/javascripts/highstock/indicators/roc.js +12 -0
  462. data/vendor/assets/javascripts/highstock/indicators/roc.js.map +1 -0
  463. data/vendor/assets/javascripts/highstock/indicators/roc.src.js +176 -0
  464. data/vendor/assets/javascripts/highstock/indicators/rsi.js +12 -0
  465. data/vendor/assets/javascripts/highstock/indicators/rsi.js.map +1 -0
  466. data/vendor/assets/javascripts/highstock/indicators/rsi.src.js +190 -0
  467. data/vendor/assets/javascripts/highstock/indicators/stochastic.js +17 -0
  468. data/vendor/assets/javascripts/highstock/indicators/stochastic.js.map +1 -0
  469. data/vendor/assets/javascripts/highstock/indicators/stochastic.src.js +494 -0
  470. data/vendor/assets/javascripts/highstock/indicators/supertrend.js +17 -0
  471. data/vendor/assets/javascripts/highstock/indicators/supertrend.js.map +1 -0
  472. data/vendor/assets/javascripts/highstock/indicators/supertrend.src.js +571 -0
  473. data/vendor/assets/javascripts/highstock/indicators/tema.js +14 -0
  474. data/vendor/assets/javascripts/highstock/indicators/tema.js.map +1 -0
  475. data/vendor/assets/javascripts/highstock/indicators/tema.src.js +322 -0
  476. data/vendor/assets/javascripts/highstock/indicators/trix.js +12 -0
  477. data/vendor/assets/javascripts/highstock/indicators/trix.js.map +1 -0
  478. data/vendor/assets/javascripts/highstock/indicators/trix.src.js +171 -0
  479. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.js +21 -0
  480. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.js.map +1 -0
  481. data/vendor/assets/javascripts/highstock/indicators/volume-by-price.src.js +698 -0
  482. data/vendor/assets/javascripts/highstock/indicators/vwap.js +12 -0
  483. data/vendor/assets/javascripts/highstock/indicators/vwap.js.map +1 -0
  484. data/vendor/assets/javascripts/highstock/indicators/vwap.src.js +216 -0
  485. data/vendor/assets/javascripts/highstock/indicators/williams-r.js +13 -0
  486. data/vendor/assets/javascripts/highstock/indicators/williams-r.js.map +1 -0
  487. data/vendor/assets/javascripts/highstock/indicators/williams-r.src.js +207 -0
  488. data/vendor/assets/javascripts/highstock/indicators/wma.js +12 -0
  489. data/vendor/assets/javascripts/highstock/indicators/wma.js.map +1 -0
  490. data/vendor/assets/javascripts/highstock/indicators/wma.src.js +173 -0
  491. data/vendor/assets/javascripts/highstock/indicators/zigzag.js +13 -0
  492. data/vendor/assets/javascripts/highstock/indicators/zigzag.js.map +1 -0
  493. data/vendor/assets/javascripts/highstock/indicators/zigzag.src.js +248 -0
  494. data/vendor/assets/javascripts/highstock/lib/canvg.js +130 -0
  495. data/vendor/assets/javascripts/highstock/lib/canvg.src.js +3073 -0
  496. data/vendor/assets/javascripts/highstock/lib/jspdf.js +283 -0
  497. data/vendor/assets/javascripts/highstock/lib/jspdf.src.js +21627 -0
  498. data/vendor/assets/javascripts/highstock/lib/rgbcolor.js +17 -0
  499. data/vendor/assets/javascripts/highstock/lib/rgbcolor.src.js +299 -0
  500. data/vendor/assets/javascripts/highstock/lib/svg2pdf.js +38 -0
  501. data/vendor/assets/javascripts/highstock/lib/svg2pdf.src.js +4390 -0
  502. data/vendor/assets/javascripts/highstock/modules/accessibility.js +73 -0
  503. data/vendor/assets/javascripts/highstock/modules/accessibility.js.map +1 -0
  504. data/vendor/assets/javascripts/highstock/modules/accessibility.src.js +3103 -0
  505. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.js +132 -0
  506. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.js.map +1 -0
  507. data/vendor/assets/javascripts/highstock/modules/annotations-advanced.src.js +8230 -0
  508. data/vendor/assets/javascripts/highstock/modules/annotations.js +94 -0
  509. data/vendor/assets/javascripts/highstock/modules/annotations.js.map +1 -0
  510. data/vendor/assets/javascripts/highstock/modules/annotations.src.js +6001 -0
  511. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.js +11 -0
  512. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.js.map +1 -0
  513. data/vendor/assets/javascripts/highstock/modules/arrow-symbols.src.js +225 -0
  514. data/vendor/assets/javascripts/highstock/modules/boost-canvas.js +23 -0
  515. data/vendor/assets/javascripts/highstock/modules/boost-canvas.js.map +1 -0
  516. data/vendor/assets/javascripts/highstock/modules/boost-canvas.src.js +756 -0
  517. data/vendor/assets/javascripts/highstock/modules/boost.js +65 -0
  518. data/vendor/assets/javascripts/highstock/modules/boost.js.map +1 -0
  519. data/vendor/assets/javascripts/highstock/modules/boost.src.js +3752 -0
  520. data/vendor/assets/javascripts/highstock/modules/bullet.js +14 -0
  521. data/vendor/assets/javascripts/highstock/modules/bullet.js.map +1 -0
  522. data/vendor/assets/javascripts/highstock/modules/bullet.src.js +388 -0
  523. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.js +11 -0
  524. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.js.map +1 -0
  525. data/vendor/assets/javascripts/highstock/modules/current-date-indicator.src.js +127 -0
  526. data/vendor/assets/javascripts/highstock/modules/cylinder.js +14 -0
  527. data/vendor/assets/javascripts/highstock/modules/cylinder.js.map +1 -0
  528. data/vendor/assets/javascripts/highstock/modules/cylinder.src.js +413 -0
  529. data/vendor/assets/javascripts/highstock/modules/data.js +37 -0
  530. data/vendor/assets/javascripts/highstock/modules/data.js.map +1 -0
  531. data/vendor/assets/javascripts/highstock/modules/data.src.js +2565 -0
  532. data/vendor/assets/javascripts/highstock/modules/datagrouping.js +25 -0
  533. data/vendor/assets/javascripts/highstock/modules/datagrouping.js.map +1 -0
  534. data/vendor/assets/javascripts/highstock/modules/datagrouping.src.js +1140 -0
  535. data/vendor/assets/javascripts/highstock/modules/debugger.js +28 -0
  536. data/vendor/assets/javascripts/highstock/modules/debugger.js.map +1 -0
  537. data/vendor/assets/javascripts/highstock/modules/debugger.src.js +267 -0
  538. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.js +15 -0
  539. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.js.map +1 -0
  540. data/vendor/assets/javascripts/highstock/modules/dependency-wheel.src.js +301 -0
  541. data/vendor/assets/javascripts/highstock/modules/drag-panes.js +18 -0
  542. data/vendor/assets/javascripts/highstock/modules/drag-panes.js.map +1 -0
  543. data/vendor/assets/javascripts/highstock/modules/drag-panes.src.js +649 -0
  544. data/vendor/assets/javascripts/highstock/modules/draggable-points.js +40 -0
  545. data/vendor/assets/javascripts/highstock/modules/draggable-points.js.map +1 -0
  546. data/vendor/assets/javascripts/highstock/modules/draggable-points.src.js +2650 -0
  547. data/vendor/assets/javascripts/highstock/modules/drilldown.js +29 -0
  548. data/vendor/assets/javascripts/highstock/modules/drilldown.js.map +1 -0
  549. data/vendor/assets/javascripts/highstock/modules/drilldown.src.js +1321 -0
  550. data/vendor/assets/javascripts/highstock/modules/export-data.js +27 -0
  551. data/vendor/assets/javascripts/highstock/modules/export-data.js.map +1 -0
  552. data/vendor/assets/javascripts/highstock/modules/export-data.src.js +1234 -0
  553. data/vendor/assets/javascripts/highstock/modules/exporting.js +35 -0
  554. data/vendor/assets/javascripts/highstock/modules/exporting.js.map +1 -0
  555. data/vendor/assets/javascripts/highstock/modules/exporting.src.js +2233 -0
  556. data/vendor/assets/javascripts/highstock/modules/full-screen.js +11 -0
  557. data/vendor/assets/javascripts/highstock/modules/full-screen.js.map +1 -0
  558. data/vendor/assets/javascripts/highstock/modules/full-screen.src.js +68 -0
  559. data/vendor/assets/javascripts/highstock/modules/funnel.js +14 -0
  560. data/vendor/assets/javascripts/highstock/modules/funnel.js.map +1 -0
  561. data/vendor/assets/javascripts/highstock/modules/funnel.src.js +576 -0
  562. data/vendor/assets/javascripts/highstock/modules/grid-axis.js +23 -0
  563. data/vendor/assets/javascripts/highstock/modules/grid-axis.js.map +1 -0
  564. data/vendor/assets/javascripts/highstock/modules/grid-axis.src.js +988 -0
  565. data/vendor/assets/javascripts/highstock/modules/heatmap.js +28 -0
  566. data/vendor/assets/javascripts/highstock/modules/heatmap.js.map +1 -0
  567. data/vendor/assets/javascripts/highstock/modules/heatmap.src.js +1731 -0
  568. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.js +16 -0
  569. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.js.map +1 -0
  570. data/vendor/assets/javascripts/highstock/modules/histogram-bellcurve.src.js +570 -0
  571. data/vendor/assets/javascripts/highstock/modules/item-series.js +13 -0
  572. data/vendor/assets/javascripts/highstock/modules/item-series.js.map +1 -0
  573. data/vendor/assets/javascripts/highstock/modules/item-series.src.js +176 -0
  574. data/vendor/assets/javascripts/highstock/modules/networkgraph.js +31 -0
  575. data/vendor/assets/javascripts/highstock/modules/networkgraph.js.map +1 -0
  576. data/vendor/assets/javascripts/highstock/modules/networkgraph.src.js +1348 -0
  577. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.js +13 -0
  578. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.js.map +1 -0
  579. data/vendor/assets/javascripts/highstock/modules/no-data-to-display.src.js +285 -0
  580. data/vendor/assets/javascripts/highstock/modules/offline-exporting.js +22 -0
  581. data/vendor/assets/javascripts/highstock/modules/offline-exporting.js.map +1 -0
  582. data/vendor/assets/javascripts/highstock/modules/offline-exporting.src.js +838 -0
  583. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.js +13 -0
  584. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.js.map +1 -0
  585. data/vendor/assets/javascripts/highstock/modules/oldie-polyfills.src.js +150 -0
  586. data/vendor/assets/javascripts/highstock/modules/oldie.js +35 -0
  587. data/vendor/assets/javascripts/highstock/modules/oldie.js.map +1 -0
  588. data/vendor/assets/javascripts/highstock/modules/oldie.src.js +1582 -0
  589. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.js +9 -0
  590. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.js.map +1 -0
  591. data/vendor/assets/javascripts/highstock/modules/overlapping-datalabels.src.js +22 -0
  592. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.js +18 -0
  593. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.js.map +1 -0
  594. data/vendor/assets/javascripts/highstock/modules/parallel-coordinates.src.js +517 -0
  595. data/vendor/assets/javascripts/highstock/modules/pareto.js +14 -0
  596. data/vendor/assets/javascripts/highstock/modules/pareto.js.map +1 -0
  597. data/vendor/assets/javascripts/highstock/modules/pareto.src.js +327 -0
  598. data/vendor/assets/javascripts/highstock/modules/pathfinder.js +34 -0
  599. data/vendor/assets/javascripts/highstock/modules/pathfinder.js.map +1 -0
  600. data/vendor/assets/javascripts/highstock/modules/pathfinder.src.js +2336 -0
  601. data/vendor/assets/javascripts/highstock/modules/pattern-fill.js +21 -0
  602. data/vendor/assets/javascripts/highstock/modules/pattern-fill.js.map +1 -0
  603. data/vendor/assets/javascripts/highstock/modules/pattern-fill.src.js +634 -0
  604. data/vendor/assets/javascripts/highstock/modules/price-indicator.js +13 -0
  605. data/vendor/assets/javascripts/highstock/modules/price-indicator.js.map +1 -0
  606. data/vendor/assets/javascripts/highstock/modules/price-indicator.src.js +176 -0
  607. data/vendor/assets/javascripts/highstock/modules/sankey.js +22 -0
  608. data/vendor/assets/javascripts/highstock/modules/sankey.js.map +1 -0
  609. data/vendor/assets/javascripts/highstock/modules/sankey.src.js +911 -0
  610. data/vendor/assets/javascripts/highstock/modules/series-label.js +23 -0
  611. data/vendor/assets/javascripts/highstock/modules/series-label.js.map +1 -0
  612. data/vendor/assets/javascripts/highstock/modules/series-label.src.js +1065 -0
  613. data/vendor/assets/javascripts/highstock/modules/solid-gauge.js +15 -0
  614. data/vendor/assets/javascripts/highstock/modules/solid-gauge.js.map +1 -0
  615. data/vendor/assets/javascripts/highstock/modules/solid-gauge.src.js +510 -0
  616. data/vendor/assets/javascripts/highstock/modules/sonification.js +53 -0
  617. data/vendor/assets/javascripts/highstock/modules/sonification.js.map +1 -0
  618. data/vendor/assets/javascripts/highstock/modules/sonification.src.js +3341 -0
  619. data/vendor/assets/javascripts/highstock/modules/static-scale.js +12 -0
  620. data/vendor/assets/javascripts/highstock/modules/static-scale.js.map +1 -0
  621. data/vendor/assets/javascripts/highstock/modules/static-scale.src.js +114 -0
  622. data/vendor/assets/javascripts/highstock/modules/stock-tools.js +65 -0
  623. data/vendor/assets/javascripts/highstock/modules/stock-tools.js.map +1 -0
  624. data/vendor/assets/javascripts/highstock/modules/stock-tools.src.js +3437 -0
  625. data/vendor/assets/javascripts/highstock/modules/stock.js +151 -0
  626. data/vendor/assets/javascripts/highstock/modules/stock.js.map +1 -0
  627. data/vendor/assets/javascripts/highstock/modules/stock.src.js +10907 -0
  628. data/vendor/assets/javascripts/highstock/modules/streamgraph.js +10 -0
  629. data/vendor/assets/javascripts/highstock/modules/streamgraph.js.map +1 -0
  630. data/vendor/assets/javascripts/highstock/modules/streamgraph.src.js +158 -0
  631. data/vendor/assets/javascripts/highstock/modules/sunburst.js +52 -0
  632. data/vendor/assets/javascripts/highstock/modules/sunburst.js.map +1 -0
  633. data/vendor/assets/javascripts/highstock/modules/sunburst.src.js +3174 -0
  634. data/vendor/assets/javascripts/highstock/modules/tilemap.js +26 -0
  635. data/vendor/assets/javascripts/highstock/modules/tilemap.js.map +1 -0
  636. data/vendor/assets/javascripts/highstock/modules/tilemap.src.js +1402 -0
  637. data/vendor/assets/javascripts/highstock/modules/timeline.js +23 -0
  638. data/vendor/assets/javascripts/highstock/modules/timeline.js.map +1 -0
  639. data/vendor/assets/javascripts/highstock/modules/timeline.src.js +778 -0
  640. data/vendor/assets/javascripts/highstock/modules/treegrid.js +50 -0
  641. data/vendor/assets/javascripts/highstock/modules/treegrid.js.map +1 -0
  642. data/vendor/assets/javascripts/highstock/modules/treegrid.src.js +2917 -0
  643. data/vendor/assets/javascripts/highstock/modules/treemap.js +39 -0
  644. data/vendor/assets/javascripts/highstock/modules/treemap.js.map +1 -0
  645. data/vendor/assets/javascripts/highstock/modules/treemap.src.js +2083 -0
  646. data/vendor/assets/javascripts/highstock/modules/variable-pie.js +16 -0
  647. data/vendor/assets/javascripts/highstock/modules/variable-pie.js.map +1 -0
  648. data/vendor/assets/javascripts/highstock/modules/variable-pie.src.js +485 -0
  649. data/vendor/assets/javascripts/highstock/modules/variwide.js +15 -0
  650. data/vendor/assets/javascripts/highstock/modules/variwide.js.map +1 -0
  651. data/vendor/assets/javascripts/highstock/modules/variwide.src.js +376 -0
  652. data/vendor/assets/javascripts/highstock/modules/vector.js +13 -0
  653. data/vendor/assets/javascripts/highstock/modules/vector.js.map +1 -0
  654. data/vendor/assets/javascripts/highstock/modules/vector.src.js +381 -0
  655. data/vendor/assets/javascripts/highstock/modules/venn.js +30 -0
  656. data/vendor/assets/javascripts/highstock/modules/venn.js.map +1 -0
  657. data/vendor/assets/javascripts/highstock/modules/venn.src.js +1624 -0
  658. data/vendor/assets/javascripts/highstock/modules/windbarb.js +17 -0
  659. data/vendor/assets/javascripts/highstock/modules/windbarb.js.map +1 -0
  660. data/vendor/assets/javascripts/highstock/modules/windbarb.src.js +574 -0
  661. data/vendor/assets/javascripts/highstock/modules/wordcloud.js +25 -0
  662. data/vendor/assets/javascripts/highstock/modules/wordcloud.js.map +1 -0
  663. data/vendor/assets/javascripts/highstock/modules/wordcloud.src.js +1475 -0
  664. data/vendor/assets/javascripts/highstock/modules/xrange.js +20 -0
  665. data/vendor/assets/javascripts/highstock/modules/xrange.js.map +1 -0
  666. data/vendor/assets/javascripts/highstock/modules/xrange.src.js +788 -0
  667. data/vendor/assets/javascripts/highstock/themes/avocado.js +9 -0
  668. data/vendor/assets/javascripts/highstock/themes/avocado.js.map +1 -0
  669. data/vendor/assets/javascripts/highstock/themes/avocado.src.js +63 -0
  670. data/vendor/assets/javascripts/highstock/themes/dark-blue.js +15 -0
  671. data/vendor/assets/javascripts/highstock/themes/dark-blue.js.map +1 -0
  672. data/vendor/assets/javascripts/highstock/themes/dark-blue.src.js +285 -0
  673. data/vendor/assets/javascripts/highstock/themes/dark-green.js +15 -0
  674. data/vendor/assets/javascripts/highstock/themes/dark-green.js.map +1 -0
  675. data/vendor/assets/javascripts/highstock/themes/dark-green.src.js +287 -0
  676. data/vendor/assets/javascripts/highstock/themes/dark-unica.js +14 -0
  677. data/vendor/assets/javascripts/highstock/themes/dark-unica.js.map +1 -0
  678. data/vendor/assets/javascripts/highstock/themes/dark-unica.src.js +246 -0
  679. data/vendor/assets/javascripts/highstock/themes/gray.js +15 -0
  680. data/vendor/assets/javascripts/highstock/themes/gray.js.map +1 -0
  681. data/vendor/assets/javascripts/highstock/themes/gray.src.js +293 -0
  682. data/vendor/assets/javascripts/highstock/themes/grid-light.js +11 -0
  683. data/vendor/assets/javascripts/highstock/themes/grid-light.js.map +1 -0
  684. data/vendor/assets/javascripts/highstock/themes/grid-light.src.js +107 -0
  685. data/vendor/assets/javascripts/highstock/themes/grid.js +11 -0
  686. data/vendor/assets/javascripts/highstock/themes/grid.js.map +1 -0
  687. data/vendor/assets/javascripts/highstock/themes/grid.src.js +136 -0
  688. data/vendor/assets/javascripts/highstock/themes/sand-signika.js +11 -0
  689. data/vendor/assets/javascripts/highstock/themes/sand-signika.js.map +1 -0
  690. data/vendor/assets/javascripts/highstock/themes/sand-signika.src.js +137 -0
  691. data/vendor/assets/javascripts/highstock/themes/skies.js +11 -0
  692. data/vendor/assets/javascripts/highstock/themes/skies.js.map +1 -0
  693. data/vendor/assets/javascripts/highstock/themes/skies.src.js +126 -0
  694. data/vendor/assets/javascripts/highstock/themes/sunset.js +9 -0
  695. data/vendor/assets/javascripts/highstock/themes/sunset.js.map +1 -0
  696. data/vendor/assets/javascripts/highstock/themes/sunset.src.js +62 -0
  697. metadata +781 -0
@@ -0,0 +1,121 @@
1
+ /**
2
+ * (c) 2010-2019 Torstein Honsi
3
+ *
4
+ * Simple polyfills for array functions in old IE browsers (6, 7 and 8) in
5
+ * Highcharts v7+. These polyfills are sufficient for Highcharts to work, but
6
+ * for fully compatible polyfills, see MDN.
7
+ *
8
+ * License: www.highcharts.com/license
9
+ */
10
+ /* eslint no-extend-native: 0 */
11
+
12
+ 'use strict';
13
+
14
+ if (!Array.prototype.forEach) {
15
+ Array.prototype.forEach = function (fn, ctx) {
16
+ var i = 0,
17
+ len = this.length;
18
+
19
+ for (; i < len; i++) {
20
+ if (
21
+ this[i] !== undefined && // added check
22
+ fn.call(ctx, this[i], i, this) === false
23
+ ) {
24
+ return i;
25
+ }
26
+ }
27
+ };
28
+ }
29
+
30
+ if (!Array.prototype.map) {
31
+ Array.prototype.map = function (fn) {
32
+ var results = [],
33
+ i = 0,
34
+ len = this.length;
35
+
36
+ for (; i < len; i++) {
37
+ results[i] = fn.call(this[i], this[i], i, this);
38
+ }
39
+
40
+ return results;
41
+ };
42
+ }
43
+
44
+ if (!Array.prototype.indexOf) {
45
+ Array.prototype.indexOf = function (member, fromIndex) {
46
+ var arr = this, // #8874
47
+ len,
48
+ i = fromIndex || 0; // #8346
49
+
50
+ if (arr) {
51
+ len = arr.length;
52
+
53
+ for (; i < len; i++) {
54
+ if (arr[i] === member) {
55
+ return i;
56
+ }
57
+ }
58
+ }
59
+
60
+ return -1;
61
+ };
62
+ }
63
+
64
+ if (!Array.prototype.filter) {
65
+ Array.prototype.filter = function (fn) {
66
+ var ret = [],
67
+ i = 0,
68
+ length = this.length;
69
+
70
+ for (; i < length; i++) {
71
+ if (fn(this[i], i)) {
72
+ ret.push(this[i]);
73
+ }
74
+ }
75
+
76
+ return ret;
77
+ };
78
+ }
79
+
80
+ if (!Array.prototype.some) {
81
+ Array.prototype.some = function (fn, ctx) { // legacy
82
+ var i = 0,
83
+ len = this.length;
84
+
85
+ for (; i < len; i++) {
86
+ if (fn.call(ctx, this[i], i, this) === true) {
87
+ return true;
88
+ }
89
+ }
90
+ return false;
91
+ };
92
+ }
93
+
94
+ if (!Array.prototype.reduce) {
95
+ Array.prototype.reduce = function (func, initialValue) {
96
+ var context = this,
97
+ i = arguments.length > 1 ? 0 : 1,
98
+ accumulator = arguments.length > 1 ? initialValue : this[0],
99
+ len = this.length;
100
+
101
+ for (; i < len; ++i) {
102
+ accumulator = func.call(context, accumulator, this[i], i, this);
103
+ }
104
+ return accumulator;
105
+ };
106
+ }
107
+
108
+ if (!Object.keys) {
109
+ Object.keys = function (obj) {
110
+ var result = [],
111
+ hasOwnProperty = Object.prototype.hasOwnProperty,
112
+ prop;
113
+
114
+ for (prop in obj) {
115
+ if (hasOwnProperty.call(obj, prop)) {
116
+ result.push(prop);
117
+ }
118
+ }
119
+ return result;
120
+ };
121
+ }
@@ -0,0 +1,1556 @@
1
+ /* *
2
+ * (c) 2010-2019 Torstein Honsi
3
+ *
4
+ * Support for old IE browsers (6, 7 and 8) in Highcharts v6+.
5
+ *
6
+ * License: www.highcharts.com/license
7
+ */
8
+
9
+ 'use strict';
10
+
11
+ import H from '../parts/Globals.js';
12
+ import '../parts/Utilities.js';
13
+ import '../parts/SvgRenderer.js';
14
+
15
+ var VMLRenderer,
16
+ VMLRendererExtension,
17
+ VMLElement,
18
+ Chart = H.Chart,
19
+ createElement = H.createElement,
20
+ css = H.css,
21
+ defined = H.defined,
22
+ deg2rad = H.deg2rad,
23
+ discardElement = H.discardElement,
24
+ doc = H.doc,
25
+ erase = H.erase,
26
+ extend = H.extend,
27
+ extendClass = H.extendClass,
28
+ isArray = H.isArray,
29
+ isNumber = H.isNumber,
30
+ isObject = H.isObject,
31
+ merge = H.merge,
32
+ noop = H.noop,
33
+ pick = H.pick,
34
+ pInt = H.pInt,
35
+ svg = H.svg,
36
+ SVGElement = H.SVGElement,
37
+ SVGRenderer = H.SVGRenderer,
38
+ win = H.win;
39
+
40
+
41
+ /**
42
+ * Path to the pattern image required by VML browsers in order to
43
+ * draw radial gradients.
44
+ *
45
+ * @type {string}
46
+ * @default http://code.highcharts.com/{version}/gfx/vml-radial-gradient.png
47
+ * @since 2.3.0
48
+ * @apioption global.VMLRadialGradientURL
49
+ */
50
+ H.getOptions().global.VMLRadialGradientURL =
51
+ 'http://code.highcharts.com/@product.version@/gfx/vml-radial-gradient.png';
52
+
53
+
54
+ // Utilites
55
+ if (doc && !doc.defaultView) {
56
+ H.getStyle = function (el, prop) {
57
+ var val,
58
+ alias = { width: 'clientWidth', height: 'clientHeight' }[prop];
59
+
60
+ if (el.style[prop]) {
61
+ return H.pInt(el.style[prop]);
62
+ }
63
+ if (prop === 'opacity') {
64
+ prop = 'filter';
65
+ }
66
+
67
+ // Getting the rendered width and height
68
+ if (alias) {
69
+ el.style.zoom = 1;
70
+ return Math.max(el[alias] - 2 * H.getStyle(el, 'padding'), 0);
71
+ }
72
+
73
+ val = el.currentStyle[prop.replace(/\-(\w)/g, function (a, b) {
74
+ return b.toUpperCase();
75
+ })];
76
+ if (prop === 'filter') {
77
+ val = val.replace(
78
+ /alpha\(opacity=([0-9]+)\)/,
79
+ function (a, b) {
80
+ return b / 100;
81
+ }
82
+ );
83
+ }
84
+
85
+ return val === '' ? 1 : H.pInt(val);
86
+ };
87
+ }
88
+
89
+ if (!svg) {
90
+
91
+ // Prevent wrapping from creating false offsetWidths in export in legacy IE.
92
+ // This applies only to charts for export, where IE runs the SVGRenderer
93
+ // instead of the VMLRenderer
94
+ // (#1079, #1063)
95
+ H.addEvent(SVGElement, 'afterInit', function () {
96
+ if (this.element.nodeName === 'text') {
97
+ this.css({
98
+ position: 'absolute'
99
+ });
100
+ }
101
+ });
102
+
103
+ /**
104
+ * Old IE override for pointer normalize, adds chartX and chartY to event
105
+ * arguments.
106
+ *
107
+ * @ignore
108
+ * @function Highcharts.Pointer#normalize
109
+ *
110
+ * @param {global.Event} e
111
+ *
112
+ * @param {boolean} [chartPosition=false]
113
+ */
114
+ H.Pointer.prototype.normalize = function (e, chartPosition) {
115
+
116
+ e = e || win.event;
117
+ if (!e.target) {
118
+ e.target = e.srcElement;
119
+ }
120
+
121
+ // Get mouse position
122
+ if (!chartPosition) {
123
+ this.chartPosition = chartPosition = H.offset(this.chart.container);
124
+ }
125
+
126
+ return H.extend(e, {
127
+ // #2005, #2129: the second case is for IE10 quirks mode within
128
+ // framesets
129
+ chartX: Math.round(Math.max(e.x, e.clientX - chartPosition.left)),
130
+ chartY: Math.round(e.y)
131
+ });
132
+ };
133
+
134
+ /**
135
+ * Further sanitize the mock-SVG that is generated when exporting charts in
136
+ * oldIE.
137
+ *
138
+ * @private
139
+ * @function Highcharts.Chart#ieSanitizeSVG
140
+ */
141
+ Chart.prototype.ieSanitizeSVG = function (svg) {
142
+ svg = svg
143
+ .replace(/<IMG /g, '<image ')
144
+ .replace(/<(\/?)TITLE>/g, '<$1title>')
145
+ .replace(/height=([^" ]+)/g, 'height="$1"')
146
+ .replace(/width=([^" ]+)/g, 'width="$1"')
147
+ .replace(/hc-svg-href="([^"]+)">/g, 'xlink:href="$1"/>')
148
+ .replace(/ id=([^" >]+)/g, ' id="$1"') // #4003
149
+ .replace(/class=([^" >]+)/g, 'class="$1"')
150
+ .replace(/ transform /g, ' ')
151
+ .replace(/:(path|rect)/g, '$1')
152
+ .replace(/style="([^"]+)"/g, function (s) {
153
+ return s.toLowerCase();
154
+ });
155
+
156
+ return svg;
157
+ };
158
+
159
+ /**
160
+ * VML namespaces can't be added until after complete. Listening
161
+ * for Perini's doScroll hack is not enough.
162
+ *
163
+ * @private
164
+ * @function Highcharts.Chart#isReadyToRender
165
+ */
166
+ Chart.prototype.isReadyToRender = function () {
167
+ var chart = this;
168
+
169
+ // Note: win == win.top is required
170
+ if (
171
+ !svg &&
172
+ (
173
+ win == win.top && // eslint-disable-line eqeqeq
174
+ doc.readyState !== 'complete'
175
+ )
176
+ ) {
177
+ doc.attachEvent('onreadystatechange', function () {
178
+ doc.detachEvent('onreadystatechange', chart.firstRender);
179
+ if (doc.readyState === 'complete') {
180
+ chart.firstRender();
181
+ }
182
+ });
183
+ return false;
184
+ }
185
+ return true;
186
+ };
187
+
188
+ // IE compatibility hack for generating SVG content that it doesn't really
189
+ // understand. Used by the exporting module.
190
+ if (!doc.createElementNS) {
191
+ doc.createElementNS = function (ns, tagName) {
192
+ return doc.createElement(tagName);
193
+ };
194
+ }
195
+
196
+ /**
197
+ * Old IE polyfill for addEventListener, called from inside the addEvent
198
+ * function.
199
+ *
200
+ * @private
201
+ * @function Highcharts.addEventListenerPolyfill
202
+ *
203
+ * @param {string} type
204
+ *
205
+ * @param {Function} fn
206
+ */
207
+ H.addEventListenerPolyfill = function (type, fn) {
208
+ var el = this;
209
+
210
+ function wrappedFn(e) {
211
+ e.target = e.srcElement || win; // #2820
212
+ fn.call(el, e);
213
+ }
214
+
215
+ if (el.attachEvent) {
216
+ if (!el.hcEventsIE) {
217
+ el.hcEventsIE = {};
218
+ }
219
+
220
+ // unique function string (#6746)
221
+ if (!fn.hcKey) {
222
+ fn.hcKey = H.uniqueKey();
223
+ }
224
+
225
+ // Link wrapped fn with original fn, so we can get this in
226
+ // removeEvent
227
+ el.hcEventsIE[fn.hcKey] = wrappedFn;
228
+
229
+ el.attachEvent('on' + type, wrappedFn);
230
+ }
231
+
232
+ };
233
+ /**
234
+ * @private
235
+ * @function Highcharts.removeEventListenerPolyfill
236
+ *
237
+ * @param {string} type
238
+ *
239
+ * @param {Function} fn
240
+ */
241
+ H.removeEventListenerPolyfill = function (type, fn) {
242
+ if (this.detachEvent) {
243
+ fn = this.hcEventsIE[fn.hcKey];
244
+ this.detachEvent('on' + type, fn);
245
+ }
246
+ };
247
+
248
+
249
+ /**
250
+ * The VML element wrapper.
251
+ *
252
+ * @private
253
+ * @class
254
+ * @name Highcharts.VMLElement
255
+ *
256
+ * @augments Highcharts.SVGElement
257
+ */
258
+ VMLElement = {
259
+
260
+ docMode8: doc && doc.documentMode === 8,
261
+
262
+ /**
263
+ * Initialize a new VML element wrapper. It builds the markup as a
264
+ * string to minimize DOM traffic.
265
+ *
266
+ * @function Highcharts.VMLElement#init
267
+ *
268
+ * @param {object} renderer
269
+ *
270
+ * @param {object} nodeName
271
+ */
272
+ init: function (renderer, nodeName) {
273
+ var wrapper = this,
274
+ markup = ['<', nodeName, ' filled="f" stroked="f"'],
275
+ style = ['position: ', 'absolute', ';'],
276
+ isDiv = nodeName === 'div';
277
+
278
+ // divs and shapes need size
279
+ if (nodeName === 'shape' || isDiv) {
280
+ style.push('left:0;top:0;width:1px;height:1px;');
281
+ }
282
+ style.push('visibility: ', isDiv ? 'hidden' : 'visible');
283
+
284
+ markup.push(' style="', style.join(''), '"/>');
285
+
286
+ // create element with default attributes and style
287
+ if (nodeName) {
288
+ markup = isDiv || nodeName === 'span' || nodeName === 'img' ?
289
+ markup.join('') :
290
+ renderer.prepVML(markup);
291
+ wrapper.element = createElement(markup);
292
+ }
293
+
294
+ wrapper.renderer = renderer;
295
+ },
296
+
297
+ /**
298
+ * Add the node to the given parent
299
+ *
300
+ * @function Highcharts.VMLElement
301
+ *
302
+ * @param {object} parent
303
+ */
304
+ add: function (parent) {
305
+ var wrapper = this,
306
+ renderer = wrapper.renderer,
307
+ element = wrapper.element,
308
+ box = renderer.box,
309
+ inverted = parent && parent.inverted,
310
+
311
+ // get the parent node
312
+ parentNode = parent ?
313
+ parent.element || parent :
314
+ box;
315
+
316
+ if (parent) {
317
+ this.parentGroup = parent;
318
+ }
319
+
320
+ // if the parent group is inverted, apply inversion on all children
321
+ if (inverted) { // only on groups
322
+ renderer.invertChild(element, parentNode);
323
+ }
324
+
325
+ // append it
326
+ parentNode.appendChild(element);
327
+
328
+ // align text after adding to be able to read offset
329
+ wrapper.added = true;
330
+ if (wrapper.alignOnAdd && !wrapper.deferUpdateTransform) {
331
+ wrapper.updateTransform();
332
+ }
333
+
334
+ // fire an event for internal hooks
335
+ if (wrapper.onAdd) {
336
+ wrapper.onAdd();
337
+ }
338
+
339
+ // IE8 Standards can't set the class name before the element is
340
+ // appended
341
+ if (this.className) {
342
+ this.attr('class', this.className);
343
+ }
344
+
345
+ return wrapper;
346
+ },
347
+
348
+ /**
349
+ * VML always uses htmlUpdateTransform
350
+ *
351
+ * @function Highcharts.VMLElement#updateTransform
352
+ */
353
+ updateTransform: SVGElement.prototype.htmlUpdateTransform,
354
+
355
+ /**
356
+ * Set the rotation of a span with oldIE's filter
357
+ *
358
+ * @function Highcharts.VMLElement#setSpanRotation
359
+ */
360
+ setSpanRotation: function () {
361
+ // Adjust for alignment and rotation. Rotation of useHTML content is
362
+ // not yet implemented but it can probably be implemented for
363
+ // Firefox 3.5+ on user request. FF3.5+ has support for CSS3
364
+ // transform. The getBBox method also needs to be updated to
365
+ // compensate for the rotation, like it currently does for SVG.
366
+ // Test case: https://jsfiddle.net/highcharts/Ybt44/
367
+
368
+ var rotation = this.rotation,
369
+ costheta = Math.cos(rotation * deg2rad),
370
+ sintheta = Math.sin(rotation * deg2rad);
371
+
372
+ css(this.element, {
373
+ filter: rotation ? [
374
+ 'progid:DXImageTransform.Microsoft.Matrix(M11=', costheta,
375
+ ', M12=', -sintheta, ', M21=', sintheta, ', M22=', costheta,
376
+ ', sizingMethod=\'auto expand\')'
377
+ ].join('') : 'none'
378
+ });
379
+ },
380
+
381
+ /**
382
+ * Get the positioning correction for the span after rotating.
383
+ *
384
+ * @function Highcharts.VMLElement#getSpanCorrection
385
+ */
386
+ getSpanCorrection: function (
387
+ width,
388
+ baseline,
389
+ alignCorrection,
390
+ rotation,
391
+ align
392
+ ) {
393
+
394
+ var costheta = rotation ? Math.cos(rotation * deg2rad) : 1,
395
+ sintheta = rotation ? Math.sin(rotation * deg2rad) : 0,
396
+ height = pick(this.elemHeight, this.element.offsetHeight),
397
+ quad,
398
+ nonLeft = align && align !== 'left';
399
+
400
+ // correct x and y
401
+ this.xCorr = costheta < 0 && -width;
402
+ this.yCorr = sintheta < 0 && -height;
403
+
404
+ // correct for baseline and corners spilling out after rotation
405
+ quad = costheta * sintheta < 0;
406
+ this.xCorr += (
407
+ sintheta *
408
+ baseline *
409
+ (quad ? 1 - alignCorrection : alignCorrection)
410
+ );
411
+ this.yCorr -= (
412
+ costheta *
413
+ baseline *
414
+ (rotation ? (quad ? alignCorrection : 1 - alignCorrection) : 1)
415
+ );
416
+ // correct for the length/height of the text
417
+ if (nonLeft) {
418
+ this.xCorr -= width * alignCorrection * (costheta < 0 ? -1 : 1);
419
+ if (rotation) {
420
+ this.yCorr -= (
421
+ height *
422
+ alignCorrection *
423
+ (sintheta < 0 ? -1 : 1)
424
+ );
425
+ }
426
+ css(this.element, {
427
+ textAlign: align
428
+ });
429
+ }
430
+ },
431
+
432
+ /**
433
+ * Converts a subset of an SVG path definition to its VML counterpart.
434
+ * Takes an array as the parameter and returns a string.
435
+ *
436
+ * @function Highcharts.VMLElement#pathToVML
437
+ */
438
+ pathToVML: function (value) {
439
+ // convert paths
440
+ var i = value.length,
441
+ path = [];
442
+
443
+ while (i--) {
444
+
445
+ // Multiply by 10 to allow subpixel precision.
446
+ // Substracting half a pixel seems to make the coordinates
447
+ // align with SVG, but this hasn't been tested thoroughly
448
+ if (isNumber(value[i])) {
449
+ path[i] = Math.round(value[i] * 10) - 5;
450
+ } else if (value[i] === 'Z') { // close the path
451
+ path[i] = 'x';
452
+ } else {
453
+ path[i] = value[i];
454
+
455
+ // When the start X and end X coordinates of an arc are too
456
+ // close, they are rounded to the same value above. In this
457
+ // case, substract or add 1 from the end X and Y positions.
458
+ // #186, #760, #1371, #1410.
459
+ if (
460
+ value.isArc &&
461
+ (value[i] === 'wa' || value[i] === 'at')
462
+ ) {
463
+ // Start and end X
464
+ if (path[i + 5] === path[i + 7]) {
465
+ path[i + 7] += value[i + 7] > value[i + 5] ? 1 : -1;
466
+ }
467
+ // Start and end Y
468
+ if (path[i + 6] === path[i + 8]) {
469
+ path[i + 8] += value[i + 8] > value[i + 6] ? 1 : -1;
470
+ }
471
+ }
472
+ }
473
+ }
474
+
475
+ return path.join(' ') || 'x';
476
+ },
477
+
478
+ /**
479
+ * Set the element's clipping to a predefined rectangle
480
+ *
481
+ * @function Highcharts.VMLElement#clip
482
+ *
483
+ * @param {object} clipRect
484
+ */
485
+ clip: function (clipRect) {
486
+ var wrapper = this,
487
+ clipMembers,
488
+ cssRet;
489
+
490
+ if (clipRect) {
491
+ clipMembers = clipRect.members;
492
+
493
+ // Ensure unique list of elements (#1258)
494
+ erase(clipMembers, wrapper);
495
+ clipMembers.push(wrapper);
496
+ wrapper.destroyClip = function () {
497
+ erase(clipMembers, wrapper);
498
+ };
499
+ cssRet = clipRect.getCSS(wrapper);
500
+
501
+ } else {
502
+ if (wrapper.destroyClip) {
503
+ wrapper.destroyClip();
504
+ }
505
+ cssRet = {
506
+ clip: wrapper.docMode8 ? 'inherit' : 'rect(auto)'
507
+ }; // #1214
508
+ }
509
+
510
+ return wrapper.css(cssRet);
511
+
512
+ },
513
+
514
+ /**
515
+ * Set styles for the element
516
+ *
517
+ * @function Highcharts.VMLElement#css
518
+ *
519
+ * @param {Highcharts.SVGAttributes} styles
520
+ */
521
+ css: SVGElement.prototype.htmlCss,
522
+
523
+ /**
524
+ * Removes a child either by removeChild or move to garbageBin.
525
+ * Issue 490; in VML removeChild results in Orphaned nodes according to
526
+ * sIEve, discardElement does not.
527
+ *
528
+ * @function Highcharts.VMLElement#safeRemoveChild
529
+ */
530
+ safeRemoveChild: function (element) {
531
+ // discardElement will detach the node from its parent before
532
+ // attaching it to the garbage bin. Therefore it is important that
533
+ // the node is attached and have parent.
534
+ if (element.parentNode) {
535
+ discardElement(element);
536
+ }
537
+ },
538
+
539
+ /**
540
+ * Extend element.destroy by removing it from the clip members array
541
+ *
542
+ * @function Highcharts.VMLElement#destroy
543
+ */
544
+ destroy: function () {
545
+ if (this.destroyClip) {
546
+ this.destroyClip();
547
+ }
548
+
549
+ return SVGElement.prototype.destroy.apply(this);
550
+ },
551
+
552
+ /**
553
+ * Add an event listener. VML override for normalizing event parameters.
554
+ *
555
+ * @function Highcharts.VMLElement#on
556
+ *
557
+ * @param {string} eventType
558
+ *
559
+ * @param {Function} handler
560
+ */
561
+ on: function (eventType, handler) {
562
+ // simplest possible event model for internal use
563
+ this.element['on' + eventType] = function () {
564
+ var evt = win.event;
565
+
566
+ evt.target = evt.srcElement;
567
+ handler(evt);
568
+ };
569
+ return this;
570
+ },
571
+
572
+ /**
573
+ * In stacked columns, cut off the shadows so that they don't overlap
574
+ *
575
+ * @function Highcharts.VMLElement#cutOffPath
576
+ */
577
+ cutOffPath: function (path, length) {
578
+
579
+ var len;
580
+
581
+ // The extra comma tricks the trailing comma remover in
582
+ // "gulp scripts" task
583
+ path = path.split(/[ ,]/);
584
+ len = path.length;
585
+
586
+ if (len === 9 || len === 11) {
587
+ path[len - 4] = path[len - 2] =
588
+ pInt(path[len - 2]) - 10 * length;
589
+ }
590
+ return path.join(' ');
591
+ },
592
+
593
+ /**
594
+ * Apply a drop shadow by copying elements and giving them different
595
+ * strokes.
596
+ *
597
+ * @function Highcharts.VMLElement#shadow
598
+ *
599
+ * @param {boolean|Highcharts.ShadowOptionsObject} shadowOptions
600
+ *
601
+ * @param {boolean} group
602
+ *
603
+ * @param {boolean} cutOff
604
+ */
605
+ shadow: function (shadowOptions, group, cutOff) {
606
+ var shadows = [],
607
+ i,
608
+ element = this.element,
609
+ renderer = this.renderer,
610
+ shadow,
611
+ elemStyle = element.style,
612
+ markup,
613
+ path = element.path,
614
+ strokeWidth,
615
+ modifiedPath,
616
+ shadowWidth,
617
+ shadowElementOpacity;
618
+
619
+ // some times empty paths are not strings
620
+ if (path && typeof path.value !== 'string') {
621
+ path = 'x';
622
+ }
623
+ modifiedPath = path;
624
+
625
+ if (shadowOptions) {
626
+ shadowWidth = pick(shadowOptions.width, 3);
627
+ shadowElementOpacity =
628
+ (shadowOptions.opacity || 0.15) / shadowWidth;
629
+ for (i = 1; i <= 3; i++) {
630
+
631
+ strokeWidth = (shadowWidth * 2) + 1 - (2 * i);
632
+
633
+ // Cut off shadows for stacked column items
634
+ if (cutOff) {
635
+ modifiedPath = this.cutOffPath(
636
+ path.value,
637
+ strokeWidth + 0.5
638
+ );
639
+ }
640
+
641
+ markup = [
642
+ '<shape isShadow="true" strokeweight="', strokeWidth,
643
+ '" filled="false" path="', modifiedPath,
644
+ '" coordsize="10 10" style="', element.style.cssText,
645
+ '" />'
646
+ ];
647
+
648
+ shadow = createElement(
649
+ renderer.prepVML(markup),
650
+ null, {
651
+ left: pInt(elemStyle.left) +
652
+ pick(shadowOptions.offsetX, 1),
653
+ top: pInt(elemStyle.top) +
654
+ pick(shadowOptions.offsetY, 1)
655
+ }
656
+ );
657
+ if (cutOff) {
658
+ shadow.cutOff = strokeWidth + 1;
659
+ }
660
+
661
+ // apply the opacity
662
+ markup = [
663
+ '<stroke color="',
664
+ shadowOptions.color || '#000000',
665
+ '" opacity="', shadowElementOpacity * i, '"/>'];
666
+ createElement(renderer.prepVML(markup), null, null, shadow);
667
+
668
+
669
+ // insert it
670
+ if (group) {
671
+ group.element.appendChild(shadow);
672
+ } else {
673
+ element.parentNode.insertBefore(shadow, element);
674
+ }
675
+
676
+ // record it
677
+ shadows.push(shadow);
678
+
679
+ }
680
+
681
+ this.shadows = shadows;
682
+ }
683
+ return this;
684
+ },
685
+ updateShadows: noop, // Used in SVG only
686
+
687
+ setAttr: function (key, value) {
688
+ if (this.docMode8) { // IE8 setAttribute bug
689
+ this.element[key] = value;
690
+ } else {
691
+ this.element.setAttribute(key, value);
692
+ }
693
+ },
694
+ getAttr: function (key) {
695
+ if (this.docMode8) { // IE8 setAttribute bug
696
+ return this.element[key];
697
+ }
698
+ return this.element.getAttribute(key);
699
+ },
700
+ classSetter: function (value) {
701
+ // IE8 Standards mode has problems retrieving the className unless
702
+ // set like this. IE8 Standards can't set the class name before the
703
+ // element is appended.
704
+ (this.added ? this.element : this).className = value;
705
+ },
706
+ dashstyleSetter: function (value, key, element) {
707
+ var strokeElem = element.getElementsByTagName('stroke')[0] ||
708
+ createElement(
709
+ this.renderer.prepVML(['<stroke/>']),
710
+ null,
711
+ null,
712
+ element
713
+ );
714
+
715
+ strokeElem[key] = value || 'solid';
716
+ // Because changing stroke-width will change the dash length and
717
+ // cause an epileptic effect
718
+ this[key] = value;
719
+ },
720
+ dSetter: function (value, key, element) {
721
+ var i,
722
+ shadows = this.shadows;
723
+
724
+ value = value || [];
725
+ // Used in getter for animation
726
+ this.d = value.join && value.join(' ');
727
+
728
+ element.path = value = this.pathToVML(value);
729
+
730
+ // update shadows
731
+ if (shadows) {
732
+ i = shadows.length;
733
+ while (i--) {
734
+ shadows[i].path = shadows[i].cutOff ?
735
+ this.cutOffPath(value, shadows[i].cutOff) :
736
+ value;
737
+ }
738
+ }
739
+ this.setAttr(key, value);
740
+ },
741
+ fillSetter: function (value, key, element) {
742
+ var nodeName = element.nodeName;
743
+
744
+ if (nodeName === 'SPAN') { // text color
745
+ element.style.color = value;
746
+ } else if (nodeName !== 'IMG') { // #1336
747
+ element.filled = value !== 'none';
748
+ this.setAttr(
749
+ 'fillcolor',
750
+ this.renderer.color(value, element, key, this)
751
+ );
752
+ }
753
+ },
754
+ 'fill-opacitySetter': function (value, key, element) {
755
+ createElement(
756
+ this.renderer.prepVML(
757
+ ['<', key.split('-')[0], ' opacity="', value, '"/>']
758
+ ),
759
+ null,
760
+ null,
761
+ element
762
+ );
763
+ },
764
+ // Don't bother - animation is too slow and filters introduce artifacts
765
+ opacitySetter: noop,
766
+ rotationSetter: function (value, key, element) {
767
+ var style = element.style;
768
+
769
+ this[key] = style[key] = value; // style is for #1873
770
+
771
+ // Correction for the 1x1 size of the shape container. Used in gauge
772
+ // needles.
773
+ style.left = -Math.round(Math.sin(value * deg2rad) + 1) + 'px';
774
+ style.top = Math.round(Math.cos(value * deg2rad)) + 'px';
775
+ },
776
+ strokeSetter: function (value, key, element) {
777
+ this.setAttr(
778
+ 'strokecolor',
779
+ this.renderer.color(value, element, key, this)
780
+ );
781
+ },
782
+ 'stroke-widthSetter': function (value, key, element) {
783
+ element.stroked = !!value; // VML "stroked" attribute
784
+ this[key] = value; // used in getter, issue #113
785
+ if (isNumber(value)) {
786
+ value += 'px';
787
+ }
788
+ this.setAttr('strokeweight', value);
789
+ },
790
+ titleSetter: function (value, key) {
791
+ this.setAttr(key, value);
792
+ },
793
+ visibilitySetter: function (value, key, element) {
794
+
795
+ // Handle inherited visibility
796
+ if (value === 'inherit') {
797
+ value = 'visible';
798
+ }
799
+
800
+ // Let the shadow follow the main element
801
+ if (this.shadows) {
802
+ this.shadows.forEach(function (shadow) {
803
+ shadow.style[key] = value;
804
+ });
805
+ }
806
+
807
+ // Instead of toggling the visibility CSS property, move the div out
808
+ // of the viewport. This works around #61 and #586
809
+ if (element.nodeName === 'DIV') {
810
+ value = value === 'hidden' ? '-999em' : 0;
811
+
812
+ // In order to redraw, IE7 needs the div to be visible when
813
+ // tucked away outside the viewport. So the visibility is
814
+ // actually opposite of the expected value. This applies to the
815
+ // tooltip only.
816
+ if (!this.docMode8) {
817
+ element.style[key] = value ? 'visible' : 'hidden';
818
+ }
819
+ key = 'top';
820
+ }
821
+ element.style[key] = value;
822
+ },
823
+ xSetter: function (value, key, element) {
824
+ this[key] = value; // used in getter
825
+
826
+ if (key === 'x') {
827
+ key = 'left';
828
+ } else if (key === 'y') {
829
+ key = 'top';
830
+ }
831
+
832
+ // clipping rectangle special
833
+ if (this.updateClipping) {
834
+ // the key is now 'left' or 'top' for 'x' and 'y'
835
+ this[key] = value;
836
+ this.updateClipping();
837
+ } else {
838
+ // normal
839
+ element.style[key] = value;
840
+ }
841
+ },
842
+ zIndexSetter: function (value, key, element) {
843
+ element.style[key] = value;
844
+ },
845
+ fillGetter: function () {
846
+ return this.getAttr('fillcolor') || '';
847
+ },
848
+ strokeGetter: function () {
849
+ return this.getAttr('strokecolor') || '';
850
+ },
851
+ // #7850
852
+ classGetter: function () {
853
+ return this.getAttr('className') || '';
854
+ }
855
+ };
856
+ VMLElement['stroke-opacitySetter'] = VMLElement['fill-opacitySetter'];
857
+ H.VMLElement = VMLElement = extendClass(SVGElement, VMLElement);
858
+
859
+ // Some shared setters
860
+ VMLElement.prototype.ySetter =
861
+ VMLElement.prototype.widthSetter =
862
+ VMLElement.prototype.heightSetter =
863
+ VMLElement.prototype.xSetter;
864
+
865
+
866
+ /**
867
+ * The VML renderer
868
+ *
869
+ * @private
870
+ * @class
871
+ * @name Highcharts.VMLRenderer
872
+ *
873
+ * @augments Highcharts.SVGRenderer
874
+ */
875
+ VMLRendererExtension = { // inherit SVGRenderer
876
+
877
+ Element: VMLElement,
878
+ isIE8: win.navigator.userAgent.indexOf('MSIE 8.0') > -1,
879
+
880
+
881
+ /**
882
+ * Initialize the VMLRenderer.
883
+ *
884
+ * @function Highcharts.VMLRenderer#init
885
+ *
886
+ * @param {object} container
887
+ *
888
+ * @param {number} width
889
+ *
890
+ * @param {number} height
891
+ */
892
+ init: function (container, width, height) {
893
+ var renderer = this,
894
+ boxWrapper,
895
+ box,
896
+ css;
897
+
898
+ renderer.alignedObjects = [];
899
+
900
+ boxWrapper = renderer.createElement('div')
901
+ .css({ position: 'relative' });
902
+ box = boxWrapper.element;
903
+ container.appendChild(boxWrapper.element);
904
+
905
+
906
+ // generate the containing box
907
+ renderer.isVML = true;
908
+ renderer.box = box;
909
+ renderer.boxWrapper = boxWrapper;
910
+ renderer.gradients = {};
911
+ renderer.cache = {}; // Cache for numerical bounding boxes
912
+ renderer.cacheKeys = [];
913
+ renderer.imgCount = 0;
914
+
915
+
916
+ renderer.setSize(width, height, false);
917
+
918
+ // The only way to make IE6 and IE7 print is to use a global
919
+ // namespace. However, with IE8 the only way to make the dynamic
920
+ // shapes visible in screen and print mode seems to be to add the
921
+ // xmlns attribute and the behaviour style inline.
922
+ if (!doc.namespaces.hcv) {
923
+
924
+ doc.namespaces.add('hcv', 'urn:schemas-microsoft-com:vml');
925
+
926
+ // Setup default CSS (#2153, #2368, #2384)
927
+ css = 'hcv\\:fill, hcv\\:path, hcv\\:shape, hcv\\:stroke' +
928
+ '{ behavior:url(#default#VML); display: inline-block; } ';
929
+ try {
930
+ doc.createStyleSheet().cssText = css;
931
+ } catch (e) {
932
+ doc.styleSheets[0].cssText += css;
933
+ }
934
+
935
+ }
936
+ },
937
+
938
+
939
+ /**
940
+ * Detect whether the renderer is hidden. This happens when one of the
941
+ * parent elements has display: none
942
+ *
943
+ * @function Highcharts.VMLRenderer#isHidden
944
+ */
945
+ isHidden: function () {
946
+ return !this.box.offsetWidth;
947
+ },
948
+
949
+ /**
950
+ * Define a clipping rectangle. In VML it is accomplished by storing the
951
+ * values for setting the CSS style to all associated members.
952
+ *
953
+ * @function Highcharts.VMLRenderer#clipRect
954
+ *
955
+ * @param {number} x
956
+ *
957
+ * @param {number} y
958
+ *
959
+ * @param {number} width
960
+ *
961
+ * @param {number} height
962
+ */
963
+ clipRect: function (x, y, width, height) {
964
+
965
+ // create a dummy element
966
+ var clipRect = this.createElement(),
967
+ isObj = isObject(x);
968
+
969
+ // mimic a rectangle with its style object for automatic updating in
970
+ // attr
971
+ return extend(clipRect, {
972
+ members: [],
973
+ count: 0,
974
+ left: (isObj ? x.x : x) + 1,
975
+ top: (isObj ? x.y : y) + 1,
976
+ width: (isObj ? x.width : width) - 1,
977
+ height: (isObj ? x.height : height) - 1,
978
+ getCSS: function (wrapper) {
979
+ var element = wrapper.element,
980
+ nodeName = element.nodeName,
981
+ isShape = nodeName === 'shape',
982
+ inverted = wrapper.inverted,
983
+ rect = this,
984
+ top = rect.top - (isShape ? element.offsetTop : 0),
985
+ left = rect.left,
986
+ right = left + rect.width,
987
+ bottom = top + rect.height,
988
+ ret = {
989
+ clip: 'rect(' +
990
+ Math.round(inverted ? left : top) + 'px,' +
991
+ Math.round(inverted ? bottom : right) + 'px,' +
992
+ Math.round(inverted ? right : bottom) + 'px,' +
993
+ Math.round(inverted ? top : left) + 'px)'
994
+ };
995
+
996
+ // issue 74 workaround
997
+ if (!inverted && wrapper.docMode8 && nodeName === 'DIV') {
998
+ extend(ret, {
999
+ width: right + 'px',
1000
+ height: bottom + 'px'
1001
+ });
1002
+ }
1003
+ return ret;
1004
+ },
1005
+
1006
+ // used in attr and animation to update the clipping of all
1007
+ // members
1008
+ updateClipping: function () {
1009
+ clipRect.members.forEach(function (member) {
1010
+ // Member.element is falsy on deleted series, like in
1011
+ // stock/members/series-remove demo. Should be removed
1012
+ // from members, but this will do.
1013
+ if (member.element) {
1014
+ member.css(clipRect.getCSS(member));
1015
+ }
1016
+ });
1017
+ }
1018
+ });
1019
+
1020
+ },
1021
+
1022
+
1023
+ /**
1024
+ * Take a color and return it if it's a string, make it a gradient if
1025
+ * it's a gradient configuration object, and apply opacity.
1026
+ *
1027
+ * @function Highcharts.VMLRenderer#color
1028
+ *
1029
+ * @param {object} color
1030
+ * The color or config object
1031
+ */
1032
+ color: function (color, elem, prop, wrapper) {
1033
+ var renderer = this,
1034
+ colorObject,
1035
+ regexRgba = /^rgba/,
1036
+ markup,
1037
+ fillType,
1038
+ ret = 'none';
1039
+
1040
+ // Check for linear or radial gradient
1041
+ if (color && color.linearGradient) {
1042
+ fillType = 'gradient';
1043
+ } else if (color && color.radialGradient) {
1044
+ fillType = 'pattern';
1045
+ }
1046
+
1047
+
1048
+ if (fillType) {
1049
+
1050
+ var stopColor,
1051
+ stopOpacity,
1052
+ gradient = color.linearGradient || color.radialGradient,
1053
+ x1,
1054
+ y1,
1055
+ x2,
1056
+ y2,
1057
+ opacity1,
1058
+ opacity2,
1059
+ color1,
1060
+ color2,
1061
+ fillAttr = '',
1062
+ stops = color.stops,
1063
+ firstStop,
1064
+ lastStop,
1065
+ colors = [],
1066
+ addFillNode = function () {
1067
+ // Add the fill subnode. When colors attribute is used,
1068
+ // the meanings of opacity and o:opacity2 are reversed.
1069
+ markup = ['<fill colors="' + colors.join(',') +
1070
+ '" opacity="', opacity2, '" o:opacity2="',
1071
+ opacity1, '" type="', fillType, '" ', fillAttr,
1072
+ 'focus="100%" method="any" />'];
1073
+ createElement(
1074
+ renderer.prepVML(markup),
1075
+ null,
1076
+ null,
1077
+ elem
1078
+ );
1079
+ };
1080
+
1081
+ // Extend from 0 to 1
1082
+ firstStop = stops[0];
1083
+ lastStop = stops[stops.length - 1];
1084
+ if (firstStop[0] > 0) {
1085
+ stops.unshift([
1086
+ 0,
1087
+ firstStop[1]
1088
+ ]);
1089
+ }
1090
+ if (lastStop[0] < 1) {
1091
+ stops.push([
1092
+ 1,
1093
+ lastStop[1]
1094
+ ]);
1095
+ }
1096
+
1097
+ // Compute the stops
1098
+ stops.forEach(function (stop, i) {
1099
+ if (regexRgba.test(stop[1])) {
1100
+ colorObject = H.color(stop[1]);
1101
+ stopColor = colorObject.get('rgb');
1102
+ stopOpacity = colorObject.get('a');
1103
+ } else {
1104
+ stopColor = stop[1];
1105
+ stopOpacity = 1;
1106
+ }
1107
+
1108
+ // Build the color attribute
1109
+ colors.push((stop[0] * 100) + '% ' + stopColor);
1110
+
1111
+ // Only start and end opacities are allowed, so we use the
1112
+ // first and the last
1113
+ if (!i) {
1114
+ opacity1 = stopOpacity;
1115
+ color2 = stopColor;
1116
+ } else {
1117
+ opacity2 = stopOpacity;
1118
+ color1 = stopColor;
1119
+ }
1120
+ });
1121
+
1122
+ // Apply the gradient to fills only.
1123
+ if (prop === 'fill') {
1124
+
1125
+ // Handle linear gradient angle
1126
+ if (fillType === 'gradient') {
1127
+ x1 = gradient.x1 || gradient[0] || 0;
1128
+ y1 = gradient.y1 || gradient[1] || 0;
1129
+ x2 = gradient.x2 || gradient[2] || 0;
1130
+ y2 = gradient.y2 || gradient[3] || 0;
1131
+ fillAttr = 'angle="' + (90 - Math.atan(
1132
+ (y2 - y1) / // y vector
1133
+ (x2 - x1) // x vector
1134
+ ) * 180 / Math.PI) + '"';
1135
+
1136
+ addFillNode();
1137
+
1138
+ // Radial (circular) gradient
1139
+ } else {
1140
+
1141
+ var r = gradient.r,
1142
+ sizex = r * 2,
1143
+ sizey = r * 2,
1144
+ cx = gradient.cx,
1145
+ cy = gradient.cy,
1146
+ radialReference = elem.radialReference,
1147
+ bBox,
1148
+ applyRadialGradient = function () {
1149
+ if (radialReference) {
1150
+ bBox = wrapper.getBBox();
1151
+ cx += (radialReference[0] - bBox.x) /
1152
+ bBox.width - 0.5;
1153
+ cy += (radialReference[1] - bBox.y) /
1154
+ bBox.height - 0.5;
1155
+ sizex *= radialReference[2] / bBox.width;
1156
+ sizey *= radialReference[2] / bBox.height;
1157
+ }
1158
+ fillAttr = 'src="' +
1159
+ H.getOptions().global.VMLRadialGradientURL +
1160
+ '" ' +
1161
+ 'size="' + sizex + ',' + sizey + '" ' +
1162
+ 'origin="0.5,0.5" ' +
1163
+ 'position="' + cx + ',' + cy + '" ' +
1164
+ 'color2="' + color2 + '" ';
1165
+
1166
+ addFillNode();
1167
+ };
1168
+
1169
+ // Apply radial gradient
1170
+ if (wrapper.added) {
1171
+ applyRadialGradient();
1172
+ } else {
1173
+ // We need to know the bounding box to get the size
1174
+ // and position right
1175
+ wrapper.onAdd = applyRadialGradient;
1176
+ }
1177
+
1178
+ // The fill element's color attribute is broken in IE8
1179
+ // standards mode, so we need to set the parent shape's
1180
+ // fillcolor attribute instead.
1181
+ ret = color1;
1182
+ }
1183
+
1184
+ // Gradients are not supported for VML stroke, return the first
1185
+ // color. #722.
1186
+ } else {
1187
+ ret = stopColor;
1188
+ }
1189
+
1190
+ // If the color is an rgba color, split it and add a fill node
1191
+ // to hold the opacity component
1192
+ } else if (regexRgba.test(color) && elem.tagName !== 'IMG') {
1193
+
1194
+ colorObject = H.color(color);
1195
+
1196
+ wrapper[prop + '-opacitySetter'](
1197
+ colorObject.get('a'),
1198
+ prop,
1199
+ elem
1200
+ );
1201
+
1202
+ ret = colorObject.get('rgb');
1203
+
1204
+
1205
+ } else {
1206
+ // 'stroke' or 'fill' node
1207
+ var propNodes = elem.getElementsByTagName(prop);
1208
+
1209
+ if (propNodes.length) {
1210
+ propNodes[0].opacity = 1;
1211
+ propNodes[0].type = 'solid';
1212
+ }
1213
+ ret = color;
1214
+ }
1215
+
1216
+ return ret;
1217
+ },
1218
+
1219
+ /**
1220
+ * Take a VML string and prepare it for either IE8 or IE6/IE7.
1221
+ *
1222
+ * @function Highcharts.VMLRenderer#prepVML
1223
+ *
1224
+ * @param {Array<*>} markup
1225
+ * A string array of the VML markup to prepare
1226
+ */
1227
+ prepVML: function (markup) {
1228
+ var vmlStyle = 'display:inline-block;behavior:url(#default#VML);',
1229
+ isIE8 = this.isIE8;
1230
+
1231
+ markup = markup.join('');
1232
+
1233
+ if (isIE8) { // add xmlns and style inline
1234
+ markup = markup.replace(
1235
+ '/>',
1236
+ ' xmlns="urn:schemas-microsoft-com:vml" />'
1237
+ );
1238
+ if (markup.indexOf('style="') === -1) {
1239
+ markup = markup.replace(
1240
+ '/>',
1241
+ ' style="' + vmlStyle + '" />'
1242
+ );
1243
+ } else {
1244
+ markup = markup.replace('style="', 'style="' + vmlStyle);
1245
+ }
1246
+
1247
+ } else { // add namespace
1248
+ markup = markup.replace('<', '<hcv:');
1249
+ }
1250
+
1251
+ return markup;
1252
+ },
1253
+
1254
+ /**
1255
+ * Create rotated and aligned text
1256
+ *
1257
+ * @function Highcharts.VMLRenderer#text
1258
+ *
1259
+ * @param {string} str
1260
+ *
1261
+ * @param {number} x
1262
+ *
1263
+ * @param {number} y
1264
+ */
1265
+ text: SVGRenderer.prototype.html,
1266
+
1267
+ /**
1268
+ * Create and return a path element
1269
+ *
1270
+ * @function Highcharts.VMLRenderer#path
1271
+ *
1272
+ * @param {Highcharts.SVGPathArray} path
1273
+ */
1274
+ path: function (path) {
1275
+ var attr = {
1276
+ // subpixel precision down to 0.1 (width and height = 1px)
1277
+ coordsize: '10 10'
1278
+ };
1279
+
1280
+ if (isArray(path)) {
1281
+ attr.d = path;
1282
+ } else if (isObject(path)) { // attributes
1283
+ extend(attr, path);
1284
+ }
1285
+ // create the shape
1286
+ return this.createElement('shape').attr(attr);
1287
+ },
1288
+
1289
+ /**
1290
+ * Create and return a circle element. In VML circles are implemented as
1291
+ * shapes, which is faster than v:oval
1292
+ *
1293
+ * @function Highcharts.VMLRenderer#circle
1294
+ *
1295
+ * @param {number} x
1296
+ *
1297
+ * @param {number} y
1298
+ *
1299
+ * @param {number} r
1300
+ */
1301
+ circle: function (x, y, r) {
1302
+ var circle = this.symbol('circle');
1303
+
1304
+ if (isObject(x)) {
1305
+ r = x.r;
1306
+ y = x.y;
1307
+ x = x.x;
1308
+ }
1309
+ circle.isCircle = true; // Causes x and y to mean center (#1682)
1310
+ circle.r = r;
1311
+ return circle.attr({ x: x, y: y });
1312
+ },
1313
+
1314
+ /**
1315
+ * Create a group using an outer div and an inner v:group to allow
1316
+ * rotating and flipping. A simple v:group would have problems with
1317
+ * positioning child HTML elements and CSS clip.
1318
+ *
1319
+ * @function Highcharts.VMLRenderer#g
1320
+ *
1321
+ * @param {string} name
1322
+ * The name of the group
1323
+ */
1324
+ g: function (name) {
1325
+ var wrapper,
1326
+ attribs;
1327
+
1328
+ // set the class name
1329
+ if (name) {
1330
+ attribs = {
1331
+ 'className': 'highcharts-' + name,
1332
+ 'class': 'highcharts-' + name
1333
+ };
1334
+ }
1335
+
1336
+ // the div to hold HTML and clipping
1337
+ wrapper = this.createElement('div').attr(attribs);
1338
+
1339
+ return wrapper;
1340
+ },
1341
+
1342
+ /**
1343
+ * VML override to create a regular HTML image.
1344
+ *
1345
+ * @function Highcharts.VMLRenderer#image
1346
+ *
1347
+ * @param {string} src
1348
+ *
1349
+ * @param {number} x
1350
+ *
1351
+ * @param {number} y
1352
+ *
1353
+ * @param {number} width
1354
+ *
1355
+ * @param {number} height
1356
+ */
1357
+ image: function (src, x, y, width, height) {
1358
+ var obj = this.createElement('img')
1359
+ .attr({ src: src });
1360
+
1361
+ if (arguments.length > 1) {
1362
+ obj.attr({
1363
+ x: x,
1364
+ y: y,
1365
+ width: width,
1366
+ height: height
1367
+ });
1368
+ }
1369
+ return obj;
1370
+ },
1371
+
1372
+ /**
1373
+ * For rectangles, VML uses a shape for rect to overcome bugs and
1374
+ * rotation problems
1375
+ *
1376
+ * @function Highcharts.VMLRenderer#createElement
1377
+ *
1378
+ * @param {string} nodeName
1379
+ */
1380
+ createElement: function (nodeName) {
1381
+ return nodeName === 'rect' ?
1382
+ this.symbol(nodeName) :
1383
+ SVGRenderer.prototype.createElement.call(this, nodeName);
1384
+ },
1385
+
1386
+ /**
1387
+ * In the VML renderer, each child of an inverted div (group) is
1388
+ * inverted
1389
+ *
1390
+ * @function Highcharts.VMLRenderer#invertChild
1391
+ *
1392
+ * @param {object} element
1393
+ *
1394
+ * @param {object} parentNode
1395
+ */
1396
+ invertChild: function (element, parentNode) {
1397
+ var ren = this,
1398
+ parentStyle = parentNode.style,
1399
+ imgStyle = element.tagName === 'IMG' && element.style; // #1111
1400
+
1401
+ css(element, {
1402
+ flip: 'x',
1403
+ left: pInt(parentStyle.width) -
1404
+ (imgStyle ? pInt(imgStyle.top) : 1),
1405
+ top: pInt(parentStyle.height) -
1406
+ (imgStyle ? pInt(imgStyle.left) : 1),
1407
+ rotation: -90
1408
+ });
1409
+
1410
+ // Recursively invert child elements, needed for nested composite
1411
+ // shapes like box plots and error bars. #1680, #1806.
1412
+ [].forEach.call(element.childNodes, function (child) {
1413
+ ren.invertChild(child, element);
1414
+ });
1415
+ },
1416
+
1417
+ /**
1418
+ * Symbol definitions that override the parent SVG renderer's symbols
1419
+ *
1420
+ * @name Highcharts.VMLRenderer#symbols
1421
+ * @type {Highcharts.Dictionary<Function>}
1422
+ */
1423
+ symbols: {
1424
+ // VML specific arc function
1425
+ arc: function (x, y, w, h, options) {
1426
+ var start = options.start,
1427
+ end = options.end,
1428
+ radius = options.r || w || h,
1429
+ innerRadius = options.innerR,
1430
+ cosStart = Math.cos(start),
1431
+ sinStart = Math.sin(start),
1432
+ cosEnd = Math.cos(end),
1433
+ sinEnd = Math.sin(end),
1434
+ ret;
1435
+
1436
+ if (end - start === 0) { // no angle, don't show it.
1437
+ return ['x'];
1438
+ }
1439
+
1440
+ ret = [
1441
+ 'wa', // clockwise arc to
1442
+ x - radius, // left
1443
+ y - radius, // top
1444
+ x + radius, // right
1445
+ y + radius, // bottom
1446
+ x + radius * cosStart, // start x
1447
+ y + radius * sinStart, // start y
1448
+ x + radius * cosEnd, // end x
1449
+ y + radius * sinEnd // end y
1450
+ ];
1451
+
1452
+ if (options.open && !innerRadius) {
1453
+ ret.push(
1454
+ 'e',
1455
+ 'M',
1456
+ x, // - innerRadius,
1457
+ y // - innerRadius
1458
+ );
1459
+ }
1460
+
1461
+ ret.push(
1462
+ 'at', // anti clockwise arc to
1463
+ x - innerRadius, // left
1464
+ y - innerRadius, // top
1465
+ x + innerRadius, // right
1466
+ y + innerRadius, // bottom
1467
+ x + innerRadius * cosEnd, // start x
1468
+ y + innerRadius * sinEnd, // start y
1469
+ x + innerRadius * cosStart, // end x
1470
+ y + innerRadius * sinStart, // end y
1471
+ 'x', // finish path
1472
+ 'e' // close
1473
+ );
1474
+
1475
+ ret.isArc = true;
1476
+ return ret;
1477
+
1478
+ },
1479
+ // Add circle symbol path. This performs significantly faster than
1480
+ // v:oval.
1481
+ circle: function (x, y, w, h, wrapper) {
1482
+
1483
+ if (wrapper && defined(wrapper.r)) {
1484
+ w = h = 2 * wrapper.r;
1485
+ }
1486
+
1487
+ // Center correction, #1682
1488
+ if (wrapper && wrapper.isCircle) {
1489
+ x -= w / 2;
1490
+ y -= h / 2;
1491
+ }
1492
+
1493
+ // Return the path
1494
+ return [
1495
+ 'wa', // clockwisearcto
1496
+ x, // left
1497
+ y, // top
1498
+ x + w, // right
1499
+ y + h, // bottom
1500
+ x + w, // start x
1501
+ y + h / 2, // start y
1502
+ x + w, // end x
1503
+ y + h / 2, // end y
1504
+ 'e' // close
1505
+ ];
1506
+ },
1507
+ /**
1508
+ * Add rectangle symbol path which eases rotation and omits arcsize
1509
+ * problems compared to the built-in VML roundrect shape. When
1510
+ * borders are not rounded, use the simpler square path, else use
1511
+ * the callout path without the arrow.
1512
+ */
1513
+ rect: function (x, y, w, h, options) {
1514
+ return SVGRenderer.prototype.symbols[
1515
+ !defined(options) || !options.r ? 'square' : 'callout'
1516
+ ].call(0, x, y, w, h, options);
1517
+ }
1518
+ }
1519
+ };
1520
+ H.VMLRenderer = VMLRenderer = function () {
1521
+ this.init.apply(this, arguments);
1522
+ };
1523
+ VMLRenderer.prototype = merge(SVGRenderer.prototype, VMLRendererExtension);
1524
+
1525
+ // general renderer
1526
+ H.Renderer = VMLRenderer;
1527
+ }
1528
+
1529
+ SVGRenderer.prototype.getSpanWidth = function (wrapper, tspan) {
1530
+ var renderer = this,
1531
+ bBox = wrapper.getBBox(true),
1532
+ actualWidth = bBox.width;
1533
+
1534
+ // Old IE cannot measure the actualWidth for SVG elements (#2314)
1535
+ if (!svg && renderer.forExport) {
1536
+ actualWidth = renderer.measureSpanWidth(
1537
+ tspan.firstChild.data,
1538
+ wrapper.styles
1539
+ );
1540
+ }
1541
+ return actualWidth;
1542
+ };
1543
+
1544
+ // This method is used with exporting in old IE, when emulating SVG (see #2314)
1545
+ SVGRenderer.prototype.measureSpanWidth = function (text, styles) {
1546
+ var measuringSpan = doc.createElement('span'),
1547
+ offsetWidth,
1548
+ textNode = doc.createTextNode(text);
1549
+
1550
+ measuringSpan.appendChild(textNode);
1551
+ css(measuringSpan, styles);
1552
+ this.box.appendChild(measuringSpan);
1553
+ offsetWidth = measuringSpan.offsetWidth;
1554
+ discardElement(measuringSpan); // #2463
1555
+ return offsetWidth;
1556
+ };