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,35 @@
1
+ /*
2
+ Highcharts JS v7.0.3 (2019-02-06)
3
+ Exporting module
4
+
5
+ (c) 2010-2019 Torstein Honsi
6
+
7
+ License: www.highcharts.com/license
8
+ */
9
+ (function(h){"object"===typeof module&&module.exports?(h["default"]=h,module.exports=h):"function"===typeof define&&define.amd?define(function(){return h}):h("undefined"!==typeof Highcharts?Highcharts:void 0)})(function(h){var D=function(){return{initUpdate:function(f){f.navigation||(f.navigation={updates:[],update:function(f,p){this.updates.forEach(function(q){q.update.call(q.context,f,p)})}})},addUpdate:function(f,h){h.navigation||this.initUpdate(h);h.navigation.updates.push({update:f,context:h})}}}();
10
+ (function(f,h){var p=f.defaultOptions,q=f.doc,B=f.Chart,r=f.addEvent,D=f.removeEvent,E=f.fireEvent,w=f.createElement,F=f.discardElement,y=f.css,n=f.merge,u=f.pick,G=f.objectEach,z=f.extend,K=f.isTouchDevice,A=f.win,I=A.navigator.userAgent,H=f.SVGRenderer,J=f.Renderer.prototype.symbols,L=/Edge\/|Trident\/|MSIE /.test(I),M=/firefox/i.test(I);z(p.lang,{printChart:"Print chart",downloadPNG:"Download PNG image",downloadJPEG:"Download JPEG image",downloadPDF:"Download PDF document",downloadSVG:"Download SVG vector image",
11
+ contextButtonTitle:"Chart context menu"});p.navigation||(p.navigation={});n(!0,p.navigation,{buttonOptions:{theme:{},symbolSize:14,symbolX:12.5,symbolY:10.5,align:"right",buttonSpacing:3,height:22,verticalAlign:"top",width:24}});n(!0,p.navigation,{menuStyle:{border:"1px solid #999999",background:"#ffffff",padding:"5px 0"},menuItemStyle:{padding:"0.5em 1em",color:"#333333",background:"none",fontSize:K?"14px":"11px",transition:"background 250ms, color 250ms"},menuItemHoverStyle:{background:"#335cad",
12
+ color:"#ffffff"},buttonOptions:{symbolFill:"#666666",symbolStroke:"#666666",symbolStrokeWidth:3,theme:{padding:5}}});p.exporting={type:"image/png",url:"https://export.highcharts.com/",printMaxWidth:780,scale:2,buttons:{contextButton:{className:"highcharts-contextbutton",menuClassName:"highcharts-contextmenu",symbol:"menu",titleKey:"contextButtonTitle",menuItems:"printChart separator downloadPNG downloadJPEG downloadPDF downloadSVG".split(" ")}},menuItemDefinitions:{printChart:{textKey:"printChart",
13
+ onclick:function(){this.print()}},separator:{separator:!0},downloadPNG:{textKey:"downloadPNG",onclick:function(){this.exportChart()}},downloadJPEG:{textKey:"downloadJPEG",onclick:function(){this.exportChart({type:"image/jpeg"})}},downloadPDF:{textKey:"downloadPDF",onclick:function(){this.exportChart({type:"application/pdf"})}},downloadSVG:{textKey:"downloadSVG",onclick:function(){this.exportChart({type:"image/svg+xml"})}}}};f.post=function(b,a,d){var c=w("form",n({method:"post",action:b,enctype:"multipart/form-data"},
14
+ d),{display:"none"},q.body);G(a,function(a,b){w("input",{type:"hidden",name:b,value:a},null,c)});c.submit();F(c)};z(B.prototype,{sanitizeSVG:function(b,a){if(a&&a.exporting&&a.exporting.allowHTML){var d=b.match(/<\/svg>(.*?$)/);d&&d[1]&&(d='\x3cforeignObject x\x3d"0" y\x3d"0" width\x3d"'+a.chart.width+'" height\x3d"'+a.chart.height+'"\x3e\x3cbody xmlns\x3d"http://www.w3.org/1999/xhtml"\x3e'+d[1]+"\x3c/body\x3e\x3c/foreignObject\x3e",b=b.replace("\x3c/svg\x3e",d+"\x3c/svg\x3e"))}b=b.replace(/zIndex="[^"]+"/g,
15
+ "").replace(/symbolName="[^"]+"/g,"").replace(/jQuery[0-9]+="[^"]+"/g,"").replace(/url\(("|&quot;)(\S+)("|&quot;)\)/g,"url($2)").replace(/url\([^#]+#/g,"url(#").replace(/<svg /,'\x3csvg xmlns:xlink\x3d"http://www.w3.org/1999/xlink" ').replace(/ (|NS[0-9]+\:)href=/g," xlink:href\x3d").replace(/\n/," ").replace(/<\/svg>.*?$/,"\x3c/svg\x3e").replace(/(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g,'$1\x3d"rgb($2)" $1-opacity\x3d"$3"').replace(/&nbsp;/g,"\u00a0").replace(/&shy;/g,"\u00ad");
16
+ this.ieSanitizeSVG&&(b=this.ieSanitizeSVG(b));return b},getChartHTML:function(){this.styledMode&&this.inlineStyles();return this.container.innerHTML},getSVG:function(b){var a,d,c,v,m,k=n(this.options,b);d=w("div",null,{position:"absolute",top:"-9999em",width:this.chartWidth+"px",height:this.chartHeight+"px"},q.body);c=this.renderTo.style.width;m=this.renderTo.style.height;c=k.exporting.sourceWidth||k.chart.width||/px$/.test(c)&&parseInt(c,10)||(k.isGantt?800:600);m=k.exporting.sourceHeight||k.chart.height||
17
+ /px$/.test(m)&&parseInt(m,10)||400;z(k.chart,{animation:!1,renderTo:d,forExport:!0,renderer:"SVGRenderer",width:c,height:m});k.exporting.enabled=!1;delete k.data;k.series=[];this.series.forEach(function(a){v=n(a.userOptions,{animation:!1,enableMouseTracking:!1,showCheckbox:!1,visible:a.visible});v.isInternal||k.series.push(v)});this.axes.forEach(function(a){a.userOptions.internalKey||(a.userOptions.internalKey=f.uniqueKey())});a=new f.Chart(k,this.callback);b&&["xAxis","yAxis","series"].forEach(function(c){var d=
18
+ {};b[c]&&(d[c]=b[c],a.update(d))});this.axes.forEach(function(b){var c=f.find(a.axes,function(a){return a.options.internalKey===b.userOptions.internalKey}),d=b.getExtremes(),e=d.userMin,d=d.userMax;c&&(void 0!==e&&e!==c.min||void 0!==d&&d!==c.max)&&c.setExtremes(e,d,!0,!1)});c=a.getChartHTML();E(this,"getSVG",{chartCopy:a});c=this.sanitizeSVG(c,k);k=null;a.destroy();F(d);return c},getSVGForExport:function(b,a){var d=this.options.exporting;return this.getSVG(n({chart:{borderRadius:0}},d.chartOptions,
19
+ a,{exporting:{sourceWidth:b&&b.sourceWidth||d.sourceWidth,sourceHeight:b&&b.sourceHeight||d.sourceHeight}}))},getFilename:function(){var b=this.userOptions.title&&this.userOptions.title.text,a=this.options.exporting.filename;if(a)return a;"string"===typeof b&&(a=b.toLowerCase().replace(/<\/?[^>]+(>|$)/g,"").replace(/[\s_]+/g,"-").replace(/[^a-z0-9\-]/g,"").replace(/^[\-]+/g,"").replace(/[\-]+/g,"-").substr(0,24).replace(/[\-]+$/g,""));if(!a||5>a.length)a="chart";return a},exportChart:function(b,a){a=
20
+ this.getSVGForExport(b,a);b=n(this.options.exporting,b);f.post(b.url,{filename:b.filename||this.getFilename(),type:b.type,width:b.width||0,scale:b.scale,svg:a},b.formAttributes)},print:function(){function b(b){(a.fixedDiv?[a.fixedDiv,a.scrollingContainer]:[a.container]).forEach(function(a){b.appendChild(a)})}var a=this,d=[],c=q.body,f=c.childNodes,m=a.options.exporting.printMaxWidth,k,e;if(!a.isPrinting){a.isPrinting=!0;a.pointer.reset(null,0);E(a,"beforePrint");if(e=m&&a.chartWidth>m)k=[a.options.chart.width,
21
+ void 0,!1],a.setSize(m,void 0,!1);f.forEach(function(a,b){1===a.nodeType&&(d[b]=a.style.display,a.style.display="none")});b(c);setTimeout(function(){A.focus();A.print();setTimeout(function(){b(a.renderTo);f.forEach(function(a,b){1===a.nodeType&&(a.style.display=d[b])});a.isPrinting=!1;e&&a.setSize.apply(a,k);E(a,"afterPrint")},1E3)},1)}},contextMenu:function(b,a,d,c,v,m,k){var e=this,x=e.options.navigation,l=e.chartWidth,t=e.chartHeight,h="cache-"+b,g=e[h],C=Math.max(v,m),n;g||(e.exportContextMenu=
22
+ e[h]=g=w("div",{className:b},{position:"absolute",zIndex:1E3,padding:C+"px",pointerEvents:"auto"},e.fixedDiv||e.container),n=w("div",{className:"highcharts-menu"},null,g),e.styledMode||y(n,z({MozBoxShadow:"3px 3px 10px #888",WebkitBoxShadow:"3px 3px 10px #888",boxShadow:"3px 3px 10px #888"},x.menuStyle)),g.hideMenu=function(){y(g,{display:"none"});k&&k.setState(0);e.openMenu=!1;f.clearTimeout(g.hideTimer)},e.exportEvents.push(r(g,"mouseleave",function(){g.hideTimer=setTimeout(g.hideMenu,500)}),r(g,
23
+ "mouseenter",function(){f.clearTimeout(g.hideTimer)}),r(q,"mouseup",function(a){e.pointer.inClass(a.target,b)||g.hideMenu()}),r(g,"click",function(){e.openMenu&&g.hideMenu()})),a.forEach(function(a){"string"===typeof a&&(a=e.options.exporting.menuItemDefinitions[a]);if(f.isObject(a,!0)){var b;a.separator?b=w("hr",null,null,n):(b=w("div",{className:"highcharts-menu-item",onclick:function(b){b&&b.stopPropagation();g.hideMenu();a.onclick&&a.onclick.apply(e,arguments)},innerHTML:a.text||e.options.lang[a.textKey]},
24
+ null,n),e.styledMode||(b.onmouseover=function(){y(this,x.menuItemHoverStyle)},b.onmouseout=function(){y(this,x.menuItemStyle)},y(b,z({cursor:"pointer"},x.menuItemStyle))));e.exportDivElements.push(b)}}),e.exportDivElements.push(n,g),e.exportMenuWidth=g.offsetWidth,e.exportMenuHeight=g.offsetHeight);a={display:"block"};d+e.exportMenuWidth>l?a.right=l-d-v-C+"px":a.left=d-C+"px";c+m+e.exportMenuHeight>t&&"top"!==k.alignOptions.verticalAlign?a.bottom=t-c-C+"px":a.top=c+m-C+"px";y(g,a);e.openMenu=!0},
25
+ addButton:function(b){var a=this,d=a.renderer,c=n(a.options.navigation.buttonOptions,b),f=c.onclick,m=c.menuItems,k,e,h=c.symbolSize||12;a.btnCount||(a.btnCount=0);a.exportDivElements||(a.exportDivElements=[],a.exportSVGElements=[]);if(!1!==c.enabled){var l=c.theme,t=l.states,q=t&&t.hover,t=t&&t.select,g;a.styledMode||(l.fill=u(l.fill,"#ffffff"),l.stroke=u(l.stroke,"none"));delete l.states;f?g=function(b){b&&b.stopPropagation();f.call(a,b)}:m&&(g=function(b){b&&b.stopPropagation();a.contextMenu(e.menuClassName,
26
+ m,e.translateX,e.translateY,e.width,e.height,e);e.setState(2)});c.text&&c.symbol?l.paddingLeft=u(l.paddingLeft,25):c.text||z(l,{width:c.width,height:c.height,padding:0});a.styledMode||(l["stroke-linecap"]="round",l.fill=u(l.fill,"#ffffff"),l.stroke=u(l.stroke,"none"));e=d.button(c.text,0,0,g,l,q,t).addClass(b.className).attr({title:u(a.options.lang[c._titleKey||c.titleKey],"")});e.menuClassName=b.menuClassName||"highcharts-menu-"+a.btnCount++;c.symbol&&(k=d.symbol(c.symbol,c.symbolX-h/2,c.symbolY-
27
+ h/2,h,h,{width:h,height:h}).addClass("highcharts-button-symbol").attr({zIndex:1}).add(e),a.styledMode||k.attr({stroke:c.symbolStroke,fill:c.symbolFill,"stroke-width":c.symbolStrokeWidth||1}));e.add(a.exportingGroup).align(z(c,{width:e.width,x:u(c.x,a.buttonOffset)}),!0,"spacingBox");a.buttonOffset+=(e.width+c.buttonSpacing)*("right"===c.align?-1:1);a.exportSVGElements.push(e,k)}},destroyExport:function(b){var a=b?b.target:this;b=a.exportSVGElements;var d=a.exportDivElements,c=a.exportEvents,h;b&&
28
+ (b.forEach(function(b,c){b&&(b.onclick=b.ontouchstart=null,h="cache-"+b.menuClassName,a[h]&&delete a[h],a.exportSVGElements[c]=b.destroy())}),b.length=0);a.exportingGroup&&(a.exportingGroup.destroy(),delete a.exportingGroup);d&&(d.forEach(function(b,c){f.clearTimeout(b.hideTimer);D(b,"mouseleave");a.exportDivElements[c]=b.onmouseout=b.onmouseover=b.ontouchstart=b.onclick=null;F(b)}),d.length=0);c&&(c.forEach(function(a){a()}),c.length=0)}});H.prototype.inlineToAttributes="fill stroke strokeLinecap strokeLinejoin strokeWidth textAnchor x y".split(" ");
29
+ H.prototype.inlineBlacklist=[/-/,/^(clipPath|cssText|d|height|width)$/,/^font$/,/[lL]ogical(Width|Height)$/,/perspective/,/TapHighlightColor/,/^transition/,/^length$/];H.prototype.unstyledElements=["clipPath","defs","desc"];B.prototype.inlineStyles=function(){function b(a){return a.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase()})}function a(d){function m(a,g){p=v=!1;if(h){for(r=h.length;r--&&!v;)v=h[r].test(g);p=!v}"transform"===g&&"none"===a&&(p=!0);for(r=f.length;r--&&!p;)p=f[r].test(g)||
30
+ "function"===typeof a;p||q[g]===a&&"svg"!==d.nodeName||e[d.nodeName][g]===a||(-1!==c.indexOf(g)?d.setAttribute(b(g),a):u+=b(g)+":"+a+";")}var g,q,u="",t,p,v,r;if(1===d.nodeType&&-1===k.indexOf(d.nodeName)){g=A.getComputedStyle(d,null);q="svg"===d.nodeName?{}:A.getComputedStyle(d.parentNode,null);e[d.nodeName]||(x=l.getElementsByTagName("svg")[0],t=l.createElementNS(d.namespaceURI,d.nodeName),x.appendChild(t),e[d.nodeName]=n(A.getComputedStyle(t,null)),"text"===d.nodeName&&delete e.text.fill,x.removeChild(t));
31
+ if(M||L)for(var w in g)m(g[w],w);else G(g,m);u&&(g=d.getAttribute("style"),d.setAttribute("style",(g?g+";":"")+u));"svg"===d.nodeName&&d.setAttribute("stroke-width","1px");"text"!==d.nodeName&&[].forEach.call(d.children||d.childNodes,a)}}var d=this.renderer,c=d.inlineToAttributes,f=d.inlineBlacklist,h=d.inlineWhitelist,k=d.unstyledElements,e={},x,l,d=q.createElement("iframe");y(d,{width:"1px",height:"1px",visibility:"hidden"});q.body.appendChild(d);l=d.contentWindow.document;l.open();l.write('\x3csvg xmlns\x3d"http://www.w3.org/2000/svg"\x3e\x3c/svg\x3e');
32
+ l.close();a(this.container.querySelector("svg"));x.parentNode.removeChild(x)};J.menu=function(b,a,d,c){return["M",b,a+2.5,"L",b+d,a+2.5,"M",b,a+c/2+.5,"L",b+d,a+c/2+.5,"M",b,a+c-1.5,"L",b+d,a+c-1.5]};J.menuball=function(b,a,d,c){b=[];c=c/3-2;return b=b.concat(this.circle(d-c,a,c,c),this.circle(d-c,a+c+4,c,c),this.circle(d-c,a+2*(c+4),c,c))};B.prototype.renderExporting=function(){var b=this,a=b.options.exporting,d=a.buttons,c=b.isDirtyExporting||!b.exportSVGElements;b.buttonOffset=0;b.isDirtyExporting&&
33
+ b.destroyExport();c&&!1!==a.enabled&&(b.exportEvents=[],b.exportingGroup=b.exportingGroup||b.renderer.g("exporting-group").attr({zIndex:3}).add(),G(d,function(a){b.addButton(a)}),b.isDirtyExporting=!1);r(b,"destroy",b.destroyExport)};r(B,"init",function(){var b=this;b.exporting={update:function(a,d){b.isDirtyExporting=!0;n(!0,b.options.exporting,a);u(d,!0)&&b.redraw()}};h.addUpdate(function(a,d){b.isDirtyExporting=!0;n(!0,b.options.navigation,a);u(d,!0)&&b.redraw()},b)});B.prototype.callbacks.push(function(b){b.renderExporting();
34
+ r(b,"redraw",b.renderExporting)})})(h,D)});
35
+ //# sourceMappingURL=exporting.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exporting.js.map","lineCount":34,"mappings":"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","sources":["exporting.src.js"],"names":["factory","module","exports","define","amd","Highcharts","undefined","chartNavigation","initUpdate","chart","navigation","updates","update","options","redraw","forEach","updateConfig","call","context","addUpdate","push","H","chartNavigationMixin","defaultOptions","doc","Chart","addEvent","removeEvent","fireEvent","createElement","discardElement","css","merge","pick","objectEach","extend","isTouchDevice","win","userAgent","navigator","SVGRenderer","symbols","Renderer","prototype","isMSBrowser","test","isFirefoxBrowser","lang","printChart","downloadPNG","downloadJPEG","downloadPDF","downloadSVG","contextButtonTitle","buttonOptions","theme","symbolSize","symbolX","symbolY","align","buttonSpacing","height","verticalAlign","width","menuStyle","border","background","padding","menuItemStyle","color","fontSize","transition","menuItemHoverStyle","symbolFill","symbolStroke","symbolStrokeWidth","exporting","type","url","printMaxWidth","scale","buttons","contextButton","className","menuClassName","symbol","titleKey","menuItems","menuItemDefinitions","textKey","onclick","print","separator","exportChart","post","H.post","data","formAttributes","form","method","action","enctype","display","body","val","name","value","submit","sanitizeSVG","svg","allowHTML","html","match","replace","ieSanitizeSVG","getChartHTML","styledMode","inlineStyles","container","innerHTML","getSVG","chartOptions","chartCopy","sandbox","seriesOptions","sourceHeight","position","top","chartWidth","chartHeight","cssWidth","renderTo","style","cssHeight","sourceWidth","parseInt","isGantt","animation","forExport","renderer","enabled","series","serie","userOptions","enableMouseTracking","showCheckbox","visible","isInternal","axes","axis","internalKey","uniqueKey","callback","coll","collOptions","axisCopy","find","copy","extremes","getExtremes","userMin","userMax","min","max","setExtremes","destroy","getSVGForExport","chartExportingOptions","borderRadius","getFilename","s","title","text","filename","toLowerCase","substr","length","exportingOptions","moveContainers","moveTo","fixedDiv","scrollingContainer","div","appendChild","origDisplay","childNodes","resetParams","handleMaxWidth","isPrinting","pointer","reset","setSize","node","i","nodeType","setTimeout","focus","apply","contextMenu","items","x","y","button","navOptions","cacheName","menu","menuPadding","Math","innerMenu","exportContextMenu","zIndex","pointerEvents","MozBoxShadow","WebkitBoxShadow","boxShadow","hideMenu","menu.hideMenu","setState","openMenu","clearTimeout","hideTimer","exportEvents","e","inClass","target","item","isObject","element","stopPropagation","arguments","onmouseover","element.onmouseover","onmouseout","element.onmouseout","cursor","exportDivElements","exportMenuWidth","offsetWidth","exportMenuHeight","offsetHeight","right","left","alignOptions","bottom","addButton","btnOptions","btnCount","exportSVGElements","attr","states","hover","select","fill","stroke","translateX","translateY","paddingLeft","addClass","_titleKey","add","exportingGroup","buttonOffset","destroyExport","elem","ontouchstart","unbind","inlineToAttributes","inlineBlacklist","unstyledElements","Chart.prototype.inlineStyles","hyphenate","prop","a","b","recurse","filterStyles","blacklisted","whitelisted","whitelist","blacklist","parentStyles","nodeName","defaultStyles","indexOf","setAttribute","cssText","styles","dummy","getComputedStyle","parentNode","dummySVG","iframeDoc","getElementsByTagName","createElementNS","namespaceURI","removeChild","p","styleAttr","getAttribute","children","inlineWhitelist","iframe","visibility","contentWindow","document","open","write","close","querySelector","symbols.menu","arr","menuball","symbols.menuball","path","h","concat","circle","renderExporting","Chart.prototype.renderExporting","isDirty","isDirtyExporting","g","callbacks"]}
@@ -0,0 +1,2233 @@
1
+ /**
2
+ * @license Highcharts JS v7.0.3 (2019-02-06)
3
+ * Exporting module
4
+ *
5
+ * (c) 2010-2019 Torstein Honsi
6
+ *
7
+ * License: www.highcharts.com/license
8
+ */
9
+ 'use strict';
10
+ (function (factory) {
11
+ if (typeof module === 'object' && module.exports) {
12
+ factory['default'] = factory;
13
+ module.exports = factory;
14
+ } else if (typeof define === 'function' && define.amd) {
15
+ define(function () {
16
+ return factory;
17
+ });
18
+ } else {
19
+ factory(typeof Highcharts !== 'undefined' ? Highcharts : undefined);
20
+ }
21
+ }(function (Highcharts) {
22
+ var chartNavigation = (function () {
23
+ /**
24
+ * (c) 2010-2018 Paweł Fus
25
+ *
26
+ * License: www.highcharts.com/license
27
+ */
28
+
29
+
30
+ var chartNavigation = {
31
+ /**
32
+ * Initializes `chart.navigation` object which delegates `update()` methods
33
+ * to all other common classes (used in exporting and navigationBindings).
34
+ *
35
+ * @private
36
+ *
37
+ * @param {Highcharts.Chart} chart
38
+ * The chart instance.
39
+ */
40
+ initUpdate: function (chart) {
41
+ if (!chart.navigation) {
42
+ chart.navigation = {
43
+ updates: [],
44
+ update: function (options, redraw) {
45
+ this.updates.forEach(function (updateConfig) {
46
+ updateConfig.update.call(
47
+ updateConfig.context,
48
+ options,
49
+ redraw
50
+ );
51
+ });
52
+ }
53
+ };
54
+ }
55
+ },
56
+ /**
57
+ * Registers an `update()` method in the `chart.navigation` object.
58
+ *
59
+ * @private
60
+ *
61
+ * @param {function} update
62
+ * The `update()` method that will be called in `chart.update()`.
63
+ *
64
+ * @param {Highcharts.Chart} chart
65
+ * The chart instance. `update()` will use that as a context
66
+ * (`this`).
67
+ */
68
+ addUpdate: function (update, chart) {
69
+ if (!chart.navigation) {
70
+ this.initUpdate(chart);
71
+ }
72
+
73
+ chart.navigation.updates.push({
74
+ update: update,
75
+ context: chart
76
+ });
77
+ }
78
+ };
79
+
80
+
81
+ return chartNavigation;
82
+ }());
83
+ (function (H, chartNavigationMixin) {
84
+ /**
85
+ * Exporting module
86
+ *
87
+ * (c) 2010-2019 Torstein Honsi
88
+ *
89
+ * License: www.highcharts.com/license
90
+ */
91
+
92
+ /**
93
+ * Gets fired after a chart is printed through the context menu item or the
94
+ * Chart.print method.
95
+ *
96
+ * @callback Highcharts.ExportingAfterPrintCallbackFunction
97
+ *
98
+ * @param {Highcharts.Chart} chart
99
+ * The chart on which the event occured.
100
+ *
101
+ * @param {global.Event} event
102
+ * The event that occured.
103
+ */
104
+
105
+ /**
106
+ * Gets fired before a chart is printed through the context menu item or the
107
+ * Chart.print method.
108
+ *
109
+ * @callback Highcharts.ExportingBeforePrintCallbackFunction
110
+ *
111
+ * @param {Highcharts.Chart} chart
112
+ * The chart on which the event occured.
113
+ *
114
+ * @param {global.Event} event
115
+ * The event that occured.
116
+ */
117
+
118
+ /**
119
+ * Function to call if the offline-exporting module fails to export a chart on
120
+ * the client side.
121
+ *
122
+ * @callback Highcharts.ExportingErrorCallbackFunction
123
+ *
124
+ * @param {Highcharts.ExportingOptions} options
125
+ * The exporting options.
126
+ *
127
+ * @param {global.Error} err
128
+ * The error from the module.
129
+ */
130
+
131
+ /**
132
+ * Definition for a menu item in the context menu.
133
+ *
134
+ * @interface Highcharts.ExportingMenuObject
135
+ *//**
136
+ * The text for the menu item.
137
+ *
138
+ * @name Highcharts.ExportingMenuObject#text
139
+ * @type {string|undefined}
140
+ *//**
141
+ * If internationalization is required, the key to a language string.
142
+ *
143
+ * @name Highcharts.ExportingMenuObject#textKey
144
+ * @type {string|undefined}
145
+ *//**
146
+ * The click handler for the menu item.
147
+ *
148
+ * @name Highcharts.ExportingMenuObject#onclick
149
+ * @type {Function|undefined}
150
+ *//**
151
+ * Indicates a separator line instead of an item.
152
+ *
153
+ * @name Highcharts.ExportingMenuObject#separator
154
+ * @type {boolean|undefined}
155
+ */
156
+
157
+
158
+
159
+ // create shortcuts
160
+ var defaultOptions = H.defaultOptions,
161
+ doc = H.doc,
162
+ Chart = H.Chart,
163
+ addEvent = H.addEvent,
164
+ removeEvent = H.removeEvent,
165
+ fireEvent = H.fireEvent,
166
+ createElement = H.createElement,
167
+ discardElement = H.discardElement,
168
+ css = H.css,
169
+ merge = H.merge,
170
+ pick = H.pick,
171
+ objectEach = H.objectEach,
172
+ extend = H.extend,
173
+ isTouchDevice = H.isTouchDevice,
174
+ win = H.win,
175
+ userAgent = win.navigator.userAgent,
176
+ SVGRenderer = H.SVGRenderer,
177
+ symbols = H.Renderer.prototype.symbols,
178
+ isMSBrowser = /Edge\/|Trident\/|MSIE /.test(userAgent),
179
+ isFirefoxBrowser = /firefox/i.test(userAgent);
180
+
181
+ // Add language
182
+ extend(defaultOptions.lang
183
+ /**
184
+ * @optionparent lang
185
+ */
186
+ , {
187
+
188
+ /**
189
+ * Exporting module only. The text for the menu item to print the chart.
190
+ *
191
+ * @since 3.0.1
192
+ */
193
+ printChart: 'Print chart',
194
+
195
+ /**
196
+ * Exporting module only. The text for the PNG download menu item.
197
+ *
198
+ * @since 2.0
199
+ */
200
+ downloadPNG: 'Download PNG image',
201
+
202
+ /**
203
+ * Exporting module only. The text for the JPEG download menu item.
204
+ *
205
+ * @since 2.0
206
+ */
207
+ downloadJPEG: 'Download JPEG image',
208
+
209
+ /**
210
+ * Exporting module only. The text for the PDF download menu item.
211
+ *
212
+ * @since 2.0
213
+ */
214
+ downloadPDF: 'Download PDF document',
215
+
216
+ /**
217
+ * Exporting module only. The text for the SVG download menu item.
218
+ *
219
+ * @since 2.0
220
+ */
221
+ downloadSVG: 'Download SVG vector image',
222
+
223
+ /**
224
+ * Exporting module menu. The tooltip title for the context menu holding
225
+ * print and export menu items.
226
+ *
227
+ * @since 3.0
228
+ */
229
+ contextButtonTitle: 'Chart context menu'
230
+
231
+ });
232
+
233
+ if (!defaultOptions.navigation) {
234
+ // Buttons and menus are collected in a separate config option set called
235
+ // 'navigation'. This can be extended later to add control buttons like
236
+ // zoom and pan right click menus.
237
+ /**
238
+ * A collection of options for buttons and menus appearing in the exporting
239
+ * module.
240
+ *
241
+ * @optionparent navigation
242
+ */
243
+ defaultOptions.navigation = {};
244
+ }
245
+ merge(true, defaultOptions.navigation, {
246
+
247
+ buttonOptions: {
248
+
249
+ theme: {},
250
+
251
+ /**
252
+ * Whether to enable buttons.
253
+ *
254
+ * @sample highcharts/navigation/buttonoptions-enabled/
255
+ * Exporting module loaded but buttons disabled
256
+ *
257
+ * @type {boolean}
258
+ * @default true
259
+ * @since 2.0
260
+ * @apioption navigation.buttonOptions.enabled
261
+ */
262
+
263
+ /**
264
+ * The pixel size of the symbol on the button.
265
+ *
266
+ * @sample highcharts/navigation/buttonoptions-height/
267
+ * Bigger buttons
268
+ *
269
+ * @since 2.0
270
+ */
271
+ symbolSize: 14,
272
+
273
+ /**
274
+ * The x position of the center of the symbol inside the button.
275
+ *
276
+ * @sample highcharts/navigation/buttonoptions-height/
277
+ * Bigger buttons
278
+ *
279
+ * @since 2.0
280
+ */
281
+ symbolX: 12.5,
282
+
283
+ /**
284
+ * The y position of the center of the symbol inside the button.
285
+ *
286
+ * @sample highcharts/navigation/buttonoptions-height/
287
+ * Bigger buttons
288
+ *
289
+ * @since 2.0
290
+ */
291
+ symbolY: 10.5,
292
+
293
+ /**
294
+ * Alignment for the buttons.
295
+ *
296
+ * @sample highcharts/navigation/buttonoptions-align/
297
+ * Center aligned
298
+ *
299
+ * @type {Highcharts.AlignType}
300
+ * @since 2.0
301
+ */
302
+ align: 'right',
303
+
304
+ /**
305
+ * The pixel spacing between buttons.
306
+ *
307
+ * @since 2.0
308
+ */
309
+ buttonSpacing: 3,
310
+
311
+ /**
312
+ * Pixel height of the buttons.
313
+ *
314
+ * @sample highcharts/navigation/buttonoptions-height/
315
+ * Bigger buttons
316
+ *
317
+ * @since 2.0
318
+ */
319
+ height: 22,
320
+
321
+ /**
322
+ * A text string to add to the individual button.
323
+ *
324
+ * @sample highcharts/exporting/buttons-text/
325
+ * Full text button
326
+ * @sample highcharts/exporting/buttons-text-symbol/
327
+ * Combined symbol and text
328
+ *
329
+ * @type {string}
330
+ * @default null
331
+ * @since 3.0
332
+ * @apioption navigation.buttonOptions.text
333
+ */
334
+
335
+ /**
336
+ * The vertical offset of the button's position relative to its
337
+ * `verticalAlign`.
338
+ *
339
+ * @sample highcharts/navigation/buttonoptions-verticalalign/
340
+ * Buttons at lower right
341
+ *
342
+ * @type {number}
343
+ * @default 0
344
+ * @since 2.0
345
+ * @apioption navigation.buttonOptions.y
346
+ */
347
+
348
+ /**
349
+ * The vertical alignment of the buttons. Can be one of "top", "middle"
350
+ * or "bottom".
351
+ *
352
+ * @sample highcharts/navigation/buttonoptions-verticalalign/
353
+ * Buttons at lower right
354
+ *
355
+ * @type {Highcharts.VerticalAlignType}
356
+ * @since 2.0
357
+ */
358
+ verticalAlign: 'top',
359
+
360
+ /**
361
+ * The pixel width of the button.
362
+ *
363
+ * @sample highcharts/navigation/buttonoptions-height/
364
+ * Bigger buttons
365
+ *
366
+ * @since 2.0
367
+ */
368
+ width: 24
369
+
370
+ }
371
+
372
+ });
373
+
374
+ // Presentational attributes
375
+ merge(true, defaultOptions.navigation
376
+ /**
377
+ * A collection of options for buttons and menus appearing in the exporting
378
+ * module.
379
+ *
380
+ * @optionparent navigation
381
+ */
382
+ , {
383
+
384
+ /**
385
+ * CSS styles for the popup menu appearing by default when the export
386
+ * icon is clicked. This menu is rendered in HTML.
387
+ *
388
+ * @see In styled mode, the menu is styled with the `.highcharts-menu`
389
+ * class.
390
+ *
391
+ * @sample highcharts/navigation/menustyle/
392
+ * Light gray menu background
393
+ *
394
+ * @type {Highcharts.CSSObject}
395
+ * @default {"border": "1px solid #999999", "background": "#ffffff", "padding": "5px 0"}
396
+ * @since 2.0
397
+ */
398
+ menuStyle: {
399
+ /** @ignore-option */
400
+ border: '1px solid #999999',
401
+ /** @ignore-option */
402
+ background: '#ffffff',
403
+ /** @ignore-option */
404
+ padding: '5px 0'
405
+ },
406
+
407
+ /**
408
+ * CSS styles for the individual items within the popup menu appearing
409
+ * by default when the export icon is clicked. The menu items are
410
+ * rendered in HTML. Font size defaults to `11px` on desktop and `14px`
411
+ * on touch devices.
412
+ *
413
+ * @see In styled mode, the menu items are styled with the
414
+ * `.highcharts-menu-item` class.
415
+ *
416
+ * @sample {highcharts} highcharts/navigation/menuitemstyle/
417
+ * Add a grey stripe to the left
418
+ *
419
+ * @type {Highcharts.CSSObject}
420
+ * @default {"padding": "0.5em 1em", "color": "#333333", "background": "none", "fontSize": "11px/14px", "transition": "background 250ms, color 250ms"}
421
+ * @since 2.0
422
+ */
423
+ menuItemStyle: {
424
+ /** @ignore-option */
425
+ padding: '0.5em 1em',
426
+ /** @ignore-option */
427
+ color: '#333333',
428
+ /** @ignore-option */
429
+ background: 'none',
430
+ /** @ignore-option */
431
+ fontSize: isTouchDevice ? '14px' : '11px',
432
+ /** @ignore-option */
433
+ transition: 'background 250ms, color 250ms'
434
+ },
435
+
436
+ /**
437
+ * CSS styles for the hover state of the individual items within the
438
+ * popup menu appearing by default when the export icon is clicked. The
439
+ * menu items are rendered in HTML.
440
+ *
441
+ * @see In styled mode, the menu items are styled with the
442
+ * `.highcharts-menu-item` class.
443
+ *
444
+ * @sample highcharts/navigation/menuitemhoverstyle/
445
+ * Bold text on hover
446
+ *
447
+ * @type {Highcharts.CSSObject}
448
+ * @default {"background": "#335cad", "color": "#ffffff"}
449
+ * @since 2.0
450
+ */
451
+ menuItemHoverStyle: {
452
+ /** @ignore-option */
453
+ background: '#335cad',
454
+ /** @ignore-option */
455
+ color: '#ffffff'
456
+ },
457
+
458
+ /**
459
+ * A collection of options for buttons appearing in the exporting
460
+ * module.
461
+ *
462
+ * In styled mode, the buttons are styled with the
463
+ * `.highcharts-contextbutton` and `.highcharts-button-symbol` classes.
464
+ */
465
+ buttonOptions: {
466
+
467
+ /**
468
+ * Fill color for the symbol within the button.
469
+ *
470
+ * @sample highcharts/navigation/buttonoptions-symbolfill/
471
+ * Blue symbol stroke for one of the buttons
472
+ *
473
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
474
+ * @since 2.0
475
+ */
476
+ symbolFill: '#666666',
477
+
478
+ /**
479
+ * The color of the symbol's stroke or line.
480
+ *
481
+ * @sample highcharts/navigation/buttonoptions-symbolstroke/
482
+ * Blue symbol stroke
483
+ *
484
+ * @type {Highcharts.ColorString}
485
+ * @since 2.0
486
+ */
487
+ symbolStroke: '#666666',
488
+
489
+ /**
490
+ * The pixel stroke width of the symbol on the button.
491
+ *
492
+ * @sample highcharts/navigation/buttonoptions-height/
493
+ * Bigger buttons
494
+ *
495
+ * @since 2.0
496
+ */
497
+ symbolStrokeWidth: 3,
498
+
499
+ /**
500
+ * A configuration object for the button theme. The object accepts
501
+ * SVG properties like `stroke-width`, `stroke` and `fill`.
502
+ * Tri-state button styles are supported by the `states.hover` and
503
+ * `states.select` objects.
504
+ *
505
+ * @sample highcharts/navigation/buttonoptions-theme/
506
+ * Theming the buttons
507
+ *
508
+ * @since 3.0
509
+ */
510
+ theme: {
511
+
512
+ /**
513
+ * The default fill exists only to capture hover events.
514
+ *
515
+ * @type {Highcharts.ColorString|Highcharts.GradientColorObject|Highcharts.PatternObject}
516
+ * @default #ffffff
517
+ * @apioption navigation.buttonOptions.theme.fill
518
+ */
519
+
520
+ /**
521
+ * Default stroke for the buttons.
522
+ * @type {Highcharts.ColorString}
523
+ * @default none
524
+ * @apioption navigation.buttonOptions.theme.stroke
525
+ */
526
+
527
+ /**
528
+ * Padding for the button.
529
+ */
530
+ padding: 5
531
+
532
+ }
533
+
534
+ }
535
+
536
+ });
537
+
538
+
539
+ // Add the export related options
540
+
541
+ /**
542
+ * Options for the exporting module. For an overview on the matter, see
543
+ * [the docs](https://www.highcharts.com/docs/export-module/export-module-overview).
544
+ *
545
+ * @optionparent exporting
546
+ */
547
+ defaultOptions.exporting = {
548
+
549
+ /**
550
+ * Experimental setting to allow HTML inside the chart (added through
551
+ * the `useHTML` options), directly in the exported image. This allows
552
+ * you to preserve complicated HTML structures like tables or bi-directional
553
+ * text in exported charts.
554
+ *
555
+ * Disclaimer: The HTML is rendered in a `foreignObject` tag in the
556
+ * generated SVG. The official export server is based on PhantomJS,
557
+ * which supports this, but other SVG clients, like Batik, does not
558
+ * support it. This also applies to downloaded SVG that you want to
559
+ * open in a desktop client.
560
+ *
561
+ * @type {boolean}
562
+ * @default false
563
+ * @since 4.1.8
564
+ * @apioption exporting.allowHTML
565
+ */
566
+
567
+ /**
568
+ * Additional chart options to be merged into an exported chart. For
569
+ * example, a common use case is to add data labels to improve readability
570
+ * of the exported chart, or to add a printer-friendly color scheme.
571
+ *
572
+ * @sample {highcharts} highcharts/exporting/chartoptions-data-labels/
573
+ * Added data labels
574
+ * @sample {highstock} highcharts/exporting/chartoptions-data-labels/
575
+ * Added data labels
576
+ *
577
+ * @type {Highcharts.Options}
578
+ * @apioption exporting.chartOptions
579
+ */
580
+
581
+ /**
582
+ * Whether to enable the exporting module. Disabling the module will
583
+ * hide the context button, but API methods will still be available.
584
+ *
585
+ * @sample {highcharts} highcharts/exporting/enabled-false/
586
+ * Exporting module is loaded but disabled
587
+ * @sample {highstock} highcharts/exporting/enabled-false/
588
+ * Exporting module is loaded but disabled
589
+ *
590
+ * @type {boolean}
591
+ * @default true
592
+ * @since 2.0
593
+ * @apioption exporting.enabled
594
+ */
595
+
596
+ /**
597
+ * Function to call if the offline-exporting module fails to export
598
+ * a chart on the client side, and [fallbackToExportServer](
599
+ * #exporting.fallbackToExportServer) is disabled. If left undefined, an
600
+ * exception is thrown instead. Receives two parameters, the exporting
601
+ * options, and the error from the module.
602
+ *
603
+ * @see [fallbackToExportServer](#exporting.fallbackToExportServer)
604
+ *
605
+ * @type {Highcharts.ExportingErrorCallbackFunction}
606
+ * @since 5.0.0
607
+ * @apioption exporting.error
608
+ */
609
+
610
+ /**
611
+ * Whether or not to fall back to the export server if the offline-exporting
612
+ * module is unable to export the chart on the client side. This happens for
613
+ * certain browsers, and certain features (e.g.
614
+ * [allowHTML](#exporting.allowHTML)), depending on the image type exporting
615
+ * to. For very complex charts, it is possible that export can fail in
616
+ * browsers that don't support Blob objects, due to data URL length limits.
617
+ * It is recommended to define the [exporting.error](#exporting.error)
618
+ * handler if disabling fallback, in order to notify users in case export
619
+ * fails.
620
+ *
621
+ * @type {boolean}
622
+ * @default true
623
+ * @since 4.1.8
624
+ * @apioption exporting.fallbackToExportServer
625
+ */
626
+
627
+ /**
628
+ * The filename, without extension, to use for the exported chart.
629
+ *
630
+ * @sample {highcharts} highcharts/exporting/filename/
631
+ * Custom file name
632
+ * @sample {highstock} highcharts/exporting/filename/
633
+ * Custom file name
634
+ *
635
+ * @type {string}
636
+ * @default chart
637
+ * @since 2.0
638
+ * @apioption exporting.filename
639
+ */
640
+
641
+ /**
642
+ * An object containing additional key value data for the POST form that
643
+ * sends the SVG to the export server. For example, a `target` can be set to
644
+ * make sure the generated image is received in another frame, or a custom
645
+ * `enctype` or `encoding` can be set.
646
+ *
647
+ * @type {*}
648
+ * @since 3.0.8
649
+ * @apioption exporting.formAttributes
650
+ */
651
+
652
+ /**
653
+ * Path where Highcharts will look for export module dependencies to
654
+ * load on demand if they don't already exist on `window`. Should currently
655
+ * point to location of [CanVG](https://github.com/canvg/canvg) library,
656
+ * [RGBColor.js](https://github.com/canvg/canvg),
657
+ * [jsPDF](https://github.com/yWorks/jsPDF) and
658
+ * [svg2pdf.js](https://github.com/yWorks/svg2pdf.js), required for client
659
+ * side export in certain browsers.
660
+ *
661
+ * @type {string}
662
+ * @default https://code.highcharts.com/{version}/lib
663
+ * @since 5.0.0
664
+ * @apioption exporting.libURL
665
+ */
666
+
667
+ /**
668
+ * Analogous to [sourceWidth](#exporting.sourceWidth).
669
+ *
670
+ * @type {number}
671
+ * @since 3.0
672
+ * @apioption exporting.sourceHeight
673
+ */
674
+
675
+ /**
676
+ * The width of the original chart when exported, unless an explicit
677
+ * [chart.width](#chart.width) is set, or a pixel width is set on the
678
+ * container. The width exported raster image is then multiplied by
679
+ * [scale](#exporting.scale).
680
+ *
681
+ * @sample {highcharts} highcharts/exporting/sourcewidth/
682
+ * Source size demo
683
+ * @sample {highstock} highcharts/exporting/sourcewidth/
684
+ * Source size demo
685
+ * @sample {highmaps} maps/exporting/sourcewidth/
686
+ * Source size demo
687
+ *
688
+ * @type {number}
689
+ * @since 3.0
690
+ * @apioption exporting.sourceWidth
691
+ */
692
+
693
+ /**
694
+ * The pixel width of charts exported to PNG or JPG. As of Highcharts
695
+ * 3.0, the default pixel width is a function of the [chart.width](
696
+ * #chart.width) or [exporting.sourceWidth](#exporting.sourceWidth) and the
697
+ * [exporting.scale](#exporting.scale).
698
+ *
699
+ * @sample {highcharts} highcharts/exporting/width/
700
+ * Export to 200px wide images
701
+ * @sample {highstock} highcharts/exporting/width/
702
+ * Export to 200px wide images
703
+ *
704
+ * @type {number}
705
+ * @since 2.0
706
+ * @apioption exporting.width
707
+ */
708
+
709
+ /**
710
+ * Default MIME type for exporting if `chart.exportChart()` is called
711
+ * without specifying a `type` option. Possible values are `image/png`,
712
+ * `image/jpeg`, `application/pdf` and `image/svg+xml`.
713
+ *
714
+ * @since 2.0
715
+ * @validvalue ["image/png", "image/jpeg", "application/pdf", "image/svg+xml"]
716
+ */
717
+ type: 'image/png',
718
+
719
+ /**
720
+ * The URL for the server module converting the SVG string to an image
721
+ * format. By default this points to Highchart's free web service.
722
+ *
723
+ * @since 2.0
724
+ */
725
+ url: 'https://export.highcharts.com/',
726
+
727
+ /**
728
+ * When printing the chart from the menu item in the burger menu, if
729
+ * the on-screen chart exceeds this width, it is resized. After printing
730
+ * or cancelled, it is restored. The default width makes the chart
731
+ * fit into typical paper format. Note that this does not affect the
732
+ * chart when printing the web page as a whole.
733
+ *
734
+ * @since 4.2.5
735
+ */
736
+ printMaxWidth: 780,
737
+
738
+ /**
739
+ * Defines the scale or zoom factor for the exported image compared
740
+ * to the on-screen display. While for instance a 600px wide chart
741
+ * may look good on a website, it will look bad in print. The default
742
+ * scale of 2 makes this chart export to a 1200px PNG or JPG.
743
+ *
744
+ * @see [chart.width](#chart.width)
745
+ * @see [exporting.sourceWidth](#exporting.sourceWidth)
746
+ *
747
+ * @sample {highcharts} highcharts/exporting/scale/
748
+ * Scale demonstrated
749
+ * @sample {highstock} highcharts/exporting/scale/
750
+ * Scale demonstrated
751
+ * @sample {highmaps} maps/exporting/scale/
752
+ * Scale demonstrated
753
+ *
754
+ * @since 3.0
755
+ */
756
+ scale: 2,
757
+
758
+ /**
759
+ * Options for the export related buttons, print and export. In addition
760
+ * to the default buttons listed here, custom buttons can be added.
761
+ * See [navigation.buttonOptions](#navigation.buttonOptions) for general
762
+ * options.
763
+ *
764
+ * @type {Highcharts.Dictionary<Highcharts.ExportingButtonsContextButtonOptions>}
765
+ */
766
+ buttons: {
767
+
768
+ /**
769
+ * Options for the export button.
770
+ *
771
+ * In styled mode, export button styles can be applied with the
772
+ * `.highcharts-contextbutton` class.
773
+ *
774
+ * @extends navigation.buttonOptions
775
+ */
776
+ contextButton: {
777
+
778
+ /**
779
+ * A click handler callback to use on the button directly instead of
780
+ * the popup menu.
781
+ *
782
+ * @sample highcharts/exporting/buttons-contextbutton-onclick/
783
+ * Skip the menu and export the chart directly
784
+ *
785
+ * @type {Function}
786
+ * @since 2.0
787
+ * @apioption exporting.buttons.contextButton.onclick
788
+ */
789
+
790
+ /**
791
+ * See [navigation.buttonOptions.symbolFill](
792
+ * #navigation.buttonOptions.symbolFill).
793
+ *
794
+ * @type {Highcharts.ColorString}
795
+ * @default #666666
796
+ * @since 2.0
797
+ * @apioption exporting.buttons.contextButton.symbolFill
798
+ */
799
+
800
+ /**
801
+ * The horizontal position of the button relative to the `align`
802
+ * option.
803
+ *
804
+ * @type {number}
805
+ * @default -10
806
+ * @since 2.0
807
+ * @apioption exporting.buttons.contextButton.x
808
+ */
809
+
810
+ /**
811
+ * The class name of the context button.
812
+ */
813
+ className: 'highcharts-contextbutton',
814
+
815
+ /**
816
+ * The class name of the menu appearing from the button.
817
+ */
818
+ menuClassName: 'highcharts-contextmenu',
819
+
820
+ /**
821
+ * The symbol for the button. Points to a definition function in
822
+ * the `Highcharts.Renderer.symbols` collection. The default
823
+ * `exportIcon` function is part of the exporting module. Possible
824
+ * values are "circle", "square", "diamond", "triangle",
825
+ * "triangle-down", "menu", "menuball" or custom shape.
826
+ *
827
+ * @sample highcharts/exporting/buttons-contextbutton-symbol/
828
+ * Use a circle for symbol
829
+ * @sample highcharts/exporting/buttons-contextbutton-symbol-custom/
830
+ * Custom shape as symbol
831
+ *
832
+ * @since 2.0
833
+ * @validvalue ["menu", "menuball", "exportIcon", "circle", "square", "diamond", "triangle", "triangle-down"]
834
+ */
835
+ symbol: 'menu',
836
+
837
+ /**
838
+ * The key to a [lang](#lang) option setting that is used for the
839
+ * button's title tooltip. When the key is `contextButtonTitle`, it
840
+ * refers to [lang.contextButtonTitle](#lang.contextButtonTitle)
841
+ * that defaults to "Chart context menu".
842
+ *
843
+ * @since 6.1.4
844
+ */
845
+ titleKey: 'contextButtonTitle',
846
+
847
+ /**
848
+ * This option is deprecated, use
849
+ * [titleKey](#exporting.buttons.contextButton.titleKey) instead.
850
+ *
851
+ * @deprecated
852
+ * @type {string}
853
+ * @apioption exporting.buttons.contextButton._titleKey
854
+ */
855
+
856
+ /**
857
+ * A collection of strings pointing to config options for the menu
858
+ * items. The config options are defined in the
859
+ * `menuItemDefinitions` option.
860
+ *
861
+ * By default, there is the "Print" menu item plus one menu item
862
+ * for each of the available export types.
863
+ *
864
+ * @sample {highcharts} highcharts/exporting/menuitemdefinitions/
865
+ * Menu item definitions
866
+ * @sample {highstock} highcharts/exporting/menuitemdefinitions/
867
+ * Menu item definitions
868
+ * @sample {highmaps} highcharts/exporting/menuitemdefinitions/
869
+ * Menu item definitions
870
+ *
871
+ * @type {Array<string>}
872
+ * @default ["printChart", "separator", "downloadPNG", "downloadJPEG", "downloadPDF", "downloadSVG"]
873
+ * @since 2.0
874
+ */
875
+ menuItems: [
876
+ 'printChart',
877
+ 'separator',
878
+ 'downloadPNG',
879
+ 'downloadJPEG',
880
+ 'downloadPDF',
881
+ 'downloadSVG'
882
+ ]
883
+
884
+ }
885
+
886
+ },
887
+ /**
888
+ * An object consisting of definitions for the menu items in the context
889
+ * menu. Each key value pair has a `key` that is referenced in the
890
+ * [menuItems](#exporting.buttons.contextButton.menuItems) setting,
891
+ * and a `value`, which is an object with the following properties:
892
+ *
893
+ * - **onclick:** The click handler for the menu item
894
+ *
895
+ * - **text:** The text for the menu item
896
+ *
897
+ * - **textKey:** If internationalization is required, the key to a language
898
+ * string
899
+ *
900
+ * @sample {highcharts} highcharts/exporting/menuitemdefinitions/
901
+ * Menu item definitions
902
+ * @sample {highstock} highcharts/exporting/menuitemdefinitions/
903
+ * Menu item definitions
904
+ * @sample {highmaps} highcharts/exporting/menuitemdefinitions/
905
+ * Menu item definitions
906
+ *
907
+ * @type {Highcharts.Dictionary<Highcharts.ExportingMenuObject>}
908
+ * @default {"printChart": {}, "separator": {}, "downloadPNG": {}, "downloadJPEG": {}, "downloadPDF": {}, "downloadSVG": {}}
909
+ * @since 5.0.13
910
+ */
911
+ menuItemDefinitions: {
912
+
913
+ /**
914
+ * @ignore
915
+ */
916
+ printChart: {
917
+ textKey: 'printChart',
918
+ onclick: function () {
919
+ this.print();
920
+ }
921
+ },
922
+
923
+ /**
924
+ * @ignore
925
+ */
926
+ separator: {
927
+ separator: true
928
+ },
929
+
930
+ /**
931
+ * @ignore
932
+ */
933
+ downloadPNG: {
934
+ textKey: 'downloadPNG',
935
+ onclick: function () {
936
+ this.exportChart();
937
+ }
938
+ },
939
+
940
+ /**
941
+ * @ignore
942
+ */
943
+ downloadJPEG: {
944
+ textKey: 'downloadJPEG',
945
+ onclick: function () {
946
+ this.exportChart({
947
+ type: 'image/jpeg'
948
+ });
949
+ }
950
+ },
951
+
952
+ /**
953
+ * @ignore
954
+ */
955
+ downloadPDF: {
956
+ textKey: 'downloadPDF',
957
+ onclick: function () {
958
+ this.exportChart({
959
+ type: 'application/pdf'
960
+ });
961
+ }
962
+ },
963
+
964
+ /**
965
+ * @ignore
966
+ */
967
+ downloadSVG: {
968
+ textKey: 'downloadSVG',
969
+ onclick: function () {
970
+ this.exportChart({
971
+ type: 'image/svg+xml'
972
+ });
973
+ }
974
+ }
975
+
976
+ }
977
+
978
+ };
979
+
980
+ /**
981
+ * Fires after a chart is printed through the context menu item or the
982
+ * `Chart.print` method. Requires the exporting module.
983
+ *
984
+ * @sample highcharts/chart/events-beforeprint-afterprint/
985
+ * Rescale the chart to print
986
+ *
987
+ * @type {Highcharts.ExportingAfterPrintCallbackFunction}
988
+ * @since 4.1.0
989
+ * @context Highcharts.Chart
990
+ * @apioption chart.events.afterPrint
991
+ */
992
+
993
+ /**
994
+ * Fires before a chart is printed through the context menu item or
995
+ * the `Chart.print` method. Requires the exporting module.
996
+ *
997
+ * @sample highcharts/chart/events-beforeprint-afterprint/
998
+ * Rescale the chart to print
999
+ *
1000
+ * @type {Highcharts.ExportingBeforePrintCallbackFunction}
1001
+ * @since 4.1.0
1002
+ * @context Highcharts.Chart
1003
+ * @apioption chart.events.beforePrint
1004
+ */
1005
+
1006
+ /**
1007
+ * The post utility
1008
+ *
1009
+ * @private
1010
+ * @function Highcharts.post
1011
+ *
1012
+ * @param {string} url
1013
+ *
1014
+ * @param {*} data
1015
+ *
1016
+ * @param {*} formAttributes
1017
+ */
1018
+ H.post = function (url, data, formAttributes) {
1019
+ // create the form
1020
+ var form = createElement('form', merge({
1021
+ method: 'post',
1022
+ action: url,
1023
+ enctype: 'multipart/form-data'
1024
+ }, formAttributes), {
1025
+ display: 'none'
1026
+ }, doc.body);
1027
+
1028
+ // add the data
1029
+ objectEach(data, function (val, name) {
1030
+ createElement('input', {
1031
+ type: 'hidden',
1032
+ name: name,
1033
+ value: val
1034
+ }, null, form);
1035
+ });
1036
+
1037
+ // submit
1038
+ form.submit();
1039
+
1040
+ // clean up
1041
+ discardElement(form);
1042
+ };
1043
+
1044
+ extend(Chart.prototype, /** @lends Highcharts.Chart.prototype */ {
1045
+
1046
+ /**
1047
+ * Exporting module only. A collection of fixes on the produced SVG to
1048
+ * account for expando properties, browser bugs, VML problems and other.
1049
+ * Returns a cleaned SVG.
1050
+ *
1051
+ * @private
1052
+ * @function Highcharts.Chart#sanitizeSVG
1053
+ *
1054
+ * @param {string} svg
1055
+ *
1056
+ * @param {Highcharts.Options} options
1057
+ *
1058
+ * @return {string}
1059
+ */
1060
+ sanitizeSVG: function (svg, options) {
1061
+ // Move HTML into a foreignObject
1062
+ if (options && options.exporting && options.exporting.allowHTML) {
1063
+ var html = svg.match(/<\/svg>(.*?$)/);
1064
+
1065
+ if (html && html[1]) {
1066
+ html = '<foreignObject x="0" y="0" ' +
1067
+ 'width="' + options.chart.width + '" ' +
1068
+ 'height="' + options.chart.height + '">' +
1069
+ '<body xmlns="http://www.w3.org/1999/xhtml">' +
1070
+ html[1] +
1071
+ '</body>' +
1072
+ '</foreignObject>';
1073
+ svg = svg.replace('</svg>', html + '</svg>');
1074
+ }
1075
+ }
1076
+
1077
+ svg = svg
1078
+ .replace(/zIndex="[^"]+"/g, '')
1079
+ .replace(/symbolName="[^"]+"/g, '')
1080
+ .replace(/jQuery[0-9]+="[^"]+"/g, '')
1081
+ .replace(/url\(("|&quot;)(\S+)("|&quot;)\)/g, 'url($2)')
1082
+ .replace(/url\([^#]+#/g, 'url(#')
1083
+ .replace(
1084
+ /<svg /,
1085
+ '<svg xmlns:xlink="http://www.w3.org/1999/xlink" '
1086
+ )
1087
+ .replace(/ (|NS[0-9]+\:)href=/g, ' xlink:href=') // #3567
1088
+ .replace(/\n/, ' ')
1089
+ // Any HTML added to the container after the SVG (#894)
1090
+ .replace(/<\/svg>.*?$/, '</svg>')
1091
+ // Batik doesn't support rgba fills and strokes (#3095)
1092
+ .replace(
1093
+ /(fill|stroke)="rgba\(([ 0-9]+,[ 0-9]+,[ 0-9]+),([ 0-9\.]+)\)"/g, // eslint-disable-line max-len
1094
+ '$1="rgb($2)" $1-opacity="$3"'
1095
+ )
1096
+
1097
+ // Replace HTML entities, issue #347
1098
+ .replace(/&nbsp;/g, '\u00A0') // no-break space
1099
+ .replace(/&shy;/g, '\u00AD'); // soft hyphen
1100
+
1101
+ // Further sanitize for oldIE
1102
+ if (this.ieSanitizeSVG) {
1103
+ svg = this.ieSanitizeSVG(svg);
1104
+ }
1105
+
1106
+ return svg;
1107
+ },
1108
+
1109
+ /**
1110
+ * Return the unfiltered innerHTML of the chart container. Used as hook for
1111
+ * plugins. In styled mode, it also takes care of inlining CSS style rules.
1112
+ *
1113
+ * @see Chart#getSVG
1114
+ *
1115
+ * @function Highcharts.Chart#getChartHTML
1116
+ *
1117
+ * @returns {string}
1118
+ * The unfiltered SVG of the chart.
1119
+ */
1120
+ getChartHTML: function () {
1121
+ if (this.styledMode) {
1122
+ this.inlineStyles();
1123
+ }
1124
+
1125
+ return this.container.innerHTML;
1126
+ },
1127
+
1128
+ /**
1129
+ * Return an SVG representation of the chart.
1130
+ *
1131
+ * @sample highcharts/members/chart-getsvg/
1132
+ * View the SVG from a button
1133
+ *
1134
+ * @function Highcharts.Chart#getSVG
1135
+ *
1136
+ * @param {Highcharts.Options} chartOptions
1137
+ * Additional chart options for the generated SVG representation. For
1138
+ * collections like `xAxis`, `yAxis` or `series`, the additional
1139
+ * options is either merged in to the orininal item of the same
1140
+ * `id`, or to the first item if a common id is not found.
1141
+ *
1142
+ * @return {string}
1143
+ * The SVG representation of the rendered chart.
1144
+ *
1145
+ * @fires Highcharts.Chart#event:getSVG
1146
+ */
1147
+ getSVG: function (chartOptions) {
1148
+ var chart = this,
1149
+ chartCopy,
1150
+ sandbox,
1151
+ svg,
1152
+ seriesOptions,
1153
+ sourceWidth,
1154
+ sourceHeight,
1155
+ cssWidth,
1156
+ cssHeight,
1157
+ // Copy the options and add extra options
1158
+ options = merge(chart.options, chartOptions);
1159
+
1160
+
1161
+ // create a sandbox where a new chart will be generated
1162
+ sandbox = createElement('div', null, {
1163
+ position: 'absolute',
1164
+ top: '-9999em',
1165
+ width: chart.chartWidth + 'px',
1166
+ height: chart.chartHeight + 'px'
1167
+ }, doc.body);
1168
+
1169
+ // get the source size
1170
+ cssWidth = chart.renderTo.style.width;
1171
+ cssHeight = chart.renderTo.style.height;
1172
+ sourceWidth = options.exporting.sourceWidth ||
1173
+ options.chart.width ||
1174
+ (/px$/.test(cssWidth) && parseInt(cssWidth, 10)) ||
1175
+ (options.isGantt ? 800 : 600);
1176
+ sourceHeight = options.exporting.sourceHeight ||
1177
+ options.chart.height ||
1178
+ (/px$/.test(cssHeight) && parseInt(cssHeight, 10)) ||
1179
+ 400;
1180
+
1181
+ // override some options
1182
+ extend(options.chart, {
1183
+ animation: false,
1184
+ renderTo: sandbox,
1185
+ forExport: true,
1186
+ renderer: 'SVGRenderer',
1187
+ width: sourceWidth,
1188
+ height: sourceHeight
1189
+ });
1190
+ options.exporting.enabled = false; // hide buttons in print
1191
+ delete options.data; // #3004
1192
+
1193
+ // prepare for replicating the chart
1194
+ options.series = [];
1195
+ chart.series.forEach(function (serie) {
1196
+ seriesOptions = merge(serie.userOptions, { // #4912
1197
+ animation: false, // turn off animation
1198
+ enableMouseTracking: false,
1199
+ showCheckbox: false,
1200
+ visible: serie.visible
1201
+ });
1202
+
1203
+ // Used for the navigator series that has its own option set
1204
+ if (!seriesOptions.isInternal) {
1205
+ options.series.push(seriesOptions);
1206
+ }
1207
+ });
1208
+
1209
+ // Assign an internal key to ensure a one-to-one mapping (#5924)
1210
+ chart.axes.forEach(function (axis) {
1211
+ if (!axis.userOptions.internalKey) { // #6444
1212
+ axis.userOptions.internalKey = H.uniqueKey();
1213
+ }
1214
+ });
1215
+
1216
+ // generate the chart copy
1217
+ chartCopy = new H.Chart(options, chart.callback);
1218
+
1219
+ // Axis options and series options (#2022, #3900, #5982)
1220
+ if (chartOptions) {
1221
+ ['xAxis', 'yAxis', 'series'].forEach(function (coll) {
1222
+ var collOptions = {};
1223
+
1224
+ if (chartOptions[coll]) {
1225
+ collOptions[coll] = chartOptions[coll];
1226
+ chartCopy.update(collOptions);
1227
+ }
1228
+ });
1229
+ }
1230
+
1231
+ // Reflect axis extremes in the export (#5924)
1232
+ chart.axes.forEach(function (axis) {
1233
+ var axisCopy = H.find(chartCopy.axes, function (copy) {
1234
+ return copy.options.internalKey ===
1235
+ axis.userOptions.internalKey;
1236
+ }),
1237
+ extremes = axis.getExtremes(),
1238
+ userMin = extremes.userMin,
1239
+ userMax = extremes.userMax;
1240
+
1241
+ if (
1242
+ axisCopy &&
1243
+ (
1244
+ (userMin !== undefined && userMin !== axisCopy.min) ||
1245
+ (userMax !== undefined && userMax !== axisCopy.max)
1246
+ )
1247
+ ) {
1248
+ axisCopy.setExtremes(userMin, userMax, true, false);
1249
+ }
1250
+ });
1251
+
1252
+ // Get the SVG from the container's innerHTML
1253
+ svg = chartCopy.getChartHTML();
1254
+ fireEvent(this, 'getSVG', { chartCopy: chartCopy });
1255
+
1256
+ svg = chart.sanitizeSVG(svg, options);
1257
+
1258
+ // free up memory
1259
+ options = null;
1260
+ chartCopy.destroy();
1261
+ discardElement(sandbox);
1262
+
1263
+ return svg;
1264
+ },
1265
+
1266
+ /**
1267
+ * @private
1268
+ * @function Highcharts.Chart#getSVGForExport
1269
+ *
1270
+ * @param {Highcharts.ExportingOptions} options
1271
+ *
1272
+ * @param {Highcharts.Options} chartOptions
1273
+ *
1274
+ * @return {string}
1275
+ */
1276
+ getSVGForExport: function (options, chartOptions) {
1277
+ var chartExportingOptions = this.options.exporting;
1278
+
1279
+ return this.getSVG(merge(
1280
+ { chart: { borderRadius: 0 } },
1281
+ chartExportingOptions.chartOptions,
1282
+ chartOptions,
1283
+ {
1284
+ exporting: {
1285
+ sourceWidth: (
1286
+ (options && options.sourceWidth) ||
1287
+ chartExportingOptions.sourceWidth
1288
+ ),
1289
+ sourceHeight: (
1290
+ (options && options.sourceHeight) ||
1291
+ chartExportingOptions.sourceHeight
1292
+ )
1293
+ }
1294
+ }
1295
+ ));
1296
+ },
1297
+
1298
+ /**
1299
+ * Get the default file name used for exported charts. By default it creates
1300
+ * a file name based on the chart title.
1301
+ *
1302
+ * @function Highcharts.Chart#getFilename
1303
+ *
1304
+ * @return {string} A file name without extension.
1305
+ */
1306
+ getFilename: function () {
1307
+ var s = this.userOptions.title && this.userOptions.title.text,
1308
+ filename = this.options.exporting.filename;
1309
+
1310
+ if (filename) {
1311
+ return filename;
1312
+ }
1313
+
1314
+ if (typeof s === 'string') {
1315
+ filename = s
1316
+ .toLowerCase()
1317
+ .replace(/<\/?[^>]+(>|$)/g, '') // strip HTML tags
1318
+ .replace(/[\s_]+/g, '-')
1319
+ .replace(/[^a-z0-9\-]/g, '') // preserve only latin
1320
+ .replace(/^[\-]+/g, '') // dashes in the start
1321
+ .replace(/[\-]+/g, '-') // dashes in a row
1322
+ .substr(0, 24)
1323
+ .replace(/[\-]+$/g, ''); // dashes in the end;
1324
+ }
1325
+
1326
+ if (!filename || filename.length < 5) {
1327
+ filename = 'chart';
1328
+ }
1329
+ return filename;
1330
+ },
1331
+
1332
+ /**
1333
+ * Exporting module required. Submit an SVG version of the chart to a server
1334
+ * along with some parameters for conversion.
1335
+ *
1336
+ * @sample highcharts/members/chart-exportchart/
1337
+ * Export with no options
1338
+ * @sample highcharts/members/chart-exportchart-filename/
1339
+ * PDF type and custom filename
1340
+ * @sample highcharts/members/chart-exportchart-custom-background/
1341
+ * Different chart background in export
1342
+ * @sample stock/members/chart-exportchart/
1343
+ * Export with Highstock
1344
+ *
1345
+ * @function Highcharts.Chart#exportChart
1346
+ *
1347
+ * @param {Highcharts.ExportingOptions} exportingOptions
1348
+ * Exporting options in addition to those defined in
1349
+ * [exporting](https://api.highcharts.com/highcharts/exporting).
1350
+ *
1351
+ * @param {Highcharts.Options} chartOptions
1352
+ * Additional chart options for the exported chart. For example a
1353
+ * different background color can be added here, or `dataLabels` for
1354
+ * export only.
1355
+ */
1356
+ exportChart: function (exportingOptions, chartOptions) {
1357
+
1358
+ var svg = this.getSVGForExport(exportingOptions, chartOptions);
1359
+
1360
+ // merge the options
1361
+ exportingOptions = merge(this.options.exporting, exportingOptions);
1362
+
1363
+ // do the post
1364
+ H.post(exportingOptions.url, {
1365
+ filename: exportingOptions.filename || this.getFilename(),
1366
+ type: exportingOptions.type,
1367
+ // IE8 fails to post undefined correctly, so use 0
1368
+ width: exportingOptions.width || 0,
1369
+ scale: exportingOptions.scale,
1370
+ svg: svg
1371
+ }, exportingOptions.formAttributes);
1372
+
1373
+ },
1374
+
1375
+ /**
1376
+ * Exporting module required. Clears away other elements in the page and
1377
+ * prints the chart as it is displayed. By default, when the exporting
1378
+ * module is enabled, a context button with a drop down menu in the upper
1379
+ * right corner accesses this function.
1380
+ *
1381
+ * @sample highcharts/members/chart-print/
1382
+ * Print from a HTML button
1383
+ *
1384
+ * @function Highcharts.Chart#print
1385
+ *
1386
+ * @fires Highcharts.Chart#event:beforePrint
1387
+ * @fires Highcharts.Chart#event:afterPrint
1388
+ */
1389
+ print: function () {
1390
+
1391
+ var chart = this,
1392
+ origDisplay = [],
1393
+ body = doc.body,
1394
+ childNodes = body.childNodes,
1395
+ printMaxWidth = chart.options.exporting.printMaxWidth,
1396
+ resetParams,
1397
+ handleMaxWidth;
1398
+
1399
+ // Move the chart container(s) to another div
1400
+ function moveContainers(moveTo) {
1401
+ (
1402
+ chart.fixedDiv ? // When scrollablePlotArea is active (#9533)
1403
+ [chart.fixedDiv, chart.scrollingContainer] :
1404
+ [chart.container]
1405
+
1406
+ ).forEach(function (div) {
1407
+ moveTo.appendChild(div);
1408
+ });
1409
+ }
1410
+
1411
+ if (chart.isPrinting) { // block the button while in printing mode
1412
+ return;
1413
+ }
1414
+
1415
+ chart.isPrinting = true;
1416
+ chart.pointer.reset(null, 0);
1417
+
1418
+ fireEvent(chart, 'beforePrint');
1419
+
1420
+ // Handle printMaxWidth
1421
+ handleMaxWidth = printMaxWidth && chart.chartWidth > printMaxWidth;
1422
+ if (handleMaxWidth) {
1423
+ resetParams = [chart.options.chart.width, undefined, false];
1424
+ chart.setSize(printMaxWidth, undefined, false);
1425
+ }
1426
+
1427
+ // hide all body content
1428
+ childNodes.forEach(function (node, i) {
1429
+ if (node.nodeType === 1) {
1430
+ origDisplay[i] = node.style.display;
1431
+ node.style.display = 'none';
1432
+ }
1433
+ });
1434
+
1435
+ // pull out the chart
1436
+ moveContainers(body);
1437
+
1438
+ // Give the browser time to draw WebGL content, an issue that randomly
1439
+ // appears (at least) in Chrome ~67 on the Mac (#8708).
1440
+ setTimeout(function () {
1441
+
1442
+ win.focus(); // #1510
1443
+ win.print();
1444
+
1445
+ // allow the browser to prepare before reverting
1446
+ setTimeout(function () {
1447
+
1448
+ // put the chart back in
1449
+ moveContainers(chart.renderTo);
1450
+
1451
+ // restore all body content
1452
+ childNodes.forEach(function (node, i) {
1453
+ if (node.nodeType === 1) {
1454
+ node.style.display = origDisplay[i];
1455
+ }
1456
+ });
1457
+
1458
+ chart.isPrinting = false;
1459
+
1460
+ // Reset printMaxWidth
1461
+ if (handleMaxWidth) {
1462
+ chart.setSize.apply(chart, resetParams);
1463
+ }
1464
+
1465
+ fireEvent(chart, 'afterPrint');
1466
+
1467
+ }, 1000);
1468
+ }, 1);
1469
+
1470
+ },
1471
+
1472
+ /**
1473
+ * Display a popup menu for choosing the export type.
1474
+ *
1475
+ * @private
1476
+ * @function Highcharts.Chart#contextMenu
1477
+ *
1478
+ * @param {string} className
1479
+ * An identifier for the menu.
1480
+ *
1481
+ * @param {Array<string|Highcharts.ExportingMenuObject>} items
1482
+ * A collection with text and onclicks for the items.
1483
+ *
1484
+ * @param {number} x
1485
+ * The x position of the opener button
1486
+ *
1487
+ * @param {number} y
1488
+ * The y position of the opener button
1489
+ *
1490
+ * @param {number} width
1491
+ * The width of the opener button
1492
+ *
1493
+ * @param {number} height
1494
+ * The height of the opener button
1495
+ */
1496
+ contextMenu: function (className, items, x, y, width, height, button) {
1497
+ var chart = this,
1498
+ navOptions = chart.options.navigation,
1499
+ chartWidth = chart.chartWidth,
1500
+ chartHeight = chart.chartHeight,
1501
+ cacheName = 'cache-' + className,
1502
+ menu = chart[cacheName],
1503
+ menuPadding = Math.max(width, height), // for mouse leave detection
1504
+ innerMenu,
1505
+ menuStyle;
1506
+
1507
+ // create the menu only the first time
1508
+ if (!menu) {
1509
+
1510
+ // create a HTML element above the SVG
1511
+ chart.exportContextMenu = chart[cacheName] = menu =
1512
+ createElement('div', {
1513
+ className: className
1514
+ }, {
1515
+ position: 'absolute',
1516
+ zIndex: 1000,
1517
+ padding: menuPadding + 'px',
1518
+ pointerEvents: 'auto'
1519
+ }, chart.fixedDiv || chart.container);
1520
+
1521
+ innerMenu = createElement(
1522
+ 'div',
1523
+ { className: 'highcharts-menu' },
1524
+ null,
1525
+ menu
1526
+ );
1527
+
1528
+ // Presentational CSS
1529
+ if (!chart.styledMode) {
1530
+ css(innerMenu, extend({
1531
+ MozBoxShadow: '3px 3px 10px #888',
1532
+ WebkitBoxShadow: '3px 3px 10px #888',
1533
+ boxShadow: '3px 3px 10px #888'
1534
+ }, navOptions.menuStyle));
1535
+ }
1536
+
1537
+ // hide on mouse out
1538
+ menu.hideMenu = function () {
1539
+ css(menu, { display: 'none' });
1540
+ if (button) {
1541
+ button.setState(0);
1542
+ }
1543
+ chart.openMenu = false;
1544
+ H.clearTimeout(menu.hideTimer);
1545
+ };
1546
+
1547
+ // Hide the menu some time after mouse leave (#1357)
1548
+ chart.exportEvents.push(
1549
+ addEvent(menu, 'mouseleave', function () {
1550
+ menu.hideTimer = setTimeout(menu.hideMenu, 500);
1551
+ }),
1552
+ addEvent(menu, 'mouseenter', function () {
1553
+ H.clearTimeout(menu.hideTimer);
1554
+ }),
1555
+
1556
+ // Hide it on clicking or touching outside the menu (#2258,
1557
+ // #2335, #2407)
1558
+ addEvent(doc, 'mouseup', function (e) {
1559
+ if (!chart.pointer.inClass(e.target, className)) {
1560
+ menu.hideMenu();
1561
+ }
1562
+ }),
1563
+
1564
+ addEvent(menu, 'click', function () {
1565
+ if (chart.openMenu) {
1566
+ menu.hideMenu();
1567
+ }
1568
+ })
1569
+ );
1570
+
1571
+ // create the items
1572
+ items.forEach(function (item) {
1573
+
1574
+ if (typeof item === 'string') {
1575
+ item = chart.options.exporting.menuItemDefinitions[item];
1576
+ }
1577
+
1578
+ if (H.isObject(item, true)) {
1579
+ var element;
1580
+
1581
+ if (item.separator) {
1582
+ element = createElement('hr', null, null, innerMenu);
1583
+
1584
+ } else {
1585
+ element = createElement('div', {
1586
+ className: 'highcharts-menu-item',
1587
+ onclick: function (e) {
1588
+ if (e) { // IE7
1589
+ e.stopPropagation();
1590
+ }
1591
+ menu.hideMenu();
1592
+ if (item.onclick) {
1593
+ item.onclick.apply(chart, arguments);
1594
+ }
1595
+ },
1596
+ innerHTML: (
1597
+ item.text ||
1598
+ chart.options.lang[item.textKey]
1599
+ )
1600
+ }, null, innerMenu);
1601
+
1602
+ if (!chart.styledMode) {
1603
+ element.onmouseover = function () {
1604
+ css(this, navOptions.menuItemHoverStyle);
1605
+ };
1606
+ element.onmouseout = function () {
1607
+ css(this, navOptions.menuItemStyle);
1608
+ };
1609
+ css(element, extend({
1610
+ cursor: 'pointer'
1611
+ }, navOptions.menuItemStyle));
1612
+ }
1613
+ }
1614
+
1615
+ // Keep references to menu divs to be able to destroy them
1616
+ chart.exportDivElements.push(element);
1617
+ }
1618
+ });
1619
+
1620
+ // Keep references to menu and innerMenu div to be able to destroy
1621
+ // them
1622
+ chart.exportDivElements.push(innerMenu, menu);
1623
+
1624
+ chart.exportMenuWidth = menu.offsetWidth;
1625
+ chart.exportMenuHeight = menu.offsetHeight;
1626
+ }
1627
+
1628
+ menuStyle = { display: 'block' };
1629
+
1630
+ // if outside right, right align it
1631
+ if (x + chart.exportMenuWidth > chartWidth) {
1632
+ menuStyle.right = (chartWidth - x - width - menuPadding) + 'px';
1633
+ } else {
1634
+ menuStyle.left = (x - menuPadding) + 'px';
1635
+ }
1636
+ // if outside bottom, bottom align it
1637
+ if (
1638
+ y + height + chart.exportMenuHeight > chartHeight &&
1639
+ button.alignOptions.verticalAlign !== 'top'
1640
+ ) {
1641
+ menuStyle.bottom = (chartHeight - y - menuPadding) + 'px';
1642
+ } else {
1643
+ menuStyle.top = (y + height - menuPadding) + 'px';
1644
+ }
1645
+
1646
+ css(menu, menuStyle);
1647
+ chart.openMenu = true;
1648
+ },
1649
+
1650
+ /**
1651
+ * Add the export button to the chart, with options.
1652
+ *
1653
+ * @private
1654
+ * @function Highcharts.Chart#addButton
1655
+ *
1656
+ * @param {Highcharts.NavigationButtonOptions} options
1657
+ */
1658
+ addButton: function (options) {
1659
+ var chart = this,
1660
+ renderer = chart.renderer,
1661
+ btnOptions = merge(chart.options.navigation.buttonOptions, options),
1662
+ onclick = btnOptions.onclick,
1663
+ menuItems = btnOptions.menuItems,
1664
+ symbol,
1665
+ button,
1666
+ symbolSize = btnOptions.symbolSize || 12;
1667
+
1668
+ if (!chart.btnCount) {
1669
+ chart.btnCount = 0;
1670
+ }
1671
+
1672
+ // Keeps references to the button elements
1673
+ if (!chart.exportDivElements) {
1674
+ chart.exportDivElements = [];
1675
+ chart.exportSVGElements = [];
1676
+ }
1677
+
1678
+ if (btnOptions.enabled === false) {
1679
+ return;
1680
+ }
1681
+
1682
+
1683
+ var attr = btnOptions.theme,
1684
+ states = attr.states,
1685
+ hover = states && states.hover,
1686
+ select = states && states.select,
1687
+ callback;
1688
+
1689
+ if (!chart.styledMode) {
1690
+ attr.fill = pick(attr.fill, '#ffffff');
1691
+ attr.stroke = pick(attr.stroke, 'none');
1692
+ }
1693
+
1694
+ delete attr.states;
1695
+
1696
+ if (onclick) {
1697
+ callback = function (e) {
1698
+ if (e) {
1699
+ e.stopPropagation();
1700
+ }
1701
+ onclick.call(chart, e);
1702
+ };
1703
+
1704
+ } else if (menuItems) {
1705
+ callback = function (e) {
1706
+ // consistent with onclick call (#3495)
1707
+ if (e) {
1708
+ e.stopPropagation();
1709
+ }
1710
+ chart.contextMenu(
1711
+ button.menuClassName,
1712
+ menuItems,
1713
+ button.translateX,
1714
+ button.translateY,
1715
+ button.width,
1716
+ button.height,
1717
+ button
1718
+ );
1719
+ button.setState(2);
1720
+ };
1721
+ }
1722
+
1723
+
1724
+ if (btnOptions.text && btnOptions.symbol) {
1725
+ attr.paddingLeft = pick(attr.paddingLeft, 25);
1726
+
1727
+ } else if (!btnOptions.text) {
1728
+ extend(attr, {
1729
+ width: btnOptions.width,
1730
+ height: btnOptions.height,
1731
+ padding: 0
1732
+ });
1733
+ }
1734
+
1735
+
1736
+ if (!chart.styledMode) {
1737
+ attr['stroke-linecap'] = 'round';
1738
+ attr.fill = pick(attr.fill, '#ffffff');
1739
+ attr.stroke = pick(attr.stroke, 'none');
1740
+ }
1741
+
1742
+ button = renderer
1743
+ .button(btnOptions.text, 0, 0, callback, attr, hover, select)
1744
+ .addClass(options.className)
1745
+ .attr({
1746
+ title: pick(chart.options.lang[
1747
+ btnOptions._titleKey || btnOptions.titleKey
1748
+ ], '')
1749
+ });
1750
+
1751
+ button.menuClassName = (
1752
+ options.menuClassName ||
1753
+ 'highcharts-menu-' + chart.btnCount++
1754
+ );
1755
+
1756
+ if (btnOptions.symbol) {
1757
+ symbol = renderer
1758
+ .symbol(
1759
+ btnOptions.symbol,
1760
+ btnOptions.symbolX - (symbolSize / 2),
1761
+ btnOptions.symbolY - (symbolSize / 2),
1762
+ symbolSize,
1763
+ symbolSize
1764
+ // If symbol is an image, scale it (#7957)
1765
+ , {
1766
+ width: symbolSize,
1767
+ height: symbolSize
1768
+ }
1769
+ )
1770
+ .addClass('highcharts-button-symbol')
1771
+ .attr({
1772
+ zIndex: 1
1773
+ })
1774
+ .add(button);
1775
+
1776
+ if (!chart.styledMode) {
1777
+ symbol.attr({
1778
+ stroke: btnOptions.symbolStroke,
1779
+ fill: btnOptions.symbolFill,
1780
+ 'stroke-width': btnOptions.symbolStrokeWidth || 1
1781
+ });
1782
+ }
1783
+ }
1784
+
1785
+ button.add(chart.exportingGroup)
1786
+ .align(extend(btnOptions, {
1787
+ width: button.width,
1788
+ x: pick(btnOptions.x, chart.buttonOffset) // #1654
1789
+ }), true, 'spacingBox');
1790
+
1791
+ chart.buttonOffset += (
1792
+ (button.width + btnOptions.buttonSpacing) *
1793
+ (btnOptions.align === 'right' ? -1 : 1)
1794
+ );
1795
+
1796
+ chart.exportSVGElements.push(button, symbol);
1797
+
1798
+ },
1799
+
1800
+ /**
1801
+ * Destroy the export buttons.
1802
+ *
1803
+ * @private
1804
+ * @function Highcharts.Chart#destroyExport
1805
+ *
1806
+ * @param {global.Event} e
1807
+ */
1808
+ destroyExport: function (e) {
1809
+ var chart = e ? e.target : this,
1810
+ exportSVGElements = chart.exportSVGElements,
1811
+ exportDivElements = chart.exportDivElements,
1812
+ exportEvents = chart.exportEvents,
1813
+ cacheName;
1814
+
1815
+ // Destroy the extra buttons added
1816
+ if (exportSVGElements) {
1817
+ exportSVGElements.forEach(function (elem, i) {
1818
+
1819
+ // Destroy and null the svg elements
1820
+ if (elem) { // #1822
1821
+ elem.onclick = elem.ontouchstart = null;
1822
+ cacheName = 'cache-' + elem.menuClassName;
1823
+
1824
+ if (chart[cacheName]) {
1825
+ delete chart[cacheName];
1826
+ }
1827
+
1828
+ chart.exportSVGElements[i] = elem.destroy();
1829
+ }
1830
+ });
1831
+ exportSVGElements.length = 0;
1832
+ }
1833
+
1834
+ // Destroy the exporting group
1835
+ if (chart.exportingGroup) {
1836
+ chart.exportingGroup.destroy();
1837
+ delete chart.exportingGroup;
1838
+ }
1839
+
1840
+ // Destroy the divs for the menu
1841
+ if (exportDivElements) {
1842
+ exportDivElements.forEach(function (elem, i) {
1843
+
1844
+ // Remove the event handler
1845
+ H.clearTimeout(elem.hideTimer); // #5427
1846
+ removeEvent(elem, 'mouseleave');
1847
+
1848
+ // Remove inline events
1849
+ chart.exportDivElements[i] =
1850
+ elem.onmouseout =
1851
+ elem.onmouseover =
1852
+ elem.ontouchstart =
1853
+ elem.onclick = null;
1854
+
1855
+ // Destroy the div by moving to garbage bin
1856
+ discardElement(elem);
1857
+ });
1858
+ exportDivElements.length = 0;
1859
+ }
1860
+
1861
+ if (exportEvents) {
1862
+ exportEvents.forEach(function (unbind) {
1863
+ unbind();
1864
+ });
1865
+ exportEvents.length = 0;
1866
+ }
1867
+ }
1868
+ });
1869
+
1870
+ // These ones are translated to attributes rather than styles
1871
+ SVGRenderer.prototype.inlineToAttributes = [
1872
+ 'fill',
1873
+ 'stroke',
1874
+ 'strokeLinecap',
1875
+ 'strokeLinejoin',
1876
+ 'strokeWidth',
1877
+ 'textAnchor',
1878
+ 'x',
1879
+ 'y'
1880
+ ];
1881
+
1882
+ // These CSS properties are not inlined. Remember camelCase.
1883
+ SVGRenderer.prototype.inlineBlacklist = [
1884
+ /-/, // In Firefox, both hyphened and camelCased names are listed
1885
+ /^(clipPath|cssText|d|height|width)$/, // Full words
1886
+ /^font$/, // more specific props are set
1887
+ /[lL]ogical(Width|Height)$/,
1888
+ /perspective/,
1889
+ /TapHighlightColor/,
1890
+ /^transition/,
1891
+ /^length$/ // #7700
1892
+ // /^text (border|color|cursor|height|webkitBorder)/
1893
+ ];
1894
+
1895
+ SVGRenderer.prototype.unstyledElements = [
1896
+ 'clipPath',
1897
+ 'defs',
1898
+ 'desc'
1899
+ ];
1900
+
1901
+ /**
1902
+ * Analyze inherited styles from stylesheets and add them inline
1903
+ *
1904
+ * @private
1905
+ * @function Highcharts.Chart#inlineStyles
1906
+ *
1907
+ * @todo: What are the border styles for text about? In general, text has a lot
1908
+ * of properties.
1909
+ * @todo: Make it work with IE9 and IE10.
1910
+ */
1911
+ Chart.prototype.inlineStyles = function () {
1912
+ var renderer = this.renderer,
1913
+ inlineToAttributes = renderer.inlineToAttributes,
1914
+ blacklist = renderer.inlineBlacklist,
1915
+ whitelist = renderer.inlineWhitelist, // For IE
1916
+ unstyledElements = renderer.unstyledElements,
1917
+ defaultStyles = {},
1918
+ dummySVG,
1919
+ iframe,
1920
+ iframeDoc;
1921
+
1922
+ // Create an iframe where we read default styles without pollution from this
1923
+ // body
1924
+ iframe = doc.createElement('iframe');
1925
+ css(iframe, {
1926
+ width: '1px',
1927
+ height: '1px',
1928
+ visibility: 'hidden'
1929
+ });
1930
+ doc.body.appendChild(iframe);
1931
+ iframeDoc = iframe.contentWindow.document;
1932
+ iframeDoc.open();
1933
+ iframeDoc.write('<svg xmlns="http://www.w3.org/2000/svg"></svg>');
1934
+ iframeDoc.close();
1935
+
1936
+
1937
+ /**
1938
+ * Make hyphenated property names out of camelCase
1939
+ */
1940
+ function hyphenate(prop) {
1941
+ return prop.replace(
1942
+ /([A-Z])/g,
1943
+ function (a, b) {
1944
+ return '-' + b.toLowerCase();
1945
+ }
1946
+ );
1947
+ }
1948
+
1949
+ /**
1950
+ * Call this on all elements and recurse to children
1951
+ */
1952
+ function recurse(node) {
1953
+ var styles,
1954
+ parentStyles,
1955
+ cssText = '',
1956
+ dummy,
1957
+ styleAttr,
1958
+ blacklisted,
1959
+ whitelisted,
1960
+ i;
1961
+
1962
+ // Check computed styles and whether they are in the white/blacklist for
1963
+ // styles or atttributes
1964
+ function filterStyles(val, prop) {
1965
+
1966
+ // Check against whitelist & blacklist
1967
+ blacklisted = whitelisted = false;
1968
+ if (whitelist) {
1969
+ // Styled mode in IE has a whitelist instead.
1970
+ // Exclude all props not in this list.
1971
+ i = whitelist.length;
1972
+ while (i-- && !whitelisted) {
1973
+ whitelisted = whitelist[i].test(prop);
1974
+ }
1975
+ blacklisted = !whitelisted;
1976
+ }
1977
+
1978
+ // Explicitly remove empty transforms
1979
+ if (prop === 'transform' && val === 'none') {
1980
+ blacklisted = true;
1981
+ }
1982
+
1983
+ i = blacklist.length;
1984
+ while (i-- && !blacklisted) {
1985
+ blacklisted = (
1986
+ blacklist[i].test(prop) ||
1987
+ typeof val === 'function'
1988
+ );
1989
+ }
1990
+
1991
+ if (!blacklisted) {
1992
+ // If parent node has the same style, it gets inherited, no need
1993
+ // to inline it. Top-level props should be diffed against parent
1994
+ // (#7687).
1995
+ if (
1996
+ (parentStyles[prop] !== val || node.nodeName === 'svg') &&
1997
+ defaultStyles[node.nodeName][prop] !== val
1998
+ ) {
1999
+ // Attributes
2000
+ if (inlineToAttributes.indexOf(prop) !== -1) {
2001
+ node.setAttribute(hyphenate(prop), val);
2002
+ // Styles
2003
+ } else {
2004
+ cssText += hyphenate(prop) + ':' + val + ';';
2005
+ }
2006
+ }
2007
+ }
2008
+ }
2009
+
2010
+ if (
2011
+ node.nodeType === 1 &&
2012
+ unstyledElements.indexOf(node.nodeName) === -1
2013
+ ) {
2014
+ styles = win.getComputedStyle(node, null);
2015
+ parentStyles = node.nodeName === 'svg' ?
2016
+ {} :
2017
+ win.getComputedStyle(node.parentNode, null);
2018
+
2019
+ // Get default styles from the browser so that we don't have to add
2020
+ // these
2021
+ if (!defaultStyles[node.nodeName]) {
2022
+ /*
2023
+ if (!dummySVG) {
2024
+ dummySVG = doc.createElementNS(H.SVG_NS, 'svg');
2025
+ dummySVG.setAttribute('version', '1.1');
2026
+ doc.body.appendChild(dummySVG);
2027
+ }
2028
+ */
2029
+ dummySVG = iframeDoc.getElementsByTagName('svg')[0];
2030
+ dummy = iframeDoc.createElementNS(
2031
+ node.namespaceURI,
2032
+ node.nodeName
2033
+ );
2034
+ dummySVG.appendChild(dummy);
2035
+ // Copy, so we can remove the node
2036
+ defaultStyles[node.nodeName] = merge(
2037
+ win.getComputedStyle(dummy, null)
2038
+ );
2039
+ // Remove default fill, otherwise text disappears when exported
2040
+ if (node.nodeName === 'text') {
2041
+ delete defaultStyles.text.fill;
2042
+ }
2043
+ dummySVG.removeChild(dummy);
2044
+ }
2045
+
2046
+ // Loop through all styles and add them inline if they are ok
2047
+ if (isFirefoxBrowser || isMSBrowser) {
2048
+ // Some browsers put lots of styles on the prototype
2049
+ for (var p in styles) {
2050
+ filterStyles(styles[p], p);
2051
+ }
2052
+ } else {
2053
+ objectEach(styles, filterStyles);
2054
+ }
2055
+
2056
+ // Apply styles
2057
+ if (cssText) {
2058
+ styleAttr = node.getAttribute('style');
2059
+ node.setAttribute(
2060
+ 'style',
2061
+ (styleAttr ? styleAttr + ';' : '') + cssText
2062
+ );
2063
+ }
2064
+
2065
+ // Set default stroke width (needed at least for IE)
2066
+ if (node.nodeName === 'svg') {
2067
+ node.setAttribute('stroke-width', '1px');
2068
+ }
2069
+
2070
+ if (node.nodeName === 'text') {
2071
+ return;
2072
+ }
2073
+
2074
+ // Recurse
2075
+ [].forEach.call(node.children || node.childNodes, recurse);
2076
+ }
2077
+ }
2078
+
2079
+ /**
2080
+ * Remove the dummy objects used to get defaults
2081
+ */
2082
+ function tearDown() {
2083
+ dummySVG.parentNode.removeChild(dummySVG);
2084
+ }
2085
+
2086
+ recurse(this.container.querySelector('svg'));
2087
+ tearDown();
2088
+
2089
+ };
2090
+
2091
+
2092
+ symbols.menu = function (x, y, width, height) {
2093
+ var arr = [
2094
+ 'M', x, y + 2.5,
2095
+ 'L', x + width, y + 2.5,
2096
+ 'M', x, y + height / 2 + 0.5,
2097
+ 'L', x + width, y + height / 2 + 0.5,
2098
+ 'M', x, y + height - 1.5,
2099
+ 'L', x + width, y + height - 1.5
2100
+ ];
2101
+
2102
+ return arr;
2103
+ };
2104
+
2105
+ symbols.menuball = function (x, y, width, height) {
2106
+ var path = [],
2107
+ h = (height / 3) - 2;
2108
+
2109
+ path = path.concat(
2110
+ this.circle(width - h, y, h, h),
2111
+ this.circle(width - h, y + h + 4, h, h),
2112
+ this.circle(width - h, y + 2 * (h + 4), h, h)
2113
+ );
2114
+ return path;
2115
+ };
2116
+
2117
+ /**
2118
+ * Add the buttons on chart load
2119
+ *
2120
+ * @private
2121
+ * @function Highcharts.Chart#renderExporting
2122
+ */
2123
+ Chart.prototype.renderExporting = function () {
2124
+ var chart = this,
2125
+ exportingOptions = chart.options.exporting,
2126
+ buttons = exportingOptions.buttons,
2127
+ isDirty = chart.isDirtyExporting || !chart.exportSVGElements;
2128
+
2129
+ chart.buttonOffset = 0;
2130
+ if (chart.isDirtyExporting) {
2131
+ chart.destroyExport();
2132
+ }
2133
+
2134
+ if (isDirty && exportingOptions.enabled !== false) {
2135
+ chart.exportEvents = [];
2136
+
2137
+ chart.exportingGroup = chart.exportingGroup ||
2138
+ chart.renderer.g('exporting-group').attr({
2139
+ zIndex: 3 // #4955, // #8392
2140
+ }).add();
2141
+
2142
+ objectEach(buttons, function (button) {
2143
+ chart.addButton(button);
2144
+ });
2145
+
2146
+ chart.isDirtyExporting = false;
2147
+ }
2148
+
2149
+ // Destroy the export elements at chart destroy
2150
+ addEvent(chart, 'destroy', chart.destroyExport);
2151
+ };
2152
+
2153
+ // Add update methods to handle chart.update and chart.exporting.update and
2154
+ // chart.navigation.update. These must be added to the chart instance rather
2155
+ // than the Chart prototype in order to use the chart instance inside the update
2156
+ // function.
2157
+ addEvent(Chart, 'init', function () {
2158
+ var chart = this;
2159
+
2160
+ function update(prop, options, redraw) {
2161
+ chart.isDirtyExporting = true;
2162
+ merge(true, chart.options[prop], options);
2163
+ if (pick(redraw, true)) {
2164
+ chart.redraw();
2165
+ }
2166
+ }
2167
+
2168
+ chart.exporting = {
2169
+ update: function (options, redraw) {
2170
+ update('exporting', options, redraw);
2171
+ }
2172
+ };
2173
+
2174
+ // Register update() method for navigation. Can not be set the same way as
2175
+ // for exporting, because navigation options are shared with bindings which
2176
+ // has separate update() logic.
2177
+ chartNavigationMixin.addUpdate(
2178
+ function (options, redraw) {
2179
+ update('navigation', options, redraw);
2180
+ },
2181
+ chart
2182
+ );
2183
+ });
2184
+
2185
+ Chart.prototype.callbacks.push(function (chart) {
2186
+
2187
+ chart.renderExporting();
2188
+
2189
+ addEvent(chart, 'redraw', chart.renderExporting);
2190
+
2191
+
2192
+ // Uncomment this to see a button directly below the chart, for quick
2193
+ // testing of export
2194
+ /*
2195
+ var button, viewImage, viewSource;
2196
+ if (!chart.renderer.forExport) {
2197
+ viewImage = function () {
2198
+ var div = doc.createElement('div');
2199
+ div.innerHTML = chart.getSVGForExport();
2200
+ chart.renderTo.parentNode.appendChild(div);
2201
+ };
2202
+
2203
+ viewSource = function () {
2204
+ var pre = doc.createElement('pre');
2205
+ pre.innerHTML = chart.getSVGForExport()
2206
+ .replace(/</g, '\n&lt;')
2207
+ .replace(/>/g, '&gt;');
2208
+ chart.renderTo.parentNode.appendChild(pre);
2209
+ };
2210
+
2211
+ viewImage();
2212
+
2213
+ // View SVG Image
2214
+ button = doc.createElement('button');
2215
+ button.innerHTML = 'View SVG Image';
2216
+ chart.renderTo.parentNode.appendChild(button);
2217
+ button.onclick = viewImage;
2218
+
2219
+ // View SVG Source
2220
+ button = doc.createElement('button');
2221
+ button.innerHTML = 'View SVG Source';
2222
+ chart.renderTo.parentNode.appendChild(button);
2223
+ button.onclick = viewSource;
2224
+ }
2225
+ //*/
2226
+ });
2227
+
2228
+ }(Highcharts, chartNavigation));
2229
+ return (function () {
2230
+
2231
+
2232
+ }());
2233
+ }));