Slimstat Analytics - Version 4.8.4

Version Description

  • [Note] If you're using any of our premium add-ons, please make sure to update them to the latest version available (see Slimstat > Add-ons) as we've updated some references in our code.
  • [Note] We recently received an email from one of our users suggesting that we replace the line charts currently used to display reports over a timeline with bar charts, because 'the number of pageviews and IPs are discrete numbers, hence they should also be presented as discrete numbers', according to him. What do you think? Please let us know by sending us a message on our support platform. Thank you.
  • [Update] Renamed a few files in the admin. If you're including Slimstat libraries in your custom code, please make sure to check that your references are up-to-date. Also, make sure to clear your cache if you page layout doesn't look right.
  • [Update] AmCharts, the library used to render all of our charts, has been updated to version 4.5.3.
  • [Update] When functioning in Client mode, the tracker will now not ignore bots, spiders and the like automatically. Please use the appropriate option under Settings > Exclusions if you would like to ignore bots. This solves an incompatibility issue with some caching plugins which "prefetch" the website, presenting themselves as bots.
  • [Update] Removed tracker notice field under Settings > Maintenance as it was confusing many people and generating extra work for our customer service team.
  • [Update] Removed option to not track "client properties" like screen resolution, etc. Also, removed option to not honor DNT headers, as we received complaints from privacy activists on this matter.
  • [Update] Removed option to change date/time formats and numeric separators: Slimstat will now use the WordPress settings to adjust its behavior.
  • [Update] Removed 'About Slimstat' report, given that some of the information in it has been moved to the Settings.
  • [Update] Removed unused strings, improved contextual descriptions and applied consistent naming conventions across our codebase (first pass).
  • [Update] The Slimstat admin menu is now added to the Admin Bar by default. Please go to Settings > Basic > WordPress Integration and change the corresponding option, if you prefer to use the side menu instead.
  • [Update] Enabled code editor in Settings.
  • [Update] Implemented a new optimized function to retrieve the post count on the Edit Posts/Pages/CPTs screens. Thank you, Lance.
  • [Update] Improved browser detection feature, which will now fallback to the heuristic function if the Browscap data file doesn't contain an exact match for a given browser. This usually happens whenever a new browser version is released, which is not yet included in the data file.
  • [Update] Option to track same-domain referrers is now deactivated by default on new installations.
  • [Update] Enabled wildcards on the exclusion rule by capability.
  • [Update] Improved the overall source code readability score. Now you don't have any other excuses to not contribute to this project!
  • [Update] Table indexes are now enabled by default in the database.
  • [Update] Added new WordPress filter to the Browscap Library, so that third-party tools can manipulate the data before it's returned to the tracker.
  • [Update] Added nonce to Settings page for improved security.
Download this release

Release Info

Developer coolmann
Plugin Icon 128x128 Slimstat Analytics
Version 4.8.4
Comparing to
See all releases

Code changes from version 4.8.3 to 4.8.4

Files changed (383) hide show
  1. README.md +42 -77
  2. admin/{css/slimstat.css → assets/css/admin.css} +5 -4
  3. admin/{css/slimstat.frontend.css → assets/css/slimstat.css} +0 -0
  4. admin/{css → assets/css}/slimstat.eot +0 -0
  5. admin/{css → assets/css}/slimstat.svg +0 -0
  6. admin/{images → assets/images}/browsers/android.png +0 -0
  7. admin/{images → assets/images}/browsers/anonymouse.png +0 -0
  8. admin/{images → assets/images}/browsers/baiduspider.png +0 -0
  9. admin/{images → assets/images}/browsers/bingbot.png +0 -0
  10. admin/{images → assets/images}/browsers/blackberry.png +0 -0
  11. admin/{images → assets/images}/browsers/cfnetwork.png +0 -0
  12. admin/{images → assets/images}/browsers/chrome.png +0 -0
  13. admin/{images → assets/images}/browsers/chromium.png +0 -0
  14. admin/{images → assets/images}/browsers/default-browser.png +0 -0
  15. admin/{images → assets/images}/browsers/edge.png +0 -0
  16. admin/{images → assets/images}/browsers/exabotbiggerbetter.png +0 -0
  17. admin/{images → assets/images}/browsers/facebookexternalhit.png +0 -0
  18. admin/{images → assets/images}/browsers/feedburner.png +0 -0
  19. admin/{images → assets/images}/browsers/feedfetcher-google.png +0 -0
  20. admin/{images → assets/images}/browsers/firefox.png +0 -0
  21. admin/{images → assets/images}/browsers/google-bot.png +0 -0
  22. admin/{images → assets/images}/browsers/google-feedfetcher.png +0 -0
  23. admin/{images → assets/images}/browsers/google-web-preview.png +0 -0
  24. admin/{images → assets/images}/browsers/googlebot.png +0 -0
  25. admin/{images → assets/images}/browsers/ie.png +0 -0
  26. admin/{images → assets/images}/browsers/iemobile.png +0 -0
  27. admin/{images → assets/images}/browsers/internet-archive.png +0 -0
  28. admin/{images → assets/images}/browsers/ipad.png +0 -0
  29. admin/{images → assets/images}/browsers/iphone.png +0 -0
  30. admin/{images → assets/images}/browsers/ipod-touch.png +0 -0
  31. admin/{images → assets/images}/browsers/maxthon.png +0 -0
  32. admin/{images → assets/images}/browsers/mediapartners-google.png +0 -0
  33. admin/{images → assets/images}/browsers/microsoft-webdav.png +0 -0
  34. admin/{images → assets/images}/browsers/mozilla.png +0 -0
  35. admin/{images → assets/images}/browsers/msnbot.png +0 -0
  36. admin/{images → assets/images}/browsers/netscape.png +0 -0
  37. admin/{images → assets/images}/browsers/newsgatoronline.png +0 -0
  38. admin/{images → assets/images}/browsers/nokia.png +0 -0
  39. admin/{images → assets/images}/browsers/opera-mini.png +0 -0
  40. admin/{images → assets/images}/browsers/opera-mobi.png +0 -0
  41. admin/{images → assets/images}/browsers/opera.png +0 -0
  42. admin/{images → assets/images}/browsers/other-browsers-and-os.png +0 -0
  43. admin/{images → assets/images}/browsers/pingdom.png +0 -0
  44. admin/{images → assets/images}/browsers/pycurl.png +0 -0
  45. admin/{images → assets/images}/browsers/python.png +0 -0
  46. admin/{images → assets/images}/browsers/reader.png +0 -0
  47. admin/{images → assets/images}/browsers/safari.png +0 -0
  48. admin/{images → assets/images}/browsers/type1.png +0 -0
  49. admin/{images → assets/images}/browsers/type2.png +0 -0
  50. admin/{images → assets/images}/browsers/type3.png +0 -0
  51. admin/{images → assets/images}/browsers/w3c_validator.png +0 -0
  52. admin/{images → assets/images}/browsers/wordpress.png +0 -0
  53. admin/{images → assets/images}/browsers/yahoo-slurp.png +0 -0
  54. admin/{images → assets/images}/browsers/yandexbot.png +0 -0
  55. admin/{images → assets/images}/datepicker.png +0 -0
  56. admin/{images → assets/images}/flags/ab.png +0 -0
  57. admin/{images → assets/images}/flags/ac.png +0 -0
  58. admin/{images → assets/images}/flags/ad.png +0 -0
  59. admin/{images → assets/images}/flags/ae.png +0 -0
  60. admin/{images → assets/images}/flags/af.png +0 -0
  61. admin/{images → assets/images}/flags/ag.png +0 -0
  62. admin/{images → assets/images}/flags/ai.png +0 -0
  63. admin/{images → assets/images}/flags/ak.png +0 -0
  64. admin/{images → assets/images}/flags/al.png +0 -0
  65. admin/{images → assets/images}/flags/am.png +0 -0
  66. admin/{images → assets/images}/flags/an.png +0 -0
  67. admin/{images → assets/images}/flags/ao.png +0 -0
  68. admin/{images → assets/images}/flags/ap.png +0 -0
  69. admin/{images → assets/images}/flags/aq.png +0 -0
  70. admin/{images → assets/images}/flags/ar.png +0 -0
  71. admin/{images → assets/images}/flags/as.png +0 -0
  72. admin/{images → assets/images}/flags/at.png +0 -0
  73. admin/{images → assets/images}/flags/au.png +0 -0
  74. admin/{images → assets/images}/flags/aw.png +0 -0
  75. admin/{images → assets/images}/flags/ax.png +0 -0
  76. admin/{images → assets/images}/flags/ay.png +0 -0
  77. admin/{images → assets/images}/flags/az.png +0 -0
  78. admin/{images → assets/images}/flags/ba.png +0 -0
  79. admin/{images → assets/images}/flags/bb.png +0 -0
  80. admin/{images → assets/images}/flags/bd.png +0 -0
  81. admin/{images → assets/images}/flags/be.png +0 -0
  82. admin/{images → assets/images}/flags/bf.png +0 -0
  83. admin/{images → assets/images}/flags/bg.png +0 -0
  84. admin/{images → assets/images}/flags/bh.png +0 -0
  85. admin/{images → assets/images}/flags/bi.png +0 -0
  86. admin/{images → assets/images}/flags/bj.png +0 -0
  87. admin/{images → assets/images}/flags/bl.png +0 -0
  88. admin/{images → assets/images}/flags/bm.png +0 -0
  89. admin/{images → assets/images}/flags/bn.png +0 -0
  90. admin/{images → assets/images}/flags/bo.png +0 -0
  91. admin/{images → assets/images}/flags/bq.png +0 -0
  92. admin/{images → assets/images}/flags/br.png +0 -0
  93. admin/{images → assets/images}/flags/bs.png +0 -0
  94. admin/{images → assets/images}/flags/bt.png +0 -0
  95. admin/{images → assets/images}/flags/bu.png +0 -0
  96. admin/{images → assets/images}/flags/bv.png +0 -0
  97. admin/{images → assets/images}/flags/bw.png +0 -0
  98. admin/{images → assets/images}/flags/by.png +0 -0
  99. admin/{images → assets/images}/flags/bz.png +0 -0
  100. admin/{images → assets/images}/flags/ca.png +0 -0
  101. admin/{images → assets/images}/flags/cc.png +0 -0
  102. admin/{images → assets/images}/flags/cd.png +0 -0
  103. admin/{images → assets/images}/flags/cf.png +0 -0
  104. admin/{images → assets/images}/flags/cg.png +0 -0
  105. admin/{images → assets/images}/flags/ch.png +0 -0
  106. admin/{images → assets/images}/flags/ci.png +0 -0
  107. admin/{images → assets/images}/flags/ck.png +0 -0
  108. admin/{images → assets/images}/flags/cl.png +0 -0
  109. admin/{images → assets/images}/flags/cm.png +0 -0
  110. admin/{images → assets/images}/flags/cn.png +0 -0
  111. admin/{images → assets/images}/flags/cn2.png +0 -0
  112. admin/{images → assets/images}/flags/co.png +0 -0
  113. admin/{images → assets/images}/flags/cp.png +0 -0
  114. admin/{images → assets/images}/flags/cr.png +0 -0
  115. admin/{images → assets/images}/flags/cs.png +0 -0
  116. admin/{images → assets/images}/flags/cu.png +0 -0
  117. admin/{images → assets/images}/flags/cv.png +0 -0
  118. admin/{images → assets/images}/flags/cw.png +0 -0
  119. admin/{images → assets/images}/flags/cx.png +0 -0
  120. admin/{images → assets/images}/flags/cy.png +0 -0
  121. admin/{images → assets/images}/flags/cz.png +0 -0
  122. admin/{images → assets/images}/flags/de.png +0 -0
  123. admin/{images → assets/images}/flags/dg.png +0 -0
  124. admin/{images → assets/images}/flags/dj.png +0 -0
  125. admin/{images → assets/images}/flags/dk.png +0 -0
  126. admin/{images → assets/images}/flags/dm.png +0 -0
  127. admin/{images → assets/images}/flags/do.png +0 -0
  128. admin/{images → assets/images}/flags/dy.png +0 -0
  129. admin/{images → assets/images}/flags/dz.png +0 -0
  130. admin/{images → assets/images}/flags/ea.png +0 -0
  131. admin/{images → assets/images}/flags/ec.png +0 -0
  132. admin/{images → assets/images}/flags/ee.png +0 -0
  133. admin/{images → assets/images}/flags/eg.png +0 -0
  134. admin/{images → assets/images}/flags/eh.png +0 -0
  135. admin/{images → assets/images}/flags/en.png +0 -0
  136. admin/{images → assets/images}/flags/er.png +0 -0
  137. admin/{images → assets/images}/flags/es.png +0 -0
  138. admin/{images → assets/images}/flags/et.png +0 -0
  139. admin/{images → assets/images}/flags/eu.png +0 -0
  140. admin/{images → assets/images}/flags/ew.png +0 -0
  141. admin/{images → assets/images}/flags/fi.png +0 -0
  142. admin/{images → assets/images}/flags/fj.png +0 -0
  143. admin/{images → assets/images}/flags/fk.png +0 -0
  144. admin/{images → assets/images}/flags/fl.png +0 -0
  145. admin/{images → assets/images}/flags/fm.png +0 -0
  146. admin/{images → assets/images}/flags/fo.png +0 -0
  147. admin/{images → assets/images}/flags/fr.png +0 -0
  148. admin/{images → assets/images}/flags/fx.png +0 -0
  149. admin/{images → assets/images}/flags/ga.png +0 -0
  150. admin/{images → assets/images}/flags/gb.png +0 -0
  151. admin/{images → assets/images}/flags/gc.png +0 -0
  152. admin/{images → assets/images}/flags/gd.png +0 -0
  153. admin/{images → assets/images}/flags/ge.png +0 -0
  154. admin/{images → assets/images}/flags/gf.png +0 -0
  155. admin/{images → assets/images}/flags/gg.png +0 -0
  156. admin/{images → assets/images}/flags/gh.png +0 -0
  157. admin/{images → assets/images}/flags/gi.png +0 -0
  158. admin/{images → assets/images}/flags/gl.png +0 -0
  159. admin/{images → assets/images}/flags/gm.png +0 -0
  160. admin/{images → assets/images}/flags/gn.png +0 -0
  161. admin/{images → assets/images}/flags/gp.png +0 -0
  162. admin/{images → assets/images}/flags/gq.png +0 -0
  163. admin/{images → assets/images}/flags/gr.png +0 -0
  164. admin/{images → assets/images}/flags/gs.png +0 -0
  165. admin/{images → assets/images}/flags/gt.png +0 -0
  166. admin/{images → assets/images}/flags/gu.png +0 -0
  167. admin/{images → assets/images}/flags/gw.png +0 -0
  168. admin/{images → assets/images}/flags/gy.png +0 -0
  169. admin/{images → assets/images}/flags/he.png +0 -0
  170. admin/{images → assets/images}/flags/hk.png +0 -0
  171. admin/{images → assets/images}/flags/hm.png +0 -0
  172. admin/{images → assets/images}/flags/hn.png +0 -0
  173. admin/{images → assets/images}/flags/hr.png +0 -0
  174. admin/{images → assets/images}/flags/ht.png +0 -0
  175. admin/{images → assets/images}/flags/hu.png +0 -0
  176. admin/{images → assets/images}/flags/ic.png +0 -0
  177. admin/{images → assets/images}/flags/id.png +0 -0
  178. admin/{images → assets/images}/flags/ie.png +0 -0
  179. admin/{images → assets/images}/flags/il.png +0 -0
  180. admin/{images → assets/images}/flags/im.png +0 -0
  181. admin/{images → assets/images}/flags/in.png +0 -0
  182. admin/{images → assets/images}/flags/io.png +0 -0
  183. admin/{images → assets/images}/flags/iq.png +0 -0
  184. admin/{images → assets/images}/flags/ir.png +0 -0
  185. admin/{images → assets/images}/flags/is.png +0 -0
  186. admin/{images → assets/images}/flags/it.png +0 -0
  187. admin/{images → assets/images}/flags/ja.png +0 -0
  188. admin/{images → assets/images}/flags/je.png +0 -0
  189. admin/{images → assets/images}/flags/jm.png +0 -0
  190. admin/{images → assets/images}/flags/jo.png +0 -0
  191. admin/{images → assets/images}/flags/jp.png +0 -0
  192. admin/{images → assets/images}/flags/ka.png +0 -0
  193. admin/{images → assets/images}/flags/ke.png +0 -0
  194. admin/{images → assets/images}/flags/kg.png +0 -0
  195. admin/{images → assets/images}/flags/kh.png +0 -0
  196. admin/{images → assets/images}/flags/ki.png +0 -0
  197. admin/{images → assets/images}/flags/km.png +0 -0
  198. admin/{images → assets/images}/flags/kn.png +0 -0
  199. admin/{images → assets/images}/flags/kp.png +0 -0
  200. admin/{images → assets/images}/flags/kr.png +0 -0
  201. admin/{images → assets/images}/flags/kw.png +0 -0
  202. admin/{images → assets/images}/flags/ky.png +0 -0
  203. admin/{images → assets/images}/flags/kz.png +0 -0
  204. admin/{images → assets/images}/flags/la.png +0 -0
  205. admin/{images → assets/images}/flags/lb.png +0 -0
  206. admin/{images → assets/images}/flags/lc.png +0 -0
  207. admin/{images → assets/images}/flags/lf.png +0 -0
  208. admin/{images → assets/images}/flags/li.png +0 -0
  209. admin/{images → assets/images}/flags/lk.png +0 -0
  210. admin/{images → assets/images}/flags/lr.png +0 -0
  211. admin/{images → assets/images}/flags/ls.png +0 -0
  212. admin/{images → assets/images}/flags/lt.png +0 -0
  213. admin/{images → assets/images}/flags/lu.png +0 -0
  214. admin/{images → assets/images}/flags/lv.png +0 -0
  215. admin/{images → assets/images}/flags/ly.png +0 -0
  216. admin/{images → assets/images}/flags/ma.png +0 -0
  217. admin/{images → assets/images}/flags/mc.png +0 -0
  218. admin/{images → assets/images}/flags/md.png +0 -0
  219. admin/{images → assets/images}/flags/me.png +0 -0
  220. admin/{images → assets/images}/flags/mf.png +0 -0
  221. admin/{images → assets/images}/flags/mg.png +0 -0
  222. admin/{images → assets/images}/flags/mh.png +0 -0
  223. admin/{images → assets/images}/flags/mk.png +0 -0
  224. admin/{images → assets/images}/flags/ml.png +0 -0
  225. admin/{images → assets/images}/flags/mm.png +0 -0
  226. admin/{images → assets/images}/flags/mn.png +0 -0
  227. admin/{images → assets/images}/flags/mo.png +0 -0
  228. admin/{images → assets/images}/flags/mp.png +0 -0
  229. admin/{images → assets/images}/flags/mq.png +0 -0
  230. admin/{images → assets/images}/flags/mr.png +0 -0
  231. admin/{images → assets/images}/flags/ms.png +0 -0
  232. admin/{images → assets/images}/flags/mt.png +0 -0
  233. admin/{images → assets/images}/flags/mu.png +0 -0
  234. admin/{images → assets/images}/flags/mv.png +0 -0
  235. admin/{images → assets/images}/flags/mw.png +0 -0
  236. admin/{images → assets/images}/flags/mx.png +0 -0
  237. admin/{images → assets/images}/flags/my.png +0 -0
  238. admin/{images → assets/images}/flags/mz.png +0 -0
  239. admin/{images → assets/images}/flags/na.png +0 -0
  240. admin/{images → assets/images}/flags/nc.png +0 -0
  241. admin/{images → assets/images}/flags/ne.png +0 -0
  242. admin/{images → assets/images}/flags/nf.png +0 -0
  243. admin/{images → assets/images}/flags/ng.png +0 -0
  244. admin/{images → assets/images}/flags/ni.png +0 -0
  245. admin/{images → assets/images}/flags/nl.png +0 -0
  246. admin/{images → assets/images}/flags/no.png +0 -0
  247. admin/{images → assets/images}/flags/np.png +0 -0
  248. admin/{images → assets/images}/flags/nr.png +0 -0
  249. admin/{images → assets/images}/flags/nu.png +0 -0
  250. admin/{images → assets/images}/flags/nz.png +0 -0
  251. admin/{images → assets/images}/flags/om.png +0 -0
  252. admin/{images → assets/images}/flags/pa.png +0 -0
  253. admin/{images → assets/images}/flags/pe.png +0 -0
  254. admin/{images → assets/images}/flags/pf.png +0 -0
  255. admin/{images → assets/images}/flags/pg.png +0 -0
  256. admin/{images → assets/images}/flags/ph.png +0 -0
  257. admin/{images → assets/images}/flags/pi.png +0 -0
  258. admin/{images → assets/images}/flags/pk.png +0 -0
  259. admin/{images → assets/images}/flags/pl.png +0 -0
  260. admin/{images → assets/images}/flags/pm.png +0 -0
  261. admin/{images → assets/images}/flags/pn.png +0 -0
  262. admin/{images → assets/images}/flags/pr.png +0 -0
  263. admin/{images → assets/images}/flags/ps.png +0 -0
  264. admin/{images → assets/images}/flags/pt.png +0 -0
  265. admin/{images → assets/images}/flags/pw.png +0 -0
  266. admin/{images → assets/images}/flags/py.png +0 -0
  267. admin/{images → assets/images}/flags/qa.png +0 -0
  268. admin/{images → assets/images}/flags/ra.png +0 -0
  269. admin/{images → assets/images}/flags/rb.png +0 -0
  270. admin/{images → assets/images}/flags/rc.png +0 -0
  271. admin/{images → assets/images}/flags/re.png +0 -0
  272. admin/{images → assets/images}/flags/rh.png +0 -0
  273. admin/{images → assets/images}/flags/ri.png +0 -0
  274. admin/{images → assets/images}/flags/rl.png +0 -0
  275. admin/{images → assets/images}/flags/rm.png +0 -0
  276. admin/{images → assets/images}/flags/rn.png +0 -0
  277. admin/{images → assets/images}/flags/ro.png +0 -0
  278. admin/{images → assets/images}/flags/rp.png +0 -0
  279. admin/{images → assets/images}/flags/rs.png +0 -0
  280. admin/{images → assets/images}/flags/ru.png +0 -0
  281. admin/{images → assets/images}/flags/rw.png +0 -0
  282. admin/{images → assets/images}/flags/rz.png +0 -0
  283. admin/{images → assets/images}/flags/sa.png +0 -0
  284. admin/{images → assets/images}/flags/sb.png +0 -0
  285. admin/{images → assets/images}/flags/sc.png +0 -0
  286. admin/{images → assets/images}/flags/sd.png +0 -0
  287. admin/{images → assets/images}/flags/se.png +0 -0
  288. admin/{images → assets/images}/flags/sf.png +0 -0
  289. admin/{images → assets/images}/flags/sg.png +0 -0
  290. admin/{images → assets/images}/flags/sh.png +0 -0
  291. admin/{images → assets/images}/flags/si.png +0 -0
  292. admin/{images → assets/images}/flags/sj.png +0 -0
  293. admin/{images → assets/images}/flags/sk.png +0 -0
  294. admin/{images → assets/images}/flags/sl.png +0 -0
  295. admin/{images → assets/images}/flags/sm.png +0 -0
  296. admin/{images → assets/images}/flags/sn.png +0 -0
  297. admin/{images → assets/images}/flags/so.png +0 -0
  298. admin/{images → assets/images}/flags/sq.png +0 -0
  299. admin/{images → assets/images}/flags/sr.png +0 -0
  300. admin/{images → assets/images}/flags/st.png +0 -0
  301. admin/{images → assets/images}/flags/su.png +0 -0
  302. admin/{images → assets/images}/flags/sv.png +0 -0
  303. admin/{images → assets/images}/flags/sx.png +0 -0
  304. admin/{images → assets/images}/flags/sy.png +0 -0
  305. admin/{images → assets/images}/flags/sz.png +0 -0
  306. admin/{images → assets/images}/flags/ta.png +0 -0
  307. admin/{images → assets/images}/flags/tc.png +0 -0
  308. admin/{images → assets/images}/flags/td.png +0 -0
  309. admin/{images → assets/images}/flags/tf.png +0 -0
  310. admin/{images → assets/images}/flags/tg.png +0 -0
  311. admin/{images → assets/images}/flags/th.png +0 -0
  312. admin/{images → assets/images}/flags/tj.png +0 -0
  313. admin/{images → assets/images}/flags/tk.png +0 -0
  314. admin/{images → assets/images}/flags/tl.png +0 -0
  315. admin/{images → assets/images}/flags/tm.png +0 -0
  316. admin/{images → assets/images}/flags/tn.png +0 -0
  317. admin/{images → assets/images}/flags/to.png +0 -0
  318. admin/{images → assets/images}/flags/tp.png +0 -0
  319. admin/{images → assets/images}/flags/tr.png +0 -0
  320. admin/{images → assets/images}/flags/tt.png +0 -0
  321. admin/{images → assets/images}/flags/tv.png +0 -0
  322. admin/{images → assets/images}/flags/tw.png +0 -0
  323. admin/{images → assets/images}/flags/tz.png +0 -0
  324. admin/{images → assets/images}/flags/ua.png +0 -0
  325. admin/{images → assets/images}/flags/ug.png +0 -0
  326. admin/{images → assets/images}/flags/uk.png +0 -0
  327. admin/{images → assets/images}/flags/um.png +0 -0
  328. admin/{images → assets/images}/flags/us.png +0 -0
  329. admin/{images → assets/images}/flags/uy.png +0 -0
  330. admin/{images → assets/images}/flags/uz.png +0 -0
  331. admin/{images → assets/images}/flags/va.png +0 -0
  332. admin/{images → assets/images}/flags/vc.png +0 -0
  333. admin/{images → assets/images}/flags/ve.png +0 -0
  334. admin/{images → assets/images}/flags/vg.png +0 -0
  335. admin/{images → assets/images}/flags/vi.png +0 -0
  336. admin/{images → assets/images}/flags/vn.png +0 -0
  337. admin/{images → assets/images}/flags/vu.png +0 -0
  338. admin/{images → assets/images}/flags/wa.png +0 -0
  339. admin/{images → assets/images}/flags/wf.png +0 -0
  340. admin/{images → assets/images}/flags/wg.png +0 -0
  341. admin/{images → assets/images}/flags/wl.png +0 -0
  342. admin/{images → assets/images}/flags/wo.png +0 -0
  343. admin/{images → assets/images}/flags/ws.png +0 -0
  344. admin/{images → assets/images}/flags/wv.png +0 -0
  345. admin/{images → assets/images}/flags/xx.png +0 -0
  346. admin/{images → assets/images}/flags/xy.png +0 -0
  347. admin/{images → assets/images}/flags/ye.png +0 -0
  348. admin/{images → assets/images}/flags/yt.png +0 -0
  349. admin/{images → assets/images}/flags/yu.png +0 -0
  350. admin/{images → assets/images}/flags/yv.png +0 -0
  351. admin/{images → assets/images}/flags/za.png +0 -0
  352. admin/{images → assets/images}/flags/zm.png +0 -0
  353. admin/{images → assets/images}/flags/zr.png +0 -0
  354. admin/{images → assets/images}/flags/zw.png +0 -0
  355. admin/{images → assets/images}/index.php +0 -0
  356. admin/{images → assets/images}/platforms/android.png +0 -0
  357. admin/{images → assets/images}/platforms/blackberry-os.png +0 -0
  358. admin/{images → assets/images}/platforms/cellos.png +0 -0
  359. admin/{images → assets/images}/platforms/chromeos.png +0 -0
  360. admin/{images → assets/images}/platforms/ios.png +0 -0
  361. admin/{images → assets/images}/platforms/iphone-osx.png +0 -0
  362. admin/{images → assets/images}/platforms/java.png +0 -0
  363. admin/{images → assets/images}/platforms/linux.png +0 -0
  364. admin/{images → assets/images}/platforms/macos.png +0 -0
  365. admin/{images → assets/images}/platforms/macosx.png +0 -0
  366. admin/{images → assets/images}/platforms/rim-os.png +0 -0
  367. admin/{images → assets/images}/platforms/symbianos.png +0 -0
  368. admin/{images → assets/images}/platforms/unknown.png +0 -0
  369. admin/{images → assets/images}/platforms/win10.png +0 -0
  370. admin/{images → assets/images}/platforms/win7.png +0 -0
  371. admin/{images → assets/images}/platforms/win8-1.png +0 -0
  372. admin/{images → assets/images}/platforms/win8.png +0 -0
  373. admin/{images → assets/images}/platforms/winnt.png +0 -0
  374. admin/{images → assets/images}/platforms/winphone7-5.png +0 -0
  375. admin/{images → assets/images}/platforms/winphone7.png +0 -0
  376. admin/{images → assets/images}/platforms/winphone8-1.png +0 -0
  377. admin/{images → assets/images}/platforms/winphone8.png +0 -0
  378. admin/{images → assets/images}/platforms/winvista.png +0 -0
  379. admin/{images → assets/images}/platforms/winxp.png +0 -0
  380. admin/{js/slimstat.admin.js → assets/js/admin.js} +34 -9
  381. admin/{js → assets/js}/amcharts/LICENSE +0 -0
  382. admin/assets/js/amcharts/charts.js +21 -0
  383. admin/assets/js/amcharts/charts.js.map +1 -0
README.md CHANGED
@@ -4,7 +4,7 @@
4
  **Tags:** analytics, statistics, counter, tracking, reports, wassup, geolocation, online users, spider, tracker, pageviews, stats, maxmind, statistics, statpress, power stats, hit
5
  **Requires at least:** 3.8
6
  **Tested up to:** 5.2
7
- **Stable tag:** 4.8.3
8
 
9
 
10
  ## Description
@@ -12,39 +12,27 @@ The leading web analytics plugin for WordPress. Track returning customers and re
12
 
13
 
14
  ### Main features
15
- * Get access to real-time access log, measure server latency, track page events, keep an eye on your bounce rate and much more.
16
- * Add shortcodes to your website to display reports in widgets or directly in posts and pages.
17
- * Fully compliant with the European GDPR guidelines. You can test your website at [cookiebot.com](https://www.cookiebot.com/en/).
18
- * Exclude users from statistics collection based on various criteria, including; user roles, common robots, IP subnets, admin pages, country, etc.
19
- * Export your reports to CSV, generate user heatmaps or get daily emails right in your mailbox (via premium add-ons).
20
- * Compatible with W3 Total Cache, WP SuperCache, CloudFlare and most caching plugins.
21
- * Support for hashing IP addresses in the database to protect your users privacy.
22
- * Accurate IP geolocation, browser and platform detection (courtesy of [MaxMind](http://www.maxmind.com/) and [Browscap](http://browscap.org)).
23
- * World Map that works on your mobile device, too (courtesy of [amMap](http://www.ammap.com/)).
24
 
25
 
26
  ### Premium Add-ons
27
- Visit [our website](http://www.wp-slimstat.com/addons/) for a list of available extensions.
28
 
29
 
30
  ### Contribute
31
- Slimstat Analytics is an open source project, dependent in large parts on community support. You can fork our [Github repository](https://github.com/slimstat/wp-slimstat) and submit code enhancements, bugfixes or provide localization files to let our plugin speak even more languages. [This page](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BNJR5EZNY3W38)
32
  is for those who would like to donate money - be it once, be it regularly, be it a small or a big amount. Everything is set up for an easy donation process.
33
  Try it out, you'll be amazed how good it feels! If you're on a tight budget, and coding is not your thing, please consider writing [a review](https://wordpress.org/support/plugin/wp-slimstat/reviews/#new-post) for Slimstat as a token of appreciation for our hard work!
34
 
35
 
36
- ### Translations
37
- Slimstat is available in multiple languages: English, Belarusian (UStarCash), Chinese (沐熙工作室), Farsi, French (Michael Bastin, Jean-Michel Venet, Yves Pouplard, Henrick Kac), German (TechnoViel), Indonesian ([ChameleonJohn](https://www.chameleonjohn.com/)), Italian ([Slimstat Dev Team](https://www.wp-slimstat.com)), Japanese (h_a_l_f), Portuguese, Russian (Vitaly), Spanish ([WebHostingHub](http://www.webhostinghub.com/)), Swedish (Per Soderman) and Turkish (Seyit Mehmet Çoban). Is your language missing or incomplete? [Contact us](http://support.wp-slimstat.com/) today.
38
-
39
-
40
- ### Reviews and Feedback
41
- * This is by far the most accurate and in-depth tracking plugin I've encountered for WordPress [MiMango](https://wordpress.org/support/topic/excellent-plugin-and-service-9)
42
- * I have been relying on SlimStat to not only track all traffic to my sites accurately but also to present the stats in very useful graphic format [JJD3](https://wordpress.org/support/topic/an-essential-plugin-14)
43
- * Thanks you for such an excellent plugin. I am using it to kick Jetpack out of all the wordpress installations that I manage for myself and others - [robertwagnervt](http://wordpress.org/support/topic/plugin-wp-slimstat-excellent-but-some-errors-on-activating)
44
- * I like Slimstat very much and so I decided to use it instead of Piwik - [Joannes](http://wordpress.org/support/topic/plugin-wp-slimstat-slimstat-and-privacy)
45
- * Read all the [reviews](http://wordpress.org/support/view/plugin-reviews/wp-slimstat) and feel free to post your own!
46
-
47
-
48
  ### Requirements
49
  * WordPress 3.8+
50
  * PHP 5.2+ (or 7.1+ if you use the Browscap data file)
@@ -61,12 +49,12 @@ Slimstat is available in multiple languages: English, Belarusian (UStarCash), Ch
61
  3. Click on **Install Now** under WP Slimstat Analytics and then activate the plugin
62
  4. Make sure your template calls `wp_footer()` or the equivalent hook somewhere (possibly just before the `</body>` tag)
63
  5. Go to Slimstat > Settings > Maintenance tab > MaxMind IP to Country section and click on "Install GeoLite DB" to detect your visitors' countries based on their IP addresses
64
- 6. If your `wp-admin` folder is not publicly accessible, make sure to check the [FAQs](http://wordpress.org/extend/plugins/wp-slimstat/faq/) to see if there's anything else you need to do
65
 
66
 
67
  ## Please note
68
  * If you decide to uninstall Slimstat Analytics, all the stats will be **PERMANENTLY** deleted from your database. Make sure to setup a database backup (wp_slim_*) to avoid losing your data.
69
- * If you are upgrading from a version prior to 4.0, please install version 4.0 first to upgrade the database structure and download the new Geolocation data.
70
 
71
 
72
  ## Frequently Asked Questions
@@ -75,8 +63,30 @@ Our knowledge base is available on our [support center](https://docs.wp-slimstat
75
 
76
  ## Changelog
77
 
78
-
79
- ## 4.8.3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
80
  * [Note] Thank you for all the great feedback you provided to our unofficial survey about retiring the 'browser plugins' feature. The vast majority of those who replied confirmed what we already thought. Please consider backing up your database if you would like to preserve this information for future analysis. With this update, we removed the portion of code that tracks that information, but kept the existing data untouched. In a couple of releases, code will be added to actually drop this column from the database.
81
  * [New] If English is not your primary languge, Slimstat will now display a notice asking for your help to [translate our plugin](https://translate.wordpress.org/projects/wp-plugins/wp-slimstat/) in your language. Please consider volunteering for this great opportunity to help our community!
82
  * [Update] We are working with the GlotPress community to improve the way Slimstat speaks your language. We had to change the way certain strings are defined in our source code. Please let us know if you notice any unexpected behavior when analyzing languages, countries and operating systems.
@@ -84,7 +94,7 @@ Our knowledge base is available on our [support center](https://docs.wp-slimstat
84
  * [Update] MozRank has been deprecated, we have replaced it with the Domain Authority metric.
85
  * [Update] Spring cleaning in the 'admin notices' department: removed some obsolete CSS code, replaced by built-in WP classes and definitions.
86
  * [Fix] Changed the default minimum capability to access the reports from 'activate_plugins' to 'manage_options', so that regular administrators (a.k.a. non-super admins) in a multisite environment can still see their own reports (thank you, [homepageware](https://wordpress.org/support/topic/slimstat-and-multisite/)). This update does not affect existing installations: if you want regular admins to see their own stats, please go to Slimstat > Settings > Access Control and change the values in the corresponding fields.
87
- * [Fix] The autorefresh feature for the Activity Log was not working as expected. Thank you to all the users who patiently worked with us to identify the issue.
88
  * [Fix] A conflict between the Async loader and AmCharts 4 was causing the Screen Options tab to not work as expected (thank you, [softfully](https://wordpress.org/support/topic/screen-options-doesnt-open/)).
89
  * [Fix] Removed unused setting 'Expand Reports'
90
 
@@ -94,7 +104,7 @@ Our knowledge base is available on our [support center](https://docs.wp-slimstat
94
  * [New] Many CRM integration plugins rely mostly on the user emails, not usernames. For this reason, a new email field has been added to the database (thank you, [sandrodz](https://github.com/sandrodz)).
95
  * [Update] Changed the preset intervals in the date filter dropdown so that you can get a day over day comparison (Monday over Monday, etc) for improved accuracy.
96
  * [Update] [AmCharts](https://www.amcharts.com/javascript-charts/), the library used to render all of our charts, has been updated to version 4.4.9.
97
- * [Fix] The countdown timer on the Activity Log was not working as expected (thank you, [anniest](https://wordpress.org/support/topic/no-refresh-2/)).
98
  * [Fix] The countdown timer was causing an warning message to appear on other screens.
99
  * [Fix] Minor aesthetic improvements.
100
 
@@ -106,7 +116,7 @@ Our knowledge base is available on our [support center](https://docs.wp-slimstat
106
 
107
 
108
  ### 4.8
109
- * [Note] Now that we have a cleaner foundation to build on, it's time to start introducing new reports and new ways to segment your audience and the traffic they generate. While our users test the latest changes and updates (to confirm that the foundation is indeed solid and bug-free), we are hard at work implementing the first batch of new reports. Some of them will be made available in the free version, while others will be added to our premium add-on, [User Overview](http://www.wp-slimstat.com/downloads/user-overview/). And we need your help! If you think that a specific report should be added to Slimstat, please do not hesitate to let us know!
110
  * [Note] Worried about the recent [news regarding jQuery vulnerabilities](https://www.zdnet.com/article/popular-jquery-javascript-library-impacted-by-prototype-pollution-flaw/)? Slimstat doesn't use jQuery as a dependency, so you can sleep tight knowing that your website will not be affected.
111
  * [Update] [AmCharts](https://www.amcharts.com/javascript-charts/), the library used to render all of our charts, has been updated to version 4. This new release is not backward compatible, so the code to integrate it with Slimstat had to be completely rewritten. Please let us know if you notice any issues.
112
  * [Update] [Plugin Update Checker](https://github.com/YahnisElsts/plugin-update-checker), the library we use to check if a new version of our premium add-ons is available for download, has been update to version 4.6.
@@ -118,49 +128,4 @@ Our knowledge base is available on our [support center](https://docs.wp-slimstat
118
  * [Fix] Google seems to be using a new User Agent string for its "mobile" crawler, which was causing Slimstat from incorrectly identifying visits as coming from mobile devices, instead of bots (thank you, Ron).
119
  * [Fix] An error was being returned if SVG elements were using the A tag on a page (thank you, [snaphappyme](https://wordpress.org/support/topic/uncaught-typeerror-all_linksn-href-indexof/)).
120
  * [Fix] A bug was causing Slimstat to incorrectly geolocate visits to websites behind a Cloudflare load balancer. Please update the IP Address Fix add-on as well.
121
- * [Fix] Tweaked the formula to determine your website bounce rate, and updated the associated description to better reflect the underlying calculations.
122
-
123
-
124
- ### 4.7.9.1
125
- * [Fix] It turns out the new [Browscap Library](https://github.com/slimstat/browscap-db) we introduced requires PHP 7.x, not 5.6 as stated in their documentation. Added some code to prevent fatal errors for those still using an older version of PHP.
126
-
127
-
128
- ### 4.7.9
129
- * [Note] Jason is back! Apologies for the radio silence in the last few months, due to personal reasons. Please know that this plugin is still very much alive and kicking. I'm working on cleaning up my development environment, updating the Git repository and streamlining coding workflows. I'm catching up on past and new feature requests and pending bugfixes. As always, thank you for your continued support.
130
- * [Note] Happy birthday, Slimstat: April 2019 marks your 9th year in the [WordPress repository](https://plugins.trac.wordpress.org/changeset/227217) and your 13th year overall. Not many plugins out there can brag about that!
131
- * [Update] Our optimized fork of the Browscap Library is now available as a public Github repository. Slimstat will now check for updates on Github directly, which streamlines our deployment workflow. Feel free to contact us if you experience any issues with the new data file.
132
-
133
-
134
- ### 4.7.8.3
135
- * [Fix] The opt-out message was being displayed even if the corresponding setting was turned off. Apologies for the inconvenience.
136
-
137
-
138
- ### 4.7.8.2
139
- * [New] The IP to hostname conversion feature now stores in the database the information it calculates, to avoid querying the DNS server over and over again.
140
- * [Update] The opt-out banner is now loaded dynamically, to address HTML caching issues. Thank you, [fuchsws](https://wordpress.org/support/topic/opt-out-message-vs-html-cache).
141
-
142
-
143
- ### 4.7.8.1
144
- * [New] The Customizer now has its own access control settings. This allows admins to control in a more granular way who can do what.
145
- * [Update] If you have an existing opt-in mechanism, asking your users if they want to be tracked, you can now configure Slimstat to use that cookie to determine if a given pageview should be recorded or not.
146
-
147
-
148
- ### 4.7.8
149
- * [Note] A few users have reached out to us to ask if Slimstat would be compliant with the upcoming [General Data Protection Regulation (GDPR)](https://en.wikipedia.org/wiki/General_Data_Protection_Regulation) guidelines and regulations that are about to be activated all across Europe. Based on our understanding of this new law, as long as the hosting provider where you are storing the information collected by Slimstat is GDPR compliant, then you won't have to worry about any extra layers of compliance offered by software like ours. One of our primary goals is to make sure that you and only you are the sole owner of the data collected by our plugin. This has always been what makes Slimstat stand out from the crowd: while Jetpack, Google Analytics and many other services have full unrestricted access to the data they collect on your website, we at Slimstat don't treat our users as *the product* that we sell to other companies.
150
- * [New] Our plugin now honors the [Do Not Track header](https://en.wikipedia.org/wiki/Do_Not_Track). Please note that this feature can be turned off in the settings, and will be enabled by default.
151
- * [New] We introduced an experimental option to allow your users to opt out of tracking via a text box displayed at the bottom of your website. Please go to Settings > Filters to customize the behavior and the message to suit your needs and website layout. You can also use third-party solutions to let your visitors opt out, and then configure Slimstat to read the corresponding cookie they set.
152
- * [New] You can now add reports to the Access Log screen, and customize it just like any other screen in Slimstat.
153
- * [Update] Reintroduced the `interval_minutes` filter, which had been temporarily removed from our code as a side effect of our code clean-up process. Thank you, [mth75](https://wordpress.org/support/topic/wrong-currently-online-value-shortcode/).
154
- * [Update] Moved the button to reset the report layouts to the Customizer screen.
155
- * [Update] Deprecated the Geolocation screen. The World Map report has been moved to the Audience tab. If for some reason you cannot find the World Map, please go to Slimstat > Customize and click the Reset All button.
156
- * [Fix] Filters were not being set when opening the corresponding links in a new window. Thank you, [forumaad](https://wordpress.org/support/topic/bug-empty-filter-line-then-open-at-new-windows/)
157
- * [Fix] Bug affecting the report "Currently Online".
158
- * [Fix] Bug affecting all the filter links after the Export to Excel add-on had been enabled.
159
- * [Fix] Bug affecting the resource filter when "nice permalinks" are not enabled.
160
-
161
-
162
- ### 4.7.7
163
- * [New] We've completely rewritten the portion of code that handles the date ranges in the Filter Bar. In order to simplify things, **we have deprecated** the `interval_direction` filter, which is now expressed by the sign in front of the interval value (positive for going forward from a given start date, and negative for going back in time). Please note that this change affect your existing shortcodes, if they use the aforementioned filter. We will update our documentation in the next few days to remove any reference to this filter, and to avoid any confusion. Please feel free to contact us if you have any questions or to report any issues.
164
- * [New] The comparison chart is now always displayed, using new criteria to determine the range to use. You may want to update your settings (Settings > Reports > Default Time Span > Days, and Reports > Comparison Chart) to mimic the old behavior or hide the comparison chart altogether, if you like.
165
- * [Update] We've reintroduced the various levels of granularity for our charts: hourly (when a single day is selected), daily (for ranges up to 120 days) and monthly. Also, the comparison chart is now always available, regardless of the selected time range. Thank you, [WebsiteOpzetten](https://wordpress.org/support/topic/char-is-not-displayed-when-the-selected-time-range-is-comprised-of-a-single-day/).
166
- * [Update] Tooltips across the interface have a more uniform behavior.
4
  **Tags:** analytics, statistics, counter, tracking, reports, wassup, geolocation, online users, spider, tracker, pageviews, stats, maxmind, statistics, statpress, power stats, hit
5
  **Requires at least:** 3.8
6
  **Tested up to:** 5.2
7
+ **Stable tag:** 4.8.4
8
 
9
 
10
  ## Description
12
 
13
 
14
  ### Main features
15
+ * **Real-time access log**: measure server latency, track page events, keep an eye on your bounce rate and much more.
16
+ * **Shortcodes**: display reports in widgets or directly in posts and pages.
17
+ * **GDPR guidelines**: fully compliant with the European law. You can test your website at [cookiebot.com](https://www.cookiebot.com/en/).
18
+ * **Filters**: exclude users from statistics collection based on various criteria, including user roles, common robots, IP subnets, admin pages, country, etc.
19
+ * **Export to Excel**: download your reports as CSV files, generate user heatmaps or get daily emails right in your mailbox (via premium add-ons).
20
+ * **Cache**: compatible with W3 Total Cache, WP SuperCache, CloudFlare and most caching plugins.
21
+ * **Privacy**: hash IP addresses to protect your users' privacy.
22
+ * **Geolocation**: identify your visitors by city and country, browser type and operating system (courtesy of [MaxMind](https://www.maxmind.com/) and [Browscap](https://browscap.org)).
23
+ * **World Map**: see where your visitors are coming from, even on your mobile device (courtesy of [amMap](https://www.ammap.com/)).
24
 
25
 
26
  ### Premium Add-ons
27
+ Visit [our website](https://www.wp-slimstat.com/addons/) for a list of available extensions.
28
 
29
 
30
  ### Contribute
31
+ Slimstat Analytics is an open source project, dependent in large part on community support. You can fork our [Github repository](https://github.com/slimstat/wp-slimstat) and submit code enhancements, bugfixes or provide localization files to let our plugin speak even more languages. [This page](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=BNJR5EZNY3W38)
32
  is for those who would like to donate money - be it once, be it regularly, be it a small or a big amount. Everything is set up for an easy donation process.
33
  Try it out, you'll be amazed how good it feels! If you're on a tight budget, and coding is not your thing, please consider writing [a review](https://wordpress.org/support/plugin/wp-slimstat/reviews/#new-post) for Slimstat as a token of appreciation for our hard work!
34
 
35
 
 
 
 
 
 
 
 
 
 
 
 
 
36
  ### Requirements
37
  * WordPress 3.8+
38
  * PHP 5.2+ (or 7.1+ if you use the Browscap data file)
49
  3. Click on **Install Now** under WP Slimstat Analytics and then activate the plugin
50
  4. Make sure your template calls `wp_footer()` or the equivalent hook somewhere (possibly just before the `</body>` tag)
51
  5. Go to Slimstat > Settings > Maintenance tab > MaxMind IP to Country section and click on "Install GeoLite DB" to detect your visitors' countries based on their IP addresses
52
+ 6. If your `wp-admin` folder is not publicly accessible, make sure to check our [knowledge base](https://docs.wp-slimstat.com/) to see if there's anything else you need to do
53
 
54
 
55
  ## Please note
56
  * If you decide to uninstall Slimstat Analytics, all the stats will be **PERMANENTLY** deleted from your database. Make sure to setup a database backup (wp_slim_*) to avoid losing your data.
57
+ * If you are upgrading from a version prior to 4.0, please [install version 4.0](https://downloads.wordpress.org/plugin/wp-slimstat.4.0.zip) first to upgrade the database structure and download the new Geolocation data.
58
 
59
 
60
  ## Frequently Asked Questions
63
 
64
  ## Changelog
65
 
66
+ ### 4.8.4
67
+ * [Note] If you're using any of our premium add-ons, please make sure to update them to the latest version available (see Slimstat > Add-ons) as we've updated some references in our code.
68
+ * [Note] We recently received an email from one of our users suggesting that we replace the line charts currently used to display reports over a timeline with **bar charts**, because 'the number of pageviews and IPs are discrete numbers, hence they should also be presented as discrete numbers', according to him. What do you think? Please let us know by [sending us a message](https://support.wp-slimstat.com/) on our support platform. Thank you.
69
+ * [Update] Renamed a few files in the admin. If you're including Slimstat libraries in your custom code, please make sure to check that your references are up-to-date. Also, make sure to clear your cache if you page layout doesn't look right.
70
+ * [Update] [AmCharts](https://www.amcharts.com/javascript-charts/), the library used to render all of our charts, has been updated to version 4.5.3.
71
+ * [Update] When functioning in Client mode, the tracker will now not ignore bots, spiders and the like automatically. Please use the appropriate option under Settings > Exclusions if you would like to ignore bots. This solves an incompatibility issue with some caching plugins which "prefetch" the website, presenting themselves as bots.
72
+ * [Update] Removed tracker notice field under Settings > Maintenance as it was confusing many people and generating extra work for our customer service team.
73
+ * [Update] Removed option to not track "client properties" like screen resolution, etc. Also, removed option to not honor DNT headers, as we received complaints from privacy activists on this matter.
74
+ * [Update] Removed option to change date/time formats and numeric separators: Slimstat will now use the WordPress settings to adjust its behavior.
75
+ * [Update] Removed 'About Slimstat' report, given that some of the information in it has been moved to the Settings.
76
+ * [Update] Removed unused strings, improved contextual descriptions and applied consistent naming conventions across our codebase (first pass).
77
+ * [Update] The Slimstat admin menu is now added to the Admin Bar by default. Please go to Settings > Basic > WordPress Integration and change the corresponding option, if you prefer to use the side menu instead.
78
+ * [Update] Enabled code editor in Settings.
79
+ * [Update] Implemented a new optimized function to retrieve the post count on the Edit Posts/Pages/CPTs screens. Thank you, Lance.
80
+ * [Update] Improved browser detection feature, which will now fallback to the heuristic function if the Browscap data file doesn't contain an exact match for a given browser. This usually happens whenever a new browser version is released, which is not yet included in the data file.
81
+ * [Update] Option to track same-domain referrers is now deactivated by default on new installations.
82
+ * [Update] Enabled wildcards on the exclusion rule by capability.
83
+ * [Update] Improved the overall source code readability score. Now you don't have any other excuses to not contribute to this project!
84
+ * [Update] Table indexes are now enabled by default in the database.
85
+ * [Update] Added new WordPress filter to the Browscap Library, so that third-party tools can manipulate the data before it's returned to the tracker.
86
+ * [Update] Added [nonce](https://wordpress.org/support/article/glossary/#nonce) to Settings page for improved security.
87
+
88
+
89
+ ### 4.8.3
90
  * [Note] Thank you for all the great feedback you provided to our unofficial survey about retiring the 'browser plugins' feature. The vast majority of those who replied confirmed what we already thought. Please consider backing up your database if you would like to preserve this information for future analysis. With this update, we removed the portion of code that tracks that information, but kept the existing data untouched. In a couple of releases, code will be added to actually drop this column from the database.
91
  * [New] If English is not your primary languge, Slimstat will now display a notice asking for your help to [translate our plugin](https://translate.wordpress.org/projects/wp-plugins/wp-slimstat/) in your language. Please consider volunteering for this great opportunity to help our community!
92
  * [Update] We are working with the GlotPress community to improve the way Slimstat speaks your language. We had to change the way certain strings are defined in our source code. Please let us know if you notice any unexpected behavior when analyzing languages, countries and operating systems.
94
  * [Update] MozRank has been deprecated, we have replaced it with the Domain Authority metric.
95
  * [Update] Spring cleaning in the 'admin notices' department: removed some obsolete CSS code, replaced by built-in WP classes and definitions.
96
  * [Fix] Changed the default minimum capability to access the reports from 'activate_plugins' to 'manage_options', so that regular administrators (a.k.a. non-super admins) in a multisite environment can still see their own reports (thank you, [homepageware](https://wordpress.org/support/topic/slimstat-and-multisite/)). This update does not affect existing installations: if you want regular admins to see their own stats, please go to Slimstat > Settings > Access Control and change the values in the corresponding fields.
97
+ * [Fix] The autorefresh feature for the Access Log was not working as expected. Thank you to all the users who patiently worked with us to identify the issue.
98
  * [Fix] A conflict between the Async loader and AmCharts 4 was causing the Screen Options tab to not work as expected (thank you, [softfully](https://wordpress.org/support/topic/screen-options-doesnt-open/)).
99
  * [Fix] Removed unused setting 'Expand Reports'
100
 
104
  * [New] Many CRM integration plugins rely mostly on the user emails, not usernames. For this reason, a new email field has been added to the database (thank you, [sandrodz](https://github.com/sandrodz)).
105
  * [Update] Changed the preset intervals in the date filter dropdown so that you can get a day over day comparison (Monday over Monday, etc) for improved accuracy.
106
  * [Update] [AmCharts](https://www.amcharts.com/javascript-charts/), the library used to render all of our charts, has been updated to version 4.4.9.
107
+ * [Fix] The countdown timer on the Access Log was not working as expected (thank you, [anniest](https://wordpress.org/support/topic/no-refresh-2/)).
108
  * [Fix] The countdown timer was causing an warning message to appear on other screens.
109
  * [Fix] Minor aesthetic improvements.
110
 
116
 
117
 
118
  ### 4.8
119
+ * [Note] Now that we have a cleaner foundation to build on, it's time to start introducing new reports and new ways to segment your audience and the traffic they generate. While our users test the latest changes and updates (to confirm that the foundation is indeed solid and bug-free), we are hard at work implementing the first batch of new reports. Some of them will be made available in the free version, while others will be added to our premium add-on, [User Overview](https://www.wp-slimstat.com/downloads/user-overview/). And we need your help! If you think that a specific report should be added to Slimstat, please do not hesitate to let us know!
120
  * [Note] Worried about the recent [news regarding jQuery vulnerabilities](https://www.zdnet.com/article/popular-jquery-javascript-library-impacted-by-prototype-pollution-flaw/)? Slimstat doesn't use jQuery as a dependency, so you can sleep tight knowing that your website will not be affected.
121
  * [Update] [AmCharts](https://www.amcharts.com/javascript-charts/), the library used to render all of our charts, has been updated to version 4. This new release is not backward compatible, so the code to integrate it with Slimstat had to be completely rewritten. Please let us know if you notice any issues.
122
  * [Update] [Plugin Update Checker](https://github.com/YahnisElsts/plugin-update-checker), the library we use to check if a new version of our premium add-ons is available for download, has been update to version 4.6.
128
  * [Fix] Google seems to be using a new User Agent string for its "mobile" crawler, which was causing Slimstat from incorrectly identifying visits as coming from mobile devices, instead of bots (thank you, Ron).
129
  * [Fix] An error was being returned if SVG elements were using the A tag on a page (thank you, [snaphappyme](https://wordpress.org/support/topic/uncaught-typeerror-all_linksn-href-indexof/)).
130
  * [Fix] A bug was causing Slimstat to incorrectly geolocate visits to websites behind a Cloudflare load balancer. Please update the IP Address Fix add-on as well.
131
+ * [Fix] Tweaked the formula to determine your website bounce rate, and updated the associated description to better reflect the underlying calculations.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
admin/{css/slimstat.css → assets/css/admin.css} RENAMED
@@ -244,10 +244,6 @@
244
  [id^=slim_] a:hover{
245
  text-shadow: 0 0 2px #bbb;
246
  }
247
- [id^=slim_] .slimstat-tooltip-content.expanded{
248
- display: block;
249
- font-weight: normal;
250
- }
251
  [id^=slim_] .inline-icon{
252
  background-color: transparent;
253
  background-position: 0 0;
@@ -457,6 +453,11 @@
457
  float: right;
458
  }
459
 
 
 
 
 
 
460
  /* Add-ons Page */
461
  .wp-list-table.slimstat-addons{
462
  margin-bottom: 20px;
244
  [id^=slim_] a:hover{
245
  text-shadow: 0 0 2px #bbb;
246
  }
 
 
 
 
247
  [id^=slim_] .inline-icon{
248
  background-color: transparent;
249
  background-position: 0 0;
453
  float: right;
454
  }
455
 
456
+ /* Settings */
457
+ .CodeMirror {
458
+ height: auto !important;
459
+ }
460
+
461
  /* Add-ons Page */
462
  .wp-list-table.slimstat-addons{
463
  margin-bottom: 20px;
admin/{css/slimstat.frontend.css → assets/css/slimstat.css} RENAMED
File without changes
admin/{css → assets/css}/slimstat.eot RENAMED
File without changes
admin/{css → assets/css}/slimstat.svg RENAMED
File without changes
admin/{images → assets/images}/browsers/android.png RENAMED
File without changes
admin/{images → assets/images}/browsers/anonymouse.png RENAMED
File without changes
admin/{images → assets/images}/browsers/baiduspider.png RENAMED
File without changes
admin/{images → assets/images}/browsers/bingbot.png RENAMED
File without changes
admin/{images → assets/images}/browsers/blackberry.png RENAMED
File without changes
admin/{images → assets/images}/browsers/cfnetwork.png RENAMED
File without changes
admin/{images → assets/images}/browsers/chrome.png RENAMED
File without changes
admin/{images → assets/images}/browsers/chromium.png RENAMED
File without changes
admin/{images → assets/images}/browsers/default-browser.png RENAMED
File without changes
admin/{images → assets/images}/browsers/edge.png RENAMED
File without changes
admin/{images → assets/images}/browsers/exabotbiggerbetter.png RENAMED
File without changes
admin/{images → assets/images}/browsers/facebookexternalhit.png RENAMED
File without changes
admin/{images → assets/images}/browsers/feedburner.png RENAMED
File without changes
admin/{images → assets/images}/browsers/feedfetcher-google.png RENAMED
File without changes
admin/{images → assets/images}/browsers/firefox.png RENAMED
File without changes
admin/{images → assets/images}/browsers/google-bot.png RENAMED
File without changes
admin/{images → assets/images}/browsers/google-feedfetcher.png RENAMED
File without changes
admin/{images → assets/images}/browsers/google-web-preview.png RENAMED
File without changes
admin/{images → assets/images}/browsers/googlebot.png RENAMED
File without changes
admin/{images → assets/images}/browsers/ie.png RENAMED
File without changes
admin/{images → assets/images}/browsers/iemobile.png RENAMED
File without changes
admin/{images → assets/images}/browsers/internet-archive.png RENAMED
File without changes
admin/{images → assets/images}/browsers/ipad.png RENAMED
File without changes
admin/{images → assets/images}/browsers/iphone.png RENAMED
File without changes
admin/{images → assets/images}/browsers/ipod-touch.png RENAMED
File without changes
admin/{images → assets/images}/browsers/maxthon.png RENAMED
File without changes
admin/{images → assets/images}/browsers/mediapartners-google.png RENAMED
File without changes
admin/{images → assets/images}/browsers/microsoft-webdav.png RENAMED
File without changes
admin/{images → assets/images}/browsers/mozilla.png RENAMED
File without changes
admin/{images → assets/images}/browsers/msnbot.png RENAMED
File without changes
admin/{images → assets/images}/browsers/netscape.png RENAMED
File without changes
admin/{images → assets/images}/browsers/newsgatoronline.png RENAMED
File without changes
admin/{images → assets/images}/browsers/nokia.png RENAMED
File without changes
admin/{images → assets/images}/browsers/opera-mini.png RENAMED
File without changes
admin/{images → assets/images}/browsers/opera-mobi.png RENAMED
File without changes
admin/{images → assets/images}/browsers/opera.png RENAMED
File without changes
admin/{images → assets/images}/browsers/other-browsers-and-os.png RENAMED
File without changes
admin/{images → assets/images}/browsers/pingdom.png RENAMED
File without changes
admin/{images → assets/images}/browsers/pycurl.png RENAMED
File without changes
admin/{images → assets/images}/browsers/python.png RENAMED
File without changes
admin/{images → assets/images}/browsers/reader.png RENAMED
File without changes
admin/{images → assets/images}/browsers/safari.png RENAMED
File without changes
admin/{images → assets/images}/browsers/type1.png RENAMED
File without changes
admin/{images → assets/images}/browsers/type2.png RENAMED
File without changes
admin/{images → assets/images}/browsers/type3.png RENAMED
File without changes
admin/{images → assets/images}/browsers/w3c_validator.png RENAMED
File without changes
admin/{images → assets/images}/browsers/wordpress.png RENAMED
File without changes
admin/{images → assets/images}/browsers/yahoo-slurp.png RENAMED
File without changes
admin/{images → assets/images}/browsers/yandexbot.png RENAMED
File without changes
admin/{images → assets/images}/datepicker.png RENAMED
File without changes
admin/{images → assets/images}/flags/ab.png RENAMED
File without changes
admin/{images → assets/images}/flags/ac.png RENAMED
File without changes
admin/{images → assets/images}/flags/ad.png RENAMED
File without changes
admin/{images → assets/images}/flags/ae.png RENAMED
File without changes
admin/{images → assets/images}/flags/af.png RENAMED
File without changes
admin/{images → assets/images}/flags/ag.png RENAMED
File without changes
admin/{images → assets/images}/flags/ai.png RENAMED
File without changes
admin/{images → assets/images}/flags/ak.png RENAMED
File without changes
admin/{images → assets/images}/flags/al.png RENAMED
File without changes
admin/{images → assets/images}/flags/am.png RENAMED
File without changes
admin/{images → assets/images}/flags/an.png RENAMED
File without changes
admin/{images → assets/images}/flags/ao.png RENAMED
File without changes
admin/{images → assets/images}/flags/ap.png RENAMED
File without changes
admin/{images → assets/images}/flags/aq.png RENAMED
File without changes
admin/{images → assets/images}/flags/ar.png RENAMED
File without changes
admin/{images → assets/images}/flags/as.png RENAMED
File without changes
admin/{images → assets/images}/flags/at.png RENAMED
File without changes
admin/{images → assets/images}/flags/au.png RENAMED
File without changes
admin/{images → assets/images}/flags/aw.png RENAMED
File without changes
admin/{images → assets/images}/flags/ax.png RENAMED
File without changes
admin/{images → assets/images}/flags/ay.png RENAMED
File without changes
admin/{images → assets/images}/flags/az.png RENAMED
File without changes
admin/{images → assets/images}/flags/ba.png RENAMED
File without changes
admin/{images → assets/images}/flags/bb.png RENAMED
File without changes
admin/{images → assets/images}/flags/bd.png RENAMED
File without changes
admin/{images → assets/images}/flags/be.png RENAMED
File without changes
admin/{images → assets/images}/flags/bf.png RENAMED
File without changes
admin/{images → assets/images}/flags/bg.png RENAMED
File without changes
admin/{images → assets/images}/flags/bh.png RENAMED
File without changes
admin/{images → assets/images}/flags/bi.png RENAMED
File without changes
admin/{images → assets/images}/flags/bj.png RENAMED
File without changes
admin/{images → assets/images}/flags/bl.png RENAMED
File without changes
admin/{images → assets/images}/flags/bm.png RENAMED
File without changes
admin/{images → assets/images}/flags/bn.png RENAMED
File without changes
admin/{images → assets/images}/flags/bo.png RENAMED
File without changes
admin/{images → assets/images}/flags/bq.png RENAMED
File without changes
admin/{images → assets/images}/flags/br.png RENAMED
File without changes
admin/{images → assets/images}/flags/bs.png RENAMED
File without changes
admin/{images → assets/images}/flags/bt.png RENAMED
File without changes
admin/{images → assets/images}/flags/bu.png RENAMED
File without changes
admin/{images → assets/images}/flags/bv.png RENAMED
File without changes
admin/{images → assets/images}/flags/bw.png RENAMED
File without changes
admin/{images → assets/images}/flags/by.png RENAMED
File without changes
admin/{images → assets/images}/flags/bz.png RENAMED
File without changes
admin/{images → assets/images}/flags/ca.png RENAMED
File without changes
admin/{images → assets/images}/flags/cc.png RENAMED
File without changes
admin/{images → assets/images}/flags/cd.png RENAMED
File without changes
admin/{images → assets/images}/flags/cf.png RENAMED
File without changes
admin/{images → assets/images}/flags/cg.png RENAMED
File without changes
admin/{images → assets/images}/flags/ch.png RENAMED
File without changes
admin/{images → assets/images}/flags/ci.png RENAMED
File without changes
admin/{images → assets/images}/flags/ck.png RENAMED
File without changes
admin/{images → assets/images}/flags/cl.png RENAMED
File without changes
admin/{images → assets/images}/flags/cm.png RENAMED
File without changes
admin/{images → assets/images}/flags/cn.png RENAMED
File without changes
admin/{images → assets/images}/flags/cn2.png RENAMED
File without changes
admin/{images → assets/images}/flags/co.png RENAMED
File without changes
admin/{images → assets/images}/flags/cp.png RENAMED
File without changes
admin/{images → assets/images}/flags/cr.png RENAMED
File without changes
admin/{images → assets/images}/flags/cs.png RENAMED
File without changes
admin/{images → assets/images}/flags/cu.png RENAMED
File without changes
admin/{images → assets/images}/flags/cv.png RENAMED
File without changes
admin/{images → assets/images}/flags/cw.png RENAMED
File without changes
admin/{images → assets/images}/flags/cx.png RENAMED
File without changes
admin/{images → assets/images}/flags/cy.png RENAMED
File without changes
admin/{images → assets/images}/flags/cz.png RENAMED
File without changes
admin/{images → assets/images}/flags/de.png RENAMED
File without changes
admin/{images → assets/images}/flags/dg.png RENAMED
File without changes
admin/{images → assets/images}/flags/dj.png RENAMED
File without changes
admin/{images → assets/images}/flags/dk.png RENAMED
File without changes
admin/{images → assets/images}/flags/dm.png RENAMED
File without changes
admin/{images → assets/images}/flags/do.png RENAMED
File without changes
admin/{images → assets/images}/flags/dy.png RENAMED
File without changes
admin/{images → assets/images}/flags/dz.png RENAMED
File without changes
admin/{images → assets/images}/flags/ea.png RENAMED
File without changes
admin/{images → assets/images}/flags/ec.png RENAMED
File without changes
admin/{images → assets/images}/flags/ee.png RENAMED
File without changes
admin/{images → assets/images}/flags/eg.png RENAMED
File without changes
admin/{images → assets/images}/flags/eh.png RENAMED
File without changes
admin/{images → assets/images}/flags/en.png RENAMED
File without changes
admin/{images → assets/images}/flags/er.png RENAMED
File without changes
admin/{images → assets/images}/flags/es.png RENAMED
File without changes
admin/{images → assets/images}/flags/et.png RENAMED
File without changes
admin/{images → assets/images}/flags/eu.png RENAMED
File without changes
admin/{images → assets/images}/flags/ew.png RENAMED
File without changes
admin/{images → assets/images}/flags/fi.png RENAMED
File without changes
admin/{images → assets/images}/flags/fj.png RENAMED
File without changes
admin/{images → assets/images}/flags/fk.png RENAMED
File without changes
admin/{images → assets/images}/flags/fl.png RENAMED
File without changes
admin/{images → assets/images}/flags/fm.png RENAMED
File without changes
admin/{images → assets/images}/flags/fo.png RENAMED
File without changes
admin/{images → assets/images}/flags/fr.png RENAMED
File without changes
admin/{images → assets/images}/flags/fx.png RENAMED
File without changes
admin/{images → assets/images}/flags/ga.png RENAMED
File without changes
admin/{images → assets/images}/flags/gb.png RENAMED
File without changes
admin/{images → assets/images}/flags/gc.png RENAMED
File without changes
admin/{images → assets/images}/flags/gd.png RENAMED
File without changes
admin/{images → assets/images}/flags/ge.png RENAMED
File without changes
admin/{images → assets/images}/flags/gf.png RENAMED
File without changes
admin/{images → assets/images}/flags/gg.png RENAMED
File without changes
admin/{images → assets/images}/flags/gh.png RENAMED
File without changes
admin/{images → assets/images}/flags/gi.png RENAMED
File without changes
admin/{images → assets/images}/flags/gl.png RENAMED
File without changes
admin/{images → assets/images}/flags/gm.png RENAMED
File without changes
admin/{images → assets/images}/flags/gn.png RENAMED
File without changes
admin/{images → assets/images}/flags/gp.png RENAMED
File without changes
admin/{images → assets/images}/flags/gq.png RENAMED
File without changes
admin/{images → assets/images}/flags/gr.png RENAMED
File without changes
admin/{images → assets/images}/flags/gs.png RENAMED
File without changes
admin/{images → assets/images}/flags/gt.png RENAMED
File without changes
admin/{images → assets/images}/flags/gu.png RENAMED
File without changes
admin/{images → assets/images}/flags/gw.png RENAMED
File without changes
admin/{images → assets/images}/flags/gy.png RENAMED
File without changes
admin/{images → assets/images}/flags/he.png RENAMED
File without changes
admin/{images → assets/images}/flags/hk.png RENAMED
File without changes
admin/{images → assets/images}/flags/hm.png RENAMED
File without changes
admin/{images → assets/images}/flags/hn.png RENAMED
File without changes
admin/{images → assets/images}/flags/hr.png RENAMED
File without changes
admin/{images → assets/images}/flags/ht.png RENAMED
File without changes
admin/{images → assets/images}/flags/hu.png RENAMED
File without changes
admin/{images → assets/images}/flags/ic.png RENAMED
File without changes
admin/{images → assets/images}/flags/id.png RENAMED
File without changes
admin/{images → assets/images}/flags/ie.png RENAMED
File without changes
admin/{images → assets/images}/flags/il.png RENAMED
File without changes
admin/{images → assets/images}/flags/im.png RENAMED
File without changes
admin/{images → assets/images}/flags/in.png RENAMED
File without changes
admin/{images → assets/images}/flags/io.png RENAMED
File without changes
admin/{images → assets/images}/flags/iq.png RENAMED
File without changes
admin/{images → assets/images}/flags/ir.png RENAMED
File without changes
admin/{images → assets/images}/flags/is.png RENAMED
File without changes
admin/{images → assets/images}/flags/it.png RENAMED
File without changes
admin/{images → assets/images}/flags/ja.png RENAMED
File without changes
admin/{images → assets/images}/flags/je.png RENAMED
File without changes
admin/{images → assets/images}/flags/jm.png RENAMED
File without changes
admin/{images → assets/images}/flags/jo.png RENAMED
File without changes
admin/{images → assets/images}/flags/jp.png RENAMED
File without changes
admin/{images → assets/images}/flags/ka.png RENAMED
File without changes
admin/{images → assets/images}/flags/ke.png RENAMED
File without changes
admin/{images → assets/images}/flags/kg.png RENAMED
File without changes
admin/{images → assets/images}/flags/kh.png RENAMED
File without changes
admin/{images → assets/images}/flags/ki.png RENAMED
File without changes
admin/{images → assets/images}/flags/km.png RENAMED
File without changes
admin/{images → assets/images}/flags/kn.png RENAMED
File without changes
admin/{images → assets/images}/flags/kp.png RENAMED
File without changes
admin/{images → assets/images}/flags/kr.png RENAMED
File without changes
admin/{images → assets/images}/flags/kw.png RENAMED
File without changes
admin/{images → assets/images}/flags/ky.png RENAMED
File without changes
admin/{images → assets/images}/flags/kz.png RENAMED
File without changes
admin/{images → assets/images}/flags/la.png RENAMED
File without changes
admin/{images → assets/images}/flags/lb.png RENAMED
File without changes
admin/{images → assets/images}/flags/lc.png RENAMED
File without changes
admin/{images → assets/images}/flags/lf.png RENAMED
File without changes
admin/{images → assets/images}/flags/li.png RENAMED
File without changes
admin/{images → assets/images}/flags/lk.png RENAMED
File without changes
admin/{images → assets/images}/flags/lr.png RENAMED
File without changes
admin/{images → assets/images}/flags/ls.png RENAMED
File without changes
admin/{images → assets/images}/flags/lt.png RENAMED
File without changes
admin/{images → assets/images}/flags/lu.png RENAMED
File without changes
admin/{images → assets/images}/flags/lv.png RENAMED
File without changes
admin/{images → assets/images}/flags/ly.png RENAMED
File without changes
admin/{images → assets/images}/flags/ma.png RENAMED
File without changes
admin/{images → assets/images}/flags/mc.png RENAMED
File without changes
admin/{images → assets/images}/flags/md.png RENAMED
File without changes
admin/{images → assets/images}/flags/me.png RENAMED
File without changes
admin/{images → assets/images}/flags/mf.png RENAMED
File without changes
admin/{images → assets/images}/flags/mg.png RENAMED
File without changes
admin/{images → assets/images}/flags/mh.png RENAMED
File without changes
admin/{images → assets/images}/flags/mk.png RENAMED
File without changes
admin/{images → assets/images}/flags/ml.png RENAMED
File without changes
admin/{images → assets/images}/flags/mm.png RENAMED
File without changes
admin/{images → assets/images}/flags/mn.png RENAMED
File without changes
admin/{images → assets/images}/flags/mo.png RENAMED
File without changes
admin/{images → assets/images}/flags/mp.png RENAMED
File without changes
admin/{images → assets/images}/flags/mq.png RENAMED
File without changes
admin/{images → assets/images}/flags/mr.png RENAMED
File without changes
admin/{images → assets/images}/flags/ms.png RENAMED
File without changes
admin/{images → assets/images}/flags/mt.png RENAMED
File without changes
admin/{images → assets/images}/flags/mu.png RENAMED
File without changes
admin/{images → assets/images}/flags/mv.png RENAMED
File without changes
admin/{images → assets/images}/flags/mw.png RENAMED
File without changes
admin/{images → assets/images}/flags/mx.png RENAMED
File without changes
admin/{images → assets/images}/flags/my.png RENAMED
File without changes
admin/{images → assets/images}/flags/mz.png RENAMED
File without changes
admin/{images → assets/images}/flags/na.png RENAMED
File without changes
admin/{images → assets/images}/flags/nc.png RENAMED
File without changes
admin/{images → assets/images}/flags/ne.png RENAMED
File without changes
admin/{images → assets/images}/flags/nf.png RENAMED
File without changes
admin/{images → assets/images}/flags/ng.png RENAMED
File without changes
admin/{images → assets/images}/flags/ni.png RENAMED
File without changes
admin/{images → assets/images}/flags/nl.png RENAMED
File without changes
admin/{images → assets/images}/flags/no.png RENAMED
File without changes
admin/{images → assets/images}/flags/np.png RENAMED
File without changes
admin/{images → assets/images}/flags/nr.png RENAMED
File without changes
admin/{images → assets/images}/flags/nu.png RENAMED
File without changes
admin/{images → assets/images}/flags/nz.png RENAMED
File without changes
admin/{images → assets/images}/flags/om.png RENAMED
File without changes
admin/{images → assets/images}/flags/pa.png RENAMED
File without changes
admin/{images → assets/images}/flags/pe.png RENAMED
File without changes
admin/{images → assets/images}/flags/pf.png RENAMED
File without changes
admin/{images → assets/images}/flags/pg.png RENAMED
File without changes
admin/{images → assets/images}/flags/ph.png RENAMED
File without changes
admin/{images → assets/images}/flags/pi.png RENAMED
File without changes
admin/{images → assets/images}/flags/pk.png RENAMED
File without changes
admin/{images → assets/images}/flags/pl.png RENAMED
File without changes
admin/{images → assets/images}/flags/pm.png RENAMED
File without changes
admin/{images → assets/images}/flags/pn.png RENAMED
File without changes
admin/{images → assets/images}/flags/pr.png RENAMED
File without changes
admin/{images → assets/images}/flags/ps.png RENAMED
File without changes
admin/{images → assets/images}/flags/pt.png RENAMED
File without changes
admin/{images → assets/images}/flags/pw.png RENAMED
File without changes
admin/{images → assets/images}/flags/py.png RENAMED
File without changes
admin/{images → assets/images}/flags/qa.png RENAMED
File without changes
admin/{images → assets/images}/flags/ra.png RENAMED
File without changes
admin/{images → assets/images}/flags/rb.png RENAMED
File without changes
admin/{images → assets/images}/flags/rc.png RENAMED
File without changes
admin/{images → assets/images}/flags/re.png RENAMED
File without changes
admin/{images → assets/images}/flags/rh.png RENAMED
File without changes
admin/{images → assets/images}/flags/ri.png RENAMED
File without changes
admin/{images → assets/images}/flags/rl.png RENAMED
File without changes
admin/{images → assets/images}/flags/rm.png RENAMED
File without changes
admin/{images → assets/images}/flags/rn.png RENAMED
File without changes
admin/{images → assets/images}/flags/ro.png RENAMED
File without changes
admin/{images → assets/images}/flags/rp.png RENAMED
File without changes
admin/{images → assets/images}/flags/rs.png RENAMED
File without changes
admin/{images → assets/images}/flags/ru.png RENAMED
File without changes
admin/{images → assets/images}/flags/rw.png RENAMED
File without changes
admin/{images → assets/images}/flags/rz.png RENAMED
File without changes
admin/{images → assets/images}/flags/sa.png RENAMED
File without changes
admin/{images → assets/images}/flags/sb.png RENAMED
File without changes
admin/{images → assets/images}/flags/sc.png RENAMED
File without changes
admin/{images → assets/images}/flags/sd.png RENAMED
File without changes
admin/{images → assets/images}/flags/se.png RENAMED
File without changes
admin/{images → assets/images}/flags/sf.png RENAMED
File without changes
admin/{images → assets/images}/flags/sg.png RENAMED
File without changes
admin/{images → assets/images}/flags/sh.png RENAMED
File without changes
admin/{images → assets/images}/flags/si.png RENAMED
File without changes
admin/{images → assets/images}/flags/sj.png RENAMED
File without changes
admin/{images → assets/images}/flags/sk.png RENAMED
File without changes
admin/{images → assets/images}/flags/sl.png RENAMED
File without changes
admin/{images → assets/images}/flags/sm.png RENAMED
File without changes
admin/{images → assets/images}/flags/sn.png RENAMED
File without changes
admin/{images → assets/images}/flags/so.png RENAMED
File without changes
admin/{images → assets/images}/flags/sq.png RENAMED
File without changes
admin/{images → assets/images}/flags/sr.png RENAMED
File without changes
admin/{images → assets/images}/flags/st.png RENAMED
File without changes
admin/{images → assets/images}/flags/su.png RENAMED
File without changes
admin/{images → assets/images}/flags/sv.png RENAMED
File without changes
admin/{images → assets/images}/flags/sx.png RENAMED
File without changes
admin/{images → assets/images}/flags/sy.png RENAMED
File without changes
admin/{images → assets/images}/flags/sz.png RENAMED
File without changes
admin/{images → assets/images}/flags/ta.png RENAMED
File without changes
admin/{images → assets/images}/flags/tc.png RENAMED
File without changes
admin/{images → assets/images}/flags/td.png RENAMED
File without changes
admin/{images → assets/images}/flags/tf.png RENAMED
File without changes
admin/{images → assets/images}/flags/tg.png RENAMED
File without changes
admin/{images → assets/images}/flags/th.png RENAMED
File without changes
admin/{images → assets/images}/flags/tj.png RENAMED
File without changes
admin/{images → assets/images}/flags/tk.png RENAMED
File without changes
admin/{images → assets/images}/flags/tl.png RENAMED
File without changes
admin/{images → assets/images}/flags/tm.png RENAMED
File without changes
admin/{images → assets/images}/flags/tn.png RENAMED
File without changes
admin/{images → assets/images}/flags/to.png RENAMED
File without changes
admin/{images → assets/images}/flags/tp.png RENAMED
File without changes
admin/{images → assets/images}/flags/tr.png RENAMED
File without changes
admin/{images → assets/images}/flags/tt.png RENAMED
File without changes
admin/{images → assets/images}/flags/tv.png RENAMED
File without changes
admin/{images → assets/images}/flags/tw.png RENAMED
File without changes
admin/{images → assets/images}/flags/tz.png RENAMED
File without changes
admin/{images → assets/images}/flags/ua.png RENAMED
File without changes
admin/{images → assets/images}/flags/ug.png RENAMED
File without changes
admin/{images → assets/images}/flags/uk.png RENAMED
File without changes
admin/{images → assets/images}/flags/um.png RENAMED
File without changes
admin/{images → assets/images}/flags/us.png RENAMED
File without changes
admin/{images → assets/images}/flags/uy.png RENAMED
File without changes
admin/{images → assets/images}/flags/uz.png RENAMED
File without changes
admin/{images → assets/images}/flags/va.png RENAMED
File without changes
admin/{images → assets/images}/flags/vc.png RENAMED
File without changes
admin/{images → assets/images}/flags/ve.png RENAMED
File without changes
admin/{images → assets/images}/flags/vg.png RENAMED
File without changes
admin/{images → assets/images}/flags/vi.png RENAMED
File without changes
admin/{images → assets/images}/flags/vn.png RENAMED
File without changes
admin/{images → assets/images}/flags/vu.png RENAMED
File without changes
admin/{images → assets/images}/flags/wa.png RENAMED
File without changes
admin/{images → assets/images}/flags/wf.png RENAMED
File without changes
admin/{images → assets/images}/flags/wg.png RENAMED
File without changes
admin/{images → assets/images}/flags/wl.png RENAMED
File without changes
admin/{images → assets/images}/flags/wo.png RENAMED
File without changes
admin/{images → assets/images}/flags/ws.png RENAMED
File without changes
admin/{images → assets/images}/flags/wv.png RENAMED
File without changes
admin/{images → assets/images}/flags/xx.png RENAMED
File without changes
admin/{images → assets/images}/flags/xy.png RENAMED
File without changes
admin/{images → assets/images}/flags/ye.png RENAMED
File without changes
admin/{images → assets/images}/flags/yt.png RENAMED
File without changes
admin/{images → assets/images}/flags/yu.png RENAMED
File without changes
admin/{images → assets/images}/flags/yv.png RENAMED
File without changes
admin/{images → assets/images}/flags/za.png RENAMED
File without changes
admin/{images → assets/images}/flags/zm.png RENAMED
File without changes
admin/{images → assets/images}/flags/zr.png RENAMED
File without changes
admin/{images → assets/images}/flags/zw.png RENAMED
File without changes
admin/{images → assets/images}/index.php RENAMED
File without changes
admin/{images → assets/images}/platforms/android.png RENAMED
File without changes
admin/{images → assets/images}/platforms/blackberry-os.png RENAMED
File without changes
admin/{images → assets/images}/platforms/cellos.png RENAMED
File without changes
admin/{images → assets/images}/platforms/chromeos.png RENAMED
File without changes
admin/{images → assets/images}/platforms/ios.png RENAMED
File without changes
admin/{images → assets/images}/platforms/iphone-osx.png RENAMED
File without changes
admin/{images → assets/images}/platforms/java.png RENAMED
File without changes
admin/{images → assets/images}/platforms/linux.png RENAMED
File without changes
admin/{images → assets/images}/platforms/macos.png RENAMED
File without changes
admin/{images → assets/images}/platforms/macosx.png RENAMED
File without changes
admin/{images → assets/images}/platforms/rim-os.png RENAMED
File without changes
admin/{images → assets/images}/platforms/symbianos.png RENAMED
File without changes
admin/{images → assets/images}/platforms/unknown.png RENAMED
File without changes
admin/{images → assets/images}/platforms/win10.png RENAMED
File without changes
admin/{images → assets/images}/platforms/win7.png RENAMED
File without changes
admin/{images → assets/images}/platforms/win8-1.png RENAMED
File without changes
admin/{images → assets/images}/platforms/win8.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winnt.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winphone7-5.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winphone7.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winphone8-1.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winphone8.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winvista.png RENAMED
File without changes
admin/{images → assets/images}/platforms/winxp.png RENAMED
File without changes
admin/{js/slimstat.admin.js → assets/js/admin.js} RENAMED
@@ -8,12 +8,12 @@ if ( typeof SlimStatAdminParams == 'undefined' ) {
8
 
9
  // ----- TABLE OF CONTENTS -----------------------------------------------------------
10
  //
11
- // 1. Data refresh
12
  // 2. Filters
13
- // 3. Activity log
14
  // 4. Customizer
15
  // 5. Miscellaneous
16
- // 6. Init third-party libraries
17
  //
18
  // -----------------------------------------------------------------------------------
19
 
@@ -115,7 +115,7 @@ jQuery( function() {
115
  } );
116
  }
117
 
118
- // Save filters
119
  jQuery( document ).on( 'click', '#slimstat-save-filter', function( e ) {
120
  e.preventDefault();
121
 
@@ -176,7 +176,6 @@ jQuery( function() {
176
  jQuery( '<form id="slimstat-filters-form" method="post"/>' ).appendTo('body');
177
  }
178
 
179
-
180
  jQuery( document ).on( 'click', '.slimstat-filter-link, #toplevel_page_slimview1 a, #wp-admin-bar-slimstat-header li a', function( e ) {
181
  url = jQuery( this ).attr( 'href' );
182
 
@@ -202,7 +201,7 @@ jQuery( function() {
202
  //
203
  // ----- END: FILTERS ------------------------------------------------------------
204
 
205
- // ----- BEGIN: ACTIVITY LOG -----------------------------------------------------
206
  //
207
 
208
  // Delete a pageview when the corresponding button is clicked.
@@ -240,7 +239,7 @@ jQuery( function() {
240
  });
241
 
242
  //
243
- // ----- END: ACTIVITY LOG -------------------------------------------------------
244
 
245
  // ----- BEGIN: CUSTOMIZER -------------------------------------------------------
246
  //
@@ -365,7 +364,7 @@ jQuery( function() {
365
  jQuery( '#slimstat-modal-dialog' ).dialog( 'close' );
366
  } );
367
  },
368
- position: { my: "top center" },
369
  resizable: false
370
  } );
371
  }
@@ -379,12 +378,33 @@ jQuery( function() {
379
  maxLength: 1000
380
  } );
381
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
382
  //
383
  // ----- END: INIT THIRD-PARTY LIBRARIES -----------------------------------------
384
  } );
385
 
386
  // ----- BEGIN: SLIMSTATADMIN HELPER FUNCTIONS ---------------------------------------
387
  var SlimStatAdmin = {
 
 
388
  refresh_report: function( id ) {
389
  return function() {
390
  var inner_content = '#' + id + ' .inside';
@@ -392,6 +412,11 @@ var SlimStatAdmin = {
392
 
393
  jQuery( '#' + id + ' .inside' ).html( '<p class="loading"><i class="slimstat-font-spin4 animate-spin"></i></p>' );
394
 
 
 
 
 
 
395
  data = {
396
  action: 'slimstat_load_report',
397
  security: jQuery( '#meta-box-order-nonce' ).val(),
@@ -414,7 +439,7 @@ var SlimStatAdmin = {
414
  else{
415
  jQuery( inner_content ).fadeOut( 500, function() { jQuery( this ).html( response ).fadeIn( 500 ); } );
416
 
417
- // If we are refreshing the Activity Log, let's reset the countdown timer
418
  if ( id == 'slim_p7_02' ) {
419
  SlimStatAdmin._refresh_timer = SlimStatAdminParams.refresh_interval;
420
  }
8
 
9
  // ----- TABLE OF CONTENTS -----------------------------------------------------------
10
  //
11
+ // 1. Data Refresh
12
  // 2. Filters
13
+ // 3. Access Log
14
  // 4. Customizer
15
  // 5. Miscellaneous
16
+ // 6. Init Third-party Libraries
17
  //
18
  // -----------------------------------------------------------------------------------
19
 
115
  } );
116
  }
117
 
118
+ // Save silters
119
  jQuery( document ).on( 'click', '#slimstat-save-filter', function( e ) {
120
  e.preventDefault();
121
 
176
  jQuery( '<form id="slimstat-filters-form" method="post"/>' ).appendTo('body');
177
  }
178
 
 
179
  jQuery( document ).on( 'click', '.slimstat-filter-link, #toplevel_page_slimview1 a, #wp-admin-bar-slimstat-header li a', function( e ) {
180
  url = jQuery( this ).attr( 'href' );
181
 
201
  //
202
  // ----- END: FILTERS ------------------------------------------------------------
203
 
204
+ // ----- BEGIN: ACCESS LOG -----------------------------------------------------
205
  //
206
 
207
  // Delete a pageview when the corresponding button is clicked.
239
  });
240
 
241
  //
242
+ // ----- END: ACCESS LOG -------------------------------------------------------
243
 
244
  // ----- BEGIN: CUSTOMIZER -------------------------------------------------------
245
  //
364
  jQuery( '#slimstat-modal-dialog' ).dialog( 'close' );
365
  } );
366
  },
367
+ position: { my: 'top center' },
368
  resizable: false
369
  } );
370
  }
378
  maxLength: 1000
379
  } );
380
 
381
+ // Code Editor
382
+ if( typeof wp.codeEditor == 'object' ) {
383
+ jQuery( '[data-code-editor]' ).each( function() {
384
+ var editorSettings = wp.codeEditor.defaultSettings ? _.clone( wp.codeEditor.defaultSettings ) : {};
385
+ editorSettings.codemirror = _.extend(
386
+ {},
387
+ editorSettings.codemirror,
388
+ {
389
+ indentUnit: 2,
390
+ lineNumbers: true,
391
+ mode: jQuery( this ).attr( 'data-code-editor' ),
392
+ tabSize: 2
393
+ }
394
+ );
395
+
396
+ var editor = wp.codeEditor.initialize( jQuery( this ), editorSettings );
397
+ });
398
+ }
399
+
400
  //
401
  // ----- END: INIT THIRD-PARTY LIBRARIES -----------------------------------------
402
  } );
403
 
404
  // ----- BEGIN: SLIMSTATADMIN HELPER FUNCTIONS ---------------------------------------
405
  var SlimStatAdmin = {
406
+ refresh_handle: null,
407
+
408
  refresh_report: function( id ) {
409
  return function() {
410
  var inner_content = '#' + id + ' .inside';
412
 
413
  jQuery( '#' + id + ' .inside' ).html( '<p class="loading"><i class="slimstat-font-spin4 animate-spin"></i></p>' );
414
 
415
+ // Clear the autorefresh timer, if set
416
+ if ( SlimStatAdmin.refresh_handle != null ) {
417
+ clearTimeout( SlimStatAdmin.refresh_handle );
418
+ }
419
+
420
  data = {
421
  action: 'slimstat_load_report',
422
  security: jQuery( '#meta-box-order-nonce' ).val(),
439
  else{
440
  jQuery( inner_content ).fadeOut( 500, function() { jQuery( this ).html( response ).fadeIn( 500 ); } );
441
 
442
+ // If we are refreshing the Access Log, let's reset the countdown timer
443
  if ( id == 'slim_p7_02' ) {
444
  SlimStatAdmin._refresh_timer = SlimStatAdminParams.refresh_interval;
445
  }
admin/{js → assets/js}/amcharts/LICENSE RENAMED
File without changes
admin/assets/js/amcharts/charts.js ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /**
2
+ * @license
3
+ * Copyright (c) 2018 amCharts (Antanas Marcelionis, Martynas Majeris)
4
+ *
5
+ * This sofware is provided under multiple licenses. Please see below for
6
+ * links to appropriate usage.
7
+ *
8
+ * Free amCharts linkware license. Details and conditions:
9
+ * https://github.com/amcharts/amcharts4/blob/master/LICENSE
10
+ *
11
+ * One of the amCharts commercial licenses. Details and pricing:
12
+ * https://www.amcharts.com/online-store/
13
+ * https://www.amcharts.com/online-store/licenses-explained/
14
+ *
15
+ * If in doubt, contact amCharts at contact@amcharts.com
16
+ *
17
+ * PLEASE DO NOT REMOVE THIS COPYRIGHT NOTICE.
18
+ * @hidden
19
+ */
20
+ am4internal_webpackJsonp(["689e"],{XFs4:function(t,e,i){"use strict";Object.defineProperty(e,"__esModule",{value:!0});var a={};i.d(a,"GaugeChartDataItem",function(){return Pt}),i.d(a,"GaugeChart",function(){return At}),i.d(a,"RadarChartDataItem",function(){return ft}),i.d(a,"RadarChart",function(){return xt}),i.d(a,"XYChartDataItem",function(){return G}),i.d(a,"XYChart",function(){return q}),i.d(a,"SerialChartDataItem",function(){return r.b}),i.d(a,"SerialChart",function(){return r.a}),i.d(a,"PieChart3DDataItem",function(){return Vt}),i.d(a,"PieChart3D",function(){return St}),i.d(a,"PieChartDataItem",function(){return Ct.b}),i.d(a,"PieChart",function(){return Ct.a}),i.d(a,"SlicedChart",function(){return Ot}),i.d(a,"SlicedChartDataItem",function(){return kt}),i.d(a,"FlowDiagramDataItem",function(){return zt}),i.d(a,"FlowDiagram",function(){return Ut}),i.d(a,"SankeyDiagramDataItem",function(){return Qt}),i.d(a,"SankeyDiagram",function(){return $t}),i.d(a,"ChordDiagramDataItem",function(){return ne}),i.d(a,"ChordDiagram",function(){return re}),i.d(a,"TreeMapDataItem",function(){return ce}),i.d(a,"TreeMap",function(){return de}),i.d(a,"XYChart3DDataItem",function(){return ve}),i.d(a,"XYChart3D",function(){return be}),i.d(a,"ChartDataItem",function(){return wt.b}),i.d(a,"Chart",function(){return wt.a}),i.d(a,"LegendDataItem",function(){return Nt.b}),i.d(a,"Legend",function(){return Nt.a}),i.d(a,"LegendSettings",function(){return Nt.c}),i.d(a,"HeatLegend",function(){return Pe.a}),i.d(a,"SeriesDataItem",function(){return V.b}),i.d(a,"Series",function(){return V.a}),i.d(a,"XYSeriesDataItem",function(){return R}),i.d(a,"XYSeries",function(){return L}),i.d(a,"LineSeriesDataItem",function(){return it}),i.d(a,"LineSeries",function(){return at}),i.d(a,"LineSeriesSegment",function(){return J}),i.d(a,"CandlestickSeriesDataItem",function(){return Ce}),i.d(a,"CandlestickSeries",function(){return Ie}),i.d(a,"OHLCSeriesDataItem",function(){return _e}),i.d(a,"OHLCSeries",function(){return Te}),i.d(a,"ColumnSeriesDataItem",function(){return oe}),i.d(a,"ColumnSeries",function(){return le}),i.d(a,"StepLineSeriesDataItem",function(){return Se}),i.d(a,"StepLineSeries",function(){return Fe}),i.d(a,"RadarSeriesDataItem",function(){return nt}),i.d(a,"RadarSeries",function(){return rt}),i.d(a,"RadarColumnSeriesDataItem",function(){return Oe}),i.d(a,"RadarColumnSeries",function(){return we}),i.d(a,"PieSeriesDataItem",function(){return It.b}),i.d(a,"PieSeries",function(){return It.a}),i.d(a,"FunnelSeries",function(){return je}),i.d(a,"FunnelSeriesDataItem",function(){return Ne}),i.d(a,"PyramidSeries",function(){return We}),i.d(a,"PyramidSeriesDataItem",function(){return Me}),i.d(a,"PictorialStackedSeries",function(){return Ee}),i.d(a,"PictorialStackedSeriesDataItem",function(){return Be}),i.d(a,"PieTick",function(){return He.a}),i.d(a,"FunnelSlice",function(){return Le}),i.d(a,"PieSeries3DDataItem",function(){return _t}),i.d(a,"PieSeries3D",function(){return Tt}),i.d(a,"TreeMapSeriesDataItem",function(){return he}),i.d(a,"TreeMapSeries",function(){return ue}),i.d(a,"ColumnSeries3DDataItem",function(){return fe}),i.d(a,"ColumnSeries3D",function(){return xe}),i.d(a,"ConeSeriesDataItem",function(){return Ke}),i.d(a,"ConeSeries",function(){return Ge}),i.d(a,"CurvedColumnSeries",function(){return Je}),i.d(a,"CurvedColumnSeriesDataItem",function(){return Ze}),i.d(a,"AxisDataItem",function(){return A.b}),i.d(a,"Axis",function(){return A.a}),i.d(a,"Grid",function(){return ct.a}),i.d(a,"AxisTick",function(){return Qe.a}),i.d(a,"AxisLabel",function(){return $e.a}),i.d(a,"AxisLine",function(){return ti.a}),i.d(a,"AxisFill",function(){return ht.a}),i.d(a,"AxisRenderer",function(){return lt.a}),i.d(a,"AxisBreak",function(){return C.a}),i.d(a,"ValueAxisDataItem",function(){return l.b}),i.d(a,"ValueAxis",function(){return l.a}),i.d(a,"CategoryAxisDataItem",function(){return _}),i.d(a,"CategoryAxis",function(){return T}),i.d(a,"CategoryAxisBreak",function(){return I}),i.d(a,"DateAxisDataItem",function(){return x}),i.d(a,"DateAxis",function(){return v}),i.d(a,"DurationAxisDataItem",function(){return ei}),i.d(a,"DurationAxis",function(){return ii}),i.d(a,"DateAxisBreak",function(){return d}),i.d(a,"ValueAxisBreak",function(){return u.a}),i.d(a,"AxisRendererX",function(){return b.a}),i.d(a,"AxisRendererY",function(){return P.a}),i.d(a,"AxisRendererRadial",function(){return mt}),i.d(a,"AxisLabelCircular",function(){return pt.a}),i.d(a,"AxisRendererCircular",function(){return yt}),i.d(a,"AxisFillCircular",function(){return ut}),i.d(a,"GridCircular",function(){return dt}),i.d(a,"AxisRendererX3D",function(){return pe}),i.d(a,"AxisRendererY3D",function(){return ye}),i.d(a,"Tick",function(){return Xe.a}),i.d(a,"Bullet",function(){return et.a}),i.d(a,"LabelBullet",function(){return Kt}),i.d(a,"CircleBullet",function(){return ai}),i.d(a,"ErrorBullet",function(){return ni}),i.d(a,"XYChartScrollbar",function(){return U}),i.d(a,"ClockHand",function(){return bt}),i.d(a,"FlowDiagramNode",function(){return jt}),i.d(a,"FlowDiagramLink",function(){return Bt}),i.d(a,"SankeyNode",function(){return Gt}),i.d(a,"SankeyLink",function(){return Zt}),i.d(a,"ChordNode",function(){return ee}),i.d(a,"ChordLink",function(){return ae}),i.d(a,"NavigationBarDataItem",function(){return hi}),i.d(a,"NavigationBar",function(){return ui}),i.d(a,"Column",function(){return se}),i.d(a,"Candlestick",function(){return Ae}),i.d(a,"OHLC",function(){return De}),i.d(a,"RadarColumn",function(){return ke}),i.d(a,"Column3D",function(){return me}),i.d(a,"ConeColumn",function(){return Ue}),i.d(a,"CurvedColumn",function(){return qe}),i.d(a,"XYCursor",function(){return B}),i.d(a,"Cursor",function(){return j}),i.d(a,"RadarCursor",function(){return ot});var n=i("m4/l"),r=i("2I/e"),s=i("C6dT"),o=i("vMqJ"),l=i("pR7v"),h=i("+qIf"),u=i("ZoDA"),c=i("aCit"),d=function(t){function e(){var e=t.call(this)||this;return e.className="DateAxisBreak",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"startDate",{get:function(){return this.getPropertyValue("startDate")},set:function(t){this.setPropertyValue("startDate",t)&&(this.startValue=t.getTime(),this.axis&&(this.axis.invalidate(),this.axis.invalidateSeries()))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endDate",{get:function(){return this.getPropertyValue("endDate")},set:function(t){this.setPropertyValue("endDate",t)&&(this.endValue=t.getTime(),this.axis&&(this.axis.invalidate(),this.axis.invalidateSeries()))},enumerable:!0,configurable:!0}),e}(u.a);c.b.registeredClasses.DateAxisBreak=d;var p=i("L91H"),y=i("Mtpk"),g=i("Wglt"),m=i("Gg2j"),f=i("Qkdp"),x=function(t){function e(){var e=t.call(this)||this;return e.className="DateAxisDataItem",e.applyTheme(),e.values.date={},e.values.endDate={},e}return n.c(e,t),Object.defineProperty(e.prototype,"date",{get:function(){return this.dates.date},set:function(t){this.setDate("date",t),this.value=t.getTime()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endDate",{get:function(){return this.dates.endDate},set:function(t){this.setDate("endDate",t),this.endValue=t.getTime()},enumerable:!0,configurable:!0}),e}(l.b),v=function(t){function e(){var e=t.call(this)||this;return e.gridIntervals=new o.b,e.dateFormats=new h.a,e.periodChangeDateFormats=new h.a,e._baseIntervalReal={timeUnit:"day",count:1},e._minDifference={},e.className="DateAxis",e.setPropertyValue("markUnitChange",!0),e.snapTooltip=!0,e.gridIntervals.pushAll([{timeUnit:"millisecond",count:1},{timeUnit:"millisecond",count:5},{timeUnit:"millisecond",count:10},{timeUnit:"millisecond",count:50},{timeUnit:"millisecond",count:100},{timeUnit:"millisecond",count:500},{timeUnit:"second",count:1},{timeUnit:"second",count:5},{timeUnit:"second",count:10},{timeUnit:"second",count:30},{timeUnit:"minute",count:1},{timeUnit:"minute",count:5},{timeUnit:"minute",count:10},{timeUnit:"minute",count:15},{timeUnit:"minute",count:30},{timeUnit:"hour",count:1},{timeUnit:"hour",count:3},{timeUnit:"hour",count:6},{timeUnit:"hour",count:12},{timeUnit:"day",count:1},{timeUnit:"day",count:2},{timeUnit:"day",count:3},{timeUnit:"day",count:4},{timeUnit:"day",count:5},{timeUnit:"week",count:1},{timeUnit:"month",count:1},{timeUnit:"month",count:2},{timeUnit:"month",count:3},{timeUnit:"month",count:6},{timeUnit:"year",count:1},{timeUnit:"year",count:2},{timeUnit:"year",count:5},{timeUnit:"year",count:10},{timeUnit:"year",count:50},{timeUnit:"year",count:100},{timeUnit:"year",count:200},{timeUnit:"year",count:500},{timeUnit:"year",count:1e3},{timeUnit:"year",count:2e3},{timeUnit:"year",count:5e3},{timeUnit:"year",count:1e4},{timeUnit:"year",count:1e5}]),e.axisFieldName="date",e.applyTheme(),e}return n.c(e,t),e.prototype.fillRule=function(t){var e=t.value,i=t.component,a=i._gridInterval,n=p.getDuration(a.timeUnit,a.count);Math.round((e-i.min)/n)/2==Math.round(Math.round((e-i.min)/n)/2)?t.axisFill.__disabled=!0:t.axisFill.__disabled=!1},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),this.dateFormats.hasKey("millisecond")||this.dateFormats.setKey("millisecond",this.language.translate("_date_millisecond")),this.dateFormats.hasKey("second")||this.dateFormats.setKey("second",this.language.translate("_date_second")),this.dateFormats.hasKey("minute")||this.dateFormats.setKey("minute",this.language.translate("_date_minute")),this.dateFormats.hasKey("hour")||this.dateFormats.setKey("hour",this.language.translate("_date_hour")),this.dateFormats.hasKey("day")||this.dateFormats.setKey("day",this.language.translate("_date_day")),this.dateFormats.hasKey("week")||this.dateFormats.setKey("week",this.language.translate("_date_day")),this.dateFormats.hasKey("month")||this.dateFormats.setKey("month",this.language.translate("_date_month")),this.dateFormats.hasKey("year")||this.dateFormats.setKey("year",this.language.translate("_date_year")),this.periodChangeDateFormats.hasKey("millisecond")||this.periodChangeDateFormats.setKey("millisecond",this.language.translate("_date_millisecond")),this.periodChangeDateFormats.hasKey("second")||this.periodChangeDateFormats.setKey("second",this.language.translate("_date_second")),this.periodChangeDateFormats.hasKey("minute")||this.periodChangeDateFormats.setKey("minute",this.language.translate("_date_minute")),this.periodChangeDateFormats.hasKey("hour")||this.periodChangeDateFormats.setKey("hour",this.language.translate("_date_hour")),this.periodChangeDateFormats.hasKey("day")||this.periodChangeDateFormats.setKey("day",this.language.translate("_date_day")),this.periodChangeDateFormats.hasKey("week")||this.periodChangeDateFormats.setKey("week",this.language.translate("_date_day")),this.periodChangeDateFormats.hasKey("month")||this.periodChangeDateFormats.setKey("month",this.language.translate("_date_month")+" "+this.language.translate("_date_year"))},e.prototype.createDataItem=function(){return new x},e.prototype.createAxisBreak=function(){return new d},e.prototype.validateDataItems=function(){var e=this.start,i=this.end,a=(this.max-this.min)/this.baseDuration;t.prototype.validateDataItems.call(this),this.maxZoomFactor=(this.max-this.min)/this.baseDuration,this._deltaMinMax=this.baseDuration/2,e+=(i-e)*(1-a/((this.max-this.min)/this.baseDuration)),this.zoom({start:e,end:i},!1,!0)},e.prototype.handleSelectionExtremesChange=function(){},e.prototype.calculateZoom=function(){var e=this;t.prototype.calculateZoom.call(this);var i=this.chooseInterval(0,this.adjustDifference(this._minZoomed,this._maxZoomed),this._gridCount);p.getDuration(i.timeUnit,i.count)<this.baseDuration&&(i=n.a({},this.baseInterval)),this._gridInterval=i,this._gridDate=p.round(new Date(this.min),i.timeUnit,i.count,this.getFirstWeekDay(),this.dateFormatter.utc),this._nextGridUnit=p.getNextUnit(i.timeUnit),this._intervalDuration=p.getDuration(i.timeUnit,i.count);var a=Math.ceil(this._difference/this._intervalDuration);a=Math.max(-5,Math.floor(this.start*a)-3),p.add(this._gridDate,i.timeUnit,a*i.count,this.dateFormatter.utc),g.each(this.series.iterator(),function(t){if(t.baseAxis==e){var i=t.getAxisField(e),a=p.round(new Date(e._minZoomed),e.baseInterval.timeUnit,e.baseInterval.count).getTime(),n=a.toString(),r=t.dataItemsByAxis.getKey(e.uid).getKey(n),s=0;0!=e.start&&(s=r?(r=e.findFirst(r,a,i)).index:t.dataItems.findClosestIndex(e._minZoomed,function(t){return t[i]},"left"));var o=e.baseInterval,l=p.add(p.round(new Date(e._maxZoomed),o.timeUnit,o.count,e.getFirstWeekDay(),e.dateFormatter.utc),o.timeUnit,o.count,e.dateFormatter.utc).getTime(),h=l.toString(),u=t.dataItemsByAxis.getKey(e.uid).getKey(h),c=t.dataItems.length;1!=e.end&&(u?c=u.index:(l-=1,c=t.dataItems.findClosestIndex(l,function(t){return t[i]},"right")+1)),t.startIndex=s,t.endIndex=c,t.dataRangeInvalid&&t.validateDataRange()}})},e.prototype.findFirst=function(t,e,i){var a=t.index;if(a>0){var n=t.component.dataItems.getIndex(a-1),r=n[i];return!r||r.getTime()<e?t:this.findFirst(n,e,i)}return t},e.prototype.validateData=function(){t.prototype.validateData.call(this),y.isNumber(this.baseInterval.count)||(this.baseInterval.count=1)},Object.defineProperty(e.prototype,"minDifference",{get:function(){var t=this,e=Number.MAX_VALUE;return this.series.each(function(i){e>t._minDifference[i.uid]&&(e=t._minDifference[i.uid])}),e!=Number.MAX_VALUE&&0!=e||(e=p.getDuration("day")),e},enumerable:!0,configurable:!0}),e.prototype.seriesDataChangeUpdate=function(t){this._minDifference[t.uid]=Number.MAX_VALUE},e.prototype.postProcessSeriesDataItems=function(){var t=this;this.series.each(function(e){JSON.stringify(e._baseInterval[t.uid])!=JSON.stringify(t.baseInterval)&&(e.dataItems.each(function(e){t.postProcessSeriesDataItem(e)}),e._baseInterval[t.uid]=t.baseInterval)}),this.addEmptyUnitsBreaks()},e.prototype.postProcessSeriesDataItem=function(t){var e=this,i=this.baseInterval,a=t.component.dataItemsByAxis.getKey(this.uid);f.each(t.dates,function(n){var r=t.getDate(n).getTime(),s=p.round(new Date(r),i.timeUnit,i.count,e.getFirstWeekDay(),e.dateFormatter.utc).getTime(),o=p.add(new Date(s),i.timeUnit,i.count,e.dateFormatter.utc);t.setCalculatedValue(n,s,"open"),t.setCalculatedValue(n,o.getTime(),"close"),a.setKey(s.toString(),t)})},e.prototype.addEmptyUnitsBreaks=function(){var t=this;if(this.skipEmptyPeriods&&y.isNumber(this.min)&&y.isNumber(this.max)){var e=this.baseInterval.timeUnit,i=this.baseInterval.count;this.axisBreaks.clear();for(var a=p.round(new Date(this.min),e,i,this.getFirstWeekDay(),this.dateFormatter.utc),n=void 0,r=function(){p.add(a,e,i,s.dateFormatter.utc);var r=a.getTime(),o=r.toString();g.contains(s.series.iterator(),function(e){return!!e.dataItemsByAxis.getKey(t.uid).getKey(o)})?n&&(n.endDate=new Date(r-1),n=void 0):n||((n=s.axisBreaks.create()).startDate=new Date(r))},s=this;a.getTime()<this.max-this.baseDuration;)r()}},e.prototype.fixAxisBreaks=function(){var e=this;t.prototype.fixAxisBreaks.call(this);var i=this.axisBreaks;i.length>0&&i.each(function(t){var i=Math.ceil(e._gridCount*(Math.min(e.end,t.endPosition)-Math.max(e.start,t.startPosition))/(e.end-e.start));t.gridInterval=e.chooseInterval(0,t.adjustedEndValue-t.adjustedStartValue,i);var a=p.round(new Date(t.adjustedStartValue),t.gridInterval.timeUnit,t.gridInterval.count,e.getFirstWeekDay(),e.dateFormatter.utc);a.getTime()>t.startDate.getTime()&&p.add(a,t.gridInterval.timeUnit,t.gridInterval.count,e.dateFormatter.utc),t.gridDate=a})},e.prototype.getFirstWeekDay=function(){return this.dateFormatter?this.dateFormatter.firstDayOfWeek:1},e.prototype.getGridDate=function(t,e){var i=this._gridInterval.timeUnit,a=this._gridInterval.count;p.round(t,i,1,this.getFirstWeekDay(),this.dateFormatter.utc);var n=t.getTime(),r=p.copy(t),s=p.add(r,i,e,this.dateFormatter.utc).getTime(),o=this.isInBreak(s);o&&o.endDate&&(r=new Date(o.endDate.getTime()),p.round(r,i,a,this.getFirstWeekDay(),this.dateFormatter.utc),r.getTime()<o.endDate.getTime()&&p.add(r,i,a,this.dateFormatter.utc),s=r.getTime());var l=this.adjustDifference(n,s);return Math.round(l/p.getDuration(i))<a?this.getGridDate(t,e+a):r},e.prototype.getBreaklessDate=function(t,e,i){var a=new Date(t.endValue);p.round(a,e,i,this.getFirstWeekDay(),this.dateFormatter.utc),p.add(a,e,i,this.dateFormatter.utc);var n=a.getTime();return(t=this.isInBreak(n))?this.getBreaklessDate(t,e,i):a},e.prototype.validateAxisElements=function(){var t=this;if(y.isNumber(this.max)&&y.isNumber(this.min)){this.calculateZoom();var e=this._gridDate.getTime(),i=this._gridInterval.timeUnit,a=this._gridInterval.count,n=p.copy(this._gridDate),r=this._dataItemsIterator;this.resetIterators();for(var s=function(){var t=o.getGridDate(p.copy(n),a);e=t.getTime();var s=p.copy(t);s=p.add(s,i,a,o.dateFormatter.utc);var l=o.dateFormats.getKey(i);o.markUnitChange&&n&&p.checkChange(t,n,o._nextGridUnit,o.dateFormatter.utc)&&"year"!==i&&(l=o.periodChangeDateFormats.getKey(i));var h=o.dateFormatter.format(t,l),u=r.find(function(t){return t.text===h});u.__disabled&&(u.__disabled=!1),o.appendDataItem(u),u.axisBreak=void 0,u.date=t,u.endDate=s,u.text=h,n=t,o.validateDataElement(u)},o=this;e<=this._maxZoomed;)s();var l=this.renderer;g.each(this.axisBreaks.iterator(),function(e){if(e.breakSize>0){var i=e.gridInterval.timeUnit,a=e.gridInterval.count;if(m.getDistance(e.startPoint,e.endPoint)>4*l.minGridDistance)for(var n,s=e.gridDate.getTime(),o=0,h=function(){var l=p.copy(e.gridDate);if(s=p.add(l,i,a*o,t.dateFormatter.utc).getTime(),o++,s>e.adjustedStartValue&&s<e.adjustedEndValue){var h=p.copy(l);h=p.add(h,i,a,t.dateFormatter.utc);var u=t.dateFormats.getKey(i);t.markUnitChange&&n&&p.checkChange(l,n,t._nextGridUnit,t.dateFormatter.utc)&&"year"!==i&&(u=t.periodChangeDateFormats.getKey(i));var c=t.dateFormatter.format(l,u),d=r.find(function(t){return t.text===c});d.__disabled&&(d.__disabled=!1),t.appendDataItem(d),d.axisBreak=e,e.dataItems.moveValue(d),d.date=l,d.endDate=h,d.text=c,n=l,t.validateDataElement(d)}};s<=e.adjustedMax;)h()}})}},e.prototype.validateDataElement=function(t){if(y.isNumber(this.max)&&y.isNumber(this.min)){var e=this.renderer,i=t.value,a=t.endValue;y.isNumber(a)||(a=i);var n=this.valueToPosition(i),r=this.valueToPosition(a),s=r;!t.isRange&&this._gridInterval.count>this.baseInterval.count&&(r=n+(r-n)/(this._gridInterval.count/this.baseInterval.count)),t.position=n;var o=t.tick;o&&!o.disabled&&e.updateTickElement(o,n,r);var l=t.grid;l&&!l.disabled&&e.updateGridElement(l,n,r);var h=t.axisFill;h&&!h.disabled&&(e.updateFillElement(h,n,s),t.isRange||this.fillRule(t));var u=t.mask;u&&e.updateFillElement(u,n,r);var c=t.label;if(c&&!c.disabled){var d=c.location;0==d&&(d=1!=this._gridInterval.count||"week"==this._gridInterval.timeUnit||t.isRange?0:.5),e.updateLabelElement(c,n,r,d)}}},Object.defineProperty(e.prototype,"baseDuration",{get:function(){return p.getDuration(this.baseInterval.timeUnit,this.baseInterval.count)},enumerable:!0,configurable:!0}),e.prototype.adjustMinMax=function(t,e){return{min:t,max:e,step:this.baseDuration}},e.prototype.fixMin=function(t){var e=p.round(new Date(t),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc).getTime();return e+(p.add(new Date(e),this.baseInterval.timeUnit,this.baseInterval.count,this.dateFormatter.utc).getTime()-e)*this.startLocation},e.prototype.fixMax=function(t){var e=p.round(new Date(t),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc).getTime();return e+(p.add(new Date(e),this.baseInterval.timeUnit,this.baseInterval.count,this.dateFormatter.utc).getTime()-e)*this.endLocation},e.prototype.chooseInterval=function(t,e,i){var a=this.gridIntervals,r=a.getIndex(t),s=p.getDuration(r.timeUnit,r.count),o=a.length-1;if(t>=o)return n.a({},a.getIndex(o));var l=Math.ceil(e/s);return e<s&&t>0?n.a({},a.getIndex(t-1)):l<=i?n.a({},a.getIndex(t)):t+1<a.length?this.chooseInterval(t+1,e,i):n.a({},a.getIndex(t))},e.prototype.formatLabel=function(t){return this.dateFormatter.format(t)},e.prototype.dateToPosition=function(t){return this.valueToPosition(t.getTime())},e.prototype.anyToPosition=function(t){return t instanceof Date?this.dateToPosition(t):this.valueToPosition(t)},e.prototype.dateToPoint=function(t){var e=this.dateToPosition(t),i=this.renderer.positionToPoint(e),a=this.renderer.positionToAngle(e);return{x:i.x,y:i.y,angle:a}},e.prototype.anyToPoint=function(t){return t instanceof Date?this.dateToPoint(t):this.valueToPoint(t)},e.prototype.positionToDate=function(t){return new Date(this.positionToValue(t))},e.prototype.getX=function(t,e,i){var a=this.getTimeByLocation(t,e,i);return y.isNumber(a)||(a=this.baseValue),this.renderer.positionToPoint(this.valueToPosition(a)).x},e.prototype.getY=function(t,e,i){var a=this.getTimeByLocation(t,e,i),n=t.getValue("valueX","stack");return y.isNumber(a)||(a=this.baseValue),this.renderer.positionToPoint(this.valueToPosition(a+n)).y},e.prototype.getAngle=function(t,e,i,a){var n=this.getTimeByLocation(t,e,i),r=t.getValue(a,"stack");return y.isNumber(n)||(n=this.baseValue),this.positionToAngle(this.valueToPosition(n+r))},e.prototype.getTimeByLocation=function(t,e,i){if(y.hasValue(e)){y.isNumber(i)||(i=t.workingLocations[e],y.isNumber(i)||(i=0));var a=t.values[e].open,n=t.values[e].close;return y.isNumber(a)&&y.isNumber(n)?a+(n-a)*i:void 0}},e.prototype.processSeriesDataItem=function(t,e){var i,a=t.component,n=t["date"+e];if(n){i=n.getTime();var r,s=t["openDate"+e],o=this._prevSeriesTime;if(s&&(r=s.getTime()),y.isNumber(r)){var l=Math.abs(i-r);this._minDifference[a.uid]>l&&(this._minDifference[a.uid]=l)}var h=i-o;h>0&&this._minDifference[a.uid]>h&&(this._minDifference[a.uid]=h),this._prevSeriesTime=i,a._baseInterval[this.uid]?this.postProcessSeriesDataItem(t):this._baseInterval&&(a._baseInterval[this.uid]=this._baseInterval,this.postProcessSeriesDataItem(t))}},e.prototype.updateAxisBySeries=function(){t.prototype.updateAxisBySeries.call(this);var e=this.chooseInterval(0,this.minDifference,1);this.minDifference>=p.getDuration("day",27)&&"week"==e.timeUnit&&(e.timeUnit="month",e.count=1),this.minDifference>=p.getDuration("day",58)&&1==e.count&&(e.count=2),this.minDifference>=p.getDuration("day",87)&&2==e.count&&(e.count=3),this.minDifference>=p.getDuration("day",174)&&5==e.count&&(e.count=6),this.minDifference>=p.getDuration("hour",23)&&"hour"==e.timeUnit&&(e.timeUnit="day",e.count=1),this.minDifference>=p.getDuration("week",1)-p.getDuration("hour",1)&&"day"==e.timeUnit&&(e.timeUnit="week",e.count=1),this.minDifference>=p.getDuration("year",1)-p.getDuration("day",1.01)&&"month"==e.timeUnit&&(e.timeUnit="year",e.count=1),this._baseIntervalReal=e},Object.defineProperty(e.prototype,"baseInterval",{get:function(){return this._baseInterval?this._baseInterval:this._baseIntervalReal},set:function(t){JSON.stringify(this._baseInterval)!=JSON.stringify(t)&&(this._baseInterval=t,y.isNumber(t.count)||(t.count=1),this.invalidate(),this.postProcessSeriesDataItems())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"skipEmptyPeriods",{get:function(){return this.getPropertyValue("skipEmptyPeriods")},set:function(t){if(this.setPropertyValue("skipEmptyPeriods",t)&&this.invalidateData(),t){var e=this.axisBreaks.template;e.startLine.disabled=!0,e.endLine.disabled=!0,e.fillShape.disabled=!0,e.breakSize=0}},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipDateFormat",{get:function(){return this.getPropertyValue("tooltipDateFormat")},set:function(t){this.setPropertyValue("tooltipDateFormat",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"markUnitChange",{get:function(){return this.getPropertyValue("markUnitChange")},set:function(t){this.setPropertyValue("markUnitChange",t)&&this.invalidateData()},enumerable:!0,configurable:!0}),e.prototype.getTooltipText=function(t){var e,i=this.positionToDate(t);if(i=p.round(i,this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc),y.hasValue(this.tooltipDateFormat))e=this.dateFormatter.format(i,this.tooltipDateFormat);else{var a=this.dateFormats.getKey(this.baseInterval.timeUnit);e=a?this.dateFormatter.format(i,a):this.getPositionLabel(t)}return this.adapter.apply("getTooltipText",e)},e.prototype.roundPosition=function(t,e){var i=this.baseInterval,a=i.timeUnit,n=i.count,r=this.positionToDate(t);if(p.round(r,a,n,this.getFirstWeekDay(),this.dateFormatter.utc),e>0&&p.add(r,a,e*n,this.dateFormatter.utc),this.isInBreak(r.getTime()))for(;r.getTime()<this.max&&(p.add(r,a,n,this.dateFormatter.utc),this.isInBreak(r.getTime())););return this.dateToPosition(r)},e.prototype.getCellStartPosition=function(t){return this.roundPosition(t,0)},e.prototype.getCellEndPosition=function(t){return this.roundPosition(t,1)},e.prototype.getSeriesDataItem=function(t,e,i){var a,n=this.positionToValue(e),r=p.round(new Date(n),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc),s=t.dataItemsByAxis.getKey(this.uid).getKey(r.getTime().toString());!s&&i&&(a="Y"==this.axisLetter?"dateY":"dateX",s=t.dataItems.getIndex(t.dataItems.findClosestIndex(r.getTime(),function(t){return t[a]?t[a].getTime():-1/0},"any")));return s},e.prototype.getPositionLabel=function(t){var e=this.positionToDate(t);return this.dateFormatter.format(e,this.getCurrentLabelFormat())},e.prototype.getCurrentLabelFormat=function(){return this.dateFormats.getKey(this._gridInterval?this._gridInterval.timeUnit:"day")},e.prototype.initRenderer=function(){t.prototype.initRenderer.call(this);var e=this.renderer;e&&(e.ticks.template.location=0,e.grid.template.location=0,e.labels.template.location=0,e.baseGrid.disabled=!0)},Object.defineProperty(e.prototype,"basePoint",{get:function(){return{x:0,y:0}},enumerable:!0,configurable:!0}),e.prototype.zoomToDates=function(t,e,i,a){t=this.dateFormatter.parse(t),e=this.dateFormatter.parse(e),this.zoomToValues(t.getTime(),e.getTime(),i,a)},e.prototype.asIs=function(e){return"baseInterval"==e||t.prototype.asIs.call(this,e)},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.dateFormats=e.dateFormats,this.periodChangeDateFormats=e.periodChangeDateFormats,e._baseInterval&&(this.baseInterval=e.baseInterval)},e.prototype.showTooltipAtPosition=function(e,i){var a=this;if(i||(e=this.toAxisPosition(e)),this.snapTooltip){var n,r=p.round(this.positionToDate(e),this.baseInterval.timeUnit,1,this.getFirstWeekDay(),this.dateFormatter.utc).getTime();if(this.series.each(function(t){if(t.baseAxis==a){var i=a.getSeriesDataItem(t,e,!0);if(i){var s=void 0;t.xAxis==a&&(s=i.dateX),t.yAxis==a&&(s=i.dateY),n?Math.abs(n.getTime()-r)>Math.abs(s.getTime()-r)&&(n=s):n=s}}}),n){var s=n.getTime();n=p.round(new Date(s),this.baseInterval.timeUnit,this.baseInterval.count,this.getFirstWeekDay(),this.dateFormatter.utc),s=n.getTime(),n=new Date(n.getTime()+this.baseDuration*this.renderer.tooltipLocation),e=this.dateToPosition(n),this.series.each(function(t){var e=t.dataItemsByAxis.getKey(a.uid).getKey(s.toString()),i=t.showTooltipAtDataItem(e);i?a.chart._seriesPoints.push({series:t,point:i}):(t.tooltipText||t.tooltipHTML)&&t.hideTooltip()})}}t.prototype.showTooltipAtPosition.call(this,e,!0)},Object.defineProperty(e.prototype,"snapTooltip",{get:function(){return this.getPropertyValue("snapTooltip")},set:function(t){this.setPropertyValue("snapTooltip",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"gridInterval",{get:function(){return this._gridInterval},enumerable:!0,configurable:!0}),e.prototype.makeGap=function(t,e){var i=t.component;if(t&&e&&(!i.connect&&y.isNumber(i.autoGapCount)&&i.baseAxis==this&&t.dates["date"+this.axisLetter].getTime()-e.dates["date"+this.axisLetter].getTime()>i.autoGapCount*this.baseDuration))return!0;return!1},e}(l.a);c.b.registeredClasses.DateAxis=v,c.b.registeredClasses.DateAxisDataItem=x;var b=i("k6kv"),P=i("OXm9"),A=i("AAkI"),C=i("Uslz"),I=function(t){function e(){var e=t.call(this)||this;return e.className="CategoryAxisBreak",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"startPosition",{get:function(){if(this.axis)return this.axis.indexToPosition(this.adjustedStartValue)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endPosition",{get:function(){if(this.axis)return this.axis.indexToPosition(this.adjustedEndValue)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startCategory",{get:function(){return this.getPropertyValue("startCategory")},set:function(t){this.setPropertyValue("startCategory",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endCategory",{get:function(){return this.getPropertyValue("endCategory")},set:function(t){this.setPropertyValue("endCategory",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startValue",{get:function(){var t=this.getPropertyValue("startCategory");return t?this.axis.categoryToIndex(t):this.getPropertyValue("startValue")},set:function(t){this.setPropertyValue("startValue",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endValue",{get:function(){var t=this.getPropertyValue("endCategory");return t?this.axis.categoryToIndex(t):this.getPropertyValue("endValue")},set:function(t){this.setPropertyValue("endValue",t)&&this.axis&&(this.axis.invalidateDataItems(),this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),e}(C.a);c.b.registeredClasses.CategoryAxisBreak=I;var D=i("x79X"),_=function(t){function e(){var e=t.call(this)||this;return e.adapter=new D.a(e),e.seriesDataItems={},e.className="CategoryAxisDataItem",e.text="{category}",e.locations.category=0,e.locations.endCategory=1,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"category",{get:function(){return this.adapter.isEnabled("category")?this.adapter.apply("category",this.properties.category):this.properties.category},set:function(t){this.setProperty("category",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endCategory",{get:function(){return this.properties.endCategory},set:function(t){this.setProperty("endCategory",t)},enumerable:!0,configurable:!0}),e}(A.b),T=function(t){function e(){var e=t.call(this)||this;return e.dataItemsByCategory=new h.a,e.className="CategoryAxis",e.axisFieldName="category",e._lastDataItem=e.createDataItem(),e._lastDataItem.component=e,e._disposers.push(e._lastDataItem),e.applyTheme(),e}return n.c(e,t),e.prototype.createDataItem=function(){return new _},e.prototype.createAxisBreak=function(){return new I},e.prototype.processSeriesDataItem=function(e,i){t.prototype.processSeriesDataItem.call(this,e,i);var a=e["category"+this.axisLetter],n=this.dataItemsByCategory.getKey(a);if(n){var r=e.component.uid,s=n.seriesDataItems[r];s||(s=[],n.seriesDataItems[r]=s),s.push(e)}},e.prototype.validateDataRange=function(){var i=this;t.prototype.validateDataRange.call(this),g.each(this._series.iterator(),function(t){if(t.xAxis instanceof e&&t.yAxis instanceof e)t.invalidateDataRange();else{var a=i.positionToIndex(i.start),n=i.positionToIndex(i.end);n>=i.dataItems.length&&n--;for(var r=t.uid,s=void 0,o=void 0,l=a;l<=n;l++){var h=i.dataItems.getIndex(l);if(h){var u=h.seriesDataItems[r];if(u)for(var c=0;c<u.length;c++){var d=u[c];if(d){var p=d.index;(!y.isNumber(s)||p<s)&&(s=p),(!y.isNumber(o)||p>o)&&(o=p)}}}}y.isNumber(s)?t.startIndex=s:t.start=i.start,y.isNumber(o)?t.endIndex=o+1:t.end=i.end,i.axisBreaks.length>0&&t.invalidateDataRange()}})},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this);var i=this.dataItems.length,a=m.fitToRange(Math.floor(this.start*i-1),0,i),n=m.fitToRange(Math.ceil(this.end*i),0,i);this.renderer.invalid&&this.renderer.validate();var r=this.renderer.axisLength/this.renderer.minGridDistance,s=Math.min(this.dataItems.length,Math.ceil((n-a)/r));if(this._startIndex=Math.floor(a/s)*s,this._endIndex=Math.ceil(this.end*i),this.fixAxisBreaks(),this._startIndex==this._endIndex&&this._endIndex++,this._frequency=s,!(this.axisLength<=0)){this.maxZoomFactor=this.dataItems.length,this.dataItems.length<=0&&(this.maxZoomFactor=1),this.resetIterators(),a=m.max(0,this._startIndex-this._frequency),n=m.min(this.dataItems.length,this._endIndex+this._frequency);for(var o=0,l=0;l<a;l++){(u=this.dataItems.getIndex(l)).__disabled=!0}l=n;for(var h=this.dataItems.length;l<h;l++){(u=this.dataItems.getIndex(l)).__disabled=!0}for(l=a;l<n;l++)if(l<this.dataItems.length){var u=this.dataItems.getIndex(l);if(l/this._frequency==Math.round(l/this._frequency))this.isInBreak(l)||(this.appendDataItem(u),this.validateDataElement(u,o)),o++;else u.__disabled=!0}this.appendDataItem(this._lastDataItem),this.validateDataElement(this._lastDataItem,o+1,this.dataItems.length),this.axisBreaks.each(function(t){var i=t.adjustedStartValue,a=t.adjustedEndValue;if(m.intersect({start:i,end:a},{start:e._startIndex,end:e._endIndex}))for(var n=m.fitToRange(Math.ceil(e._frequency/t.breakSize),1,a-i),r=0,s=i;s<=a;s+=n){var o=e.dataItems.getIndex(s);e.appendDataItem(o),e.validateDataElement(o,r),r++}}),this.validateBreaks(),this.validateAxisRanges(),this.ghostLabel.invalidate(),this.renderer.invalidateLayout()}},e.prototype.validateDataElement=function(e,i,a){t.prototype.validateDataElement.call(this,e);var n=this.renderer;y.isNumber(a)||(a=this.categoryToIndex(e.category));var r=this.categoryToIndex(e.endCategory);y.isNumber(r)||(r=a);var s,o,l,h=this.indexToPosition(a,e.locations.category),u=this.indexToPosition(r,e.locations.endCategory);e.position=h,e.isRange&&(s=r,o=this.indexToPosition(a,e.locations.category),l=this.indexToPosition(s,e.locations.endCategory)),e.point=n.positionToPoint(h);var c=e.tick;c&&!c.disabled&&n.updateTickElement(c,h,u);var d=e.grid;d&&!d.disabled&&n.updateGridElement(d,h,u);var p=e.label;p&&!p.disabled&&(e.isRange&&void 0!=p.text||(e.text=e.text),n.updateLabelElement(p,h,u),(e.label.measuredWidth>this.ghostLabel.measuredWidth||e.label.measuredHeight>this.ghostLabel.measuredHeight)&&(e.label.html?this.ghostLabel.html=e.label.currentText:this.ghostLabel.text=e.label.currentText));var g=e.axisFill;g&&!g.disabled&&(e.isRange||(s=a+this._frequency,o=this.indexToPosition(a,g.location),l=this.indexToPosition(s,g.location)),n.updateFillElement(g,o,l),e.isRange||this.fillRule(e,i));var m=e.mask;m&&n.updateFillElement(m,o,l)},e.prototype.disposeData=function(){this.dataItemsByCategory.clear(),t.prototype.disposeData.call(this)},e.prototype.processDataItem=function(e,i){t.prototype.processDataItem.call(this,e,i),this.dataItemsByCategory.setKey(e.category,e)},e.prototype.getDataItem=function(t){var e=t[this.dataFields.category],i=this.dataItemsByCategory.getKey(e);return i||this.dataItems.create()},e.prototype.indexToPosition=function(t,e){y.isNumber(e)||(e=.5);var i=this.startIndex,a=this.endIndex,n=this.adjustDifference(i,a),r=this.startLocation;n-=r,n-=1-this.endLocation;var s=this.axisBreaks;return g.eachContinue(s.iterator(),function(e){var n=e.adjustedStartValue,r=e.adjustedEndValue;if(t<i)return!1;if(m.intersect({start:n,end:r},{start:i,end:a})){n=Math.max(i,n),r=Math.min(a,r);var s=e.breakSize;t>r?i+=(r-n)*(1-s):t<n||(t=n+(t-n)*s)}return!0}),m.round((t+e-r-i)/n,5)},e.prototype.categoryToPosition=function(t,e){var i=this.categoryToIndex(t);return this.indexToPosition(i,e)},e.prototype.categoryToPoint=function(t,e){var i=this.categoryToPosition(t,e),a=this.renderer.positionToPoint(i),n=this.renderer.positionToAngle(i);return{x:a.x,y:a.y,angle:n}},e.prototype.anyToPoint=function(t,e){return this.categoryToPoint(t,e)},e.prototype.anyToPosition=function(t,e){return this.categoryToPosition(t,e)},e.prototype.categoryToIndex=function(t){if(y.hasValue(t)){var e=this.dataItemsByCategory.getKey(t);if(e)return e.index}},e.prototype.zoomToCategories=function(t,e){this.zoomToIndexes(this.categoryToIndex(t),this.categoryToIndex(e)+1)},e.prototype.getAnyRangePath=function(t,e,i,a){var n=this.categoryToPosition(t,i),r=this.categoryToPosition(e,a);return this.getPositionRangePath(n,r)},e.prototype.roundPosition=function(t,e){var i=this.positionToIndex(t);return this.indexToPosition(i,e)},e.prototype.getFirstSeriesDataItem=function(t,e){for(var i=0;i<t.dataItems.length;i++){var a=t.dataItems.getIndex(i);if(t.xAxis==this&&a.categoryX==e)return a;if(t.yAxis==this&&a.categoryY==e)return a}},e.prototype.getLastSeriesDataItem=function(t,e){for(var i=t.dataItems.length-1;i>=0;i--){var a=t.dataItems.getIndex(i);if(t.xAxis==this&&a.categoryX==e)return a;if(t.yAxis==this&&a.categoryY==e)return a}},e.prototype.getSeriesDataItem=function(t,e,i){var a=this;if(y.isNumber(e)){var n=this.positionToIndex(e);n>=this.dataItems.length&&n--;var r=this.dataItems.getIndex(n);if(r){var s,o=r.category,l=t.dataItems.getIndex(n);if(l){if(t.xAxis==this&&l.categoryX==o)return l;if(t.yAxis==this&&l.categoryY==o)return l}return t.dataItems.each(function(e){t.xAxis==a&&e.categoryX==o&&(s||(s=e),Math.abs(n-s.index)>Math.abs(n-e.index)&&(s=e)),t.yAxis==a&&e.categoryY==o&&(s||(s=e),Math.abs(n-s.index)>Math.abs(n-e.index)&&(s=e))}),s}}},e.prototype.getX=function(t,e,i){var a;return y.hasValue(e)&&(a=this.categoryToPosition(t.categories[e],i)),y.isNaN(a)?this.basePoint.x:this.renderer.positionToPoint(a).x},e.prototype.getY=function(t,e,i){var a;return y.hasValue(e)&&(a=this.categoryToPosition(t.categories[e],i)),y.isNaN(a)?this.basePoint.y:this.renderer.positionToPoint(a).y},e.prototype.getAngle=function(t,e,i,a){return this.positionToAngle(this.categoryToPosition(t.categories[e],i))},e.prototype.getCellStartPosition=function(t){return this.roundPosition(t,0)},e.prototype.getCellEndPosition=function(t){return this.roundPosition(t,1)},e.prototype.getTooltipText=function(t){var e=this.dataItems.getIndex(this.positionToIndex(t));if(e)return this.adapter.apply("getTooltipText",e.category)},e.prototype.positionToIndex=function(t){(t=m.round(t,10))<0&&(t=0);var e=this.startIndex,i=this.endIndex,a=i-e,n=this.axisBreaks,r=null;return g.eachContinue(n.iterator(),function(n){var s=n.startPosition,o=n.endPosition,l=n.adjustedStartValue,h=n.adjustedEndValue;l=m.max(l,e),h=m.min(h,i);var u=n.breakSize;if(a-=(h-l)*(1-u),t>o)e+=(h-l)*(1-u);else if(!(t<s)){var c=(t-s)/(o-s);return r=l+Math.round(c*(h-l)),!1}return!0}),y.isNumber(r)||(r=Math.floor(t*a+e)),r},e.prototype.positionToCategory=function(t){return this.getPositionLabel(t)},e.prototype.getPositionLabel=function(t){var e=this.dataItems.getIndex(this.positionToIndex(t));if(e)return e.category},Object.defineProperty(e.prototype,"basePoint",{get:function(){return this.renderer.positionToPoint(1)},enumerable:!0,configurable:!0}),e.prototype.initRenderer=function(){t.prototype.initRenderer.call(this),this.renderer.baseGrid.disabled=!0},Object.defineProperty(e.prototype,"frequency",{get:function(){return this._frequency},enumerable:!0,configurable:!0}),e}(A.a);c.b.registeredClasses.CategoryAxis=T,c.b.registeredClasses.CategoryAxisDataItem=_;var V=i("aM7D"),S=i("Vs7R"),F=i("hD5A"),k=i("v9UT"),O=i("hJ5i"),w=i("hGwe"),R=function(t){function e(){var e=t.call(this)||this;return e.className="XYSeriesDataItem",e.values.valueX={stack:0},e.values.valueY={stack:0},e.values.openValueX={},e.values.openValueY={},e.values.dateX={},e.values.dateY={},e.values.openDateX={},e.values.openDateY={},e.setLocation("dateX",.5,0),e.setLocation("dateY",.5,0),e.setLocation("categoryX",.5,0),e.setLocation("categoryY",.5,0),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"valueX",{get:function(){return this.values.valueX.value},set:function(t){this.setValue("valueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueY",{get:function(){return this.values.valueY.value},set:function(t){this.setValue("valueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateX",{get:function(){return this.getDate("dateX")},set:function(t){this.setDate("dateX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dateY",{get:function(){return this.getDate("dateY")},set:function(t){this.setDate("dateY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryX",{get:function(){return this.categories.categoryX},set:function(t){this.setCategory("categoryX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"categoryY",{get:function(){return this.categories.categoryY},set:function(t){this.setCategory("categoryY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openValueX",{get:function(){return this.values.openValueX.value},set:function(t){this.setValue("openValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openValueY",{get:function(){return this.values.openValueY.value},set:function(t){this.setValue("openValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openDateX",{get:function(){return this.getDate("openDateX")},set:function(t){this.setDate("openDateX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openDateY",{get:function(){return this.getDate("openDateY")},set:function(t){this.setDate("openDateY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openCategoryX",{get:function(){return this.categories.openCategoryX},set:function(t){this.setCategory("openCategoryX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"openCategoryY",{get:function(){return this.categories.openCategoryY},set:function(t){this.setCategory("openCategoryY",t)},enumerable:!0,configurable:!0}),e.prototype.getMin=function(t,e,i){var a,n=this;return y.isNumber(i)||(i=0),O.each(t,function(t){var r;r=e?n.getWorkingValue(t):n.getValue(t),((r+=i)<a||!y.isNumber(a))&&(a=r)}),a},e.prototype.getMax=function(t,e,i){var a,n=this;return y.isNumber(i)||(i=0),O.each(t,function(t){var r;r=e?n.getWorkingValue(t):n.getValue(t),((r+=i)>a||!y.isNumber(a))&&(a=r)}),a},e}(V.b),L=function(t){function e(){var e=t.call(this)||this;return e._xAxis=new F.d,e._yAxis=new F.d,e._xValueFields=[],e._yValueFields=[],e._baseInterval={},e.className="XYSeries",e.isMeasured=!1,e.cursorTooltipEnabled=!0,e.cursorHoverEnabled=!0,e.excludeFromTotal=!1,e.mainContainer.mask=new S.a,e.mainContainer.mask.setElement(e.paper.add("path")),e.stacked=!1,e.snapTooltip=!1,e.tooltip.pointerOrientation="horizontal",e.tooltip.events.on("hidden",function(){e.returnBulletDefaultState()},void 0,!1),e._disposers.push(e._xAxis),e._disposers.push(e._yAxis),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("X/Y Series"))},e.prototype.createDataItem=function(){return new R},e.prototype.dataChangeUpdate=function(){this._tmin.clear(),this._tmax.clear(),this._smin.clear(),this._smax.clear(),this.xAxis&&this.xAxis.seriesDataChangeUpdate(this),this.yAxis&&this.yAxis.seriesDataChangeUpdate(this)},e.prototype.validateData=function(){if(this.defineFields(),this.data.length>0&&this.dataChangeUpdate(),t.prototype.validateData.call(this),this.updateItemReaderText(),!y.hasValue(this.dataFields[this._xField])||!y.hasValue(this.dataFields[this._yField]))throw Error('Data fields for series "'+(this.name?this.name:this.uid)+'" are not properly defined.')},e.prototype.processDataItem=function(e,i){try{t.prototype.processDataItem.call(this,e,i),e.events.disable(),this.xAxis.processSeriesDataItem(e,"X"),this.yAxis.processSeriesDataItem(e,"Y"),e.events.enable(),this.setInitialWorkingValues(e)}catch(t){this._chart.raiseCriticalError(t)}},e.prototype.updateDataItem=function(e){t.prototype.updateDataItem.call(this,e),this.xAxis.processSeriesDataItem(e,"X"),this.yAxis.processSeriesDataItem(e,"Y")},e.prototype.setInitialWorkingValues=function(t){},e.prototype.disposeData=function(){if(t.prototype.disposeData.call(this),this.xAxis){var e=this.dataItemsByAxis.getKey(this.xAxis.uid);e&&e.clear(),this.xAxis instanceof T&&this.clearCatAxis(this.xAxis)}if(this.yAxis){var i=this.dataItemsByAxis.getKey(this.yAxis.uid);i&&i.clear(),this.yAxis instanceof T&&this.clearCatAxis(this.yAxis)}},e.prototype.clearCatAxis=function(t){var e=this.uid;t.dataItems.each(function(t){t.seriesDataItems[e]&&(t.seriesDataItems[e]=[])})},e.prototype.defineFields=function(){var t=this.xAxis,e=this.yAxis,i=t.axisFieldName,a=i+"X",n="open"+k.capitalize(i)+"X",r=e.axisFieldName,s=r+"Y",o="open"+k.capitalize(r)+"Y";this._xField=a,this._yField=s,this.dataFields[n]&&(this._xOpenField=n),this.dataFields[o]&&(this._yOpenField=o),this.dataFields[o]||this.baseAxis!=this.yAxis||(this._yOpenField=s),this.dataFields[n]||this.baseAxis!=this.xAxis||(this._xOpenField=a),this.stacked&&this.baseAxis==this.xAxis&&(this._xOpenField=a),this.stacked&&this.baseAxis==this.yAxis&&(this._yOpenField=s),this.xAxis instanceof T&&this.yAxis instanceof T&&(this._yOpenField||(this._yOpenField=s)),this._xValueFields=[],this._yValueFields=[],this.addValueField(this.xAxis,this._xValueFields,this._xField),this.addValueField(this.xAxis,this._xValueFields,this._xOpenField),this.addValueField(this.yAxis,this._yValueFields,this._yField),this.addValueField(this.yAxis,this._yValueFields,this._yOpenField)},e.prototype.addValueField=function(t,e,i){t instanceof l.a&&y.hasValue(this.dataFields[i])&&-1==e.indexOf(i)&&e.push(i)},e.prototype.setCategoryAxisField=function(t,e){y.hasValue(this.dataFields[t])||(this.dataFields[t]=e.dataFields.category)},e.prototype.setDateAxisField=function(t,e){y.hasValue(this.dataFields[t])||(this.dataFields[t]=e.dataFields.date)},e.prototype.afterDraw=function(){t.prototype.afterDraw.call(this),this.createMask()},e.prototype.createMask=function(){if(this.mainContainer.mask){var t=this.getMaskPath();g.each(this.axisRanges.iterator(),function(e){e.axisFill.fillPath&&(e.axisFill.validate(),t+=e.axisFill.fillPath)}),this.mainContainer.mask.path=t}},e.prototype.getMaskPath=function(){return w.rectToPath({x:0,y:0,width:this.xAxis.axisLength,height:this.yAxis.axisLength})},e.prototype.getAxisField=function(t){return t==this.xAxis?this.xField:t==this.yAxis?this.yField:void 0},e.prototype.validateDataItems=function(){this.xAxis.updateAxisBySeries(),this.yAxis.updateAxisBySeries(),t.prototype.validateDataItems.call(this),this.xAxis.postProcessSeriesDataItems(),this.yAxis.postProcessSeriesDataItems()},e.prototype.validateDataRange=function(){this.xAxis.dataRangeInvalid&&this.xAxis.validateDataRange(),this.yAxis.dataRangeInvalid&&this.yAxis.validateDataRange(),t.prototype.validateDataRange.call(this)},e.prototype.validate=function(){this.xAxis.invalid&&this.xAxis.validate(),this.yAxis.invalid&&this.yAxis.validate(),this.y=this.yAxis.pixelY,this.x=this.xAxis.pixelX,this._showBullets=!0;var e=this.minBulletDistance;y.isNumber(e)&&this.baseAxis.axisLength/(this.endIndex-this.startIndex)<e&&(this._showBullets=!1),t.prototype.validate.call(this)},Object.defineProperty(e.prototype,"xAxis",{get:function(){if(this.chart){if(!this._xAxis.get()){var t=this.chart.xAxes.getIndex(0);if(!t)throw Error("There are no X axes on chart.");this.xAxis=t}return this._xAxis.get()}},set:function(t){var e=this._xAxis.get();e!=t&&(e&&(this.dataItemsByAxis.removeKey(e.uid),this._xAxis.dispose(),e.series.removeValue(this)),this._xAxis.set(t,t.registerSeries(this)),this.dataItemsByAxis.setKey(t.uid,new h.a),this.invalidateData())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yAxis",{get:function(){if(this.chart){if(!this._yAxis.get()){var t=this.chart.yAxes.getIndex(0);if(!t)throw Error("There are no Y axes on chart.");this.yAxis=t}return this._yAxis.get()}},set:function(t){var e=this._yAxis.get();e!=t&&(e&&(this.dataItemsByAxis.removeKey(e.uid),this._yAxis.dispose(),e.series.removeValue(this)),this._yAxis.set(t,t.registerSeries(this)),this.dataItemsByAxis.setKey(t.uid,new h.a),this.invalidateData())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"baseAxis",{get:function(){return this._baseAxis||(this.yAxis instanceof v&&(this._baseAxis=this.yAxis),this.xAxis instanceof v&&(this._baseAxis=this.xAxis),this.yAxis instanceof T&&(this._baseAxis=this.yAxis),this.xAxis instanceof T&&(this._baseAxis=this.xAxis),this._baseAxis||(this._baseAxis=this.xAxis)),this._baseAxis},set:function(t){this._baseAxis!=t&&(this._baseAxis=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.processValues=function(e){t.prototype.processValues.call(this,e);var i=this.dataItems,a=1/0,n=-1/0,r=1/0,s=-1/0,o=this.startIndex,l=this.endIndex;e||(o=0,l=this.dataItems.length);for(var h=o;h<l;h++){var u=i.getIndex(h);this.getStackValue(u,e);var c=u.getValue("valueX","stack"),d=u.getValue("valueY","stack");a=m.min(u.getMin(this._xValueFields,e,c),a),r=m.min(u.getMin(this._yValueFields,e,d),r),n=m.max(u.getMax(this._xValueFields,e,c),n),s=m.max(u.getMax(this._yValueFields,e,d),s),this.stacked&&(this.baseAxis==this.xAxis&&(r=m.min(r,d)),this.baseAxis==this.yAxis&&(a=m.min(a,c)))}this.xAxis.processSeriesDataItems(),this.yAxis.processSeriesDataItems();var p=this.xAxis.uid,y=this.yAxis.uid;if(!e&&(this._tmin.getKey(p)!=a||this._tmax.getKey(p)!=n||this._tmin.getKey(y)!=r||this._tmax.getKey(y)!=s)){this._tmin.setKey(p,a),this._tmax.setKey(p,n),this._tmin.setKey(y,r),this._tmax.setKey(y,s);var g=this.stackedSeries;g&&(g.isDisposed()?this.stackedSeries=void 0:g.processValues(!1)),this.dispatchImmediately("extremeschanged")}this._smin.getKey(p)==a&&this._smax.getKey(p)==n&&this._smin.getKey(y)==r&&this._smax.getKey(y)==s||(this._smin.setKey(p,a),this._smax.setKey(p,n),this._smin.setKey(y,r),this._smax.setKey(y,s),(this.appeared||0!=this.start||1!=this.end)&&this.dispatchImmediately("selectionextremeschanged")),!e&&this.stacked&&this.processValues(!0)},e.prototype.hideTooltip=function(){t.prototype.hideTooltip.call(this),this.returnBulletDefaultState(),this._prevTooltipDataItem=void 0},e.prototype.showTooltipAtPosition=function(t,e){var i;if(this.visible&&!this.isHiding&&!this.isShowing){var a=this._xAxis.get(),n=this._yAxis.get();a==this.baseAxis&&(i=a.getSeriesDataItem(this,a.toAxisPosition(t),this.snapTooltip)),n==this.baseAxis&&(i=n.getSeriesDataItem(this,n.toAxisPosition(e),this.snapTooltip));var r=this.showTooltipAtDataItem(i);if(r)return r;if(!this.tooltipText)return}this.hideTooltip()},e.prototype.showTooltipAtDataItem=function(t){if(this.returnBulletDefaultState(t),t&&t.visible&&(this.updateLegendValue(t),this.cursorTooltipEnabled)){this.tooltipDataItem=t;var e=this.tooltipXField,i=this.tooltipYField;if(y.hasValue(t[e])&&y.hasValue(t[i])){var a=this.getPoint(t,e,i,t.locations[e],t.locations[i]);if(a){if(this.tooltipX=a.x,this.tooltipY=a.y,this._prevTooltipDataItem!=t&&(this.dispatchImmediately("tooltipshownat",{type:"tooltipshownat",target:this,dataItem:t}),this._prevTooltipDataItem=t),this.cursorHoverEnabled)try{for(var r=n.g(t.sprites),s=r.next();!s.done;s=r.next()){var o=s.value;!o.parent.visible||o.isHidden||o.__disabled||o.disabled||o.isHiding||(o.isHover=!0)}}catch(t){l={error:t}}finally{try{s&&!s.done&&(h=r.return)&&h.call(r)}finally{if(l)throw l.error}}return this.showTooltip()?k.spritePointToSvg({x:a.x,y:a.y},this):void 0}}}var l,h},e.prototype.returnBulletDefaultState=function(t){if(this._prevTooltipDataItem&&this._prevTooltipDataItem!=t)try{for(var e=n.g(this._prevTooltipDataItem.sprites),i=e.next();!i.done;i=e.next()){var a=i.value;a.isDisposed()?this._prevTooltipDataItem=void 0:a.isHover=!1}}catch(t){r={error:t}}finally{try{i&&!i.done&&(s=e.return)&&s.call(e)}finally{if(r)throw r.error}}var r,s},e.prototype.shouldCreateBullet=function(t,e){var i=e.xField;y.hasValue(i)||(i=this.xField);var a=e.yField;return y.hasValue(a)||(a=this.yField),!(this.xAxis instanceof l.a&&!t.hasValue([i])||this.yAxis instanceof l.a&&!t.hasValue([a]))},e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem,a=e.xField;y.hasValue(a)||(a=this.xField);var n=e.yField;if(y.hasValue(n)||(n=this.yField),this.xAxis instanceof l.a&&!i.hasValue([a])||this.yAxis instanceof l.a&&!i.hasValue([n]))e.visible=!1;else{var r=this.getBulletLocationX(e,a),s=this.getBulletLocationY(e,n),o=this.getPoint(i,a,n,r,s);if(o){var h=o.x,u=o.y;if(y.isNumber(e.locationX)&&this.xOpenField!=this.xField)h-=(h-this.xAxis.getX(i,this.xOpenField))*e.locationX;if(y.isNumber(e.locationY)&&this.yOpenField!=this.yField)u-=(u-this.yAxis.getY(i,this.yOpenField))*e.locationY;e.moveTo({x:h,y:u}),e.visible=!0}else e.visible=!1}},e.prototype.getBulletLocationX=function(t,e){var i=t.locationX,a=t.dataItem;return y.isNumber(i)||(i=a.workingLocations[e]),i},e.prototype.getBulletLocationY=function(t,e){var i=t.locationY,a=t.dataItem;return y.isNumber(i)||(i=a.workingLocations[e]),i},Object.defineProperty(e.prototype,"stacked",{get:function(){return this.getPropertyValue("stacked")},set:function(t){this.setPropertyValue("stacked",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"snapTooltip",{get:function(){return this.getPropertyValue("snapTooltip")},set:function(t){this.setPropertyValue("snapTooltip",t)},enumerable:!0,configurable:!0}),e.prototype.show=function(e){var i,a=this;this.xAxis instanceof l.a&&this.xAxis!=this.baseAxis&&(i=this._xValueFields),this.yAxis instanceof l.a&&this.yAxis!=this.baseAxis&&(i=this._yValueFields);var n,r=this.startIndex,s=this.endIndex,o=0,h=this.defaultState.transitionDuration;y.isNumber(e)&&(h=e),g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],l=t[1];a.sequencedInterpolation&&h>0&&(o=a.sequencedInterpolationDelay*e+h*(e-r)/(s-r)),n=l.show(h,o,i)});var u=t.prototype.show.call(this,e);return n&&!n.isFinished()&&(u=n),u},e.prototype.hide=function(e){var i,a,n=this,r=this.xAxis;r instanceof l.a&&r!=this.baseAxis&&(i=this._xValueFields,a=this.stacked||r.minZoomed<0&&r.maxZoomed>0||this.stackedSeries?0:r.min);var s=this.yAxis;s instanceof l.a&&s!=this.baseAxis&&(i=this._yValueFields,a=this.stacked||s.minZoomed<0&&s.maxZoomed>0||this.stackedSeries?0:s.min);var o=this.startIndex,h=this.endIndex,u=this.hiddenState.transitionDuration;y.isNumber(e)&&(u=e);var c,d=0;g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],r=t[1];0==u?r.hide(0,0,a,i):(n.sequencedInterpolation&&u>0&&(d=n.sequencedInterpolationDelay*e+u*(e-o)/(h-o)),c=r.hide(u,d,a,i))});var p=t.prototype.hide.call(this,u);return p&&!p.isFinished()&&p.delay(d),c&&!c.isFinished()&&(p=c),this.validateDataElements(),p},e.prototype.handleDataItemWorkingValueChange=function(e,i){t.prototype.handleDataItemWorkingValueChange.call(this,e,i);var a=this.baseAxis.series;g.each(a.iterator(),function(t){t.stacked&&t.invalidateProcessedData()})},e.prototype.getStackValue=function(t,e){var i=this;if(this.stacked){var a,n=this.chart,r=n.series.indexOf(this);this.xAxis!=this.baseAxis&&this.xAxis instanceof l.a&&(a=this.xField),this.yAxis!=this.baseAxis&&this.yAxis instanceof l.a&&(a=this.yField),a&&(t.setCalculatedValue(a,0,"stack"),g.eachContinue(n.series.range(0,r).backwards().iterator(),function(n){if(n.xAxis==i.xAxis&&n.yAxis==i.yAxis){n.stackedSeries=i;var r=n.dataItems.getIndex(t.index);if(r&&r.hasValue(i._xValueFields)&&r.hasValue(i._yValueFields)){var s=t.getValue(a),o=void 0;if(o=e?r.getWorkingValue(a)+r.getValue(a,"stack"):r.getValue(a)+r.getValue(a,"stack"),s>=0&&o>0||s<0&&o<0)return t.setCalculatedValue(a,o,"stack"),!1}else if(!n.stacked)return!1}return!0}))}},Object.defineProperty(e.prototype,"xField",{get:function(){return this._xField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yField",{get:function(){return this._yField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xOpenField",{get:function(){return this._xOpenField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yOpenField",{get:function(){return this._yOpenField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipXField",{get:function(){return this._tooltipXField?this._tooltipXField:this._xField},set:function(t){this._tooltipXField=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipYField",{get:function(){return this._tooltipYField?this._tooltipYField:this._yField},set:function(t){this._tooltipYField=t},enumerable:!0,configurable:!0}),e.prototype.min=function(t){return this._tmin.getKey(t.uid)},e.prototype.max=function(t){return this._tmax.getKey(t.uid)},e.prototype.selectionMin=function(t){var e=this._smin.getKey(t.uid);return y.isNumber(e)||(e=this.min(t)),e},e.prototype.selectionMax=function(t){var e=this._smax.getKey(t.uid);return y.isNumber(e)||(e=this.max(t)),e},e.prototype.processConfig=function(e){if(e){if(y.hasValue(e.baseAxis)&&y.isString(e.baseAxis)&&(this.map.hasKey(e.baseAxis)?e.baseAxis=this.map.getKey(e.baseAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.baseAxis+'" found for `baseAxis`.'),delete e.baseAxis)),y.hasValue(e.xAxis)&&y.isString(e.xAxis)&&(this.map.hasKey(e.xAxis)?e.xAxis=this.map.getKey(e.xAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.xAxis+'" found for `xAxis`.'),delete e.xAxis)),y.hasValue(e.yAxis)&&y.isString(e.yAxis)&&(this.map.hasKey(e.yAxis)?e.yAxis=this.map.getKey(e.yAxis):(this.processingErrors.push("[XYSeries ("+(this.name||"unnamed")+')] No axis with id "'+e.yAxis+'" found for `yAxis`.'),delete e.yAxis)),y.hasValue(e.axisRanges)&&y.isArray(e.axisRanges))for(var i=0,a=e.axisRanges.length;i<a;i++){var n=e.axisRanges[i];y.hasValue(n.type)||(n.type="AxisDataItem"),y.hasValue(n.axis)&&y.isString(n.axis)&&this.map.hasKey(n.axis)?n.component=this.map.getKey(n.axis):y.hasValue(n.component)&&y.isString(n.component)&&this.map.hasKey(n.component)&&(n.component=this.map.getKey(n.component))}y.hasValue(e.dataFields)&&y.isObject(e.dataFields)||this.processingErrors.push("`dataFields` is not set for series ["+(this.name||"unnamed")+"]")}t.prototype.processConfig.call(this,e)},e.prototype.getPoint=function(t,e,i,a,n,r,s){var o=this.xAxis.getX(t,e,a),l=this.yAxis.getY(t,i,n);return{x:o=m.fitToRange(o,-1e5,1e5),y:l=m.fitToRange(l,-1e5,1e5)}},e.prototype.updateItemReaderText=function(){var t="";f.each(this.dataFields,function(e,i){t+="{"+e+"} "}),this.itemReaderText=t},Object.defineProperty(e.prototype,"cursorTooltipEnabled",{get:function(){return this.getPropertyValue("cursorTooltipEnabled")},set:function(t){this.setPropertyValue("cursorTooltipEnabled",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cursorHoverEnabled",{get:function(){return this.getPropertyValue("cursorHoverEnabled")},set:function(t){this.setPropertyValue("cursorHoverEnabled",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"excludeFromTotal",{get:function(){return this.getPropertyValue("excludeFromTotal")},set:function(t){this.setPropertyValue("excludeFromTotal",t)},enumerable:!0,configurable:!0}),e}(V.a);c.b.registeredClasses.XYSeries=L,c.b.registeredClasses.XYSeriesDataItem=R;var X=i("zhwk"),Y=i("tjMS"),N=i("qCRI"),j=function(t){function e(){var e=t.call(this)||this;e.point={x:0,y:0},e._stick="none",e.className="Cursor",e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.shouldClone=!1,e.hide(0),e.trackable=!0,e.clickable=!0,e.isMeasured=!1;var i=Object(X.b)();return e._disposers.push(i.body.events.on("down",e.handleCursorDown,e)),e._disposers.push(i.body.events.on("up",e.handleCursorUp,e)),e._disposers.push(i.body.events.on("track",e.handleCursorMove,e)),e.applyTheme(),e}return n.c(e,t),e.prototype.handleCursorMove=function(t){if(!(!this.interactionsEnabled||this.interactions.isTouchProtected&&t.touch)){if(("zoom"==this._generalBehavior||"pan"==this._generalBehavior)&&this.downPoint||Object(X.b)().isLocalElement(t.pointer,this.paper.svg,this.uid)){var e=k.documentPointToSprite(t.pointer.point,this);return"hard"==this._stick&&this._stickPoint&&(e=this._stickPoint),"soft"==this._stick&&this._stickPoint&&(this.fitsToBounds(e)||(e=this._stickPoint)),this.triggerMove(e),e}this.isHidden&&this.isHiding||this.hide()}},e.prototype.hideReal=function(e){if("hard"!=this._stick&&"soft"!=this._stick||!this._stickPoint)return t.prototype.hideReal.call(this,e)},e.prototype.triggerMove=function(t,e){t.x=m.round(t.x,1),t.y=m.round(t.y,1),e&&(this._stick=e),"hard"!=e&&"soft"!=e||(this._stickPoint=t),this.triggerMoveReal(t)},e.prototype.triggerMoveReal=function(t){this.point.x==t.x&&this.point.y==t.y||(this.point=t,this.invalidatePosition(),this.fitsToBounds(t)?this.show(0):this.downPoint||this.hide(0),this.visible&&(this.getPositions(),this.dispatch("cursorpositionchanged")))},e.prototype.triggerDown=function(t){this.triggerDownReal(t)},e.prototype.triggerDownReal=function(t){switch(this._generalBehavior){case"zoom":this.dispatchImmediately("zoomstarted");break;case"select":this.dispatchImmediately("selectstarted");break;case"pan":this.dispatchImmediately("panstarted"),Object(X.b)().setGlobalStyle(N.a.grabbing)}},e.prototype.triggerUp=function(t){this.triggerUpReal(t)},e.prototype.triggerUpReal=function(t){this.updatePoint(this.upPoint);var e=Object(X.b)();if(m.getDistance(this._upPointOrig,this._downPointOrig)>e.getHitOption(this.interactions,"hitTolerance")){switch(this._generalBehavior){case"zoom":this.dispatchImmediately("zoomended");break;case"select":this.dispatchImmediately("selectended");break;case"pan":this.dispatchImmediately("panended"),e.setGlobalStyle(N.a.default)}this.downPoint=void 0,this.updateSelection()}else this.dispatchImmediately("behaviorcanceled"),e.setGlobalStyle(N.a.default),this.downPoint=void 0},e.prototype.updateSelection=function(){},e.prototype.getPositions=function(){this.xPosition=this.point.x/this.innerWidth,this.yPosition=1-this.point.y/this.innerHeight},e.prototype.handleCursorDown=function(t){if(!(!this.interactionsEnabled||this.interactions.isTouchProtected&&t.touch)&&Object(X.b)().isLocalElement(t.pointer,this.paper.svg,this.uid)){var e=k.documentPointToSprite(t.pointer.point,this);this._downPointOrig={x:e.x,y:e.y},t.event.cancelable&&this.shouldPreventGestures(t.touch)&&this.fitsToBounds(e)&&t.event.preventDefault(),this.triggerMove(e),this.triggerDown(e)}},e.prototype.shouldPreventGestures=function(t){return!0},e.prototype.updatePoint=function(t){},e.prototype.handleCursorUp=function(t){if(this.interactionsEnabled&&(("zoom"==this._generalBehavior||"pan"==this._generalBehavior)&&this.downPoint||Object(X.b)().isLocalElement(t.pointer,this.paper.svg,this.uid))){var e=k.documentPointToSprite(t.pointer.point,this);this._upPointOrig={x:e.x,y:e.y},this.triggerMove(e),this.triggerUp(e)}},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart},set:function(t){this._chart=t,y.hasValue(this._chart.plotContainer)&&Object(X.b)().lockElement(this._chart.plotContainer.interactions)},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.Cursor=j;var M=i("8ZqG"),W=i("MIZb"),B=function(t){function e(){var e=t.call(this)||this;e._lineX=new F.d,e._lineY=new F.d,e._xAxis=new F.d,e._yAxis=new F.d,e.className="XYCursor",e.behavior="zoomX",e.maxPanOut=.1;var i=new W.a,a=e.createChild(S.a);a.shouldClone=!1,a.fillOpacity=.2,a.fill=i.getFor("alternativeBackground"),a.isMeasured=!1,a.interactionsEnabled=!1,e.selection=a,e._disposers.push(e.selection);var n=e.createChild(S.a);n.shouldClone=!1,n.stroke=i.getFor("grid"),n.fill=Object(M.c)(),n.strokeDasharray="3,3",n.isMeasured=!1,n.strokeOpacity=.4,n.interactionsEnabled=!1,n.y=0,e.lineX=n,e._disposers.push(e.lineX);var r=e.createChild(S.a);return r.shouldClone=!1,r.stroke=i.getFor("grid"),r.fill=Object(M.c)(),r.strokeDasharray="3,3",r.isMeasured=!1,r.strokeOpacity=.4,r.interactionsEnabled=!1,r.x=0,e.lineY=r,e._disposers.push(e.lineY),e.events.on("sizechanged",e.updateSize,e,!1),e._disposers.push(e._lineX),e._disposers.push(e._lineY),e._disposers.push(e._xAxis),e._disposers.push(e._yAxis),e.mask=e,e.applyTheme(),e}return n.c(e,t),e.prototype.updateSize=function(){this.lineX&&(this.lineX.path=w.moveTo({x:0,y:0})+w.lineTo({x:0,y:this.innerHeight})),this.lineY&&(this.lineY.path=w.moveTo({x:0,y:0})+w.lineTo({x:this.innerWidth,y:0}))},e.prototype.updateSelection=function(){if(this._usesSelection){var t=this.downPoint;if(t){var e=this.point;this.lineX&&(e.x=this.lineX.pixelX),this.lineY&&(e.y=this.lineY.pixelY);var i=this.selection,a=Math.min(e.x,t.x),n=Math.min(e.y,t.y),r=m.round(Math.abs(t.x-e.x),this._positionPrecision),s=m.round(Math.abs(t.y-e.y),this._positionPrecision);switch(this.behavior){case"zoomX":n=0,s=this.pixelHeight;break;case"zoomY":a=0,r=this.pixelWidth;break;case"selectX":n=0,s=this.pixelHeight;break;case"selectY":a=0,r=this.pixelWidth}i.x=a,i.y=n,i.path=w.rectangle(r,s),i.validatePosition()}else this.selection.hide()}},e.prototype.fixPoint=function(t){return t.x=Math.max(0,t.x),t.y=Math.max(0,t.y),t.x=Math.min(this.pixelWidth,t.x),t.y=Math.min(this.pixelHeight,t.y),t},e.prototype.triggerMoveReal=function(e){t.prototype.triggerMoveReal.call(this,e),this.snapToSeries&&!this.snapToSeries.isHidden||this.updateLinePositions(e),this.downPoint&&m.getDistance(this.downPoint,e)>3&&"pan"==this._generalBehavior&&(this.getPanningRanges(),this.dispatch("panning"))},e.prototype.updateLinePositions=function(t){t=this.fixPoint(this.point),this.lineX&&this.lineX.visible&&!this.xAxis&&(this.lineX.x=t.x),this.lineY&&this.lineY.visible&&!this.yAxis&&(this.lineY.y=t.y),this.updateSelection()},e.prototype.triggerDownReal=function(e){if(this.visible&&!this.isHiding)if(this.fitsToBounds(e)){this.downPoint={x:e.x,y:e.y},this.updatePoint(e),this.point.x=this.downPoint.x,this.point.y=this.downPoint.y;var i=this.selection,a=this.downPoint.x,n=this.downPoint.y;this._usesSelection&&(i.x=a,i.y=n,i.path="",i.show()),t.prototype.triggerDownReal.call(this,e)}else this.downPoint=void 0;else this.downPoint=void 0},e.prototype.updatePoint=function(t){this.lineX&&(t.x=this.lineX.pixelX),this.lineY&&(t.y=this.lineY.pixelY)},e.prototype.triggerUpReal=function(e){m.getDistance(this._upPointOrig,this._downPointOrig)>Object(X.b)().getHitOption(this.interactions,"hitTolerance")?this.downPoint&&(this.upPoint=e,this.updatePoint(this.upPoint),this.getRanges(),"selectX"==this.behavior||"selectY"==this.behavior||"selectXY"==this.behavior||this.selection.hide(),t.prototype.triggerUpReal.call(this,e)):(this.selection.hide(0),"pan"==this._generalBehavior&&Object(X.b)().setGlobalStyle(N.a.default));this.downPoint=void 0},e.prototype.getPanningRanges=function(){var t=m.round(this.downPoint.x/this.innerWidth,5),e=m.round(this.downPoint.y/this.innerHeight,5),i=t-m.round(this.point.x/this.innerWidth,5),a=-e+m.round(this.point.y/this.innerHeight,5);this.xRange={start:i,end:1+i},this.yRange={start:a,end:1+a},"panX"==this.behavior&&(this.yRange.start=0,this.yRange.end=1),"panY"==this.behavior&&(this.xRange.start=0,this.xRange.end=1)},e.prototype.getRanges=function(){this.lineX&&(this.upPoint.x=this.lineX.pixelX),this.lineY&&(this.upPoint.y=this.lineY.pixelY),k.used(this.selection);var t=m.round(this.downPoint.x/this.innerWidth,5),e=m.round(this.upPoint.x/this.innerWidth,5),i=m.round(this.downPoint.y/this.innerHeight,5),a=m.round(this.upPoint.y/this.innerHeight,5);this.xRange={start:m.min(t,e),end:m.max(t,e)},this.yRange={start:m.min(i,a),end:m.max(i,a)}},Object.defineProperty(e.prototype,"behavior",{get:function(){return this.getPropertyValue("behavior")},set:function(t){this.setPropertyValue("behavior",t,!0),this._usesSelection=!1,-1!=t.indexOf("zoom")&&(this._generalBehavior="zoom",this._usesSelection=!0),-1!=t.indexOf("select")&&(this._generalBehavior="select",this._usesSelection=!0),-1!=t.indexOf("pan")&&(this._generalBehavior="pan",this._usesSelection=!1)},enumerable:!0,configurable:!0}),e.prototype.shouldPreventGestures=function(t){return!(this.interactions.isTouchProtected&&t||"none"==this.behavior)},Object.defineProperty(e.prototype,"fullWidthLineX",{get:function(){return this.getPropertyValue("fullWidthLineX")},set:function(t){this.setPropertyValue("fullWidthLineX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fullWidthLineY",{get:function(){return this.getPropertyValue("fullWidthLineY")},set:function(t){this.setPropertyValue("fullWidthLineY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maxPanOut",{get:function(){return this.getPropertyValue("maxPanOut")},set:function(t){this.setPropertyValue("maxPanOut",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xAxis",{get:function(){return this._xAxis.get()},set:function(t){this._xAxis.get()!=t&&this._xAxis.set(t,new F.c([t.tooltip.events.on("positionchanged",this.handleXTooltipPosition,this,!1)]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yAxis",{get:function(){return this._yAxis.get()},set:function(t){this._yAxis.get()!=t&&this._yAxis.set(t,new F.c([t.tooltip.events.on("positionchanged",this.handleYTooltipPosition,this,!1)]))},enumerable:!0,configurable:!0}),e.prototype.handleXTooltipPosition=function(t){var e=this.xAxis.tooltip,i=k.svgPointToSprite({x:e.pixelX,y:e.pixelY},this),a=i.x;if(this.lineX&&(this.lineX.x=a,this.fitsToBounds(i)||this.hide()),this.xAxis&&this.fullWidthLineX){var n=this.xAxis.currentItemStartPoint,r=this.xAxis.currentItemEndPoint;if(n&&r){this.lineX.x=a;var s=r.x-n.x;this.lineX.path=w.rectangle(s,this.innerHeight,-s/2)}}},e.prototype.handleYTooltipPosition=function(t){var e=this.yAxis.tooltip,i=k.svgPointToSprite({x:e.pixelX,y:e.pixelY},this),a=i.y;if(this.lineY&&(this.lineY.y=a,this.fitsToBounds(i)||this.hide()),this.yAxis&&this.fullWidthLineY){var n=this.yAxis.currentItemStartPoint,r=this.yAxis.currentItemEndPoint;if(n&&r){this.lineY.y=a;var s=r.y-n.y;this.lineY.path=w.rectangle(this.innerWidth,s,0,-s/2)}}},Object.defineProperty(e.prototype,"lineX",{get:function(){return this._lineX.get()},set:function(t){t?(t.setElement(this.paper.add("path")),this._lineX.set(t,t.events.on("positionchanged",this.updateSelection,this,!1)),t.interactionsEnabled=!1,t.parent=this):this._lineX.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lineY",{get:function(){return this._lineY.get()},set:function(t){t?(t.setElement(this.paper.add("path")),this._lineY.set(t,t.events.on("positionchanged",this.updateSelection,this,!1)),t.parent=this,t.interactionsEnabled=!1):this._lineY.reset()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"selection",{get:function(){return this._selection},set:function(t){this._selection=t,t&&(t.element=this.paper.add("path"),t.parent=this)},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){e&&(y.hasValue(e.xAxis)&&y.isString(e.xAxis)&&(this.map.hasKey(e.xAxis)?e.xAxis=this.map.getKey(e.xAxis):(this.processingErrors.push('[XYCursor] No axis with id "'+e.xAxis+'" found for `xAxis`'),delete e.xAxis)),y.hasValue(e.yAxis)&&y.isString(e.yAxis)&&(this.map.hasKey(e.yAxis)?e.yAxis=this.map.getKey(e.yAxis):(this.processingErrors.push('[XYCursor] No axis with id "'+e.yAxis+'" found for `yAxis`'),delete e.yAxis)),y.hasValue(e.snapToSeries)&&y.isString(e.snapToSeries)&&(this.map.hasKey(e.snapToSeries)?e.snapToSeries=this.map.getKey(e.snapToSeries):(this.processingErrors.push('[XYCursor] No series with id "'+e.snapToSeries+'" found for `series`'),delete e.snapToSeries))),t.prototype.processConfig.call(this,e)},Object.defineProperty(e.prototype,"snapToSeries",{get:function(){return this.getPropertyValue("snapToSeries")},set:function(t){this.setPropertyValue("snapToSeries",t)&&(this._snapToDisposer&&this._snapToDisposer.dispose(),t&&(this._snapToDisposer=t.events.on("tooltipshownat",this.handleSnap,this,!1)))},enumerable:!0,configurable:!0}),e.prototype.handleSnap=function(){var t=this.snapToSeries,e=t.tooltipY,i=t.tooltipX;this.xAxis&&this.xAxis.renderer.opposite&&(e-=this.pixelHeight),this.point={x:i,y:e},this.getPositions();var a=i,n=e;i-=this.pixelWidth,this.yAxis&&this.yAxis.renderer.opposite&&(i+=this.pixelWidth);var r=t.tooltip,s=r.animationDuration,o=r.animationEasing;t.baseAxis==t.xAxis&&t.yAxis.showTooltipAtPosition(this.yPosition),t.baseAxis==t.yAxis&&t.xAxis.showTooltipAtPosition(this.xPosition),this.lineX.animate([{property:"y",to:e}],s,o),this.lineY.animate([{property:"x",to:i}],s,o),this.xAxis||this.lineX.animate([{property:"x",to:a}],s,o),this.yAxis||this.lineY.animate([{property:"y",to:n}],s,o)},e.prototype.dispose=function(){this.hide(0),t.prototype.dispose.call(this)},e}(j);c.b.registeredClasses.XYCursor=B;var E=i("BEgH"),H=i("ISWh"),z=i("85D4"),U=function(t){function e(){var e=t.call(this)||this;e._chart=new F.d,e.className="XYChartScrollbar";var i=new W.a;e.padding(0,0,0,0);var a=e.createChild(q);a.shouldClone=!1,a.margin(0,0,0,0),a.padding(0,0,0,0),a.interactionsEnabled=!1,e._scrollbarChart=a,e._disposers.push(e._scrollbarChart),e.minHeight=60,e.minWidth=60;var n=e.createChild(S.a);n.shouldClone=!1,n.setElement(e.paper.add("path")),n.fill=i.getFor("background"),n.fillOpacity=.8,n.interactionsEnabled=!1,n.isMeasured=!1,n.toBack(),e._unselectedOverlay=n,e._disposers.push(e._unselectedOverlay),a.toBack(),e.background.cornerRadius(0,0,0,0);var r=e.thumb.background;r.cornerRadius(0,0,0,0),r.fillOpacity=0,r.fill=i.getFor("background");var s=r.states.getKey("hover");s&&(s.properties.fillOpacity=.2);var o=r.states.getKey("down");return o&&(o.properties.fillOpacity=.4),e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"series",{get:function(){return this._series||(this._series=new o.b,this._disposers.push(this._series.events.on("inserted",this.handleSeriesAdded,this,!1)),this._disposers.push(this._series.events.on("removed",this.handleSeriesRemoved,this,!1))),this._series},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(t){var e=t.newValue,i=this.scrollbarChart;i.zoomOutButton.disabled=!0,this.chart=e.chart;var a=!0,n=!0;g.each(this.series.iterator(),function(t){t!=e&&(t.xAxis==e.xAxis&&(a=!1),t.yAxis==e.yAxis&&(n=!1))});var r=new W.a,s=e.clone();if(a){var o=e.xAxis.clone();i.xAxes.moveValue(o),o.title.disabled=!0,o.rangeChangeDuration=0,o.id=e.uid,(l=o.renderer).ticks.template.disabled=!0,l.inside=!0,l.labels.template.inside=!0,l.line.strokeOpacity=0,l.minLabelPosition=.02,l.maxLabelPosition=.98,l.line.disabled=!0,l.axisFills.template.disabled=!0,l.baseGrid.disabled=!0,l.grid.template.strokeOpacity=.05,l.minWidth=void 0,l.minHeight=void 0,l.padding(0,0,0,0),l.chart=i,l.margin(0,0,0,0),l.labels.template.fillOpacity=.5,s.xAxis=o}if(n){var l,h=e.yAxis.clone();i.yAxes.moveValue(h),h.title.disabled=!0,h.rangeChangeDuration=0,(l=h.renderer).ticks.template.disabled=!0,l.inside=!0,l.labels.template.inside=!0,l.line.strokeOpacity=0,l.minLabelPosition=.02,l.maxLabelPosition=.98,l.line.disabled=!0,l.axisFills.template.disabled=!0,l.grid.template.stroke=r.getFor("background"),l.baseGrid.disabled=!0,l.grid.template.strokeOpacity=.05,l.minWidth=void 0,l.minHeight=void 0,l.chart=i,l.padding(0,0,0,0),l.margin(0,0,0,0),l.labels.template.fillOpacity=.5,s.yAxis=h}s.rangeChangeDuration=0,s.interpolationDuration=0,s.defaultState.transitionDuration=0,s.showOnInit=!1,this._disposers.push(s.events.on("validated",this.zoomOutAxes,this,!1)),this._disposers.push(e.events.on("datavalidated",function(){s.data!=e.data&&(s.data=e.data)},void 0,!1)),s.defaultState.properties.visible=!0,s.filters.push(new z.a),i.series.push(s),this.updateByOrientation()},e.prototype.updateByOrientation=function(){var t=this;this._scrollbarChart&&(g.each(this._scrollbarChart.xAxes.iterator(),function(e){var i=e.renderer;"vertical"==t.orientation?(i.grid.template.disabled=!0,i.labels.template.disabled=!0,i.minGridDistance=10):(i.grid.template.disabled=!1,i.labels.template.disabled=!1,i.minGridDistance=e.clonedFrom.renderer.minGridDistance)}),g.each(this._scrollbarChart.yAxes.iterator(),function(e){var i=e.renderer;"horizontal"==t.orientation?(i.grid.template.disabled=!0,i.labels.template.disabled=!0,i.minGridDistance=10):(i.grid.template.disabled=!1,i.labels.template.disabled=!1,i.minGridDistance=e.clonedFrom.renderer.minGridDistance)}))},e.prototype.handleSeriesRemoved=function(t){t.oldValue.events.off("validated",this.zoomOutAxes,this)},Object.defineProperty(e.prototype,"scrollbarChart",{get:function(){return this._scrollbarChart},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){this._chart.get()!==t&&(this._chart.set(t,t.events.on("datavalidated",this.handleDataChanged,this,!1)),this.handleDataChanged(),this._scrollbarChart.dataProvider=t)},enumerable:!0,configurable:!0}),e.prototype.handleDataChanged=function(){this.chart.data!=this.scrollbarChart.data&&(this.scrollbarChart.data=this.chart.data)},e.prototype.zoomOutAxes=function(){var t=this.scrollbarChart;g.each(t.xAxes.iterator(),function(t){t.zoom({start:0,end:1},!0,!0)}),g.each(t.yAxes.iterator(),function(t){t.zoom({start:0,end:1},!0,!0)})},e.prototype.updateThumb=function(){if(t.prototype.updateThumb.call(this),this._unselectedOverlay){var e=this.thumb,i=e.pixelX||0,a=e.pixelY||0,n=e.pixelWidth||0,r=e.pixelHeight||0,s="";"horizontal"==this.orientation?(s=w.rectToPath({x:-1,y:0,width:i,height:r}),s+=w.rectToPath({x:i+n,y:0,width:(this.pixelWidth||0)-i-n,height:r})):(s=w.rectToPath({x:0,y:0,width:n,height:a}),s+=w.rectToPath({x:0,y:a+r,width:n,height:(this.pixelHeight||0)-a-r})),this._unselectedOverlay.path=s}},e.prototype.processConfig=function(e){if(e&&y.hasValue(e.series)&&y.isArray(e.series))for(var i=0,a=e.series.length;i<a;i++){var n=e.series[i];if(y.hasValue(n)&&y.isString(n)){if(!this.map.hasKey(n))throw Error("XYChartScrollbar error: Series with id `"+n+"` does not exist.");e.series[i]=this.map.getKey(n)}}t.prototype.processConfig.call(this,e)},e}(H.a);c.b.registeredClasses.XYChartScrollbar=U;var K=i("TGuK"),G=function(t){function e(){var e=t.call(this)||this;return e.className="XYChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(r.b),q=function(t){function e(){var e=t.call(this)||this;e._axisRendererX=b.a,e._axisRendererY=P.a,e._seriesPoints=[],e.className="XYChart",e.maskBullets=!0,e.arrangeTooltips=!0;var i=e.chartContainer;i.layout="vertical",e.padding(15,15,15,15);var a=i.createChild(s.a);a.shouldClone=!1,a.layout="vertical",a.width=Object(Y.c)(100),a.zIndex=1,e.topAxesContainer=a;var n=i.createChild(s.a);n.shouldClone=!1,n.layout="horizontal",n.width=Object(Y.c)(100),n.height=Object(Y.c)(100),n.zIndex=0,e.yAxesAndPlotContainer=n;var r=i.createChild(s.a);r.shouldClone=!1,r.width=Object(Y.c)(100),r.layout="vertical",r.zIndex=1,e.bottomAxesContainer=r;var o=n.createChild(s.a);o.shouldClone=!1,o.layout="horizontal",o.height=Object(Y.c)(100),o.contentAlign="right",o.events.on("transformed",e.updateXAxesMargins,e,!1),o.zIndex=1,e.leftAxesContainer=o;var l=n.createChild(s.a);l.shouldClone=!1,l.height=Object(Y.c)(100),l.width=Object(Y.c)(100),l.background.fillOpacity=0,e.plotContainer=l,e.mouseWheelBehavior="none",e._cursorContainer=l;var h=n.createChild(s.a);h.shouldClone=!1,h.layout="horizontal",h.height=Object(Y.c)(100),h.zIndex=1,h.events.on("transformed",e.updateXAxesMargins,e,!1),e.rightAxesContainer=h,e.seriesContainer.parent=l,e.bulletsContainer.parent=l;var u=l.createChild(E.a);return u.shouldClone=!1,u.align="right",u.valign="top",u.zIndex=Number.MAX_SAFE_INTEGER,u.marginTop=5,u.marginRight=5,u.hide(0),e.zoomOutButton=u,e._bulletMask=e.plotContainer,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),this.zoomOutButton.exportable=!1,y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("X/Y chart"))},e.prototype.draw=function(){t.prototype.draw.call(this),this.seriesContainer.toFront(),this.bulletsContainer.toFront(),this.maskBullets&&(this.bulletsContainer.mask=this._bulletMask),this.updateSeriesLegend()},e.prototype.updatePlotElements=function(){g.each(this.series.iterator(),function(t){t.invalidate()})},e.prototype.validateData=function(){0==this._parseDataFrom&&(g.each(this.xAxes.iterator(),function(t){t.dataChangeUpdate()}),g.each(this.yAxes.iterator(),function(t){t.dataChangeUpdate()}),g.each(this.series.iterator(),function(t){t.dataChangeUpdate()})),t.prototype.validateData.call(this)},e.prototype.updateXAxesMargins=function(){var t=this.leftAxesContainer.measuredWidth,e=this.rightAxesContainer.measuredWidth,i=this.bottomAxesContainer;i.paddingLeft==t&&i.paddingRight==e||(i.paddingLeft=t,i.paddingRight=e);var a=this.topAxesContainer;a.paddingLeft==t&&a.paddingRight==e||(a.paddingLeft=t,a.paddingRight=e)},e.prototype.handleXAxisChange=function(t){this.updateXAxis(t.target)},e.prototype.handleYAxisChange=function(t){this.updateYAxis(t.target)},e.prototype.processXAxis=function(t){var e=t.newValue;e.chart=this,e.renderer||(e.renderer=new this._axisRendererX,e.renderer.observe(["opposite","inside","inversed","minGridDistance"],this.handleXAxisChange,this,!1)),e.axisLetter="X",e.events.on("startendchanged",this.handleXAxisRangeChange,this,!1),e.dataProvider=this,this.updateXAxis(e.renderer),this.processAxis(e)},e.prototype.processYAxis=function(t){var e=t.newValue;e.chart=this,e.renderer||(e.renderer=new this._axisRendererY,e.renderer.observe(["opposite","inside","inversed","minGridDistance"],this.handleYAxisChange,this,!1)),e.axisLetter="Y",e.events.on("startendchanged",this.handleYAxisRangeChange,this,!1),e.dataProvider=this,this.updateYAxis(e.renderer),this.processAxis(e)},e.prototype.handleXAxisRangeChange=function(){var t=this.getCommonAxisRange(this.xAxes);this.scrollbarX&&this.zoomAxes(this.xAxes,t,!0),this.toggleZoomOutButton(),this.updateScrollbar(this.scrollbarX,t)},e.prototype.toggleZoomOutButton=function(){if(this.zoomOutButton){var t=!1;g.eachContinue(this.xAxes.iterator(),function(e){return 0==m.round(e.start,3)&&1==m.round(e.end,3)||(t=!0,!1)}),g.eachContinue(this.yAxes.iterator(),function(e){return 0==m.round(e.start,3)&&1==m.round(e.end,3)||(t=!0,!1)}),this.seriesAppeared||(t=!1),t?this.zoomOutButton.show():this.zoomOutButton.hide()}},e.prototype.seriesAppeared=function(){var t=!1;return g.each(this.series.iterator(),function(e){if(!e.appeared)return t=!1,!1}),t},e.prototype.handleYAxisRangeChange=function(){var t=this.getCommonAxisRange(this.yAxes);this.scrollbarY&&this.zoomAxes(this.yAxes,t,!0),this.toggleZoomOutButton(),this.updateScrollbar(this.scrollbarY,t)},e.prototype.updateScrollbar=function(t,e){t&&(t.skipRangeEvents(),t.start=e.start,t.end=e.end)},e.prototype.getCommonAxisRange=function(t){var e,i;return g.each(t.iterator(),function(t){var a=t.start,n=t.end;t.renderer.inversed&&(a=1-t.end,n=1-t.start),(!y.isNumber(e)||a<e)&&(e=a),(!y.isNumber(i)||n>i)&&(i=n)}),{start:e,end:i}},e.prototype.updateXAxis=function(t){var e=t.axis;t.opposite?(e.parent=this.topAxesContainer,e.toFront()):(e.parent=this.bottomAxesContainer,e.toBack()),e.renderer&&e.renderer.processRenderer()},e.prototype.updateYAxis=function(t){var e=t.axis;t.opposite?(e.parent=this.rightAxesContainer,e.toBack()):(e.parent=this.leftAxesContainer,e.toFront()),e.renderer&&e.renderer.processRenderer()},e.prototype.processAxis=function(t){var e=this;t instanceof T&&this._dataUsers.moveValue(t);var i=t.renderer;i.gridContainer.parent=this.plotContainer,i.gridContainer.toBack(),i.breakContainer.parent=this.plotContainer,i.breakContainer.toFront(),i.breakContainer.zIndex=10,t.addDisposer(new F.b(function(){e.dataUsers.removeValue(t)})),this.plotContainer.events.on("maxsizechanged",function(){e.inited&&(t.invalidateDataItems(),e.updateSeriesMasks())},t,!1)},e.prototype.updateSeriesMasks=function(){k.isIE()&&this.series.each(function(t){var e=t.mainContainer.mask;t.mainContainer.mask=void 0,t.mainContainer.mask=e})},Object.defineProperty(e.prototype,"xAxes",{get:function(){return this._xAxes||(this._xAxes=new o.b,this._xAxes.events.on("inserted",this.processXAxis,this,!1),this._xAxes.events.on("removed",this.handleAxisRemoval,this,!1)),this._xAxes},enumerable:!0,configurable:!0}),e.prototype.handleAxisRemoval=function(t){var e=t.oldValue;this.dataUsers.removeValue(e),e.autoDispose&&e.dispose()},Object.defineProperty(e.prototype,"yAxes",{get:function(){return this._yAxes||(this._yAxes=new o.b,this._yAxes.events.on("inserted",this.processYAxis,this,!1),this._yAxes.events.on("removed",this.handleAxisRemoval,this,!1)),this._yAxes},enumerable:!0,configurable:!0}),e.prototype.handleSeriesAdded=function(e){try{t.prototype.handleSeriesAdded.call(this,e);var i=e.newValue;0!=this.xAxes.length&&0!=this.yAxes.length||(c.b.removeFromInvalidComponents(i),i.dataInvalid=!1),k.used(i.xAxis),k.used(i.yAxis),void 0==i.fill&&(i.fill=this.colors.next()),void 0==i.stroke&&(i.stroke=i.fill)}catch(t){this.raiseCriticalError(t)}},Object.defineProperty(e.prototype,"cursor",{get:function(){return this._cursor},set:function(t){this._cursor!=t&&(this._cursor&&this.removeDispose(this._cursor),this._cursor=t,t&&(this._disposers.push(t),t.chart=this,t.shouldClone=!1,t.parent=this._cursorContainer,t.events.on("cursorpositionchanged",this.handleCursorPositionChange,this,!1),t.events.on("zoomstarted",this.handleCursorZoomStart,this,!1),t.events.on("zoomended",this.handleCursorZoomEnd,this,!1),t.events.on("panstarted",this.handleCursorPanStart,this,!1),t.events.on("panning",this.handleCursorPanning,this,!1),t.events.on("panended",this.handleCursorPanEnd,this,!1),t.events.on("behaviorcanceled",this.handleCursorCanceled,this,!1),t.events.on("hidden",this.handleHideCursor,this,!1),t.zIndex=Number.MAX_SAFE_INTEGER-1,this.tapToActivate&&this.setTapToActivate(this.tapToActivate)))},enumerable:!0,configurable:!0}),e.prototype.createCursor=function(){return new B},e.prototype.handleCursorPositionChange=function(){var t=this.cursor;if(t.visible&&!t.isHiding){var e=this.cursor.xPosition,i=this.cursor.yPosition;this.showSeriesTooltip({x:e,y:i});var a=void 0,n=t.snapToSeries;n&&(n.baseAxis==n.xAxis&&(a=n.yAxis),n.baseAxis==n.yAxis&&(a=n.xAxis)),this._seriesPoints=[],this.showAxisTooltip(this.xAxes,e,a),this.showAxisTooltip(this.yAxes,i,a),this.sortSeriesTooltips(this._seriesPoints)}},e.prototype.handleHideCursor=function(){this.hideObjectTooltip(this.xAxes),this.hideObjectTooltip(this.yAxes),this.hideObjectTooltip(this.series),this.updateSeriesLegend()},e.prototype.updateSeriesLegend=function(){g.each(this.series.iterator(),function(t){t.updateLegendValue()})},e.prototype.hideObjectTooltip=function(t){g.each(t.iterator(),function(t){t.hideTooltip(0)})},e.prototype.showSeriesTooltip=function(t){var e=this;if(t){var i=[];this.series.each(function(a){if(a.xAxis instanceof v&&a.xAxis.snapTooltip||a.yAxis instanceof v&&a.yAxis.snapTooltip);else{var n=a.showTooltipAtPosition(t.x,t.y);n&&(a.tooltip.setBounds({x:0,y:0,width:e.pixelWidth,height:e.pixelHeight}),i.push({series:a,point:n}))}}),this.arrangeTooltips&&this.sortSeriesTooltips(i)}else this.series.each(function(t){t.hideTooltip()})},e.prototype.sortSeriesTooltips=function(t){var e=k.spritePointToSvg({x:-.5,y:-.5},this.plotContainer),i=k.spritePointToSvg({x:this.plotContainer.pixelWidth+.5,y:this.plotContainer.pixelHeight+.5},this.plotContainer),a=0,n=[];O.each(t,function(t){var r=t.point;r&&m.isInRectangle(r,{x:e.x,y:e.y,width:i.x-e.x,height:i.y-e.y})&&(n.push({point:r,series:t.series}),a+=r.y)}),(t=n).sort(function(t,e){return t.point.y>e.point.y?1:t.point.y<e.point.y?-1:0});var r=a/t.length,s=k.svgPointToDocument({x:0,y:0},this.svgContainer.SVGContainer).y;if(t.length>0){var o=e.y,l=i.y;k.spritePointToDocument({x:0,y:o},this);var h=!1;if(r>o+(l-o)/2)for(var u=l,c=t.length-1;c>=0;c--){var d=(f=t[c].series).tooltip,p=t[c].point.y;if(d.setBounds({x:0,y:-s,width:this.pixelWidth,height:u+s}),d.invalid&&d.validate(),d.toBack(),(u=k.spritePointToSvg({x:0,y:d.label.pixelY-d.pixelY+p-d.pixelMarginTop},d).y)<-s){h=!0;break}}if(r<=o+(l-o)/2||h)for(var y=o,g=(c=0,t.length);c<g;c++){var f=t[c].series;p=t[c].point.y;(d=f.tooltip).setBounds({x:0,y:y,width:this.pixelWidth,height:l}),d.invalid&&d.validate(),d.toBack(),y=k.spritePointToSvg({x:0,y:d.label.pixelY+d.label.measuredHeight-d.pixelY+p+d.pixelMarginBottom},d).y}}},e.prototype.showAxisTooltip=function(t,e,i){var a=this;g.each(t.iterator(),function(t){t!=i&&(a.dataItems.length>0||t.dataItems.length>0)&&t.showTooltipAtPosition(e)})},e.prototype.getUpdatedRange=function(t,e){if(t){var i,a,n=t.renderer.inversed;t.renderer instanceof P.a&&(e=m.invertRange(e)),n?(m.invertRange(e),i=1-t.end,a=1-t.start):(i=t.start,a=t.end);var r=a-i;return{start:i+e.start*r,end:i+e.end*r}}},e.prototype.handleCursorZoomEnd=function(t){var e=this.cursor,i=e.behavior;if("zoomX"==i||"zoomXY"==i){var a=e.xRange;a&&this.xAxes.length>0&&((a=this.getUpdatedRange(this.xAxes.getIndex(0),a)).priority="start",this.zoomAxes(this.xAxes,a))}if("zoomY"==i||"zoomXY"==i){var n=e.yRange;n&&this.yAxes.length>0&&((n=this.getUpdatedRange(this.yAxes.getIndex(0),n)).priority="start",this.zoomAxes(this.yAxes,n))}this.handleHideCursor()},e.prototype.handleCursorPanStart=function(t){var e=this.xAxes.getIndex(0);e&&(this._panStartXRange={start:e.start,end:e.end});var i=this.yAxes.getIndex(0);i&&(this._panStartYRange={start:i.start,end:i.end})},e.prototype.handleCursorPanEnd=function(t){var e=this.cursor.behavior;if(this._panEndXRange&&("panX"==e||"panXY"==e)){var i=0;(a=this._panEndXRange).start<0&&(i=a.start),a.end>1&&(i=a.end-1),this.zoomAxes(this.xAxes,{start:a.start-i,end:a.end-i},!1,!0),this._panEndXRange=void 0,this._panStartXRange=void 0}if(this._panEndYRange&&("panY"==e||"panXY"==e)){var a;i=0;(a=this._panEndYRange).start<0&&(i=a.start),a.end>1&&(i=a.end-1),this.zoomAxes(this.yAxes,{start:a.start-i,end:a.end-i},!1,!0),this._panEndYRange=void 0,this._panStartYRange=void 0}},e.prototype.handleCursorCanceled=function(){this._panEndXRange=void 0,this._panStartXRange=void 0},e.prototype.handleCursorPanning=function(t){var e=this.cursor,i=e.behavior,a=e.maxPanOut;if(this._panStartXRange&&("panX"==i||"panXY"==i)){var n=this._panStartXRange,r=e.xRange,s=this.getCommonAxisRange(this.xAxes),o=n.end-n.start,l=r.start*(s.end-s.start),h=Math.max(-a,l+n.start),u=Math.min(l+n.end,1+a);h<=0&&(u=h+o),u>=1&&(h=u-o);var c={start:h,end:u};this._panEndXRange=c,this.zoomAxes(this.xAxes,c,!1,!1,e.maxPanOut)}if(this._panStartYRange&&("panY"==i||"panXY"==i)){n=this._panStartYRange,r=e.yRange,s=this.getCommonAxisRange(this.yAxes),o=n.end-n.start,l=r.start*(s.end-s.start),h=Math.max(-a,l+n.start),u=Math.min(l+n.end,1+a);h<=0&&(u=h+o),u>=1&&(h=u-o);c={start:h,end:u};this._panEndYRange=c,this.zoomAxes(this.yAxes,c,!1,!1,e.maxPanOut)}this.handleHideCursor()},e.prototype.handleCursorZoomStart=function(t){},Object.defineProperty(e.prototype,"scrollbarX",{get:function(){return this._scrollbarX},set:function(t){var e=this;this._scrollbarX&&this.removeDispose(this._scrollbarX),this._scrollbarX=t,t&&(this._disposers.push(t),t.parent=this.topAxesContainer,t.shouldClone=!1,t.startGrip.exportable=!1,t.endGrip.exportable=!1,t.toBack(),t.orientation="horizontal",t.events.on("rangechanged",this.handleXScrollbarChange,this,!1),t.adapter.add("positionValue",function(t){var i=e.xAxes.getIndex(0);return i&&(t.value=i.getPositionLabel(t.position)),t}))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"scrollbarY",{get:function(){return this._scrollbarY},set:function(t){var e=this;this._scrollbarY&&this.removeDispose(this._scrollbarY),this._scrollbarY=t,t&&(this._disposers.push(t),t.parent=this.rightAxesContainer,t.startGrip.exportable=!1,t.shouldClone=!1,t.endGrip.exportable=!1,t.toFront(),t.orientation="vertical",t.events.on("rangechanged",this.handleYScrollbarChange,this,!1),t.adapter.add("positionValue",function(t){var i=e.yAxes.getIndex(0);return i&&(t.value=i.getPositionLabel(t.position)),t}))},enumerable:!0,configurable:!0}),e.prototype.handleXScrollbarChange=function(t){if(this.inited){var e=t.target,i=e.range;1==i.end&&(i.priority="end"),0==i.start&&(i.priority="start"),i=this.zoomAxes(this.xAxes,i),e.fixRange(i)}},e.prototype.handleYScrollbarChange=function(t){if(this.inited){var e=t.target,i=e.range;1==i.end&&(i.priority="end"),0==i.start&&(i.priority="start"),i=this.zoomAxes(this.yAxes,i),e.fixRange(i)}},e.prototype.zoomAxes=function(t,e,i,a,n){var r={start:0,end:1};return this.showSeriesTooltip(),this.dataInvalid||g.each(t.iterator(),function(t){t.renderer.inversed&&(e=m.invertRange(e)),t.hideTooltip(0),a&&(e.start=t.roundPosition(e.start+1e-4,0),e.end=t.roundPosition(e.end+1e-4,0));var s=t.zoom(e,i,i,n);t.renderer.inversed&&(s=m.invertRange(s)),r=s}),r},Object.defineProperty(e.prototype,"maskBullets",{get:function(){return this.getPropertyValue("maskBullets")},set:function(t){this.setPropertyValue("maskBullets",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"arrangeTooltips",{get:function(){return this.getPropertyValue("arrangeTooltips")},set:function(t){this.setPropertyValue("arrangeTooltips",t,!0)},enumerable:!0,configurable:!0}),e.prototype.handleWheel=function(t){var e=this.plotContainer,i=k.documentPointToSvg(t.point,this.htmlContainer,this.svgContainer.cssScale),a=k.svgPointToSprite(i,e),n=t.shift.y,r=this.getCommonAxisRange(this.xAxes),s=this.getCommonAxisRange(this.yAxes),o=this.mouseWheelBehavior;if("panX"==o||"panXY"==o){var l=r.end-r.start,h=Math.max(-0,r.start+.05*n/100),u=Math.min(r.end+.05*n/100,1);h<=0&&(u=h+l),u>=1&&(h=u-l),this.zoomAxes(this.xAxes,{start:h,end:u})}if("panY"==o||"panXY"==o){n*=-1;var c=s.end-s.start,d=Math.max(-0,s.start+.05*n/100),p=Math.min(s.end+.05*n/100,1);d<=0&&(p=d+c),p>=1&&(d=p-c),this.zoomAxes(this.yAxes,{start:d,end:p})}if("zoomX"==o||"zoomXY"==o){var y=a.x/e.maxWidth;h=Math.max(-0,r.start-.05*n/100*y);h=Math.min(h,r.start+(r.end-r.start)*y-.05*.05);u=Math.min(r.end+.05*n/100*(1-y),1);u=Math.max(u,r.start+(r.end-r.start)*y+.05*.05),this.zoomAxes(this.xAxes,{start:h,end:u})}if("zoomY"==o||"zoomXY"==o){var g=a.y/e.maxHeight;d=Math.max(-0,s.start-.05*n/100*(1-g));d=Math.min(d,s.start+(s.end-s.start)*g-.05*.05);p=Math.min(s.end+.05*n/100*g,1);p=Math.max(p,s.start+(s.end-s.start)*g+.05*.05),this.zoomAxes(this.yAxes,{start:d,end:p})}},Object.defineProperty(e.prototype,"mouseWheelBehavior",{get:function(){return this.getPropertyValue("mouseWheelBehavior")},set:function(t){this.setPropertyValue("mouseWheelBehavior",t)&&("none"!=t?(this._mouseWheelDisposer=this.plotContainer.events.on("wheel",this.handleWheel,this,!1),this._disposers.push(this._mouseWheelDisposer)):this._mouseWheelDisposer&&(this.plotContainer.wheelable=!1,this.plotContainer.hoverable=!1,this._mouseWheelDisposer.dispose()))},enumerable:!0,configurable:!0}),e.prototype.dataSourceDateFields=function(e){var i=this;return e=t.prototype.dataSourceDateFields.call(this,e),g.each(this.series.iterator(),function(t){e=i.populateDataSourceFields(e,t.dataFields,["dateX","dateY","openDateX","openDateY"])}),e},e.prototype.dataSourceNumberFields=function(e){var i=this;return e=t.prototype.dataSourceDateFields.call(this,e),g.each(this.series.iterator(),function(t){e=i.populateDataSourceFields(e,t.dataFields,["valueX","valueY","openValueX","openValueY"])}),e},e.prototype.processConfig=function(e){if(e){var i=[],a=[];if(y.hasValue(e.xAxes)&&y.isArray(e.xAxes))for(var n=0,r=e.xAxes.length;n<r;n++){if(!e.xAxes[n].type)throw Error("[XYChart error] No type set for xAxes["+n+"].");y.hasValue(e.xAxes[n].axisRanges)&&(i.push({axisRanges:e.xAxes[n].axisRanges,index:n}),delete e.xAxes[n].axisRanges)}if(y.hasValue(e.yAxes)&&y.isArray(e.yAxes))for(n=0,r=e.yAxes.length;n<r;n++){if(!e.yAxes[n].type)throw Error("[XYChart error] No type set for yAxes["+n+"].");y.hasValue(e.yAxes[n].axisRanges)&&(a.push({axisRanges:e.yAxes[n].axisRanges,index:n}),delete e.yAxes[n].axisRanges)}if(y.hasValue(e.series)&&y.isArray(e.series))for(n=0,r=e.series.length;n<r;n++)e.series[n].type=e.series[n].type||"LineSeries";if(y.hasValue(e.cursor)&&!y.hasValue(e.cursor.type)&&(e.cursor.type="XYCursor"),y.hasValue(e.scrollbarX)&&!y.hasValue(e.scrollbarX.type)&&(e.scrollbarX.type="Scrollbar"),y.hasValue(e.scrollbarY)&&!y.hasValue(e.scrollbarY.type)&&(e.scrollbarY.type="Scrollbar"),t.prototype.processConfig.call(this,e),a.length)for(n=0,r=a.length;n<r;n++)this.yAxes.getIndex(a[n].index).config={axisRanges:a[n].axisRanges};if(i.length)for(n=0,r=i.length;n<r;n++)this.xAxes.getIndex(i[n].index).config={axisRanges:i[n].axisRanges}}},e.prototype.configOrder=function(e,i){return e==i?0:"scrollbarX"==e?1:"scrollbarX"==i?-1:"scrollbarY"==e?1:"scrollbarY"==i?-1:"cursor"==e?1:"cursor"==i?-1:"series"==e?1:"series"==i?-1:t.prototype.configOrder.call(this,e,i)},e.prototype.createSeries=function(){return new L},Object.defineProperty(e.prototype,"zoomOutButton",{get:function(){return this._zoomOutButton},set:function(t){var e=this;this._zoomOutButton=t,t&&t.events.on("hit",function(){e.zoomAxes(e.xAxes,{start:0,end:1}),e.zoomAxes(e.yAxes,{start:0,end:1})},void 0,!1)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){var i=this;e.xAxes.each(function(t){i.xAxes.push(t.clone())}),e.yAxes.each(function(t){i.yAxes.push(t.clone())}),t.prototype.copyFrom.call(this,e),e.cursor&&(this.cursor=e.cursor.clone()),e.scrollbarX&&(this.scrollbarX=e.scrollbarX.clone()),e.scrollbarY&&(this.scrollbarY=e.scrollbarY.clone())},e.prototype.disposeData=function(){t.prototype.disposeData.call(this);var e=this.scrollbarX;e&&e instanceof U&&e.scrollbarChart.disposeData();var i=this.scrollbarY;i&&i instanceof U&&i.scrollbarChart.disposeData(),this.xAxes.each(function(t){t.disposeData()}),this.yAxes.each(function(t){t.disposeData()})},e.prototype.addData=function(e,i){this.scrollbarX instanceof U&&this.addScrollbarData(this.scrollbarX,i),this.scrollbarY instanceof U&&this.addScrollbarData(this.scrollbarY,i),t.prototype.addData.call(this,e,i)},e.prototype.addScrollbarData=function(t,e){var i=t.scrollbarChart;i._parseDataFrom=i.data.length,i.invalidateData()},e.prototype.removeScrollbarData=function(t,e){var i=t.scrollbarChart;if(y.isNumber(e)){for(;e>0;){var a=this.dataItems.getIndex(0);a&&i.dataItems.remove(a),i.dataUsers.each(function(t){var e=t.dataItems.getIndex(0);e&&t.dataItems.remove(e)}),i._parseDataFrom--,e--}i.invalidateData()}},e.prototype.removeData=function(e){this.scrollbarX instanceof U&&this.removeScrollbarData(this.scrollbarX,e),this.scrollbarY instanceof U&&this.removeScrollbarData(this.scrollbarY,e),t.prototype.removeData.call(this,e)},e.prototype.setTapToActivate=function(e){t.prototype.setTapToActivate.call(this,e),this.cursor&&(this.cursor.interactions.isTouchProtected=e,this.plotContainer.interactions.isTouchProtected=e)},e.prototype.handleTapToActivate=function(){t.prototype.handleTapToActivate.call(this),this.cursor&&(this.cursor.interactions.isTouchProtected=!1,this.plotContainer.interactions.isTouchProtected=!1)},e.prototype.handleTapToActivateDeactivation=function(){t.prototype.handleTapToActivateDeactivation.call(this),this.cursor&&(this.cursor.interactions.isTouchProtected=!0,this.plotContainer.interactions.isTouchProtected=!0)},e}(r.a);c.b.registeredClasses.XYChart=q,K.c.push({relevant:K.b.maybeXS,state:function(t,e){if(t instanceof q&&t.scrollbarX){var i=t.states.create(e);return t.scrollbarX.states.create(e).properties.disabled=!0,i}return null}}),K.c.push({relevant:K.b.maybeXS,state:function(t,e){if(t instanceof q&&t.scrollbarY){var i=t.states.create(e);return t.scrollbarY.states.create(e).properties.disabled=!0,i}return null}});var Z=i("aFzC"),J=function(t){function e(){var e=t.call(this)||this;e.className="LineSeriesSegment",e.isMeasured=!1,e.interactionsEnabled=!1,e.layout="none";var i=e.createChild(S.a);e.fillSprite=i,i.shouldClone=!1,i.setElement(e.paper.add("path")),i.isMeasured=!1,e._disposers.push(i);var a=e.createChild(S.a);return e.strokeSprite=a,a.shouldClone=!1,a.fill=Object(M.c)(),a.setElement(e.paper.add("path")),a.isMeasured=!1,e._disposers.push(a),e}return n.c(e,t),e.prototype.drawSegment=function(t,e,i,a){if(!this.disabled)if(t.length>0&&e.length>0){var n=w.moveTo({x:t[0].x-.2,y:t[0].y-.2})+w.moveTo(t[0])+new Z.b(i,a).smooth(t);0==this.strokeOpacity||0==this.strokeSprite.strokeOpacity||(this.strokeSprite.path=n),(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(n+=w.lineTo(e[0])+new Z.b(i,a).smooth(e),n+=w.lineTo(t[0]),n+=w.closePath(),this.fillSprite.path=n)}else this.fillSprite.path="",this.strokeSprite.path=""},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e);var i=this.strokeSprite;f.copyProperties(e,i.properties,S.b),i.events.copyFrom(e.strokeSprite.events),i.fillOpacity=0;var a=this.fillSprite;f.copyProperties(e,a.properties,S.b),a.events.copyFrom(e.fillSprite.events),a.strokeOpacity=0},e}(s.a);c.b.registeredClasses.LineSeriesSegment=J;var Q=i("PTiM"),$=i("p9TX"),tt=i("GtDR"),et=i("TXRX"),it=function(t){function e(){var e=t.call(this)||this;return e.className="LineSeriesDataItem",e}return n.c(e,t),e}(R),at=function(t){function e(){var e=t.call(this)||this;return e.minDistance=.5,e.segments=new o.e(e.createSegment()),e.segments.template.applyOnClones=!0,e._disposers.push(new o.c(e.segments)),e._disposers.push(e.segments.template),e._segmentsIterator=new g.ListIterator(e.segments,function(){return e.segments.create()}),e._segmentsIterator.createNewItems=!0,e.className="LineSeries",e.strokeOpacity=1,e.fillOpacity=0,e.connect=!0,e.tensionX=1,e.tensionY=1,e.autoGapCount=1.1,e.segmentsContainer=e.mainContainer.createChild(s.a),e.segmentsContainer.isMeasured=!1,e.bulletsContainer.toFront(),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Line Series"))},e.prototype.createSegment=function(){return new J},e.prototype.createDataItem=function(){return new it},e.prototype.setInitialWorkingValues=function(t){var e=this._yAxis.get(),i=this._xAxis.get();if(this.appeared&&this.visible){var a=this.dataItems.getIndex(t.index-1);if(t.component=this,this.baseAxis==i&&e instanceof l.a){var n=e.minZoomed;a&&(n=a.values.valueY.workingValue),t.setWorkingValue("valueY",n,0),t.setWorkingValue("valueY",t.values.valueY.value),i instanceof v&&(t.setWorkingLocation("dateX",t.locations.dateX-1,0),t.setWorkingLocation("dateX",t.locations.dateX))}if(this.baseAxis==e&&i instanceof l.a){var r=i.minZoomed;a&&(r=a.values.valueX.workingValue),t.setWorkingValue("valueX",r,0),t.setWorkingValue("valueX",t.values.valueX.value),e instanceof v&&(t.setWorkingLocation("dateY",t.locations.dateX-1,0),t.setWorkingLocation("dateY",t.locations.dateY))}}else this.baseAxis==i&&e instanceof l.a&&(i instanceof v&&t.setWorkingLocation("dateX",t.locations.dateX),i instanceof T&&t.setWorkingLocation("categoryX",t.locations.categoryX)),this.baseAxis==e&&i instanceof l.a&&(e instanceof v&&t.setWorkingLocation("dateY",t.locations.dateY),e instanceof T&&t.setWorkingLocation("categoryY",t.locations.categoryY))},e.prototype.updateLegendValue=function(e){t.prototype.updateLegendValue.call(this,e),e&&e.segment&&(this.tooltipColorSource=e.segment)},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this),this._segmentsIterator.reset(),this.openSegmentWrapper(this._adjustedStartIndex),g.each(this.axisRanges.iterator(),function(t){e.openSegmentWrapper(e._adjustedStartIndex,t)}),g.each(this._segmentsIterator.iterator(),function(t){t.__disabled=!0})},e.prototype.sliceData=function(){for(var t=this.startIndex,e=this.endIndex,i=this.startIndex-1;i>=0;i--){if((n=this.dataItems.getIndex(i))&&n.hasValue(this._xValueFields)&&n.hasValue(this._yValueFields)){t=i;break}}this._adjustedStartIndex=this.findAdjustedIndex(t,["stroke","strokeWidth","strokeDasharray","strokeOpacity","fill","fillOpacity","opacity"]);i=this.endIndex;for(var a=this.dataItems.length;i<a;i++){var n;if((n=this.dataItems.getIndex(i))&&n.hasValue(this._xValueFields)&&n.hasValue(this._yValueFields)){e=i+1;break}}this._workingStartIndex=t,this._workingEndIndex=e},e.prototype.findAdjustedIndex=function(t,e){var i=this,a=this.propertyFields,n=t;return O.each(e,function(e){if(y.hasValue(a[e]))for(var r=n;r>=0;r--){var s=i.dataItems.getIndex(r);if(s&&y.hasValue(s.properties[e])){t>r&&(t=r);break}}}),t},e.prototype.openSegmentWrapper=function(t,e){var i={index:t,axisRange:e};do{i=this.openSegment(i.index,i.axisRange)}while(i)},e.prototype.openSegment=function(t,e){var i=!1,a=[];t=Math.min(t,this.dataItems.length);var n,r=Math.min(this._workingEndIndex,this.dataItems.length);this._workingEndIndex=Math.min(this._workingEndIndex,this.dataItems.length);var s=!1,o=this._segmentsIterator.getFirst();o.__disabled=!1,e?(o.parent=e.contents,f.copyProperties(e.contents,o,S.b)):(f.copyProperties(this,o,S.b),o.filters.clear(),o.parent=this.segmentsContainer);for(var l=this.connect,h=!1,u=t;u<r;u++){var c=this.dataItems.getIndex(u);if(c.segment=o,c.hasProperties&&(u==t?this.updateSegmentProperties(c.properties,o):s=this.updateSegmentProperties(c.properties,o,!0)),c.hasValue(this._xValueFields)&&c.hasValue(this._yValueFields))this.addPoints(a,c,this.xField,this.yField),h=!0;else{if(u==t)continue;if(!l&&h){n=u;break}}if(n=u,this.baseAxis instanceof v){var d=this.dataItems.getIndex(u+1);if(d&&this.baseAxis.makeGap(d,c)){i=!0;break}}if(s)break}return this.closeSegment(o,a,t,n,e,i)},e.prototype.addPoints=function(t,e,i,a,n){var r=this.getPoint(e,i,a,e.workingLocations[i],e.workingLocations[a]);n||(e.point=r),t.push(r)},e.prototype.closeSegment=function(t,e,i,a,n,r){var s=[];if(this.dataFields[this._xOpenField]||this.dataFields[this._yOpenField]||this.stacked)for(var o=a;o>=i;o--){var l=this.dataItems.getIndex(o);l.hasValue(this._xValueFields)&&l.hasValue(this._yValueFields)&&this.addPoints(s,l,this.xOpenField,this.yOpenField,!0)}else{var h=this.baseAxis,u=e.length,c=this.xAxis,d=this.yAxis;u>0&&(h==c?(s.push({x:e[u-1].x,y:d.basePoint.y}),s.push({x:e[0].x,y:d.basePoint.y})):(s.push({x:c.basePoint.x,y:e[u-1].y}),s.push({x:c.basePoint.x,y:e[0].y})))}return this.drawSegment(t,e,s),r&&a++,a<this._workingEndIndex-1?{index:a,axisRange:n}:null},e.prototype.drawSegment=function(t,e,i){t.drawSegment(e,i,this.tensionX,this.tensionY)},e.prototype.updateSegmentProperties=function(t,e,i){var a=!1;return f.each(t,function(t,n){if(y.hasValue(n)){var r=e[t],s=void 0;r&&(s=r.toString?r.toString():r);var o=void 0;n&&(o=n.toString?n.toString():n),r==n||void 0!=s&&void 0!=o&&s==o||(i||(e[t]=n),a=!0)}}),a},Object.defineProperty(e.prototype,"connect",{get:function(){return this.getPropertyValue("connect")},set:function(t){this.setPropertyValue("connect",t)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tensionX",{get:function(){return this.getPropertyValue("tensionX")},set:function(t){this.setPropertyValue("tensionX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tensionY",{get:function(){return this.getPropertyValue("tensionY")},set:function(t){this.setPropertyValue("tensionY",t,!0)},enumerable:!0,configurable:!0}),e.prototype.createLegendMarker=function(t){var e=this,i=t.pixelWidth,a=t.pixelHeight;t.disposeChildren();var n=t.createChild(Q.a);if(n.shouldClone=!1,f.copyProperties(this,n,S.b),n.x2=i,n.y=a/2,n.visible=!0,this.fillOpacity>0){var r=t.createChild(tt.a);f.copyProperties(this,r,S.b),r.width=i,r.height=a,r.y=0,r.strokeOpacity=0,r.visible=!0,n.y=0}var o=t.dataItem;o.color=this.stroke,o.colorOrig=this.fill,g.eachContinue(this.bullets.iterator(),function(n){if(n instanceof et.a&&!n.copyToLegendMarker)return!1;var r=!1;if(n instanceof s.a&&g.each(n.children.iterator(),function(t){if(t instanceof $.a)return r=!0,!0}),!r){var o=n.clone();return o.parent=t,o.isMeasured=!0,o.tooltipText=void 0,o.x=i/2,e.fillOpacity>0?o.y=0:o.y=a/2,o.visible=!0,y.hasValue(o.fill)||(o.fill=e.fill),y.hasValue(o.stroke)||(o.stroke=e.stroke),!1}})},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.segments.clear()},Object.defineProperty(e.prototype,"autoGapCount",{get:function(){return this.getPropertyValue("autoGapCount")},set:function(t){this.setPropertyValue("autoGapCount",t,!0)},enumerable:!0,configurable:!0}),e}(L);c.b.registeredClasses.LineSeries=at,c.b.registeredClasses.LineSeriesDataItem=it;var nt=function(t){function e(){var e=t.call(this)||this;return e.className="RadarSeriesDataItem",e.setLocation("dateX",0,0),e.setLocation("dateY",0,0),e.setLocation("categoryX",0,0),e.setLocation("categoryY",0,0),e.applyTheme(),e}return n.c(e,t),e}(it),rt=function(t){function e(){var e=t.call(this)||this;return e.className="RadarSeries",e.connectEnds=!0,e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},e.prototype.createDataItem=function(){return new nt},e.prototype.getPoint=function(t,e,i,a,n,r,s){r||(r="valueX"),s||(s="valueY");var o=this.yAxis.getX(t,i,n,s),l=this.yAxis.getY(t,i,n,s),h=m.getDistance({x:o,y:l});0==h&&(h=1e-5);var u=this.xAxis.getAngle(t,e,a,r),c=this.chart.startAngle,d=this.chart.endAngle;return u<c||u>d?void 0:{x:h*m.cos(u),y:h*m.sin(u)}},e.prototype.addPoints=function(t,e,i,a,n){var r=this.getPoint(e,i,a,e.locations[i],e.locations[a]);r&&t.push(r)},e.prototype.getMaskPath=function(){var t=this.yAxis.renderer;return w.arc(t.startAngle,t.endAngle-t.startAngle,t.pixelRadius,t.pixelInnerRadius)},e.prototype.drawSegment=function(e,i,a){var n=this.yAxis.renderer;this.connectEnds&&360==Math.abs(n.endAngle-n.startAngle)&&(this.dataFields[this._xOpenField]||this.dataFields[this._yOpenField]||this.stacked)&&(i.push(i[0]),a.length>0&&a.unshift(a[a.length-1])),t.prototype.drawSegment.call(this,e,i,a)},Object.defineProperty(e.prototype,"connectEnds",{get:function(){return this.getPropertyValue("connectEnds")},set:function(t){this.setPropertyValue("connectEnds",t,!0)},enumerable:!0,configurable:!0}),e}(at);c.b.registeredClasses.RadarSeries=rt,c.b.registeredClasses.RadarSeriesDataItem=nt;var st=i("FzPm"),ot=function(t){function e(){var e=t.call(this)||this;return e.className="RadarCursor",e.radius=Object(Y.c)(100),e.innerRadius=Object(Y.c)(0),e.applyTheme(),e.mask=void 0,e}return n.c(e,t),e.prototype.fitsToBounds=function(t){var e=m.getDistance(t);return e<this.truePixelRadius+1&&e>this.pixelInnerRadius-1},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),e.prototype.triggerMoveReal=function(e){this.xAxis&&(!this.xAxis||this.xAxis.cursorTooltipEnabled&&!this.xAxis.tooltip.disabled)||this.updateLineX(this.point),this.yAxis&&(!this.yAxis||this.yAxis.cursorTooltipEnabled&&!this.yAxis.tooltip.disabled)||this.updateLineY(this.point),this.updateSelection(),t.prototype.triggerMoveReal.call(this,e)},e.prototype.updateLineX=function(t){var e=this.pixelRadius,i=this.startAngle,a=this.endAngle,n=this.pixelInnerRadius;if(e>0&&y.isNumber(i)&&y.isNumber(a)&&y.isNumber(n)){var r=m.fitAngleToRange(m.getAngle(t),i,a),s=void 0;if(this.lineX&&this.lineX.visible){if(this.lineX.moveTo({x:0,y:0}),this.xAxis&&this.fullWidthLineX){var o=this.xAxis.currentItemStartPoint,l=this.xAxis.currentItemEndPoint;if(o&&l){var h=m.fitAngleToRange(m.getAngle(o),i,a),u=m.fitAngleToRange(m.getAngle(l),i,a)-h;i<a?u<0&&(u+=360):u>0&&(u-=360),r-=u/2,s=w.moveTo({x:n*m.cos(r),y:n*m.sin(r)})+w.lineTo({x:e*m.cos(r),y:e*m.sin(r)})+w.arcTo(r,u,e)+w.lineTo({x:n*m.cos(r+u),y:n*m.sin(r+u)})+w.arcTo(r+u,-u,n)}}s||(s=w.moveTo({x:n*m.cos(r),y:n*m.sin(r)})+w.lineTo({x:e*m.cos(r),y:e*m.sin(r)})),this.lineX.path=s}}},e.prototype.updateLineY=function(t){if(this.lineY&&this.lineY.visible){var e=this.startAngle,i=this.endAngle,a=this.truePixelRadius,n=m.fitToRange(m.getDistance(t),0,this.truePixelRadius);if(y.isNumber(n)&&y.isNumber(e)){this.lineY.moveTo({x:0,y:0});var r=void 0,s=i-e;if(this.yAxis&&this.fullWidthLineY){var o=this.yAxis.currentItemStartPoint,l=this.yAxis.currentItemEndPoint;if(o&&l){var h=m.fitToRange(m.getDistance(o),0,a);n=m.fitToRange(m.getDistance(l),0,a),r=w.moveTo({x:n*m.cos(e),y:n*m.sin(e)})+w.arcTo(e,s,n),r+=w.moveTo({x:h*m.cos(i),y:h*m.sin(i)})+w.arcTo(i,-s,h)}}r||(r=w.moveTo({x:n*m.cos(e),y:n*m.sin(e)})+w.arcTo(e,i-e,n)),this.lineY.path=r}}},e.prototype.updateSelection=function(){if(this._usesSelection){var t=this.downPoint;if(t){var e=this.point,i=this.pixelRadius,a=this.truePixelRadius,n=this.pixelInnerRadius,r=Math.min(this.startAngle,this.endAngle),s=Math.max(this.startAngle,this.endAngle),o=m.fitAngleToRange(m.getAngle(t),r,s),l=m.fitAngleToRange(m.getAngle(e),r,s),h=m.getDistance(t);if(h<a){var u=m.fitToRange(m.getDistance(e),0,a);this._prevAngle=l;var c=w.moveTo({x:0,y:0}),d=m.sin(o),p=m.cos(o),y=m.sin(l),g=m.cos(l),f=this.behavior;"zoomX"==f||"selectX"==f?c+=w.lineTo({x:i*p,y:i*d})+w.arcTo(o,l-o,i)+w.lineTo({x:n*g,y:n*y})+w.arcTo(l,o-l,n):"zoomY"==f||"selectY"==f?c=w.moveTo({x:u*m.cos(r),y:u*m.sin(r)})+w.arcTo(r,s-r,u)+w.lineTo({x:h*m.cos(s),y:h*m.sin(s)})+w.arcTo(s,r-s,h)+w.closePath():"zoomXY"==f&&(c=w.moveTo({x:u*m.cos(o),y:u*m.sin(o)})+w.arcTo(o,l-o,u)+w.lineTo({x:h*m.cos(l),y:h*m.sin(l)})+w.arcTo(l,o-l,h)+w.closePath()),this.selection.path=c}this.selection.moveTo({x:0,y:0})}}},e.prototype.getPositions=function(){if(this.chart){var t=this.pixelInnerRadius,e=this.truePixelRadius-t,i=this.startAngle,a=this.endAngle,n=(m.fitAngleToRange(m.getAngle(this.point),i,a)-i)/(a-i);this.xPosition=n,this.yPosition=m.fitToRange((m.getDistance(this.point)-t)/e,0,1)}},e.prototype.updatePoint=function(t){},e.prototype.handleXTooltipPosition=function(t){if(this.xAxis.cursorTooltipEnabled){var e=this.xAxis.tooltip;this.updateLineX(k.svgPointToSprite({x:e.pixelX,y:e.pixelY},this))}},e.prototype.handleYTooltipPosition=function(t){if(this.yAxis.cursorTooltipEnabled){var e=this.yAxis.tooltip;this.updateLineY(k.svgPointToSprite({x:e.pixelX,y:e.pixelY},this))}},e.prototype.updateLinePositions=function(t){},e.prototype.getRanges=function(){var t=this.downPoint;if(t){var e=this.upPoint;if(this.chart){var i=this.pixelRadius,a=this.startAngle,n=this.endAngle,r=m.fitAngleToRange(m.getAngle(t),this.startAngle,this.endAngle),s=m.fitAngleToRange(m.getAngle(e),this.startAngle,this.endAngle),o=m.fitToRange(m.getDistance(t),0,i),l=m.fitToRange(m.getDistance(e),0,i),h=0,u=1,c=0,d=1,p=this.behavior;if("zoomX"==p||"selectX"==p||"zoomXY"==p||"selectXY"==p){var y=n-a;h=m.round((r-a)/y,5),u=m.round((s-a)/y,5)}"zoomY"!=p&&"selectY"!=p&&"zoomXY"!=p&&"selectXY"!=p||(c=m.round(o/i,5),d=m.round(l/i,5)),this.xRange={start:Math.min(h,u),end:Math.max(h,u)},this.yRange={start:Math.min(c,d),end:Math.max(c,d)},"selectX"==this.behavior||"selectY"==this.behavior||"selectXY"==this.behavior||this.selection.hide()}}},e.prototype.updateSize=function(){},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return k.relativeRadiusToValue(this.radius,this.truePixelRadius)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"truePixelRadius",{get:function(){return k.relativeToValue(Object(Y.c)(100),m.min(this.innerWidth/2,this.innerHeight/2))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){var t=this.innerRadius;return t instanceof Y.a&&(t=Object(Y.c)(100*t.value*this.chart.innerRadiusModifyer)),k.relativeRadiusToValue(t,this.truePixelRadius)||0},enumerable:!0,configurable:!0}),e.prototype.fixPoint=function(t){return t},e}(B);c.b.registeredClasses.RadarCursor=ot;var lt=i("Meme"),ht=i("8EhG"),ut=function(t){function e(e){var i=t.call(this,e)||this;return i.className="AxisFillCircular",i.element=i.paper.add("path"),i.radius=Object(Y.c)(100),i.applyTheme(),i}return n.c(e,t),e.prototype.draw=function(){if(t.prototype.draw.call(this),this.axis){var e=this.axis.renderer;this.fillPath=e.getPositionRangePath(this.startPosition,this.endPosition,this.radius,y.hasValue(this.innerRadius)?this.innerRadius:e.innerRadius,this.cornerRadius),this.path=this.fillPath}},Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cornerRadius",{get:function(){return this.getPropertyValue("cornerRadius")},set:function(t){this.setPropertyValue("cornerRadius",t,!0)},enumerable:!0,configurable:!0}),e}(ht.a);c.b.registeredClasses.AxisFillCircular=ut;var ct=i("AaJ4"),dt=function(t){function e(){var e=t.call(this)||this;return e.className="GridCircular",e.pixelPerfect=!1,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),e}(ct.a);c.b.registeredClasses.GridCircular=dt;var pt=i("IbTV"),yt=function(t){function e(){var e=t.call(this)||this;return e.pixelRadiusReal=0,e.layout="none",e.className="AxisRendererCircular",e.isMeasured=!1,e.startAngle=-90,e.endAngle=270,e.useChartAngles=!0,e.radius=Object(Y.c)(100),e.isMeasured=!1,e.grid.template.location=0,e.labels.template.location=0,e.labels.template.radius=15,e.ticks.template.location=0,e.ticks.template.pixelPerfect=!1,e.tooltipLocation=0,e.line.strokeOpacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.setAxis=function(e){var i=this;t.prototype.setAxis.call(this,e),e.isMeasured=!1;var a=e.tooltip;a.adapter.add("dx",function(t,e){var a=k.svgPointToSprite({x:e.pixelX,y:e.pixelY},i);return i.pixelRadius*Math.cos(Math.atan2(a.y,a.x))-a.x}),a.adapter.add("dy",function(t,e){var a=k.svgPointToSprite({x:e.pixelX,y:e.pixelY},i);return i.pixelRadius*Math.sin(Math.atan2(a.y,a.x))-a.y})},e.prototype.validate=function(){this.chart&&this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},Object.defineProperty(e.prototype,"axisLength",{get:function(){return 2*Math.PI*this.pixelRadius},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!1,!1,10,!1)&&this.axis&&this.axis.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return k.relativeRadiusToValue(this.radius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!1,!1,10,!1)&&this.axis&&this.axis.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"useChartAngles",{get:function(){return this.getPropertyValue("useChartAngles")},set:function(t){this.setPropertyValue("useChartAngles",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return k.relativeRadiusToValue(this.innerRadius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t){var e=this.positionToCoordinate(t),i=this.startAngle+(this.endAngle-this.startAngle)*e/this.axisLength;return{x:this.pixelRadius*m.cos(i),y:this.pixelRadius*m.sin(i)}},e.prototype.positionToAngle=function(t){var e,i=this.axis,a=(this.endAngle-this.startAngle)/(i.end-i.start);return e=i.renderer.inversed?this.startAngle+(i.end-t)*a:this.startAngle+(t-i.start)*a,m.round(e,3)},e.prototype.updateAxisLine=function(){var t=this.pixelRadius,e=this.startAngle,i=this.endAngle-e;this.line.path=w.moveTo({x:t*m.cos(e),y:t*m.sin(e)})+w.arcTo(e,i,t,t)},e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=m.DEGREES*Math.atan2(a.y,a.x),r=k.relativeRadiusToValue(y.hasValue(t.radius)?t.radius:Object(Y.c)(100),this.pixelRadius),s=k.relativeRadiusToValue(t.innerRadius,this.pixelRadius);t.zIndex=0;var o=k.relativeRadiusToValue(y.isNumber(s)?s:this.innerRadius,this.pixelRadius,!0);t.path=w.moveTo({x:o*m.cos(n),y:o*m.sin(n)})+w.lineTo({x:r*m.cos(n),y:r*m.sin(n)})}this.toggleVisibility(t,e,0,1)},e.prototype.updateTickElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=this.pixelRadius,r=m.DEGREES*Math.atan2(a.y,a.x),s=t.length;t.inside&&(s=-s),t.zIndex=1,t.path=w.moveTo({x:n*m.cos(r),y:n*m.sin(r)})+w.lineTo({x:(n+s)*m.cos(r),y:(n+s)*m.sin(r)})}this.toggleVisibility(t,e,0,1)},e.prototype.updateLabelElement=function(t,e,i,a){y.hasValue(a)||(a=t.location),e+=(i-e)*a,t.fixPosition(this.positionToAngle(e),this.pixelRadius),t.zIndex=2,this.toggleVisibility(t,e,this.minLabelPosition,this.maxLabelPosition)},e.prototype.fitsToBounds=function(t){return!0},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t)&&(this.invalidateAxisItems(),this.axis&&this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t)&&(this.invalidateAxisItems(),this.axis&&this.axis.invalidateSeries())},enumerable:!0,configurable:!0}),e.prototype.getPositionRangePath=function(t,e,i,a,n){var r="";if(y.isNumber(t)&&y.isNumber(e)){y.hasValue(i)||(i=this.radius),t=m.max(t,this.axis.start),(e=m.min(e,this.axis.end))<t&&(e=t);var s=k.relativeRadiusToValue(i,this.pixelRadius),o=k.relativeRadiusToValue(a,this.pixelRadius,!0),l=this.positionToAngle(t),h=this.positionToAngle(e)-l;r=w.arc(l,h,s,o,s,n)}return r},e.prototype.createGrid=function(){return new dt},e.prototype.createFill=function(t){return new ut(t)},e.prototype.createLabel=function(){return new pt.a},e.prototype.pointToPosition=function(t){var e=m.fitAngleToRange(m.getAngle(t),this.startAngle,this.endAngle);return this.coordinateToPosition((e-this.startAngle)/360*this.axisLength)},e}(lt.a);c.b.registeredClasses.AxisRendererCircular=yt;var gt=i("Vk33"),mt=function(t){function e(){var e=t.call(this)||this;return e._chart=new F.d,e.pixelRadiusReal=0,e.className="AxisRendererRadial",e.isMeasured=!1,e.startAngle=-90,e.endAngle=270,e.minGridDistance=30,e.gridType="circles",e.axisAngle=-90,e.isMeasured=!1,e.layout="none",e.radius=Object(Y.c)(100),e.line.strokeOpacity=0,e.labels.template.horizontalCenter="middle",e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){this.chart&&this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},Object.defineProperty(e.prototype,"axisLength",{get:function(){return this.pixelRadius-this.pixelInnerRadius},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelRadius",{get:function(){return k.relativeRadiusToValue(this.radius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!1,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return k.relativeRadiusToValue(this.innerRadius,this.pixelRadiusReal)||0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){this._chart.set(t,null)},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t){var e=m.fitToRange(this.positionToCoordinate(t),0,1/0);return{x:e*m.cos(this.axisAngle),y:e*m.sin(this.axisAngle)}},e.prototype.updateAxisLine=function(){this.line.path=w.moveTo({x:this.pixelInnerRadius*m.cos(this.axisAngle),y:this.pixelInnerRadius*m.sin(this.axisAngle)})+w.lineTo({x:this.pixelRadius*m.cos(this.axisAngle),y:this.pixelRadius*m.sin(this.axisAngle)});var t=this.axis.title;t.valign="none",t.horizontalCenter="middle",t.verticalCenter="bottom",t.y=-this.axisLength/2;var e=90;this.opposite?this.inside||(e=-90):this.inside&&(e=-90),t.rotation=e},e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a,n=this.positionToPoint(e),r=m.getDistance(n),s=this.startAngle,o=this.endAngle;if(y.isNumber(r)&&t.element){var l=this.chart,h=l.xAxes.getIndex(0),u=l.dataItems.length,c=l.series.getIndex(0);if("polygons"==this.gridType&&u>0&&c&&h&&h instanceof T){var d=h.renderer.grid.template.location,p=h.getAngle(c.dataItems.getIndex(0),"categoryX",d);a=w.moveTo({x:r*m.cos(p),y:r*m.sin(p)});for(var g=l.dataItems.length,f=1;f<g;f++)p=h.getAngle(c.dataItems.getIndex(f),"categoryX",d),a+=w.lineTo({x:r*m.cos(p),y:r*m.sin(p)});p=h.getAngle(c.dataItems.getIndex(g-1),"categoryX",h.renderer.cellEndLocation),a+=w.lineTo({x:r*m.cos(p),y:r*m.sin(p)})}else a=w.moveTo({x:r*m.cos(s),y:r*m.sin(s)})+w.arcTo(s,o-s,r,r);t.path=a}this.toggleVisibility(t,e,0,1)},e.prototype.updateLabelElement=function(t,e,i,a){y.hasValue(a)||(a=t.location),e+=(i-e)*a;var n=this.positionToPoint(e);this.positionItem(t,n),this.toggleVisibility(t,e,this.minLabelPosition,this.maxLabelPosition)},e.prototype.updateBaseGridElement=function(){},e.prototype.fitsToBounds=function(t){return!0},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t)&&this.invalidateAxisItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t)&&this.invalidateAxisItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"axisAngle",{get:function(){return this.getPropertyValue("axisAngle")},set:function(t){this.setPropertyValue("axisAngle",m.normalizeAngle(t)),this.invalidateAxisItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"gridType",{get:function(){return this.chart.xAxes.getIndex(0)instanceof T?this.getPropertyValue("gridType"):"circles"},set:function(t){this.setPropertyValue("gridType",t,!0)},enumerable:!0,configurable:!0}),e.prototype.getPositionRangePath=function(t,e){var i,a=this.pixelInnerRadius,n=this.axisLength+a,r=m.fitToRange(this.positionToCoordinate(t),a,n),s=m.fitToRange(this.positionToCoordinate(e),a,n),o=this.startAngle,l=this.endAngle-o,h=this.chart,u=h.xAxes.getIndex(0),c=h.dataItems.length,d=h.series.getIndex(0);if("polygons"==this.gridType&&c>0&&d&&u&&u instanceof T){var p=u.renderer.grid.template.location,y=u.getAngle(d.dataItems.getIndex(0),"categoryX",p);i=w.moveTo({x:s*m.cos(y),y:s*m.sin(y)});for(var g=h.dataItems.length,f=1;f<g;f++)y=u.getAngle(d.dataItems.getIndex(f),"categoryX",p),i+=w.lineTo({x:s*m.cos(y),y:s*m.sin(y)});y=u.getAngle(d.dataItems.getIndex(g-1),"categoryX",u.renderer.cellEndLocation),i+=w.lineTo({x:s*m.cos(y),y:s*m.sin(y)}),i+=w.moveTo({x:r*m.cos(y),y:r*m.sin(y)});for(f=g-1;f>=0;f--)y=u.getAngle(d.dataItems.getIndex(f),"categoryX",p),i+=w.lineTo({x:r*m.cos(y),y:r*m.sin(y)})}else i=w.arc(o,l,s,r);return i},e.prototype.updateBreakElement=function(t){var e=t.startLine,i=t.endLine,a=t.fillShape,n=t.startPoint,r=t.endPoint;e.radius=Math.abs(n.y),i.radius=Math.abs(r.y),a.radius=Math.abs(r.y),a.innerRadius=Math.abs(n.y)},e.prototype.createBreakSprites=function(t){t.startLine=new gt.a,t.endLine=new gt.a,t.fillShape=new gt.a},e.prototype.updateTooltip=function(){if(this.axis){var t=this.axisAngle;t<0&&(t+=360);var e="vertical";(t>45&&t<135||t>225&&t<315)&&(e="horizontal"),this.axis.updateTooltip(e,{x:-4e3,y:-4e3,width:8e3,height:8e3})}},e.prototype.updateTickElement=function(t,e){var i=this.positionToPoint(e);if(t.element){var a=m.normalizeAngle(this.axisAngle+90);a/90!=Math.round(a/90)?t.pixelPerfect=!1:t.pixelPerfect=!0;var n=-t.length;t.inside&&(n*=-1),t.path=w.moveTo({x:0,y:0})+w.lineTo({x:n*m.cos(a),y:n*m.sin(a)})}this.positionItem(t,i),this.toggleVisibility(t,e,0,1)},e.prototype.positionToCoordinate=function(t){var e,i=this.axis,a=i.axisFullLength,n=this.pixelInnerRadius;return e=i.renderer.inversed?(i.end-t)*a+n:(t-i.start)*a+n,m.round(e,1)},e.prototype.pointToPosition=function(t){var e=m.getDistance(t)-this.pixelInnerRadius;return this.coordinateToPosition(e)},e}(P.a);c.b.registeredClasses.AxisRendererRadial=mt;var ft=function(t){function e(){var e=t.call(this)||this;return e.className="RadarChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(G),xt=function(t){function e(){var e=t.call(this)||this;e._axisRendererX=yt,e._axisRendererY=mt,e.innerRadiusModifyer=1,e.className="RadarChart",e.startAngle=-90,e.endAngle=270,e.radius=Object(Y.c)(80),e.innerRadius=0;var i=e.plotContainer.createChild(s.a);return i.shouldClone=!1,i.layout="absolute",i.align="center",i.valign="middle",e.seriesContainer.parent=i,e.radarContainer=i,e.bulletsContainer.parent=i,e._cursorContainer=i,e._bulletMask=i.createChild(st.a),e._bulletMask.shouldClone=!1,e._bulletMask.element=e.paper.add("path"),e._bulletMask.opacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Radar chart"))},e.prototype.processAxis=function(e){t.prototype.processAxis.call(this,e);var i=e.renderer;i.gridContainer.parent=i,i.breakContainer.parent=i,e.parent=this.radarContainer,i.toBack()},e.prototype.handleXAxisRangeChange=function(){t.prototype.handleXAxisRangeChange.call(this),g.each(this.yAxes.iterator(),function(t){t.invalidate()})},e.prototype.handleYAxisRangeChange=function(){t.prototype.handleYAxisRangeChange.call(this),g.each(this.xAxes.iterator(),function(t){t.invalidate()})},e.prototype.createCursor=function(){return new ot},e.prototype.processConfig=function(e){if(e&&(y.hasValue(e.cursor)&&!y.hasValue(e.cursor.type)&&(e.cursor.type="RadarCursor"),y.hasValue(e.series)&&y.isArray(e.series)))for(var i=0,a=e.series.length;i<a;i++)e.series[i].type=e.series[i].type||"RadarSeries";t.prototype.processConfig.call(this,e)},e.prototype.beforeDraw=function(){t.prototype.beforeDraw.call(this);var e=this.plotContainer,i=m.getArcRect(this.startAngle,this.endAngle,1),a={x:0,y:0,width:0,height:0},n=e.innerWidth/i.width,r=e.innerHeight/i.height,s=this.innerRadius;if(s instanceof Y.a){var o=s.value,l=Math.min(n,r);o=Math.max(l*o,l-Math.min(e.innerHeight,e.innerWidth))/l,a=m.getArcRect(this.startAngle,this.endAngle,o),this.innerRadiusModifyer=o/s.value,s=Object(Y.c)(100*o)}i=m.getCommonRectangle([i,a]);var h=Math.min(e.innerWidth/i.width,e.innerHeight/i.height),u=2*k.relativeRadiusToValue(this.radius,h)||0,c=u/2,d=this.startAngle,p=this.endAngle;this._pixelInnerRadius=k.relativeRadiusToValue(s,c),this._bulletMask.path=w.arc(d,p-d,c,this._pixelInnerRadius),g.each(this.xAxes.iterator(),function(t){t.renderer.useChartAngles&&(t.renderer.startAngle=d,t.renderer.endAngle=p),t.width=u,t.height=u,t.renderer.pixelRadiusReal=c,t.renderer.innerRadius=s}),g.each(this.yAxes.iterator(),function(t){t.renderer.startAngle=d,t.renderer.endAngle=p,t.width=u,t.height=u,t.renderer.pixelRadiusReal=c,t.renderer.innerRadius=s});var y=this.cursor;y&&(y.width=u,y.height=u,y.startAngle=d,y.endAngle=p),this.radarContainer.definedBBox={x:c*i.x,y:c*i.y,width:c*i.width,height:c*i.height},this.radarContainer.validatePosition()},e.prototype.createSeries=function(){return new rt},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pixelInnerRadius",{get:function(){return this._pixelInnerRadius},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),e.prototype.updateXAxis=function(t){t&&t.processRenderer()},e.prototype.updateYAxis=function(t){t&&t.processRenderer()},e}(q);c.b.registeredClasses.RadarChart=xt;var vt=i("DziZ"),bt=function(t){function e(){var e=t.call(this)||this;e._axis=new F.d,e.className="ClockHand";var i=new W.a;e.fill=i.getFor("alternativeBackground"),e.stroke=e.fill;var a=new st.a;a.radius=5,e.pin=a,e.isMeasured=!1,e.startWidth=5,e.endWidth=1,e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.radius=Object(Y.c)(100),e.innerRadius=Object(Y.c)(0);var n=new vt.a;return e.hand=n,e._disposers.push(e._axis),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){t.prototype.validate.call(this);var e=this.hand;e.width=this.pixelWidth;var i=Math.max(this.startWidth,this.endWidth);if(e.height=i,e.leftSide=Object(Y.c)(this.startWidth/i*100),e.rightSide=Object(Y.c)(this.endWidth/i*100),this.axis){var a=this.axis.renderer,n=k.relativeRadiusToValue(this.innerRadius,a.pixelRadius),r=k.relativeRadiusToValue(this.radius,a.pixelRadius);e.x=n,e.y=-i/2,e.width=r-n}},Object.defineProperty(e.prototype,"pin",{get:function(){return this._pin},set:function(t){this._pin&&this.removeDispose(this._pin),t&&(this._pin=t,t.parent=this,this._disposers.push(t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"hand",{get:function(){return this._hand},set:function(t){this._hand&&this.removeDispose(this._hand),t&&(this._hand=t,t.parent=this,this._disposers.push(t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startWidth",{get:function(){return this.getPropertyValue("startWidth")},set:function(t){this.setPropertyValue("startWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endWidth",{get:function(){return this.getPropertyValue("endWidth")},set:function(t){this.setPropertyValue("endWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"rotationDirection",{get:function(){return this.getPropertyValue("rotationDirection")},set:function(t){this.setPropertyValue("rotationDirection",t)},enumerable:!0,configurable:!0}),e.prototype.showValue=function(t,e,i){if(this._value=t,void 0!=t&&(y.isNumber(e)||(e=0),this.axis)){var a=this.axis.renderer.positionToAngle(this.axis.anyToPosition(t)),n=this.rotation;"clockWise"==this.rotationDirection&&a<n&&(this.rotation=n-360),"counterClockWise"==this.rotationDirection&&a>n&&(this.rotation=n+360),this.animate({property:"rotation",to:a},e,i)}},Object.defineProperty(e.prototype,"value",{get:function(){return this._value},set:function(t){this.showValue(t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"axis",{get:function(){return this._axis.get()},set:function(t){if(this.axis!=t&&this._axis.set(t,new F.c([t.events.on("datavalidated",this.updateValue,this,!1),t.events.on("datarangechanged",this.updateValue,this,!1),t.events.on("dataitemsvalidated",this.updateValue,this,!1),t.events.on("propertychanged",this.invalidate,this,!1)])),t){var e=t.chart;e&&(this.rotation=e.startAngle)}this.parent=t.renderer,this.zIndex=5},enumerable:!0,configurable:!0}),e.prototype.updateValue=function(){this.value=this.value},e.prototype.processConfig=function(e){e&&y.hasValue(e.axis)&&y.isString(e.axis)&&this.map.hasKey(e.axis)&&(e.axis=this.map.getKey(e.axis)),t.prototype.processConfig.call(this,e)},e}(s.a);c.b.registeredClasses.ClockHand=bt;var Pt=function(t){function e(){var e=t.call(this)||this;return e.className="GaugeChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(ft),At=function(t){function e(){var e=t.call(this)||this;return e.className="GaugeChart",e.startAngle=180,e.endAngle=360,e.hands=new o.e(new bt),e.hands.events.on("inserted",e.processHand,e,!1),e._disposers.push(new o.c(e.hands)),e._disposers.push(e.hands.template),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Gauge chart"))},e.prototype.processHand=function(t){var e=t.newValue;e.axis||(e.axis=this.xAxes.getIndex(0))},e}(xt);c.b.registeredClasses.GaugeChart=At;var Ct=i("quKg"),It=i("Puh1"),Dt=i("nPzZ"),_t=function(t){function e(){var e=t.call(this)||this;return e.className="PieSeries3DDataItem",e.values.depthValue={},e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"depthValue",{get:function(){return this.values.depthValue.value},set:function(t){this.setValue("depthValue",t)},enumerable:!0,configurable:!0}),e}(It.b),Tt=function(t){function e(){var e=t.call(this)||this;return e.className="PieSeries3D",e.applyTheme(),e}return n.c(e,t),e.prototype.createDataItem=function(){return new _t},e.prototype.createSlice=function(){return new Dt.a},e.prototype.validateDataElement=function(e){var i=e.slice,a=this.depth;y.isNumber(a)||(a=this.chart.depth);var n=e.values.depthValue.percent;y.isNumber(n)||(n=100),i.depth=n*a/100;var r=this.angle;y.isNumber(r)||(r=this.chart.angle),i.angle=r,t.prototype.validateDataElement.call(this,e)},e.prototype.validate=function(){t.prototype.validate.call(this);for(var e=this._workingStartIndex;e<this._workingEndIndex;e++){var i=this.dataItems.getIndex(e).slice,a=i.startAngle;a>=-90&&a<90?i.toFront():a>=90&&i.toBack()}},Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t)},enumerable:!0,configurable:!0}),e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem.slice;e.y=e.pixelY-i.depth},e}(It.a);c.b.registeredClasses.PieSeries3D=Tt,c.b.registeredClasses.PieSeries3DDataItem=_t;var Vt=function(t){function e(){var e=t.call(this)||this;return e.className="PieChart3DDataItem",e.applyTheme(),e}return n.c(e,t),e}(Ct.b),St=function(t){function e(){var e=t.call(this)||this;return e.className="PieChart3D",e.depth=20,e.angle=10,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t)&&this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){t=m.fitToRange(t,0,90),this.setPropertyValue("angle",t)&&this.invalidateDataUsers()},enumerable:!0,configurable:!0}),e.prototype.createSeries=function(){return new Tt},e}(Ct.a);c.b.registeredClasses.PieChart3D=St;var Ft=i("DXFp"),kt=function(t){function e(){var e=t.call(this)||this;return e.className="SlicedChartDataItem",e.applyTheme(),e}return n.c(e,t),e}(Ft.b),Ot=function(t){function e(){var e=t.call(this)||this;return e.className="SlicedChart",e.seriesContainer.layout="horizontal",e.padding(15,15,15,15),e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Sliced chart"))},e.prototype.validate=function(){t.prototype.validate.call(this)},e}(Ft.a);c.b.registeredClasses.SlicedChart=Ot,c.b.registeredClasses.SlicedChartDataItem=kt;var wt=i("VIOb"),Rt=i("wUYf"),Lt=i("MlsF"),Xt=i("3Cxr"),Yt=i("CnhP"),Nt=i("uWmK"),jt=function(t){function e(){var e=t.call(this)||this;return e.legendSettings=new Nt.c,e.className="FlowDiagramNode",e.isMeasured=!1,new W.a,e.draggable=!0,e.inert=!0,e.setStateOnChildren=!0,e.events.on("positionchanged",e.invalidateLinks,e,!1),e.events.on("sizechanged",e.invalidateLinks,e,!1),e}return n.c(e,t),e.prototype.handleHit=function(t){this.isHidden||this.isHiding?this.show():this.hide()},e.prototype.show=function(e){var i=t.prototype.show.call(this,e);return this.outgoingDataItems.each(function(t){(!t.toNode||t.toNode&&!t.toNode.isHidden)&&t.setWorkingValue("value",t.getValue("value"),e)}),this.incomingDataItems.each(function(t){(!t.fromNode||t.fromNode&&!t.fromNode.isHidden)&&t.setWorkingValue("value",t.getValue("value"),e)}),i},e.prototype.hide=function(e){var i=t.prototype.hide.call(this,e);return this.outgoingDataItems.each(function(t){t.setWorkingValue("value",0,e)}),this.incomingDataItems.each(function(t){t.setWorkingValue("value",0,e)}),i},e.prototype.validate=function(){this.isDisposed()||(t.prototype.validate.call(this),this.invalidateLinks())},e.prototype.invalidateLinks=function(){var t=this;this.outgoingDataItems.each(function(e){var i=e.link;if("fromNode"==i.colorMode&&(i.fill=i.dataItem.fromNode.color),"gradient"==i.colorMode){i.fill=i.gradient,i.stroke=i.gradient;var a=i.gradient.stops.getIndex(0);a&&(a.color=t.color,i.gradient.validate())}}),this.incomingDataItems.each(function(e){var i=e.link;if("toNode"==i.colorMode&&(i.fill=i.dataItem.toNode.color),"gradient"==i.colorMode){i.fill=i.gradient,i.stroke=i.gradient;var a=i.gradient.stops.getIndex(1);a&&(a.color=t.color,i.gradient.validate())}})},Object.defineProperty(e.prototype,"incomingDataItems",{get:function(){var t=this;if(!this._incomingDataItems){var e=new o.b;e.events.on("inserted",function(){"name"==t.chart.sortBy?t._incomingSorted=g.sort(t._incomingDataItems.iterator(),function(t,e){return Rt.order(t.fromName,e.fromName)}):"value"==t.chart.sortBy?t._incomingSorted=g.sort(t._incomingDataItems.iterator(),function(t,e){return Lt.b(Xt.order(t.value,e.value))}):t._incomingSorted=t._incomingDataItems.iterator()},void 0,!1),this._incomingDataItems=e}return this._incomingDataItems},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"outgoingDataItems",{get:function(){var t=this;if(!this._outgoingDataItems){var e=new o.b;e.events.on("inserted",function(){"name"==t.chart.sortBy?t._outgoingSorted=g.sort(t._outgoingDataItems.iterator(),function(t,e){return Rt.order(t.fromName,e.fromName)}):"value"==t.chart.sortBy?t._outgoingSorted=g.sort(t._outgoingDataItems.iterator(),function(t,e){return Lt.b(Xt.order(t.value,e.value))}):t._outgoingSorted=t._outgoingDataItems.iterator()},void 0,!1),this._outgoingDataItems=e}return this._outgoingDataItems},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.getPropertyValue("name")},set:function(t){this.setPropertyValue("name",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"total",{get:function(){return this.getPropertyValue("total")},set:function(t){this.setPropertyValue("total",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"totalIncoming",{get:function(){return this.getPropertyValue("totalIncoming")},set:function(t){this.setPropertyValue("totalIncoming",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"totalOutgoing",{get:function(){return this.getPropertyValue("totalOutgoing")},set:function(t){this.setPropertyValue("totalOutgoing",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){return this.getPropertyValue("color")},set:function(t){this.setColorProperty("color",t),this._background&&(this._background.fill=t),this.fill=t},enumerable:!0,configurable:!0}),e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a=t.createChild(Yt.a);a.shouldClone=!1,f.copyProperties(this,a,S.b),a.stroke=this.fill,a.copyFrom(this),a.padding(0,0,0,0),a.width=e,a.height=i;var n=t.dataItem;n.color=a.fill,n.colorOrig=a.fill},Object.defineProperty(e.prototype,"legendDataItem",{get:function(){return this._legendDataItem},set:function(t){this._legendDataItem=t,this._legendDataItem.itemContainer.deepInvalidate()},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.FlowDiagramNode=jt;var Mt=i("sxA1"),Wt=i("jfaP"),Bt=function(t){function e(){var e=t.call(this)||this;e.className="FlowDiagramLink";var i=new W.a;return e.maskBullets=!1,e.colorMode="fromNode",e.layout="none",e.isMeasured=!1,e.startAngle=0,e.endAngle=0,e.strokeOpacity=0,e.verticalCenter="none",e.horizontalCenter="none",e.tooltipText="{fromName}→{toName}:{value.value}",e.tooltipLocation=.5,e.link=e.createChild(S.a),e.link.shouldClone=!1,e.link.setElement(e.paper.add("path")),e.link.isMeasured=!1,e.fillOpacity=.2,e.fill=i.getFor("alternativeBackground"),e.applyTheme(),e}return n.c(e,t),e.prototype.positionBullets=function(){var t=this;g.each(this.bullets.iterator(),function(e){e.parent=t.bulletsContainer,e.maxWidth=t.maxWidth,e.maxHeight=t.maxHeight,t.positionBullet(e)})},Object.defineProperty(e.prototype,"bulletsContainer",{get:function(){if(!this._bulletsContainer){var t=this.createChild(s.a);t.shouldClone=!1,t.layout="none",this._bulletsContainer=t}return this._bulletsContainer},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bulletsMask",{get:function(){if(!this._bulletsMask){var t=this.createChild(S.a);t.shouldClone=!1,t.setElement(this.paper.add("path")),t.isMeasured=!1,this._bulletsMask=t}return this._bulletsMask},enumerable:!0,configurable:!0}),e.prototype.positionBullet=function(t){var e=t.locationX;y.isNumber(e)||(e=t.locationY),y.isNumber(e)||(e=.5);var i=this.middleLine.positionToPoint(e);t.moveTo(i);var a,n=t.propertyFields.rotation;t.dataItem&&(a=t.dataItem.dataContext[n]);y.isNumber(a)||(a=i.angle),t.rotation=a},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"colorMode",{get:function(){return this.getPropertyValue("colorMode")},set:function(t){if("gradient"==t){var e=this.fill;this.gradient.stops.clear(),e instanceof M.a&&(this.gradient.addColor(e),this.gradient.addColor(e)),this.fill=this.gradient,this.stroke=this.gradient}this.setPropertyValue("colorMode",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"maskBullets",{get:function(){return this.getPropertyValue("maskBullets")},set:function(t){this.setPropertyValue("maskBullets",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tooltipLocation",{get:function(){return this.getPropertyValue("tooltipLocation")},set:function(t){this.setPropertyValue("tooltipLocation",t,!0)},enumerable:!0,configurable:!0}),e.prototype.setFill=function(e){t.prototype.setFill.call(this,e);var i=this._gradient;i&&e instanceof M.a&&(i.stops.clear(),i.addColor(e),i.addColor(e))},e.prototype.measureElement=function(){},Object.defineProperty(e.prototype,"bullets",{get:function(){var t=this;return this._bullets||(this._bullets=new o.e(new et.a),this._disposers.push(new o.c(this._bullets)),this._disposers.push(this._bullets.template),this._bullets.events.on("inserted",function(e){e.newValue.events.on("propertychanged",function(e){"locationX"!=e.property&&"locationY"!=e.property||t.positionBullet(e.target)},void 0,!1)},void 0,!1)),this._bullets},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.bullets.copyFrom(e.bullets);var i=this.middleLine;i&&(i instanceof Q.a&&e.middleLine instanceof Q.a&&i.copyFrom(e.middleLine),i instanceof Wt.a&&e.middleLine instanceof Wt.a&&i.copyFrom(e.middleLine)),this.link.copyFrom(e.link)},e.prototype.getTooltipX=function(){if(this.middleLine)return this.middleLine.positionToPoint(this.tooltipLocation).x},e.prototype.getTooltipY=function(){if(this.middleLine)return this.middleLine.positionToPoint(this.tooltipLocation).y},Object.defineProperty(e.prototype,"gradient",{get:function(){return this._gradient||(this._gradient=new Mt.a),this._gradient},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.FlowDiagramLink=Bt;var Et=i("/e9j"),Ht=i("DHte"),zt=function(t){function e(){var e=t.call(this)||this;return e.className="FlowDiagramDataItem",e.values.value={},e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"fromName",{get:function(){return this.properties.fromName},set:function(t){this.setProperty("fromName",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"toName",{get:function(){return this.properties.toName},set:function(t){this.setProperty("toName",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){return this.properties.color},set:function(t){this.setProperty("color",Object(M.e)(t))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.values.value.value},set:function(t){this.setValue("value",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"link",{get:function(){var t=this;if(!this._link){var e=this.component.links.create();this._link=e,this.addSprite(e),this._disposers.push(new F.b(function(){t.component&&t.component.links.removeValue(e)}))}return this._link},enumerable:!0,configurable:!0}),e}(wt.b),Ut=function(t){function e(){var e=t.call(this)||this;e.colors=new Ht.a,e.className="FlowDiagram",e.nodePadding=20,e.sortBy="none",e.sequencedInterpolation=!0,e.colors.step=2,e.minNodeSize=.02;var i=e.chartContainer.createChild(s.a);i.shouldClone=!1,i.layout="none",i.isMeasured=!1,e.linksContainer=i;var a=e.chartContainer.createChild(s.a);return a.shouldClone=!1,a.layout="none",a.isMeasured=!1,e.nodesContainer=a,e.dataItem=e.createDataItem(),e.dataItem.component=e,e.applyTheme(),e}return n.c(e,t),e.prototype.dispose=function(){t.prototype.dispose.call(this),this.dataItem.dispose()},e.prototype.validateData=function(){var e=this;0==this._parseDataFrom&&this.nodes.clear(),this.sortNodes(),this.colors.reset(),t.prototype.validateData.call(this);var i,a,n=0,r=0;g.each(this.dataItems.iterator(),function(t){var s=t.fromName;s&&((o=e.nodes.getKey(s))||((o=e.nodes.create(s)).name=s,o.chart=e,o.dataItem=t),t.fromNode=o,t.fromNode.outgoingDataItems.push(t));var o,l=t.toName;l&&((o=e.nodes.getKey(l))||((o=e.nodes.create(l)).name=l,o.chart=e,o.dataItem=t),t.toNode=o,t.toNode.incomingDataItems.push(t));if(!t.fromNode){var h=new Et.a;h.opacities=[0,1],t.link.strokeModifier=h}if(!t.toNode){var u=new Et.a;u.opacities=[1,0],t.link.strokeModifier=u}var c=t.value;y.isNumber(c)&&(n+=c,r++,(i>c||!y.isNumber(i))&&(i=c),(a<c||!y.isNumber(a))&&(a=c))});var s="value";this.dataItem.setCalculatedValue(s,a,"high"),this.dataItem.setCalculatedValue(s,i,"low"),this.dataItem.setCalculatedValue(s,n,"sum"),this.dataItem.setCalculatedValue(s,n/r,"average"),this.dataItem.setCalculatedValue(s,r,"count"),g.each(this.nodes.iterator(),function(t){var i=t[1];i.fill instanceof M.a&&(i.color=i.fill),void 0==i.color&&(i.color=e.colors.next()),void 0!=i.dataItem.color&&(i.color=i.dataItem.color),i.dataItem.visible||i.hide(0),e.getNodeValue(i)}),this.sortNodes(),this.feedLegend()},e.prototype.handleDataItemWorkingValueChange=function(t,e){this.invalidate()},e.prototype.sortNodes=function(){"name"==this.sortBy?this._sorted=this.nodes.sortedIterator():"value"==this.sortBy?this._sorted=g.sort(this.nodes.iterator(),function(t,e){return Lt.b(Xt.order(t[1].total,e[1].total))}):this._sorted=this.nodes.iterator()},e.prototype.getNodeValue=function(t){var e=0,i=0;g.each(t.incomingDataItems.iterator(),function(t){var i=t.getWorkingValue("value");y.isNumber(i)&&(e+=i)}),g.each(t.outgoingDataItems.iterator(),function(t){var e=t.getWorkingValue("value");y.isNumber(e)&&(i+=e)}),t.total=e+i,t.totalIncoming=e,t.totalOutgoing=i},e.prototype.changeSorting=function(){this.sortNodes()},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Flow diagram"))},e.prototype.createDataItem=function(){return new zt},Object.defineProperty(e.prototype,"nodePadding",{get:function(){return this.getPropertyValue("nodePadding")},set:function(t){this.setPropertyValue("nodePadding",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sortBy",{get:function(){return this.getPropertyValue("sortBy")},set:function(t){this.setPropertyValue("sortBy",t),this.changeSorting()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"minNodeSize",{get:function(){return this.getPropertyValue("minNodeSize")},set:function(t){this.setPropertyValue("minNodeSize",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nodes",{get:function(){if(!this._nodes){var t=this.createNode();t.events.on("hit",function(t){t.target.handleHit(t)}),this._nodes=new h.c(t),this._disposers.push(new h.b(this._nodes))}return this._nodes},enumerable:!0,configurable:!0}),e.prototype.createNode=function(){var t=new jt;return this._disposers.push(t),t},Object.defineProperty(e.prototype,"links",{get:function(){return this._links||(this._links=new o.e(this.createLink()),this._disposers.push(new o.c(this._links))),this._links},enumerable:!0,configurable:!0}),e.prototype.createLink=function(){var t=new Bt;return this._disposers.push(t),t},e.prototype.feedLegend=function(){var t=this.legend;if(t){var e=[];this.nodes.each(function(t,i){e.push(i)}),t.data=e,t.dataFields.name="name"}},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.nodes.clear()},e}(wt.a);c.b.registeredClasses.FlowDiagram=Ut;var Kt=function(t){function e(){var e=t.call(this)||this;e.className="LabelBullet";var i=e.createChild($.a);return i.shouldClone=!1,i.verticalCenter="middle",i.horizontalCenter="middle",i.truncate=!0,i.hideOversized=!1,i.maxWidth=500,i.maxHeight=500,i.stroke=Object(M.c)(),i.strokeOpacity=0,i.fill=(new W.a).getFor("text"),e.events.on("maxsizechanged",e.handleMaxSize,e,!1),e.label=i,e.applyTheme(),e}return n.c(e,t),e.prototype.handleMaxSize=function(){this.label.maxWidth=this.maxWidth,this.label.maxHeight=this.maxHeight},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.label.copyFrom(e.label)},e}(et.a);c.b.registeredClasses.LabelBullet=Kt;var Gt=function(t){function e(){var e=t.call(this)||this;e.nextInCoord=0,e.nextOutCoord=0,e.className="SankeyNode",e.width=10,e.height=10;var i=e.createChild(Kt);i.shouldClone=!1,i.locationX=1,i.locationY=.5,i.label.text="{name}",i.width=150,i.height=150,i.label.horizontalCenter="left",i.label.padding(0,5,0,5),e.nameLabel=i;var a=e.createChild(Kt);a.shouldClone=!1,a.label.hideOversized=!1,a.locationX=.5,a.locationY=.5,a.width=150,a.height=150,a.label.horizontalCenter="middle",e.valueLabel=a;var n=e.hiddenState;return n.properties.fill=(new W.a).getFor("disabledBackground"),n.properties.opacity=.5,n.properties.visible=!0,e.background.hiddenState.copyFrom(n),e}return n.c(e,t),e.prototype.invalidateLinks=function(){var e=this;t.prototype.invalidateLinks.call(this),this.nextInCoord=0,this.nextOutCoord=0;var i=this.chart;if(i){var a=i.orientation;this._incomingSorted&&g.each(this._incomingSorted,function(t){var n=t.link,r=t.getWorkingValue("value");if(y.isNumber(r)){n.parent=e.chart.linksContainer;var s=void 0,o=void 0,l=void 0;if("horizontal"==a?(s=e.pixelX+e.dx,o=e.nextInCoord+e.pixelY+e.dy,l=0):(o=e.pixelY+e.dy,s=e.nextInCoord+e.pixelX+e.dx,l=90),n.endX=s,n.endY=o,n.startAngle=l,n.endAngle=l,n.gradient.rotation=l,n.linkWidth=r*i.valueHeight,!t.fromNode){"horizontal"==a?(n.maxWidth=200,n.startX=e.pixelX+e.dx-n.maxWidth,n.startY=n.endY):(n.maxHeight=200,n.startX=n.endX,n.startY=e.pixelY+e.dy-n.maxHeight),k.used(n.gradient),n.fill=t.toNode.color;var h=n.gradient.stops.getIndex(0);h&&("gradient"==n.colorMode&&(h.color=e.color),h.opacity=0,n.fill=n.gradient,n.stroke=n.gradient,n.gradient.validate())}e.nextInCoord+=n.linkWidth}}),this._outgoingSorted&&g.each(this._outgoingSorted,function(t){var i=t.link;i.parent=e.chart.linksContainer;var n=t.getWorkingValue("value");if(y.isNumber(n)){var r=void 0,s=void 0,o=void 0;if("horizontal"==a?(o=0,r=e.pixelX+e.pixelWidth+e.dx-1,s=e.nextOutCoord+e.pixelY+e.dy):(o=90,r=e.nextOutCoord+e.pixelX+e.dx,s=e.pixelY+e.pixelHeight+e.dy-1),i.startX=r,i.startY=s,i.startAngle=o,i.endAngle=o,i.gradient.rotation=o,i.linkWidth=n*e.chart.valueHeight,!t.toNode){"horizontal"==a?(i.maxWidth=200,i.endX=e.pixelX+i.maxWidth+e.dx,i.endY=i.startY):(i.maxHeight=200,i.endX=i.startX,i.endY=e.pixelY+i.maxHeight+e.dy),i.opacity=e.opacity;var l=i.gradient.stops.getIndex(1);l&&("gradient"==i.colorMode&&(l.color=e.color),l.opacity=0,i.fill=i.gradient,i.stroke=i.gradient,i.gradient.validate())}e.nextOutCoord+=i.linkWidth}})}this.positionBullet(this.nameLabel),this.positionBullet(this.valueLabel)},e.prototype.positionBullet=function(t){t&&(t.x=this.measuredWidth*t.locationX,t.y=this.measuredHeight*t.locationY)},Object.defineProperty(e.prototype,"level",{get:function(){return this.getPropertyValue("level")},set:function(t){this.setPropertyValue("level",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.nameLabel.copyFrom(e.nameLabel),this.valueLabel.copyFrom(e.valueLabel)},e}(jt);c.b.registeredClasses.SankeyNode=Gt;var qt=i("xgTw"),Zt=function(t){function e(){var e=t.call(this)||this;return e.className="SankeyLink",new W.a,e.tension=.8,e.controlPointDistance=.2,e.startAngle=0,e.endAngle=0,e.linkWidth=0,e.startX=0,e.endX=0,e.startY=0,e.endY=0,e.middleLine=e.createChild(qt.a),e.middleLine.shouldClone=!1,e.middleLine.strokeOpacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){if(t.prototype.validate.call(this),!this.isTemplate){var e=this.startX,i=this.startY,a=this.endX,n=this.endY;y.isNumber(a)||(a=e),y.isNumber(n)||(n=i);var r=this.startAngle,s=this.endAngle,o=this.linkWidth,l="",h=e,u=i,c=a,d=n,p=e+o*m.sin(r),g=a+o*m.sin(s),f=i+o*m.cos(r),x=n+o*m.cos(s),v=e+o/2*m.sin(r),b=a+o/2*m.sin(s),P=i+o/2*m.cos(r),A=n+o/2*m.cos(s);this.zIndex=this.zIndex||this.dataItem.index;var C=this.tension+(1-this.tension)*m.sin(r),I=this.tension+(1-this.tension)*m.cos(r);if(this.middleLine.tensionX=C,this.middleLine.tensionY=I,y.isNumber(o)&&y.isNumber(e)&&y.isNumber(a)&&y.isNumber(i)&&y.isNumber(n)){m.round(h,3)==m.round(c,3)&&(c+=.01),m.round(u,3)==m.round(d,3)&&(d+=.01),m.round(p,3)==m.round(g,3)&&(g+=.01),m.round(f,3)==m.round(x,3)&&(x+=.01);var D=Math.min(p,g,h,c),_=Math.min(f,x,u,d),T=Math.max(p,g,h,c),V=Math.max(f,x,u,d);this._bbox={x:D,y:_,width:T-D,height:V-_};var S=this.controlPointDistance,F=h+(c-h)*S*m.cos(r),k=u+(d-u)*S*m.sin(r),O=c-(c-h)*S*m.cos(s),R=d-(d-u)*S*m.sin(s),L=v+(b-v)*S*m.cos(r),X=P+(A-P)*S*m.sin(r),Y=b-(b-v)*S*m.cos(s),N=A-(A-P)*S*m.sin(s),j=m.getAngle({x:F,y:k},{x:O,y:R}),M=(o/m.cos(j)-o)/m.tan(j)*m.cos(r),W=(o/m.sin(j)-o)*m.tan(j)*m.sin(r),B=-M/2+p+(g-p)*S*m.cos(r),E=-W/2+f+(x-f)*S*m.sin(r),H=-M/2+g-(g-p)*S*m.cos(s),z=-W/2+x-(x-f)*S*m.sin(s);this.middleLine.segments=[[{x:v,y:P},{x:L,y:X},{x:Y,y:N},{x:b,y:A}]],F+=M/2,k+=W/2,O+=M/2,R+=W/2,l+=w.moveTo({x:h,y:u}),l+=new Z.b(C,I).smooth([{x:h,y:u},{x:F,y:k},{x:O,y:R},{x:c,y:d}]),l+=w.lineTo({x:g,y:x}),l+=new Z.b(C,I).smooth([{x:g,y:x},{x:H,y:z},{x:B,y:E},{x:p,y:f}]),l+=w.closePath()}this.link.path=l,this.maskBullets&&(this.bulletsMask.path=l,this.bulletsContainer.mask=this.bulletsMask),this.positionBullets()}},Object.defineProperty(e.prototype,"startX",{get:function(){return this.getPropertyValue("startX")},set:function(t){this.setPropertyValue("startX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endX",{get:function(){return this.getPropertyValue("endX")},set:function(t){this.setPropertyValue("endX",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startY",{get:function(){return this.getPropertyValue("startY")},set:function(t){this.setPropertyValue("startY",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endY",{get:function(){return this.getPropertyValue("endY")},set:function(t){this.setPropertyValue("endY",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"linkWidth",{get:function(){return this.getPropertyValue("linkWidth")},set:function(t){this.setPropertyValue("linkWidth",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"controlPointDistance",{get:function(){return this.getPropertyValue("controlPointDistance")},set:function(t){this.setPropertyValue("controlPointDistance",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t,!0)},enumerable:!0,configurable:!0}),e}(Bt);c.b.registeredClasses.SankeyLink=Zt;var Jt=i("1yyj"),Qt=function(t){function e(){var e=t.call(this)||this;return e.className="SankeyDiagramDataItem",e.applyTheme(),e}return n.c(e,t),e}(zt),$t=function(t){function e(){var e=t.call(this)||this;return e.className="SankeyDiagram",e.orientation="horizontal",e.nodeAlign="middle",e.nodesContainer.width=Object(Y.c)(100),e.nodesContainer.height=Object(Y.c)(100),e.linksContainer.width=Object(Y.c)(100),e.linksContainer.height=Object(Y.c)(100),e.applyTheme(),e}return n.c(e,t),e.prototype.validateData=function(){var e=this;t.prototype.validateData.call(this),this._levelCount=0,this.nodes.each(function(t,i){i.level=e.getNodeLevel(i,0),e._levelCount=m.max(e._levelCount,i.level)})},e.prototype.getNodeLevel=function(t,e){var i=this,a=[e];return g.each(t.incomingDataItems.iterator(),function(t){t.fromNode&&a.push(i.getNodeLevel(t.fromNode,e+1))}),Math.max.apply(Math,n.f(a))},e.prototype.calculateValueHeight=function(){var t=this;this._levelSum={},this._levelNodesCount={},this.maxSum=0;var e,i,a=this.dataItem.values.value.sum;g.each(this._sorted,function(e){var i=e[1];t.getNodeValue(i)}),this.nodes.each(function(e,i){var n=i.level,r=Math.max(i.totalIncoming,i.totalOutgoing);r/a<t.minNodeSize&&(r=a*t.minNodeSize),y.isNumber(t._levelSum[n])?t._levelSum[n]+=r:t._levelSum[n]=r,y.isNumber(t._levelNodesCount[n])?t._levelNodesCount[n]++:t._levelNodesCount[n]=1}),e="horizontal"==this.orientation?this.chartContainer.maxHeight-1:this.chartContainer.maxWidth-1,f.each(this._levelSum,function(a,n){var r=n;n=n*e/(e-(t._levelNodesCount[a]-1)*t.nodePadding),t.maxSum<n&&(t.maxSum=r,i=y.toNumber(a))}),this._maxSumLevel=i;var n=this._levelNodesCount[this._maxSumLevel],r=(e-(n-1)*this.nodePadding)/this.maxSum;if(y.isNumber(this.valueHeight)){var s=void 0;try{s=this._heightAnimation.animationOptions[0].to}catch(t){}if(s!=r){var o=this.interpolationDuration;try{o=this.nodes.template.states.getKey("active").transitionDuration}catch(t){}this._heightAnimation=new Jt.a(this,{property:"valueHeight",from:this.valueHeight,to:r},o).start(),this._disposers.push(this._heightAnimation)}}else this.valueHeight=r},e.prototype.validate=function(){var e=this;t.prototype.validate.call(this),this.calculateValueHeight();var i=this.nodesContainer,a={},n=this._levelNodesCount[this._maxSumLevel],r=this.dataItem.values.value.sum;g.each(this._sorted,function(t){var s,o,l,h=t[1],u=h.level,c=0,d=e._levelNodesCount[u];switch(e.nodeAlign){case"bottom":c=(e.maxSum-e._levelSum[u])*e.valueHeight-(d-n)*e.nodePadding;break;case"middle":c=(e.maxSum-e._levelSum[u])*e.valueHeight/2-(d-n)*e.nodePadding/2}h.parent=i;var p=Math.max(h.totalIncoming,h.totalOutgoing);if(p/r<e.minNodeSize&&(p=r*e.minNodeSize),"horizontal"==e.orientation){o=(s=(e.innerWidth-h.pixelWidth)/e._levelCount)*h.level,l=a[u]||c;var y=p*e.valueHeight;h.height=y,h.minX=o,h.maxX=o,a[u]=l+y+e.nodePadding}else{s=(e.innerHeight-h.pixelHeight)/e._levelCount,o=a[u]||c,l=s*h.level;var g=p*e.valueHeight;h.width=g,h.minY=l,h.maxY=l,a[u]=o+g+e.nodePadding}h.x=o,h.y=l})},e.prototype.showReal=function(e){var i=this;if(this.interpolationDuration>0){var a=this.nodesContainer,n=0;g.each(this.links.iterator(),function(t){t.hide(0)}),g.each(this._sorted,function(t){var e,r=t[1];"horizontal"==i.orientation?(r.dx=-(a.pixelWidth-r.pixelWidth)/i._levelCount,e="dx"):(r.dy=-(a.pixelHeight-r.pixelHeight)/i._levelCount,e="dy");var s=0,o=i.interpolationDuration;i.sequencedInterpolation&&(s=i.sequencedInterpolationDelay*n+o*n/g.length(i.nodes.iterator())),r.opacity=0,r.invalidateLinks(),r.animate([{property:"opacity",from:0,to:1},{property:e,to:0}],i.interpolationDuration,i.interpolationEasing).delay(s),g.each(r.outgoingDataItems.iterator(),function(t){var e=t.link.show(i.interpolationDuration);e&&!e.isFinished()&&e.delay(s)}),g.each(r.incomingDataItems.iterator(),function(t){if(!t.fromNode){var e=t.link.show(i.interpolationDuration);e&&!e.isFinished()&&e.delay(s)}}),n++})}return t.prototype.showReal.call(this)},e.prototype.changeSorting=function(){var t=this;this.sortNodes();var e={};g.each(this._sorted,function(i){var a,n,r=i[1],s=r.level,o=(t.maxSum-t._levelSum[s])*t.valueHeight/2;"horizontal"==t.orientation?(a="y",n=r.pixelHeight):(a="x",n=r.pixelWidth),r.animate({property:a,to:e[s]||o},t.interpolationDuration,t.interpolationEasing),e[s]=(e[s]||o)+n+t.nodePadding,r.invalidateLinks()})},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Sankey diagram"))},e.prototype.createDataItem=function(){return new Qt},Object.defineProperty(e.prototype,"nodeAlign",{get:function(){return this.getPropertyValue("nodeAlign")},set:function(t){this.setPropertyValue("nodeAlign",t),this.changeSorting()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0);var e=this.nodes.template.nameLabel;"vertical"==t?(this.nodes.template.width=void 0,e.label.horizontalCenter="middle",e.locationX=.5):(this.nodes.template.height=void 0,e.label.horizontalCenter="left",e.locationX=1)},enumerable:!0,configurable:!0}),e.prototype.createNode=function(){var t=new Gt;return this._disposers.push(t),t},e.prototype.createLink=function(){var t=new Zt;return this._disposers.push(t),t},Object.defineProperty(e.prototype,"valueHeight",{get:function(){return this._valueHeight},set:function(t){t!=this._valueHeight&&(this._valueHeight=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this._sorted=this.nodes.iterator()},e}(Ut);c.b.registeredClasses.SankeyDiagram=$t;var te=i("Inf5"),ee=function(t){function e(){var e=t.call(this)||this;e.className="ChordNode";var i=e.createChild(pt.a);i.location=.5,i.radius=5,i.text="{name}",i.zIndex=1,i.shouldClone=!1,e.label=i,e.layout="none",e.events.on("positionchanged",e.updateRotation,e,!1),e.isMeasured=!1,e.slice=e.createChild(te.a),e.slice.isMeasured=!1;var a=e.hiddenState;return a.properties.fill=(new W.a).getFor("disabledBackground"),a.properties.opacity=.5,a.properties.visible=!0,e.setStateOnChildren=!1,e.slice.hiddenState.properties.visible=!0,e.adapter.add("tooltipX",function(t,e){return e.slice.ix*(e.slice.radius-(e.slice.radius-e.slice.pixelInnerRadius)/2)}),e.adapter.add("tooltipY",function(t,e){return e.slice.iy*(e.slice.radius-(e.slice.radius-e.slice.pixelInnerRadius)/2)}),e}return n.c(e,t),e.prototype.invalidateLinks=function(){var e=this;t.prototype.invalidateLinks.call(this);var i=this.label,a=this.slice,n=this.chart;if(n&&a){var r=this.total,s=a.arc,o=a.startAngle;this.children.each(function(t){if(t instanceof et.a){var e=t.locationX;y.isNumber(e)||(e=.5);var i=t.locationY;y.isNumber(i)||(i=1);var n=o+s*e,r=i*a.radius;t.x=r*m.cos(n),t.y=r*m.sin(n)}});var l=o+s*i.location,h=o+(1-r/this.adjustedTotal)*s*.5;y.isNaN(h)&&(h=o),i.fixPosition(l,a.radius),this.nextAngle=h,this._outgoingSorted&&g.each(this._outgoingSorted,function(t){var i=t.link;i.parent=e.chart.linksContainer;var r=t.getWorkingValue("value");if(y.isNumber(r)){if(n.nonRibbon){var l=i.percentWidth;y.isNumber(l)||(l=5),l/=100,i.startAngle=o+s/2-s/2*l,i.arc=s*l}else i.arc=r*n.valueAngle,i.startAngle=e.nextAngle,e.nextAngle+=i.arc;t.toNode||(i.endAngle=i.startAngle),i.radius=a.pixelInnerRadius}}),this._incomingSorted&&g.each(this._incomingSorted,function(t){var i=t.link;if(i.radius=a.pixelInnerRadius,n.nonRibbon){var r=i.percentWidth;y.isNumber(r)||(r=5),r/=100,i.endAngle=o+s/2-s/2*r,i.arc=s*r}else{i.endAngle=e.nextAngle;var l=t.getWorkingValue("value");y.isNumber(l)&&(i.arc=l*n.valueAngle,e.nextAngle+=i.arc)}t.fromNode||(i.startAngle=i.endAngle)})}},e.prototype.updateRotation=function(){var t=this.slice,e=this.trueStartAngle+t.arc/2,i=t.radius,a=i*m.cos(e),n=i*m.sin(e),r=m.getAngle({x:a+this.pixelX,y:n+this.pixelY});t.startAngle=this.trueStartAngle+(r-e),this.dx=-this.pixelX,this.dy=-this.pixelY},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.label.copyFrom(e.label),this.slice.copyFrom(e.slice)},e}(jt);c.b.registeredClasses.ChordNode=ee;var ie=function(t){function e(){var e=t.call(this)||this;return e.className="QuadraticCurve",e.element=e.paper.add("path"),e.pixelPerfect=!1,e.fill=Object(M.c)(),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){if(y.isNumber(this.x1+this.x2+this.y1+this.y2+this.cpx+this.cpy)){var t={x:this.x1,y:this.y1},e={x:this.x2,y:this.y2},i={x:this.cpx,y:this.cpy},a=w.moveTo(t)+w.quadraticCurveTo(e,i);this.path=a}},Object.defineProperty(e.prototype,"cpx",{get:function(){return this.getPropertyValue("cpx")},set:function(t){this.setPropertyValue("cpx",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"cpy",{get:function(){return this.getPropertyValue("cpy")},set:function(t){this.setPropertyValue("cpy",t,!0)},enumerable:!0,configurable:!0}),e.prototype.positionToPoint=function(t){var e={x:this.x1,y:this.y1},i={x:this.cpx,y:this.cpy},a={x:this.x2,y:this.y2},n=m.getPointOnQuadraticCurve(e,a,i,t),r=m.getPointOnQuadraticCurve(e,a,i,t+.001);return{x:n.x,y:n.y,angle:m.getAngle(n,r)}},e}(Q.a),ae=function(t){function e(){var e=t.call(this)||this;return e.className="ChordLink",e.middleLine=e.createChild(ie),e.middleLine.shouldClone=!1,e.middleLine.strokeOpacity=0,e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){if(t.prototype.validate.call(this),!this.isTemplate){var e=this.startAngle,i=this.endAngle,a=this.arc,n=this.radius,r=this.dataItem.fromNode,s=this.dataItem.toNode,o=0,l=0;r&&(o=r.pixelX+r.dx,l=r.pixelY+r.dy);var h=0,u=0;if(s&&(h=s.pixelX+s.dx,u=s.pixelY+s.dy),n>0){var c=n*m.cos(e)+o,d=n*m.sin(e)+l,p=n*m.cos(i)+h,y=n*m.sin(i)+u,g={x:0,y:0},f=w.moveTo({x:c,y:d});f+=w.arcTo(e,a,n),f+=w.quadraticCurveTo({x:p,y:y},g),f+=w.arcTo(i,a,n),f+=w.quadraticCurveTo({x:c,y:d},g),this.link.path=a>0?f:"",this.maskBullets&&(this.bulletsMask.path=f,this.bulletsContainer.mask=this.bulletsMask);var x=e+a/2,v=i+a/2,b=this.middleLine;b.x1=n*m.cos(x)+o,b.y1=n*m.sin(x)+l,b.x2=n*m.cos(v)+h,b.y2=n*m.sin(v)+u,b.cpx=0,b.cpy=0,b.stroke=this.fill,this.positionBullets()}}},Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPropertyValue("radius",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"arc",{get:function(){return this.getPropertyValue("arc")},set:function(t){this.setPropertyValue("arc",t,!0)},enumerable:!0,configurable:!0}),e}(Bt);c.b.registeredClasses.ChordLink=ae;var ne=function(t){function e(){var e=t.call(this)||this;return e.className="ChordDiagramDataItem",e.applyTheme(),e}return n.c(e,t),e}(zt),re=function(t){function e(){var e=t.call(this)||this;e.valueAngle=0,e.className="ChordDiagram",e.startAngle=-90,e.endAngle=270,e.radius=Object(Y.c)(80),e.innerRadius=-15,e.nodePadding=5;var i=e.chartContainer.createChild(s.a);return i.align="center",i.valign="middle",i.shouldClone=!1,i.layout="absolute",e.chordContainer=i,e.nodesContainer.parent=i,e.linksContainer.parent=i,e.chartContainer.events.on("maxsizechanged",e.invalidate,e,!1),e.applyTheme(),e}return n.c(e,t),e.prototype.validate=function(){var e=this,i=this.chartContainer,a=this.endAngle,n=this.startAngle+this.nodePadding/2,r=m.getArcRect(this.startAngle,this.endAngle,1);r=m.getCommonRectangle([r,{x:0,y:0,width:0,height:0}]);var s=Math.min(i.innerWidth/r.width,i.innerHeight/r.height);y.isNumber(s)||(s=0);var o=k.relativeRadiusToValue(this.radius,s),l=k.relativeRadiusToValue(this.innerRadius,o,!0),h=this.dataItem.values.value.sum,u=0,c=0;g.each(this._sorted,function(t){var i=t[1];e.getNodeValue(i),u++;var a=i.total;i.total/h<e.minNodeSize&&(a=h*e.minNodeSize),c+=a}),this.valueAngle=(a-this.startAngle-this.nodePadding*u)/c,g.each(this._sorted,function(t){var i=t[1],r=i.slice;r.radius=o,r.innerRadius=l;var s,c=i.total;i.total/h<e.minNodeSize&&(c=h*e.minNodeSize),i.adjustedTotal=c,s=e.nonRibbon?(a-e.startAngle)/u-e.nodePadding:e.valueAngle*c,r.arc=s,r.startAngle=n,i.trueStartAngle=n,i.parent=e.nodesContainer,i.validate(),n+=s+e.nodePadding}),this.chordContainer.definedBBox={x:o*r.x,y:o*r.y,width:o*r.width,height:o*r.height},this.chordContainer.invalidateLayout(),t.prototype.validate.call(this)},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Chord diagram"))},e.prototype.createDataItem=function(){return new ne},Object.defineProperty(e.prototype,"startAngle",{get:function(){return this.getPropertyValue("startAngle")},set:function(t){this.setPropertyValue("startAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endAngle",{get:function(){return this.getPropertyValue("endAngle")},set:function(t){this.setPropertyValue("endAngle",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"radius",{get:function(){return this.getPropertyValue("radius")},set:function(t){this.setPercentProperty("radius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"innerRadius",{get:function(){return this.getPropertyValue("innerRadius")},set:function(t){this.setPercentProperty("innerRadius",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"nonRibbon",{get:function(){return this.getPropertyValue("nonRibbon")},set:function(t){this.setPropertyValue("nonRibbon",t,!0),this.links.template.middleLine.strokeOpacity=1,this.links.template.link.fillOpacity=0},enumerable:!0,configurable:!0}),e.prototype.createNode=function(){var t=new ee;return this._disposers.push(t),t},e.prototype.createLink=function(){var t=new ae;return this._disposers.push(t),t},e}(Ut);c.b.registeredClasses.ChordDiagram=re;var se=function(t){function e(){var e=t.call(this)||this;return e.className="Column",e.width=Object(Y.c)(80),e.height=Object(Y.c)(80),e.applyOnClones=!0,e.strokeOpacity=1,e.layout="none",e.createAssets(),e.events.on("childadded",e.handleKidAdded,e,!1),e}return n.c(e,t),e.prototype.handleKidAdded=function(){"none"==this.layout&&(this.layout="absolute")},e.prototype.createAssets=function(){this.column=this.createChild(Yt.a),this.column.shouldClone=!1,this.column.cornerRadius(0,0,0,0),this._disposers.push(this.column)},e.prototype.validate=function(){t.prototype.validate.call(this);var e=this.column;e&&(e.width=m.min(this.pixelWidth,this.maxWidth),e.height=m.min(this.pixelHeight,this.maxHeight),e.invalid&&e.validate())},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.column&&this.column.copyFrom(e.column)},Object.defineProperty(e.prototype,"bbox",{get:function(){return this.definedBBox?this.definedBBox:this.column?{x:0,y:0,width:this.column.measuredWidth,height:this.column.measuredHeight}:{x:0,y:0,width:m.min(this.pixelWidth,this.maxWidth),height:m.min(this.pixelHeight,this.maxHeight)}},enumerable:!0,configurable:!0}),e}(s.a);c.b.registeredClasses.Column=se;var oe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeriesDataItem",e.locations.dateX=.5,e.locations.dateY=.5,e.locations.categoryX=.5,e.locations.categoryY=.5,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"column",{get:function(){return this._column},set:function(t){this.setColumn(t)},enumerable:!0,configurable:!0}),e.prototype.setColumn=function(t){var e=this;if(this._column&&t!=this._column&&O.remove(this.sprites,this._column),this._column=t,t){var i=t.dataItem;i&&i!=this&&(i.column=void 0),this.addSprite(t),this._disposers.push(new F.b(function(){e.component&&e.component.columns.removeValue(t)}))}},Object.defineProperty(e.prototype,"rangesColumns",{get:function(){return this._rangesColumns||(this._rangesColumns=new h.a),this._rangesColumns},enumerable:!0,configurable:!0}),e}(R),le=function(t){function e(){var e=t.call(this)||this;e._startLocation=0,e._endLocation=1,e.className="ColumnSeries",e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.strokeOpacity=0,e.fillOpacity=1,e.clustered=!0;var i=e.mainContainer.createChild(s.a);return i.shouldClone=!1,i.isMeasured=!1,i.layout="none",e._columnsContainer=i,e.columns.template.pixelPerfect=!1,e.tooltipColorSource=e.columns.template,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"columnsContainer",{get:function(){return this._columnsContainer},enumerable:!0,configurable:!0}),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Column Series"))},e.prototype.createDataItem=function(){return new oe},e.prototype.validate=function(){var i=this,a=this.chart.series,n=0,r=0;g.each(a.iterator(),function(t){t instanceof e&&i.baseAxis==t.baseAxis&&((!t.stacked&&t.clustered||0===n)&&n++,t==i&&(r=n-1))});var s=this.baseAxis.renderer,o=s.cellStartLocation,l=s.cellEndLocation;this._startLocation=o+r/n*(l-o),this._endLocation=o+(r+1)/n*(l-o),t.prototype.validate.call(this);for(var h=0;h<this.startIndex;h++){var u=this.dataItems.getIndex(h);this.disableUnusedColumns(u)}for(h=this.dataItems.length-1;h>this.endIndex;h--){u=this.dataItems.getIndex(h);this.disableUnusedColumns(u)}},e.prototype.validateDataElement=function(e){this.validateDataElementReal(e),t.prototype.validateDataElement.call(this,e)},e.prototype.getStartLocation=function(t){var e=this._startLocation;return this.baseAxis==this.xAxis?e+=t.locations[this.xOpenField]-.5:e+=t.locations[this.yOpenField]-.5,e},e.prototype.handleDataItemWorkingValueChange=function(e,i){this.simplifiedProcessing?this.validateDataElement(e):t.prototype.handleDataItemWorkingValueChange.call(this,e,i)},e.prototype.getEndLocation=function(t){var e=this._endLocation;return this.baseAxis==this.xAxis?e+=t.locations[this.xField]-.5:e+=t.locations[this.yField]-.5,e},e.prototype.validateDataElementReal=function(t){var e,i,a,n,r=this,s=this.getStartLocation(t),o=this.getEndLocation(t),h=this.xField,u=this.xOpenField,c=this.yField,d=this.yOpenField,p=this.columns.template,x=p.percentWidth,v=p.percentHeight,b=p.pixelWidth,P=p.pixelHeight,A=p.maxWidth,C=p.maxHeight,I=p.pixelPaddingLeft,D=p.pixelPaddingRight,_=p.pixelPaddingTop,V=p.pixelPaddingBottom,F=!1;if(this.xAxis instanceof T&&this.yAxis instanceof T){if(!t.hasValue(this._xValueFields)||!t.hasValue(this._yValueFields))return;if(s=0,o=1,!y.isNaN(x))s+=R=m.round((o-s)*(1-x/100)/2,5),o-=R;if(e=this.xAxis.getX(t,u,s),i=this.xAxis.getX(t,h,o),y.isNaN(x))e+=R=(i-e-b)/2,i-=R;if(!y.isNaN(A))e+=R=(i-e-A)/2,i-=R;if(s=0,o=1,!y.isNaN(v))s+=R=m.round((1-v/100)/2,5),o-=R;if(a=this.yAxis.getY(t,d,s),n=this.yAxis.getY(t,c,o),y.isNaN(v))n+=R=(n-a-P)/2,a-=R;if(!y.isNaN(C))n+=R=(n-a-C)/2,a-=R;i=this.fixHorizontalCoordinate(i),e=this.fixHorizontalCoordinate(e),a=this.fixVerticalCoordinate(a),n=this.fixVerticalCoordinate(n)}else if(this.baseAxis==this.xAxis){if(!t.hasValue(this._yValueFields))return;if(!y.isNaN(x))s+=R=m.round((o-s)*(1-x/100)/2,5),o-=R;if(e=this.xAxis.getX(t,u,s),i=this.xAxis.getX(t,h,o),y.isNaN(x))e+=R=(i-e-b)/2,i-=R;if(!y.isNaN(A))e+=R=(i-e-A)/2,i-=R;var k=t.locations[d],O=t.locations[c];this.yAxis instanceof l.a&&this.dataFields[this.yField]!=this.dataFields[this.yOpenField]&&(k=0,O=0),n=this.yAxis.getY(t,d,k),a=this.yAxis.getY(t,c,O);var w=Math.ceil(this.yAxis.axisLength);(a<0&&n<0||a>w&&n>w)&&(F=!0),a=this.fixVerticalCoordinate(a),n=this.fixVerticalCoordinate(n),Math.abs(i-e)-I-D==0&&(F=!0)}else{if(!t.hasValue(this._xValueFields))return;var R;if(!y.isNaN(v))s+=R=m.round((o-s)*(1-v/100)/2,5),o-=R;if(a=this.yAxis.getY(t,d,s),n=this.yAxis.getY(t,c,o),y.isNaN(v))n-=R=(n-a-P)/2,a+=R;if(!y.isNaN(C))n-=R=(n-a-C)/2,a+=R;var L=t.locations[h],X=t.locations[u];this.xAxis instanceof l.a&&this.dataFields[this.xField]!=this.dataFields[this.xOpenField]&&(L=0,X=0),i=this.xAxis.getX(t,h,L),e=this.xAxis.getX(t,u,X);w=Math.ceil(this.xAxis.axisLength);(i<0&&e<0||i>w&&e>w)&&(F=!0),i=this.fixHorizontalCoordinate(i),e=this.fixHorizontalCoordinate(e),Math.abs(a-n)-_-V==0&&(F=!0)}var Y,N=Math.abs(i-e),j=Math.abs(n-a),M=Math.min(e,i),W=Math.min(a,n);F?this.disableUnusedColumns(t):(t.column?Y=t.column:(Y=this.columns.create(),f.copyProperties(this,Y,S.b),f.copyProperties(this.columns.template,Y,S.b),t.addSprite(Y),t.column=Y,Y.paper=this.paper,this.itemsFocusable()?(Y.role="menuitem",Y.focusable=!0):(Y.role="listitem",Y.focusable=!1),Y.focusable&&(Y.events.once("focus",function(e){Y.readerTitle=r.populateString(r.itemReaderText,t)},void 0,!1),Y.events.once("blur",function(t){Y.readerTitle=""},void 0,!1)),Y.hoverable&&(Y.events.once("over",function(e){Y.readerTitle=r.populateString(r.itemReaderText,t)},void 0,!1),Y.events.once("out",function(t){Y.readerTitle=""},void 0,!1))),Y.width=N,Y.height=j,Y.x=M,Y.y=W,Y.realX=e,Y.realY=a,Y.realWidth=i-e,Y.realHeight=n-a,Y.parent=this.columnsContainer,Y.virtualParent=this,this.setColumnStates(Y),Y.invalid&&Y.validate(),Y.__disabled=!1,g.each(this.axisRanges.iterator(),function(e){var i=t.rangesColumns.getKey(e.uid);i||(i=r.columns.create(),f.copyProperties(e.contents,i,S.b),t.addSprite(i),t.rangesColumns.setKey(e.uid,i),i.paper=r.paper),i.parent=e.contents,i.width=N,i.height=j,i.x=M,i.y=W,r.setColumnStates(i),i.invalid&&i.validate(),i.__disabled=!1}));t.itemWidth=N,t.itemHeight=j},e.prototype.disableUnusedColumns=function(t){t&&(t.column&&(t.column.width=0,t.column.height=0,t.column.__disabled=!0),g.each(this.axisRanges.iterator(),function(e){var i=t.rangesColumns.getKey(e.uid);i&&(i.width=0,i.height=0,i.__disabled=!0)}))},e.prototype.setColumnStates=function(t){var e=t.dataItem;if(this.xAxis instanceof l.a||this.yAxis instanceof l.a){var i,a=void 0,n=void 0;this.baseAxis==this.yAxis?this.xOpenField&&this.xField&&this.xAxis instanceof l.a&&(i=e.getValue(this.xOpenField),a=e.getValue(this.xField),n=e.getValue(this.xAxis.axisFieldName+"X","previousChange")):this.yOpenField&&this.yField&&this.yAxis instanceof l.a&&(i=e.getValue(this.yOpenField),a=e.getValue(this.yField),n=e.getValue(this.yAxis.axisFieldName+"Y","previousChange")),a<i?(e.droppedFromOpen=!0,t.defaultState.copyFrom(this._dropFromOpenState),t.setState(this._dropFromOpenState,0)):(e.droppedFromOpen=!1,t.defaultState.copyFrom(this._riseFromOpenState),t.setState(this._riseFromOpenState,0)),n<0?(e.droppedFromPrevious=!0,t.defaultState.copyFrom(this._dropFromPreviousState),t.setState(this._dropFromPreviousState,0)):(e.droppedFromPrevious=!1,t.defaultState.copyFrom(this._riseFromPreviousState),t.setState(this._riseFromPreviousState,0))}},Object.defineProperty(e.prototype,"columns",{get:function(){return this._columns||(this._columns=new o.e(this.createColumnTemplate()),this._disposers.push(new o.c(this._columns)),this._disposers.push(this._columns.template)),this._columns},enumerable:!0,configurable:!0}),e.prototype.createColumnTemplate=function(){return new se},Object.defineProperty(e.prototype,"clustered",{get:function(){return this.getPropertyValue("clustered")},set:function(t){this.setPropertyValue("clustered",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropFromOpenState",{get:function(){return this._dropFromOpenState||(this._dropFromOpenState=this.states.create("dropFromOpenState")),this._dropFromOpenState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dropFromPreviousState",{get:function(){return this._dropFromPreviousState||(this._dropFromPreviousState=this.states.create("dropFromPreviousState")),this._dropFromPreviousState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"riseFromOpenState",{get:function(){return this._riseFromOpenState||(this._riseFromOpenState=this.states.create("riseFromOpenState")),this._riseFromOpenState},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"riseFromPreviousState",{get:function(){return this._riseFromPreviousState||(this._riseFromPreviousState=this.states.create("riseFromPreviousState")),this._riseFromPreviousState},enumerable:!0,configurable:!0}),e.prototype.updateLegendValue=function(e){var i=this;if(t.prototype.updateLegendValue.call(this,e),this.legendDataItem){var a,n,r=this.legendDataItem.marker;e&&(a=e.droppedFromOpen?this._dropFromOpenState:this._riseFromOpenState,n=e.droppedFromPrevious?this._dropFromPreviousState:this._riseFromPreviousState),g.each(r.children.iterator(),function(t){e?(t.setState(n),t.setState(a)):(t.setState(i._riseFromPreviousState),t.setState(i._riseFromOpenState))})}},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a=t.createChild(Yt.a);a.shouldClone=!1,f.copyProperties(this,a,S.b),a.copyFrom(this.columns.template),a.padding(0,0,0,0),a.width=e,a.height=i;var n=t.dataItem;n.color=this.fill,n.colorOrig=this.fill},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.columns.template.copyFrom(e.columns.template)},e.prototype.getBulletLocationX=function(e,i){if(this.baseAxis==this.xAxis){var a=e.locationX;return y.isNumber(a)||(a=.5),this._endLocation-(this._endLocation-this._startLocation)*a}return t.prototype.getBulletLocationX.call(this,e,i)},e.prototype.getBulletLocationY=function(e,i){if(this.baseAxis==this.yAxis){var a=e.locationY;return y.isNumber(a)||(a=.5),this._endLocation-(this._endLocation-this._startLocation)*a}return t.prototype.getBulletLocationY.call(this,e,i)},e.prototype.fixVerticalCoordinate=function(t){var e=this.columns.template.pixelPaddingBottom,i=-this.columns.template.pixelPaddingTop,a=this.yAxis.axisLength+e;return m.fitToRange(t,i,a)},e.prototype.fixHorizontalCoordinate=function(t){var e=this.columns.template.pixelPaddingLeft,i=this.columns.template.pixelPaddingRight,a=-e,n=this.xAxis.axisLength+i;return m.fitToRange(t,a,n)},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this.columns.clear()},e}(L);c.b.registeredClasses.ColumnSeries=le,c.b.registeredClasses.ColumnSeriesDataItem=oe;var he=function(t){function e(){var e=t.call(this)||this;return e.className="TreeMapSeriesDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"parentName",{get:function(){var t=this.treeMapDataItem;if(t&&t.parent)return t.parent.name},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){var t=this.treeMapDataItem;if(t)return t.value},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"treeMapDataItem",{get:function(){return this._dataContext},enumerable:!0,configurable:!0}),e.prototype.hide=function(e,i,a,n){var r=this.treeMapDataItem;return r&&r.hide(e),t.prototype.hide.call(this,e,i,a,n)},e.prototype.show=function(e,i,a){var n=this.treeMapDataItem;return n&&n.show(e,i,a),t.prototype.show.call(this,e,i,a)},e}(oe),ue=function(t){function e(){var e=t.call(this)||this;e.className="TreeMapSeries",e.applyTheme(),e.fillOpacity=1,e.strokeOpacity=1,e.minBulletDistance=0,e.columns.template.tooltipText="{parentName} {name}: {value}",e.columns.template.configField="config";var i=new W.a;return e.stroke=i.getFor("background"),e.dataFields.openValueX="x0",e.dataFields.valueX="x1",e.dataFields.openValueY="y0",e.dataFields.valueY="y1",e.sequencedInterpolation=!1,e.showOnInit=!1,e.columns.template.pixelPerfect=!1,e}return n.c(e,t),e.prototype.processDataItem=function(e,i){i.seriesDataItem=e,t.prototype.processDataItem.call(this,e,i)},e.prototype.createDataItem=function(){return new he},e.prototype.show=function(e){var i=this.defaultState.transitionDuration;return y.isNumber(e)&&(i=e),this.dataItems.each(function(t){t.show(e)}),t.prototype.showReal.call(this,i)},e.prototype.hide=function(e){var i=this.defaultState.transitionDuration;y.isNumber(e)&&(i=e);var a=t.prototype.hideReal.call(this,i);return this.dataItems.each(function(t){t.hide(e)}),a},e.prototype.processValues=function(){},e.prototype.dataChangeUpdate=function(){},e.prototype.processConfig=function(e){e&&(y.hasValue(e.dataFields)&&y.isObject(e.dataFields)||(e.dataFields={})),t.prototype.processConfig.call(this,e)},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a=t.createChild(Yt.a);a.shouldClone=!1,f.copyProperties(this,a,S.b),a.padding(0,0,0,0),a.width=e,a.height=i;var n=t.dataItem;n.color=a.fill,n.colorOrig=a.fill},e}(le);c.b.registeredClasses.TreeMapSeries=ue,c.b.registeredClasses.TreeMapSeriesDataItem=he;var ce=function(t){function e(){var e=t.call(this)||this;return e.rows=[],e.className="TreeMapDataItem",e.values.value={},e.values.x0={},e.values.y0={},e.values.x1={},e.values.y1={},e.hasChildren.children=!0,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"legendDataItem",{get:function(){return this._legendDataItem},set:function(t){this._legendDataItem=t,t.label&&(t.label.dataItem=this),t.valueLabel&&(t.valueLabel.dataItem=this)},enumerable:!0,configurable:!0}),e.prototype.getDuration=function(){return 0},Object.defineProperty(e.prototype,"value",{get:function(){var t=0;return this.children&&0!=this.children.length?g.each(this.children.iterator(),function(e){var i=e.value;y.isNumber(i)&&(t+=i)}):t=this.values.value.workingValue,t},set:function(t){this.setValue("value",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"percent",{get:function(){return this.parent?this.value/this.parent.value*100:100},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"x0",{get:function(){return this.values.x0.value},set:function(t){this.setValue("x0",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"x1",{get:function(){return this.values.x1.value},set:function(t){this.setValue("x1",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y0",{get:function(){return this.values.y0.value},set:function(t){this.setValue("y0",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"y1",{get:function(){return this.values.y1.value},set:function(t){this.setValue("y1",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"name",{get:function(){return this.properties.name},set:function(t){this.setProperty("name",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"children",{get:function(){return this.properties.children},set:function(t){this.setProperty("children",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"level",{get:function(){return this.parent?this.parent.level+1:0},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"color",{get:function(){var t=this.properties.color;return void 0==t&&this.parent&&(t=this.parent.color),void 0==t&&this.component&&(t=this.component.colors.getIndex(this.component.colors.step*this.index)),t},set:function(t){this.setProperty("color",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"fill",{get:function(){return this.color},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"series",{get:function(){return this._series},set:function(t){t!=this._series&&(this._series&&(this.component.series.removeValue(this._series),this._series.dispose()),this._series=t,this._disposers.push(t))},enumerable:!0,configurable:!0}),e.prototype.hide=function(e,i,a,n){return this.setWorkingValue("value",0),this.children&&this.children.each(function(t){t.hide(e,i,a,n)}),t.prototype.hide.call(this,e,i,a,n)},e.prototype.show=function(e,i,a){return this.setWorkingValue("value",this.values.value.value),this.children&&this.children.each(function(t){t.show(e,i,a)}),t.prototype.show.call(this,e,i,a)},e}(G),de=function(t){function e(){var e=t.call(this)||this;e.layoutAlgorithm=e.squarify,e.zoomable=!0,e.className="TreeMap",e.maxLevels=2,e.currentLevel=0,e.colors=new Ht.a,e.sorting="descending";var i=e.xAxes.push(new l.a);i.title.disabled=!0,i.strictMinMax=!0;var a=i.renderer;a.inside=!0,a.labels.template.disabled=!0,a.ticks.template.disabled=!0,a.grid.template.disabled=!0,a.axisFills.template.disabled=!0,a.minGridDistance=100,a.line.disabled=!0,a.baseGrid.disabled=!0;var n=e.yAxes.push(new l.a);n.title.disabled=!0,n.strictMinMax=!0;var r=n.renderer;r.inside=!0,r.labels.template.disabled=!0,r.ticks.template.disabled=!0,r.grid.template.disabled=!0,r.axisFills.template.disabled=!0,r.minGridDistance=100,r.line.disabled=!0,r.baseGrid.disabled=!0,r.inversed=!0,e.xAxis=i,e.yAxis=n;var s=new ue;return e.seriesTemplates=new h.c(s),e._disposers.push(new h.b(e.seriesTemplates)),e._disposers.push(s),e.zoomOutButton.events.on("hit",function(){e.zoomToChartDataItem(e._homeDataItem)},void 0,!1),e.seriesTemplates.events.on("insertKey",function(t){t.newValue.isTemplate=!0},void 0,!1),e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"navigationBar",{get:function(){return this._navigationBar},set:function(t){var e=this;this._navigationBar!=t&&(this._navigationBar=t,t.parent=this,t.toBack(),t.links.template.events.on("hit",function(t){var i=t.target.dataItem.dataContext;i.isDisposed()||(e.zoomToChartDataItem(i),e.createTreeSeries(i))},void 0,!0),this._disposers.push(t))},enumerable:!0,configurable:!0}),e.prototype.validateData=function(){this.series.clear(),this._tempSeries=[],t.prototype.validateData.call(this),this._homeDataItem&&this._homeDataItem.dispose();var e=this.dataItems.template.clone();this._homeDataItem=e,g.each(this.dataItems.iterator(),function(t){t.parent=e}),e.children=this.dataItems,e.x0=0,e.y0=0,e.name=this._homeText;var i=10*Math.round(1e3*this.pixelHeight/this.pixelWidth/10)||1e3;e.x1=1e3,e.y1=i,this.xAxis.min=0,this.xAxis.max=1e3,this.xAxis.getMinMax(),this.yAxis.min=0,this.yAxis.max=i,this.yAxis.getMinMax(),this.layoutItems(e),this.createTreeSeries(e)},e.prototype.layoutItems=function(t,e){if(t){var i=t.children;e||(e=this.sorting),"ascending"==e&&i.values.sort(function(t,e){return t.value-e.value}),"descending"==e&&i.values.sort(function(t,e){return e.value-t.value}),this._updateDataItemIndexes(0),this.layoutAlgorithm(t);for(var a=0,n=i.length;a<n;a++){var r=i.getIndex(a);r.children&&this.layoutItems(r)}}},e.prototype.createTreeSeries=function(t){var e=this;this._tempSeries=[];for(var i=[t],a=t.parent;void 0!=a;)this.initSeries(a),i.push(a),a=a.parent;i.reverse(),this.navigationBar&&(this.navigationBar.data=i),this.createTreeSeriesReal(t),O.each(this._tempSeries,function(t){-1==e.series.indexOf(t)&&e.series.push(t),t.zIndex=t.level})},e.prototype.createTreeSeriesReal=function(t){if(t.children&&t.level<this.currentLevel+this.maxLevels){this.initSeries(t);for(var e=0;e<t.children.length;e++){var i=t.children.getIndex(e);i.children&&this.createTreeSeriesReal(i)}}},e.prototype.setData=function(e){this.currentLevel=0,this.currentlyZoomed=void 0,this.xAxis.start=0,this.xAxis.end=1,this.yAxis.start=0,this.yAxis.end=1,t.prototype.setData.call(this,e)},e.prototype.seriesAppeared=function(){return!0},e.prototype.initSeries=function(t){var e=this;if(!t.series){var i=void 0,a=this.seriesTemplates.getKey(t.level.toString());(i=a?a.clone():this.series.create()).dataItem.dataContext=t,i.name=t.name,i.parentDataItem=t,t.series=i;var n=t.level;i.level=n;var r=t.dataContext;r&&(i.config=r.config),this.dataUsers.removeValue(i),i.data=t.children.values,i.fill=t.color,i.columnsContainer.hide(0),i.bulletsContainer.hide(0),i.columns.template.adapter.add("fill",function(t,e){var i=e.dataItem;if(i){var a=i.treeMapDataItem;if(a)return e.fill=a.color,e.adapter.remove("fill"),a.color}}),this.zoomable&&(t.level>this.currentLevel||t.children&&t.children.length>0)&&(i.columns.template.cursorOverStyle=N.a.pointer,this.zoomable&&i.columns.template.events.on("hit",function(i){var a=i.target.dataItem;t.level>e.currentLevel?e.zoomToChartDataItem(a.treeMapDataItem.parent):e.zoomToSeriesDataItem(a)},this,void 0))}this._tempSeries.push(t.series)},e.prototype.toggleBullets=function(t){var e=this;g.each(this.series.iterator(),function(i){-1==e._tempSeries.indexOf(i)?(i.columnsContainer.hide(),i.bulletsContainer.hide(t)):(i.columnsContainer.show(),i.bulletsContainer.show(t),i.level<e.currentLevel&&i.bulletsContainer.hide(t))})},e.prototype.zoomToSeriesDataItem=function(t){this.zoomToChartDataItem(t.treeMapDataItem)},e.prototype.zoomToChartDataItem=function(t){var e=this,i=this.zoomOutButton;if(i&&(t!=this._homeDataItem?i.show():i.hide()),t&&t.children){this.xAxis.zoomToValues(t.x0,t.x1),this.yAxis.zoomToValues(t.y0,t.y1),this.currentLevel=t.level,this.currentlyZoomed=t,this.createTreeSeries(t);var a=this.xAxis.rangeChangeAnimation||this.yAxis.rangeChangeAnimation;!a||a.isDisposed()||a.isFinished()?this.toggleBullets():(this._dataDisposers.push(a),a.events.once("animationended",function(){e.toggleBullets()}))}},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("TreeMap chart"))},e.prototype.createDataItem=function(){return new ce},Object.defineProperty(e.prototype,"maxLevels",{get:function(){return this.getPropertyValue("maxLevels")},set:function(t){this.setPropertyValue("maxLevels",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"currentLevel",{get:function(){return this.getPropertyValue("currentLevel")},set:function(t){this.setPropertyValue("currentLevel",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sorting",{get:function(){return this.getPropertyValue("sorting")},set:function(t){this.setPropertyValue("sorting",t,!0)},enumerable:!0,configurable:!0}),e.prototype.createSeries=function(){return new ue},Object.defineProperty(e.prototype,"homeText",{get:function(){return this._homeText},set:function(t){this._homeText=t,this._homeDataItem&&(this._homeDataItem.name=this._homeText)},enumerable:!0,configurable:!0}),e.prototype.processConfig=function(e){if(e){if(y.hasValue(e.layoutAlgorithm)&&y.isString(e.layoutAlgorithm))switch(e.layoutAlgorithm){case"squarify":e.layoutAlgorithm=this.squarify;break;case"binaryTree":e.layoutAlgorithm=this.binaryTree;break;case"slice":e.layoutAlgorithm=this.slice;break;case"dice":e.layoutAlgorithm=this.dice;break;case"sliceDice":e.layoutAlgorithm=this.sliceDice;break;default:delete e.layoutAlgorithm}y.hasValue(e.navigationBar)&&!y.hasValue(e.navigationBar.type)&&(e.navigationBar.type="NavigationBar"),t.prototype.processConfig.call(this,e)}},e.prototype.validateLayout=function(){t.prototype.validateLayout.call(this),this.layoutItems(this.currentlyZoomed)},e.prototype.validateDataItems=function(){t.prototype.validateDataItems.call(this),this.layoutItems(this._homeDataItem),g.each(this.series.iterator(),function(t){t.validateRawData()}),this.zoomToChartDataItem(this._homeDataItem)},e.prototype.binaryTree=function(t){var e,i,a=t.children,n=a.length,r=new Array(n+1);for(r[0]=i=e=0;e<n;++e)r[e+1]=i+=a.getIndex(e).value;!function t(e,i,n,s,o,l,h){if(e>=i-1){var u=a.getIndex(e);return u.x0=s,u.y0=o,u.x1=l,void(u.y1=h)}var c=r[e],d=n/2+c,p=e+1,y=i-1;for(;p<y;){var g=p+y>>>1;r[g]<d?p=g+1:y=g}d-r[p-1]<r[p]-d&&e+1<p&&--p;var m=r[p]-c,f=n-m;if(l-s>h-o){var x=(s*f+l*m)/n;t(e,p,m,s,o,x,h),t(p,i,f,x,o,l,h)}else{var v=(o*f+h*m)/n;t(e,p,m,s,o,l,v),t(p,i,f,s,v,l,h)}}(0,n,t.value,t.x0,t.y0,t.x1,t.y1)},e.prototype.slice=function(t){for(var e,i=t.x0,a=t.x1,n=t.y0,r=t.y1,s=t.children,o=-1,l=s.length,h=t.value&&(r-n)/t.value;++o<l;)(e=s.getIndex(o)).x0=i,e.x1=a,e.y0=n,n+=e.value*h,e.y1=n},e.prototype.dice=function(t){for(var e,i=t.x0,a=t.x1,n=t.y0,r=t.y1,s=t.children,o=-1,l=s.length,h=t.value&&(a-i)/t.value;++o<l;)(e=s.getIndex(o)).y0=n,e.y1=r,e.x0=i,i+=e.value*h,e.x1=i},e.prototype.sliceDice=function(t){1&t.level?this.slice(t):this.dice(t)},e.prototype.squarify=function(t){for(var e,i,a,n,r,s,o,l,h,u,c=(1+Math.sqrt(5))/2,d=t.x0,p=t.x1,y=t.y0,g=t.y1,m=t.children,f=0,x=0,v=m.length,b=t.value;f<v;){i=p-d,a=g-y;do{n=m.getIndex(x++).value}while(!n&&x<v);for(r=s=n,u=n*n*(h=Math.max(a/i,i/a)/(b*c)),l=Math.max(s/u,u/r);x<v;++x){if(n+=e=m.getIndex(x).value,e<r&&(r=e),e>s&&(s=e),u=n*n*h,(o=Math.max(s/u,u/r))>l){n-=e;break}l=o}var P=this.dataItems.template.clone();P.value=n,P.dice=i<a,P.children=m.slice(f,x),P.x0=d,P.y0=y,P.x1=p,P.y1=g,P.dice?(P.y1=b?y+=a*n/b:g,this.dice(P)):(P.x1=b?d+=i*n/b:p,this.slice(P)),b-=n,f=x}},e.prototype.handleDataItemValueChange=function(t,e){"value"==e&&this.invalidateDataItems()},e.prototype.handleDataItemWorkingValueChange=function(t,e){"value"==e&&this.invalidateDataItems()},e.prototype.getLegendLevel=function(t){if(t&&t.children)return t.children.length>1?t:1==t.children.length?this.getLegendLevel(t.children.getIndex(0)):t},e.prototype.feedLegend=function(){var t=this.legend;if(t){t.dataFields.name="name";var e=this.getLegendLevel(this._homeDataItem);if(e){var i=[];e.children.each(function(t){i.push(t)}),t.data=i}}},e.prototype.disposeData=function(){t.prototype.disposeData.call(this),this._homeDataItem=void 0,this.series.clear(),this.navigationBar&&this.navigationBar.disposeData(),this.xAxis.disposeData(),this.yAxis.disposeData()},e.prototype.getExporting=function(){var e=this,i=t.prototype.getExporting.call(this);return i.adapter.add("formatDataFields",function(t){return"csv"!=t.format&&"xlsx"!=t.format||y.hasValue(e.dataFields.children)&&delete t.dataFields[e.dataFields.children],t}),i},e}(q);c.b.registeredClasses.TreeMap=de;var pe=function(t){function e(){var e=t.call(this)||this;return e._chart=new F.d,e.className="AxisRendererX3D",e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=this.chart.dx3D||0,r=this.chart.dy3D||0,s=this.getHeight();t.path=w.moveTo({x:n,y:r})+w.lineTo({x:n,y:s+r})+w.lineTo({x:0,y:s})}this.positionItem(t,a),this.toggleVisibility(t,e,0,1)},e.prototype.updateBaseGridElement=function(){t.prototype.updateBaseGridElement.call(this);var e=this.getHeight(),i=this.chart.dx3D||0,a=this.chart.dy3D||0;this.baseGrid.path=w.moveTo({x:i,y:a})+w.lineTo({x:0,y:0})+w.lineTo({x:0,y:e})},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){t&&this._chart.set(t,t.events.on("propertychanged",this.handle3DChanged,this,!1))},enumerable:!0,configurable:!0}),e.prototype.handle3DChanged=function(t){"depth"!=t.property&&"angle"!=t.property||this.invalidate()},e}(b.a);c.b.registeredClasses.AxisRendererX3D=pe;var ye=function(t){function e(){var e=t.call(this)||this;return e._chart=new F.d,e.className="AxisRendererY3D",e._disposers.push(e._chart),e.applyTheme(),e}return n.c(e,t),e.prototype.updateGridElement=function(t,e,i){e+=(i-e)*t.location;var a=this.positionToPoint(e);if(t.element){var n=this.chart.dx3D||0,r=this.chart.dy3D||0,s=this.getWidth();t.path=w.moveTo({x:0,y:0})+w.lineTo({x:n,y:r})+w.lineTo({x:s+n,y:r})}this.positionItem(t,a),this.toggleVisibility(t,e,0,1)},e.prototype.updateBaseGridElement=function(){t.prototype.updateBaseGridElement.call(this);var e=this.chart.dx3D||0,i=this.chart.dy3D||0,a=this.getWidth();this.baseGrid.path=w.moveTo({x:0,y:0})+w.lineTo({x:a,y:0})+w.lineTo({x:a+e,y:i})},Object.defineProperty(e.prototype,"chart",{get:function(){return this._chart.get()},set:function(t){t&&this._chart.set(t,t.events.on("propertychanged",this.handle3DChanged,this,!1))},enumerable:!0,configurable:!0}),e.prototype.handle3DChanged=function(t){"depth"!=t.property&&"angle"!=t.property||this.invalidate()},e}(P.a),ge=i("Mr4Y"),me=function(t){function e(){var e=t.call(this)||this;return e.className="Column3D",e}return n.c(e,t),e.prototype.createAssets=function(){this.column3D=this.createChild(ge.a),this.column3D.shouldClone=!1,this.column3D.strokeOpacity=0,this.column=this.column3D},e.prototype.validate=function(){t.prototype.validate.call(this),this.column3D&&(this.column3D.width=this.pixelWidth,this.column3D.height=this.pixelHeight,this.column3D.invalid&&this.column3D.validate())},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.column3D&&this.column3D.copyFrom(e.column3D)},e.prototype.setFill=function(e){t.prototype.setFill.call(this,e),this.column.fill=e},e}(se);c.b.registeredClasses.Column3D=me;var fe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeries3DDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),xe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeries3D",e.columns.template.column3D.applyOnClones=!0,e.columns.template.hiddenState.properties.visible=!0,e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"columnsContainer",{get:function(){return this.chart&&this.chart.columnsContainer?this.chart.columnsContainer:this._columnsContainer},enumerable:!0,configurable:!0}),e.prototype.validateDataElementReal=function(e){t.prototype.validateDataElementReal.call(this,e),e.column&&(e.column.dx=this.dx,e.column.dy=this.dy)},e.prototype.validateDataElements=function(){t.prototype.validateDataElements.call(this),this.chart&&this.chart.invalidateLayout()},e.prototype.createColumnTemplate=function(){return new me},Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t,!0),this.columns.template.column3D.depth=t},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t),this.columns.template.column3D.angle=t},enumerable:!0,configurable:!0}),e}(le);c.b.registeredClasses.ColumnSeries3D=xe,c.b.registeredClasses.ColumnSeries3DDataItem=fe;var ve=function(t){function e(){var e=t.call(this)||this;return e.className="XYChart3DDataItem",e.applyTheme(),e}return n.c(e,t),e}(G),be=function(t){function e(){var e=t.call(this)||this;e._axisRendererX=pe,e._axisRendererY=ye,e.className="XYChart3D",e.depth=30,e.angle=30;var i=e.seriesContainer.createChild(s.a);return i.shouldClone=!1,i.isMeasured=!1,i.layout="none",e.columnsContainer=i,e.columnsContainer.mask=e.createChild(S.a),e.applyTheme(),e}return n.c(e,t),e.prototype.updateSeriesMasks=function(){if(t.prototype.updateSeriesMasks.call(this),k.isIE()){var e=this.columnsContainer,i=e.mask;e.mask=void 0,e.mask=i}},Object.defineProperty(e.prototype,"depth",{get:function(){return this.getPropertyValue("depth")},set:function(t){this.setPropertyValue("depth",t),this.fixLayout(),this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"angle",{get:function(){return this.getPropertyValue("angle")},set:function(t){this.setPropertyValue("angle",t),this.fixLayout(),this.invalidateDataUsers()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dx3D",{get:function(){return m.cos(this.angle)*this.depth},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"dy3D",{get:function(){return-m.sin(this.angle)*this.depth},enumerable:!0,configurable:!0}),e.prototype.validateLayout=function(){t.prototype.validateLayout.call(this),this.fixColumns()},e.prototype.fixLayout=function(){this.chartContainer.marginTop=-this.dy3D,this.chartContainer.paddingRight=this.dx3D,this.scrollbarX&&(this.scrollbarX.dy=this.dy3D,this.scrollbarX.dx=this.dx3D),this.scrollbarY&&(this.scrollbarY.dy=this.dy3D,this.scrollbarY.dx=this.dx3D),this.fixColumns(),t.prototype.fixLayout.call(this)},e.prototype.fixColumns=function(){var t=this,e=1,i=0;g.each(this.series.iterator(),function(t){t instanceof xe&&(!t.clustered&&i>0&&e++,t.depthIndex=e-1,i++)});var a=0;g.each(this.series.iterator(),function(i){if(i instanceof xe){i.depth=t.depth/e,i.angle=t.angle,i.dx=t.depth/e*m.cos(t.angle)*i.depthIndex,i.dy=-t.depth/e*m.sin(t.angle)*i.depthIndex;var n=!1;(i.baseAxis==i.xAxis&&i.xAxis.renderer.inversed||i.baseAxis==i.yAxis&&i.yAxis.renderer.inversed)&&(n=!0);var r=1;i.columns.each(function(t){t.zIndex=n?1e3*(1e3-r)+a-100*i.depthIndex:1e3*r+a-100*i.depthIndex,r++}),n?a--:a++}}),this.maskColumns()},e.prototype.processConfig=function(e){if(e&&y.hasValue(e.series)&&y.isArray(e.series))for(var i=0,a=e.series.length;i<a;i++)e.series[i].type=e.series[i].type||"ColumnSeries3D";t.prototype.processConfig.call(this,e)},e.prototype.maskColumns=function(){var t=this.plotContainer.pixelWidth,e=this.plotContainer.pixelHeight,i=this.dx3D,a=this.dy3D,n=w.moveTo({x:0,y:0})+w.lineTo({x:i,y:a})+w.lineTo({x:t+i,y:a})+w.lineTo({x:t+i,y:e+a})+w.lineTo({x:t,y:e})+w.lineTo({x:t,y:e})+w.lineTo({x:0,y:e})+w.closePath(),r=this.columnsContainer;r&&r.mask&&(r.mask.path=n)},e}(q);c.b.registeredClasses.XYChart3D=be;var Pe=i("2OXf"),Ae=function(t){function e(){var e=t.call(this)||this;return e.className="Candlestick",e.layout="none",e}return n.c(e,t),e.prototype.createAssets=function(){t.prototype.createAssets.call(this),this.lowLine=this.createChild(Q.a),this.lowLine.shouldClone=!1,this.highLine=this.createChild(Q.a),this.highLine.shouldClone=!1},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.lowLine&&this.lowLine.copyFrom(e.lowLine),this.highLine&&this.highLine.copyFrom(e.highLine)},e}(se);c.b.registeredClasses.Candlestick=Ae;var Ce=function(t){function e(){var e=t.call(this)||this;return e.values.lowValueX={},e.values.lowValueY={},e.values.highValueX={},e.values.highValueY={},e.className="CandlestickSeriesDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"lowValueX",{get:function(){return this.values.lowValueX.value},set:function(t){this.setValue("lowValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"lowValueY",{get:function(){return this.values.lowValueY.value},set:function(t){this.setValue("lowValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"highValueX",{get:function(){return this.values.highValueX.value},set:function(t){this.setValue("highValueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"highValueY",{get:function(){return this.values.highValueY.value},set:function(t){this.setValue("highValueY",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"closeValueX",{get:function(){return this.values.valueX.value},set:function(t){this.setValue("valueX",t)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"closeValueY",{get:function(){return this.values.valueY.value},set:function(t){this.setValue("valueY",t)},enumerable:!0,configurable:!0}),e}(oe),Ie=function(t){function e(){var e=t.call(this)||this;e.className="CandlestickSeries",e.strokeOpacity=1;var i=new W.a,a=i.getFor("positive"),n=i.getFor("negative");return e.dropFromOpenState.properties.fill=n,e.dropFromOpenState.properties.stroke=n,e.riseFromOpenState.properties.fill=a,e.riseFromOpenState.properties.stroke=a,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Candlestick Series"))},e.prototype.createDataItem=function(){return new Ce},e.prototype.validateDataElementReal=function(e){t.prototype.validateDataElementReal.call(this,e),this.validateCandlestick(e)},e.prototype.validateCandlestick=function(t){var e=t.column;if(e){var i=e.lowLine,a=e.highLine;if(this.baseAxis==this.xAxis){var n=e.pixelWidth/2;i.x=n,a.x=n;var r=t.getWorkingValue(this.yOpenField),s=t.getWorkingValue(this.yField),o=this.yAxis.getY(t,this.yOpenField),l=this.yAxis.getY(t,this.yField),h=this.yAxis.getY(t,this.yLowField),u=this.yAxis.getY(t,this.yHighField),c=e.pixelY;i.y1=h-c,a.y1=u-c,r<s?(i.y2=o-c,a.y2=l-c):(i.y2=l-c,a.y2=o-c)}if(this.baseAxis==this.yAxis){var d=e.pixelHeight/2;i.y=d,a.y=d;var p=t.getWorkingValue(this.xOpenField),y=t.getWorkingValue(this.xField),m=this.xAxis.getX(t,this.xOpenField),f=this.xAxis.getX(t,this.xField),x=this.xAxis.getX(t,this.xLowField),v=this.xAxis.getX(t,this.xHighField),b=e.pixelX;i.x1=x-b,a.x1=v-b,p<y?(i.x2=m-b,a.x2=f-b):(i.x2=f-b,a.x2=m-b)}g.each(this.axisRanges.iterator(),function(e){var n=t.rangesColumns.getKey(e.uid);if(n){var r=n.lowLine;r.x=i.x,r.y=i.y,r.x1=i.x1,r.x2=i.x2,r.y1=i.y1,r.y2=i.y2;var s=n.highLine;s.x=a.x,s.y=a.y,s.x1=a.x1,s.x2=a.x2,s.y1=a.y1,s.y2=a.y2}})}},Object.defineProperty(e.prototype,"xLowField",{get:function(){return this._xLowField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yLowField",{get:function(){return this._yLowField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"xHighField",{get:function(){return this._xHighField},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"yHighField",{get:function(){return this._yHighField},enumerable:!0,configurable:!0}),e.prototype.defineFields=function(){if(t.prototype.defineFields.call(this),this.baseAxis==this.xAxis){var e=k.capitalize(this.yAxis.axisFieldName);this._yLowField="low"+e+"Y",this._yHighField="high"+e+"Y"}if(this.baseAxis==this.yAxis){var i=k.capitalize(this.xAxis.axisFieldName);this._xLowField="low"+i+"X",this._xHighField="high"+i+"X"}this.addValueField(this.xAxis,this._xValueFields,this._xLowField),this.addValueField(this.xAxis,this._xValueFields,this._xHighField),this.addValueField(this.yAxis,this._yValueFields,this._yLowField),this.addValueField(this.yAxis,this._yValueFields,this._yHighField)},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a,n,r=t.createChild(Ae);r.shouldClone=!1,r.copyFrom(this.columns.template);var s=r.lowLine,o=r.highLine;this.baseAxis==this.yAxis?(a=e/3,n=i,s.y=i/2,o.y=i/2,s.x2=e/3,o.x2=e/3,o.x=e/3*2,r.column.x=e/3):(a=e,n=i/3,s.x=e/2,o.x=e/2,s.y2=i/3,o.y2=i/3,o.y=i/3*2,r.column.y=i/3),r.width=a,r.height=n,f.copyProperties(this,t,S.b),f.copyProperties(this.columns.template,r,S.b),r.stroke=this.riseFromOpenState.properties.stroke,r.fill=r.stroke;var l=t.dataItem;l.color=r.fill,l.colorOrig=r.fill},e.prototype.createColumnTemplate=function(){return new Ae},e}(le);c.b.registeredClasses.CandlestickSeries=Ie,c.b.registeredClasses.CandlestickSeriesDataItem=Ce;var De=function(t){function e(){var e=t.call(this)||this;return e.className="OHLC",e.layout="none",e}return n.c(e,t),e.prototype.createAssets=function(){this.openLine=this.createChild(Q.a),this.openLine.shouldClone=!1,this.highLowLine=this.createChild(Q.a),this.highLowLine.shouldClone=!1,this.closeLine=this.createChild(Q.a),this.closeLine.shouldClone=!1},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.openLine&&this.openLine.copyFrom(e.openLine),this.highLowLine&&this.highLowLine.copyFrom(e.highLowLine),this.closeLine&&this.closeLine.copyFrom(e.closeLine)},e}(Ae);c.b.registeredClasses.OHLC=De;var _e=function(t){function e(){var e=t.call(this)||this;return e.className="OHLCSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(Ce),Te=function(t){function e(){var e=t.call(this)||this;return e.className="OHLCSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("OHLC Series"))},e.prototype.createDataItem=function(){return new _e},e.prototype.validateCandlestick=function(t){var e=t.column;if(e){var i=e.openLine,a=e.highLowLine,n=e.closeLine;if(this.baseAxis==this.xAxis){var r=e.pixelWidth/2;a.x=r,t.getWorkingValue(this.yOpenField),t.getWorkingValue(this.yField);var s=this.yAxis.getY(t,this.yOpenField),o=this.yAxis.getY(t,this.yField),l=this.yAxis.getY(t,this.yLowField),h=this.yAxis.getY(t,this.yHighField),u=e.pixelY;i.y1=s-u,i.y2=s-u,i.x1=0,i.x2=r,n.y1=o-u,n.y2=o-u,n.x1=r,n.x2=2*r,a.y1=h-u,a.y2=l-u}if(this.baseAxis==this.yAxis){var c=e.pixelHeight/2;a.y=c,t.getWorkingValue(this.xOpenField),t.getWorkingValue(this.xField);var d=this.xAxis.getX(t,this.xOpenField),p=this.xAxis.getX(t,this.xField),y=this.xAxis.getX(t,this.xLowField),m=this.xAxis.getX(t,this.xHighField),f=e.pixelX;i.x1=d-f,i.x2=d-f,i.y1=c,i.y2=2*c,n.x1=p-f,n.x2=p-f,n.y1=0,n.y2=c,a.x1=m-f,a.x2=y-f}g.each(this.axisRanges.iterator(),function(e){var r=t.rangesColumns.getKey(e.uid);if(r){var s=r.openLine;s.x=i.x,s.y=i.y,s.x1=i.x1,s.x2=i.x2,s.y1=i.y1,s.y2=i.y2;var o=r.closeLine;o.x=n.x,o.y=n.y,o.x1=n.x1,o.x2=n.x2,o.y1=n.y1,o.y2=n.y2;var l=r.highLowLine;l.x=a.x,l.y=a.y,l.x1=a.x1,l.x2=a.x2,l.y1=a.y1,l.y2=a.y2}})}},e.prototype.createLegendMarker=function(t){var e=t.pixelWidth,i=t.pixelHeight;t.removeChildren();var a,n,r=t.createChild(De);r.shouldClone=!1,r.copyFrom(this.columns.template);var s=r.openLine,o=r.closeLine,l=r.highLowLine;this.baseAxis==this.yAxis?(a=e/3,n=i,l.y=i/2,l.x2=e,s.x=e/3*2,s.y2=i/2,o.x=e/3,o.y2=i,o.y1=i/2):(a=e,n=i/3,l.x=e/2,l.y2=i,s.y=i/3*2,s.x2=e/2,o.y=i/3,o.x2=e,o.x1=e/2),r.width=a,r.height=n,f.copyProperties(this,t,S.b),f.copyProperties(this.columns.template,r,S.b),r.stroke=this.riseFromOpenState.properties.stroke;var h=t.dataItem;h.color=r.stroke,h.colorOrig=r.stroke},e.prototype.createColumnTemplate=function(){return new De},e}(Ie);c.b.registeredClasses.OHLCSeries=Te,c.b.registeredClasses.OHLCSeriesDataItem=_e;var Ve=function(t){function e(){var e=t.call(this)||this;return e.className="StepLineSeriesSegment",e}return n.c(e,t),e.prototype.drawSegment=function(t,e,i,a,n,r){if(t.length>0&&e.length>0)if(n){var s=w.moveTo(t[0]);if(t.length>0)for(var o=1;o<t.length;o++){var l=t[o];o/2==Math.round(o/2)?s+=w.moveTo(l):s+=w.lineTo(l)}this.strokeSprite.path=s,(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(s=w.moveTo(t[0])+w.polyline(t),s+=w.lineTo(e[0])+w.polyline(e),s+=w.lineTo(t[0]),s+=w.closePath(),this.fillSprite.path=s)}else{s=w.moveTo(t[0])+w.polyline(t);this.strokeSprite.path=s,(this.fillOpacity>0||this.fillSprite.fillOpacity>0)&&(s+=w.lineTo(e[0])+w.polyline(e),s+=w.lineTo(t[0]),s+=w.closePath(),this.fillSprite.path=s)}},e}(J);c.b.registeredClasses.StepLineSeriesSegment=Ve;var Se=function(t){function e(){var e=t.call(this)||this;return e.className="StepLineSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(it),Fe=function(t){function e(){var e=t.call(this)||this;return e.className="StepLineSeries",e.applyTheme(),e.startLocation=0,e.endLocation=1,e}return n.c(e,t),e.prototype.createDataItem=function(){return new Se},e.prototype.addPoints=function(t,e,i,a,n){var r=this.startLocation,s=this.endLocation,o=this.xAxis.getX(e,i,r),l=this.yAxis.getY(e,a,r),h=this.xAxis.getX(e,i,s),u=this.yAxis.getY(e,a,s);if(o=m.fitToRange(o,-1e5,1e5),l=m.fitToRange(l,-1e5,1e5),h=m.fitToRange(h,-1e5,1e5),u=m.fitToRange(u,-1e5,1e5),!this.noRisers&&this.connect&&t.length>1){var c=t[t.length-1];this.baseAxis==this.xAxis&&(n?t.push({x:c.x,y:u}):t.push({x:o,y:c.y})),this.baseAxis==this.yAxis&&(n?t.push({x:h,y:c.y}):t.push({x:c.x,y:l}))}var d={x:o,y:l},p={x:h,y:u};n?t.push(p,d):t.push(d,p)},e.prototype.drawSegment=function(t,e,i){var a=!1;this.yAxis==this.baseAxis&&(a=!0),t.drawSegment(e,i,this.tensionX,this.tensionY,this.noRisers,a)},e.prototype.createSegment=function(){return new Ve},Object.defineProperty(e.prototype,"noRisers",{get:function(){return this.getPropertyValue("noRisers")},set:function(t){this.setPropertyValue("noRisers",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"startLocation",{get:function(){return this.getPropertyValue("startLocation")},set:function(t){this.setPropertyValue("startLocation",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endLocation",{get:function(){return this.getPropertyValue("endLocation")},set:function(t){this.setPropertyValue("endLocation",t,!0)},enumerable:!0,configurable:!0}),e}(at);c.b.registeredClasses.StepLineSeries=Fe,c.b.registeredClasses.StepLineSeriesDataItem=Se;var ke=function(t){function e(){var e=t.call(this)||this;return e.className="RadarColumn",e}return n.c(e,t),e.prototype.createAssets=function(){this.radarColumn=this.createChild(te.a),this.radarColumn.shouldClone=!1,this.radarColumn.strokeOpacity=void 0,this.column=this.radarColumn},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.radarColumn&&this.radarColumn.copyFrom(e.radarColumn)},e.prototype.getTooltipX=function(){var t=this.getPropertyValue("tooltipX");return y.isNumber(t)||(t=this.radarColumn.tooltipX),t},e.prototype.getTooltipY=function(){var t=this.getPropertyValue("tooltipX");return y.isNumber(t)||(t=this.radarColumn.tooltipY),t},e}(se);c.b.registeredClasses.RadarColumn=ke;var Oe=function(t){function e(){var e=t.call(this)||this;return e.className="ColumnSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),we=function(t){function e(){var e=t.call(this)||this;return e.className="RadarColumnSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.createColumnTemplate=function(){return new ke},e.prototype.validate=function(){this.chart.invalid&&this.chart.validate(),t.prototype.validate.call(this)},e.prototype.validateDataElementReal=function(t){var e,i,a,n,r=this,s=this.chart.startAngle,o=this.chart.endAngle,l=this.yField,h=this.yOpenField,u=this.xField,c=this.xOpenField,d=this.getStartLocation(t),p=this.getEndLocation(t),x=(o-s)/(this.dataItems.length*(this.end-this.start)),v=this.columns.template.percentWidth;y.isNaN(v)&&(v=100);var b=m.round((p-d)*(1-v/100)/2,5);if(d+=b,p-=b,this.baseAxis==this.xAxis?(a=m.getDistance({x:this.yAxis.getX(t,l,t.locations[l],"valueY"),y:this.yAxis.getY(t,l,t.locations[l],"valueY")}),n=m.getDistance({x:this.yAxis.getX(t,h,t.locations[h],"valueY"),y:this.yAxis.getY(t,h,t.locations[h],"valueY")}),e=this.xAxis.getAngle(t,c,d,"valueX"),i=this.xAxis.getAngle(t,u,p,"valueX"),s+=d*x,o-=(1-p)*x):(a=m.getDistance({x:this.yAxis.getX(t,l,d,"valueY"),y:this.yAxis.getY(t,l,d,"valueY")}),n=m.getDistance({x:this.yAxis.getX(t,h,p,"valueY"),y:this.yAxis.getY(t,h,p,"valueY")}),e=this.xAxis.getAngle(t,u,t.locations[u],"valueX"),i=this.xAxis.getAngle(t,c,t.locations[c],"valueX")),i<e){var P=i;i=e,e=P}e=m.fitToRange(e,s,o),i=m.fitToRange(i,s,o);var A=t.column;A||(A=this.columns.create(),t.column=A,f.forceCopyProperties(this.columns.template,A,S.b),t.addSprite(A),A.paper=this.paper,this.setColumnStates(A));var C=A.radarColumn;C.startAngle=e;var I=i-e;I>0?(C.arc=I,C.radius=a,C.innerRadius=n,A.__disabled=!1,A.parent=this.columnsContainer,g.each(this.axisRanges.iterator(),function(i){var s=t.rangesColumns.getKey(i.uid);s||(s=r.columns.create(),f.forceCopyProperties(r.columns.template,s,S.b),f.copyProperties(i.contents,s,S.b),s.dataItem&&O.remove(s.dataItem.sprites,s),t.addSprite(s),s.paper=r.paper,r.setColumnStates(s),t.rangesColumns.setKey(i.uid,s));var o=s.radarColumn;o.startAngle=e,o.arc=I,o.radius=a,o.innerRadius=n,o.invalid&&(o.paper=r.paper,o.validate()),s.__disabled=!1,s.parent=i.contents})):this.disableUnusedColumns(t)},e.prototype.getPoint=function(t,e,i,a,n,r,s){r||(r="valueX"),s||(s="valueY");var o=this.yAxis.getX(t,i,n,s),l=this.yAxis.getY(t,i,n,s),h=m.getDistance({x:o,y:l});0==h&&(h=1e-5);var u=this.xAxis.getAngle(t,e,a,r);return{x:h*m.cos(u),y:h*m.sin(u)}},e.prototype.getMaskPath=function(){var t=this.yAxis.renderer;return w.arc(t.startAngle,t.endAngle-t.startAngle,t.pixelRadius,t.pixelInnerRadius)},e}(le);c.b.registeredClasses.RadarColumnSeries=we,c.b.registeredClasses.RadarColumnSeriesDataItem=Oe;var Re=i("AC2I"),Le=function(t){function e(){var e=t.call(this)||this;return e.slice=e.createChild(S.a),e.slice.shouldClone=!1,e.slice.setElement(e.paper.add("path")),e.slice.isMeasured=!1,e.orientation="vertical",e.bottomWidth=Object(Y.c)(100),e.topWidth=Object(Y.c)(100),e.isMeasured=!1,e.width=10,e.height=10,e.expandDistance=0,e.className="FunnelSlice",e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.pixelPaddingTop,i=this.pixelPaddingBottom,a=this.pixelPaddingRight,n=this.pixelPaddingLeft,r=this.pixelWidth-a-n,s=this.pixelHeight-e-i,o=this.expandDistance,l="";if("vertical"==this.orientation){var h={x:(r-(f=k.relativeToValue(this.topWidth,r)))/2+n,y:e},u={x:(r+f)/2+n,y:e},c={x:(r+(x=k.relativeToValue(this.bottomWidth,r)))/2+n,y:e+s},d={x:(r-x)/2+n,y:e+s},p={x:u.x+(c.x-u.x)/2+o*s,y:u.y+.5*s},y={x:h.x+(d.x-h.x)/2-o*s,y:h.y+.5*s},g=w.lineTo(c),m="";0!=o&&(g=w.quadraticCurveTo(c,p),m=w.quadraticCurveTo(h,y)),l=w.moveTo(h)+w.lineTo(u)+g+w.lineTo(d)+m,this.tickPoint={x:u.x+(c.x-u.x)/2,y:u.y+(c.y-u.y)/2}}else{var f,x,v={x:n,y:(s-(f=k.relativeToValue(this.topWidth,s)))/2+e},b={x:n,y:(s+f)/2+e},P={x:n+r,y:(s-(x=k.relativeToValue(this.bottomWidth,s)))/2+e},A={x:n+r,y:(s+x)/2+e};p={y:v.y+(P.y-v.y)/2-o*r,x:v.x+.5*r},y={y:b.y+(A.y-b.y)/2+o*r,x:b.x+.5*r},g=w.lineTo(P),m="";0!=o&&(g=w.quadraticCurveTo(P,p),m=w.quadraticCurveTo(b,y)),l=w.moveTo(b)+w.lineTo(v)+g+w.lineTo(A)+m,this.tickPoint={y:b.y+(A.y-b.y)/2,x:b.x+(A.x-b.x)/2}}this.slice.path=l,this.invalidateLayout()},e.prototype.getPoint=function(t,e){var i=this.pixelPaddingTop,a=this.pixelPaddingBottom,n=this.pixelPaddingRight,r=this.pixelPaddingLeft,s=this.pixelWidth-n-r,o=this.pixelHeight-i-a;if("vertical"==this.orientation){var l={x:(s-(d=k.relativeToValue(this.topWidth,s)))/2+r,y:i},h={x:(s+d)/2+r,y:i},u={x:(s+(p=k.relativeToValue(this.bottomWidth,s)))/2+r,y:i+o},c=l.x+({x:(s-p)/2+r,y:i+o}.x-l.x)*e;return{x:c+(h.x+(u.x-h.x)*e-c)*t,y:h.y+(u.y-h.y)*e}}var d,p,y={x:r,y:(o-(d=k.relativeToValue(this.topWidth,o)))/2+i},g={x:r,y:(o+d)/2+i},m={x:r+s,y:(o-(p=k.relativeToValue(this.bottomWidth,o)))/2+i},f=y.y+(m.y-y.y)*t;return{y:f+(g.y+({x:r+s,y:(o+p)/2+i}.y-g.y)*t-f)*e,x:y.x+(m.x-y.x)*t}},Object.defineProperty(e.prototype,"bottomWidth",{get:function(){return this.getPropertyValue("bottomWidth")},set:function(t){this.setPercentProperty("bottomWidth",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"topWidth",{get:function(){return this.getPropertyValue("topWidth")},set:function(t){this.setPercentProperty("topWidth",t,!0,!1,10,!1)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"expandDistance",{get:function(){return this.getPropertyValue("expandDistance")},set:function(t){this.setPropertyValue("expandDistance",t,!0)},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.slice&&this.slice.copyFrom(e.slice)},e}(s.a);c.b.registeredClasses.FunnelSlice=Le;var Xe=i("qzbU"),Ye=function(t){function e(){var e=t.call(this)||this;return e._label=new F.d,e._slice=new F.d,e.className="FunnelTick",e.element=e.paper.add("path"),e._disposers.push(e._label),e._disposers.push(e._slice),e.setPropertyValue("locationX",0),e.setPropertyValue("locationY",0),e.applyTheme(),e}return n.c(e,t),e.prototype.draw=function(){t.prototype.draw.call(this);var e=this.slice,i=e.getPoint(this.locationX,this.locationY);if(i){var a=this.label,n=e.dataItem.component;if("vertical"==n.orientation){var r=a.pixelX,s=a.pixelY;n.labelsOpposite||(r+=a.maxRight);var o=k.spritePointToSprite(i,e,this.parent),l=k.spritePointToSprite({x:r,y:s},a.parent,this.parent);this.path=w.moveTo(o)+w.lineTo(l)}else{r=a.pixelX,s=a.pixelY;n.labelsOpposite||(s+=a.maxBottom);o=k.spritePointToSprite(i,e,this.parent),l=k.spritePointToSprite({x:r,y:s},a.parent,this.parent);this.path=w.moveTo(o)+w.lineTo(l)}}},Object.defineProperty(e.prototype,"slice",{get:function(){return this._slice.get()},set:function(t){this._slice.set(t,new F.c([t.events.on("transformed",this.invalidate,this,!1),t.events.on("validated",this.invalidate,this,!1)]))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"label",{get:function(){return this._label.get()},set:function(t){this._label.set(t,t.events.on("transformed",this.invalidate,this,!1))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"locationX",{get:function(){return this.getPropertyValue("locationX")},set:function(t){this.setPropertyValue("locationX",t,!1,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"locationY",{get:function(){return this.getPropertyValue("locationY")},set:function(t){this.setPropertyValue("locationY",t,!1,!0)},enumerable:!0,configurable:!0}),e}(Xe.a);c.b.registeredClasses.FunnelTick=Ye;var Ne=function(t){function e(){var e=t.call(this)||this;return e.className="FunnelSeriesDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"sliceLink",{get:function(){var t=this;if(!this._sliceLink){var e=this.component.sliceLinks.create();this._sliceLink=e,this._disposers.push(e),e.parent=this.component.slicesContainer,this._disposers.push(new F.b(function(){t.component&&t.component.sliceLinks.removeValue(e)})),this.addSprite(e),e.visible=this.visible}return this._sliceLink},enumerable:!0,configurable:!0}),e}(Re.b),je=function(t){function e(){var e=t.call(this)||this;return e._nextY=0,e.className="FunnelSeries",e.orientation="vertical",e.width=Object(Y.c)(100),e.height=Object(Y.c)(100),e.slicesContainer.width=Object(Y.c)(100),e.slicesContainer.height=Object(Y.c)(100),e._disposers.push(e.slicesContainer.events.on("maxsizechanged",e.invalidateDataItems,e,!1)),e.labelsOpposite=!0,e.labelsContainer.layout="absolute",e.bottomRatio=0,e.applyTheme(),e}return n.c(e,t),e.prototype.createSlice=function(){return new Le},e.prototype.createTick=function(){return new Ye},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Funnel Series"))},e.prototype.createDataItem=function(){return new Ne},e.prototype.initSlice=function(t){t.isMeasured=!1,t.defaultState.properties.scale=1,t.observe("scale",this.handleSliceScale,this),t.observe(["dx","dy","x","y"],this.handleSliceMove,this),t.tooltipText="{category}: {value.percent.formatNumber('#.#')}% ({value.value})",t.states.create("hover").properties.expandDistance=.2},e.prototype.initLabel=function(e){t.prototype.initLabel.call(this,e),e.verticalCenter="middle",e.horizontalCenter="middle",e.isMeasured=!0,e.padding(5,5,5,5)},e.prototype.validate=function(){t.prototype.validate.call(this),this._nextY=0},e.prototype.validateDataElements=function(){var e=this.slicesContainer,i=this.labelsContainer,a=this.labels.template;this.alignLabels?(a.interactionsEnabled=!0,e.isMeasured=!0,i.isMeasured=!0):(a.interactionsEnabled=!1,e.isMeasured=!1,i.isMeasured=!1);var n=0,r=0;this.dataItems.each(function(t){y.hasValue(t.value)&&(r++,t.value>0?n+=t.getWorkingValue("value")/t.value:n+=1)}),this._total=1/r*n,this._count=r,t.prototype.validateDataElements.call(this),this.arrangeLabels()},e.prototype.getNextValue=function(t){var e=t.index,i=t.getWorkingValue("value");if(e<this.dataItems.length-1){var a=this.dataItems.getIndex(e+1);if(i=a.getWorkingValue("value"),!a.visible||a.isHiding)return this.getNextValue(a)}return i},e.prototype.formDataElement=function(){},e.prototype.validateDataElement=function(e){if(y.hasValue(e.value)){var i=e.slice;i.orientation=this.orientation;var a=e.sliceLink;a.orientation=this.orientation;var n=e.tick,r=e.label;n.slice=i,n.label=r,this.decorateSlice(e),a.fill=i.fill,e.index==this.dataItems.length-1&&(a.disabled=!0),t.prototype.validateDataElement.call(this,e)}},e.prototype.decorateSlice=function(t){var e=t.slice,i=t.sliceLink,a=t.label,n=t.tick,r=this.slicesContainer.innerWidth,s=this.slicesContainer.innerHeight,o=this.getNextValue(t),l=t.getWorkingValue("value"),h=this.bottomRatio,u=1;if(t.value>0&&(u=l/t.value),"vertical"==this.orientation){var c=i.pixelHeight*u;s+=c,e.topWidth=l/this.dataItem.values.value.high*r,e.bottomWidth=(l-(l-o)*h)/this.dataItem.values.value.high*r,i.topWidth=e.bottomWidth,i.bottomWidth=(l-(l-o))/this.dataItem.values.value.high*r,e.y=this._nextY,e.height=m.max(0,s/this._count*u/this._total-c),e.x=r/2,this.alignLabels?a.x=void 0:a.x=e.x,a.y=e.pixelY+e.pixelHeight*n.locationY,this._nextY+=e.pixelHeight+c,i.y=this._nextY-c,i.x=e.x}else{var d=i.pixelWidth*u;r+=d,e.topWidth=l/this.dataItem.values.value.high*s,e.bottomWidth=(l-(l-o)*h)/this.dataItem.values.value.high*s,i.topWidth=e.bottomWidth,i.bottomWidth=(l-(l-o))/this.dataItem.values.value.high*s,e.x=this._nextY,e.width=r/this._count*u*1/this._total-d,e.y=s/2,this.alignLabels?a.y=this.labelsContainer.measuredHeight:a.y=e.y,a.x=e.pixelX+e.pixelWidth*n.locationX,this._nextY+=e.pixelWidth+d,i.x=this._nextY-d,i.y=e.y}},e.prototype.arrangeLabels=function(){if(this.alignLabels){var t=this.labels.length;if(t>1){var e=this.labels.getIndex(t-1),i=e.pixelY,a=e.pixelX;if(t>1){for(var n=t-2;n>=0;n--){(r=this.labels.getIndex(n)).visible&&(r.invalid&&r.validate(),"vertical"==this.orientation?r.pixelY+r.measuredHeight>i&&(r.y=i-r.measuredHeight):r.pixelX+r.measuredWidth>a&&(r.x=a-r.measuredWidth),i=r.pixelY,a=r.pixelX)}i=0,a=0;for(n=0;n<t;n++){var r;(r=this.labels.getIndex(n)).visible&&(r.invalid&&r.validate(),"vertical"==this.orientation?r.pixelY<i&&(r.y=i):r.pixelX<a&&(r.x=a),i+=r.measuredHeight,a+=r.measuredWidth)}}}}},e.prototype.positionBullet=function(e){t.prototype.positionBullet.call(this,e);var i=e.dataItem.slice,a=e.locationX;y.isNumber(a)||(a=.5);var n=e.locationY;y.isNumber(n)||(n=1),e.x=i.pixelX+i.measuredWidth*a,e.y=i.pixelY+i.measuredHeight*n},Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t)&&(this.labelsOpposite=this.labelsOpposite,this.invalidate(),"vertical"==t?(this.ticks.template.locationX=1,this.ticks.template.locationY=.5,this.labels.template.rotation=0,this.layout="horizontal"):(this.ticks.template.locationX=.5,this.ticks.template.locationY=1,this.labels.template.rotation=-90,this.layout="vertical"))},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bottomRatio",{get:function(){return this.getPropertyValue("bottomRatio")},set:function(t){this.setPropertyValue("bottomRatio",t)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"sliceLinks",{get:function(){if(!this._sliceLinks){var t=new Le;t.applyOnClones=!0,t.fillOpacity=.5,t.expandDistance=-.3,t.hiddenState.properties.opacity=0,this._disposers.push(t),this._sliceLinks=new o.e(t),this._disposers.push(new o.c(this._sliceLinks))}return this._sliceLinks},enumerable:!0,configurable:!0}),e.prototype.show=function(e){var i=this,a=this.startIndex,n=this.endIndex,r=this.defaultState.transitionDuration;y.isNumber(e)&&(r=e);var s=0;return g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],o=t[1];i.sequencedInterpolation&&(s=i.sequencedInterpolationDelay*e+r*(e-a)/(n-a)),o.show(r,s,["value"])}),t.prototype.show.call(this,e)},e.prototype.hide=function(e){var i=this,a=["value"],n=this.startIndex,r=this.endIndex,s=0,o=this.hiddenState.transitionDuration;y.isNumber(e)&&(o=e),g.each(g.indexed(this.dataItems.iterator()),function(t){var e=t[0],l=t[1];i.sequencedInterpolation&&(s=i.sequencedInterpolationDelay*e+o*(e-n)/(r-n)),l.hide(o,s,0,a)});var l=t.prototype.hide.call(this,e);return l&&!l.isFinished()&&l.delay(s),l},e.prototype.setAlignLabels=function(e){t.prototype.setAlignLabels.call(this,e),this.ticks.template.disabled=!e;var i=this.labelsContainer;i&&(e?(i.height=void 0,i.width=void 0,i.margin(10,10,10,10)):(i.width=Object(Y.c)(100),i.height=Object(Y.c)(100))),this.labelsOpposite=this.labelsOpposite},Object.defineProperty(e.prototype,"labelsOpposite",{get:function(){return this.getPropertyValue("labelsOpposite")},set:function(t){this.setPropertyValue("labelsOpposite",t);var e=this.labels.template,i="none",a="none";this.alignLabels?t?(this.labelsContainer.toFront(),"vertical"==this.orientation?(this.ticks.template.locationX=1,e.horizontalCenter="left",i="right"):(this.ticks.template.locationY=1,e.horizontalCenter="right",a="bottom")):(this.labelsContainer.toBack(),"vertical"==this.orientation?(this.ticks.template.locationX=0,i="left"):(a="top",this.ticks.template.locationY=0)):"vertical"==this.orientation?i="center":a="middle",e.align=i,e.valign=a,this.validateLayout(),this.ticks.each(function(t){t.invalidate()}),this.invalidateDataItems()},enumerable:!0,configurable:!0}),e}(Re.a);c.b.registeredClasses.FunnelSeries=je,c.b.registeredClasses.FunnelSeriesDataItem=Ne;var Me=function(t){function e(){var e=t.call(this)||this;return e.className="PyramidSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(Ne),We=function(t){function e(){var e=t.call(this)||this;return e.className="PyramidSeries",e.topWidth=Object(Y.c)(0),e.bottomWidth=Object(Y.c)(100),e.pyramidHeight=Object(Y.c)(100),e.valueIs="area",e.sliceLinks.template.width=0,e.sliceLinks.template.height=0,e.applyTheme(),e}return n.c(e,t),e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Pyramid Series"))},e.prototype.createDataItem=function(){return new Me},e.prototype.validate=function(){t.prototype.validate.call(this),this._nextWidth=void 0},e.prototype.getNextValue=function(t){var e=t.index,i=t.getWorkingValue("value");e<this.dataItems.length-1&&(i=this.dataItems.getIndex(e+1).getWorkingValue("value"));return 0==i&&(i=1e-6),i},e.prototype.validateDataElements=function(){var e=this,i=this.slicesContainer.innerWidth,a=this.slicesContainer.innerHeight;if(this.dataItems.each(function(t){var n=t.getWorkingValue("value")/t.value,r=t.sliceLink;"vertical"==e.orientation?a-=r.pixelHeight*n:i-=r.pixelWidth*n}),this._pyramidHeight=k.relativeToValue(this.pyramidHeight,a),this._pyramidWidth=k.relativeToValue(this.pyramidHeight,i),"vertical"==this.orientation){var n=(a-this._pyramidHeight)/2;this.slicesContainer.y=n,this.labelsContainer.y=n,this.ticksContainer.y=n}else{var r=(i-this._pyramidWidth)/2;this.slicesContainer.x=r,this.labelsContainer.x=r,this.ticksContainer.x=r}t.prototype.validateDataElements.call(this)},e.prototype.decorateSlice=function(t){var e=this.dataItem.values.value.sum;if(0!=e){var i=t.slice,a=t.sliceLink,n=t.label,r=t.tick;this.getNextValue(t);var s=t.getWorkingValue("value");0==s&&(s=1e-6);var o=this._pyramidWidth,l=this._pyramidHeight,h=this.slicesContainer.innerWidth,u=this.slicesContainer.innerHeight,c=a.pixelWidth,d=a.pixelHeight;if("vertical"==this.orientation){var p=k.relativeToValue(this.topWidth,h);y.isNumber(this._nextWidth)||(this._nextWidth=p);var g=k.relativeToValue(this.bottomWidth,h),m=this._nextWidth,f=Math.atan2(l,p-g);0==(A=Math.tan(Math.PI/2-f))&&(A=1e-8);var x=void 0,v=void 0;if("area"==this.valueIs){var b=(p+g)/2*l*s/e,P=Math.abs(m*m-2*b*A);v=(2*b-(x=(m-Math.sqrt(P))/A)*m)/x}else{v=m-(x=l*s/this.dataItem.values.value.sum)*A}i.height=x,i.width=h,i.bottomWidth=v,i.topWidth=m,a.topWidth=i.bottomWidth,a.bottomWidth=i.bottomWidth,i.y=this._nextY,this.alignLabels?n.x=0:n.x=h/2,n.y=i.pixelY+i.pixelHeight*r.locationY+i.dy,this._nextY+=i.pixelHeight+d*s/t.value,a.y=this._nextY-d,a.x=h/2}else{p=k.relativeToValue(this.topWidth,u);y.isNumber(this._nextWidth)||(this._nextWidth=p);var A;g=k.relativeToValue(this.bottomWidth,u),m=this._nextWidth,f=Math.atan2(o,p-g);0==(A=Math.tan(Math.PI/2-f))&&(A=1e-8);var C=void 0;v=void 0;if("area"==this.valueIs)v=(2*(b=(p+g)/2*o*s/this.dataItem.values.value.sum)-(C=(m-Math.sqrt(m*m-2*b*A))/A)*m)/C;else v=m-(C=o*s/this.dataItem.values.value.sum)*A;i.width=C,i.height=u,i.bottomWidth=v,i.topWidth=m,a.topWidth=i.bottomWidth,a.bottomWidth=i.bottomWidth,i.x=this._nextY,this.alignLabels?n.y=this.labelsContainer.measuredHeight:n.y=u/2,n.x=i.pixelX+i.pixelWidth*r.locationX+i.dx,this._nextY+=i.pixelWidth+c*s/t.value,a.x=this._nextY-c,a.y=u/2}this._nextWidth=i.bottomWidth}},Object.defineProperty(e.prototype,"topWidth",{get:function(){return this.getPropertyValue("topWidth")},set:function(t){this.setPercentProperty("topWidth",t,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"pyramidHeight",{get:function(){return this.getPropertyValue("pyramidHeight")},set:function(t){this.setPercentProperty("pyramidHeight",t,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"bottomWidth",{get:function(){return this.getPropertyValue("bottomWidth")},set:function(t){this.setPercentProperty("bottomWidth",t,!1,!1,10,!1)&&this.invalidate()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"valueIs",{get:function(){return this.getPropertyValue("valueIs")},set:function(t){this.setPropertyValue("valueIs",t)&&this.invalidate()},enumerable:!0,configurable:!0}),e}(je);c.b.registeredClasses.PyramidSeries=We,c.b.registeredClasses.PyramidSeriesDataItem=Me;var Be=function(t){function e(){var e=t.call(this)||this;return e.className="PictorialStackedSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(Me),Ee=function(t){function e(){var e=t.call(this)||this;return e.className="PictorialStackedSeries",e.topWidth=Object(Y.c)(100),e.bottomWidth=Object(Y.c)(100),e.valueIs="height",e.applyTheme(),e.startLocation=0,e.endLocation=1,e._maskSprite=e.slicesContainer.createChild(S.a),e._maskSprite.visible=!1,e._maskSprite.zIndex=100,e._maskSprite.shouldClone=!1,e}return n.c(e,t),e.prototype.validateDataElements=function(){var e=this.slicesContainer.maxWidth,i=this.slicesContainer.maxHeight,a=this._maskSprite,n=a.measuredWidth/a.scale,r=a.measuredHeight/a.scale,s=m.min(i/r,e/n);s==1/0&&(s=1),s=m.max(.001,s);var o=this.startLocation,l=this.endLocation,h=m.min(e,n*s),u=m.min(i,r*s);if(a.scale=s,"vertical"==this.orientation?(this.topWidth=h+4,this.bottomWidth=h+4,this.pyramidHeight=u*(l-o),a.x=e/2,a.y=u/2):(this.topWidth=u+4,this.bottomWidth=u+4,this.pyramidHeight=h*(l-o),a.valign="middle",a.x=h/2,a.y=i/2),a.verticalCenter="middle",a.horizontalCenter="middle",t.prototype.validateDataElements.call(this),"vertical"==this.orientation){var c=(i-u)/2;this.slicesContainer.y=c,this.labelsContainer.y=c,this.ticksContainer.y=c,this.slices.template.dy=o*u}else{var d=(e-h)/2;this.slicesContainer.x=d,this.labelsContainer.x=d,this.ticksContainer.x=d,this.slices.template.dx=o*h}this.slicesContainer.mask=this._maskSprite},e.prototype.applyInternalDefaults=function(){t.prototype.applyInternalDefaults.call(this),y.hasValue(this.readerTitle)||(this.readerTitle=this.language.translate("Pyramid Series"))},e.prototype.createDataItem=function(){return new Be},Object.defineProperty(e.prototype,"maskSprite",{get:function(){return this._maskSprite},enumerable:!0,configurable:!0}),e.prototype.initSlice=function(e){t.prototype.initSlice.call(this,e);var i=e.states.getKey("hover");i&&(i.properties.expandDistance=0)},Object.defineProperty(e.prototype,"startLocation",{get:function(){return this.getPropertyValue("startLocation")},set:function(t){this.setPropertyValue("startLocation",t)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"endLocation",{get:function(){return this.getPropertyValue("endLocation")},set:function(t){this.setPropertyValue("endLocation",t)&&this.invalidateDataItems()},enumerable:!0,configurable:!0}),e}(We);c.b.registeredClasses.PictorialStackedSeries=Ee,c.b.registeredClasses.PictorialStackedSeriesDataItem=Be;var He=i("BmDP"),ze=i("ncT3"),Ue=function(t){function e(){var e=t.call(this)||this;return e.className="ConeColumn",e}return n.c(e,t),e.prototype.createAssets=function(){this.coneColumn=this.createChild(ze.a),this.coneColumn.shouldClone=!1,this.column=this.coneColumn},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.coneColumn&&this.coneColumn.copyFrom(e.coneColumn)},e}(se);c.b.registeredClasses.ConeColumn=Ue;var Ke=function(t){function e(){var e=t.call(this)||this;return e.className="ConeSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),Ge=function(t){function e(){var e=t.call(this)||this;return e.className="ConeSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.createColumnTemplate=function(){return new Ue},e.prototype.getMaskPath=function(){var t=0,e=0,i=this.columns.getIndex(0);if(i)return this.baseAxis==this.xAxis?e=i.coneColumn.bottom.radiusY+1:t=i.coneColumn.bottom.radiusY+1,w.rectToPath({x:-t,y:0,width:this.xAxis.axisLength+t,height:this.yAxis.axisLength+e})},e.prototype.validateDataElementReal=function(e){if(t.prototype.validateDataElementReal.call(this,e),e.column){var i=e.column.coneColumn;i.fill=e.column.fill,this.baseAxis==this.yAxis?i.orientation="horizontal":i.orientation="vertical"}},e}(le);c.b.registeredClasses.ConeSeries=Ge,c.b.registeredClasses.ConeSeriesDataItem=Ke;var qe=function(t){function e(){var e=t.call(this)||this;return e.className="CurvedColumn",e}return n.c(e,t),e.prototype.createAssets=function(){this.curvedColumn=this.createChild(S.a),this.curvedColumn.shouldClone=!1,this.setPropertyValue("tension",.7),this.width=Object(Y.c)(120),this.height=Object(Y.c)(120),this.column=this.curvedColumn},e.prototype.draw=function(){t.prototype.draw.call(this);var e,i=this.realWidth,a=this.realHeight,n=this.realX-this.pixelX,r=this.realY-this.pixelY;k.used(this.width);var s=1,o=1;"vertical"==this.orientation?(s=this.tension,e=[{x:0,y:a+r},{x:i/2,y:r},{x:i,y:a+r}]):(o=this.tension,e=[{x:n,y:0},{x:n+i,y:a/2},{x:n,y:a}]);var l=w.moveTo(e[0])+new Z.b(s,o).smooth(e);this.column.path=l},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.curvedColumn&&this.curvedColumn.copyFrom(e.curvedColumn)},Object.defineProperty(e.prototype,"tension",{get:function(){return this.getPropertyValue("tension")},set:function(t){this.setPropertyValue("tension",t,!0)},enumerable:!0,configurable:!0}),Object.defineProperty(e.prototype,"orientation",{get:function(){return this.getPropertyValue("orientation")},set:function(t){this.setPropertyValue("orientation",t,!0)},enumerable:!0,configurable:!0}),e}(se);c.b.registeredClasses.CurvedColumn=qe;var Ze=function(t){function e(){var e=t.call(this)||this;return e.className="CurvedColumnSeriesDataItem",e.applyTheme(),e}return n.c(e,t),e}(oe),Je=function(t){function e(){var e=t.call(this)||this;return e.className="CurvedColumnSeries",e.applyTheme(),e}return n.c(e,t),e.prototype.createColumnTemplate=function(){return new qe},e.prototype.validateDataElementReal=function(e){t.prototype.validateDataElementReal.call(this,e);var i=e.column;(i=e.column)&&(e.column.curvedColumn.fill=e.column.fill,this.baseAxis==this.yAxis?i.orientation="horizontal":i.orientation="vertical")},e}(le);c.b.registeredClasses.CurvedColumnSeries=Je,c.b.registeredClasses.CurvedColumnSeriesDataItem=Ze;var Qe=i("eN1s"),$e=i("TDx+"),ti=i("eAid"),ei=function(t){function e(){var e=t.call(this)||this;return e.className="DurationAxisDataItem",e.applyTheme(),e}return n.c(e,t),e}(l.b),ii=function(t){function e(){var e=t.call(this)||this;return e._baseUnit="second",e.className="DurationAxis",e.setPropertyValue("maxZoomFactor",1e6),e.applyTheme(),e}return n.c(e,t),e.prototype.formatLabel=function(t,e){return this.durationFormatter.format(t,e||this.axisDurationFormat)},e.prototype.adjustMinMax=function(e,i,a,r,s){var o,l,h,u=this.baseUnit;if(this.setPropertyValue("maxPrecision",0),"millisecond"==u||"second"==u||"minute"==u||"hour"==u){r<=1&&(r=1),r=Math.round(r);var c=e,d=i;0===a&&(a=Math.abs(i));var p,y=[60,30,20,15,10,2,1],g=1;"hour"==u&&(y=[24,12,6,4,2,1]);try{for(var f=n.g(y),x=f.next();!x.done;x=f.next()){var v=x.value;if(a/v>r){g=v;break}}}catch(t){l={error:t}}finally{try{x&&!x.done&&(h=f.return)&&h.call(f)}finally{if(l)throw l.error}}var b=Math.ceil((i-e)/g/r),P=Math.log(Math.abs(b))*Math.LOG10E,A=Math.pow(10,Math.floor(P))/10,C=b/A;p=g*(b=m.closest(y,C)*A),this.durationFormatter.getValueUnit(p,this.baseUnit),e=Math.floor(e/p)*p,i=Math.ceil(i/p)*p,s&&((e-=p)<0&&c>=0&&(e=0),(i+=p)>0&&d<=0&&(i=0)),o={min:e,max:i,step:p}}else o=t.prototype.adjustMinMax.call(this,e,i,a,r,s);return this.axisDurationFormat=this.durationFormatter.getFormat(o.step,o.max,this.baseUnit),o},Object.defineProperty(e.prototype,"tooltipDurationFormat",{get:function(){return this._tooltipDurationFormat},set:function(t){this._tooltipDurationFormat=t},enumerable:!0,configurable:!0}),e.prototype.getTooltipText=function(t){var e=m.round(this.positionToValue(t),this._stepDecimalPlaces);return this.adapter.apply("getTooltipText",this.formatLabel(e,this.tooltipDurationFormat))},Object.defineProperty(e.prototype,"baseUnit",{get:function(){return this._baseUnit},set:function(t){this._baseUnit!=t&&(this._baseUnit=t,this.durationFormatter.baseUnit=t,this.invalidate())},enumerable:!0,configurable:!0}),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.baseUnit=e.baseUnit},e}(l.a);c.b.registeredClasses.DurationAxis=ii,c.b.registeredClasses.DurationAxisDataItem=ei;var ai=function(t){function e(){var e=t.call(this)||this;e.className="CircleBullet";var i=e.createChild(st.a);return i.shouldClone=!1,i.radius=5,i.isMeasured=!1,e.circle=i,e.applyTheme(),e}return n.c(e,t),e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.circle.copyFrom(e.circle)},e}(et.a);c.b.registeredClasses.CircleBullet=ai;var ni=function(t){function e(){var e=t.call(this)||this;return e.className="ErrorBullet",e.errorLine=e.createChild(S.a),e.errorLine.shouldClone=!1,e.width=20,e.height=20,e.strokeOpacity=1,e.isDynamic=!0,e}return n.c(e,t),e.prototype.validatePosition=function(){t.prototype.validatePosition.call(this);var e=this.pixelWidth/2,i=this.pixelHeight/2;this.errorLine.path=w.moveTo({x:-e,y:-i})+w.lineTo({x:e,y:-i})+w.moveTo({x:0,y:-i})+w.lineTo({x:0,y:i})+w.moveTo({x:-e,y:i})+w.lineTo({x:e,y:i})},e.prototype.copyFrom=function(e){t.prototype.copyFrom.call(this,e),this.errorLine.copyFrom(e.errorLine)},e}(et.a);c.b.registeredClasses.ErrorBullet=ni;var ri=i("Y9w3"),si=i("A6AV"),oi=i("Trvg"),li=i("Rnbi"),hi=function(t){function e(){var e=t.call(this)||this;return e.className="NavigationBarDataItem",e.applyTheme(),e}return n.c(e,t),Object.defineProperty(e.prototype,"name",{get:function(){return this.properties.name},set:function(t){this.setProperty("name",t)},enumerable:!0,configurable:!0}),e}(si.a),ui=function(t){function e(){var e=t.call(this)||this;e.className="NavigationBar";var i=new W.a,a=new oi.a;a.valign="middle",a.paddingTop=8,a.paddingBottom=8,e.paddingBottom=2,e.links=new o.e(a),e._disposers.push(new o.c(e.links)),e._disposers.push(a),e._linksIterator=new g.ListIterator(e.links,function(){return e.links.create()}),e._linksIterator.createNewItems=!0;var n=new li.a;n.direction="right",n.width=8,n.height=12,n.fill=i.getFor("alternativeBackground"),n.fillOpacity=.5,n.valign="middle",n.marginLeft=10,n.marginRight=10,e.separators=new o.e(n),e._disposers.push(new o.c(e.separators)),e._disposers.push(n);var r=new oi.a;return e.activeLink=r,r.copyFrom(a),r.valign="middle",r.fontWeight="bold",e.width=Object(Y.c)(100),e.layout="grid",e.dataFields.name="name",e.applyTheme(),e}return n.c(e,t),e.prototype.validateDataElements=function(){this.removeChildren(),this._linksIterator.reset(),t.prototype.validateDataElements.call(this)},e.prototype.validateDataElement=function(e){var i;if(t.prototype.validateDataElement.call(this,e),e.index<this.dataItems.length-1){(i=this._linksIterator.getLast()).parent=this;var a=this.separators.create();a.parent=this,a.valign="middle"}else(i=this.activeLink).events.copyFrom(this.links.template.events),i.hide(0),i.show(),i.parent=this;i.dataItem=e,i.text=e.name,i.validate()},e}(ri.a);c.b.registeredClasses.NavigationBar=ui,c.b.registeredClasses.NavigationBarDataItem=hi,window.am4charts=a}},["XFs4"]);
21
+ //# sourceMappingURL=charts.js.map
admin/assets/js/amcharts/charts.js.map ADDED
@@ -0,0 +1 @@
 
1
+ {"version":3,"sources":["webpack:///../../../../../src/.internal/charts/axes/DateAxisBreak.ts","webpack:///../../../../../src/.internal/charts/axes/DateAxis.ts","webpack:///../../../../../src/.internal/charts/axes/CategoryAxisBreak.ts","webpack:///../../../../../src/.internal/charts/axes/CategoryAxis.ts","webpack:///../../../../../src/.internal/charts/series/XYSeries.ts","webpack:///../../../../../src/.internal/charts/cursors/Cursor.ts","webpack:///../../../../../src/.internal/charts/cursors/XYCursor.ts","webpack:///../../../../../src/.internal/charts/elements/XYChartScrollbar.ts","webpack:///../../../../../src/.internal/charts/types/XYChart.ts","webpack:///../../../../../src/.internal/charts/series/LineSeriesSegment.ts","webpack:///../../../../../src/.internal/charts/series/LineSeries.ts","webpack:///../../../../../src/.internal/charts/series/RadarSeries.ts","webpack:///../../../../../src/.internal/charts/cursors/RadarCursor.ts","webpack:///../../../../../src/.internal/charts/axes/AxisFillCircular.ts","webpack:///../../../../../src/.internal/charts/axes/GridCircular.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererCircular.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererRadial.ts","webpack:///../../../../../src/.internal/charts/types/RadarChart.ts","webpack:///../../../../../src/.internal/charts/elements/ClockHand.ts","webpack:///../../../../../src/.internal/charts/types/GaugeChart.ts","webpack:///../../../../../src/.internal/charts/series/PieSeries3D.ts","webpack:///../../../../../src/.internal/charts/types/PieChart3D.ts","webpack:///../../../../../src/.internal/charts/types/SlicedChart.ts","webpack:///../../../../../src/.internal/charts/elements/FlowDiagramNode.ts","webpack:///../../../../../src/.internal/charts/elements/FlowDiagramLink.ts","webpack:///../../../../../src/.internal/charts/types/FlowDiagram.ts","webpack:///../../../../../src/.internal/charts/elements/LabelBullet.ts","webpack:///../../../../../src/.internal/charts/elements/SankeyNode.ts","webpack:///../../../../../src/.internal/charts/elements/SankeyLink.ts","webpack:///../../../../../src/.internal/charts/types/SankeyDiagram.ts","webpack:///../../../../../src/.internal/charts/elements/ChordNode.ts","webpack:///../../../../../src/.internal/core/elements/QuadraticCurve.ts","webpack:///../../../../../src/.internal/charts/elements/ChordLink.ts","webpack:///../../../../../src/.internal/charts/types/ChordDiagram.ts","webpack:///../../../../../src/.internal/charts/elements/Column.ts","webpack:///../../../../../src/.internal/charts/series/ColumnSeries.ts","webpack:///../../../../../src/.internal/charts/series/TreeMapSeries.ts","webpack:///../../../../../src/.internal/charts/types/TreeMap.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererX3D.ts","webpack:///../../../../../src/.internal/charts/axes/AxisRendererY3D.ts","webpack:///../../../../../src/.internal/charts/elements/Column3D.ts","webpack:///../../../../../src/.internal/charts/series/ColumnSeries3D.ts","webpack:///../../../../../src/.internal/charts/types/XYChart3D.ts","webpack:///../../../../../src/.internal/charts/elements/Candlestick.ts","webpack:///../../../../../src/.internal/charts/series/CandlestickSeries.ts","webpack:///../../../../../src/.internal/charts/elements/OHLC.ts","webpack:///../../../../../src/.internal/charts/series/OHLCSeries.ts","webpack:///../../../../../src/.internal/charts/series/StepLineSeriesSegment.ts","webpack:///../../../../../src/.internal/charts/series/StepLineSeries.ts","webpack:///../../../../../src/.internal/charts/elements/RadarColumn.ts","webpack:///../../../../../src/.internal/charts/series/RadarColumnSeries.ts","webpack:///../../../../../src/.internal/charts/elements/FunnelSlice.ts","webpack:///../../../../../src/.internal/charts/elements/FunnelTick.ts","webpack:///../../../../../src/.internal/charts/series/FunnelSeries.ts","webpack:///../../../../../src/.internal/charts/series/PyramidSeries.ts","webpack:///../../../../../src/.internal/charts/series/PictorialStackedSeries.ts","webpack:///../../../../../src/.internal/charts/elements/ConeColumn.ts","webpack:///../../../../../src/.internal/charts/series/ConeSeries.ts","webpack:///../../../../../src/.internal/charts/elements/CurvedColumn.ts","webpack:///../../../../../src/.internal/charts/series/CurvedColumnSeries.ts","webpack:///../../../../../src/.internal/charts/axes/DurationAxis.ts","webpack:///../../../../../src/.internal/charts/elements/CircleBullet.ts","webpack:///../../../../../src/.internal/charts/elements/ErrorBullet.ts","webpack:///../../../../../src/.internal/charts/elements/NavigationBar.ts","webpack:///./charts.js"],"names":["DateAxisBreak_DateAxisBreak","_super","DateAxisBreak","_this","call","this","className","applyTheme","tslib_es6","Object","defineProperty","prototype","getPropertyValue","value","setPropertyValue","startValue","getTime","axis","invalidate","invalidateSeries","endValue","ValueAxisBreak","Registry","registeredClasses","DateAxis_DateAxisDataItem","DateAxisDataItem","values","date","endDate","dates","setDate","ValueAxis","DateAxis_DateAxis","DateAxis","gridIntervals","List","dateFormats","Dictionary","periodChangeDateFormats","_baseIntervalReal","timeUnit","count","_minDifference","snapTooltip","pushAll","axisFieldName","fillRule","dataItem","component","gridInterval","_gridInterval","gridDuration","Time","Math","round","min","axisFill","__disabled","applyInternalDefaults","hasKey","setKey","language","translate","createDataItem","createAxisBreak","validateDataItems","start","end","periodCount","max","baseDuration","maxZoomFactor","_deltaMinMax","zoom","handleSelectionExtremesChange","calculateZoom","chooseInterval","adjustDifference","_minZoomed","_maxZoomed","_gridCount","baseInterval","_gridDate","Date","getFirstWeekDay","dateFormatter","utc","_nextGridUnit","_intervalDuration","ceil","_difference","floor","Iterator","series","iterator","baseAxis","field_1","getAxisField","minZoomed","minZoomedStr","toString","startDataItem","dataItemsByAxis","getKey","uid","startIndex","findFirst","index","dataItems","findClosestIndex","x","maxZoomed","maxZoomedStr","endDataItem","endIndex","length","dataRangeInvalid","validateDataRange","time","key","previousDataItem","getIndex","previousDate","validateData","Type","minDifference","Number","MAX_VALUE","each","seriesDataChangeUpdate","postProcessSeriesDataItems","JSON","stringify","_baseInterval","postProcessSeriesDataItem","addEmptyUnitsBreaks","utils_Object","getDate","startTime","setCalculatedValue","skipEmptyPeriods","axisBreaks","clear","axisBreak","this_1","startTimeStr","undefined","create","startDate","fixAxisBreaks","breakGridCount","endPosition","startPosition","adjustedEndValue","adjustedStartValue","gridDate","firstDayOfWeek","getGridDate","intervalCount","realIntervalCount","prevTimestamp","newDate","timestamp","isInBreak","durationBreaksRemoved","getBreaklessDate","validateAxisElements","prevGridDate","dataItemsIterator_1","_dataItemsIterator","resetIterators","this_2","format","markUnitChange","text","find","appendDataItem","validateDataElement","renderer_1","renderer","breakSize","timeUnit_1","intervalCount_1","utils_Math","startPoint","endPoint","minGridDistance","prevGridDate_1","timestamp_1","text_1","moveValue","adjustedMax","endTimestamp","position","valueToPosition","fillEndPosition","isRange","tick","disabled","updateTickElement","grid","updateGridElement","fill","updateFillElement","mask","label","location_1","location","updateLabelElement","adjustMinMax","step","fixMin","startLocation","fixMax","endLocation","duration","gridCount","intervalDuration","lastIndex","formatLabel","dateToPosition","anyToPosition","dateToPoint","point","positionToPoint","angle","positionToAngle","y","anyToPoint","valueToPoint","positionToDate","positionToValue","getX","getTimeByLocation","baseValue","getY","stack","getValue","getAngle","stackKey","workingLocations","endTime","processSeriesDataItem","axisLetter","openTime","openDate","prevSeriesTime","_prevSeriesTime","difference","abs","differece","updateAxisBySeries","timeInterval","invalidateData","breakTemplate","template","startLine","endLine","fillShape","getTooltipText","tooltipDateFormat","dateFormat","getPositionLabel","adapter","apply","roundPosition","getCellStartPosition","getCellEndPosition","getSeriesDataItem","findNearest","key_1","Infinity","getCurrentLabelFormat","initRenderer","ticks","labels","baseGrid","zoomToDates","skipRangeEvent","instantly","parse","zoomToValues","asIs","field","copyFrom","source","showTooltipAtPosition","local","toAxisPosition","closestDate_1","actualTime_1","xAxis","dateX","yAxis","dateY","closestTime_1","tooltipLocation","showTooltipAtDataItem","chart","_seriesPoints","push","tooltipText","tooltipHTML","hideTooltip","makeGap","previous","connect","autoGapCount","CategoryAxisBreak_CategoryAxisBreak","CategoryAxisBreak","indexToPosition","invalidateDataItems","category","categoryToIndex","AxisBreak","CategoryAxis_CategoryAxisDataItem","CategoryAxisDataItem","Adapter","seriesDataItems","locations","endCategory","isEnabled","properties","setProperty","Axis","CategoryAxis_CategoryAxis","CategoryAxis","dataItemsByCategory","_lastDataItem","_disposers","categoryAxisDataItem","seriesId","_series","invalidateDataRange","positionToIndex","minIndex","maxIndex","i","axisDataItem","i_1","seriesDataItem","validate","dataCount","invalid","maxCount","axisLength","frequency","_startIndex","_endIndex","_frequency","itemIndex","len","frequency_1","itemIndex_1","b","validateBreaks","validateAxisRanges","ghostLabel","invalidateLayout","fillEndIndex","fillPosition","measuredWidth","measuredHeight","html","currentText","disposeData","processDataItem","dataContext","getDataItem","dataFields","breakStartIndex","breakEndIndex","categoryToPosition","categoryToPoint","zoomToCategories","startCategory","zoomToIndexes","getAnyRangePath","startPos","endPos","getPositionRangePath","getFirstSeriesDataItem","categoryX","categoryY","getLastSeriesDataItem","index_1","sdi_1","category_1","categories","basePoint","breakStartPosition","breakEndPosition","breakPosition","positionToCategory","XYSeries_XYSeriesDataItem","XYSeriesDataItem","valueX","valueY","openValueX","openValueY","openDateX","openDateY","setLocation","setValue","setCategory","openCategoryX","openCategoryY","getMin","fields","working","stackValue","utils_Array","getWorkingValue","getMax","Series","XYSeries_XYSeries","XYSeries","_xAxis","Disposer","_yAxis","_xValueFields","_yValueFields","isMeasured","cursorTooltipEnabled","cursorHoverEnabled","excludeFromTotal","mainContainer","Sprite","setElement","paper","add","stacked","tooltip","pointerOrientation","events","on","returnBulletDefaultState","readerTitle","dataChangeUpdate","_tmin","_tmax","_smin","_smax","defineFields","data","updateItemReaderText","_xField","_yField","Error","name","disable","enable","setInitialWorkingValues","e","_chart","raiseCriticalError","updateDataItem","dataItemsX","clearCatAxis","dataItemsY","xAxisFieldName","xField","xOpenField","Utils","yAxisFieldName","yField","yOpenField","_xOpenField","_yOpenField","addValueField","indexOf","setCategoryAxisField","setDateAxisField","afterDraw","createMask","path_1","getMaskPath","axisRanges","range","fillPath","path","Path","width","height","pixelY","pixelX","_showBullets","minBulletDistance","get","xAxes","oldAxis","removeKey","dispose","removeValue","set","registerSeries","yAxes","_baseAxis","processValues","minX","maxX","minY","maxY","getStackValue","stackX","stackY","processSeriesDataItems","xAxisId","yAxisId","stackedSeries","isDisposed","dispatchImmediately","appeared","_prevTooltipDataItem","xPosition","yPosition","visible","isHiding","isShowing","updateLegendValue","tooltipDataItem","tooltipXField","tooltipYField","tooltipPoint","getPoint","tooltipX","tooltipY","type","target","_a","sprites","_b","next","done","sprite","parent","isHidden","isHover","showTooltip","shouldCreateBullet","bulletTemplate","hasValue","positionBullet","bullet","bulletLocationX","getBulletLocationX","bulletLocationY","getBulletLocationY","locationX","locationY","moveTo","bulletLocation","show","anim","delay","interpolationDuration","defaultState","transitionDuration","a","sequencedInterpolation","sequencedInterpolationDelay","animation","isFinished","hide","hiddenState","validateDataElements","handleDataItemWorkingValueChange","axisSeries","invalidateProcessedData","backwards","prevSeries","prevDataItem","prevValue","_tooltipXField","_tooltipYField","selectionMin","selectionMax","processConfig","config","map","processingErrors","xKey","yKey","stackKeyX","stackKeyY","val","itemReaderText","Cursor_Cursor","Cursor","_stick","Percent","shouldClone","trackable","clickable","interaction","Interaction","body","handleCursorDown","handleCursorUp","handleCursorMove","event","interactionsEnabled","interactions","isTouchProtected","touch","_generalBehavior","downPoint","isLocalElement","pointer","svg","_stickPoint","fitsToBounds","triggerMove","hideReal","stick","triggerMoveReal","invalidatePosition","getPositions","dispatch","triggerDown","triggerDownReal","setGlobalStyle","Mouse","grabbing","triggerUp","triggerUpReal","updatePoint","upPoint","_upPointOrig","_downPointOrig","getHitOption","default","updateSelection","innerWidth","innerHeight","cancelable","shouldPreventGestures","preventDefault","plotContainer","lockElement","Container","XYCursor_XYCursor","XYCursor","_lineX","_lineY","behavior","maxPanOut","interfaceColors","InterfaceColorSet","selection","createChild","fillOpacity","getFor","lineX","stroke","Color","strokeDasharray","strokeOpacity","lineY","updateSize","_usesSelection","w","_positionPrecision","h","pixelHeight","pixelWidth","validatePosition","fixPoint","snapToSeries","updateLinePositions","getPanningRanges","selectionX","selectionY","getRanges","startX","startY","deltaX","deltaY","xRange","yRange","endX","endY","handleXTooltipPosition","handleYTooltipPosition","fullWidthLineX","currentItemStartPoint","currentItemEndPoint","fullWidthLineY","reset","_selection","element","_snapToDisposer","handleSnap","opposite","xx","yy","animationDuration","easing","animationEasing","animate","property","to","XYChartScrollbar_XYChartScrollbar","XYChartScrollbar","padding","scrollbarChart","XYChart_XYChart","margin","_scrollbarChart","minHeight","minWidth","unselectedOverlay","toBack","_unselectedOverlay","background","cornerRadius","thumbBackground","thumb","hoverState","states","downState","handleSeriesAdded","handleSeriesRemoved","sourceSeries","newValue","zoomOutButton","addXAxis","addYAxis","clone","title","rangeChangeDuration","id","inside","line","minLabelPosition","maxLabelPosition","axisFills","showOnInit","zoomOutAxes","filters","DesaturateFilter","updateByOrientation","orientation","clonedFrom","oldValue","off","handleDataChanged","dataProvider","updateThumb","Scrollbar","XYChart_XYChartDataItem","XYChartDataItem","SerialChart","XYChart","_axisRendererX","AxisRendererX","_axisRendererY","AxisRendererY","maskBullets","arrangeTooltips","chartContainer","layout","topAxesCont","zIndex","topAxesContainer","yAxesAndPlotCont","yAxesAndPlotContainer","bottomAxesCont","bottomAxesContainer","leftAxesCont","contentAlign","updateXAxesMargins","leftAxesContainer","plotCont","mouseWheelBehavior","_cursorContainer","rightAxesCont","rightAxesContainer","seriesContainer","bulletsContainer","ZoomOutButton","align","valign","MAX_SAFE_INTEGER","marginTop","marginRight","_bulletMask","exportable","draw","toFront","updateSeriesLegend","updatePlotElements","_parseDataFrom","leftAxesWidth","rightAxesWidth","paddingLeft","paddingRight","handleXAxisChange","updateXAxis","handleYAxisChange","updateYAxis","processXAxis","observe","handleXAxisRangeChange","processAxis","processYAxis","handleYAxisRangeChange","getCommonAxisRange","scrollbarX","zoomAxes","toggleZoomOutButton","updateScrollbar","show_1","seriesAppeared","scrollbarY","scrollbar","skipRangeEvents","axes","axisStart","axisEnd","inversed","processRenderer","_dataUsers","gridContainer","breakContainer","addDisposer","dataUsers","inited","updateSeriesMasks","_xAxes","handleAxisRemoval","autoDispose","_yAxes","removeFromInvalidComponents","dataInvalid","colors","_cursor","cursor","removeDispose","handleCursorPositionChange","handleCursorZoomStart","handleCursorZoomEnd","handleCursorPanStart","handleCursorPanning","handleCursorPanEnd","handleCursorCanceled","handleHideCursor","tapToActivate","setTapToActivate","createCursor","showSeriesTooltip","exceptAxis","showAxisTooltip","sortSeriesTooltips","hideObjectTooltip","seriesPoints","setBounds","topLeft","bottomRight","sum","filteredSeriesPoints","seriesPoint","sort","averageY","svgContainer","SVGContainer","top_1","bottom","dropped","nextHeight","pointY","pixelMarginTop","nextY","pixelMarginBottom","except","getUpdatedRange","priority","_panStartXRange","_panStartYRange","_panEndXRange","delta","panEndRange","_panEndYRange","panStartRange","axisRange","newStart","newEnd","newRange","_scrollbarX","startGrip","endGrip","handleXScrollbarChange","arg","_scrollbarY","handleYScrollbarChange","fixRange","declination","realRange","handleWheel","svgPoint","htmlContainer","cssScale","plotPoint","shift","rangeX","rangeY","differenceX","newStartX","newEndX","differenceY","newStartY","newEndY","maxWidth","maxHeight","_mouseWheelDisposer","wheelable","hoverable","dataSourceDateFields","populateDataSourceFields","dataSourceNumberFields","configOrder","createSeries","_zoomOutButton","button","addData","rawDataItem","removeCount","addScrollbarData","removeScrollbarData","remove","dataUser","removeData","handleTapToActivate","handleTapToActivateDeactivation","Responsive","relevant","maybeXS","state","stateId","LineSeriesSegment_LineSeriesSegment","LineSeriesSegment","fillSprite","strokeSprite","drawSegment","points","closePoints","smoothnessX","smoothnessY","Smoothing","smooth","lineElement","fillElement","LineSeries_LineSeriesDataItem","LineSeriesDataItem","LineSeries_LineSeries","LineSeries","minDistance","segments","createSegment","applyOnClones","_segmentsIterator","createNewItems","tensionX","tensionY","segmentsContainer","initialY","workingValue","setWorkingValue","setWorkingLocation","initialX","segment","tooltipColorSource","openSegmentWrapper","_adjustedStartIndex","sliceData","findAdjustedIndex","_workingStartIndex","_workingEndIndex","adjustedIndex","propertyFields","openIndex","params","openSegment","addToClose","closeIndex","propertiesChanged","getFirst","contents","valuesFound","hasProperties","updateSegmentProperties","addPoints","closeSegment","itemProperties","checkOnly","changed","propertyName","currentValue","currentValueStr","valueStr","createLegendMarker","marker","disposeChildren","Line","x2","Rectangle","legendDataItem","color","colorOrig","bullets","Bullet","copyToLegendMarker","hasLabels","children","child","Label","RadarSeries_RadarSeriesDataItem","RadarSeriesDataItem","RadarSeries_RadarSeries","RadarSeries","connectEnds","radius","startAngle","endAngle","pixelRadius","pixelInnerRadius","unshift","RadarCursor_RadarCursor","RadarCursor","innerRadius","truePixelRadius","updateLineX","updateLineY","fillStartAngle","arc","downAngle","downRadius","currentRadius","_prevAngle","downSin","downCos","sin","cos","upAngle","upRadius","setPercentProperty","innerRadiusModifyer","AxisFillCircular_AxisFillCircular","AxisFillCircular","AxisFill","GridCircular_GridCircular","GridCircular","pixelPerfect","Grid","AxisRendererCircular_AxisRendererCircular","AxisRendererCircular","pixelRadiusReal","useChartAngles","setAxis","atan2","PI","coordinate","positionToCoordinate","updateAxisLine","gridInnerRadius","toggleVisibility","tickLength","fixPosition","invalidateAxisItems","createGrid","createFill","createLabel","AxisLabelCircular","pointToPosition","coordinateToPosition","AxisRenderer","AxisRendererRadial_AxisRendererRadial","AxisRendererRadial","gridType","axisAngle","horizontalCenter","verticalCenter","rotation","gridLocation","count_1","cellEndLocation","positionItem","updateBaseGridElement","count_2","updateBreakElement","createBreakSprites","WavedCircle","updateTooltip","tooltipOrientation","bigNum","axisFullLength","RadarChart_RadarChartDataItem","RadarChartDataItem","RadarChart_RadarChart","RadarChart","radarContainer","Circle","opacity","beforeDraw","rect","innerRect","wr","hr","mr","maxRadius","diameter","_pixelInnerRadius","definedBBox","ClockHand_ClockHand","ClockHand","_axis","pin","startWidth","endWidth","hand","Trapezoid","leftSide","rightSide","x0","x1","_pin","_hand","showValue","_value","newAngle","currentAngle","rotationDirection","updateValue","GaugeChart_GaugeChartDataItem","GaugeChartDataItem","GaugeChart_GaugeChart","GaugeChart","hands","processHand","PieSeries3D_PieSeries3DDataItem","PieSeries3DDataItem","depthValue","PieSeries","PieSeries3D_PieSeries3D","PieSeries3D","createSlice","Slice3D","slice","depth","depthPercent","percent","PieChart3D_PieChart3DDataItem","PieChart3DDataItem","PieChart","PieChart3D_PieChart3D","PieChart3D","invalidateDataUsers","SlicedChart_SlicedChartDataItem","SlicedChartDataItem","PercentChart","SlicedChart_SlicedChart","SlicedChart","FlowDiagramNode_FlowDiagramNode","FlowDiagramNode","legendSettings","Legend","draggable","inert","setStateOnChildren","invalidateLinks","handleHit","outgoingDataItems","toNode","incomingDataItems","fromNode","link","colorMode","gradient","stop_1","stops","stop_2","_incomingDataItems","sortBy","_incomingSorted","utils_String","fromName","Order","utils_Number","_outgoingDataItems","_outgoingSorted","setColorProperty","_background","removeChildren","column","RoundedRectangle","_legendDataItem","itemContainer","deepInvalidate","FlowDiagramLink_FlowDiagramLink","FlowDiagramLink","positionBullets","_bulletsContainer","_bulletsMask","bulletsMask","middleLine","rotationField","addColor","setFill","_gradient","measureElement","_bullets","Polyline","getTooltipX","getTooltipY","LinearGradient","FlowDiagram_FlowDiagramDataItem","FlowDiagramDataItem","toName","_link","link_1","links","addSprite","Chart","FlowDiagram_FlowDiagram","FlowDiagram","ColorSet","nodePadding","minNodeSize","linksContainer","nodesContainer","nodes","sortNodes","low","high","node","strokeModifier","LinearGradientModifier","opacities","fillModifier","strNode","getNodeValue","feedLegend","_sorted","sortedIterator","total","incomingTotal","outgoingTotal","totalIncoming","totalOutgoing","changeSorting","_nodes","createNode","_links","createLink","legend","legendData_1","LabelBullet_LabelBullet","LabelBullet","truncate","hideOversized","handleMaxSize","SankeyNode_SankeyNode","SankeyNode","nextInCoord","nextOutCoord","nameLabel","valueLabel","orientation_1","dx","dy","linkWidth","valueHeight","SankeyLink_SankeyLink","SankeyLink","tension","controlPointDistance","Polyspline","isTemplate","y0","y1","xt0","yt0","xt1","yt1","xb0","xb1","yb0","yb1","xm0","xm1","ym0","ym1","_bbox","cpd","kxt0","kyt0","kxt1","kyt1","kxm0","kym0","kxm1","kym1","kxb0","kyb0","kxb1","kyb1","SankeyDiagram_SankeyDiagramDataItem","SankeyDiagramDataItem","SankeyDiagram_SankeyDiagram","SankeyDiagram","nodeAlign","_levelCount","level","getNodeLevel","levels","calculateValueHeight","_levelSum","_levelNodesCount","maxSum","availableHeight","maxSumLevel","realValue","_maxSumLevel","maxSumLevelNodeCount","finalHeight","_heightAnimation","animationOptions","err","Animation","from","container","nextCoordinate","levelCoordinate","nodeCount","showReal","container_1","interpolationEasing","nodeHeight","_valueHeight","ChordNode_ChordNode","ChordNode","updateRotation","Slice","ix","iy","arc_1","sliceStartAngle_1","childAngle","childRadius","labelAngle","adjustedTotal","nextAngle","nonRibbon","percentWidth","valueAngle","mAngle","trueStartAngle","tx","ty","QuadraticCurve_QuadraticCurve","QuadraticCurve","y2","cpx","cpy","p1","p2","cp","d","point1","point2","ChordLink_ChordLink","ChordLink","fromX","fromY","toX","toY","mAngle1","mAngle2","ChordDiagram_ChordDiagramDataItem","ChordDiagramDataItem","ChordDiagram_ChordDiagram","ChordDiagram","chordContainer","newTotal","Column_Column","Column","createAssets","handleKidAdded","ColumnSeries_ColumnSeriesDataItem","ColumnSeriesDataItem","_column","setColumn","columns","_rangesColumns","ColumnSeries_ColumnSeries","ColumnSeries","_startLocation","_endLocation","clustered","columnsContainer","_columnsContainer","baseAxisSeries","clusterCount","cellStartLocation","disableUnusedColumns","validateDataElementReal","getStartLocation","simplifiedProcessing","getEndLocation","l","r","t","percentHeight","pixelPaddingLeft","pixelPaddingRight","paddingTop","pixelPaddingTop","paddingBottom","pixelPaddingBottom","outOfBounds","offset","fixHorizontalCoordinate","fixVerticalCoordinate","bottomLocation","topLocation","axisLenght","rightLocation","leftLocation","column_1","itemsFocusable","role","focusable","once","ev","populateString","realX","realY","realWidth","realHeight","virtualParent","setColumnStates","rangeColumn","rangesColumns","itemWidth","itemHeight","open_1","change","droppedFromOpen","_dropFromOpenState","setState","_riseFromOpenState","droppedFromPrevious","_dropFromPreviousState","_riseFromPreviousState","_columns","createColumnTemplate","fromOpenState_1","fromPreviousState_1","TreeMapSeries_TreeMapSeriesDataItem","TreeMapSeriesDataItem","treeMapDataItem","_dataContext","toValue","TreeMapSeries_TreeMapSeries","TreeMapSeries","configField","TreeMap_TreeMapDataItem","TreeMapDataItem","rows","hasChildren","getDuration","childValue","TreeMap_TreeMap","TreeMap","layoutAlgorithm","squarify","zoomable","maxLevels","currentLevel","sorting","strictMinMax","xRenderer","yRenderer","seriesTemplates","zoomToChartDataItem","_homeDataItem","_navigationBar","navigationBar","createTreeSeries","_tempSeries","homeDataItem","_homeText","getMinMax","layoutItems","_updateDataItemIndexes","navigationData","parentDataItem","initSeries","reverse","createTreeSeriesReal","setData","currentlyZoomed","cursorOverStyle","zoomToSeriesDataItem","toggleBullets","rangeChangeAnimation","_dataDisposers","binaryTree","dice","sliceDice","validateLayout","validateRawData","n","sums","Array","partition","j","valueOffset","valueTarget","k","hi","mid","valueLeft","valueRight","xk","yk","nodeValue","sumValue","minValue","maxValue","newRatio","minRatio","alpha","beta","ratio","sqrt","i0","i1","row","handleDataItemValueChange","getLegendLevel","legendParent","getExporting","exporting","info","AxisRendererX3D_AxisRendererX3D","AxisRendererX3D","dx3D","dy3D","getHeight","handle3DChanged","AxisRendererY3D_AxisRendererY3D","AxisRendererY3D","getWidth","Column3D_Column3D","Column3D","column3D","Rectangle3D","ColumnSeries3D_ColumnSeries3DDataItem","ColumnSeries3DDataItem","ColumnSeries3D_ColumnSeries3D","ColumnSeries3D","XYChart3D_XYChart3DDataItem","XYChart3DDataItem","XYChart3D_XYChart3D","XYChart3D","fixLayout","fixColumns","depthIndex","s","inversed_1","maskColumns","Candlestick_Candlestick","Candlestick","lowLine","highLine","CandlestickSeries_CandlestickSeriesDataItem","CandlestickSeriesDataItem","lowValueX","lowValueY","highValueX","highValueY","CandlestickSeries_CandlestickSeries","CandlestickSeries","positiveColor","negativeColor","dropFromOpenState","riseFromOpenState","validateCandlestick","lowLine_1","highLine_1","close_1","yOpen","yClose","yLow","yLowField","yHigh","yHighField","open_2","close_2","xOpen","xClose","xLow","xLowField","xHigh","xHighField","rangeLowLine","rangehighLine","_xLowField","_yLowField","_xHighField","_yHighField","cw","ch","OHLC_OHLC","OHLC","openLine","highLowLine","closeLine","OHLCSeries_OHLCSeriesDataItem","OHLCSeriesDataItem","OHLCSeries_OHLCSeries","OHLCSeries","openLine_1","highLowLine_1","closeLine_1","rangeOpenLine","rangeCloseLine","rangeHighLowLine","StepLineSeriesSegment_StepLineSeriesSegment","StepLineSeriesSegment","noRisers","vertical","StepLineSeries_StepLineSeriesDataItem","StepLineSeriesDataItem","StepLineSeries_StepLineSeries","StepLineSeries","prevPoint","point0","RadarColumn_RadarColumn","RadarColumn","radarColumn","RadarColumnSeries_RadarColumnSeriesDataItem","RadarColumnSeriesDataItem","RadarColumnSeries_RadarColumnSeries","RadarColumnSeries","lAngle","rAngle","tRadius","bRadius","cellAngle","temp","FunnelSlice_FunnelSlice","FunnelSlice","bottomWidth","topWidth","expandDistance","pt","pb","pr","pl","ed","tl","tw","tr","br","bw","bl","cpr","cpl","qp1","qp2","tickPoint","tt","tb","bt","bb","mlx","mty","FunnelTick_FunnelTick","FunnelTick","_label","_slice","labelsOpposite","maxRight","p0","maxBottom","Tick","FunnelSeries_FunnelSeriesDataItem","FunnelSeriesDataItem","_sliceLink","sliceLink_1","sliceLinks","slicesContainer","PercentSeries","FunnelSeries_FunnelSeries","FunnelSeries","_nextY","labelsContainer","bottomRatio","createTick","initSlice","scale","handleSliceScale","handleSliceMove","initLabel","labelTemplate","alignLabels","dItem","_total","_count","arrangeLabels","getNextValue","nextValue","nextItem","formDataElement","sliceLink","decorateSlice","linkHeight","lastLabel","lastY","lastX","_sliceLinks","setAlignLabels","labelAlign","labelValign","PyramidSeries_PyramidSeriesDataItem","PyramidSeriesDataItem","PyramidSeries_PyramidSeries","PyramidSeries","pyramidHeight","valueIs","_nextWidth","relValue","_pyramidHeight","_pyramidWidth","ticksContainer","pyramidWidth","sliceTopWidth","c","tan","sliceHeight","sliceBottomWidth","square","sliceWidth","PictorialStackedSeries_PictorialStackedSeriesDataItem","PictorialStackedSeriesDataItem","PictorialStackedSeries_PictorialStackedSeries","PictorialStackedSeries","_maskSprite","maskSprite","pictureWidth","pictureHeight","newWidth","newHeight","slices","hs","ConeColumn_ConeColumn","ConeColumn","coneColumn","Cone","ConeSeries_ConeSeriesDataItem","ConeSeriesDataItem","ConeSeries_ConeSeries","ConeSeries","radiusY","CurvedColumn_CurvedColumn","CurvedColumn","curvedColumn","CurvedColumnSeries_CurvedColumnSeriesDataItem","CurvedColumnSeriesDataItem","CurvedColumnSeries_CurvedColumnSeries","CurvedColumnSeries","DurationAxis_DurationAxisDataItem","DurationAxisDataItem","DurationAxis_DurationAxis","DurationAxis","_baseUnit","durationFormatter","axisDurationFormat","strictMode","minMaxStep","baseUnit","initialMin","initialMax","divisors","realDivisor","divisors_1","divisors_1_1","divisor","exponent","log","LOG10E","power","pow","reducedCount","getValueUnit","getFormat","_tooltipDurationFormat","_stepDecimalPlaces","tooltipDurationFormat","CircleBullet_CircleBullet","CircleBullet","circle","ErrorBullet_ErrorBullet","ErrorBullet","errorLine","isDynamic","NavigationBar_NavigationBarDataItem","NavigationBarDataItem","DataItem","NavigationBar_NavigationBar","NavigationBar","textLink","TextLink","_linksIterator","triangle","Triangle","direction","marginLeft","separators","activeLink","fontWeight","getLast","separator","Component","window","am4charts","charts_namespaceObject"],"mappings":"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","file":"charts.js","sourcesContent":["/**\r\n * DateAxisBreak includes functionality to add breaks on a [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\nimport { ValueAxisBreak, IValueAxisBreakProperties, IValueAxisBreakAdapters, IValueAxisBreakEvents } from \"./ValueAxisBreak\";\r\nimport { DateAxis } from \"./DateAxis\";\r\nimport { ITimeInterval } from \"../../core/defs/ITimeInterval\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[DateAxisBreak]].\r\n */\r\nexport interface IDateAxisBreakProperties extends IValueAxisBreakProperties {\r\n\r\n\t/**\r\n\t * A `Date` break starts on.\r\n\t */\r\n\tstartDate?: Date;\r\n\r\n\t/**\r\n\t * A `Date` break ends on.\r\n\t */\r\n\tendDate?: Date;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[DateAxisBreak]]\r\n */\r\nexport interface IDateAxisBreakEvents extends IValueAxisBreakEvents { }\r\n\r\n/**\r\n * Defines adapters for [[DateAxisBreak]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IDateAxisBreakAdapters extends IValueAxisBreakAdapters, IDateAxisBreakProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Class used to define breaks for [[DateAxis]].\r\n *\r\n * A \"break\" can be used to \"cut out\" specific ranges of the axis scale, e.g.\r\n * weekends and holidays out of the Date-based axis.\r\n *\r\n * @see {@link IDateAxisBreakEvents} for a list of available events\r\n * @see {@link IDateAxisBreakAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class DateAxisBreak extends ValueAxisBreak {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IDateAxisBreakProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDateAxisBreakAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IDateAxisBreakEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Axis this break is used for.\r\n\t */\r\n\tpublic _axisType: DateAxis;\r\n\r\n\t/**\r\n\t * [gridInterval description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic gridInterval: ITimeInterval;\r\n\r\n\t/**\r\n\t * [gridDate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic gridDate: Date;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DateAxisBreak\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Starting date for the break.\r\n\t *\r\n\t * @param value Start date\r\n\t */\r\n\tpublic set startDate(value: Date) {\r\n\t\tif (this.setPropertyValue(\"startDate\", value)) {\r\n\t\t\tthis.startValue = value.getTime();\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidate();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Start date\r\n\t */\r\n\tpublic get startDate(): Date {\r\n\t\treturn this.getPropertyValue(\"startDate\");\r\n\t}\r\n\r\n\t/**\r\n\t * Ending date for the break.\r\n\t *\r\n\t * @param value End date\r\n\t */\r\n\tpublic set endDate(value: Date) {\r\n\t\tif (this.setPropertyValue(\"endDate\", value)) {\r\n\t\t\tthis.endValue = value.getTime();\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidate();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return End date\r\n\t */\r\n\tpublic get endDate(): Date {\r\n\t\treturn this.getPropertyValue(\"endDate\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxisBreak\"] = DateAxisBreak;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/DateAxisBreak.ts","/**\r\n * DateAxis module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ValueAxis, ValueAxisDataItem, IValueAxisProperties, IValueAxisDataFields, IValueAxisAdapters, IValueAxisEvents } from \"./ValueAxis\";\r\nimport { AxisItemLocation } from \"./Axis\";\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { Grid } from \"./Grid\";\r\nimport { XYSeries, XYSeriesDataItem } from \"../series/XYSeries\";\r\nimport { LineSeriesDataItem } from \"../series/LineSeries\";\r\nimport { TimeUnit } from \"../../core/defs/TimeUnit\";\r\nimport { ITimeInterval } from \"../../core/defs/ITimeInterval\";\r\nimport { IMinMaxStep } from \"./ValueAxis\";\r\nimport { DateAxisBreak } from \"./DateAxisBreak\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $time from \"../../core/utils/Time\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $object from \"../../core/utils/Object\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data item for [[DateAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class DateAxisDataItem extends ValueAxisDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: DateAxis;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"DateAxisDataItem\";\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.values.date = {};\r\n\t\tthis.values.endDate = {};\r\n\t}\r\n\r\n\t/**\r\n\t * Date position of the data item.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set date(date: Date) {\r\n\t\tthis.setDate(\"date\", date);\r\n\t\tthis.value = date.getTime();\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get date(): Date {\r\n\t\treturn this.dates[\"date\"];\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * End date for data item.\r\n\t *\r\n\t * @param date End date\r\n\t */\r\n\tpublic set endDate(date: Date) {\r\n\t\tthis.setDate(\"endDate\", date);\r\n\t\tthis.endValue = date.getTime();\r\n\t}\r\n\r\n\t/**\r\n\t * @return End date\r\n\t */\r\n\tpublic get endDate(): Date {\r\n\t\treturn this.dates[\"endDate\"];\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[DateAxis]].\r\n */\r\nexport interface IDateAxisDataFields extends IValueAxisDataFields {\r\n\r\n\t/**\r\n\t * Date.\r\n\t */\r\n\tdate?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[DateAxis]].\r\n */\r\nexport interface IDateAxisProperties extends IValueAxisProperties {\r\n\r\n\t/**\r\n\t * If enabled, axis will automatically collapse empty (without data points)\r\n\t * periods of time, i.e. weekends.\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tskipEmptyPeriods?: boolean;\r\n\r\n\t/**\r\n\t * Use `periodChangeDateFormats` to apply different formats to the first\r\n\t * label in bigger time unit.\r\n\t *\r\n\t * @default true\r\n\t * @param value Use different format for period beginning?\r\n\t */\r\n\tmarkUnitChange?: boolean;\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tsnapTooltip?: boolean;\r\n\r\n\t/**\r\n\t * A special date format to apply axis tooltips.\r\n\t *\r\n\t * Will use same format as for labels, if not set.\r\n\t */\r\n\ttooltipDateFormat?: string;\r\n}\r\n\r\n/**\r\n * Defines events for [[DateAxis]].\r\n */\r\nexport interface IDateAxisEvents extends IValueAxisEvents { }\r\n\r\n/**\r\n * Defines adapters for [[DateAxis]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IDateAxisAdapters extends IValueAxisAdapters, IDateAxisProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to create a date/time-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Time\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.DateAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Time\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"DateAxis\",\r\n * \"title\": {\r\n * \"text\": \"Time\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link IDateAxisEvents} for a list of available Events\r\n * @see {@link IDateAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class DateAxis<T extends AxisRenderer = AxisRenderer> extends ValueAxis<T> {\r\n\r\n\t/**\r\n\t * Defines data fields.\r\n\t */\r\n\tpublic _dataFields: IDateAxisDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IDateAxisProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IDateAxisAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IDateAxisEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Date Items.\r\n\t */\r\n\tpublic _dataItem: DateAxisDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the axis breaks.\r\n\t */\r\n\tpublic _axisBreak: DateAxisBreak;\r\n\r\n\t/**\r\n\t * A list of date/time intervals for Date axis.\r\n\t *\r\n\t * This define various granularities available for the axis. For example\r\n\t * if you have an axis spanning an hour, and space for 6 grid lines / labels\r\n\t * the axis will choose the granularity of 10 minutes, displaying a label\r\n\t * every 10 minutes.\r\n\t *\r\n\t * Default intervals:\r\n\t *\r\n\t * ```JSON\r\n\t * [\r\n\t * { timeUnit: \"millisecond\", count: 1 },\r\n\t * { timeUnit: \"millisecond\", count: 5 },\r\n\t * { timeUnit: \"millisecond\", count: 10 },\r\n\t * { timeUnit: \"millisecond\", count: 50 },\r\n\t * { timeUnit: \"millisecond\", count: 100 },\r\n\t * { timeUnit: \"millisecond\", count: 500 },\r\n\t * { timeUnit: \"second\", count: 1 },\r\n\t * { timeUnit: \"second\", count: 5 },\r\n\t * { timeUnit: \"second\", count: 10 },\r\n\t * { timeUnit: \"second\", count: 30 },\r\n\t * { timeUnit: \"minute\", count: 1 },\r\n\t * { timeUnit: \"minute\", count: 5 },\r\n\t * { timeUnit: \"minute\", count: 10 },\r\n\t * { timeUnit: \"minute\", count: 30 },\r\n\t * { timeUnit: \"hour\", count: 1 },\r\n\t * { timeUnit: \"hour\", count: 3 },\r\n\t * { timeUnit: \"hour\", count: 6 },\r\n\t * { timeUnit: \"hour\", count: 12 },\r\n\t * { timeUnit: \"day\", count: 1 },\r\n\t * { timeUnit: \"day\", count: 2 },\r\n\t * { timeUnit: \"day\", count: 3 },\r\n\t * { timeUnit: \"day\", count: 4 },\r\n\t * { timeUnit: \"day\", count: 5 },\r\n\t * { timeUnit: \"week\", count: 1 },\r\n\t * { timeUnit: \"month\", count: 1 },\r\n\t * { timeUnit: \"month\", count: 2 },\r\n\t * { timeUnit: \"month\", count: 3 },\r\n\t * { timeUnit: \"month\", count: 6 },\r\n\t * { timeUnit: \"year\", count: 1 },\r\n\t * { timeUnit: \"year\", count: 2 },\r\n\t * { timeUnit: \"year\", count: 5 },\r\n\t * { timeUnit: \"year\", count: 10 },\r\n\t * { timeUnit: \"year\", count: 50 },\r\n\t * { timeUnit: \"year\", count: 100 }\r\n\t * ]\r\n\t * ```\r\n\t */\r\n\tpublic gridIntervals: List<ITimeInterval> = new List<ITimeInterval>();\r\n\r\n\t/**\r\n\t * A collection of date formats to use when formatting different time units\r\n\t * on Date/time axis.\r\n\t *\r\n\t * Actual defaults will depend on the language locale set for the chart.\r\n\t *\r\n\t * To override format for a specific time unit, say days, you need to set\r\n\t * the appropriate key to a format string. E.g.:\r\n\t *\r\n\t * ```TypeScript\r\n\t * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n\t * ```\r\n\t * ```JavaScript\r\n\t * axis.dateFormats.setKey(\"day\", \"MMMM d, yyyy\");\r\n\t * ```\r\n\t * ```JSON\r\n\t * \"xAxes\": [{\r\n\t * \"type\": \"DateAxis\",\r\n\t * \"dateFormats\": {\r\n\t * \"day\": \"MMMM d, yyyy\"\r\n\t * }\r\n\t * }]\r\n\t * ```\r\n\t *\r\n\t * @see {@link DateFormatter}\r\n\t */\r\n\tpublic dateFormats: Dictionary<TimeUnit, string> = new Dictionary<TimeUnit, string>();\r\n\r\n\t/**\r\n\t * These formats are applied to labels that are first in a larger unit.\r\n\t *\r\n\t * For example, if we have a DateAxis with days on it, the first day of month\r\n\t * indicates a break in month - a start of the bigger period.\r\n\t *\r\n\t * For those labels, `periodChangeDateFormats` are applied instead of\r\n\t * `dateFormats`.\r\n\t *\r\n\t * This allows us implement convenient structures, like instead of:\r\n\t *\r\n\t * `Jan 1 - Jan 2 - Jan 3 - ...`\r\n\t *\r\n\t * We can have:\r\n\t *\r\n\t * `Jan - 1 - 2 - 3 - ...`\r\n\t *\r\n\t * This can be disabled by setting `markUnitChange = false`.\r\n\t */\r\n\tpublic periodChangeDateFormats: Dictionary<TimeUnit, string> = new Dictionary<TimeUnit, string>();\r\n\r\n\t/**\r\n\t * At which intervals grid elements are displayed.\r\n\t */\r\n\tprotected _gridInterval: ITimeInterval;\r\n\r\n\t/**\r\n\t * [_intervalDuration description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _intervalDuration: number;\r\n\r\n\t/**\r\n\t * [_gridDate description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _gridDate: Date;\r\n\r\n\t/**\r\n\t * [_nextGridUnit description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _nextGridUnit: TimeUnit;\r\n\r\n\t/**\r\n\t * User-defined granularity of data.\r\n\t */\r\n\tprotected _baseInterval: ITimeInterval;\r\n\r\n\t/**\r\n\t * Actual interval (granularity) derived from the actual data.\r\n\t */\r\n\tprotected _baseIntervalReal: ITimeInterval = { timeUnit: \"day\", count: 1 };\r\n\r\n\t/**\r\n\t */\r\n\tprotected _prevSeriesTime: number;\r\n\r\n\t/**\r\n\t * [_minDifference description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _minDifference: { [index: string]: number } = {};\r\n\r\n\t/**\r\n\t * A function which applies fills to axis cells.\r\n\t *\r\n\t * Default function fills every second fill. You can set this to a function\r\n\t * that follows some other logic.\r\n\t *\r\n\t * Function should accept a [[DateAxisDataItem]] and modify its `axisFill`\r\n\t * property accordingly.\r\n\t */\r\n\tpublic fillRule(dataItem: this[\"_dataItem\"]): void {\r\n\t\tlet value = dataItem.value;\r\n\t\tlet axis = dataItem.component;\r\n\t\tlet gridInterval = axis._gridInterval;\r\n\t\tlet gridDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n\r\n\t\tif (Math.round((value - axis.min) / gridDuration) / 2 == Math.round(Math.round((value - axis.min) / gridDuration) / 2)) {\r\n\t\t\tdataItem.axisFill.__disabled = true;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tdataItem.axisFill.__disabled = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"DateAxis\";\r\n\r\n\t\tthis.setPropertyValue(\"markUnitChange\", true);\r\n\t\tthis.snapTooltip = true;\r\n\r\n\t\t// Translatable defaults are applied in `applyInternalDefaults()`\r\n\t\t// ...\r\n\r\n\t\t// Define default intervals\r\n\t\tthis.gridIntervals.pushAll([\r\n\t\t\t{ timeUnit: \"millisecond\", count: 1 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 5 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 10 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 50 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 100 },\r\n\t\t\t{ timeUnit: \"millisecond\", count: 500 },\r\n\t\t\t{ timeUnit: \"second\", count: 1 },\r\n\t\t\t{ timeUnit: \"second\", count: 5 },\r\n\t\t\t{ timeUnit: \"second\", count: 10 },\r\n\t\t\t{ timeUnit: \"second\", count: 30 },\r\n\t\t\t{ timeUnit: \"minute\", count: 1 },\r\n\t\t\t{ timeUnit: \"minute\", count: 5 },\r\n\t\t\t{ timeUnit: \"minute\", count: 10 },\r\n\t\t\t{ timeUnit: \"minute\", count: 15 },\r\n\t\t\t{ timeUnit: \"minute\", count: 30 },\r\n\t\t\t{ timeUnit: \"hour\", count: 1 },\r\n\t\t\t{ timeUnit: \"hour\", count: 3 },\r\n\t\t\t{ timeUnit: \"hour\", count: 6 },\r\n\t\t\t{ timeUnit: \"hour\", count: 12 },\r\n\t\t\t{ timeUnit: \"day\", count: 1 },\r\n\t\t\t{ timeUnit: \"day\", count: 2 },\r\n\t\t\t{ timeUnit: \"day\", count: 3 },\r\n\t\t\t{ timeUnit: \"day\", count: 4 },\r\n\t\t\t{ timeUnit: \"day\", count: 5 },\r\n\t\t\t{ timeUnit: \"week\", count: 1 },\r\n\t\t\t{ timeUnit: \"month\", count: 1 },\r\n\t\t\t{ timeUnit: \"month\", count: 2 },\r\n\t\t\t{ timeUnit: \"month\", count: 3 },\r\n\t\t\t{ timeUnit: \"month\", count: 6 },\r\n\t\t\t{ timeUnit: \"year\", count: 1 },\r\n\t\t\t{ timeUnit: \"year\", count: 2 },\r\n\t\t\t{ timeUnit: \"year\", count: 5 },\r\n\t\t\t{ timeUnit: \"year\", count: 10 },\r\n\t\t\t{ timeUnit: \"year\", count: 50 },\r\n\t\t\t{ timeUnit: \"year\", count: 100 },\r\n\t\t\t{ timeUnit: \"year\", count: 200 },\r\n\t\t\t{ timeUnit: \"year\", count: 500 },\r\n\t\t\t{ timeUnit: \"year\", count: 1000 },\r\n\t\t\t{ timeUnit: \"year\", count: 2000 },\r\n\t\t\t{ timeUnit: \"year\", count: 5000 },\r\n\t\t\t{ timeUnit: \"year\", count: 10000 },\r\n\t\t\t{ timeUnit: \"year\", count: 100000 }\r\n\t\t]);\r\n\r\n\t\t// Set field name\r\n\t\tthis.axisFieldName = \"date\";\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\r\n\t\t// Set default date formats\r\n\t\tif (!this.dateFormats.hasKey(\"millisecond\")) {\r\n\t\t\tthis.dateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"second\")) {\r\n\t\t\tthis.dateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"minute\")) {\r\n\t\t\tthis.dateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"hour\")) {\r\n\t\t\tthis.dateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"day\")) {\r\n\t\t\tthis.dateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"week\")) {\r\n\t\t\tthis.dateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\t // not a mistake\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"month\")) {\r\n\t\t\tthis.dateFormats.setKey(\"month\", this.language.translate(\"_date_month\"));\r\n\t\t}\r\n\t\tif (!this.dateFormats.hasKey(\"year\")) {\r\n\t\t\tthis.dateFormats.setKey(\"year\", this.language.translate(\"_date_year\"));\r\n\t\t}\r\n\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"millisecond\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"millisecond\", this.language.translate(\"_date_millisecond\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"second\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"second\", this.language.translate(\"_date_second\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"minute\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"minute\", this.language.translate(\"_date_minute\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"hour\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"hour\", this.language.translate(\"_date_hour\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"day\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"day\", this.language.translate(\"_date_day\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"week\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"week\", this.language.translate(\"_date_day\"));\r\n\t\t}\r\n\t\tif (!this.periodChangeDateFormats.hasKey(\"month\")) {\r\n\t\t\tthis.periodChangeDateFormats.setKey(\"month\", this.language.translate(\"_date_month\") + \" \" + this.language.translate(\"_date_year\"));\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new DateAxisDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n\t *\r\n\t * @return Axis break\r\n\t */\r\n\tprotected createAxisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn new DateAxisBreak();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis' data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataItems(): void {\r\n\t\t// allows to keep selection of the same size\r\n\t\tlet start: number = this.start;\r\n\t\tlet end: number = this.end;\r\n\t\tlet periodCount: number = (this.max - this.min) / this.baseDuration;\r\n\r\n\t\tsuper.validateDataItems();\r\n\r\n\t\tthis.maxZoomFactor = (this.max - this.min) / this.baseDuration;\r\n\r\n\t\tthis._deltaMinMax = this.baseDuration / 2;\r\n\r\n\t\t// allows to keep selection of the same size\r\n\t\tlet newPeriodCount: number = (this.max - this.min) / this.baseDuration;\r\n\t\tstart = start + (end - start) * (1 - periodCount / newPeriodCount);\r\n\t\tthis.zoom({ start: start, end: end }, false, true); // added instantlyto solve zoomout problem when we have axes gaps. @todo: check how this affects maxZoomFactor\r\n\t}\r\n\r\n\t/**\r\n\t * Handles process after zoom.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Does nothing?\r\n\t */\r\n\tpublic handleSelectionExtremesChange(): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Calculates all positions, related to axis as per current zoom.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic calculateZoom(): void {\r\n\t\tsuper.calculateZoom();\r\n\r\n\t\tlet gridInterval: ITimeInterval = this.chooseInterval(0, this.adjustDifference(this._minZoomed, this._maxZoomed), this._gridCount);\r\n\r\n\t\tif ($time.getDuration(gridInterval.timeUnit, gridInterval.count) < this.baseDuration) {\r\n\t\t\tgridInterval = { ...this.baseInterval };\r\n\t\t}\r\n\r\n\t\tthis._gridInterval = gridInterval;\r\n\r\n\t\tthis._gridDate = $time.round(new Date(this.min), gridInterval.timeUnit, gridInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\tthis._nextGridUnit = $time.getNextUnit(gridInterval.timeUnit);\r\n\r\n\t\t// the following is needed to avoid grid flickering while scrolling\r\n\t\tthis._intervalDuration = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n\t\tlet count: number = Math.ceil(this._difference / this._intervalDuration);\r\n\t\tcount = Math.max(-5, Math.floor(this.start * count) - 3); // some extra is needed\r\n\r\n\t\t$time.add(this._gridDate, gridInterval.timeUnit, count * gridInterval.count, this.dateFormatter.utc);\r\n\r\n\t\t// tell series start/end\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (series.baseAxis == this) {\r\n\t\t\t\tlet field = <keyof XYSeriesDataItem>series.getAxisField(this);\r\n\r\n\t\t\t\tlet minZoomed = $time.round(new Date(this._minZoomed), this.baseInterval.timeUnit, this.baseInterval.count).getTime();\r\n\t\t\t\tlet minZoomedStr = minZoomed.toString();\r\n\t\t\t\tlet startDataItem = series.dataItemsByAxis.getKey(this.uid).getKey(minZoomedStr);\r\n\t\t\t\tlet startIndex: number = 0;\r\n\t\t\t\tif (this.start != 0) {\r\n\t\t\t\t\tif (startDataItem) {\r\n\t\t\t\t\t\tstartDataItem = this.findFirst(startDataItem, minZoomed, field);\r\n\t\t\t\t\t\tstartIndex = startDataItem.index;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tstartIndex = series.dataItems.findClosestIndex(this._minZoomed, (x) => <number>x[field], \"left\");\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// 1 millisecond is removed so that if only first item is selected, it would not count in the second.\r\n\t\t\t\tlet baseInterval = this.baseInterval;\r\n\t\t\t\tlet maxZoomed = $time.add($time.round(new Date(this._maxZoomed), baseInterval.timeUnit, baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc), baseInterval.timeUnit, baseInterval.count, this.dateFormatter.utc).getTime();\r\n\r\n\t\t\t\tlet maxZoomedStr = maxZoomed.toString();\r\n\t\t\t\tlet endDataItem = series.dataItemsByAxis.getKey(this.uid).getKey(maxZoomedStr);\r\n\t\t\t\tlet endIndex: number = series.dataItems.length;\r\n\t\t\t\tif (this.end != 1) {\r\n\t\t\t\t\tif (endDataItem) {\r\n\t\t\t\t\t\tendIndex = endDataItem.index;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tmaxZoomed -= 1;\r\n\t\t\t\t\t\tendIndex = series.dataItems.findClosestIndex(maxZoomed, (x) => <number>x[field], \"right\") + 1;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tseries.startIndex = startIndex;\r\n\t\t\t\tseries.endIndex = endIndex;\r\n\r\n\t\t\t\tif(series.dataRangeInvalid){\r\n\t\t\t\t\tseries.validateDataRange();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\tprotected findFirst(dataItem: XYSeriesDataItem, time: number, key: string): XYSeriesDataItem {\r\n\t\tlet index = dataItem.index;\r\n\t\tif (index > 0) {\r\n\t\t\tlet series = dataItem.component;\r\n\t\t\tlet previousDataItem = series.dataItems.getIndex(index - 1);\r\n\t\t\tlet previousDate = (<any>previousDataItem)[key];\r\n\t\t\tif (!previousDate || previousDate.getTime() < time) {\r\n\t\t\t\treturn dataItem;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn this.findFirst(previousDataItem, time, key);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn dataItem;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * (Re)validates data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\tsuper.validateData();\r\n\t\tif (!$type.isNumber(this.baseInterval.count)) {\r\n\t\t\tthis.baseInterval.count = 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic get minDifference(): number {\r\n\t\tlet minDifference = Number.MAX_VALUE;\r\n\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (minDifference > this._minDifference[series.uid]) {\r\n\t\t\t\tminDifference = this._minDifference[series.uid];\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tif (minDifference == Number.MAX_VALUE || minDifference == 0) {\r\n\t\t\tminDifference = $time.getDuration(\"day\");\r\n\t\t}\r\n\r\n\t\treturn minDifference;\r\n\t}\r\n\r\n\t/**\r\n\t * [dataChangeUpdate description]\r\n\t *\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic seriesDataChangeUpdate(series: XYSeries): void {\r\n\t\tthis._minDifference[series.uid] = Number.MAX_VALUE;\r\n\t}\r\n\r\n\t/**\r\n\t * [postProcessSeriesDataItems description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic postProcessSeriesDataItems(): void {\r\n\t\tthis.series.each((series) => {\r\n\t\t\tif (JSON.stringify(series._baseInterval[this.uid]) != JSON.stringify(this.baseInterval)) {\r\n\t\t\t\tseries.dataItems.each((dataItem) => {\r\n\t\t\t\t\tthis.postProcessSeriesDataItem(dataItem);\r\n\t\t\t\t});\r\n\t\t\t\tseries._baseInterval[this.uid] = this.baseInterval;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.addEmptyUnitsBreaks();\r\n\t}\r\n\r\n\t/**\r\n\t * [postProcessSeriesDataItem description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic postProcessSeriesDataItem(dataItem: XYSeriesDataItem): void {\r\n\t\t// we need to do this for all series data items not only added recently, as baseInterval might change\r\n\t\tlet baseInterval: ITimeInterval = this.baseInterval;\r\n\r\n\t\tlet series: XYSeries = dataItem.component;\r\n\t\tlet dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n\r\n\t\t$object.each(dataItem.dates, (key) => {\r\n\t\t\tlet date: Date = dataItem.getDate(key);\r\n\t\t\tlet time = date.getTime();\r\n\r\n\t\t\tlet startDate: Date = $time.round(new Date(time), baseInterval.timeUnit, baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\tlet startTime = startDate.getTime();\r\n\t\t\tlet endDate: Date = $time.add(new Date(startTime), baseInterval.timeUnit, baseInterval.count, this.dateFormatter.utc);\r\n\r\n\t\t\tdataItem.setCalculatedValue(key, startTime, \"open\");\r\n\t\t\tdataItem.setCalculatedValue(key, endDate.getTime(), \"close\");\r\n\r\n\t\t\tdataItemsByAxis.setKey(startTime.toString(), dataItem);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Collapses empty stretches of date/time scale by creating [[AxisBreak]]\r\n\t * elements for them.\r\n\t *\r\n\t * Can be used to automatically remove strethes without data, like weekends.\r\n\t *\r\n\t * No, need to call this manually. It will automatically be done if\r\n\t * `skipEmptyPeriods = true`.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected addEmptyUnitsBreaks(): void {\r\n\r\n\t\tif (this.skipEmptyPeriods && $type.isNumber(this.min) && $type.isNumber(this.max)) {\r\n\t\t\tlet timeUnit: TimeUnit = this.baseInterval.timeUnit;\r\n\t\t\tlet count: number = this.baseInterval.count;\r\n\r\n\t\t\tthis.axisBreaks.clear(); // TODO: what about breaks added by user?\r\n\r\n\t\t\tlet date: Date = $time.round(new Date(this.min), timeUnit, count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\tlet axisBreak: DateAxisBreak;\r\n\r\n\t\t\twhile (date.getTime() < this.max - this.baseDuration) {\r\n\t\t\t\t$time.add(date, timeUnit, count, this.dateFormatter.utc);\r\n\r\n\t\t\t\tlet startTime: number = date.getTime();\r\n\t\t\t\tlet startTimeStr: string = startTime.toString();\r\n\r\n\t\t\t\tlet hasData = $iter.contains(this.series.iterator(), (series) => {\r\n\t\t\t\t\treturn !!series.dataItemsByAxis.getKey(this.uid).getKey(startTimeStr);\r\n\t\t\t\t});\r\n\r\n\t\t\t\t// open break if not yet opened\r\n\t\t\t\tif (!hasData) {\r\n\t\t\t\t\tif (!axisBreak) {\r\n\t\t\t\t\t\taxisBreak = <DateAxisBreak>this.axisBreaks.create();\r\n\t\t\t\t\t\taxisBreak.startDate = new Date(startTime);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// close if already opened\r\n\t\t\t\t\tif (axisBreak) {\r\n\t\t\t\t\t\t// close at end time minus one millisecond\r\n\t\t\t\t\t\taxisBreak.endDate = new Date(startTime - 1);\r\n\t\t\t\t\t\taxisBreak = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates positioning of Axis breaks after something changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic fixAxisBreaks(): void {\r\n\t\tsuper.fixAxisBreaks();\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\t\tif (axisBreaks.length > 0) {\r\n\t\t\t// process breaks\r\n\t\t\taxisBreaks.each((axisBreak) => {\r\n\t\t\t\tlet breakGridCount: number = Math.ceil(this._gridCount * (Math.min(this.end, axisBreak.endPosition) - Math.max(this.start, axisBreak.startPosition)) / (this.end - this.start));\r\n\t\t\t\taxisBreak.gridInterval = this.chooseInterval(0, axisBreak.adjustedEndValue - axisBreak.adjustedStartValue, breakGridCount);\r\n\t\t\t\tlet gridDate = $time.round(new Date(axisBreak.adjustedStartValue), axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\t\tif (gridDate.getTime() > axisBreak.startDate.getTime()) {\r\n\t\t\t\t\t$time.add(gridDate, axisBreak.gridInterval.timeUnit, axisBreak.gridInterval.count, this.dateFormatter.utc);\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxisBreak.gridDate = gridDate;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected getFirstWeekDay(): number {\r\n\t\tif (this.dateFormatter) {\r\n\t\t\treturn this.dateFormatter.firstDayOfWeek;\r\n\t\t}\r\n\r\n\t\treturn 1;\r\n\t}\r\n\r\n\t/**\r\n\t * [getGridDate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param date [description]\r\n\t * @param intervalCount [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getGridDate(date: Date, intervalCount: number): Date {\r\n\t\tlet timeUnit: TimeUnit = this._gridInterval.timeUnit;\r\n\t\tlet realIntervalCount: number = this._gridInterval.count;\r\n\t\t// round date\r\n\t\t$time.round(date, timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tlet prevTimestamp: number = date.getTime();\r\n\r\n\t\tlet newDate: Date = $time.copy(date);\r\n\t\t// modify date by adding intervalcount\r\n\t\tlet timestamp: number = $time.add(newDate, timeUnit, intervalCount, this.dateFormatter.utc).getTime();\r\n\r\n\t\t// if it's axis break, get first rounded date which is not in a break\r\n\t\tlet axisBreak: DateAxisBreak = <DateAxisBreak>this.isInBreak(timestamp);\r\n\t\tif (axisBreak && axisBreak.endDate) {\r\n\t\t\tnewDate = new Date(axisBreak.endDate.getTime());\r\n\t\t\t$time.round(newDate, timeUnit, realIntervalCount, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\tif (newDate.getTime() < axisBreak.endDate.getTime()) {\r\n\t\t\t\t$time.add(newDate, timeUnit, realIntervalCount, this.dateFormatter.utc);\r\n\t\t\t}\r\n\t\t\ttimestamp = newDate.getTime();\r\n\t\t}\r\n\r\n\t\t// get duration between grid lines with break duration removed\r\n\t\tlet durationBreaksRemoved: number = this.adjustDifference(prevTimestamp, timestamp);\r\n\t\t// calculate how many time units fit to this duration\r\n\t\tlet countBreaksRemoved: number = Math.round(durationBreaksRemoved / $time.getDuration(timeUnit));\r\n\r\n\t\t// if less units fit, add one and repeat\r\n\t\tif (countBreaksRemoved < realIntervalCount) {\r\n\t\t\treturn this.getGridDate(date, intervalCount + realIntervalCount);\r\n\t\t}\r\n\r\n\t\treturn newDate;\r\n\t}\r\n\r\n\t/**\r\n\t * [getBreaklessDate description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param axisBreak [description]\r\n\t * @param timeUnit [description]\r\n\t * @param count [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getBreaklessDate(axisBreak: DateAxisBreak, timeUnit: TimeUnit, count: number): Date {\r\n\t\tlet date = new Date(axisBreak.endValue);\r\n\t\t$time.round(date, timeUnit, count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t$time.add(date, timeUnit, count, this.dateFormatter.utc);\r\n\r\n\t\tlet timestamp = date.getTime();\r\n\r\n\t\taxisBreak = <DateAxisBreak>this.isInBreak(timestamp);\r\n\t\tif (axisBreak) {\r\n\t\t\treturn this.getBreaklessDate(axisBreak, timeUnit, count);\r\n\t\t}\r\n\t\treturn date;\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates all Axis elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validateAxisElements(): void {\r\n\t\tif ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n\r\n\t\t\tthis.calculateZoom();\r\n\r\n\t\t\t// first regular items\r\n\t\t\tlet timestamp = this._gridDate.getTime();\r\n\t\t\tlet timeUnit = this._gridInterval.timeUnit;\r\n\t\t\tlet intervalCount = this._gridInterval.count;\r\n\t\t\tlet prevGridDate = $time.copy(this._gridDate);\r\n\r\n\t\t\tlet dataItemsIterator = this._dataItemsIterator;\r\n\t\t\tthis.resetIterators();\r\n\r\n\t\t\twhile (timestamp <= this._maxZoomed) {\r\n\t\t\t\tlet date = this.getGridDate($time.copy(prevGridDate), intervalCount);\r\n\r\n\t\t\t\ttimestamp = date.getTime();\r\n\r\n\t\t\t\tlet endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n\t\t\t\tendDate = $time.add(endDate, timeUnit, intervalCount, this.dateFormatter.utc);\r\n\r\n\t\t\t\tlet format = this.dateFormats.getKey(timeUnit);\r\n\r\n\t\t\t\tif (this.markUnitChange && prevGridDate) {\r\n\t\t\t\t\tif ($time.checkChange(date, prevGridDate, this._nextGridUnit, this.dateFormatter.utc)) {\r\n\t\t\t\t\t\tif (timeUnit !== \"year\") {\r\n\t\t\t\t\t\t\tformat = this.periodChangeDateFormats.getKey(timeUnit);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet text = this.dateFormatter.format(date, format);\r\n\r\n\t\t\t\tlet dataItem = dataItemsIterator.find((x) => x.text === text);\r\n\t\t\t\tif (dataItem.__disabled) {\r\n\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t}\r\n\t\t\t\tthis.appendDataItem(dataItem);\r\n\r\n\t\t\t\tdataItem.axisBreak = undefined;\r\n\t\t\t\tdataItem.date = date;\r\n\t\t\t\tdataItem.endDate = endDate;\r\n\r\n\t\t\t\tdataItem.text = text;\r\n\r\n\t\t\t\tprevGridDate = date;\r\n\r\n\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t}\r\n\r\n\t\t\t// breaks later\r\n\t\t\tlet renderer: AxisRenderer = this.renderer;\r\n\r\n\t\t\t$iter.each(this.axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\t\tif (axisBreak.breakSize > 0) {\r\n\t\t\t\t\tlet timeUnit: TimeUnit = axisBreak.gridInterval.timeUnit;\r\n\t\t\t\t\tlet intervalCount: number = axisBreak.gridInterval.count;\r\n\r\n\t\t\t\t\t// only add grid if gap is bigger then minGridDistance\r\n\t\t\t\t\tif ($math.getDistance(axisBreak.startPoint, axisBreak.endPoint) > renderer.minGridDistance * 4) {\r\n\t\t\t\t\t\tlet timestamp: number = axisBreak.gridDate.getTime();\r\n\r\n\t\t\t\t\t\tlet prevGridDate;\r\n\t\t\t\t\t\tlet count: number = 0;\r\n\t\t\t\t\t\twhile (timestamp <= axisBreak.adjustedMax) {\r\n\t\t\t\t\t\t\tlet date: Date = $time.copy(axisBreak.gridDate);\r\n\t\t\t\t\t\t\ttimestamp = $time.add(date, timeUnit, intervalCount * count, this.dateFormatter.utc).getTime();\r\n\t\t\t\t\t\t\tcount++;\r\n\t\t\t\t\t\t\tif (timestamp > axisBreak.adjustedStartValue && timestamp < axisBreak.adjustedEndValue) {\r\n\t\t\t\t\t\t\t\tlet endDate = $time.copy(date); // you might think it's easier to add intervalduration to timestamp, however it won't work for months or years which are not of the same length\r\n\t\t\t\t\t\t\t\tendDate = $time.add(endDate, timeUnit, intervalCount, this.dateFormatter.utc);\r\n\r\n\t\t\t\t\t\t\t\tlet format: string = this.dateFormats.getKey(timeUnit);\r\n\r\n\t\t\t\t\t\t\t\tif (this.markUnitChange && prevGridDate) {\r\n\t\t\t\t\t\t\t\t\tif ($time.checkChange(date, prevGridDate, this._nextGridUnit, this.dateFormatter.utc)) {\r\n\t\t\t\t\t\t\t\t\t\tif (timeUnit !== \"year\") {\r\n\t\t\t\t\t\t\t\t\t\t\tformat = this.periodChangeDateFormats.getKey(timeUnit);\r\n\t\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t\t\tlet text: string = this.dateFormatter.format(date, format);\r\n\r\n\t\t\t\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = dataItemsIterator.find((x) => x.text === text);\r\n\t\t\t\t\t\t\t\tif (dataItem.__disabled) {\r\n\t\t\t\t\t\t\t\t\tdataItem.__disabled = false;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t//this.processDataItem(dataItem);\r\n\t\t\t\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\t\t\t\tdataItem.axisBreak = axisBreak;\r\n\t\t\t\t\t\t\t\taxisBreak.dataItems.moveValue(dataItem);\r\n\r\n\t\t\t\t\t\t\t\tdataItem.date = date;\r\n\t\t\t\t\t\t\t\tdataItem.endDate = endDate;\r\n\t\t\t\t\t\t\t\tdataItem.text = text;\r\n\t\t\t\t\t\t\t\tprevGridDate = date;\r\n\t\t\t\t\t\t\t\tthis.validateDataElement(dataItem);\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"]): void {\r\n\t\t//super.validateDataElement(dataItem);\r\n\t\tif ($type.isNumber(this.max) && $type.isNumber(this.min)) {\r\n\t\t\tlet renderer: AxisRenderer = this.renderer;\r\n\r\n\t\t\tlet timestamp = dataItem.value;\r\n\t\t\tlet endTimestamp = dataItem.endValue;\r\n\r\n\t\t\tif (!$type.isNumber(endTimestamp)) {\r\n\t\t\t\tendTimestamp = timestamp;\r\n\t\t\t}\r\n\r\n\t\t\tlet position: number = this.valueToPosition(timestamp);\r\n\t\t\tlet endPosition: number = this.valueToPosition(endTimestamp);\r\n\t\t\tlet fillEndPosition = endPosition;\r\n\r\n\t\t\tif (!dataItem.isRange && this._gridInterval.count > this.baseInterval.count) {\r\n\t\t\t\tendPosition = position + (endPosition - position) / (this._gridInterval.count / this.baseInterval.count);\r\n\t\t\t}\r\n\r\n\t\t\tdataItem.position = position;\r\n\r\n\t\t\tlet tick: AxisTick = dataItem.tick;\r\n\t\t\tif (tick && !tick.disabled) {\r\n\t\t\t\trenderer.updateTickElement(tick, position, endPosition);\r\n\t\t\t}\r\n\r\n\t\t\tlet grid: Grid = dataItem.grid;\r\n\t\t\tif (grid && !grid.disabled) {\r\n\t\t\t\trenderer.updateGridElement(grid, position, endPosition);\r\n\t\t\t}\r\n\r\n\t\t\tlet fill: AxisFill = dataItem.axisFill;\r\n\t\t\tif (fill && !fill.disabled) {\r\n\t\t\t\trenderer.updateFillElement(fill, position, fillEndPosition);\r\n\t\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\t\tthis.fillRule(dataItem);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tlet mask: AxisFill = dataItem.mask;\r\n\t\t\tif (mask) {\r\n\t\t\t\trenderer.updateFillElement(mask, position, endPosition);\r\n\t\t\t}\r\n\r\n\t\t\tlet label: AxisLabel = dataItem.label;\r\n\t\t\tif (label && !label.disabled) {\r\n\t\t\t\tlet location = label.location;\r\n\r\n\r\n\r\n\t\t\t\tif (location == 0) {\r\n\t\t\t\t\tif (this._gridInterval.count == 1 && this._gridInterval.timeUnit != \"week\" && !dataItem.isRange) {\r\n\t\t\t\t\t\tlocation = 0.5;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tlocation = 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\trenderer.updateLabelElement(label, position, endPosition, location);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A duration in milliseconds of the `baseInterval`.\r\n\t *\r\n\t * @return Duration (ms)\r\n\t */\r\n\tpublic get baseDuration(): number {\r\n\t\treturn $time.getDuration(this.baseInterval.timeUnit, this.baseInterval.count);\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts min/max values.\r\n\t *\r\n\t * @ignore Exclude from docs.\r\n\t * @todo Description (review)\r\n\t * @param min Min timestamp\r\n\t * @param max Max timestamp\r\n\t * @return Adjusted min/max step\r\n\t */\r\n\tpublic adjustMinMax(min: number, max: number): IMinMaxStep {\r\n\t\treturn { min: min, max: max, step: this.baseDuration };\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts the minimum timestamp as per cell start location.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Adjusted value\r\n\t */\r\n\tprotected fixMin(value: number) {\r\n\r\n\t\t// like this because months are not equal\r\n\t\tlet startTime = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc).getTime();\r\n\t\tlet endTime = $time.add(new Date(startTime), this.baseInterval.timeUnit, this.baseInterval.count, this.dateFormatter.utc).getTime();\r\n\r\n\t\treturn startTime + (endTime - startTime) * this.startLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * Adjusts the maximum timestamp as per cell start location.\r\n\t *\r\n\t * @param value Value\r\n\t * @return Adjusted value\r\n\t */\r\n\tprotected fixMax(value: number) {\r\n\t\t// like this because months are not equal\r\n\t\tlet startTime = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc).getTime();\r\n\t\tlet endTime = $time.add(new Date(startTime), this.baseInterval.timeUnit, this.baseInterval.count, this.dateFormatter.utc).getTime();\r\n\r\n\t\treturn startTime + (endTime - startTime) * this.endLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * [chooseInterval description]\r\n\t *\r\n\t * @ignore Exclude from docs.\r\n\t * @todo Description\r\n\t * @param index [description]\r\n\t * @param duration [description]\r\n\t * @param gridCount [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic chooseInterval(index: number, duration: number, gridCount: number): ITimeInterval {\r\n\t\tlet gridIntervals: List<ITimeInterval> = this.gridIntervals;\r\n\r\n\t\tlet gridInterval: ITimeInterval = gridIntervals.getIndex(index);\r\n\r\n\t\tlet intervalDuration: number = $time.getDuration(gridInterval.timeUnit, gridInterval.count);\r\n\r\n\t\tlet lastIndex: number = gridIntervals.length - 1;\r\n\t\tif (index >= lastIndex) {\r\n\t\t\treturn { ...gridIntervals.getIndex(lastIndex) };\r\n\t\t}\r\n\r\n\t\tlet count: number = Math.ceil(duration / intervalDuration);\r\n\r\n\t\tif (duration < intervalDuration && index > 0) {\r\n\t\t\treturn { ...gridIntervals.getIndex(index - 1) };\r\n\t\t}\r\n\r\n\t\tif (count <= gridCount) {\r\n\t\t\treturn { ...gridIntervals.getIndex(index) };\r\n\t\t} else {\r\n\t\t\tif (index + 1 < gridIntervals.length) {\r\n\t\t\t\treturn this.chooseInterval(index + 1, duration, gridCount);\r\n\t\t\t} else {\r\n\t\t\t\treturn { ...gridIntervals.getIndex(index) };\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Formats the value according to axis' own [[DateFormatter]].\r\n\t *\r\n\t * @param value Source value\r\n\t * @return Formatted value\r\n\t */\r\n\tpublic formatLabel(value: number): string {\r\n\t\treturn this.dateFormatter.format(value);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a Date to an asbolute pixel position within Axis.\r\n\t *\r\n\t * @param date Date\r\n\t * @return Position (px)\r\n\t */\r\n\tpublic dateToPosition(date: Date): number {\r\n\t\treturn this.valueToPosition(date.getTime());\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a numeric timestamp or a `Date` to a relative position on axis.\r\n\t *\r\n\t * @param date Date or a timestamp\r\n\t * @return Relative position\r\n\t */\r\n\tpublic anyToPosition(date: Date | number): number {\r\n\t\tif (date instanceof Date) {\r\n\t\t\treturn this.dateToPosition(date);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.valueToPosition(date);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts date to orientation point (x, y, angle) on axis\r\n\t *\r\n\t * @param date Date\r\n\t * @return IOrientationPoint\r\n\t */\r\n\tpublic dateToPoint(date: Date): IOrientationPoint {\r\n\t\tlet position = this.dateToPosition(date);\r\n\t\tlet point = this.renderer.positionToPoint(position);\r\n\t\tlet angle = this.renderer.positionToAngle(position);\r\n\t\treturn { x: point.x, y: point.y, angle: angle };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a numeric value to orientation (x, y, angle) point on axis\r\n\t *\r\n\t * @param value Value\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic anyToPoint(date: Date | number): IOrientationPoint {\r\n\t\tif (date instanceof Date) {\r\n\t\t\treturn this.dateToPoint(date);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.valueToPoint(date);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts pixel position within Axis to a corresponding Date.\r\n\t *\r\n\t * @param position Position (px)\r\n\t * @return Date\r\n\t */\r\n\tpublic positionToDate(position: number): Date {\r\n\t\treturn new Date(this.positionToValue(position));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the X coordinate for series' data item's value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic getX(dataItem: XYSeriesDataItem, key: string, location?: number): number {\r\n\t\tlet value: number = this.getTimeByLocation(dataItem, key, location);\r\n\t\t//let stack: number = dataItem.getValue(\"valueX\", \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\treturn this.renderer.positionToPoint(this.valueToPosition(value)).x;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the Y coordinate for series' data item's value.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic getY(dataItem: XYSeriesDataItem, key: string, location?: number): number {\r\n\t\tlet value: number = this.getTimeByLocation(dataItem, key, location);\r\n\t\tlet stack: number = dataItem.getValue(\"valueX\", \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\treturn this.renderer.positionToPoint(this.valueToPosition(value + stack)).y;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an angle for series data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Data field to get value from\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack ID\r\n\t * @return Angle\r\n\t */\r\n\tpublic getAngle(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string): number {\r\n\t\tlet value: number = this.getTimeByLocation(dataItem, key, location);\r\n\t\tlet stack: number = dataItem.getValue(stackKey, \"stack\");\r\n\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.baseValue;\r\n\t\t}\r\n\r\n\t\treturn this.positionToAngle(this.valueToPosition(value + stack));\r\n\t}\r\n\r\n\t/**\r\n\t * [getTimeByLocation description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem [description]\r\n\t * @param key [description]\r\n\t * @param location [description]\r\n\t * @return [description]\r\n\t */\r\n\tprotected getTimeByLocation(dataItem: XYSeriesDataItem, key: string, location: number): number {\r\n\t\tif (!$type.hasValue(key)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (!$type.isNumber(location)) {\r\n\t\t\tlocation = dataItem.workingLocations[key];\r\n\r\n\t\t\tif (!$type.isNumber(location)) {\r\n\t\t\t\tlocation = 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet startTime: number = dataItem.values[key][\"open\"];\r\n\t\tlet endTime: number = dataItem.values[key][\"close\"];\r\n\r\n\t\tif ($type.isNumber(startTime) && $type.isNumber(endTime)) {\r\n\t\t\treturn startTime + (endTime - startTime) * location;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes a related series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic processSeriesDataItem(dataItem: XYSeriesDataItem, axisLetter?: string): void {\r\n\r\n\t\tlet series = dataItem.component;\r\n\t\tlet time: number;\r\n\r\n\t\tlet date: Date = (<any>dataItem)[\"date\" + axisLetter];\r\n\t\tif (date) {\r\n\t\t\ttime = date.getTime();\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet openDate: Date = (<any>dataItem)[\"openDate\" + axisLetter];\r\n\t\tlet prevSeriesTime: number = this._prevSeriesTime;\r\n\r\n\r\n\t\tlet openTime: number;\r\n\t\tif (openDate) {\r\n\t\t\topenTime = openDate.getTime();\r\n\t\t}\r\n\r\n\t\tif ($type.isNumber(openTime)) {\r\n\t\t\tlet difference = Math.abs(time - openTime);\r\n\r\n\t\t\tif (this._minDifference[series.uid] > difference) {\r\n\t\t\t\tthis._minDifference[series.uid] = difference;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet differece: number = time - prevSeriesTime;\r\n\r\n\t\tif (differece > 0) {\r\n\t\t\tif (this._minDifference[series.uid] > differece) {\r\n\t\t\t\tthis._minDifference[series.uid] = differece;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._prevSeriesTime = time;\r\n\r\n\t\tif (series._baseInterval[this.uid]) {\r\n\t\t\tthis.postProcessSeriesDataItem(dataItem);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this._baseInterval) {\r\n\t\t\t\tseries._baseInterval[this.uid] = this._baseInterval;\r\n\t\t\t\tthis.postProcessSeriesDataItem(dataItem);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [updateAxisBySeries description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t */\r\n\tpublic updateAxisBySeries() {\r\n\t\tsuper.updateAxisBySeries();\r\n\r\n\t\tlet baseInterval: ITimeInterval = this.chooseInterval(0, this.minDifference, 1);\r\n\t\t// handle short months\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"day\", 27) && baseInterval.timeUnit == \"week\") {\r\n\t\t\tbaseInterval.timeUnit = \"month\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"day\", 29 * 2) && baseInterval.count == 1) {\r\n\t\t\tbaseInterval.count = 2;\r\n\t\t}\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"day\", 29 * 3) && baseInterval.count == 2) {\r\n\t\t\tbaseInterval.count = 3;\r\n\t\t}\t\t\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"day\", 29 * 6) && baseInterval.count == 5) {\r\n\t\t\tbaseInterval.count = 6;\r\n\t\t}\t\t\t\t\r\n\r\n\t\t// handle daylight saving\r\n\t\tif (this.minDifference >= $time.getDuration(\"hour\", 23) && baseInterval.timeUnit == \"hour\") {\r\n\t\t\tbaseInterval.timeUnit = \"day\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"week\", 1) - $time.getDuration(\"hour\", 1) && baseInterval.timeUnit == \"day\") {\r\n\t\t\tbaseInterval.timeUnit = \"week\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tif (this.minDifference >= $time.getDuration(\"year\", 1) - $time.getDuration(\"day\", 1.01) && baseInterval.timeUnit == \"month\") {\r\n\t\t\tbaseInterval.timeUnit = \"year\";\r\n\t\t\tbaseInterval.count = 1;\r\n\t\t}\r\n\r\n\t\tthis._baseIntervalReal = baseInterval;\r\n\t\t// no need to invalidate\r\n\t}\r\n\r\n\t/**\r\n\t * A base interval (granularity) of data.\r\n\t *\r\n\t * Used to indicate what are the base units of your data.\r\n\t *\r\n\t * For example, if you have a data set that has a data point every 5 minutes,\r\n\t * you may want to set this to `{ timeUnit: \"minute\", count: 5 }`.\r\n\t *\r\n\t * If not set, the Axis will try to determine the setting by its own, looking\r\n\t * at actual data.\r\n\t *\r\n\t * @param timeInterval base interval\r\n\t */\r\n\tpublic set baseInterval(timeInterval: ITimeInterval) {\r\n\t\tif (JSON.stringify(this._baseInterval) != JSON.stringify(timeInterval)) {\r\n\t\t\tthis._baseInterval = timeInterval;\r\n\t\t\tif(!$type.isNumber(timeInterval.count)){\r\n\t\t\t\ttimeInterval.count = 1;\r\n\t\t\t}\r\n\t\t\tthis.invalidate();\r\n\t\t\tthis.postProcessSeriesDataItems();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Base interval\r\n\t */\r\n\tpublic get baseInterval(): ITimeInterval {\r\n\t\tif (this._baseInterval) {\r\n\t\t\treturn this._baseInterval;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this._baseIntervalReal;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * If enabled, axis will automatically collapse empty (without data points)\r\n\t * periods of time, i.e. weekends.\r\n\t *\r\n\t * An \"empty\" period is considered a stretch of time in the length of current\r\n\t * `baseInterval` without a single data point in it.\r\n\t *\r\n\t * For each such empty period, axis will automatically create an\r\n\t * [[AxisBreak]]. By default they will be invisible. You can still configure\r\n\t * them by accessing `axis.breaks.template`.\r\n\t *\r\n\t * [More info about breaks](https://www.amcharts.com/docs/v4/concepts/axes/#Breaks).\r\n\t *\r\n\t * Important notes:\r\n\t * * If you set this property to `true`, you can not add your custom axis breaks to this axis anymore.\r\n\t * * Using this feature affects performance. Use only if you need it.\r\n\t * * Setting this to `true` will reset appearance of breaks. If you want to modify appearance, do it *after* you set `skipEmptyPeriods`.\r\n\t *\r\n\t * @default false\r\n\t * @param value Remove empty stretches of time?\r\n\t */\r\n\tpublic set skipEmptyPeriods(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"skipEmptyPeriods\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\r\n\t\tif (value) {\r\n\t\t\tlet breakTemplate = this.axisBreaks.template;\r\n\t\t\tbreakTemplate.startLine.disabled = true;\r\n\t\t\tbreakTemplate.endLine.disabled = true;\r\n\t\t\tbreakTemplate.fillShape.disabled = true;\r\n\t\t\tbreakTemplate.breakSize = 0;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Remove empty stretches of time?\r\n\t */\r\n\tpublic get skipEmptyPeriods(): boolean {\r\n\t\treturn this.getPropertyValue(\"skipEmptyPeriods\");\r\n\t}\r\n\r\n\t/**\r\n\t * A special date format to apply axis tooltips.\r\n\t *\r\n\t * Will use same format as for labels, if not set.\r\n\t *\r\n\t * @param value Date format\r\n\t */\r\n\tpublic set tooltipDateFormat(value: string) {\r\n\t\tthis.setPropertyValue(\"tooltipDateFormat\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date format\r\n\t */\r\n\tpublic get tooltipDateFormat(): string {\r\n\t\treturn this.getPropertyValue(\"tooltipDateFormat\");\r\n\t}\r\n\r\n\t/**\r\n\t * Use `periodChangeDateFormats` to apply different formats to the first\r\n\t * label in bigger time unit.\r\n\t *\r\n\t * @default true\r\n\t * @param value Use different format for period beginning?\r\n\t */\r\n\tpublic set markUnitChange(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"markUnitChange\", value)) {\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use different format for period beginning?\r\n\t */\r\n\tpublic get markUnitChange(): boolean {\r\n\t\treturn this.getPropertyValue(\"markUnitChange\");\r\n\t}\r\n\r\n\t/**\r\n\t * Returns text to show in a tooltip, based on specific relative position\r\n\t * within axis.\r\n\t *\r\n\t * The label will be formatted as per [[DateFormatter]] set for the whole\r\n\t * chart, or explicitly for this Axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Position\r\n\t * @return Label (formatted date)\r\n\t */\r\n\tpublic getTooltipText(position: number): string {\r\n\t\tlet text: string;\r\n\t\tlet date = this.positionToDate(position);\r\n\t\tdate = $time.round(date, this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tif ($type.hasValue(this.tooltipDateFormat)) {\r\n\t\t\ttext = this.dateFormatter.format(date, this.tooltipDateFormat);\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet dateFormat = this.dateFormats.getKey(this.baseInterval.timeUnit);\r\n\t\t\tif (dateFormat) {\r\n\t\t\t\ttext = this.dateFormatter.format(date, dateFormat);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\ttext = this.getPositionLabel(position);\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.adapter.apply(\"getTooltipText\", text);\r\n\t}\r\n\r\n\t/**\r\n\t * Takes an absolute position within axis and adjust it to a specific position within base interval. (cell)\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Source position\r\n\t * @param location Location in the cell\r\n\t * @return Adjusted position\r\n\t */\r\n\tpublic roundPosition(position: number, location?: AxisItemLocation): number {\r\n\t\tlet baseInterval = this.baseInterval;\r\n\t\tlet timeUnit = baseInterval.timeUnit;\r\n\t\tlet count = baseInterval.count;\r\n\r\n\t\tlet date: Date = this.positionToDate(position);\r\n\r\n\t\t$time.round(date, timeUnit, count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tif (location > 0) {\r\n\t\t\t$time.add(date, timeUnit, location * count, this.dateFormatter.utc);\r\n\t\t}\r\n\r\n\t\tif (this.isInBreak(date.getTime())) {\r\n\t\t\twhile (date.getTime() < this.max) {\r\n\t\t\t\t$time.add(date, timeUnit, count, this.dateFormatter.utc);\r\n\t\t\t\tif (!this.isInBreak(date.getTime())) {\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\treturn this.dateToPosition(date);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an relative position of the start of the cell (period), that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Relative position\r\n\t * @return Cell start relative position\r\n\t */\r\n\tpublic getCellStartPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an relative position of the end of the cell (period), that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Relative position\r\n\t * @return Cell end relative position\r\n\t */\r\n\tpublic getCellEndPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 1);\r\n\t\t//return this.dateToPosition($time.add(this.positionToDate(this.roundPosition(position, 1)), this.baseInterval.timeUnit, this.baseInterval.count));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a Series data item that corresponds to the specific pixel position\r\n\t * of the Axis.\r\n\t *\r\n\t * If `findNearest` (third parameter) is set to `true`, the method will try\r\n\t * to locate nearest available data item if none is found directly under\r\n\t * `position`.\r\n\t *\r\n\t * @param series Series\r\n\t * @param position Position (px)\r\n\t * @param findNearest Should axis try to find nearest tooltip if there is no data item at exact position\r\n\t * @return Data item\r\n\t */\r\n\tpublic getSeriesDataItem(series: XYSeries, position: number, findNearest?: boolean): XYSeriesDataItem {\r\n\r\n\t\tlet value: number = this.positionToValue(position);\r\n\t\tlet date: Date = $time.round(new Date(value), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\tlet dataItemsByAxis = series.dataItemsByAxis.getKey(this.uid);\r\n\r\n\t\tlet dataItem = dataItemsByAxis.getKey(date.getTime().toString());\r\n\r\n\t\t// todo: alternatively we can find closiest here\r\n\t\tif (!dataItem && findNearest) {\r\n\r\n\t\t\tlet key: \"dateX\" | \"dateY\";\r\n\r\n\t\t\tif (this.axisLetter == \"Y\") {\r\n\t\t\t\tkey = \"dateY\";\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tkey = \"dateX\";\r\n\t\t\t}\r\n\r\n\t\t\tdataItem = series.dataItems.getIndex(series.dataItems.findClosestIndex(date.getTime(), (x) => {\r\n\t\t\t\tif (x[key]) {\r\n\t\t\t\t\treturn <number>x[key].getTime();\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\treturn -Infinity;\r\n\t\t\t\t}\r\n\t\t\t}, \"any\"));\r\n\t\t}\r\n\r\n\t\treturn dataItem;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a formatted date based on position in axis scale.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic getPositionLabel(position: number): string {\r\n\t\t// @todo Better format recognition\r\n\t\tlet date = this.positionToDate(position);\r\n\t\treturn this.dateFormatter.format(date, this.getCurrentLabelFormat());\r\n\t}\r\n\r\n\t/**\r\n\t * Returns label date format based on currently used time units\r\n\t *\r\n\t * @return Format\r\n\t */\r\n\tprotected getCurrentLabelFormat(): string {\r\n\t\treturn this.dateFormats.getKey(this._gridInterval ? this._gridInterval.timeUnit : \"day\");\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes an Axis renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic initRenderer(): void {\r\n\t\tsuper.initRenderer();\r\n\t\tlet renderer = this.renderer;\r\n\t\tif (renderer) {\r\n\t\t\t// Set defaults\r\n\t\t\trenderer.ticks.template.location = 0;\r\n\t\t\trenderer.grid.template.location = 0;\r\n\t\t\trenderer.labels.template.location = 0;\r\n\t\t\trenderer.baseGrid.disabled = true;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Coordinates of the actual axis start.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Base point\r\n\t */\r\n\tpublic get basePoint(): IPoint {\r\n\t\treturn { x: 0, y: 0 };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Zooms axis to specific Dates.\r\n\t *\r\n\t * @param startDate Start date\r\n\t * @param endValue End date\r\n\t * @param skipRangeEvent Do not invoke events\r\n\t * @param instantly Do not play zoom animations\r\n\t */\r\n\tpublic zoomToDates(startDate: Date, endDate: Date, skipRangeEvent?: boolean, instantly?: boolean): void {\r\n\t\tstartDate = this.dateFormatter.parse(startDate);\r\n\t\tendDate = this.dateFormatter.parse(endDate);\r\n\t\tthis.zoomToValues(startDate.getTime(), endDate.getTime(), skipRangeEvent, instantly);\r\n\t}\r\n\r\n\t/**\r\n\t * Adds `baseInterval` to \"as is\" fields.\r\n\t *\r\n\t * @param field Field name\r\n\t * @return Assign as is?\r\n\t */\r\n\tprotected asIs(field: string): boolean {\r\n\t\treturn field == \"baseInterval\" || super.asIs(field);\r\n\t}\r\n\r\n\t/**\r\n\t * Copies all properties and related data from a different instance of Axis.\r\n\t *\r\n\t * @param source Source Axis\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\t\tthis.dateFormats = source.dateFormats;\r\n\t\tthis.periodChangeDateFormats = source.periodChangeDateFormats;\r\n\t\tif (source[\"_baseInterval\"]) {\r\n\t\t\tthis.baseInterval = source.baseInterval;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows Axis tooltip at specific relative position within Axis. (0-1)\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @param local or global position\r\n\t */\r\n\tpublic showTooltipAtPosition(position: number, local?: boolean) {\r\n\r\n\t\tif (!local) {\r\n\t\t\tposition = this.toAxisPosition(position);\r\n\t\t}\r\n\r\n\t\tif (this.snapTooltip) {\r\n\t\t\tlet actualDate = $time.round(this.positionToDate(position), this.baseInterval.timeUnit, 1, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\r\n\t\t\tlet actualTime = actualDate.getTime();\r\n\t\t\tlet closestDate: Date;\r\n\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tif (series.baseAxis == this) {\r\n\t\t\t\t\tlet dataItem = this.getSeriesDataItem(series, position, true);\r\n\r\n\t\t\t\t\tif (dataItem) {\r\n\t\t\t\t\t\tlet date: Date;\r\n\t\t\t\t\t\tif (series.xAxis == this) {\r\n\t\t\t\t\t\t\tdate = dataItem.dateX;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tif (series.yAxis == this) {\r\n\t\t\t\t\t\t\tdate = dataItem.dateY;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (!closestDate) {\r\n\t\t\t\t\t\t\tclosestDate = date;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (Math.abs(closestDate.getTime() - actualTime) > Math.abs(date.getTime() - actualTime)) {\r\n\t\t\t\t\t\t\t\tclosestDate = date;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t})\r\n\r\n\t\t\tif (closestDate) {\r\n\t\t\t\tlet closestTime = closestDate.getTime();\r\n\t\t\t\tclosestDate = $time.round(new Date(closestTime), this.baseInterval.timeUnit, this.baseInterval.count, this.getFirstWeekDay(), this.dateFormatter.utc);\r\n\t\t\t\tclosestTime = closestDate.getTime();\r\n\t\t\t\tclosestDate = new Date(closestDate.getTime() + this.baseDuration * this.renderer.tooltipLocation);\r\n\t\t\t\tposition = this.dateToPosition(closestDate);\r\n\r\n\t\t\t\tthis.series.each((series) => {\r\n\r\n\t\t\t\t\tlet dataItem = series.dataItemsByAxis.getKey(this.uid).getKey(closestTime.toString());\r\n\t\t\t\t\tlet point = series.showTooltipAtDataItem(dataItem);\r\n\t\t\t\t\tif (point) {\r\n\t\t\t\t\t\tthis.chart._seriesPoints.push({ series: series, point: point });\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\t// check, otherwise column tooltip will be hidden\r\n\t\t\t\t\t\tif (series.tooltipText || series.tooltipHTML) {\r\n\t\t\t\t\t\t\tseries.hideTooltip();\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\r\n\t\t\t\t//this.chart.sortSeriesTooltips(seriesPoints);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.showTooltipAtPosition(position, true);\r\n\t}\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position.\r\n\t *\r\n\t * @default true\r\n\t * @param value Should snap?\r\n\t */\r\n\tpublic set snapTooltip(value: boolean) {\r\n\t\tthis.setPropertyValue(\"snapTooltip\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should snap?\r\n\t */\r\n\tpublic get snapTooltip(): boolean {\r\n\t\treturn this.getPropertyValue(\"snapTooltip\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Current grid interval.\r\n\t *\r\n\t * @return Grid interval\r\n\t */\r\n\tpublic get gridInterval(): ITimeInterval {\r\n\t\treturn this._gridInterval;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic makeGap(dataItem: LineSeriesDataItem, previous: LineSeriesDataItem): boolean {\r\n\t\tlet series = dataItem.component;\r\n\t\tif (dataItem && previous) {\r\n\t\t\tif (!series.connect && $type.isNumber(series.autoGapCount)) {\r\n\t\t\t\tif (series.baseAxis == this) {\r\n\t\t\t\t\tlet time = dataItem.dates[\"date\" + this.axisLetter].getTime();\r\n\t\t\t\t\tlet prevTime = previous.dates[\"date\" + this.axisLetter].getTime();\r\n\r\n\t\t\t\t\tif (time - prevTime > series.autoGapCount * this.baseDuration) {\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"DateAxis\"] = DateAxis;\r\nregistry.registeredClasses[\"DateAxisDataItem\"] = DateAxisDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/DateAxis.ts","/**\r\n * A module which defines functionality related to Category Axis Break.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\nimport { AxisBreak, IAxisBreakProperties, IAxisBreakAdapters, IAxisBreakEvents } from \"./AxisBreak\";\r\nimport { CategoryAxis } from \"./CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[CategoryAxisBreak]].\r\n */\r\nexport interface ICategoryAxisBreakProperties extends IAxisBreakProperties {\r\n\r\n\t/**\r\n\t * Category break starts on.\r\n\t */\r\n\tstartCategory?: string;\r\n\r\n\t/**\r\n\t * Category break ends on.\r\n\t */\r\n\tendCategory?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[CategoryAxisBreak]].\r\n */\r\nexport interface ICategoryAxisBreakEvents extends IAxisBreakEvents { }\r\n\r\n/**\r\n * Defines adapters for [[CategoryAxisBreak]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICategoryAxisBreakAdapters extends IAxisBreakAdapters, ICategoryAxisBreakProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Base class to define \"breaks\" in axes\r\n * @see {@link ICategoryAxisBreakEvents} for a list of available events\r\n * @see {@link ICategoryAxisBreakAdapters} for a list of available Adapters\r\n */\r\nexport class CategoryAxisBreak extends AxisBreak {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICategoryAxisBreakProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICategoryAxisBreakAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICategoryAxisBreakEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Axis this break is used for.\r\n\t */\r\n\tpublic _axisType: CategoryAxis;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CategoryAxisBreak\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Pixel position of the break's start.\r\n\t *\r\n\t * @return Position (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get startPosition(): number {\r\n\t\tif (this.axis) {\r\n\t\t\treturn this.axis.indexToPosition(this.adjustedStartValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Pixel position of the break's end.\r\n\t *\r\n\t * @return Position (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get endPosition(): number {\r\n\t\tif (this.axis) {\r\n\t\t\treturn this.axis.indexToPosition(this.adjustedEndValue);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A category break starts on.\r\n\t *\r\n\t * @param value Start category\r\n\t */\r\n\tpublic set startCategory(value: string) {\r\n\t\tif (this.setPropertyValue(\"startCategory\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Start category\r\n\t */\r\n\tpublic get startCategory(): string {\r\n\t\treturn this.getPropertyValue(\"startCategory\");\r\n\t}\r\n\r\n\t/**\r\n\t * A category break ends on.\r\n\t *\r\n\t * @param value End category\r\n\t */\r\n\tpublic set endCategory(value: string) {\r\n\t\tif (this.setPropertyValue(\"endCategory\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return End category\r\n\t */\r\n\tpublic get endCategory(): string {\r\n\t\treturn this.getPropertyValue(\"endCategory\");\r\n\t}\r\n\r\n\t/**\r\n\t * An index of start category.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set startValue(value: number) {\r\n\t\tif (this.setPropertyValue(\"startValue\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get startValue(): number {\r\n\t\tlet category: string = this.getPropertyValue(\"startCategory\");\r\n\t\tif (category) {\r\n\t\t\treturn this.axis.categoryToIndex(category);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.getPropertyValue(\"startValue\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * An index of end category or a end value.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set endValue(value: number) {\r\n\t\tif (this.setPropertyValue(\"endValue\", value)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidateDataItems();\r\n\t\t\t\tthis.axis.invalidateSeries();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get endValue(): number {\r\n\t\tlet category: string = this.getPropertyValue(\"endCategory\");\r\n\t\tif (category) {\r\n\t\t\treturn this.axis.categoryToIndex(category);\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.getPropertyValue(\"endValue\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxisBreak\"] = CategoryAxisBreak;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/CategoryAxisBreak.ts","/**\r\n * Category axis module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Axis, AxisItemLocation, AxisDataItem, IAxisProperties, IAxisDataFields, IAxisAdapters, IAxisEvents, IAxisDataItemAdapters } from \"./Axis\";\r\nimport { IPoint, IOrientationPoint } from \"../../core/defs/IPoint\";\r\nimport { AxisFill } from \"./AxisFill\";\r\nimport { AxisRenderer } from \"./AxisRenderer\";\r\nimport { SerialChart } from \"../types/SerialChart\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { Grid } from \"./Grid\";\r\nimport { AxisLabel } from \"./AxisLabel\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { XYSeries, XYSeriesDataItem } from \"../series/XYSeries\";\r\nimport { CategoryAxisBreak } from \"./CategoryAxisBreak\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport { Adapter } from \"../../core/utils/Adapter\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[CategoryAxis]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class CategoryAxisDataItem extends AxisDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: CategoryAxis;\r\n\r\n\t/**\r\n\t * Holds Adapter.\r\n\t */\r\n\tpublic adapter = new Adapter<CategoryAxisDataItem, ICategoryAxisDataItemAdapters>(this);\r\n\r\n\tpublic seriesDataItems: { [index: string]: XYSeriesDataItem[] } = {};\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"CategoryAxisDataItem\";\r\n\t\tthis.text = \"{category}\";\r\n\r\n\t\tthis.locations.category = 0;\r\n\t\tthis.locations.endCategory = 1;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Category.\r\n\t *\r\n\t * @param value Category\r\n\t */\r\n\tpublic set category(value: string) {\r\n\t\tthis.setProperty(\"category\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get category(): string {\r\n\t\tif (this.adapter.isEnabled(\"category\")) {\r\n\t\t\treturn this.adapter.apply(\"category\", this.properties.category);\r\n\t\t}\r\n\t\treturn this.properties.category;\r\n\t}\r\n\r\n\t/**\r\n\t * End category.\r\n\t *\r\n\t * Used for items that span several categories, like [[CategoryAxisBreak]].\r\n\t *\r\n\t * @param value End category\r\n\t */\r\n\tpublic set endCategory(value: string) {\r\n\t\tthis.setProperty(\"endCategory\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return End category\r\n\t */\r\n\tpublic get endCategory(): string {\r\n\t\treturn this.properties.endCategory;\r\n\t}\r\n}\r\n\r\n/**\r\n * Defines adapters for [[DataItem]]\r\n * Includes both the [[Adapter]] definitions and properties\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICategoryAxisDataItemAdapters extends IAxisDataItemAdapters {\r\n\tcategory: string;\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[CategoryAxis]].\r\n */\r\nexport interface ICategoryAxisDataFields extends IAxisDataFields {\r\n\r\n\t/**\r\n\t * A field that holds category information.\r\n\t */\r\n\tcategory?: string;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[CategoryAxis]].\r\n */\r\nexport interface ICategoryAxisProperties extends IAxisProperties { }\r\n\r\n/**\r\n * Defines events for [[CategoryAxis]].\r\n */\r\nexport interface ICategoryAxisEvents extends IAxisEvents { }\r\n\r\n/**\r\n * Defines adapter for [[CategoryAxis]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICategoryAxisAdapters extends IAxisAdapters, ICategoryAxisProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Used to create a category-based axis for the chart.\r\n *\r\n * ```TypeScript\r\n * // Create the axis\r\n * let xAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * xAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JavaScript\r\n * // Create the axis\r\n * var valueAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n *\r\n * // Set settings\r\n * valueAxis.title.text = \"Clients\";\r\n * ```\r\n * ```JSON\r\n * \"xAxes\": [{\r\n * \"type\": \"CategoryAxis\",\r\n * \"title\": {\r\n * \"text\": \"Clients\"\r\n * }\r\n * }]\r\n * ```\r\n *\r\n * @see {@link ICategoryAxisEvents} for a list of available Events\r\n * @see {@link ICategoryAxisAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class CategoryAxis<T extends AxisRenderer = AxisRenderer> extends Axis<T> {\r\n\r\n\t/**\r\n\t * Defines data fields.\r\n\t */\r\n\tpublic _dataFields: ICategoryAxisDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICategoryAxisProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICategoryAxisAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICategoryAxisEvents;\r\n\r\n\t/**\r\n\t * Defines the type of the Date Items.\r\n\t */\r\n\tpublic _dataItem: CategoryAxisDataItem;\r\n\r\n\t/**\r\n\t * Defines the type of the axis breaks.\r\n\t */\r\n\tpublic _axisBreak: CategoryAxisBreak;\r\n\r\n\t/**\r\n\t * A reference to chart the axis is for.\r\n\t */\r\n\tpublic chart: SerialChart;\r\n\r\n\t/**\r\n\t * Frequency of the labels on axis.\r\n\t */\r\n\tprotected _frequency: number;\r\n\r\n\t/**\r\n\t * A collection that holds Axis' data items sorted by each category.\r\n\t */\r\n\tpublic dataItemsByCategory: Dictionary<string, this[\"_dataItem\"]> = new Dictionary<string, this[\"_dataItem\"]>();\r\n\r\n\t/**\r\n\t * last data item is used for the closing grid\r\n\t */\r\n\tprotected _lastDataItem: CategoryAxisDataItem;\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"CategoryAxis\";\r\n\r\n\t\t// Set field name\r\n\t\tthis.axisFieldName = \"category\";\r\n\r\n\t\tthis._lastDataItem = this.createDataItem();\r\n\t\tthis._lastDataItem.component = this;\r\n\t\tthis._disposers.push(this._lastDataItem);\r\n\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[DataItem]] of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new CategoryAxisDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty [[AxisBreak]] of the appropriate type.\r\n\t *\r\n\t * @return Axis break\r\n\t */\r\n\tprotected createAxisBreak(): this[\"_axisBreak\"] {\r\n\t\treturn new CategoryAxisBreak();\r\n\t}\r\n\r\n\t/**\r\n\t * Processes a related series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic processSeriesDataItem(dataItem: XYSeriesDataItem, axisLetter?: string): void {\r\n\t\tsuper.processSeriesDataItem(dataItem, axisLetter);\r\n\t\tlet category: string = (<any>dataItem)[\"category\" + this.axisLetter];\r\n\r\n\t\tlet categoryAxisDataItem: this[\"_dataItem\"] = this.dataItemsByCategory.getKey(category);\r\n\t\tif (categoryAxisDataItem) {\r\n\t\t\tlet seriesId = dataItem.component.uid;\r\n\t\t\tlet seriesDataItems = categoryAxisDataItem.seriesDataItems[seriesId];\r\n\t\t\tif (!seriesDataItems) {\r\n\t\t\t\tseriesDataItems = [];\r\n\t\t\t\tcategoryAxisDataItem.seriesDataItems[seriesId] = seriesDataItems;\r\n\t\t\t}\r\n\t\t\tseriesDataItems.push(dataItem);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the data range.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validateDataRange(): void {\r\n\r\n\t\tsuper.validateDataRange();\r\n\r\n\t\t$iter.each(this._series.iterator(), (series) => {\r\n\t\t\tif ((series.xAxis instanceof CategoryAxis) && (series.yAxis instanceof CategoryAxis)) {\r\n\t\t\t\tseries.invalidateDataRange();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet startIndex = this.positionToIndex(this.start);\r\n\t\t\t\tlet endIndex = this.positionToIndex(this.end);\r\n\r\n\t\t\t\tif (endIndex >= this.dataItems.length) {\r\n\t\t\t\t\tendIndex--;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet seriesId = series.uid;\r\n\t\t\t\tlet minIndex: number;\r\n\t\t\t\tlet maxIndex: number;\r\n\r\n\t\t\t\tfor (let i = startIndex; i <= endIndex; i++) {\r\n\t\t\t\t\tlet axisDataItem = this.dataItems.getIndex(i);\r\n\t\t\t\t\tif (axisDataItem) {\r\n\t\t\t\t\t\tlet seriesDataItems = axisDataItem.seriesDataItems[seriesId];\r\n\r\n\t\t\t\t\t\tif (seriesDataItems) {\r\n\t\t\t\t\t\t\tfor (let i = 0; i < seriesDataItems.length; i++) {\r\n\t\t\t\t\t\t\t\tlet seriesDataItem = seriesDataItems[i];\r\n\t\t\t\t\t\t\t\tif (seriesDataItem) {\r\n\t\t\t\t\t\t\t\t\tlet index = seriesDataItem.index;\r\n\t\t\t\t\t\t\t\t\tif (!$type.isNumber(minIndex) || index < minIndex) {\r\n\t\t\t\t\t\t\t\t\t\tminIndex = index;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t\tif (!$type.isNumber(maxIndex) || index > maxIndex) {\r\n\t\t\t\t\t\t\t\t\t\tmaxIndex = index;\r\n\t\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif ($type.isNumber(minIndex)) {\r\n\t\t\t\t\tseries.startIndex = minIndex;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tseries.start = this.start;\r\n\t\t\t\t}\r\n\t\t\t\tif ($type.isNumber(maxIndex)) {\r\n\t\t\t\t\tseries.endIndex = maxIndex + 1;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tseries.end = this.end;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// range might not change, but axis breaks might.\r\n\t\t\t\tif (this.axisBreaks.length > 0) {\r\n\t\t\t\t\tseries.invalidateDataRange();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Validates the whole axis. Causes it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic validate(): void {\r\n\r\n\t\tsuper.validate();\r\n\r\n\t\tlet dataCount: number = this.dataItems.length;\r\n\r\n\t\tlet startIndex = $math.fitToRange(Math.floor(this.start * dataCount - 1), 0, dataCount);\r\n\t\tlet endIndex = $math.fitToRange(Math.ceil(this.end * dataCount), 0, dataCount);\r\n\r\n\t\tif (this.renderer.invalid) {\r\n\t\t\tthis.renderer.validate();\r\n\t\t}\r\n\r\n\t\t// find frequency at which we'll show items\r\n\t\tlet maxCount: number = this.renderer.axisLength / this.renderer.minGridDistance;\r\n\t\tlet frequency: number = Math.min(this.dataItems.length, Math.ceil((endIndex - startIndex) / maxCount));\r\n\r\n\t\tthis._startIndex = Math.floor(startIndex / frequency) * frequency;\r\n\t\tthis._endIndex = Math.ceil(this.end * dataCount);\r\n\r\n\t\tthis.fixAxisBreaks();\r\n\r\n\t\tif (this._startIndex == this._endIndex) {\r\n\t\t\tthis._endIndex++;\r\n\t\t}\r\n\r\n\t\tthis._frequency = frequency;\r\n\r\n\t\tif (this.axisLength <= 0) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tthis.maxZoomFactor = this.dataItems.length;\r\n\t\tif (this.dataItems.length <= 0) {\r\n\t\t\tthis.maxZoomFactor = 1;\r\n\t\t}\r\n\r\n\t\tthis.resetIterators();\r\n\r\n\t\t// it's important to use protected variables here, as getters will return 0 - length\r\n\t\t// TODO use iterator instead\r\n\t\t// @ todo: not solved cat axis item fading\r\n\t\tstartIndex = $math.max(0, this._startIndex - this._frequency);\r\n\t\tendIndex = $math.min(this.dataItems.length, this._endIndex + this._frequency);\r\n\r\n\t\tlet itemIndex = 0;\r\n\r\n\t\tfor (let i = 0; i < startIndex; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t}\r\n\r\n\t\tfor (let i = endIndex, len = this.dataItems.length; i < len; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.__disabled = true;\r\n\t\t}\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tif (i < this.dataItems.length) {\r\n\t\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(i);\r\n\t\t\t\tif (i / this._frequency == Math.round(i / this._frequency)) {\r\n\t\t\t\t\tlet axisBreak: CategoryAxisBreak = this.isInBreak(i);\r\n\t\t\t\t\tif (!axisBreak) {\r\n\t\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\t\tthis.validateDataElement(dataItem, itemIndex);\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\titemIndex++;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t//previously we disabled all before, but this is better for cpu\r\n\t\t\t\t\t//this.validateDataElement(dataItem, itemIndex); // helps to solve shrinking // not good - creates all items\r\n\t\t\t\t\tdataItem.__disabled = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.appendDataItem(this._lastDataItem);\r\n\t\tthis.validateDataElement(this._lastDataItem, itemIndex + 1, this.dataItems.length);\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\r\n\t\taxisBreaks.each((axisBreak) => {\r\n\t\t\tlet adjustedStartValue: number = axisBreak.adjustedStartValue;\r\n\t\t\tlet adjustedEndValue: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\tif ($math.intersect({ start: adjustedStartValue, end: adjustedEndValue }, { start: this._startIndex, end: this._endIndex })) {\r\n\r\n\t\t\t\tlet frequency: number = $math.fitToRange(Math.ceil(this._frequency / axisBreak.breakSize), 1, adjustedEndValue - adjustedStartValue);\r\n\t\t\t\tlet itemIndex = 0;\r\n\t\t\t\t// TODO use iterator instead\r\n\t\t\t\tfor (let b = adjustedStartValue; b <= adjustedEndValue; b = b + frequency) {\r\n\t\t\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(b);\r\n\t\t\t\t\tthis.appendDataItem(dataItem);\r\n\t\t\t\t\tthis.validateDataElement(dataItem, itemIndex);\r\n\t\t\t\t\titemIndex++;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tthis.validateBreaks();\r\n\t\tthis.validateAxisRanges();\r\n\r\n\t\tthis.ghostLabel.invalidate(); // solves font issue\r\n\t\tthis.renderer.invalidateLayout();\r\n\t}\r\n\r\n\t/**\r\n\t * [validateDataElement description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem [description]\r\n\t * @param itemIndex [description]\r\n\t */\r\n\tpublic validateDataElement(dataItem: this[\"_dataItem\"], itemIndex?: number, index?: number): void {\r\n\t\tsuper.validateDataElement(dataItem);\r\n\r\n\t\t//dataItem.__disabled = false;\r\n\r\n\t\tlet renderer: AxisRenderer = this.renderer;\r\n\t\tif (!$type.isNumber(index)) {\r\n\t\t\tindex = this.categoryToIndex(dataItem.category);\r\n\t\t}\r\n\r\n\t\tlet endIndex = this.categoryToIndex(dataItem.endCategory);\r\n\r\n\t\tif (!$type.isNumber(endIndex)) {\r\n\t\t\tendIndex = index;\r\n\t\t}\r\n\r\n\t\tlet position: number = this.indexToPosition(index, dataItem.locations.category);\r\n\t\tlet endPosition: number = this.indexToPosition(endIndex, dataItem.locations.endCategory);\r\n\r\n\t\tdataItem.position = position;\r\n\r\n\t\tlet fillEndIndex: number;\r\n\t\tlet fillPosition: number;\r\n\t\tlet fillEndPosition: number;\r\n\r\n\t\tif (dataItem.isRange) {\r\n\t\t\tfillEndIndex = endIndex;\r\n\t\t\tfillPosition = this.indexToPosition(index, dataItem.locations.category);\r\n\t\t\tfillEndPosition = this.indexToPosition(fillEndIndex, dataItem.locations.endCategory);\r\n\t\t}\r\n\r\n\t\tdataItem.point = renderer.positionToPoint(position);\r\n\r\n\t\tlet tick: AxisTick = dataItem.tick;\r\n\t\tif (tick && !tick.disabled) {\r\n\t\t\trenderer.updateTickElement(tick, position, endPosition);\r\n\t\t}\r\n\r\n\t\tlet grid: Grid = dataItem.grid;\r\n\t\tif (grid && !grid.disabled) {\r\n\t\t\trenderer.updateGridElement(grid, position, endPosition);\r\n\t\t}\r\n\r\n\r\n\t\tlet label: AxisLabel = dataItem.label;\r\n\t\tif (label && !label.disabled) {\r\n\t\t\t// theorethically this might result problems if category text changes, the range text won't change. But otherwise range.label.text = \"custom text\" wont' work, which is not intuitive.\r\n\t\t\tif (!dataItem.isRange || label.text == undefined) {\r\n\t\t\t\tdataItem.text = dataItem.text;\r\n\t\t\t}\r\n\r\n\t\t\trenderer.updateLabelElement(label, position, endPosition);\r\n\r\n\t\t\tif (dataItem.label.measuredWidth > this.ghostLabel.measuredWidth || dataItem.label.measuredHeight > this.ghostLabel.measuredHeight) {\r\n\t\t\t\tif (dataItem.label.html) {\t\t\t\t\t\r\n\t\t\t\t\tthis.ghostLabel.html = dataItem.label.currentText;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.ghostLabel.text = dataItem.label.currentText;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet fill: AxisFill = dataItem.axisFill;\r\n\t\tif (fill && !fill.disabled) {\r\n\r\n\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\tfillEndIndex = index + this._frequency;\r\n\t\t\t\tfillPosition = this.indexToPosition(index, fill.location);\r\n\t\t\t\tfillEndPosition = this.indexToPosition(fillEndIndex, fill.location);\r\n\t\t\t}\r\n\r\n\t\t\trenderer.updateFillElement(fill, fillPosition, fillEndPosition);\r\n\t\t\tif (!dataItem.isRange) {\r\n\t\t\t\tthis.fillRule(dataItem, itemIndex);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\tlet mask: AxisFill = dataItem.mask;\r\n\t\tif (mask) {\r\n\t\t\trenderer.updateFillElement(mask, fillPosition, fillEndPosition);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tthis.dataItemsByCategory.clear();\r\n\t\tsuper.disposeData();\r\n\t}\r\n\r\n\t/**\r\n\t * Processes the axis data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t * @param dataContext The raw data that corresponds to this data item\r\n\t */\r\n\tpublic processDataItem(dataItem: this[\"_dataItem\"], dataContext: Object): void {\r\n\t\t// creat a collection for fast access\r\n\t\tsuper.processDataItem(dataItem, dataContext);\r\n\t\t// check if such category already exists\r\n\t\t//let existingDataItem: CategoryAxisDataItem = this.dataItemsByCategory.getKey(dataItem.category);\r\n\t\t//if (existingDataItem && existingDataItem != dataItem) {\r\n\t\t//\tthis.dataItems.remove(existingDataItem);\r\n\t\t//}\r\n\r\n\t\tthis.dataItemsByCategory.setKey(dataItem.category, dataItem);\r\n\t}\r\n\r\n\r\n\tprotected getDataItem(dataContext?: any): this[\"_dataItem\"] {\r\n\t\tlet category: string = <string>(dataContext[this.dataFields.category]);\r\n\t\tlet dataItem: this[\"_dataItem\"] = this.dataItemsByCategory.getKey(category);\r\n\r\n\t\tif (dataItem) {\r\n\t\t\treturn dataItem;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.dataItems.create();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a category index to an actual screen coordinate on the axis.\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t *\r\n\t * @param index Index\r\n\t * @param location Location (0-1)\r\n\t * @return Position (px)\r\n\t */\r\n\tpublic indexToPosition(index: number, location?: AxisItemLocation | number): number {\r\n\t\tif (!$type.isNumber(location)) {\r\n\t\t\tlocation = 0.5;\r\n\t\t}\r\n\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\r\n\t\tlet difference: number = this.adjustDifference(startIndex, endIndex);\r\n\r\n\t\tlet startLocation = this.startLocation;\r\n\t\tlet endLocation = this.endLocation;\r\n\r\n\t\tdifference -= startLocation;\r\n\t\tdifference -= (1 - endLocation);\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\r\n\t\t$iter.eachContinue(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\tlet breakStartIndex: number = axisBreak.adjustedStartValue;\r\n\t\t\tlet breakEndIndex: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\tif (index < startIndex) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tif ($math.intersect({ start: breakStartIndex, end: breakEndIndex }, { start: startIndex, end: endIndex })) {\r\n\t\t\t\tbreakStartIndex = Math.max(startIndex, breakStartIndex);\r\n\t\t\t\tbreakEndIndex = Math.min(endIndex, breakEndIndex);\r\n\r\n\t\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\t\t// value to the right of break end\r\n\t\t\t\tif (index > breakEndIndex) {\r\n\t\t\t\t\tstartIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n\t\t\t\t}\r\n\t\t\t\t// value to the left of break start\r\n\t\t\t\telse if (index < breakStartIndex) {\r\n\r\n\t\t\t\t}\r\n\t\t\t\t// value within break\r\n\t\t\t\telse {\r\n\t\t\t\t\tindex = breakStartIndex + (index - breakStartIndex) * breakSize;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\treturn $math.round((index + location - startLocation - startIndex) / difference, 5);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a string category name to relative position on axis.\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t *\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Position\r\n\t */\r\n\tpublic categoryToPosition(category: string, location?: AxisItemLocation): number {\r\n\t\tlet index: number = this.categoryToIndex(category);\r\n\t\treturn this.indexToPosition(index, location);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts a string category name to a orientation point (x, y, angle) on axis\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Orientation point\r\n\t */\r\n\tpublic categoryToPoint(category: string, location?: AxisItemLocation): IOrientationPoint {\r\n\t\tlet position = this.categoryToPosition(category, location);\r\n\t\tlet point = this.renderer.positionToPoint(position);\r\n\t\tlet angle = this.renderer.positionToAngle(position);\r\n\t\treturn { x: point.x, y: point.y, angle: angle };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a string category name to a orientation point (x, y, angle) on axis\r\n\t *\r\n\t * `location` identifies relative location within category. 0 - beginning,\r\n\t * 0.5 - middle, 1 - end, and anything inbetween.\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Orientation point\r\n\t */\r\n\tanyToPoint(category: string, location?: AxisItemLocation): IOrientationPoint {\r\n\t\treturn this.categoryToPoint(category, location);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Converts a string category name to relative position on axis.\r\n\t *\r\n\t * An alias to `categoryToPosition()`.\r\n\t *\r\n\t * @param category Category name\r\n\t * @param location Location (0-1)\r\n\t * @return Relative position\r\n\t */\r\n\tpublic anyToPosition(category: string, location?: AxisItemLocation): number {\r\n\t\treturn this.categoryToPosition(category, location);\r\n\t}\r\n\r\n\t/**\r\n\t * Converts named category to an index of data item it corresponds to.\r\n\t *\r\n\t * @param category Category\r\n\t * @return Data item index\r\n\t */\r\n\tpublic categoryToIndex(category: string): number {\r\n\t\tif ($type.hasValue(category)) {\r\n\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItemsByCategory.getKey(category);\r\n\t\t\tif (dataItem) {\r\n\t\t\t\treturn dataItem.index;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms the axis to specific named ctaegories.\r\n\t *\r\n\t * @param startCategory Start category\r\n\t * @param endCategory End category\r\n\t */\r\n\tpublic zoomToCategories(startCategory: string, endCategory: string): void {\r\n\t\tthis.zoomToIndexes(this.categoryToIndex(startCategory), this.categoryToIndex(endCategory) + 1);\r\n\t}\r\n\r\n\t/**\r\n\t * [getAnyRangePath description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param start [description]\r\n\t * @param end [description]\r\n\t * @param startLocation [description]\r\n\t * @param endLocation [description]\r\n\t * @return [description]\r\n\t */\r\n\tpublic getAnyRangePath(start: string, end: string, startLocation?: AxisItemLocation, endLocation?: AxisItemLocation): string {\r\n\t\tlet startPos: number = this.categoryToPosition(start, startLocation);\r\n\t\tlet endPos: number = this.categoryToPosition(end, endLocation);\r\n\t\treturn this.getPositionRangePath(startPos, endPos); // Base class (Axis) gets range shape from AxisRenderer\r\n\t}\r\n\r\n\t/**\r\n\t * Takes an absolute position (px) within axis and adjust it to a specific\r\n\t * `location` within category it corresponds to.\r\n\t *\r\n\t * @param position Source position (px)\r\n\t * @param location Location within category (0-1)\r\n\t * @return Adjusted position (px)\r\n\t */\r\n\tpublic roundPosition(position: number, location?: AxisItemLocation): number {\r\n\t\tlet index: number = this.positionToIndex(position);\r\n\t\treturn this.indexToPosition(index, location);\r\n\t}\r\n\r\n\t/**\r\n\t * Finds and returns first series data item with specific category\r\n\t * @param series Target series\r\n\t * @param category Category\r\n\t * @return XYSeriesDataItem data item\r\n\t */\r\n\tpublic getFirstSeriesDataItem(series: XYSeries, category: string): XYSeriesDataItem {\r\n\r\n\t\tfor (let i = 0; i < series.dataItems.length; i++) {\r\n\t\t\tlet dataItem = series.dataItems.getIndex(i);\r\n\t\t\tif (series.xAxis == this) {\r\n\t\t\t\tif (dataItem.categoryX == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (series.yAxis == this) {\r\n\t\t\t\tif (dataItem.categoryY == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Finds and returns last series data item with specific category.\r\n\t * @param series Target series\r\n\t * @param category Category\r\n\t * @return XYSeriesDataItem data item\r\n\t */\r\n\tpublic getLastSeriesDataItem(series: XYSeries, category: string): XYSeriesDataItem {\r\n\r\n\t\tfor (let i = series.dataItems.length - 1; i >= 0; i--) {\r\n\t\t\tlet dataItem = series.dataItems.getIndex(i);\r\n\t\t\tif (series.xAxis == this) {\r\n\t\t\t\tif (dataItem.categoryX == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (series.yAxis == this) {\r\n\t\t\t\tif (dataItem.categoryY == category) {\r\n\t\t\t\t\treturn dataItem;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Returns a data item from Series that corresponds to a specific absolute\r\n\t * position on the Axis.\r\n\t *\r\n\t * @param series Target series\r\n\t * @param position Position (px)\r\n\t * @return XYSeriesDataItem data item\r\n\t */\r\n\tpublic getSeriesDataItem(series: XYSeries, position: number, findNearest?: boolean): XYSeriesDataItem {\r\n\r\n\t\tif ($type.isNumber(position)) {\r\n\r\n\t\t\tlet index = this.positionToIndex(position);\r\n\r\n\t\t\tif (index >= this.dataItems.length) {\r\n\t\t\t\tindex--;\r\n\t\t\t}\r\n\r\n\t\t\tlet dataItem = this.dataItems.getIndex(index);\r\n\r\n\t\t\tif (dataItem) {\r\n\t\t\t\tlet category = dataItem.category;\r\n\t\t\t\tlet sdi: XYSeriesDataItem;\r\n\r\n\t\t\t\tlet seriesDataItem = series.dataItems.getIndex(index);\r\n\t\t\t\tif (seriesDataItem) {\r\n\t\t\t\t\tif (series.xAxis == this) {\r\n\t\t\t\t\t\tif (seriesDataItem.categoryX == category) {\r\n\t\t\t\t\t\t\treturn seriesDataItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (series.yAxis == this) {\r\n\t\t\t\t\t\tif (seriesDataItem.categoryY == category) {\r\n\t\t\t\t\t\t\treturn seriesDataItem;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tseries.dataItems.each((dataItem) => {\r\n\t\t\t\t\tif (series.xAxis == this) {\r\n\t\t\t\t\t\tif (dataItem.categoryX == category) {\r\n\t\t\t\t\t\t\tif (!sdi) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (Math.abs(index - sdi.index) > Math.abs(index - dataItem.index)) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (series.yAxis == this) {\r\n\t\t\t\t\t\tif (dataItem.categoryY == category) {\r\n\t\t\t\t\t\t\tif (!sdi) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tif (Math.abs(index - sdi.index) > Math.abs(index - dataItem.index)) {\r\n\t\t\t\t\t\t\t\tsdi = dataItem;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\r\n\t\t\t\t//@todo\r\n\t\t\t\tif (findNearest) {\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn sdi;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the X coordinate for series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Category\r\n\t * @param location Location (0-1)\r\n\t * @return X coordinate (px)\r\n\t */\r\n\tpublic getX(dataItem: XYSeriesDataItem, key?: string, location?: number): number {\r\n\t\tlet position;\r\n\t\tif ($type.hasValue(key)) {\r\n\t\t\tposition = this.categoryToPosition(dataItem.categories[key], location);\r\n\t\t}\r\n\t\tif ($type.isNaN(position)) {\r\n\t\t\treturn this.basePoint.x;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.renderer.positionToPoint(position).x;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns the Y coordinate for series' data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Category\r\n\t * @param location Location (0-1)\r\n\t * @return Y coordinate (px)\r\n\t */\r\n\tpublic getY(dataItem: XYSeriesDataItem, key?: string, location?: number): number {\r\n\t\tlet position;\r\n\t\tif ($type.hasValue(key)) {\r\n\t\t\tposition = this.categoryToPosition(dataItem.categories[key], location);\r\n\t\t}\r\n\t\tif ($type.isNaN(position)) {\r\n\t\t\treturn this.basePoint.y;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn this.renderer.positionToPoint(position).y;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an angle for series data item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param dataItem Data item\r\n\t * @param key Category\r\n\t * @param location Location (0-1)\r\n\t * @param stackKey Stack key (?)\r\n\t * @return Angle\r\n\t */\r\n\tpublic getAngle(dataItem: XYSeriesDataItem, key: string, location?: number, stackKey?: string): number {\r\n\t\treturn this.positionToAngle(this.categoryToPosition(dataItem.categories[key], location));\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an absolute pixel coordinate of the start of the cell (category),\r\n\t * that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Position (px)\r\n\t * @return Cell start position (px)\r\n\t */\r\n\tpublic getCellStartPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 0);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an absolute pixel coordinate of the end of the cell (category),\r\n\t * that specific position value falls into.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t * @param position Position (px)\r\n\t * @return Cell end position (px)\r\n\t */\r\n\tpublic getCellEndPosition(position: number): number {\r\n\t\treturn this.roundPosition(position, 1);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns text to show in a category tooltip, based on specific position\r\n\t * within axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Position (px)\r\n\t * @return Label (category)\r\n\t */\r\n\tpublic getTooltipText(position: number): string {\r\n\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(this.positionToIndex(position));\r\n\t\tif (dataItem) {\r\n\t\t\treturn this.adapter.apply(\"getTooltipText\", dataItem.category);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an index of the category that corresponds to specific pixel\r\n\t * position within axis.\r\n\t *\r\n\t * @param position Position (px)\r\n\t * @return Category index\r\n\t */\r\n\tpublic positionToIndex(position: number): number {\r\n\t\tposition = $math.round(position, 10);\r\n\t\tif (position < 0) {\r\n\t\t\tposition = 0;\r\n\t\t}\r\n\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\t\tlet difference: number = endIndex - startIndex;\r\n\r\n\t\tlet axisBreaks = this.axisBreaks;\r\n\r\n\t\tlet index: number = null;\r\n\r\n\t\t// in case we have some axis breaks\r\n\t\t$iter.eachContinue(axisBreaks.iterator(), (axisBreak) => {\r\n\t\t\tlet breakStartPosition: number = axisBreak.startPosition;\r\n\t\t\tlet breakEndPosition: number = axisBreak.endPosition;\r\n\r\n\t\t\tlet breakStartIndex: number = axisBreak.adjustedStartValue;\r\n\t\t\tlet breakEndIndex: number = axisBreak.adjustedEndValue;\r\n\r\n\t\t\tbreakStartIndex = $math.max(breakStartIndex, startIndex);\r\n\t\t\tbreakEndIndex = $math.min(breakEndIndex, endIndex);\r\n\r\n\t\t\tlet breakSize: number = axisBreak.breakSize;\r\n\r\n\t\t\tdifference -= (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n\r\n\t\t\t// position to the right of break end\r\n\t\t\tif (position > breakEndPosition) {\r\n\t\t\t\tstartIndex += (breakEndIndex - breakStartIndex) * (1 - breakSize);\r\n\t\t\t}\r\n\t\t\t// position to the left of break start\r\n\t\t\telse if (position < breakStartPosition) {\r\n\r\n\t\t\t}\r\n\t\t\t// value within break\r\n\t\t\telse {\r\n\t\t\t\tlet breakPosition = (position - breakStartPosition) / (breakEndPosition - breakStartPosition);\r\n\t\t\t\tindex = breakStartIndex + Math.round(breakPosition * (breakEndIndex - breakStartIndex));\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\treturn true;\r\n\t\t});\r\n\r\n\t\tif (!$type.isNumber(index)) {\r\n\t\t\tindex = Math.floor(position * difference + startIndex);\r\n\t\t}\r\n\t\t// not good, when panning out of bounds, each time one less item gets selected\r\n\t\t//if (index >= endIndex) {\r\n\t\t//\tindex--;\r\n\t\t//}\r\n\r\n\t\treturn index;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns category based on position.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * This is a synonim of `getPositionLabel()` implemented here for consistentcy.\r\n\t *\r\n\t * @since 4.3.8\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic positionToCategory(position: number): string {\r\n\t\treturn this.getPositionLabel(position);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns category based on position.\r\n\t *\r\n\t * Please note that `position` represents position within axis which may be\r\n\t * zoomed and not correspond to Cursor's `position`.\r\n\t *\r\n\t * To convert Cursor's `position` to Axis' `position` use `toAxisPosition()` method.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/tutorials/tracking-cursors-position-via-api/#Tracking_Cursor_s_position} For more information about cursor tracking.\r\n\t * @param position Relative position on axis (0-1)\r\n\t * @return Position label\r\n\t */\r\n\tpublic getPositionLabel(position: number): string {\r\n\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(this.positionToIndex(position));\r\n\t\tif (dataItem) {\r\n\t\t\treturn dataItem.category;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Coordinates of the actual axis start.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @return Base point\r\n\t */\r\n\tpublic get basePoint(): IPoint {\r\n\t\t// This makes base grid to be drawn at the end of the axis and adds extra\r\n\t\t// grid which we need to nicely close the chart.\r\n\t\treturn this.renderer.positionToPoint(1);\r\n\t}\r\n\r\n\t/**\r\n\t * Initializes Axis' renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic initRenderer(): void {\r\n\t\tsuper.initRenderer();\r\n\r\n\t\tlet renderer = this.renderer;\r\n\t\trenderer.baseGrid.disabled = true;\r\n\t}\r\n\r\n\t/**\r\n\t * Current frequency of labels of the axis.\r\n\t *\r\n\t * Normally it would be 1, but when labels start to be hidden due\r\n\t * to `minGridDistance` this read-only property will increase.\r\n\t *\r\n\t * @readonly\r\n\t * @since 4.2.0\r\n\t * @return Label frequency\r\n\t */\r\n\tpublic get frequency(): number {\r\n\t\treturn this._frequency;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"CategoryAxis\"] = CategoryAxis;\r\nregistry.registeredClasses[\"CategoryAxisDataItem\"] = CategoryAxisDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/CategoryAxis.ts","/**\r\n * XY series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Series, SeriesDataItem, ISeriesProperties, ISeriesDataFields, ISeriesAdapters, ISeriesEvents } from \"./Series\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { AxisRenderer } from \"../axes/AxisRenderer\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { Dictionary } from \"../../core/utils/Dictionary\";\r\nimport { List } from \"../../core/utils/List\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\nimport { CalculatedValue } from \"../../core/Component\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport { ITimeInterval } from \"../../core/defs/ITimeInterval\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[XYSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class XYSeriesDataItem extends SeriesDataItem {\r\n\r\n\t/**\r\n\t * [_minX description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _minX: number;\r\n\r\n\t/**\r\n\t * [_maxX description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _maxX: number;\r\n\r\n\t/**\r\n\t * [_minY description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _minY: number;\r\n\r\n\t/**\r\n\t * [_maxY description]\r\n\t *\r\n\t * @todo Descripion\r\n\t */\r\n\tprotected _maxY: number;\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: XYSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"XYSeriesDataItem\";\r\n\r\n\t\tthis.values.valueX = { stack: 0 };\r\n\t\tthis.values.valueY = { stack: 0 };\r\n\t\tthis.values.openValueX = {};\r\n\t\tthis.values.openValueY = {};\r\n\r\n\t\tthis.values.dateX = {};\r\n\t\tthis.values.dateY = {};\r\n\t\tthis.values.openDateX = {};\r\n\t\tthis.values.openDateY = {};\r\n\r\n\t\tthis.setLocation(\"dateX\", 0.5, 0);\r\n\t\tthis.setLocation(\"dateY\", 0.5, 0);\r\n\r\n\t\tthis.setLocation(\"categoryX\", 0.5, 0);\r\n\t\tthis.setLocation(\"categoryY\", 0.5, 0);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Item's numeric value on X value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set valueX(value: number) {\r\n\t\tthis.setValue(\"valueX\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get valueX(): number {\r\n\t\treturn this.values.valueX.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's numeric value on Y value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set valueY(value: number) {\r\n\t\tthis.setValue(\"valueY\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get valueY(): number {\r\n\t\treturn this.values.valueY.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's date value on X date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set dateX(date: Date) {\r\n\t\tthis.setDate(\"dateX\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get dateX(): Date {\r\n\t\treturn this.getDate(\"dateX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's date value on Y date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set dateY(date: Date) {\r\n\t\tthis.setDate(\"dateY\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get dateY(): Date {\r\n\t\treturn this.getDate(\"dateY\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's category on X category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set categoryX(category: string) {\r\n\t\tthis.setCategory(\"categoryX\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get categoryX(): string {\r\n\t\treturn this.categories.categoryX;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's category on Y category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set categoryY(category: string) {\r\n\t\tthis.setCategory(\"categoryY\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get categoryY(): string {\r\n\t\treturn this.categories.categoryY;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open numeric value on X value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set openValueX(value: number) {\r\n\t\tthis.setValue(\"openValueX\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get openValueX(): number {\r\n\t\treturn this.values.openValueX.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open numeric value on Y value axis.\r\n\t *\r\n\t * @param value Value\r\n\t */\r\n\tpublic set openValueY(value: number) {\r\n\t\tthis.setValue(\"openValueY\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Value\r\n\t */\r\n\tpublic get openValueY(): number {\r\n\t\treturn this.values.openValueY.value;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open date value on X date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set openDateX(date: Date) {\r\n\t\tthis.setDate(\"openDateX\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get openDateX(): Date {\r\n\t\treturn this.getDate(\"openDateX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open date value on Y date-based axis.\r\n\t *\r\n\t * @param date Date\r\n\t */\r\n\tpublic set openDateY(date: Date) {\r\n\t\tthis.setDate(\"openDateY\", date);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Date\r\n\t */\r\n\tpublic get openDateY(): Date {\r\n\t\treturn this.getDate(\"openDateY\");\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open category on X category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set openCategoryX(category: string) {\r\n\t\tthis.setCategory(\"openCategoryX\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get openCategoryX(): string {\r\n\t\treturn this.categories.openCategoryX;\r\n\t}\r\n\r\n\t/**\r\n\t * Item's open category on Y category axis.\r\n\t *\r\n\t * @param category Category\r\n\t */\r\n\tpublic set openCategoryY(category: string) {\r\n\t\tthis.setCategory(\"openCategoryY\", category);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Category\r\n\t */\r\n\tpublic get openCategoryY(): string {\r\n\t\treturn this.categories.openCategoryY;\r\n\t}\r\n\r\n\t/**\r\n\t * Return smallest value out of all item's value fields.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fields Fields to check in\r\n\t * @param working Include working (temporary) values\r\n\t * @param stackValue If item is in a stack, the value item starts as\r\n\t * @return Value\r\n\t */\r\n\tpublic getMin(fields: string[], working?: boolean, stackValue?: number): number {\r\n\t\t//if (this.visible) { // dumped because of non smooth zooming\r\n\t\tlet min: number;\r\n\r\n\t\tif (!$type.isNumber(stackValue)) {\r\n\t\t\tstackValue = 0;\r\n\t\t}\r\n\r\n\t\t$array.each(fields, (field) => {\r\n\t\t\tlet value: number;\r\n\r\n\t\t\tif (working) {\r\n\t\t\t\tvalue = this.getWorkingValue(field);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = this.getValue(field);\r\n\t\t\t}\r\n\r\n\t\t\tvalue += stackValue;\r\n\r\n\t\t\tif (value < min || !$type.isNumber(min)) {\r\n\t\t\t\tmin = value;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn min;\r\n\t\t//}\r\n\t}\r\n\r\n\t/**\r\n\t * Return biggest value out of all item's value fields.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param fields Fields to check in\r\n\t * @param working Include working (temporary) values\r\n\t * @param stackValue If item is in a stack, the value item starts as\r\n\t * @return Value\r\n\t */\r\n\tpublic getMax(fields: string[], working?: boolean, stackValue?: number): number {\r\n\t\t//if (this.visible) { // dumped because of non smooth zooming\r\n\t\tlet max: number;\r\n\r\n\t\tif (!$type.isNumber(stackValue)) {\r\n\t\t\tstackValue = 0;\r\n\t\t}\r\n\r\n\t\t$array.each(fields, (field) => {\r\n\t\t\tlet value: number;\r\n\r\n\t\t\tif (working) {\r\n\t\t\t\tvalue = this.getWorkingValue(field);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = this.getValue(field);\r\n\t\t\t}\r\n\r\n\t\t\tvalue += stackValue;\r\n\r\n\t\t\tif (value > max || !$type.isNumber(max)) {\r\n\t\t\t\tmax = value;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn max;\r\n\t\t//}\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Defines property set for a [[XYSeries]] tooltip event that contains information about dataItem\r\n */\r\nexport type XYSeriesTooltipEvent = {\r\n\r\n\t/**\r\n\t * Shift in coordinates after dragging.\r\n\t */\r\n\tdataItem: XYSeriesDataItem;\r\n};\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[XYSeries]].\r\n */\r\nexport interface IXYSeriesDataFields extends ISeriesDataFields {\r\n\r\n\t/**\r\n\t * Name of the field in data that holds numeric value for horizontal axis.\r\n\t */\r\n\tvalueX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds numeric value for vertical axis.\r\n\t */\r\n\tvalueY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds category for horizontal axis.\r\n\t */\r\n\tcategoryX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds category for vertical axis.\r\n\t */\r\n\tcategoryY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds date for horizontal axis.\r\n\t */\r\n\tdateX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds date for vertical axis.\r\n\t */\r\n\tdateY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open numeric value for horizontal\r\n\t * axis.\r\n\t */\r\n\topenValueX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open numeric value for vertical\r\n\t * axis.\r\n\t */\r\n\topenValueY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open category for horizontal axis.\r\n\t */\r\n\topenCategoryX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open category for vertical axis.\r\n\t */\r\n\topenCategoryY?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open date for horizontal axis.\r\n\t */\r\n\topenDateX?: string;\r\n\r\n\t/**\r\n\t * Name of the field in data that holds open date for vertical axis.\r\n\t */\r\n\topenDateY?: string;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a horizontal axis value for the\r\n\t * item.\r\n\t */\r\n\tvalueXShow?: CalculatedValue;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a vertical axis value for the\r\n\t * item.\r\n\t */\r\n\tvalueYShow?: CalculatedValue;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a horizontal axis open value for\r\n\t * the item.\r\n\t */\r\n\topenValueXShow?: CalculatedValue;\r\n\r\n\t/**\r\n\t * Which calculated field to use to use as a vertical axis open value for\r\n\t * the item.\r\n\t */\r\n\topenValueYShow?: CalculatedValue;\r\n\r\n}\r\n\r\n/**\r\n * Defines properties for [[XYSeries]].\r\n */\r\nexport interface IXYSeriesProperties extends ISeriesProperties {\r\n\r\n\t/**\r\n\t * Can items from this series be included into stacks?\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tstacked?: boolean;\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position\r\n\t *\r\n\t * @default false\r\n\t */\r\n\tsnapTooltip?: boolean;\r\n\r\n\t/**\r\n\t * Indicates if series should display a tooltip for chart's cursor.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tcursorTooltipEnabled?: boolean;\r\n\r\n\t/**\r\n\t * Indicates if series should apply hover state on bullets/columns/etc when\r\n\t * cursor is over the data item.\r\n\t * \r\n\t * @default true\r\n\t */\r\n\tcursorHoverEnabled?: boolean;\r\n\r\n\t/**\r\n\t * Indicates if series' values should be excluded when calculating totals.\r\n\t * \r\n\t * @default false\r\n\t */\r\n\texcludeFromTotal?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[XYSeries]].\r\n */\r\nexport interface IXYSeriesEvents extends ISeriesEvents {\r\n\t/**\r\n\t * Invoked when series tooltip was shown on some particular data item\r\n\t */\r\n\ttooltipshownat: XYSeriesTooltipEvent;\r\n}\r\n\r\n/**\r\n * Defines adapters for [[XYSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYSeriesAdapters extends ISeriesAdapters, IXYSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines Series for [[XYChart]].\r\n *\r\n * @see {@link IXYSeriesEvents} for a list of available Events\r\n * @see {@link IXYSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class XYSeries extends Series {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: IXYSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IXYSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: XYSeriesDataItem;\r\n\r\n\t/**\r\n\t * X axis the series is attached to.\r\n\t */\r\n\tprotected _xAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * Y axis the series is attached to.\r\n\t */\r\n\tprotected _yAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: XYChart;\r\n\r\n\t/**\r\n\t * The main (base) axis.\r\n\t *\r\n\t * This is the axis that series fills will go to, or grow animations will\r\n\t * happen from.\r\n\t */\r\n\tprotected _baseAxis: Axis;\r\n\r\n\t/**\r\n\t * Total data item count.\r\n\t */\r\n\tprotected _count: Dictionary<string, number>;\r\n\r\n\t/**\r\n\t * Data item count in current selection.\r\n\t */\r\n\tprotected _scount: Dictionary<string, number>;\r\n\r\n\t/**\r\n\t * [_xField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _xField: string;\r\n\r\n\t/**\r\n\t * [_yField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _yField: string;\r\n\r\n\t/**\r\n\t * [_xOpenField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _xOpenField: string;\r\n\r\n\t/**\r\n\t * [_yOpenField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _yOpenField: string;\r\n\r\n\t/**\r\n\t * [_tooltipXField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _tooltipXField: string;\r\n\r\n\t/**\r\n\t * [_tooltipYField description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _tooltipYField: string;\r\n\r\n\t/**\r\n\t * [_xValueFields description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _xValueFields: Array<string> = [];\r\n\r\n\t/**\r\n\t * [_yValueFields description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _yValueFields: Array<string> = [];\r\n\r\n\t/**\r\n\t * Series which is stacked on top of this series, if any.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic stackedSeries: XYSeries;\r\n\r\n\t/**\r\n\t * dataitem of previously shown tooltip, used to avoid multiple tooltipshownat dispatches\r\n\t * @ignore\r\n\t */\r\n\tprotected _prevTooltipDataItem: XYSeriesDataItem;\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _baseInterval: { [index: string]: ITimeInterval } = {};\r\n\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"XYSeries\";\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\tthis.cursorTooltipEnabled = true;\r\n\r\n\t\tthis.cursorHoverEnabled = true;\r\n\t\tthis.excludeFromTotal = false;\r\n\r\n\t\tthis.mainContainer.mask = new Sprite();\r\n\t\tthis.mainContainer.mask.setElement(this.paper.add(\"path\"));\r\n\r\n\t\tthis.stacked = false;\r\n\t\tthis.snapTooltip = false;\r\n\r\n\t\tthis.tooltip.pointerOrientation = \"horizontal\";\r\n\r\n\t\tthis.tooltip.events.on(\"hidden\", () => {\r\n\t\t\tthis.returnBulletDefaultState();\r\n\t\t}, undefined, false)\r\n\r\n\t\tthis._disposers.push(this._xAxis);\r\n\t\tthis._disposers.push(this._yAxis);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"X/Y Series\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new XYSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic dataChangeUpdate() {\r\n\t\tthis._tmin.clear();\r\n\t\tthis._tmax.clear();\r\n\r\n\t\tthis._smin.clear();\r\n\t\tthis._smax.clear();\r\n\r\n\r\n\t\tif (this.xAxis) {\r\n\t\t\tthis.xAxis.seriesDataChangeUpdate(this);\r\n\t\t}\r\n\r\n\t\tif (this.yAxis) {\r\n\t\t\tthis.yAxis.seriesDataChangeUpdate(this);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the series' data.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\t\tthis.defineFields();\r\n\r\n\t\tif (this.data.length > 0) {\r\n\t\t\tthis.dataChangeUpdate();\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\r\n\t\tthis.updateItemReaderText();\r\n\r\n\t\tif (!$type.hasValue(this.dataFields[<keyof this[\"_dataFields\"]>this._xField]) || !$type.hasValue(this.dataFields[<keyof this[\"_dataFields\"]>this._yField])) {\r\n\t\t\tthrow Error(\"Data fields for series \\\"\" + (this.name ? this.name : this.uid) + \"\\\" are not properly defined.\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes data item.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param dataContext Raw data\r\n\t * @param index Index of the data item\r\n\t */\r\n\tprotected processDataItem(dataItem: this[\"_dataItem\"], dataContext?: Object): void {\r\n\t\ttry {\r\n\t\t\tsuper.processDataItem(dataItem, dataContext);\r\n\r\n\t\t\tdataItem.events.disable();\r\n\t\t\tthis.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n\t\t\tthis.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n\t\t\tdataItem.events.enable();\r\n\r\n\t\t\tthis.setInitialWorkingValues(dataItem);\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis._chart.raiseCriticalError(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * When validating raw data, instead of processing data item, we update it\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param item\r\n\t */\r\n\tprotected updateDataItem(dataItem: this[\"_dataItem\"]): void {\r\n\t\tsuper.updateDataItem(dataItem);\r\n\r\n\t\t//dataItem.events.disable();\r\n\t\tthis.xAxis.processSeriesDataItem(dataItem, \"X\");\r\n\t\tthis.yAxis.processSeriesDataItem(dataItem, \"Y\");\r\n\t\t//dataItem.events.enable();\t\t\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Inits data item's working values.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param index Data item's index\r\n\t */\r\n\r\n\tprotected setInitialWorkingValues(dataItem: this[\"_dataItem\"]): void {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tsuper.disposeData();\r\n\t\tif (this.xAxis) {\r\n\t\t\tlet dataItemsX = this.dataItemsByAxis.getKey(this.xAxis.uid);\r\n\t\t\tif (dataItemsX) {\r\n\t\t\t\tdataItemsX.clear();\r\n\t\t\t}\r\n\t\t\tif (this.xAxis instanceof CategoryAxis) {\r\n\t\t\t\tthis.clearCatAxis(this.xAxis);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.yAxis) {\r\n\t\t\tlet dataItemsY = this.dataItemsByAxis.getKey(this.yAxis.uid);\r\n\t\t\tif (dataItemsY) {\r\n\t\t\t\tdataItemsY.clear();\r\n\t\t\t}\r\n\t\t\tif (this.yAxis instanceof CategoryAxis) {\r\n\t\t\t\tthis.clearCatAxis(this.yAxis);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected clearCatAxis(axis: CategoryAxis) {\r\n\t\tlet uid = this.uid;\r\n\t\taxis.dataItems.each((dataItem) => {\r\n\t\t\tif (dataItem.seriesDataItems[uid]) {\r\n\t\t\t\tdataItem.seriesDataItems[uid] = [];\r\n\t\t\t}\r\n\t\t})\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Sets up which data fields to use for data access.\r\n\t */\r\n\tprotected defineFields() {\r\n\t\tlet xAxis: Axis = this.xAxis;\r\n\t\tlet yAxis: Axis = this.yAxis;\r\n\r\n\t\tlet xAxisFieldName: string = xAxis.axisFieldName;\r\n\t\tlet xField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(xAxisFieldName + \"X\");\r\n\t\tlet xOpenField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(\"open\" + $utils.capitalize(xAxisFieldName) + \"X\");\r\n\r\n\t\tlet yAxisFieldName: string = yAxis.axisFieldName;\r\n\t\tlet yField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(yAxisFieldName + \"Y\");\r\n\t\tlet yOpenField: $type.Keyof<this[\"_dataFields\"]> = <$type.Keyof<this[\"_dataFields\"]>>(\"open\" + $utils.capitalize(yAxisFieldName) + \"Y\");\r\n\r\n\t\tthis._xField = xField;\r\n\t\tthis._yField = yField;\r\n\r\n\t\tif (this.dataFields[xOpenField]) {\r\n\t\t\tthis._xOpenField = xOpenField;\r\n\t\t}\r\n\r\n\t\tif (this.dataFields[yOpenField]) {\r\n\t\t\tthis._yOpenField = yOpenField;\r\n\t\t}\r\n\r\n\t\tif (!this.dataFields[yOpenField] && this.baseAxis == this.yAxis) {\r\n\t\t\tthis._yOpenField = yField;\r\n\t\t}\r\n\r\n\t\tif (!this.dataFields[xOpenField] && this.baseAxis == this.xAxis) {\r\n\t\t\tthis._xOpenField = xField;\r\n\t\t}\r\n\r\n\t\tif (this.stacked && this.baseAxis == this.xAxis) {\r\n\t\t\tthis._xOpenField = xField;\r\n\t\t}\r\n\r\n\t\tif (this.stacked && this.baseAxis == this.yAxis) {\r\n\t\t\tthis._yOpenField = yField;\r\n\t\t}\r\n\r\n\t\tif ((this.xAxis instanceof CategoryAxis) && (this.yAxis instanceof CategoryAxis)) {\r\n\t\t\tif (!this._yOpenField) {\r\n\t\t\t\tthis._yOpenField = yField;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._xValueFields = [];\r\n\t\tthis._yValueFields = [];\r\n\r\n\t\tthis.addValueField(this.xAxis, <any>this._xValueFields, <any>this._xField);\r\n\t\tthis.addValueField(this.xAxis, <any>this._xValueFields, <any>this._xOpenField);\r\n\r\n\t\tthis.addValueField(this.yAxis, <any>this._yValueFields, <any>this._yField);\r\n\t\tthis.addValueField(this.yAxis, <any>this._yValueFields, <any>this._yOpenField);\r\n\t}\r\n\r\n\t/**\r\n\t * [axis description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param axis Axis\r\n\t * @param fields Fields (?)\r\n\t * @param field Field\r\n\t */\r\n\tprotected addValueField<Key extends keyof this[\"_dataFields\"]>(axis: Axis, fields: Array<Key>, field: Key): void {\r\n\t\tif (axis instanceof ValueAxis) {\r\n\t\t\tif ($type.hasValue(this.dataFields[field]) && fields.indexOf(field) == -1) {\r\n\t\t\t\tfields.push(field);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets category field from the category axis.\r\n\t *\r\n\t * User might set field for category axis only, but not for series. In such\r\n\t * case, we take field value from axis and set it for series.\r\n\t *\r\n\t * @param field Field\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected setCategoryAxisField<Key extends keyof this[\"_dataFields\"]>(field: Key, axis: CategoryAxis): void {\r\n\t\tif (!$type.hasValue(this.dataFields[field])) {\r\n\t\t\tthis.dataFields[field] = <any>axis.dataFields.category;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Sets date field from the date axis.\r\n\t *\r\n\t * User might set field for category axis only, but not for series. In such\r\n\t * case, we take field value from axis and set it for series.\r\n\t *\r\n\t * @param field Field\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected setDateAxisField<Key extends keyof this[\"_dataFields\"]>(field: Key, axis: DateAxis): void {\r\n\t\tif (!$type.hasValue(this.dataFields[field])) {\r\n\t\t\tthis.dataFields[field] = <any>axis.dataFields.date;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs after-draw tasks, e.g. creates masks.\r\n\t */\r\n\tprotected afterDraw(): void {\r\n\t\tsuper.afterDraw();\r\n\t\tthis.createMask();\r\n\t}\r\n\r\n\t/**\r\n\t * Create a mask for the series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic createMask(): void {\r\n\t\t// this mask from which we cut out ranges. does not work well if ranges overlap.\r\n\t\tif (this.mainContainer.mask) {\r\n\t\t\tlet path: string = this.getMaskPath();\r\n\r\n\t\t\t// @todo: this approach won't work well on circluar or other non x/y axes\r\n\t\t\t$iter.each(this.axisRanges.iterator(), (range) => {\r\n\t\t\t\tif (range.axisFill.fillPath) {\r\n\t\t\t\t\trange.axisFill.validate();\r\n\t\t\t\t\tpath += range.axisFill.fillPath;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tthis.mainContainer.mask.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG path to use as series mask.\r\n\t *\r\n\t * @return SVG path\r\n\t */\r\n\tprotected getMaskPath(): string {\r\n\t\treturn $path.rectToPath({\r\n\t\t\tx: 0,\r\n\t\t\ty: 0,\r\n\t\t\twidth: this.xAxis.axisLength,\r\n\t\t\theight: this.yAxis.axisLength\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Returns axis data field to use.\r\n\t *\r\n\t * @param axis Axis\r\n\t * @return Field name\r\n\t */\r\n\tpublic getAxisField(axis: Axis): string {\r\n\t\tif (axis == this.xAxis) {\r\n\t\t\treturn this.xField;\r\n\t\t}\r\n\t\tif (axis == this.yAxis) {\r\n\t\t\treturn this.yField;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Validates data items.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataItems() {\r\n\r\n\t\t// this helps date axis to check which baseInterval we should use\r\n\t\tthis.xAxis.updateAxisBySeries();\r\n\t\tthis.yAxis.updateAxisBySeries();\r\n\r\n\t\tsuper.validateDataItems();\r\n\r\n\t\tthis.xAxis.postProcessSeriesDataItems();\r\n\t\tthis.yAxis.postProcessSeriesDataItems();\r\n\t}\r\n\r\n\t/**\r\n\t * Validates data range.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateDataRange() {\r\n\t\tif (this.xAxis.dataRangeInvalid) {\r\n\t\t\tthis.xAxis.validateDataRange();\r\n\t\t}\r\n\r\n\t\tif (this.yAxis.dataRangeInvalid) {\r\n\t\t\tthis.yAxis.validateDataRange();\r\n\t\t}\r\n\r\n\t\tsuper.validateDataRange();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the whole series, effectively causing it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\t\tif (this.xAxis.invalid) {\r\n\t\t\tthis.xAxis.validate();\r\n\t\t}\r\n\r\n\t\tif (this.yAxis.invalid) {\r\n\t\t\tthis.yAxis.validate();\r\n\t\t}\r\n\r\n\t\tthis.y = this.yAxis.pixelY;\r\n\t\tthis.x = this.xAxis.pixelX;\r\n\r\n\r\n\t\tthis._showBullets = true;\r\n\t\tlet minBulletDistance: number = this.minBulletDistance;\r\n\t\tif ($type.isNumber(minBulletDistance)) {\r\n\t\t\tif (this.baseAxis.axisLength / (this.endIndex - this.startIndex) < minBulletDistance) {\r\n\t\t\t\tthis._showBullets = false;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * X axis the series is attached to.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic set xAxis(axis: Axis) {\r\n\t\tlet oldAxis = this._xAxis.get();\r\n\t\tif (oldAxis != axis) {\r\n\t\t\tif (oldAxis) {\r\n\t\t\t\tthis.dataItemsByAxis.removeKey(oldAxis.uid);\r\n\t\t\t\t// TODO why is this here ?\r\n\t\t\t\tthis._xAxis.dispose();\r\n\t\t\t\t// temp @todo: why it is not disposed?\r\n\t\t\t\toldAxis.series.removeValue(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis._xAxis.set(axis, axis.registerSeries(this));\r\n\r\n\t\t\tthis.dataItemsByAxis.setKey(axis.uid, new Dictionary<string, this[\"_dataItem\"]>());\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis\r\n\t */\r\n\tpublic get xAxis(): Axis {\r\n\t\tif (this.chart) {\r\n\t\t\tif (!this._xAxis.get()) {\r\n\t\t\t\tconst axis = this.chart.xAxes.getIndex(0);\r\n\r\n\t\t\t\tif (!axis) {\r\n\t\t\t\t\tthrow Error(\"There are no X axes on chart.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.xAxis = axis;\r\n\t\t\t}\r\n\t\t\treturn this._xAxis.get();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Y axis the series is attached to.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic set yAxis(axis: Axis) {\r\n\t\tlet oldAxis = this._yAxis.get();\r\n\t\tif (oldAxis != axis) {\r\n\t\t\tif (oldAxis) {\r\n\t\t\t\tthis.dataItemsByAxis.removeKey(oldAxis.uid);\r\n\t\t\t\t// TODO why is this here ?\r\n\t\t\t\tthis._yAxis.dispose();\r\n\t\t\t\t// temp @todo: why it is not disposed?\r\n\t\t\t\toldAxis.series.removeValue(this);\r\n\t\t\t}\r\n\r\n\t\t\tthis._yAxis.set(axis, axis.registerSeries(this));\r\n\r\n\t\t\tthis.dataItemsByAxis.setKey(axis.uid, new Dictionary<string, this[\"_dataItem\"]>());\r\n\t\t\tthis.invalidateData();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis\r\n\t */\r\n\tpublic get yAxis(): Axis {\r\n\t\tif (this.chart) {\r\n\t\t\tif (!this._yAxis.get()) {\r\n\t\t\t\tconst axis = this.chart.yAxes.getIndex(0);\r\n\r\n\t\t\t\tif (!axis) {\r\n\t\t\t\t\tthrow Error(\"There are no Y axes on chart.\");\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.yAxis = axis;\r\n\t\t\t}\r\n\r\n\t\t\treturn this._yAxis.get();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * The main (base) axis.\r\n\t *\r\n\t * This is the axis that series fills will go to, or grow animations will\r\n\t * happen from.\r\n\t *\r\n\t * @param value Axis\r\n\t */\r\n\tpublic set baseAxis(value: Axis) {\r\n\t\tif (this._baseAxis != value) {\r\n\t\t\tthis._baseAxis = value;\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Axis\r\n\t */\r\n\tpublic get baseAxis(): Axis {\r\n\t\tif (!this._baseAxis) {\r\n\t\t\tif (this.yAxis instanceof DateAxis) {\r\n\t\t\t\tthis._baseAxis = this.yAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.xAxis instanceof DateAxis) {\r\n\t\t\t\tthis._baseAxis = this.xAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.yAxis instanceof CategoryAxis) {\r\n\t\t\t\tthis._baseAxis = this.yAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (this.xAxis instanceof CategoryAxis) {\r\n\t\t\t\tthis._baseAxis = this.xAxis;\r\n\t\t\t}\r\n\r\n\t\t\tif (!this._baseAxis) {\r\n\t\t\t\tthis._baseAxis = this.xAxis;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this._baseAxis;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes values after data items' were added.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItems Data items\r\n\t */\r\n\tpublic processValues(working: boolean): void {\r\n\r\n\t\tsuper.processValues(working);\r\n\r\n\t\tlet dataItems = this.dataItems;\r\n\r\n\t\tlet minX = Infinity;\r\n\t\tlet maxX = - Infinity;\r\n\r\n\t\tlet minY = Infinity;\r\n\t\tlet maxY = - Infinity;\r\n\r\n\t\tlet startIndex = this.startIndex;\r\n\t\tlet endIndex = this.endIndex;\r\n\r\n\t\tif (!working) {\r\n\t\t\tstartIndex = 0;\r\n\t\t\tendIndex = this.dataItems.length;\r\n\t\t}\r\n\r\n\t\tfor (let i = startIndex; i < endIndex; i++) {\r\n\t\t\tlet dataItem = dataItems.getIndex(i);\r\n\r\n\t\t\tthis.getStackValue(dataItem, working);\r\n\r\n\t\t\tlet stackX = dataItem.getValue(\"valueX\", \"stack\");\r\n\t\t\tlet stackY = dataItem.getValue(\"valueY\", \"stack\");\r\n\r\n\t\t\tminX = $math.min(dataItem.getMin(this._xValueFields, working, stackX), minX);\r\n\t\t\tminY = $math.min(dataItem.getMin(this._yValueFields, working, stackY), minY);\r\n\r\n\t\t\tmaxX = $math.max(dataItem.getMax(this._xValueFields, working, stackX), maxX);\r\n\t\t\tmaxY = $math.max(dataItem.getMax(this._yValueFields, working, stackY), maxY);\r\n\r\n\t\t\t// if it's stacked, pay attention to stack value\r\n\t\t\tif (this.stacked) {\r\n\t\t\t\tif (this.baseAxis == this.xAxis) {\r\n\t\t\t\t\tminY = $math.min(minY, stackY);\r\n\t\t\t\t}\r\n\t\t\t\tif (this.baseAxis == this.yAxis) {\r\n\t\t\t\t\tminX = $math.min(minX, stackX);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t// this is mainly for value axis to calculate total and perecent.total of each series category\r\n\t\tthis.xAxis.processSeriesDataItems();\r\n\t\tthis.yAxis.processSeriesDataItems();\r\n\r\n\t\tlet xAxisId: string = this.xAxis.uid;\r\n\t\tlet yAxisId: string = this.yAxis.uid;\r\n\r\n\t\tif (!working) {\r\n\t\t\tif (this._tmin.getKey(xAxisId) != minX || this._tmax.getKey(xAxisId) != maxX || this._tmin.getKey(yAxisId) != minY || this._tmax.getKey(yAxisId) != maxY) {\r\n\t\t\t\tthis._tmin.setKey(xAxisId, minX);\r\n\t\t\t\tthis._tmax.setKey(xAxisId, maxX);\r\n\t\t\t\tthis._tmin.setKey(yAxisId, minY);\r\n\t\t\t\tthis._tmax.setKey(yAxisId, maxY);\r\n\r\n\t\t\t\tlet stackedSeries = this.stackedSeries;\r\n\t\t\t\tif (stackedSeries) {\r\n\t\t\t\t\tif (stackedSeries.isDisposed()) {\r\n\t\t\t\t\t\tthis.stackedSeries = undefined;\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tstackedSeries.processValues(false);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.dispatchImmediately(\"extremeschanged\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this._smin.getKey(xAxisId) != minX || this._smax.getKey(xAxisId) != maxX || this._smin.getKey(yAxisId) != minY || this._smax.getKey(yAxisId) != maxY) {\r\n\t\t\tthis._smin.setKey(xAxisId, minX);\r\n\t\t\tthis._smax.setKey(xAxisId, maxX);\r\n\t\t\tthis._smin.setKey(yAxisId, minY);\r\n\t\t\tthis._smax.setKey(yAxisId, maxY);\r\n\r\n\t\t\tif (this.appeared || this.start != 0 || this.end != 1) {\r\n\t\t\t\tthis.dispatchImmediately(\"selectionextremeschanged\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (!working && this.stacked) {\r\n\t\t\tthis.processValues(true);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides element's [[Tooltip]].\r\n\t *\r\n\t * @see {@link Tooltip}\r\n\t */\r\n\tpublic hideTooltip() {\r\n\t\tsuper.hideTooltip();\r\n\t\tthis.returnBulletDefaultState();\r\n\t\tthis._prevTooltipDataItem = undefined;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows series tooltip at specific position.\r\n\t *\r\n\t * @param xPosition X\r\n\t * @param yPosition Y\r\n\t */\r\n\tpublic showTooltipAtPosition(xPosition: number, yPosition: number): IPoint {\r\n\r\n\t\tlet dataItem: this[\"_dataItem\"];\r\n\r\n\t\tif (this.visible && !this.isHiding && !this.isShowing) {\r\n\r\n\t\t\tlet xAxis: Axis = this._xAxis.get();\r\n\t\t\tlet yAxis: Axis = this._yAxis.get();\r\n\r\n\t\t\tif (xAxis == this.baseAxis) {\r\n\t\t\t\tdataItem = <this[\"_dataItem\"]>xAxis.getSeriesDataItem(this, xAxis.toAxisPosition(xPosition), this.snapTooltip);\r\n\t\t\t}\r\n\t\t\tif (yAxis == this.baseAxis) {\r\n\t\t\t\tdataItem = <this[\"_dataItem\"]>yAxis.getSeriesDataItem(this, yAxis.toAxisPosition(yPosition), this.snapTooltip);\r\n\t\t\t}\r\n\r\n\t\t\tlet point = this.showTooltipAtDataItem(dataItem);\r\n\r\n\t\t\tif (point) {\r\n\t\t\t\treturn point;\r\n\t\t\t}\r\n\r\n\t\t\t// so that if tooltip is shown on columns or bullets for it not to be hidden\r\n\t\t\tif (!this.tooltipText) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.hideTooltip();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows series tooltip at specific dataItem.\r\n\t *\r\n\t * @param dataItem\r\n\t */\r\n\tpublic showTooltipAtDataItem(dataItem: this[\"_dataItem\"]): IPoint {\r\n\t\tthis.returnBulletDefaultState(dataItem);\r\n\t\tif (dataItem && dataItem.visible) {\r\n\t\t\tthis.updateLegendValue(dataItem);\r\n\t\t\tif (this.cursorTooltipEnabled) {\r\n\t\t\t\tthis.tooltipDataItem = dataItem;\r\n\r\n\t\t\t\t// todo: add tooltipXField and tooltipYField.\r\n\t\t\t\tlet tooltipXField = this.tooltipXField;\r\n\t\t\t\tlet tooltipYField = this.tooltipYField;\r\n\r\n\t\t\t\tif ($type.hasValue((<any>dataItem)[tooltipXField]) && $type.hasValue((<any>dataItem)[tooltipYField])) {\r\n\r\n\t\t\t\t\tlet tooltipPoint = this.getPoint(dataItem, tooltipXField, tooltipYField, dataItem.locations[tooltipXField], dataItem.locations[tooltipYField]);\r\n\r\n\t\t\t\t\tif (tooltipPoint) {\r\n\r\n\t\t\t\t\t\tthis.tooltipX = tooltipPoint.x;\r\n\t\t\t\t\t\tthis.tooltipY = tooltipPoint.y;\r\n\r\n\t\t\t\t\t\tif (this._prevTooltipDataItem != dataItem) {\r\n\t\t\t\t\t\t\tthis.dispatchImmediately(\"tooltipshownat\", {\r\n\t\t\t\t\t\t\t\ttype: \"tooltipshownat\",\r\n\t\t\t\t\t\t\t\ttarget: this,\r\n\t\t\t\t\t\t\t\tdataItem: dataItem\r\n\t\t\t\t\t\t\t});\r\n\r\n\t\t\t\t\t\t\tthis._prevTooltipDataItem = dataItem;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.cursorHoverEnabled) {\r\n\t\t\t\t\t\t\tfor (let sprite of dataItem.sprites) {\r\n\t\t\t\t\t\t\t\tif (!sprite.parent.visible || sprite.isHidden || sprite.__disabled || sprite.disabled || sprite.isHiding) {\r\n\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\t\t\tsprite.isHover = true;\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tif (this.showTooltip()) {\r\n\t\t\t\t\t\t\treturn $utils.spritePointToSvg({ x: tooltipPoint.x, y: tooltipPoint.y }, this);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * returns default state to bullets when tooltip is shown at some other data item or hidden\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected returnBulletDefaultState(dataItem?: XYSeriesDataItem) {\r\n\t\tif (this._prevTooltipDataItem && this._prevTooltipDataItem != dataItem) {\r\n\t\t\tfor (let sprite of this._prevTooltipDataItem.sprites) {\r\n\t\t\t\tif (!sprite.isDisposed()) {\r\n\t\t\t\t\tsprite.isHover = false;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis._prevTooltipDataItem = undefined;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\tprotected shouldCreateBullet(dataItem: this[\"_dataItem\"], bulletTemplate: Bullet): boolean {\r\n\t\t// use series xField/yField if bullet doesn't have fields set\r\n\t\tlet xField: string = bulletTemplate.xField;\r\n\t\tif (!$type.hasValue(xField)) {\r\n\t\t\txField = this.xField;\r\n\t\t}\r\n\r\n\t\tlet yField: string = bulletTemplate.yField;\r\n\t\tif (!$type.hasValue(yField)) {\r\n\t\t\tyField = this.yField;\r\n\t\t}\r\n\r\n\t\tif ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n\t\t\treturn false;\r\n\t\t}\r\n\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/*\r\n\t\tpublic positionBullet(bullet: Bullet) {\r\n\t\t\tsuper.positionBullet(bullet);\r\n\t\r\n\t\t\tlet dataItem:XYSeriesDataItem = <XYSeriesDataItem>bullet.dataItem;\r\n\t\r\n\t\t\t// use series xField/yField if bullet doesn't have fields set\r\n\t\t\tlet xField: string = bullet.xField;\r\n\t\t\tif (!$type.hasValue(xField)) {\r\n\t\t\t\txField = this.xField;\r\n\t\t\t}\r\n\t\r\n\t\t\tlet yField: string = bullet.yField;\r\n\t\t\tif (!$type.hasValue(yField)) {\r\n\t\t\t\tyField = this.yField;\r\n\t\t\t}\r\n\t\r\n\t\t\tif ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n\t\t\t\tbullet.visible = false;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet bulletLocationX: number = this.getBulletLocationX(bullet, xField);\r\n\t\t\t\tlet bulletLocationY: number = this.getBulletLocationY(bullet, yField);\r\n\t\r\n\t\t\t\tlet point = this.getPoint(dataItem, xField, yField, bulletLocationX, bulletLocationY);\r\n\t\t\t\tif (point) {\r\n\t\t\t\t\tlet xOpenField = this.xOpenField;\r\n\t\t\t\t\tlet yOpenField = this.yOpenField;\r\n\t\r\n\t\t\t\t\tlet xAxis = this.xAxis;\r\n\t\t\t\t\tlet yAxis = this.yAxis;\r\n\t\t\t\t\tlet positionX:number;\r\n\t\t\t\t\tlet positionY:number;\r\n\t\t\t\r\n\t\t\t\t\tif((xAxis instanceof DateAxis && (xOpenField && xOpenField != xField)) || xAxis instanceof ValueAxis){\r\n\t\r\n\t\t\t\t\t\tif(!$type.isNumber(bulletLocationX)){\r\n\t\t\t\t\t\t\tbulletLocationX = 0;\r\n\t\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\t\tlet openValue:number;\r\n\t\t\t\t\t\tlet closeValue:number = dataItem.getWorkingValue(xField);\r\n\t\r\n\t\t\t\t\t\tif(!xOpenField){\r\n\t\t\t\t\t\t\topenValue = xAxis.min;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\topenValue = dataItem.getWorkingValue(xOpenField);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationX);\r\n\t\r\n\t\t\t\t\t\tpositionX = xAxis.valueToPosition(middleValue);\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if(xAxis instanceof CategoryAxis){\r\n\t\t\t\t\t\tpositionX = xAxis.categoryToPosition((<any>dataItem)[xField], bulletLocationX);\r\n\t\t\t\t\t}\t\r\n\t\r\n\t\t\t\t\tif((yAxis instanceof DateAxis && (yOpenField && yOpenField != yField)) || yAxis instanceof ValueAxis){\r\n\t\r\n\t\t\t\t\t\tif(!$type.isNumber(bulletLocationY)){\r\n\t\t\t\t\t\t\tbulletLocationY = 0;\r\n\t\t\t\t\t\t}\t\t\t\t\t\r\n\t\r\n\t\t\t\t\t\tlet openValue:number;\r\n\t\t\t\t\t\tlet closeValue:number = dataItem.getWorkingValue(yField);\r\n\t\r\n\t\t\t\t\t\tif(!yOpenField){\r\n\t\t\t\t\t\t\topenValue = yAxis.min;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse{\r\n\t\t\t\t\t\t\topenValue = dataItem.getWorkingValue(yOpenField);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tlet middleValue = openValue + (closeValue - openValue) * (1 - bulletLocationY);\r\n\t\r\n\t\t\t\t\t\tpositionY = yAxis.valueToPosition(middleValue);\r\n\t\t\t\t\t}\t\t\t\t\r\n\t\t\t\t\telse if(yAxis instanceof CategoryAxis){\r\n\t\t\t\t\t\tpositionY = yAxis.categoryToPosition((<any>dataItem)[yField], bulletLocationY);\t\t\t\t\t\r\n\t\t\t\t\t}\r\n\t\r\n\t\t\t\t\tbullet.visible = true;\r\n\t\r\n\t\t\t\t\tthis.positionBulletReal(bullet, positionX, positionY);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tbullet.visible = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\t\r\n\t\r\n\t\tprotected positionBulletReal(bullet:Sprite, positionX:number, positionY:number){\r\n\t\t\tbullet.x = this.xAxis.renderer.positionToPoint(positionX).x;\r\n\t\t\tbullet.y = this.yAxis.renderer.positionToPoint(positionY).y;\r\n\t\t}\r\n\t*/\r\n\r\n\r\n\r\n\t/**\r\n\t * Positions series bullet.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param bullet Bullet\r\n\t */\r\n\tpublic positionBullet(bullet: Bullet) {\r\n\t\tsuper.positionBullet(bullet);\r\n\r\n\t\tlet dataItem: XYSeriesDataItem = <XYSeriesDataItem>bullet.dataItem;\r\n\r\n\t\t// use series xField/yField if bullet doesn't have fields set\r\n\t\tlet xField: string = bullet.xField;\r\n\t\tif (!$type.hasValue(xField)) {\r\n\t\t\txField = this.xField;\r\n\t\t}\r\n\r\n\t\tlet yField: string = bullet.yField;\r\n\t\tif (!$type.hasValue(yField)) {\r\n\t\t\tyField = this.yField;\r\n\t\t}\r\n\r\n\t\tif ((this.xAxis instanceof ValueAxis && !dataItem.hasValue([xField])) || (this.yAxis instanceof ValueAxis && !dataItem.hasValue([yField]))) {\r\n\t\t\tbullet.visible = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet bulletLocationX: number = this.getBulletLocationX(bullet, xField);\r\n\t\t\tlet bulletLocationY: number = this.getBulletLocationY(bullet, yField);\r\n\r\n\t\t\tlet point = this.getPoint(dataItem, xField, yField, bulletLocationX, bulletLocationY);\r\n\t\t\tif (point) {\r\n\t\t\t\tlet x: number = point.x;\r\n\t\t\t\tlet y: number = point.y;\r\n\r\n\t\t\t\tif ($type.isNumber(bullet.locationX) && this.xOpenField != this.xField) {\r\n\t\t\t\t\tlet openX: number = this.xAxis.getX(dataItem, this.xOpenField);\r\n\t\t\t\t\tx = x - (x - openX) * bullet.locationX;\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\tif ($type.isNumber(bullet.locationY) && this.yOpenField != this.yField) {\r\n\t\t\t\t\tlet openY: number = this.yAxis.getY(dataItem, this.yOpenField);\r\n\t\t\t\t\ty = y - (y - openY) * bullet.locationY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tbullet.moveTo({ x: x, y: y });\r\n\r\n\t\t\t\tbullet.visible = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tbullet.visible = false;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t* returns bullet x location\r\n\t* @ignore\r\n\t*/\r\n\tprotected getBulletLocationX(bullet: Bullet, field: string): number {\r\n\t\tlet bulletLocation: number = bullet.locationX;\r\n\t\tlet dataItem = bullet.dataItem;\r\n\t\tif (!$type.isNumber(bulletLocation)) {\r\n\t\t\tbulletLocation = dataItem.workingLocations[field];\r\n\t\t}\r\n\t\treturn bulletLocation;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t* returns bullet x location\r\n\t* @ignore\r\n\t*/\r\n\tprotected getBulletLocationY(bullet: Bullet, field: string): number {\r\n\t\tlet bulletLocation: number = bullet.locationY;\r\n\t\tlet dataItem = bullet.dataItem;\r\n\t\tif (!$type.isNumber(bulletLocation)) {\r\n\t\t\tbulletLocation = dataItem.workingLocations[field];\r\n\t\t}\r\n\t\treturn bulletLocation;\r\n\t}\r\n\r\n\t/**\r\n\t * Can items from this series be included into stacks?\r\n\t * \r\n\t * Note: proper stacking is only possible if series have the same number\r\n\t * of data items. To ensure this, don't set data directly on series\r\n\t * but do this on chart instead.\r\n\t *\r\n\t * @default false\r\n\t * @param stacked Can be stacked?\r\n\t */\r\n\tpublic set stacked(stacked: boolean) {\r\n\t\tthis.setPropertyValue(\"stacked\", stacked, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Can be stacked?\r\n\t */\r\n\tpublic get stacked(): boolean {\r\n\t\treturn this.getPropertyValue(\"stacked\");\r\n\t}\r\n\r\n\t/**\r\n\t * Should the nearest tooltip be shown if no data item is found on the\r\n\t * current cursor position?\r\n\t *\r\n\t * @default false\r\n\t * @param value Should snap?\r\n\t */\r\n\tpublic set snapTooltip(value: boolean) {\r\n\t\tthis.setPropertyValue(\"snapTooltip\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Should snap?\r\n\t */\r\n\tpublic get snapTooltip(): boolean {\r\n\t\treturn this.getPropertyValue(\"snapTooltip\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Shows hidden series.\r\n\t *\r\n\t * @param duration Duration of reveal animation (ms)\r\n\t * @return Animation\r\n\t */\r\n\tpublic show(duration?: number): Animation {\r\n\r\n\t\tlet fields: string[];\r\n\t\tif (this.xAxis instanceof ValueAxis && this.xAxis != this.baseAxis) {\r\n\t\t\tfields = this._xValueFields;\r\n\t\t}\r\n\r\n\t\tif (this.yAxis instanceof ValueAxis && this.yAxis != this.baseAxis) {\r\n\t\t\tfields = this._yValueFields;\r\n\t\t}\r\n\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\t\tlet delay: number = 0;\r\n\r\n\t\tlet interpolationDuration = this.defaultState.transitionDuration;\r\n\t\tif ($type.isNumber(duration)) {\r\n\t\t\tinterpolationDuration = duration;\r\n\t\t}\r\n\r\n\t\tlet anim: Animation;\r\n\t\t$iter.each($iter.indexed(this.dataItems.iterator()), (a) => {\r\n\t\t\tlet i = a[0];\r\n\t\t\tlet dataItem = a[1];\r\n\r\n\t\t\tif (this.sequencedInterpolation && interpolationDuration > 0) {\r\n\t\t\t\tdelay = this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n\t\t\t}\r\n\t\t\tanim = dataItem.show(interpolationDuration, delay, fields);\r\n\t\t});\r\n\r\n\t\tlet animation = super.show(duration);\r\n\r\n\t\tif (anim && !anim.isFinished()) {\r\n\t\t\tanimation = anim;\r\n\t\t}\r\n\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * Hides series.\r\n\t *\r\n\t * @param duration Duration of hiding animation (ms)\r\n\t * @return Animation\r\n\t */\r\n\tpublic hide(duration?: number): Animation {\r\n\r\n\t\tlet fields: string[];\r\n\t\tlet value: number;\r\n\t\tlet xAxis: Axis = this.xAxis;\r\n\r\n\t\tif (xAxis instanceof ValueAxis && xAxis != this.baseAxis) {\r\n\t\t\tfields = this._xValueFields;\r\n\t\t\t// animate to zero if 0 is within zoomMin/zoomMax\r\n\t\t\tif (this.stacked || (xAxis.minZoomed < 0 && xAxis.maxZoomed > 0) || this.stackedSeries) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = xAxis.min;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet yAxis: Axis = this.yAxis;\r\n\t\tif (yAxis instanceof ValueAxis && yAxis != this.baseAxis) {\r\n\t\t\tfields = this._yValueFields;\r\n\t\t\t// animate to zero if 0 is within zoomMin/zoomMax\r\n\t\t\tif (this.stacked || (yAxis.minZoomed < 0 && yAxis.maxZoomed > 0) || this.stackedSeries) {\r\n\t\t\t\tvalue = 0;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tvalue = yAxis.min;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//if ($type.hasValue(fields)) {\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\r\n\t\tlet interpolationDuration = this.hiddenState.transitionDuration;\r\n\t\tif ($type.isNumber(duration)) {\r\n\t\t\tinterpolationDuration = duration;\r\n\t\t}\r\n\r\n\t\tlet delay: number = 0;\r\n\t\tlet anim: Animation;\r\n\r\n\t\t$iter.each($iter.indexed(this.dataItems.iterator()), (a) => {\r\n\t\t\tlet i = a[0];\r\n\t\t\tlet dataItem = a[1];\r\n\r\n\t\t\tif (interpolationDuration == 0) {\r\n\t\t\t\tdataItem.hide(0, 0, value, fields);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this.sequencedInterpolation && interpolationDuration > 0) {\r\n\t\t\t\t\tdelay = this.sequencedInterpolationDelay * i + interpolationDuration * (i - startIndex) / (endIndex - startIndex);\r\n\t\t\t\t}\r\n\t\t\t\tanim = dataItem.hide(interpolationDuration, delay, value, fields);\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet animation = super.hide(interpolationDuration);\r\n\t\tif (animation && !animation.isFinished()) {\r\n\t\t\tanimation.delay(delay);\r\n\t\t}\r\n\r\n\t\tif (anim && !anim.isFinished()) {\r\n\t\t\tanimation = anim;\r\n\t\t}\r\n\r\n\t\t// helps to avoid flicker. otherwise columns will show up at full size and only on next frame will animate from 0\r\n\t\tthis.validateDataElements();\r\n\t\t//}\r\n\t\treturn animation;\r\n\t}\r\n\r\n\t/**\r\n\t * [handleDataItemWorkingValueChange description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataItemWorkingValueChange(dataItem?: this[\"_dataItem\"], name?: string): void {\r\n\t\tsuper.handleDataItemWorkingValueChange(dataItem, name);\r\n\r\n\t\t// to calculate stack values\r\n\t\tlet axisSeries: List<XYSeries> = <List<XYSeries>>this.baseAxis.series;\r\n\r\n\t\t$iter.each(axisSeries.iterator(), (series) => {\r\n\t\t\tif (series.stacked) {\r\n\t\t\t\tseries.invalidateProcessedData();\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * [getStackValue description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic getStackValue(dataItem: this[\"_dataItem\"], working?: boolean): void {\r\n\t\t// todo: here wer stack x and y values only. question is - what should we do with other values, like openX, openY?\r\n\t\t// if this series is not stacked or new stack begins, return.\r\n\r\n\t\tif (!this.stacked) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// it might seem that it's better to go through base axis series, but we do not maintain the same order as in chart.series there.\r\n\t\t\tlet chart: XYChart = this.chart;\r\n\t\t\tlet index: number = chart.series.indexOf(this);\r\n\r\n\t\t\tlet field: string;\r\n\r\n\t\t\tif (this.xAxis != this.baseAxis && this.xAxis instanceof ValueAxis) {\r\n\t\t\t\tfield = this.xField;\r\n\t\t\t}\r\n\t\t\tif (this.yAxis != this.baseAxis && this.yAxis instanceof ValueAxis) {\r\n\t\t\t\tfield = this.yField;\r\n\t\t\t}\r\n\r\n\t\t\tif(!field){\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\r\n\t\t\t//this is good for removing series, otherwise stack values will remain the same and chart won't pay atention when adding/removing series\t\t\t\r\n\t\t\tdataItem.setCalculatedValue(field, 0, \"stack\");\r\n\r\n\t\t\t$iter.eachContinue(chart.series.range(0, index).backwards().iterator(), (prevSeries) => {\r\n\t\t\t\t// stacking is only possible if both axes are the same\r\n\t\t\t\tif (prevSeries.xAxis == this.xAxis && prevSeries.yAxis == this.yAxis) {\r\n\t\t\t\t\t// saving value\r\n\t\t\t\t\tprevSeries.stackedSeries = this;\r\n\r\n\t\t\t\t\tlet prevDataItem = prevSeries.dataItems.getIndex(dataItem.index); // indexes should match\r\n\r\n\t\t\t\t\tif (prevDataItem && prevDataItem.hasValue(this._xValueFields) && prevDataItem.hasValue(this._yValueFields)) {\r\n\r\n\t\t\t\t\t\tlet value = dataItem.getValue(field);\r\n\t\t\t\t\t\tlet prevValue: number;\r\n\r\n\t\t\t\t\t\tif (working) {\r\n\t\t\t\t\t\t\tprevValue = prevDataItem.getWorkingValue(field) + prevDataItem.getValue(field, \"stack\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tprevValue = prevDataItem.getValue(field) + prevDataItem.getValue(field, \"stack\");\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\t// if >= then series might get stacked to hidden negative series, so this is correct\r\n\t\t\t\t\t\tif ((value >= 0 && prevValue > 0) || (value < 0 && prevValue < 0)) {\r\n\t\t\t\t\t\t\t//dataItem.events.disable();\r\n\t\t\t\t\t\t\tdataItem.setCalculatedValue(field, prevValue, \"stack\");\r\n\t\t\t\t\t\t\t//dataItem.events.enable();\r\n\t\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (!prevSeries.stacked) {\r\n\t\t\t\t\t\treturn false;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [xField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get xField(): string {\r\n\t\treturn this._xField;\r\n\t}\r\n\r\n\t/**\r\n\t * [yField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get yField(): string {\r\n\t\treturn this._yField;\r\n\t}\r\n\r\n\t/**\r\n\t * [xOpenField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get xOpenField(): string {\r\n\t\treturn this._xOpenField;\r\n\t}\r\n\r\n\t/**\r\n\t * [yOpenField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get yOpenField(): string {\r\n\t\treturn this._yOpenField;\r\n\t}\r\n\r\n\t/**\r\n\t * [tooltipXField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set tooltipXField(value: string) {\r\n\t\tthis._tooltipXField = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get tooltipXField(): string {\r\n\t\tif (this._tooltipXField) {\r\n\t\t\treturn this._tooltipXField;\r\n\t\t}\r\n\t\treturn this._xField;\r\n\t}\r\n\r\n\t/**\r\n\t * [tooltipYField description]\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @param value [description]\r\n\t */\r\n\tpublic set tooltipYField(value: string) {\r\n\t\tthis._tooltipYField = value;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description\r\n\t * @return [description]\r\n\t */\r\n\tpublic get tooltipYField(): string {\r\n\t\tif (this._tooltipYField) {\r\n\t\t\treturn this._tooltipYField;\r\n\t\t}\r\n\t\treturn this._yField;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns lowest value in the series for the specific axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic min(axis: ValueAxis): number {\r\n\t\treturn this._tmin.getKey(axis.uid);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns highest value in the series for the specific axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic max(axis: ValueAxis): number {\r\n\t\treturn this._tmax.getKey(axis.uid);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns lowest value in the series for the specific axis within current\r\n\t * selection.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic selectionMin(axis: ValueAxis): number {\r\n\t\tlet value = this._smin.getKey(axis.uid);\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.min(axis);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Returns highest value in the series for the specific axis within current\r\n\t * selection.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t * @return value\r\n\t */\r\n\tpublic selectionMax(axis: ValueAxis): number {\r\n\t\tlet value = this._smax.getKey(axis.uid);\r\n\t\tif (!$type.isNumber(value)) {\r\n\t\t\tvalue = this.max(axis);\r\n\t\t}\r\n\t\treturn value;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up base axes\r\n\t\t\tif ($type.hasValue(config.baseAxis) && $type.isString(config.baseAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.baseAxis)) {\r\n\t\t\t\t\tconfig.baseAxis = this.map.getKey(config.baseAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.baseAxis + \"\\\" found for `baseAxis`.\");\r\n\t\t\t\t\tdelete config.baseAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.xAxis)) {\r\n\t\t\t\t\tconfig.xAxis = this.map.getKey(config.xAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`.\");\r\n\t\t\t\t\tdelete config.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.yAxis)) {\r\n\t\t\t\t\tconfig.yAxis = this.map.getKey(config.yAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYSeries (\" + (this.name || \"unnamed\") + \")] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`.\");\r\n\t\t\t\t\tdelete config.yAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set up axis ranges\r\n\t\t\tif ($type.hasValue(config.axisRanges) && $type.isArray(config.axisRanges)) {\r\n\t\t\t\tfor (let i = 0, len = config.axisRanges.length; i < len; i++) {\r\n\t\t\t\t\tlet range = config.axisRanges[i];\r\n\t\t\t\t\tif (!$type.hasValue(range.type)) {\r\n\t\t\t\t\t\trange.type = \"AxisDataItem\";\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif ($type.hasValue(range.axis) && $type.isString(range.axis) && this.map.hasKey(range.axis)) {\r\n\t\t\t\t\t\trange.component = this.map.getKey(range.axis);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.hasValue(range.component) && $type.isString(range.component) && this.map.hasKey(range.component)) {\r\n\t\t\t\t\t\trange.component = this.map.getKey(range.component);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Parse date fields based on the series fields\r\n\t\t\tif (!$type.hasValue(config.dataFields) || !$type.isObject(config.dataFields)) {\r\n\t\t\t\tthis.processingErrors.push(\"`dataFields` is not set for series [\" + (this.name || \"unnamed\") + \"]\");\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param xKey Name of X data field\r\n\t * @param yKey Name of Y data field\r\n\t * @param locationX X location\r\n\t * @param locationY Y location\r\n\t * @param stackKeyX ?\r\n\t * @param stackKeyY ?\r\n\t * @returns Coordinates\r\n\t */\r\n\tpublic getPoint(dataItem: XYSeriesDataItem, xKey: string, yKey: string, locationX?: number, locationY?: number, stackKeyX?: string, stackKeyY?: string): IPoint {\r\n\t\tlet x: number = this.xAxis.getX(dataItem, xKey, locationX);\r\n\t\tlet y: number = this.yAxis.getY(dataItem, yKey, locationY);\r\n\r\n\t\tx = $math.fitToRange(x, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n\t\ty = $math.fitToRange(y, -100000, 100000); // from geometric point of view this is not right, but practically it's ok. this is done to avoid too big objects.\r\n\r\n\t\treturn { x: x, y: y };\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Updates item reader text based on the type and set up of axis.\r\n\t */\r\n\tprotected updateItemReaderText(): void {\r\n\t\tlet text = \"\"\r\n\t\t$object.each(this.dataFields, (key, val) => {\r\n\t\t\ttext += \"{\" + key + \"} \";\r\n\t\t});\r\n\t\tthis.itemReaderText = text;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if series should display a tooltip for chart's cursor.\r\n\t *\r\n\t * If set to `true` (default), the tooltips set for all series item's\r\n\t * elements like columns and bullets will be automatically shown\r\n\t * when [[XYCursor]] passes over category/date, even if its not hovered\r\n\t * directly over the item.\r\n\t *\r\n\t * Set this to `false` to disable such behavior and display item-specific\r\n\t * tooltips only when hovered directly over them\r\n\t *\r\n\t * @default true\r\n\t * @param value Display tooltip?\r\n\t */\r\n\tpublic set cursorTooltipEnabled(value: boolean) {\r\n\t\tthis.setPropertyValue(\"cursorTooltipEnabled\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Display tooltip?\r\n\t */\r\n\tpublic get cursorTooltipEnabled(): boolean {\r\n\t\treturn this.getPropertyValue(\"cursorTooltipEnabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if series should apply hover state on bullets/columns/etc when\r\n\t * cursor is over the data item.\r\n\t *\r\n\t * If set to `true` (default) and chart cursor is enabled on th chart,\r\n\t * hovering over date/category will trigger hover states on related Series\r\n\t * items like bullets and columns.\r\n\t *\r\n\t * @default true\r\n\t * @since 4.2.2\r\n\t * @param value Hover enabled?\r\n\t */\r\n\tpublic set cursorHoverEnabled(value: boolean) {\r\n\t\tthis.setPropertyValue(\"cursorHoverEnabled\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Hover enabled?\r\n\t */\r\n\tpublic get cursorHoverEnabled(): boolean {\r\n\t\treturn this.getPropertyValue(\"cursorHoverEnabled\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if series' values should be excluded when calculating totals.\r\n\t * \r\n\t * @default false\r\n\t * @since 4.4.9\r\n\t * @param value Exclude from totals?\r\n\t */\r\n\tpublic set excludeFromTotal(value: boolean) {\r\n\t\tthis.setPropertyValue(\"excludeFromTotal\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Exclude from totals?\r\n\t */\r\n\tpublic get excludeFromTotal(): boolean {\r\n\t\treturn this.getPropertyValue(\"excludeFromTotal\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYSeries\"] = XYSeries;\r\nregistry.registeredClasses[\"XYSeriesDataItem\"] = XYSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/series/XYSeries.ts","/**\r\n * Cursor module\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { getInteraction, IInteractionEvents } from \"../../core/interaction/Interaction\";\r\nimport { IInteractionObjectEvents } from \"../../core/interaction/InteractionObjectEvents\";\r\nimport { IPoint, } from \"../../core/defs/IPoint\";\r\nimport { Chart } from \"../Chart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport { Animation } from \"../../core/utils/Animation\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[Cursor]].\r\n */\r\nexport interface ICursorProperties extends IContainerProperties { }\r\n\r\n/**\r\n * Defines events for [[Cursor]].\r\n */\r\nexport interface ICursorEvents extends IContainerEvents {\r\n\r\n\t/**\r\n\t * Invoked when position of cursor changes.\r\n\t */\r\n\tcursorpositionchanged: {};\r\n\r\n\t/**\r\n\t * Invoked when user starts selecting a range with a cursor, e.g. presses\r\n\t * down mouse button and drags the cursor.\r\n\t */\r\n\tselectstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when selection has ended, e.g. user releases mouse button.\r\n\t */\r\n\tselectended: {};\r\n\r\n\t/**\r\n\t * Invoked when user starts zooming using cursor.\r\n\t */\r\n\tzoomstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when user clicked to start zooming/panning/selecting but haven't\r\n\t * finished the operation.\r\n\t */\r\n\tbehaviorcanceled: {};\r\n\r\n\t/**\r\n\t * Invoked when user is done zooming using cursor.\r\n\t */\r\n\tzoomended: {};\r\n\r\n\t/**\r\n\t * Invoked when user starts panning using cursor.\r\n\t */\r\n\tpanstarted: {};\r\n\r\n\t/**\r\n\t * Invoked when user is done panning using cursor.\r\n\t */\r\n\tpanended: {};\r\n\r\n\t/**\r\n\t * Invoked when user is panning using cursor.\r\n\t */\r\n\tpanning: {};\r\n}\r\n\r\n/**\r\n * Defines adapters for [[Cursor]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ICursorAdapters extends IContainerAdapters, ICursorProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Main Cursor class with common cursor functionality.\r\n *\r\n * Chart-specific cursors must extend this class.\r\n *\r\n * @see {@link ICursorEvents} for a list of available events\r\n * @see {@link ICursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n * @todo Should we allow changing `_generalBehavior`?\r\n */\r\nexport class Cursor extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ICursorProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ICursorAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ICursorEvents;\r\n\r\n\t/**\r\n\t * Point coordinates of where selection started.\r\n\t */\r\n\tpublic downPoint: IPoint;\r\n\r\n\t/**\r\n\t * Point coordinates of where selection ended.\r\n\t */\r\n\tpublic upPoint: IPoint;\r\n\r\n\t/**\r\n\t * Current cursor position during selection.\r\n\t *\r\n\t * @todo Better description\r\n\t */\r\n\tpublic point: IPoint = { x: 0, y: 0 };\r\n\r\n\t/**\r\n\t * Relative horizontal position.\r\n\t *\r\n\t * @todo: maybe we should make getter only? it is used from outside by axes or series to show tooltips at some position\r\n\t */\r\n\tpublic xPosition: number;\r\n\r\n\t/**\r\n\t * Relative vertical position.\r\n\t *\r\n\t * @todo: maybe we should make getter only? it is used from outside by axes or series to show tooltips at some position\r\n\t */\r\n\tpublic yPosition: number;\r\n\r\n\t/**\r\n\t * [_usesSelection description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _usesSelection: boolean;\r\n\r\n\t/**\r\n\t * What to do when user pressed down and drags cursor: zoom or select.\r\n\t */\r\n\tprotected _generalBehavior: \"zoom\" | \"select\" | \"pan\"; // todo: draw\r\n\r\n\t/**\r\n\t * A reference to chart cursor belongs to.\r\n\t */\r\n\tpublic _chart: Chart;\r\n\r\n\t/**\r\n\t * Specifies the rules when cursor needs to be moved or hidden.\r\n\t */\r\n\tprotected _stick: \"hard\" | \"soft\" | \"none\" = \"none\";\r\n\r\n\t/**\r\n\t * A screen point that cursor is \"stuck\" to.\r\n\t */\r\n\tprotected _stickPoint: IPoint;\r\n\r\n\t/**\r\n\t * non-modified down point\r\n\t * @ignore\r\n\t */\r\n\tprotected _downPointOrig: IPoint;\r\n\r\n\t/**\r\n\t * non-modified up point\r\n\t * @ignore\r\n\t */\r\n\tprotected _upPointOrig: IPoint;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"Cursor\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.width = percent(100);\r\n\t\tthis.height = percent(100);\r\n\t\tthis.shouldClone = false;\r\n\r\n\t\tthis.hide(0);\r\n\r\n\t\tthis.trackable = true;\r\n\t\tthis.clickable = true;\r\n\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\t// Add events on body to trigger down and up events (to start zooming or\r\n\t\t// selection)\r\n\t\tconst interaction = getInteraction();\r\n\t\tthis._disposers.push(interaction.body.events.on(\"down\", this.handleCursorDown, this));\r\n\t\tthis._disposers.push(interaction.body.events.on(\"up\", this.handleCursorUp, this));\r\n\t\tthis._disposers.push(interaction.body.events.on(\"track\", this.handleCursorMove, this));\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Handle pointer movement in document and update cursor position as needed.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleCursorMove(event: IInteractionObjectEvents[\"track\"]): IPoint {\r\n\r\n\r\n\t\tif (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tif (((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\") || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n\t\t\t// We want to let zoom/pan continue even if cursor is outside chart area\r\n\t\t\tif (!this.isHidden || !this.isHiding) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet local: IPoint = $utils.documentPointToSprite(event.pointer.point, this);\r\n\r\n\t\tif (this._stick == \"hard\" && this._stickPoint) {\r\n\t\t\tlocal = this._stickPoint;\r\n\t\t}\r\n\r\n\t\tif (this._stick == \"soft\" && this._stickPoint) {\r\n\t\t\tif (!this.fitsToBounds(local)) {\r\n\t\t\t\tlocal = this._stickPoint;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.triggerMove(local);\r\n\t\treturn local;\r\n\t}\r\n\r\n\t/**\r\n\t * Hides actual SVG elements and handles hiding animations.\r\n\t *\r\n\t * @param duration Fade out duration (ms)\r\n\t * @return Fade out duration (ms)\r\n\t * @ignore\r\n\t */\r\n\tprotected hideReal(duration?: number): $type.Optional<Animation> {\r\n\t\tif ((this._stick == \"hard\" || this._stick == \"soft\") && this._stickPoint) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\treturn super.hideReal(duration);\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Places the cursor at specific point.\r\n\t *\r\n\t * The second parameter has following options:\r\n\t *\r\n\t * `\"none\"` - placed cursor will only be there until mouse/touch moves, then\r\n\t * it either moves to a new place (if pointer over plot area) or is hidden.\r\n\t *\r\n\t * `\"soft\"` - cursor will stay in the place if mouse/touch is happening\r\n\t * outside chart, but will move to a new place whe plot area is hovered or\r\n\t * touched.\r\n\t *\r\n\t * `\"hard\"` - cursor will stay in place no matter what, until it is moved by\r\n\t * another `triggerMove()` call.\r\n\t *\r\n\t * @param point Point to place cursor at\r\n\t * @param stick Level of cursor stickiness to the place\r\n\t */\r\n\tpublic triggerMove(point: IPoint, stick?: \"hard\" | \"soft\" | \"none\"): void {\r\n\r\n\t\tpoint.x = $math.round(point.x, 1);\r\n\t\tpoint.y = $math.round(point.y, 1);\r\n\r\n\t\tif (stick) {\r\n\t\t\tthis._stick = stick;\r\n\t\t}\r\n\r\n\t\tif (stick == \"hard\" || stick == \"soft\") {\r\n\t\t\tthis._stickPoint = point;\r\n\t\t}\r\n\r\n\t\tthis.triggerMoveReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Places the cursor at specific point.\r\n\t *\r\n\t * @param point Point to place cursor at\r\n\t */\r\n\tprotected triggerMoveReal(point: IPoint): void {\r\n\t\tif (this.point.x != point.x || this.point.y != point.y) {\r\n\t\t\tthis.point = point;\r\n\t\t\tthis.invalidatePosition();\r\n\t\t\t// hide cursor if it's out of bounds\r\n\t\t\tif (this.fitsToBounds(point)) {\r\n\t\t\t\tthis.show(0);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// unless we are selecting (mouse is down)\r\n\t\t\t\tif (!this.downPoint) {\r\n\t\t\t\t\tthis.hide(0);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (this.visible) {\r\n\t\t\t\tthis.getPositions();\r\n\r\n\t\t\t\tthis.dispatch(\"cursorpositionchanged\"); // not good to dispatch later (check step count example)\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates pressing down (click/touch) action by a cursor.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tpublic triggerDown(point: IPoint) {\r\n\t\tthis.triggerDownReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates pressing down (click/touch) action by a cursor.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tprotected triggerDownReal(point: IPoint) {\r\n\t\tswitch (this._generalBehavior) {\r\n\t\t\tcase \"zoom\":\r\n\t\t\t\tthis.dispatchImmediately(\"zoomstarted\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"select\":\r\n\t\t\t\tthis.dispatchImmediately(\"selectstarted\");\r\n\t\t\t\tbreak;\r\n\t\t\tcase \"pan\":\r\n\t\t\t\tthis.dispatchImmediately(\"panstarted\");\r\n\t\t\t\tgetInteraction().setGlobalStyle(MouseCursorStyle.grabbing);\r\n\t\t\t\tbreak;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates the action of release of the mouse down / touch.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tpublic triggerUp(point: IPoint) {\r\n\t\tthis.triggerUpReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * Simulates the action of release of the mouse down / touch.\r\n\t *\r\n\t * @param point Point of action\r\n\t */\r\n\tprotected triggerUpReal(point: IPoint) {\r\n\r\n\t\tthis.updatePoint(this.upPoint);\r\n\t\tlet interaction = getInteraction();\r\n\r\n\t\tif ($math.getDistance(this._upPointOrig, this._downPointOrig) > interaction.getHitOption(this.interactions, \"hitTolerance\")) {\r\n\t\t\tswitch (this._generalBehavior) {\r\n\t\t\t\tcase \"zoom\":\r\n\t\t\t\t\tthis.dispatchImmediately(\"zoomended\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"select\":\r\n\t\t\t\t\tthis.dispatchImmediately(\"selectended\");\r\n\t\t\t\t\tbreak;\r\n\r\n\t\t\t\tcase \"pan\":\r\n\t\t\t\t\tthis.dispatchImmediately(\"panended\");\r\n\t\t\t\t\tinteraction.setGlobalStyle(MouseCursorStyle.default);\r\n\t\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tthis.downPoint = undefined;\r\n\t\t\tthis.updateSelection();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.dispatchImmediately(\"behaviorcanceled\");\r\n\t\t\tinteraction.setGlobalStyle(MouseCursorStyle.default);\r\n\t\t\tthis.downPoint = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates selection dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSelection(): void {\r\n\t}\r\n\r\n\t/**\r\n\t * Updates cursors current positions.\r\n\t */\r\n\tprotected getPositions(): void {\r\n\t\t// positions are used by axes or series\r\n\t\tthis.xPosition = this.point.x / this.innerWidth;\r\n\t\tthis.yPosition = 1 - this.point.y / this.innerHeight;\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pointer down event so we can start zoom or selection.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original event\r\n\t */\r\n\tpublic handleCursorDown(event: IInteractionEvents[\"down\"]): void {\r\n\r\n\t\tif (!this.interactionsEnabled || (this.interactions.isTouchProtected && event.touch) || !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\t// Get local point\r\n\t\tlet local: IPoint = $utils.documentPointToSprite(event.pointer.point, this);\r\n\r\n\t\tthis._downPointOrig = { x: local.x, y: local.y };\r\n\r\n\t\t// We need to cancel the event to prevent gestures on touch devices\r\n\t\tif (event.event.cancelable && this.shouldPreventGestures(event.touch) && this.fitsToBounds(local)) {\r\n\t\t\tevent.event.preventDefault();\r\n\t\t}\r\n\r\n\t\t// Make this happen\r\n\t\tthis.triggerMove(local);\r\n\t\tthis.triggerDown(local);\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether Cursor should prevent default action on move.\r\n\t *\r\n\t * Child classes should override this as necessary.\r\n\t * \r\n\t * @return Prevent default?\r\n\t */\r\n\tprotected shouldPreventGestures(touch: boolean): boolean {\r\n\t\treturn true;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the coordinates of where pointer down event occurred\r\n\t * (was pressed).\r\n\t */\r\n\tprotected updatePoint(point: IPoint) {\r\n\t}\r\n\r\n\t/**\r\n\t * Handles pointer up event - finishes zoom or selection action.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original event\r\n\t */\r\n\tpublic handleCursorUp(event: IInteractionEvents[\"up\"]): void {\r\n\t\tif (!this.interactionsEnabled) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (((this._generalBehavior != \"zoom\" && this._generalBehavior != \"pan\") || !this.downPoint) && !getInteraction().isLocalElement(event.pointer, this.paper.svg, this.uid)) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tlet local: IPoint = $utils.documentPointToSprite(event.pointer.point, this);\r\n\t\tthis._upPointOrig = { x: local.x, y: local.y };\r\n\r\n\t\tthis.triggerMove(local);\r\n\t\tthis.triggerUp(local);\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to a [[Chart]] the cursor belongs to.\r\n\t *\r\n\t * @param value Chart\r\n\t */\r\n\tpublic set chart(value: this[\"_chart\"]) {\r\n\t\tthis._chart = value;\r\n\t\tif ($type.hasValue((<any>this._chart).plotContainer)) {\r\n\t\t\tgetInteraction().lockElement((<any>this._chart).plotContainer.interactions);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Chart\r\n\t */\r\n\tpublic get chart(): this[\"_chart\"] {\r\n\t\treturn this._chart;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"Cursor\"] = Cursor;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/cursors/Cursor.ts","/**\r\n * Cursor for XY chart\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Cursor, ICursorProperties, ICursorAdapters, ICursorEvents } from \"./Cursor\";\r\nimport { Sprite, ISpriteEvents } from \"../../core/Sprite\";\r\nimport { MutableValueDisposer, MultiDisposer, IDisposer } from \"../../core/utils/Disposer\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { IRange } from \"../../core/defs/IRange\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { AxisRenderer } from \"../axes/AxisRenderer\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { getInteraction } from \"../../core/interaction/Interaction\";\r\nimport { MouseCursorStyle } from \"../../core/interaction/Mouse\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[XYCursor]].\r\n */\r\nexport interface IXYCursorProperties extends ICursorProperties {\r\n\r\n\t/**\r\n\t * Cursor's behavior when moved with pointer down:\r\n\t *\r\n\t * * \"zoomX\" - zooms horizontally; (default)\r\n\t * * \"zoomY\" - zooms vertically;\r\n\t * * \"zoomXY\" - zooms both horizontally and vertically;\r\n\t * * \"selectX\" - selects a range horizontally;\r\n\t * * \"selectY\" - selects a range vertically;\r\n\t * * \"selectXY\" - selects a range both horizontally and vertically;\r\n\t * * \"panX\" - moves (pans) current selection horizontally;\r\n\t * * \"panY\" - moves (pans) current selection vertically;\r\n\t * * \"panXY\" - moves (pans) current selection both horizontally and vertically;\r\n\t * * \"none\" - does nothing with pointer down.\r\n\t *\r\n\t * @default \"zoomX\"\r\n\t */\r\n\tbehavior?: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\";\r\n\r\n\t/**\r\n\t * Cursor's horizontal line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t */\r\n\tfullWidthLineX?: boolean;\r\n\r\n\t/**\r\n\t * Cursor's vertical line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t */\r\n\tfullWidthLineY?: boolean;\r\n\r\n\t/**\r\n\t * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n\t * This setting specifies relative value by how much we can pan out the plot\r\n\t */\r\n\tmaxPanOut?: number;\r\n\r\n\t/**\r\n\t * Specifies to which series cursor lines should be snapped. Works when one\r\n\t * of the axis is `DateAxis` or `CategoryAxis`. Won't work if both axes are\r\n\t * `ValueAxis`.\r\n\t */\r\n\tsnapToSeries: XYSeries;\r\n}\r\n\r\n/**\r\n * Defines events for [[XYCursor]].\r\n */\r\nexport interface IXYCursorEvents extends ICursorEvents { }\r\n\r\n/**\r\n * Defines adapters for [[XYCursor]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYCursorAdapters extends ICursorAdapters, IXYCursorProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A cursor used on [[XYChart]].\r\n *\r\n * @see {@link IXYCursorEvents} for a list of available events\r\n * @see {@link IXYCursorAdapters} for a list of available Adapters\r\n * @todo Add description, examples\r\n */\r\nexport class XYCursor extends Cursor {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYCursorProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters\r\n\t */\r\n\tpublic _adapter!: IXYCursorAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYCursorEvents;\r\n\r\n\t/**\r\n\t * Vertical cursor line element.\r\n\t */\r\n\tprotected _lineX = new MutableValueDisposer<Sprite>();\r\n\r\n\t/**\r\n\t * Horizontal cursor line element.\r\n\t */\r\n\tprotected _lineY = new MutableValueDisposer<Sprite>();\r\n\r\n\t/**\r\n\t * Element which highlights selected area.\r\n\t */\r\n\tprotected _selection: Sprite;\r\n\r\n\t/**\r\n\t * A range of current horizontal selection.\r\n\t */\r\n\tpublic xRange: IRange;\r\n\r\n\t/**\r\n\t * A range of current vertical selection.\r\n\t */\r\n\tpublic yRange: IRange;\r\n\r\n\t/**\r\n\t * Horizontal [[Axis]].\r\n\t */\r\n\tprotected _xAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * Vertical [[Axis]].\r\n\t */\r\n\tprotected _yAxis = new MutableValueDisposer<Axis<AxisRenderer>>();\r\n\r\n\t/**\r\n\t * A reference to chart cursor belongs to.\r\n\t */\r\n\tpublic _chart: XYChart;\r\n\r\n\tprotected _snapToDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"XYCursor\";\r\n\r\n\t\t// Defaults\r\n\t\tthis.behavior = \"zoomX\";\r\n\r\n\t\tthis.maxPanOut = 0.1;\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\t// Create selection element\r\n\t\tlet selection: Sprite = this.createChild(Sprite);\r\n\t\tselection.shouldClone = false;\r\n\t\tselection.fillOpacity = 0.2;\r\n\t\tselection.fill = interfaceColors.getFor(\"alternativeBackground\");\r\n\t\tselection.isMeasured = false;\r\n\t\tselection.interactionsEnabled = false;\r\n\t\tthis.selection = selection;\r\n\t\tthis._disposers.push(this.selection);\r\n\r\n\t\t// Create cursor's vertical line\r\n\t\tlet lineX: Sprite = this.createChild(Sprite);\r\n\t\tlineX.shouldClone = false;\r\n\t\tlineX.stroke = interfaceColors.getFor(\"grid\");\r\n\t\tlineX.fill = color();\r\n\t\tlineX.strokeDasharray = \"3,3\";\r\n\t\tlineX.isMeasured = false;\r\n\t\tlineX.strokeOpacity = 0.4;\r\n\t\tlineX.interactionsEnabled = false;\r\n\t\tlineX.y = 0;// important\r\n\t\tthis.lineX = lineX;\r\n\t\tthis._disposers.push(this.lineX);\r\n\r\n\t\t// Create cursor's horizontal line\r\n\t\tlet lineY: Sprite = this.createChild(Sprite);\r\n\t\tlineY.shouldClone = false;\r\n\t\tlineY.stroke = interfaceColors.getFor(\"grid\");\r\n\t\tlineY.fill = color();\r\n\t\tlineY.strokeDasharray = \"3,3\";\r\n\t\tlineY.isMeasured = false;\r\n\t\tlineY.strokeOpacity = 0.4;\r\n\t\tlineY.interactionsEnabled = false;\r\n\t\tlineY.x = 0; // important\r\n\t\tthis.lineY = lineY;\r\n\t\tthis._disposers.push(this.lineY);\r\n\r\n\t\t// Add handler for size changes\r\n\t\tthis.events.on(\"sizechanged\", this.updateSize, this, false);\r\n\r\n\t\tthis._disposers.push(this._lineX);\r\n\t\tthis._disposers.push(this._lineY);\r\n\t\tthis._disposers.push(this._xAxis);\r\n\t\tthis._disposers.push(this._yAxis);\r\n\r\n\t\tthis.mask = this;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates cursor element dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSize(): void {\r\n\t\tif (this.lineX) {\r\n\t\t\tthis.lineX.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: 0, y: this.innerHeight });\r\n\t\t}\r\n\t\tif (this.lineY) {\r\n\t\t\tthis.lineY.path = $path.moveTo({ x: 0, y: 0 }) + $path.lineTo({ x: this.innerWidth, y: 0 });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates selection dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSelection(): void {\r\n\t\tif (this._usesSelection) {\r\n\t\t\tlet downPoint: IPoint = this.downPoint;\r\n\r\n\t\t\tif (downPoint) {\r\n\t\t\t\tlet point: IPoint = this.point;\r\n\r\n\t\t\t\tif (this.lineX) {\r\n\t\t\t\t\tpoint.x = this.lineX.pixelX;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.lineY) {\r\n\t\t\t\t\tpoint.y = this.lineY.pixelY;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet selection: Sprite = this.selection;\r\n\r\n\t\t\t\tlet x: number = Math.min(point.x, downPoint.x);\r\n\t\t\t\tlet y: number = Math.min(point.y, downPoint.y);\r\n\r\n\t\t\t\tlet w: number = $math.round(Math.abs(downPoint.x - point.x), this._positionPrecision);\r\n\t\t\t\tlet h: number = $math.round(Math.abs(downPoint.y - point.y), this._positionPrecision);\r\n\r\n\t\t\t\tswitch (this.behavior) {\r\n\t\t\t\t\tcase \"zoomX\":\r\n\t\t\t\t\t\ty = 0;\r\n\t\t\t\t\t\th = this.pixelHeight;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"zoomY\":\r\n\t\t\t\t\t\tx = 0;\r\n\t\t\t\t\t\tw = this.pixelWidth;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"selectX\":\r\n\t\t\t\t\t\ty = 0;\r\n\t\t\t\t\t\th = this.pixelHeight;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"selectY\":\r\n\t\t\t\t\t\tx = 0;\r\n\t\t\t\t\t\tw = this.pixelWidth;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tselection.x = x;\r\n\t\t\t\tselection.y = y;\r\n\r\n\t\t\t\tselection.path = $path.rectangle(w, h);\r\n\r\n\t\t\t\tselection.validatePosition(); // otherwise Edge shoes some incorrect size rectangle\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.selection.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\r\n\tprotected fixPoint(point: IPoint): IPoint {\r\n\t\tpoint.x = Math.max(0, point.x);\r\n\t\tpoint.y = Math.max(0, point.y);\r\n\t\tpoint.x = Math.min(this.pixelWidth, point.x);\r\n\t\tpoint.y = Math.min(this.pixelHeight, point.y);\r\n\r\n\t\treturn point;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Places the cursor at specific point.\r\n\t *\r\n\t * @param point Point to place cursor at\r\n\t */\r\n\tprotected triggerMoveReal(point: IPoint): void {\r\n\r\n\t\tsuper.triggerMoveReal(point);\r\n\r\n\t\tif ((this.snapToSeries && !this.snapToSeries.isHidden)) {\r\n\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.updateLinePositions(point);\r\n\t\t}\r\n\r\n\t\tif (this.downPoint && $math.getDistance(this.downPoint, point) > 3) {\r\n\t\t\tif (this._generalBehavior == \"pan\") {\r\n\t\t\t\tthis.getPanningRanges();\r\n\t\t\t\tthis.dispatch(\"panning\");\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updateLinePositions(point: IPoint) {\r\n\t\tpoint = this.fixPoint(this.point);\r\n\r\n\t\tif (this.lineX && this.lineX.visible && !this.xAxis) {\r\n\t\t\tthis.lineX.x = point.x;\r\n\t\t}\r\n\t\tif (this.lineY && this.lineY.visible && !this.yAxis) {\r\n\t\t\tthis.lineY.y = point.y;\r\n\t\t}\r\n\t\tthis.updateSelection();\r\n\t}\r\n\r\n\r\n\tprotected triggerDownReal(point: IPoint) {\r\n\r\n\t\tif (this.visible && !this.isHiding) {\r\n\r\n\t\t\tif (this.fitsToBounds(point)) {\r\n\t\t\t\tthis.downPoint = { x: point.x, y: point.y };\r\n\r\n\t\t\t\tthis.updatePoint(point);\r\n\r\n\t\t\t\t//this.updateLinePositions(point); // otherwise lines won't be in correct position and touch won't work fine\r\n\r\n\t\t\t\tthis.point.x = this.downPoint.x;\r\n\t\t\t\tthis.point.y = this.downPoint.y;\r\n\r\n\t\t\t\tlet selection: Sprite = this.selection;\r\n\t\t\t\tlet selectionX: number = this.downPoint.x;\r\n\t\t\t\tlet selectionY: number = this.downPoint.y;\r\n\r\n\t\t\t\tif (this._usesSelection) {\r\n\t\t\t\t\tselection.x = selectionX;\r\n\t\t\t\t\tselection.y = selectionY;\r\n\t\t\t\t\tselection.path = \"\";\r\n\t\t\t\t\tselection.show();\r\n\t\t\t\t}\r\n\t\t\t\tsuper.triggerDownReal(point);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.downPoint = undefined;\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.downPoint = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates the coordinates of where pointer down event occurred\r\n\t * (was pressed).\r\n\t */\r\n\tprotected updatePoint(point: IPoint) {\r\n\t\tif (this.lineX) {\r\n\t\t\tpoint.x = this.lineX.pixelX;\r\n\t\t}\r\n\t\tif (this.lineY) {\r\n\t\t\tpoint.y = this.lineY.pixelY;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tprotected triggerUpReal(point: IPoint) {\r\n\t\tif ($math.getDistance(this._upPointOrig, this._downPointOrig) > getInteraction().getHitOption(this.interactions, \"hitTolerance\")) {\r\n\t\t\tif (this.downPoint) {\r\n\t\t\t\tthis.upPoint = point;\r\n\r\n\t\t\t\tthis.updatePoint(this.upPoint);\r\n\r\n\t\t\t\tthis.getRanges();\r\n\r\n\t\t\t\tif (this.behavior == \"selectX\" || this.behavior == \"selectY\" || this.behavior == \"selectXY\") {\r\n\t\t\t\t\t// void\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.selection.hide();\r\n\t\t\t\t}\r\n\t\t\t\tsuper.triggerUpReal(point);\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis.selection.hide(0);\r\n\r\n\t\t\t// reset cursor style, just in case\r\n\t\t\tif (this._generalBehavior == \"pan\") {\r\n\t\t\t\tlet interaction = getInteraction();\r\n\t\t\t\tinteraction.setGlobalStyle(MouseCursorStyle.default);\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.downPoint = undefined;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [getRanges description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected getPanningRanges() {\r\n\r\n\t\tlet startX = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n\t\tlet startY = $math.round(this.downPoint.y / this.innerHeight, 5);\r\n\r\n\t\tlet currentX = $math.round(this.point.x / this.innerWidth, 5);\r\n\t\tlet currentY = $math.round(this.point.y / this.innerHeight, 5);\r\n\r\n\t\tlet deltaX = startX - currentX;\r\n\t\tlet deltaY = -startY + currentY;\r\n\r\n\t\tthis.xRange = { start: deltaX, end: 1 + deltaX };\r\n\t\tthis.yRange = { start: deltaY, end: 1 + deltaY };\r\n\r\n\t\tif (this.behavior == \"panX\") {\r\n\t\t\tthis.yRange.start = 0;\r\n\t\t\tthis.yRange.end = 1;\r\n\t\t}\r\n\t\tif (this.behavior == \"panY\") {\r\n\t\t\tthis.xRange.start = 0;\r\n\t\t\tthis.xRange.end = 1;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * [getRanges description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected getRanges() {\r\n\t\tif (this.lineX) {\r\n\t\t\tthis.upPoint.x = this.lineX.pixelX;\r\n\t\t}\r\n\t\tif (this.lineY) {\r\n\t\t\tthis.upPoint.y = this.lineY.pixelY;\r\n\t\t}\r\n\r\n\t\t// @todo Is this needed?\r\n\t\t$utils.used(this.selection);\r\n\r\n\t\tlet startX: number = $math.round(this.downPoint.x / this.innerWidth, 5);\r\n\t\tlet endX: number = $math.round((this.upPoint.x) / this.innerWidth, 5);\r\n\r\n\t\tlet startY: number = $math.round(this.downPoint.y / this.innerHeight, 5);\r\n\t\tlet endY: number = $math.round((this.upPoint.y) / this.innerHeight, 5);\r\n\r\n\t\tthis.xRange = { start: $math.min(startX, endX), end: $math.max(startX, endX) };\r\n\t\tthis.yRange = { start: $math.min(startY, endY), end: $math.max(startY, endY) };\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor's behavior when it's moved with pointer down:\r\n\t *\r\n\t * * \"zoomX\" - zooms horizontally;\r\n\t * * \"zoomY\" - zooms vertically;\r\n\t * * \"zoomXY\" - zooms both horizontally and vertically;\r\n\t * * \"selectX\" - selects a range horizontally;\r\n\t * * \"selectY\" - selects a range vertically;\r\n\t * * \"selectXY\" - selects a range both horizontally and vertically;\r\n\t * * \"panX\" - moves (pans) current selection horizontally;\r\n\t * * \"panY\" - moves (pans) current selection vertically;\r\n\t * * \"panXY\" - moves (pans) current selection both horizontally and vertically;\r\n\t * * \"none\" - does nothing with pointer down.\r\n\t *\r\n\t * E.g. \"zoomXY\" will mean that pressing a mouse (or touching) over plot area\r\n\t * and dragging it will start zooming the chart.\r\n\t *\r\n\t * @param value Bheavior\r\n\t */\r\n\tpublic set behavior(value: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\") {\r\n\t\tthis.setPropertyValue(\"behavior\", value, true);\r\n\r\n\t\tthis._usesSelection = false;\r\n\r\n\t\tif (value.indexOf(\"zoom\") != -1) {\r\n\t\t\tthis._generalBehavior = \"zoom\";\r\n\t\t\tthis._usesSelection = true;\r\n\t\t}\r\n\t\tif (value.indexOf(\"select\") != -1) {\r\n\t\t\tthis._generalBehavior = \"select\";\r\n\t\t\tthis._usesSelection = true;\r\n\t\t}\r\n\t\tif (value.indexOf(\"pan\") != -1) {\r\n\t\t\tthis._generalBehavior = \"pan\";\r\n\t\t\tthis._usesSelection = false;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Behavior\r\n\t */\r\n\tpublic get behavior(): \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"selectX\" | \"selectY\" | \"selectXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\" {\r\n\t\treturn this.getPropertyValue(\"behavior\");\r\n\t}\r\n\r\n\t/**\r\n\t * Determines whether Cursor should prevent default action on move.\r\n\t *\r\n\t * If cursor's behavior is \"none\", it should not obstruct the page scrolling.\r\n\t *\r\n\t * @return Prevent default?\r\n\t */\r\n\tprotected shouldPreventGestures(touch: boolean): boolean {\r\n\t\treturn (!this.interactions.isTouchProtected || !touch) && this.behavior != \"none\";\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor's horizontal line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t *\r\n\t * NOTE: this setting will work properly if `xAxis` is set and only in case\r\n\t * `xAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * @param value Full width?\r\n\t */\r\n\tpublic set fullWidthLineX(value: boolean) {\r\n\t\tthis.setPropertyValue(\"fullWidthLineX\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Full width?\r\n\t */\r\n\tpublic get fullWidthLineX(): boolean {\r\n\t\treturn this.getPropertyValue(\"fullWidthLineX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Cursor's vertical line is expanded to take full width of the related\r\n\t * Axis' cell/category.\r\n\t *\r\n\t * NOTE: this setting will work properly if `yAxis` is set and only in case\r\n\t * `yAxis` is [[CategoryAxis]] or [[DateAxis]].\r\n\t *\r\n\t * @param value Full width?\r\n\t */\r\n\tpublic set fullWidthLineY(value: boolean) {\r\n\t\tthis.setPropertyValue(\"fullWidthLineY\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Full width?\r\n\t */\r\n\tpublic get fullWidthLineY(): boolean {\r\n\t\treturn this.getPropertyValue(\"fullWidthLineY\");\r\n\t}\r\n\r\n\t/**\r\n\t * If cursor behavior is panX or panY, we allow to pan plot out of it's max bounds for a better user experience.\r\n\t * This setting specifies relative value by how much we can pan out the plot\r\n\t *\r\n\t * @param value\r\n\t */\r\n\tpublic set maxPanOut(value: number) {\r\n\t\tthis.setPropertyValue(\"maxPanOut\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Full width?\r\n\t */\r\n\tpublic get maxPanOut(): number {\r\n\t\treturn this.getPropertyValue(\"maxPanOut\");\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to X [[Axis]].\r\n\t *\r\n\t * An XY cursor can live without `xAxis` set. You set xAxis for cursor when\r\n\t * you have axis tooltip enabled and you want cursor line to be at the same\r\n\t * position as tooltip.\r\n\t *\r\n\t * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n\t * [[ValueAxis]].\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param axis X axis\r\n\t */\r\n\tpublic set xAxis(axis: Axis) {\r\n\t\tif (this._xAxis.get() != axis) {\r\n\t\t\tthis._xAxis.set(axis, new MultiDisposer([\r\n\t\t\t\taxis.tooltip.events.on(\"positionchanged\", this.handleXTooltipPosition, this, false),\r\n\t\t\t\t//axis.events.on(\"validated\", chart.handleCursorPositionChange, chart, false)\r\n\t\t\t]));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return X axis\r\n\t */\r\n\tpublic get xAxis(): Axis {\r\n\t\treturn this._xAxis.get();\r\n\t}\r\n\r\n\t/**\r\n\t * A reference to Y [[Axis]].\r\n\t *\r\n\t * An XY cursor can live without `yAxis` set. You set xAxis for cursor when\r\n\t * you have axis tooltip enabled and you want cursor line to be at the same\r\n\t * position as tooltip.\r\n\t *\r\n\t * This works with [[CategoryAxis]] and [[DateAxis]] but not with\r\n\t * [[ValueAxis]].\r\n\t *\r\n\t * @todo Description (review)\r\n\t * @param axis Y axis\r\n\t */\r\n\tpublic set yAxis(axis: Axis) {\r\n\t\tif (this._yAxis.get() != axis) {\r\n\t\t\tthis._yAxis.set(axis, new MultiDisposer([\r\n\t\t\t\taxis.tooltip.events.on(\"positionchanged\", this.handleYTooltipPosition, this, false),\r\n\t\t\t\t//axis.events.on(\"validated\", chart.handleCursorPositionChange, chart, false)\r\n\t\t\t]));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Y Axis\r\n\t */\r\n\tpublic get yAxis(): Axis {\r\n\t\treturn this._yAxis.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when axis tooltip changes position.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original Axis event\r\n\t */\r\n\tprotected handleXTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tlet tooltip: Tooltip = this.xAxis.tooltip;\r\n\t\tlet point: IPoint = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n\t\tlet x: number = point.x;\r\n\r\n\t\tif (this.lineX) {\r\n\t\t\tthis.lineX.x = x;\r\n\t\t\tif (!this.fitsToBounds(point)) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.xAxis && this.fullWidthLineX) {\r\n\t\t\tlet startPoint: IPoint = this.xAxis.currentItemStartPoint;\r\n\t\t\tlet endPoint: IPoint = this.xAxis.currentItemEndPoint;\r\n\t\t\tif (startPoint && endPoint) {\r\n\t\t\t\tthis.lineX.x = x;\r\n\t\t\t\tlet width: number = endPoint.x - startPoint.x;\r\n\t\t\t\tthis.lineX.path = $path.rectangle(width, this.innerHeight, -width / 2);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when Y axis changes position or scale.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Original Axis event\r\n\t */\r\n\tprotected handleYTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tlet tooltip: Tooltip = this.yAxis.tooltip;\r\n\t\tlet point: IPoint = $utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this);\r\n\t\tlet y: number = point.y;\r\n\r\n\t\tif (this.lineY) {\r\n\t\t\tthis.lineY.y = y;\r\n\r\n\t\t\tif (!this.fitsToBounds(point)) {\r\n\t\t\t\tthis.hide();\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (this.yAxis && this.fullWidthLineY) {\r\n\t\t\tlet startPoint: IPoint = this.yAxis.currentItemStartPoint;\r\n\t\t\tlet endPoint: IPoint = this.yAxis.currentItemEndPoint;\r\n\t\t\tif (startPoint && endPoint) {\r\n\t\t\t\tthis.lineY.y = y;\r\n\t\t\t\tlet height: number = endPoint.y - startPoint.y;\r\n\t\t\t\tthis.lineY.path = $path.rectangle(this.innerWidth, height, 0, -height / 2);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A Line element to use for X axis.\r\n\t *\r\n\t * @param lineX Line\r\n\t */\r\n\tpublic set lineX(lineX: Sprite) {\r\n\t\tif (lineX) {\r\n\t\t\tlineX.setElement(this.paper.add(\"path\"));\r\n\t\t\tthis._lineX.set(lineX, lineX.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n\t\t\tlineX.interactionsEnabled = false;\r\n\t\t\tlineX.parent = this;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._lineX.reset();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Line element\r\n\t */\r\n\tpublic get lineX(): Sprite {\r\n\t\treturn this._lineX.get();\r\n\t}\r\n\r\n\t/**\r\n\t * A Line element to use Y axis.\r\n\t *\r\n\t * @param lineY Line\r\n\t */\r\n\tpublic set lineY(lineY: Sprite) {\r\n\t\tif (lineY) {\r\n\t\t\tlineY.setElement(this.paper.add(\"path\"));\r\n\t\t\tthis._lineY.set(lineY, lineY.events.on(\"positionchanged\", this.updateSelection, this, false));\r\n\t\t\tlineY.parent = this;\r\n\t\t\tlineY.interactionsEnabled = false;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tthis._lineY.reset();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Line element\r\n\t */\r\n\tpublic get lineY(): Sprite {\r\n\t\treturn this._lineY.get();\r\n\t}\r\n\r\n\t/**\r\n\t * A selection element ([[Sprite]]).\r\n\t *\r\n\t * @param selection Selection rectangle\r\n\t */\r\n\tpublic set selection(selection: Sprite) {\r\n\t\tthis._selection = selection;\r\n\t\tif (selection) {\r\n\t\t\tselection.element = this.paper.add(\"path\");\r\n\t\t\tselection.parent = this;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Selection rectangle\r\n\t */\r\n\tpublic get selection(): Sprite {\r\n\t\treturn this._selection;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * Looks if `xAxis` and `yAxis` is set via ID in JSON config, and replaces\r\n\t * with real references.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.xAxis) && $type.isString(config.xAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.xAxis)) {\r\n\t\t\t\t\tconfig.xAxis = this.map.getKey(config.xAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.xAxis + \"\\\" found for `xAxis`\");\r\n\t\t\t\t\tdelete config.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.yAxis) && $type.isString(config.yAxis)) {\r\n\t\t\t\tif (this.map.hasKey(config.yAxis)) {\r\n\t\t\t\t\tconfig.yAxis = this.map.getKey(config.yAxis);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYCursor] No axis with id \\\"\" + config.yAxis + \"\\\" found for `yAxis`\");\r\n\t\t\t\t\tdelete config.yAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.hasValue(config.snapToSeries) && $type.isString(config.snapToSeries)) {\r\n\t\t\t\tif (this.map.hasKey(config.snapToSeries)) {\r\n\t\t\t\t\tconfig.snapToSeries = this.map.getKey(config.snapToSeries);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.processingErrors.push(\"[XYCursor] No series with id \\\"\" + config.snapToSeries + \"\\\" found for `series`\");\r\n\t\t\t\t\tdelete config.snapToSeries;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies to which series cursor lines should be snapped. Works when one\r\n\t * of the axis is `DateAxis` or `CategoryAxis`. Won't work if both axes are\r\n\t * `ValueAxis`.\r\n\t *\r\n\t * @param {XYSeries}\r\n\t */\r\n\tpublic set snapToSeries(series: XYSeries) {\r\n\t\tif (this.setPropertyValue(\"snapToSeries\", series)) {\r\n\t\t\tif (this._snapToDisposer) {\r\n\t\t\t\tthis._snapToDisposer.dispose();\r\n\t\t\t}\r\n\r\n\t\t\tif (series) {\r\n\t\t\t\tthis._snapToDisposer = series.events.on(\"tooltipshownat\", this.handleSnap, this, false);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return {XYSeries}\r\n\t */\r\n\tpublic get snapToSeries(): XYSeries {\r\n\t\treturn this.getPropertyValue(\"snapToSeries\");\r\n\t}\r\n\r\n\t/**\r\n\t * [handleSnap description]\r\n\t *\r\n\t * @ignore\r\n\t * @todo Description\r\n\t */\r\n\tpublic handleSnap() {\r\n\r\n\t\tlet series = this.snapToSeries;\r\n\t\tlet y = series.tooltipY;\r\n\t\tlet x = series.tooltipX;\r\n\r\n\t\tif (this.xAxis) {\r\n\t\t\tif (this.xAxis.renderer.opposite) {\r\n\t\t\t\ty -= this.pixelHeight;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.point = { x: x, y: y };\r\n\t\tthis.getPositions();\r\n\r\n\t\tlet xx = x;\r\n\t\tlet yy = y;\r\n\r\n\t\tx -= this.pixelWidth;\r\n\r\n\t\tif (this.yAxis) {\r\n\t\t\tif (this.yAxis.renderer.opposite) {\r\n\t\t\t\tx += this.pixelWidth;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tlet tooltip = series.tooltip;\r\n\t\tlet duration = tooltip.animationDuration;\r\n\t\tlet easing = tooltip.animationEasing;\r\n\r\n\t\tif (series.baseAxis == series.xAxis) {\r\n\t\t\tseries.yAxis.showTooltipAtPosition(this.yPosition);\r\n\t\t}\r\n\r\n\t\tif (series.baseAxis == series.yAxis) {\r\n\t\t\tseries.xAxis.showTooltipAtPosition(this.xPosition);\r\n\t\t}\r\n\r\n\t\tthis.lineX.animate([{ property: \"y\", to: y }], duration, easing);\r\n\t\tthis.lineY.animate([{ property: \"x\", to: x }], duration, easing);\r\n\r\n\t\tif (!this.xAxis) {\r\n\t\t\tthis.lineX.animate([{ property: \"x\", to: xx }], duration, easing);\r\n\t\t}\r\n\t\tif (!this.yAxis) {\r\n\t\t\tthis.lineY.animate([{ property: \"y\", to: yy }], duration, easing);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Destroys this object and all related data.\r\n\t */\r\n\tpublic dispose(){\r\n\t\tthis.hide(0);\r\n\t\tsuper.dispose();\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYCursor\"] = XYCursor;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/cursors/XYCursor.ts","/**\r\n * A module with functionality for buildin a scrollbar with an XY graph in it.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Scrollbar, IScrollbarProperties, IScrollbarAdapters, IScrollbarEvents } from \"../../core/elements/Scrollbar\";\r\nimport { Sprite } from \"../../core/Sprite\";\r\nimport { List, IListEvents } from \"../../core/utils/List\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { MutableValueDisposer } from \"../../core/utils/Disposer\";\r\nimport { XYChart } from \"../types/XYChart\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { InterfaceColorSet } from \"../../core/utils/InterfaceColorSet\";\r\nimport { DesaturateFilter } from \"../../core/rendering/filters/DesaturateFilter\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[XYChartScrollbar]].\r\n */\r\nexport interface IXYChartScrollbarProperties extends IScrollbarProperties { }\r\n\r\n/**\r\n * Defines events for [[XYChartScrollbar]].\r\n */\r\nexport interface IXYChartScrollbarEvents extends IScrollbarEvents { }\r\n\r\n/**\r\n * Defines adapters for [[XYChartScrollbar]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYChartScrollbarAdapters extends IScrollbarAdapters, IXYChartScrollbarProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A special version of the Scrollbar that has an XY chart in it.\r\n *\r\n * Used mainly as an advanced scrollbar with a preview for other XY charts.\r\n *\r\n * However, can be used as standalone element.\r\n *\r\n * @see {@link IXYChartScrollbarEvents} for a list of available events\r\n * @see {@link IXYChartScrollbarAdapters} for a list of available Adapters\r\n * @important\r\n */\r\nexport class XYChartScrollbar extends Scrollbar {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYChartScrollbarProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IXYChartScrollbarAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYChartScrollbarEvents;\r\n\r\n\t/**\r\n\t * An [[XYSeries]] used to draw a graph on the Scrollbar.\r\n\t */\r\n\tprotected _series: List<XYSeries>;\r\n\r\n\t/**\r\n\t * A chart element Scrollbar is for.\r\n\t */\r\n\tprotected _chart = new MutableValueDisposer<XYChart>();\r\n\r\n\t/**\r\n\t * A chart instance that shows mini-chart within Scrollbar.\r\n\t */\r\n\tprotected _scrollbarChart: XYChart;\r\n\r\n\t/**\r\n\t * [_unselectedOverlay description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected _unselectedOverlay: Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"XYChartScrollbar\";\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\t\tthis.padding(0, 0, 0, 0);\r\n\r\n\t\tlet scrollbarChart: XYChart = this.createChild(XYChart);\r\n\t\tscrollbarChart.shouldClone = false;\r\n\t\tscrollbarChart.margin(0, 0, 0, 0);\r\n\t\tscrollbarChart.padding(0, 0, 0, 0);\r\n\t\tscrollbarChart.interactionsEnabled = false;\r\n\r\n\t\tthis._scrollbarChart = scrollbarChart;\r\n\t\tthis._disposers.push(this._scrollbarChart);\r\n\r\n\t\tthis.minHeight = 60;\r\n\t\tthis.minWidth = 60;\r\n\r\n\t\tlet unselectedOverlay: Sprite = this.createChild(Sprite);\r\n\t\tunselectedOverlay.shouldClone = false;\r\n\t\tunselectedOverlay.setElement(this.paper.add(\"path\"));\r\n\t\tunselectedOverlay.fill = interfaceColors.getFor(\"background\");\r\n\t\tunselectedOverlay.fillOpacity = 0.8;\r\n\t\tunselectedOverlay.interactionsEnabled = false;\r\n\t\tunselectedOverlay.isMeasured = false;\r\n\t\tunselectedOverlay.toBack();\r\n\t\tthis._unselectedOverlay = unselectedOverlay;\r\n\t\tthis._disposers.push(this._unselectedOverlay);\r\n\r\n\t\tscrollbarChart.toBack();\r\n\r\n\t\tthis.background.cornerRadius(0, 0, 0, 0);\r\n\r\n\t\tlet thumbBackground = this.thumb.background;\r\n\t\tthumbBackground.cornerRadius(0, 0, 0, 0);\r\n\t\tthumbBackground.fillOpacity = 0;\r\n\t\tthumbBackground.fill = interfaceColors.getFor(\"background\");\r\n\r\n\t\tlet hoverState = thumbBackground.states.getKey(\"hover\");\r\n\t\tif (hoverState) {\r\n\t\t\thoverState.properties.fillOpacity = 0.2;\r\n\t\t}\r\n\r\n\t\tlet downState = thumbBackground.states.getKey(\"down\");\r\n\t\tif (downState) {\r\n\t\t\tdownState.properties.fillOpacity = 0.4;\r\n\t\t}\r\n\r\n\t\tthis._disposers.push(this._chart);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * A list of series that are used to draw graph(s) on the scrollbar.\r\n\t *\r\n\t * @readonly\r\n\t * @return Series\r\n\t */\r\n\tpublic get series(): List<XYSeries> {\r\n\t\tif (!this._series) {\r\n\t\t\tthis._series = new List<XYSeries>();\r\n\t\t\tthis._disposers.push(this._series.events.on(\"inserted\", this.handleSeriesAdded, this, false));\r\n\t\t\tthis._disposers.push(this._series.events.on(\"removed\", this.handleSeriesRemoved, this, false));\r\n\t\t}\r\n\t\treturn this._series;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates a new series when they are pushed into a `series` list.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleSeriesAdded(event: IListEvents<XYSeries>[\"inserted\"]) {\r\n\t\tlet sourceSeries: XYSeries = event.newValue;\r\n\t\tlet scrollbarChart: XYChart = this.scrollbarChart;\r\n\t\tscrollbarChart.zoomOutButton.disabled = true;\r\n\r\n\t\tthis.chart = sourceSeries.chart;\r\n\r\n\t\tlet addXAxis: boolean = true;\r\n\t\tlet addYAxis: boolean = true;\r\n\r\n\t\t// check if we haven't added clone of x or y axis before\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (series != sourceSeries) {\r\n\t\t\t\tif (series.xAxis == sourceSeries.xAxis) {\r\n\t\t\t\t\taddXAxis = false;\r\n\t\t\t\t}\r\n\t\t\t\tif (series.yAxis == sourceSeries.yAxis) {\r\n\t\t\t\t\taddYAxis = false;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\tlet interfaceColors = new InterfaceColorSet();\r\n\r\n\t\tlet series: XYSeries = <XYSeries>sourceSeries.clone();\r\n\r\n\t\tif (addXAxis) {\r\n\r\n\t\t\tlet xAxis = sourceSeries.xAxis.clone();\r\n\t\t\tscrollbarChart.xAxes.moveValue(xAxis);\r\n\t\t\txAxis.title.disabled = true;\r\n\t\t\txAxis.rangeChangeDuration = 0;\r\n\t\t\txAxis.id = sourceSeries.uid;\r\n\t\t\tlet renderer = xAxis.renderer;\r\n\t\t\trenderer.ticks.template.disabled = true;\r\n\t\t\trenderer.inside = true;\r\n\t\t\trenderer.labels.template.inside = true;\r\n\t\t\trenderer.line.strokeOpacity = 0;\r\n\t\t\trenderer.minLabelPosition = 0.02;\r\n\t\t\trenderer.maxLabelPosition = 0.98;\r\n\t\t\trenderer.line.disabled = true;\r\n\t\t\trenderer.axisFills.template.disabled = true;\r\n\t\t\trenderer.baseGrid.disabled = true;\r\n\t\t\trenderer.grid.template.strokeOpacity = 0.05;\r\n\t\t\trenderer.minWidth = undefined;\r\n\t\t\trenderer.minHeight = undefined;\r\n\t\t\trenderer.padding(0,0,0,0);\r\n\t\t\trenderer.chart = scrollbarChart;\r\n\t\t\trenderer.margin(0,0,0,0);\r\n\r\n\t\t\tlet labelsTemplate = renderer.labels.template;\r\n\t\t\tlabelsTemplate.fillOpacity = 0.5;\r\n\r\n\t\t\tseries.xAxis = xAxis;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// @todo find clone, otherwise there might be probs with multiple axes\r\n\t\t}\r\n\r\n\r\n\t\tif (addYAxis) {\r\n\t\t\tlet yAxis: Axis = <Axis>sourceSeries.yAxis.clone();\r\n\t\t\tscrollbarChart.yAxes.moveValue(yAxis);\r\n\t\t\tyAxis.title.disabled = true;\r\n\t\t\tyAxis.rangeChangeDuration = 0;\r\n\r\n\t\t\tlet renderer = yAxis.renderer;\r\n\t\t\trenderer.ticks.template.disabled = true;\r\n\t\t\trenderer.inside = true;\r\n\t\t\trenderer.labels.template.inside = true;\r\n\t\t\trenderer.line.strokeOpacity = 0;\r\n\t\t\trenderer.minLabelPosition = 0.02;\r\n\t\t\trenderer.maxLabelPosition = 0.98;\r\n\t\t\trenderer.line.disabled = true;\r\n\t\t\trenderer.axisFills.template.disabled = true;\r\n\t\t\trenderer.grid.template.stroke = interfaceColors.getFor(\"background\");\r\n\t\t\trenderer.baseGrid.disabled = true;\r\n\t\t\trenderer.grid.template.strokeOpacity = 0.05;\r\n\t\t\trenderer.minWidth = undefined;\r\n\t\t\trenderer.minHeight = undefined;\t\t\r\n\t\t\trenderer.chart = scrollbarChart;\r\n\t\t\trenderer.padding(0,0,0,0);\r\n\t\t\trenderer.margin(0,0,0,0);\r\n\r\n\t\t\tlet labelsTemplate = renderer.labels.template;\r\n\t\t\tlabelsTemplate.fillOpacity = 0.5;\r\n\r\n\t\t\tseries.yAxis = yAxis;\r\n\t\t}\r\n\t\telse {\r\n\t\t\t// @todo find clone, otherwise there might be probs with multiple axes\r\n\t\t}\r\n\r\n\t\tseries.rangeChangeDuration = 0;\r\n\t\tseries.interpolationDuration = 0;\r\n\t\tseries.defaultState.transitionDuration = 0;\r\n\t\tseries.showOnInit = false;\r\n\r\n\t\tthis._disposers.push(series.events.on(\"validated\", this.zoomOutAxes, this, false));\r\n\r\n\t\t// data might be set drectly on series\r\n\t\tthis._disposers.push(sourceSeries.events.on(\"datavalidated\", () => {\r\n\t\t\tif (series.data != sourceSeries.data) { // data setter doesn't check this\r\n\t\t\t\tseries.data = sourceSeries.data;\r\n\t\t\t}\r\n\t\t}, undefined, false));\r\n\t\tseries.defaultState.properties.visible = true;\r\n\r\n\t\tseries.filters.push(new DesaturateFilter());\r\n\t\tscrollbarChart.series.push(series);\r\n\r\n\t\tthis.updateByOrientation();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected updateByOrientation() {\r\n\t\tif (this._scrollbarChart) {\r\n\t\t\t$iter.each(this._scrollbarChart.xAxes.iterator(), (xAxis) => {\r\n\t\t\t\tlet renderer = xAxis.renderer;\r\n\t\t\t\tif (this.orientation == \"vertical\") {\r\n\t\t\t\t\trenderer.grid.template.disabled = true;\r\n\t\t\t\t\trenderer.labels.template.disabled = true;\r\n\t\t\t\t\trenderer.minGridDistance = 10;\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\trenderer.grid.template.disabled = false;\r\n\t\t\t\t\trenderer.labels.template.disabled = false;\r\n\t\t\t\t\trenderer.minGridDistance = xAxis.clonedFrom.renderer.minGridDistance;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\r\n\t\t\t$iter.each(this._scrollbarChart.yAxes.iterator(), (yAxis) => {\r\n\t\t\t\tlet renderer = yAxis.renderer;\r\n\t\t\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\t\t\trenderer.grid.template.disabled = true;\r\n\t\t\t\t\trenderer.labels.template.disabled = true;\r\n\t\t\t\t\trenderer.minGridDistance = 10;\r\n\t\t\t\t}\r\n\t\t\t\telse{\r\n\t\t\t\t\trenderer.grid.template.disabled = false;\r\n\t\t\t\t\trenderer.labels.template.disabled = false;\r\n\t\t\t\t\trenderer.minGridDistance = yAxis.clonedFrom.renderer.minGridDistance;\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/**\r\n\t * Cleans up after series are removed from Scrollbar.\r\n\t *\r\n\t * @param event Event\r\n\t */\r\n\tprotected handleSeriesRemoved(event: IListEvents<XYSeries>[\"removed\"]) {\r\n\t\tlet sourceSeries: XYSeries = event.oldValue;\r\n\t\tsourceSeries.events.off(\"validated\", this.zoomOutAxes, this);\r\n\t}\r\n\r\n\t/**\r\n\t * A chart element that is used to display graphs in the Scrollbar.\r\n\t *\r\n\t * This is not the same as `chart`. It's a totally independent instance of\r\n\t * [[XYChart]] with separate config, series, etc.\r\n\t *\r\n\t * It can be configured just like any other [[XYChart]].\r\n\t *\r\n\t * @readonly\r\n\t * @return Scrollbar's internal chart\r\n\t */\r\n\tpublic get scrollbarChart(): XYChart {\r\n\t\treturn this._scrollbarChart;\r\n\t}\r\n\r\n\t/**\r\n\t * A chart that Scrollbar belongs to.\r\n\t *\r\n\t * @param chart Chart\r\n\t */\r\n\tpublic set chart(chart: XYChart) {\r\n\t\tif (this._chart.get() !== chart) {\r\n\t\t\tthis._chart.set(chart, chart.events.on(\"datavalidated\", this.handleDataChanged, this, false));\r\n\t\t\tthis.handleDataChanged();\r\n\t\t\tthis._scrollbarChart.dataProvider = chart; // this makes scrollbar chart do not validate data untill charts' data is validated\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Chart\r\n\t */\r\n\tpublic get chart(): XYChart {\r\n\t\treturn this._chart.get();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Scrollbar's internal chart's data when the main chart's data\r\n\t * changes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleDataChanged() {\r\n\t\t//@todo: what if raw data changed?\r\n\t\tif (this.chart.data != this.scrollbarChart.data) {\r\n\t\t\tthis.scrollbarChart.data = this.chart.data;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms out all axes on the internal chart.\r\n\t */\r\n\tprotected zoomOutAxes() {\r\n\t\tlet scrollbarChart: XYChart = this.scrollbarChart;\r\n\t\t$iter.each(scrollbarChart.xAxes.iterator(), (x) => {\r\n\t\t\tx.zoom({ start: 0, end: 1 }, true, true);\r\n\t\t});\r\n\t\t$iter.each(scrollbarChart.yAxes.iterator(), (y) => {\r\n\t\t\ty.zoom({ start: 0, end: 1 }, true, true);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Updates scrollbar thumb.\r\n\t */\r\n\tprotected updateThumb() {\r\n\t\tsuper.updateThumb();\r\n\t\tif (this._unselectedOverlay) {\r\n\t\t\tlet thumb = this.thumb;\r\n\t\t\tlet x: number = thumb.pixelX || 0;\r\n\t\t\tlet y: number = thumb.pixelY || 0;\r\n\t\t\tlet w: number = thumb.pixelWidth || 0;\r\n\t\t\tlet h: number = thumb.pixelHeight || 0;\r\n\r\n\t\t\tlet path: string = \"\";\r\n\r\n\t\t\tif (this.orientation == \"horizontal\") {\r\n\t\t\t\tpath = $path.rectToPath({\r\n\t\t\t\t\tx: -1,\r\n\t\t\t\t\ty: 0,\r\n\t\t\t\t\twidth: x,\r\n\t\t\t\t\theight: h\r\n\t\t\t\t});\r\n\r\n\t\t\t\tpath += $path.rectToPath({\r\n\t\t\t\t\tx: x + w,\r\n\t\t\t\t\ty: 0,\r\n\t\t\t\t\twidth: (this.pixelWidth || 0) - x - w,\r\n\t\t\t\t\theight: h\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tpath = $path.rectToPath({\r\n\t\t\t\t\tx: 0,\r\n\t\t\t\t\ty: 0,\r\n\t\t\t\t\twidth: w,\r\n\t\t\t\t\theight: y\r\n\t\t\t\t});\r\n\r\n\t\t\t\tpath += $path.rectToPath({\r\n\t\t\t\t\tx: 0,\r\n\t\t\t\t\ty: y + h,\r\n\t\t\t\t\twidth: w,\r\n\t\t\t\t\theight: (this.pixelHeight || 0) - y - h\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tthis._unselectedOverlay.path = path;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\tif ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n\t\t\t\tfor (let i = 0, len = config.series.length; i < len; i++) {\r\n\t\t\t\t\tlet series = config.series[i];\r\n\t\t\t\t\tif ($type.hasValue(series) && $type.isString(series)) {\r\n\t\t\t\t\t\tif (this.map.hasKey(series)) {\r\n\t\t\t\t\t\t\tconfig.series[i] = this.map.getKey(series);\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tthrow Error(\"XYChartScrollbar error: Series with id `\" + series + \"` does not exist.\");\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\tsuper.processConfig(config);\r\n\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChartScrollbar\"] = XYChartScrollbar;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/elements/XYChartScrollbar.ts","/**\r\n * XY Chart module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { SerialChart, ISerialChartProperties, ISerialChartDataFields, ISerialChartAdapters, ISerialChartEvents, SerialChartDataItem } from \"./SerialChart\";\r\nimport { Sprite, ISpriteEvents, AMEvent } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { List, IListEvents } from \"../../core/utils/List\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { Optional } from \"../../core/utils/Type\";\r\nimport { AxisRenderer } from \"../axes/AxisRenderer\";\r\nimport { AxisRendererX } from \"../axes/AxisRendererX\";\r\nimport { AxisRendererY } from \"../axes/AxisRendererY\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { XYSeries } from \"../series/XYSeries\";\r\nimport { Scrollbar, IScrollbarEvents } from \"../../core/elements/Scrollbar\";\r\nimport { IRange } from \"../../core/defs/IRange\";\r\nimport { XYCursor, IXYCursorEvents } from \"../cursors/XYCursor\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { IDisposer, Disposer } from \"../../core/utils/Disposer\";\r\nimport { Button } from \"../../core/elements/Button\";\r\nimport { ZoomOutButton } from \"../../core/elements/ZoomOutButton\";\r\nimport { percent } from \"../../core/utils/Percent\";\r\nimport { Ordering } from \"../../core/utils/Order\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { XYChartScrollbar } from \"../elements/XYChartScrollbar\";\r\n\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $array from \"../../core/utils/Array\";\r\n\r\nimport { defaultRules, ResponsiveBreakpoints } from \"../../core/utils/Responsive\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[XYChart]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class XYChartDataItem extends SerialChartDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: XYChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"XYChartDataItem\";\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[XYChart]].\r\n */\r\nexport interface IXYChartDataFields extends ISerialChartDataFields { }\r\n\r\n/**\r\n * Defines properties for [[XYChart]].\r\n */\r\nexport interface IXYChartProperties extends ISerialChartProperties {\r\n\r\n\t/**\r\n\t * A container that is used as a maske for bullets so that they can't\r\n\t * \"spill\" outside of the plot area.\r\n\t */\r\n\tmaskBullets?: boolean;\r\n\r\n\t/**\r\n\t * Specifies what should chart do if when mouse wheel is rotated.\r\n\t *\r\n\t * @default \"none\"\r\n\t */\r\n\tmouseWheelBehavior?: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\";\r\n\r\n\t/**\r\n\t * Specifies if chart should arrange series tooltips so that they won't\r\n\t * overlap.\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tarrangeTooltips?: boolean;\r\n}\r\n\r\n/**\r\n * Defines events for [[XYChart]].\r\n */\r\nexport interface IXYChartEvents extends ISerialChartEvents { }\r\n\r\n/**\r\n * Defines adapters for [[XYChart]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IXYChartAdapters extends ISerialChartAdapters, IXYChartProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates an XY chart, and any derivative chart, like Serial, Date-based, etc.\r\n *\r\n * Basically this is a chart type, that is used to display any chart\r\n * information in a square plot area.\r\n *\r\n * The horizontal and vertical scale is determined by the type of Axis.\r\n *\r\n * The plot types are determined by type of Series.\r\n *\r\n * ```TypeScript\r\n * // Includes\r\n * import * as am4core from \"@amcharts/amcharts4/core\";\r\n * import * as am4charts from \"@amcharts/amcharts4/charts\";\r\n *\r\n * // Create chart\r\n * let chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * let categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * let valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * let series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JavaScript\r\n * // Create chart\r\n * var chart = am4core.create(\"chartdiv\", am4charts.XYChart);\r\n *\r\n * // The following would work as well:\r\n * // var chart = am4core.create(\"chartdiv\", \"XYChart\");\r\n *\r\n * // Add Data\r\n * chart.data = [{\r\n * \"country\": \"USA\",\r\n * \"visits\": 3025\r\n * }, {\r\n * \t\"country\": \"China\",\r\n * \t\"visits\": 1882\r\n * }, {\r\n * \t\"country\": \"Japan\",\r\n * \t\"visits\": 1809\r\n * }];\r\n *\r\n * // Add category axis\r\n * var categoryAxis = chart.xAxes.push(new am4charts.CategoryAxis());\r\n * categoryAxis.dataFields.category = \"country\";\r\n *\r\n * // Add value axis\r\n * var valueAxis = chart.yAxes.push(new am4charts.ValueAxis());\r\n *\r\n * // Add series\r\n * var series = chart.series.push(new am4charts.ColumnSeries());\r\n * series.name = \"Web Traffic\";\r\n * series.dataFields.categoryX = \"country\";\r\n * series.dataFields.valueY = \"visits\";\r\n * ```\r\n * ```JSON\r\n * var chart = am4core.createFromConfig({\r\n *\r\n * \t// Category axis\r\n * \t\"xAxes\": [{\r\n * \t\t\"type\": \"CategoryAxis\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"category\": \"country\"\r\n * \t\t}\r\n * \t}],\r\n *\r\n * \t// Value axis\r\n * \t\"yAxes\": [{\r\n * \t\t\"type\": \"ValueAxis\"\r\n * \t}],\r\n *\r\n * \t// Series\r\n * \t\"series\": [{\r\n * \t\t\"type\": \"ColumnSeries\",\r\n * \t\t\"dataFields\": {\r\n * \t\t\t\"categoryX\": \"country\",\r\n * \t\t\t\"valueY\": \"visits\"\r\n * \t\t},\r\n * \t\t\"name\": \"Web Traffic\"\r\n * \t}],\r\n *\r\n * \t// Cursor\r\n * \t\"cursor\": {},\r\n *\r\n * \t// Data\r\n * \t\"data\": [{\r\n * \t\t\"country\": \"USA\",\r\n * \t\t\"visits\": 3025\r\n * \t}, {\r\n * \t\t\"country\": \"China\",\r\n * \t\t\"visits\": 1882\r\n * \t}, {\r\n * \t\t\"country\": \"Japan\",\r\n * \t\t\"visits\": 1809\r\n * \t}]\r\n *\r\n * }, \"chartdiv\", \"XYChart\");\r\n * ```\r\n *\r\n *\r\n * @see {@link IXYChartEvents} for a list of available Events\r\n * @see {@link IXYChartAdapters} for a list of available Adapters\r\n * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/} for documentation\r\n * @important\r\n */\r\nexport class XYChart extends SerialChart {\r\n\r\n\t/**\r\n\t * Defines available data fields.\r\n\t */\r\n\tpublic _dataFields: IXYChartDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IXYChartProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IXYChartAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IXYChartEvents;\r\n\r\n\t/**\r\n\t * Defines a type of series that this chart uses.\r\n\t */\r\n\tpublic _seriesType: XYSeries;\r\n\r\n\t/**\r\n\t * A list of horizontal axes.\r\n\t */\r\n\tprotected _xAxes: List<Axis<this[\"_xAxisRendererType\"]>>;\r\n\r\n\t/**\r\n\t * A list of vertical axes.\r\n\t */\r\n\tprotected _yAxes: List<Axis<this[\"_yAxisRendererType\"]>>;\r\n\r\n\t/**\r\n\t * A container that holds vertical axes and plot area.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic yAxesAndPlotContainer: Container\r\n\r\n\t/**\r\n\t * A container that holds top axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic topAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container that holds bottom axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic bottomAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container that holds left axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic leftAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container that holds right axes.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic rightAxesContainer: Container;\r\n\r\n\t/**\r\n\t * A container for plot area.\r\n\t *\r\n\t * @type {Container}\r\n\t */\r\n\tpublic plotContainer: Container;\r\n\r\n\t/**\r\n\t * A reference to horizontal [[Scrollbar]].\r\n\t */\r\n\tprotected _scrollbarX: Scrollbar;\r\n\r\n\t/**\r\n\t * A reference to vertical [[Scrollbar]].\r\n\t */\r\n\tprotected _scrollbarY: Scrollbar;\r\n\r\n\t/**\r\n\t * A reference to chart's cursor.\r\n\t */\r\n\tpublic _cursor: XYCursor;\r\n\r\n\t/**\r\n\t * A container that chart's cursor is placed in.\r\n\t */\r\n\tprotected _cursorContainer: Container;\r\n\r\n\t/**\r\n\t * Defines the type of horizontal axis rederer.\r\n\t */\r\n\tprotected _axisRendererX: typeof AxisRendererX = AxisRendererX;\r\n\r\n\t/**\r\n\t * Defines the type of vertical axis rederer.\r\n\t */\r\n\tprotected _axisRendererY: typeof AxisRendererY = AxisRendererY;\r\n\r\n\t/**\r\n\t * Defines the type horizontal axis renderer.\r\n\t */\r\n\tpublic _xAxisRendererType: AxisRendererX;\r\n\r\n\t/**\r\n\t * Defines the type of vertical axis renderer.\r\n\t */\r\n\tpublic _yAxisRendererType: AxisRendererY;\r\n\r\n\t/**\r\n\t * A button which is used to zoom out the chart.\r\n\t */\r\n\tprotected _zoomOutButton: Button;\r\n\r\n\t/**\r\n\t * An element that is used as a mask to contain bullets from spilling out of\r\n\t * the plot area.\r\n\t */\r\n\tprotected _bulletMask: Sprite;\r\n\r\n\r\n\tprotected _panStartXRange: IRange;\r\n\r\n\tprotected _panStartYRange: IRange;\r\n\r\n\tprotected _panEndXRange: IRange;\r\n\r\n\tprotected _panEndYRange: IRange;\r\n\r\n\tprotected _mouseWheelDisposer: IDisposer;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic _seriesPoints: { point: IPoint, series: XYSeries }[] = [];\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\r\n\t\tthis.className = \"XYChart\";\r\n\r\n\t\t// Set defaults\r\n\t\t//this.margin(10, 10, 10, 10);\r\n\t\tthis.maskBullets = true;\r\n\t\tthis.arrangeTooltips = true;\r\n\r\n\t\t// Create main chart container\r\n\t\tlet chartContainer = this.chartContainer;\r\n\t\tchartContainer.layout = \"vertical\";\r\n\t\tthis.padding(15, 15, 15, 15);\r\n\r\n\t\t// Create top axes container\r\n\t\tlet topAxesCont = chartContainer.createChild(Container);\r\n\t\ttopAxesCont.shouldClone = false;\r\n\t\ttopAxesCont.layout = \"vertical\";\r\n\t\ttopAxesCont.width = percent(100);\r\n\t\ttopAxesCont.zIndex = 1;\r\n\t\tthis.topAxesContainer = topAxesCont;\r\n\r\n\t\t// Create vertical axes and plot area container\r\n\t\t// Plot area and vertical axes share the whole width of the chart,\r\n\t\t// so we need to put then into a separate container so that layouting\r\n\t\t// engine takes care of the positioning\r\n\t\tlet yAxesAndPlotCont = chartContainer.createChild(Container);\r\n\t\tyAxesAndPlotCont.shouldClone = false;\r\n\t\tyAxesAndPlotCont.layout = \"horizontal\";\r\n\t\tyAxesAndPlotCont.width = percent(100);\r\n\t\tyAxesAndPlotCont.height = percent(100);\r\n\t\tyAxesAndPlotCont.zIndex = 0;\r\n\t\tthis.yAxesAndPlotContainer = yAxesAndPlotCont;\r\n\r\n\t\t// Create a container for bottom axes\r\n\t\tlet bottomAxesCont = chartContainer.createChild(Container);\r\n\t\tbottomAxesCont.shouldClone = false;\r\n\t\tbottomAxesCont.width = percent(100);\r\n\t\tbottomAxesCont.layout = \"vertical\";\r\n\t\tbottomAxesCont.zIndex = 1;\r\n\t\tthis.bottomAxesContainer = bottomAxesCont;\r\n\r\n\t\t// Create a container for left-side axes\r\n\t\tlet leftAxesCont = yAxesAndPlotCont.createChild(Container);\r\n\t\tleftAxesCont.shouldClone = false;\r\n\t\tleftAxesCont.layout = \"horizontal\";\r\n\t\tleftAxesCont.height = percent(100);\r\n\t\tleftAxesCont.contentAlign = \"right\";\r\n\t\tleftAxesCont.events.on(\"transformed\", this.updateXAxesMargins, this, false);\r\n\t\tleftAxesCont.zIndex = 1;\r\n\t\tthis.leftAxesContainer = leftAxesCont;\r\n\r\n\t\t// Create a container for plot area\r\n\t\tlet plotCont = yAxesAndPlotCont.createChild(Container);\r\n\t\tplotCont.shouldClone = false;\r\n\t\tplotCont.height = percent(100);\r\n\t\tplotCont.width = percent(100);\r\n\t\t// Create transparend background for plot container so that hover works\r\n\t\t// on all of it\r\n\t\tplotCont.background.fillOpacity = 0;\r\n\t\tthis.plotContainer = plotCont;\r\n\r\n\t\t// must go below plot container\r\n\t\tthis.mouseWheelBehavior = \"none\";\r\n\r\n\t\tthis._cursorContainer = plotCont;\r\n\r\n\t\t// Create a container for right-side axes\r\n\t\tlet rightAxesCont = yAxesAndPlotCont.createChild(Container);\r\n\t\trightAxesCont.shouldClone = false;\r\n\t\trightAxesCont.layout = \"horizontal\";\r\n\t\trightAxesCont.height = percent(100);\r\n\t\trightAxesCont.zIndex = 1;\r\n\t\trightAxesCont.events.on(\"transformed\", this.updateXAxesMargins, this, false);\r\n\t\tthis.rightAxesContainer = rightAxesCont;\r\n\r\n\t\tthis.seriesContainer.parent = plotCont;\r\n\t\tthis.bulletsContainer.parent = plotCont;\r\n\r\n\t\tlet zoomOutButton = plotCont.createChild(ZoomOutButton);\r\n\t\tzoomOutButton.shouldClone = false;\r\n\t\tzoomOutButton.align = \"right\";\r\n\t\tzoomOutButton.valign = \"top\";\r\n\t\tzoomOutButton.zIndex = Number.MAX_SAFE_INTEGER;\r\n\t\tzoomOutButton.marginTop = 5;\r\n\t\tzoomOutButton.marginRight = 5;\r\n\r\n\t\tzoomOutButton.hide(0);\r\n\t\tthis.zoomOutButton = zoomOutButton;\r\n\r\n\t\tthis._bulletMask = this.plotContainer;\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tthis.zoomOutButton.exportable = false;\r\n\t\t// Add a default screen reader title for accessibility\r\n\t\t// This will be overridden in screen reader if there are any `titles` set\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"X/Y chart\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\r\n\t\tthis.seriesContainer.toFront();\r\n\t\tthis.bulletsContainer.toFront();\r\n\r\n\t\tif (this.maskBullets) {\r\n\t\t\tthis.bulletsContainer.mask = this._bulletMask;\r\n\t\t}\r\n\r\n\t\tthis.updateSeriesLegend();\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers a redrawing of all chart's series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updatePlotElements(): void {\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tseries.invalidate();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers data (re)validation which in turn can cause a redraw of the\r\n\t * whole chart or just aprticular series / elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validateData(): void {\r\n\r\n\t\t// tell axes that data changed\r\n\t\tif (this._parseDataFrom == 0) {\r\n\t\t\t$iter.each(this.xAxes.iterator(), (axis) => {\r\n\t\t\t\taxis.dataChangeUpdate();\r\n\t\t\t});\r\n\r\n\t\t\t$iter.each(this.yAxes.iterator(), (axis) => {\r\n\t\t\t\taxis.dataChangeUpdate();\r\n\t\t\t});\r\n\r\n\t\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\t\tseries.dataChangeUpdate();\r\n\t\t\t});\r\n\t\t}\r\n\r\n\t\tsuper.validateData();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates margins for horizontal axes based on settings and available space.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updateXAxesMargins(): void {\r\n\r\n\t\tlet leftAxesWidth = this.leftAxesContainer.measuredWidth;\r\n\t\tlet rightAxesWidth = this.rightAxesContainer.measuredWidth;\r\n\t\tlet bottomAxesCont = this.bottomAxesContainer;\r\n\r\n\t\tif (bottomAxesCont.paddingLeft != leftAxesWidth || bottomAxesCont.paddingRight != rightAxesWidth) {\r\n\t\t\tbottomAxesCont.paddingLeft = leftAxesWidth;\r\n\t\t\tbottomAxesCont.paddingRight = rightAxesWidth;\r\n\t\t}\r\n\r\n\t\tlet topAxesCont = this.topAxesContainer;\r\n\r\n\t\tif (topAxesCont.paddingLeft != leftAxesWidth || topAxesCont.paddingRight != rightAxesWidth) {\r\n\t\t\ttopAxesCont.paddingLeft = leftAxesWidth;\r\n\t\t\ttopAxesCont.paddingRight = rightAxesWidth;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers an update on the horizontal axis when one of its properties\r\n\t * change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event An event object\r\n\t */\r\n\tpublic handleXAxisChange(event: AMEvent<AxisRenderer, ISpriteEvents>[\"propertychanged\"]) {\r\n\t\tthis.updateXAxis(event.target);\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers an update on the vertical axis when one of its properties\r\n\t * change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event An event object\r\n\t */\r\n\tpublic handleYAxisChange(event: AMEvent<AxisRenderer, ISpriteEvents>[\"propertychanged\"]) {\r\n\t\tthis.updateYAxis(event.target);\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up a new horizontal (X) axis when it is added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Axis insert event\r\n\t */\r\n\tpublic processXAxis(event: IListEvents<Axis>[\"inserted\"]): void {\r\n\r\n\t\tlet axis: Axis = event.newValue;\r\n\t\taxis.chart = this;\r\n\r\n\t\tif (!axis.renderer) {\r\n\t\t\taxis.renderer = new this._axisRendererX();\r\n\t\t\taxis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleXAxisChange, this, false);\r\n\t\t}\r\n\t\taxis.axisLetter = \"X\";\r\n\r\n\t\taxis.events.on(\"startendchanged\", this.handleXAxisRangeChange, this, false);\r\n\t\t//axis.events.on(\"endchanged\", this.handleXAxisRangeChange, this, false);\r\n\r\n\t\t// Although axis does not use data directly, we set dataProvider here\r\n\t\t// (but not add to chart data users) to hold up rendering before data\r\n\t\t// is parsed (system handles this)\r\n\t\taxis.dataProvider = this;\r\n\r\n\t\tthis.updateXAxis(axis.renderer);\r\n\t\tthis.processAxis(axis);\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Sets up a new vertical (Y) axis when it is added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Axis insert event\r\n\t */\r\n\tpublic processYAxis(event: IListEvents<Axis>[\"inserted\"]): void {\r\n\r\n\t\tlet axis: Axis = event.newValue;\r\n\t\taxis.chart = this;\r\n\t\tif (!axis.renderer) {\r\n\t\t\taxis.renderer = new this._axisRendererY();\r\n\t\t\taxis.renderer.observe([\"opposite\", \"inside\", \"inversed\", \"minGridDistance\"], this.handleYAxisChange, this, false);\r\n\t\t}\r\n\t\taxis.axisLetter = \"Y\";\r\n\r\n\t\taxis.events.on(\"startendchanged\", this.handleYAxisRangeChange, this, false);\r\n\t\t//axis.events.on(\"endchanged\", this.handleYAxisRangeChange, this, false);\r\n\r\n\t\t// Although axis does not use data directly, we set dataProvider here\r\n\t\t// (but not add to chart data users) to hold up rendering before data\r\n\t\t// is parsed (system handles this)\r\n\t\taxis.dataProvider = this;\r\n\r\n\t\tthis.updateYAxis(axis.renderer);\r\n\t\tthis.processAxis(axis);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates horizontal (X) scrollbar and other horizontal axis whenever axis'\r\n\t * value range changes.\r\n\t */\r\n\tprotected handleXAxisRangeChange() {\r\n\t\tlet range: IRange = this.getCommonAxisRange(this.xAxes);\r\n\t\tif (this.scrollbarX) {\r\n\t\t\tthis.zoomAxes(this.xAxes, range, true);\r\n\t\t}\r\n\t\tthis.toggleZoomOutButton();\r\n\t\tthis.updateScrollbar(this.scrollbarX, range);\r\n\t}\r\n\r\n\t/**\r\n\t * Shows or hides the Zoom Out button depending on whether the chart is fully\r\n\t * zoomed out or not.\r\n\t */\r\n\tprotected toggleZoomOutButton() {\r\n\t\tif (this.zoomOutButton) {\r\n\t\t\tlet show = false;\r\n\r\n\t\t\t$iter.eachContinue(this.xAxes.iterator(), (axis): boolean => {\r\n\t\t\t\tif ($math.round(axis.start, 3) != 0 || $math.round(axis.end, 3) != 1) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\t\t\t$iter.eachContinue(this.yAxes.iterator(), (axis): boolean => {\r\n\t\t\t\tif ($math.round(axis.start, 3) != 0 || $math.round(axis.end, 3) != 1) {\r\n\t\t\t\t\tshow = true;\r\n\t\t\t\t\treturn false;\r\n\t\t\t\t}\r\n\t\t\t\treturn true;\r\n\t\t\t});\r\n\r\n\t\t\tif (!this.seriesAppeared) {\r\n\t\t\t\tshow = false;\r\n\t\t\t}\r\n\r\n\t\t\tif (show) {\r\n\t\t\t\tthis.zoomOutButton.show();\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.zoomOutButton.hide();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t * moved this check to a separate method so that we could override it in TreeMapSeries\r\n\t */\r\n\tprotected seriesAppeared(): boolean {\r\n\t\tlet appeared: boolean = false;\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tif (!series.appeared) {\r\n\t\t\t\tappeared = false;\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn appeared;\r\n\t}\r\n\r\n\t/**\r\n\t * Updates vertical (Y) scrollbar and other horizontal axis whenever axis'\r\n\t * value range changes.\r\n\t */\r\n\tprotected handleYAxisRangeChange() {\r\n\t\tlet range: IRange = this.getCommonAxisRange(this.yAxes);\r\n\r\n\t\tif (this.scrollbarY) {\r\n\t\t\tthis.zoomAxes(this.yAxes, range, true);\r\n\t\t}\r\n\t\tthis.toggleZoomOutButton();\r\n\t\tthis.updateScrollbar(this.scrollbarY, range);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates a relative scrollbar whenever data range of the axis changes.\r\n\t *\r\n\t * @param scrollbar Scrollbar instance\r\n\t * @param range New data (values) range of the axis\r\n\t */\r\n\tprotected updateScrollbar(scrollbar: Scrollbar, range: IRange): void {\r\n\t\tif (scrollbar) {\r\n\t\t\tscrollbar.skipRangeEvents();\r\n\t\t\tscrollbar.start = range.start;\r\n\t\t\tscrollbar.end = range.end;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a common range of values between a list of axes.\r\n\t *\r\n\t * This is used to synchronize the zoom between multiple axes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axes A list of axes\r\n\t * @return Common value range\r\n\t */\r\n\tpublic getCommonAxisRange(axes: List<Axis>): IRange {\r\n\t\tlet start: Optional<number>;\r\n\t\tlet end: Optional<number>;\r\n\r\n\t\t$iter.each(axes.iterator(), (axis) => {\r\n\t\t\tlet axisStart = axis.start;\r\n\t\t\tlet axisEnd = axis.end;\r\n\r\n\t\t\tif (axis.renderer.inversed) {\r\n\t\t\t\taxisStart = 1 - axis.end;\r\n\t\t\t\taxisEnd = 1 - axis.start;\r\n\t\t\t}\r\n\r\n\t\t\tif (!$type.isNumber(start) || (axisStart < start)) {\r\n\t\t\t\tstart = axisStart;\r\n\t\t\t}\r\n\t\t\tif (!$type.isNumber(end) || (axisEnd > end)) {\r\n\t\t\t\tend = axisEnd;\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn { start: start, end: end };\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the horizontal (X) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateXAxis(renderer: AxisRenderer) {\r\n\t\tlet axis = renderer.axis;\r\n\t\tif (renderer.opposite) {\r\n\t\t\taxis.parent = this.topAxesContainer;\r\n\t\t\taxis.toFront();\r\n\t\t}\r\n\t\telse {\r\n\t\t\taxis.parent = this.bottomAxesContainer;\r\n\t\t\taxis.toBack();\r\n\t\t}\r\n\t\tif (axis.renderer) {\r\n\t\t\taxis.renderer.processRenderer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Triggers (re)rendering of the vertical (Y) axis.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axis Axis\r\n\t */\r\n\tpublic updateYAxis(renderer: AxisRenderer) {\r\n\t\tlet axis = renderer.axis;\r\n\t\tif (renderer.opposite) {\r\n\t\t\taxis.parent = this.rightAxesContainer;\r\n\t\t\taxis.toBack();\r\n\t\t}\r\n\t\telse {\r\n\t\t\taxis.parent = this.leftAxesContainer;\r\n\t\t\taxis.toFront();\r\n\t\t}\r\n\t\tif (axis.renderer) {\r\n\t\t\taxis.renderer.processRenderer();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates an Axis for use with this chart, e.g. sets proper renderer\r\n\t * and containers for placement.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tprotected processAxis(axis: Axis): void {\r\n\t\t// Value axis does not use data directly, only category axis does\r\n\t\tif (axis instanceof CategoryAxis) {\r\n\t\t\tthis._dataUsers.moveValue(axis);\r\n\t\t}\r\n\r\n\t\tlet renderer: AxisRenderer = axis.renderer;\r\n\r\n\t\trenderer.gridContainer.parent = this.plotContainer;\r\n\t\trenderer.gridContainer.toBack();\r\n\r\n\t\trenderer.breakContainer.parent = this.plotContainer;\r\n\t\trenderer.breakContainer.toFront();\r\n\t\trenderer.breakContainer.zIndex = 10;\r\n\r\n\t\taxis.addDisposer(new Disposer(() => {\r\n\t\t\tthis.dataUsers.removeValue(axis);\r\n\t\t}))\r\n\r\n\t\tthis.plotContainer.events.on(\"maxsizechanged\", () => {\r\n\t\t\tif (this.inited) {\r\n\t\t\t\taxis.invalidateDataItems();\r\n\t\t\t\tthis.updateSeriesMasks();\r\n\t\t\t}\r\n\t\t}, axis, false);\r\n\t}\r\n\r\n\t/**\r\n\t * This is done because for some reason IE doesn't change mask if path of a\r\n\t * mask changes.\r\n\t */\r\n\tprotected updateSeriesMasks(): void {\r\n\t\tif ($utils.isIE()) {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tlet mask = series.mainContainer.mask;\r\n\t\t\t\tseries.mainContainer.mask = undefined;\r\n\t\t\t\tseries.mainContainer.mask = mask;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of horizontal (X) axes.\r\n\t *\r\n\t * @return List of axes\r\n\t */\r\n\tpublic get xAxes(): List<Axis<this[\"_xAxisRendererType\"]>> {\r\n\t\tif (!this._xAxes) {\r\n\t\t\tthis._xAxes = new List<Axis<this[\"_xAxisRendererType\"]>>();\r\n\t\t\tthis._xAxes.events.on(\"inserted\", this.processXAxis, this, false);\r\n\t\t\tthis._xAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n\t\t}\r\n\r\n\t\treturn this._xAxes;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected handleAxisRemoval(event: IListEvents<Axis>[\"removed\"]) {\r\n\t\tlet axis = event.oldValue;\r\n\t\tthis.dataUsers.removeValue(axis); // need to remove, as it might not be disposed\r\n\t\tif (axis.autoDispose) {\r\n\t\t\taxis.dispose();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A list of vertical (Y) axes.\r\n\t *\r\n\t * @return List of axes\r\n\t */\r\n\tpublic get yAxes(): List<Axis<this[\"_yAxisRendererType\"]>> {\r\n\t\tif (!this._yAxes) {\r\n\t\t\tthis._yAxes = new List<Axis<this[\"_yAxisRendererType\"]>>();\r\n\t\t\tthis._yAxes.events.on(\"inserted\", this.processYAxis, this, false);\r\n\t\t\tthis._yAxes.events.on(\"removed\", this.handleAxisRemoval, this, false);\r\n\t\t}\r\n\r\n\t\treturn this._yAxes;\r\n\t}\r\n\r\n\t/**\r\n\t * Decorates a new [[XYSeries]] object with required parameters when it is\r\n\t * added to the chart.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param event Event\r\n\t */\r\n\tpublic handleSeriesAdded(event: IListEvents<XYSeries>[\"inserted\"]): void {\r\n\t\ttry {\r\n\t\t\tsuper.handleSeriesAdded(event);\r\n\t\t\tlet series: XYSeries = event.newValue;\r\n\r\n\t\t\tif (this.xAxes.length == 0 || this.yAxes.length == 0) {\r\n\t\t\t\tregistry.removeFromInvalidComponents(series);\r\n\t\t\t\tseries.dataInvalid = false;\r\n\t\t\t}\r\n\r\n\t\t\t$utils.used(series.xAxis); // this is enough to get axis, handled in getter\r\n\t\t\t$utils.used(series.yAxis); // this is enough to get axis, handled in getter\r\n\r\n\t\t\tif (series.fill == undefined) {\r\n\t\t\t\tseries.fill = this.colors.next();\r\n\t\t\t}\r\n\r\n\t\t\tif (series.stroke == undefined) {\r\n\t\t\t\tseries.stroke = series.fill;\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (e) {\r\n\t\t\tthis.raiseCriticalError(e);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Chart's [[Cursor]].\r\n\t *\r\n\t * @param cursor Cursor\r\n\t */\r\n\tpublic set cursor(cursor: this[\"_cursor\"]) {\r\n\t\tif (this._cursor != cursor) {\r\n\t\t\tif (this._cursor) {\r\n\t\t\t\tthis.removeDispose(this._cursor);\r\n\t\t\t}\r\n\r\n\t\t\tthis._cursor = cursor;\r\n\r\n\t\t\tif (cursor) {\r\n\t\t\t\t// TODO this is wrong, fix it\r\n\t\t\t\tthis._disposers.push(cursor);\r\n\t\t\t\tcursor.chart = this;\r\n\t\t\t\tcursor.shouldClone = false;\r\n\t\t\t\tcursor.parent = this._cursorContainer;\r\n\t\t\t\tcursor.events.on(\"cursorpositionchanged\", this.handleCursorPositionChange, this, false);\r\n\t\t\t\tcursor.events.on(\"zoomstarted\", this.handleCursorZoomStart, this, false);\r\n\t\t\t\tcursor.events.on(\"zoomended\", this.handleCursorZoomEnd, this, false);\r\n\t\t\t\tcursor.events.on(\"panstarted\", this.handleCursorPanStart, this, false);\r\n\t\t\t\tcursor.events.on(\"panning\", this.handleCursorPanning, this, false);\r\n\t\t\t\tcursor.events.on(\"panended\", this.handleCursorPanEnd, this, false);\r\n\t\t\t\tcursor.events.on(\"behaviorcanceled\", this.handleCursorCanceled, this, false);\r\n\t\t\t\tcursor.events.on(\"hidden\", this.handleHideCursor, this, false);\r\n\t\t\t\tcursor.zIndex = Number.MAX_SAFE_INTEGER - 1;\r\n\r\n\t\t\t\tif (this.tapToActivate) {\r\n\t\t\t\t\t// We need this in order to setup cursor properly\r\n\t\t\t\t\tthis.setTapToActivate(this.tapToActivate);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Cursor\r\n\t */\r\n\tpublic get cursor(): this[\"_cursor\"] {\r\n\t\treturn this._cursor;\r\n\t}\r\n\r\n\t/**\r\n\t * Creates and returns a new [[Cursor]] suitable for this chart type.\r\n\t *\r\n\t * @return New cursor\r\n\t */\r\n\tprotected createCursor(): this[\"_cursor\"] {\r\n\t\treturn new XYCursor();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs tasks when the cursor's position changes, e.g. shows proper\r\n\t * tooltips on axes and series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleCursorPositionChange(): void {\r\n\r\n\t\tlet cursor = this.cursor;\r\n\r\n\t\tif (cursor.visible && !cursor.isHiding) {\r\n\t\t\tlet xPosition: number = this.cursor.xPosition;\r\n\t\t\tlet yPosition: number = this.cursor.yPosition;\r\n\r\n\t\t\tthis.showSeriesTooltip({\r\n\t\t\t\tx: xPosition,\r\n\t\t\t\ty: yPosition\r\n\t\t\t});\r\n\r\n\t\t\tlet exceptAxis: Axis;\r\n\t\t\tlet snapToSeries = cursor.snapToSeries;\r\n\t\t\tif (snapToSeries) {\r\n\t\t\t\tif (snapToSeries.baseAxis == snapToSeries.xAxis) {\r\n\t\t\t\t\texceptAxis = snapToSeries.yAxis;\r\n\t\t\t\t}\r\n\t\t\t\tif (snapToSeries.baseAxis == snapToSeries.yAxis) {\r\n\t\t\t\t\texceptAxis = snapToSeries.xAxis;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._seriesPoints = [];\r\n\t\t\tthis.showAxisTooltip(this.xAxes, xPosition, exceptAxis);\r\n\t\t\tthis.showAxisTooltip(this.yAxes, yPosition, exceptAxis);\r\n\t\t\tthis.sortSeriesTooltips(this._seriesPoints);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Hides all cursor-related tooltips when the cursor itself is hidden.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic handleHideCursor(): void {\r\n\t\tthis.hideObjectTooltip(this.xAxes);\r\n\t\tthis.hideObjectTooltip(this.yAxes);\r\n\t\tthis.hideObjectTooltip(this.series);\r\n\r\n\t\tthis.updateSeriesLegend();\r\n\t}\r\n\r\n\t/**\r\n\t * Updates values for each series' legend item.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSeriesLegend(): void {\r\n\t\t$iter.each(this.series.iterator(), (series) => {\r\n\t\t\tseries.updateLegendValue();\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Hides a tooltip for a list of objects.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param sprites A list of sprites to hide tooltip for\r\n\t */\r\n\tpublic hideObjectTooltip(sprites: List<Sprite>): void {\r\n\t\t$iter.each(sprites.iterator(), (sprite) => {\r\n\t\t\tsprite.hideTooltip(0);\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Shows a tooltip for all chart's series, using specific coordinates as a\r\n\t * reference point.\r\n\t *\r\n\t * The tooltip might be shown at different coordinates depending on the\r\n\t * actual data point's position, overlapping with other tooltips, etc.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param position Reference point\r\n\t */\r\n\tpublic showSeriesTooltip(position?: IPoint): void {\r\n\r\n\t\tif (!position) {\r\n\t\t\tthis.series.each((series) => {\r\n\t\t\t\tseries.hideTooltip();\r\n\t\t\t});\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet seriesPoints: { point: IPoint, series: XYSeries }[] = [];\r\n\r\n\t\tthis.series.each((series) => {\r\n\t\t\t//if (series.tooltipText || series.tooltipHTML) { // not good, bullets are not hovered then\r\n\r\n\t\t\tif ((series.xAxis instanceof DateAxis && series.xAxis.snapTooltip) || (series.yAxis instanceof DateAxis && series.yAxis.snapTooltip)) {\r\n\t\t\t\t// void\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tlet point = series.showTooltipAtPosition(position.x, position.y);\r\n\t\t\t\tif (point) {\r\n\t\t\t\t\tseries.tooltip.setBounds({ x: 0, y: 0, width: this.pixelWidth, height: this.pixelHeight });\r\n\t\t\t\t\tseriesPoints.push({ series: series, point: point });\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//}\r\n\t\t});\r\n\r\n\t\tif (this.arrangeTooltips) {\r\n\t\t\tthis.sortSeriesTooltips(seriesPoints);\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic sortSeriesTooltips(seriesPoints: { point: IPoint, series: XYSeries }[]) {\r\n\r\n\t\tlet topLeft = $utils.spritePointToSvg({ x: -0.5, y: -0.5 }, this.plotContainer);\r\n\t\tlet bottomRight = $utils.spritePointToSvg({ x: this.plotContainer.pixelWidth + 0.5, y: this.plotContainer.pixelHeight + 0.5 }, this.plotContainer);\r\n\r\n\t\tlet sum = 0;\r\n\t\tlet filteredSeriesPoints: { point: IPoint, series: XYSeries }[] = [];\r\n\t\t$array.each(seriesPoints, (seriesPoint) => {\r\n\t\t\tlet point = seriesPoint.point;\r\n\t\t\tif (point && $math.isInRectangle(point, { x: topLeft.x, y: topLeft.y, width: bottomRight.x - topLeft.x, height: bottomRight.y - topLeft.y })) {\r\n\t\t\t\tfilteredSeriesPoints.push({ point: point, series: seriesPoint.series });\r\n\t\t\t\tsum += point.y;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tseriesPoints = filteredSeriesPoints;\r\n\r\n\t\tseriesPoints.sort((a, b) => {\r\n\t\t\tif (a.point.y > b.point.y) {\r\n\t\t\t\treturn 1;\r\n\t\t\t}\r\n\t\t\telse if (a.point.y < b.point.y) {\r\n\t\t\t\treturn -1;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\treturn 0;\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\tlet averageY = sum / seriesPoints.length;\r\n\t\tlet maxY = $utils.svgPointToDocument({ x: 0, y: 0 }, this.svgContainer.SVGContainer).y;\r\n\r\n\t\tif (seriesPoints.length > 0) {\r\n\r\n\t\t\tlet top = topLeft.y;\r\n\t\t\tlet bottom = bottomRight.y;\r\n\r\n\t\t\t// TODO is this needed ?\r\n\t\t\t$utils.spritePointToDocument({ x: 0, y: top }, this);\r\n\r\n\t\t\tlet dropped = false;\r\n\r\n\t\t\tif (averageY > top + (bottom - top) / 2) {\r\n\t\t\t\tlet nextHeight = bottom;\r\n\t\t\t\tfor (let i = seriesPoints.length - 1; i >= 0; i--) {\r\n\t\t\t\t\tlet series = seriesPoints[i].series;\r\n\t\t\t\t\tlet tooltip = series.tooltip;\r\n\t\t\t\t\tlet pointY = seriesPoints[i].point.y;\r\n\r\n\t\t\t\t\ttooltip.setBounds({ x: 0, y: -maxY, width: this.pixelWidth, height: nextHeight + maxY });\r\n\r\n\t\t\t\t\tif (tooltip.invalid) {\r\n\t\t\t\t\t\ttooltip.validate();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttooltip.toBack();\r\n\t\t\t\t\tnextHeight = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY - tooltip.pixelY + pointY - tooltip.pixelMarginTop }, tooltip).y;\r\n\r\n\t\t\t\t\tif (nextHeight < -maxY) {\r\n\t\t\t\t\t\tdropped = true;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (averageY <= top + (bottom - top) / 2 || dropped) {\r\n\t\t\t\tlet nextY = top;\r\n\t\t\t\tfor (let i = 0, len = seriesPoints.length; i < len; i++) {\r\n\t\t\t\t\tlet series = seriesPoints[i].series;\r\n\t\t\t\t\tlet pointY = seriesPoints[i].point.y;\r\n\t\t\t\t\tlet tooltip = series.tooltip;\r\n\t\t\t\t\ttooltip.setBounds({ x: 0, y: nextY, width: this.pixelWidth, height: bottom });\r\n\r\n\t\t\t\t\tif (tooltip.invalid) {\r\n\t\t\t\t\t\ttooltip.validate();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\ttooltip.toBack();\r\n\r\n\t\t\t\t\tnextY = $utils.spritePointToSvg({ x: 0, y: tooltip.label.pixelY + tooltip.label.measuredHeight - tooltip.pixelY + pointY + tooltip.pixelMarginBottom }, tooltip).y;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Shows tooltips for a list of axes at specific position.\r\n\t *\r\n\t * Position might be X coordinate for horizontal axes, and Y coordinate for\r\n\t * vertical axes.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param axes List of axes to show tooltip on\r\n\t * @param position Position (px)\r\n\t */\r\n\tpublic showAxisTooltip(axes: List<Axis>, position: number, except?: Axis): void {\r\n\t\t$iter.each(axes.iterator(), (axis) => {\r\n\t\t\tif (axis != except) {\r\n\t\t\t\tif (this.dataItems.length > 0 || axis.dataItems.length > 0) {\r\n\t\t\t\t\taxis.showTooltipAtPosition(position);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Recalculates the value range for the axis taking into account zoom level & inversed.\r\n\t *\r\n\t * @param axis Axis\r\n\t * @param range Range\r\n\t * @return Modified range\r\n\t */\r\n\tpublic getUpdatedRange(axis: Axis<this[\"_xAxisRendererType\"]>, range: IRange): IRange {\r\n\r\n\t\tif (!axis) {\r\n\t\t\treturn;\r\n\t\t}\r\n\r\n\t\tlet start: number;\r\n\t\tlet end: number;\r\n\t\tlet inversed = axis.renderer.inversed;\r\n\r\n\t\tif (axis.renderer instanceof AxisRendererY) {\r\n\t\t\trange = $math.invertRange(range);\r\n\t\t}\r\n\r\n\t\tif (inversed) {\r\n\t\t\t$math.invertRange(range);\r\n\r\n\t\t\tstart = 1 - axis.end;\r\n\t\t\tend = 1 - axis.start;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tstart = axis.start;\r\n\t\t\tend = axis.end;\r\n\t\t}\r\n\r\n\t\tlet difference: number = end - start;\r\n\r\n\t\treturn {\r\n\t\t\tstart: start + range.start * difference,\r\n\t\t\tend: start + range.end * difference\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user finishes zooming using chart\r\n\t * cursor, e.g. zooms axes.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorZoomEnd(event: IXYCursorEvents[\"zoomended\"]): void {\r\n\t\tlet cursor: XYCursor = this.cursor;\r\n\t\tlet behavior = cursor.behavior;\r\n\t\tif (behavior == \"zoomX\" || behavior == \"zoomXY\") {\r\n\t\t\tlet xRange: IRange = cursor.xRange;\r\n\t\t\tif (xRange && this.xAxes.length > 0) {\r\n\t\t\t\txRange = this.getUpdatedRange(this.xAxes.getIndex(0), xRange);\r\n\t\t\t\txRange.priority = \"start\";\r\n\t\t\t\tthis.zoomAxes(this.xAxes, xRange);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (behavior == \"zoomY\" || behavior == \"zoomXY\") {\r\n\t\t\tlet yRange: IRange = cursor.yRange;\r\n\t\t\tif (yRange && this.yAxes.length > 0) {\r\n\t\t\t\tyRange = this.getUpdatedRange(this.yAxes.getIndex(0), yRange);\r\n\t\t\t\tyRange.priority = \"start\";\r\n\t\t\t\tthis.zoomAxes(this.yAxes, yRange);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.handleHideCursor();\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorPanStart(event: IXYCursorEvents[\"panning\"]): void {\r\n\t\tlet xAxis = this.xAxes.getIndex(0);\r\n\t\tif (xAxis) {\r\n\t\t\tthis._panStartXRange = { start: xAxis.start, end: xAxis.end };\r\n\t\t}\r\n\r\n\t\tlet yAxis = this.yAxes.getIndex(0);\r\n\t\tif (yAxis) {\r\n\t\t\tthis._panStartYRange = { start: yAxis.start, end: yAxis.end };\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user ends panning\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorPanEnd(event: IXYCursorEvents[\"panning\"]): void {\r\n\t\tlet cursor: XYCursor = this.cursor;\r\n\t\tlet behavior = cursor.behavior;\r\n\r\n\t\tif (this._panEndXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n\t\t\tlet panEndRange = this._panEndXRange;\r\n\t\t\tlet delta = 0;\r\n\r\n\t\t\tif (panEndRange.start < 0) {\r\n\t\t\t\tdelta = panEndRange.start;\r\n\t\t\t}\r\n\t\t\tif (panEndRange.end > 1) {\r\n\t\t\t\tdelta = panEndRange.end - 1;\t\t\t\t\r\n\t\t\t}\r\n\t\t\tthis.zoomAxes(this.xAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, true);\r\n\t\t\tthis._panEndXRange = undefined;\r\n\t\t\tthis._panStartXRange = undefined;\r\n\t\t}\r\n\t\tif (this._panEndYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n\t\t\tlet panEndRange = this._panEndYRange;\r\n\r\n\t\t\tlet delta = 0;\r\n\t\t\tif (panEndRange.start < 0) {\r\n\t\t\t\tdelta = panEndRange.start;\r\n\t\t\t}\r\n\t\t\tif (panEndRange.end > 1) {\r\n\t\t\t\tdelta = panEndRange.end - 1;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.yAxes, { start: panEndRange.start - delta, end: panEndRange.end - delta }, false, true);\r\n\t\t\tthis._panEndYRange = undefined;\r\n\t\t\tthis._panStartYRange = undefined;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected handleCursorCanceled(): void {\r\n\t\tthis._panEndXRange = undefined;\r\n\t\tthis._panStartXRange = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user is panning chart plot using chart cursor.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorPanning(event: IXYCursorEvents[\"panning\"]): void {\r\n\t\tlet cursor: XYCursor = this.cursor;\r\n\t\tlet behavior = cursor.behavior;\r\n\t\tlet maxPanOut = cursor.maxPanOut;\r\n\t\tif (this._panStartXRange && (behavior == \"panX\" || behavior == \"panXY\")) {\r\n\t\t\tlet panStartRange = this._panStartXRange;\r\n\t\t\tlet range = cursor.xRange;\r\n\r\n\t\t\tlet axisRange = this.getCommonAxisRange(this.xAxes);\r\n\r\n\t\t\tlet difference = (panStartRange.end - panStartRange.start);\r\n\t\t\tlet delta = range.start * (axisRange.end - axisRange.start);\r\n\r\n\t\t\tlet newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n\t\t\tlet newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStart <= 0) {\r\n\t\t\t\tnewEnd = newStart + difference;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEnd >= 1) {\r\n\t\t\t\tnewStart = newEnd - difference;\r\n\t\t\t}\r\n\r\n\t\t\tlet newRange = {\r\n\t\t\t\tstart: newStart,\r\n\t\t\t\tend: newEnd\r\n\t\t\t}\r\n\t\t\tthis._panEndXRange = newRange;\r\n\r\n\t\t\tthis.zoomAxes(this.xAxes, newRange, false, false, cursor.maxPanOut);\r\n\t\t}\r\n\r\n\t\tif (this._panStartYRange && (behavior == \"panY\" || behavior == \"panXY\")) {\r\n\t\t\tlet panStartRange = this._panStartYRange;\r\n\t\t\tlet range = cursor.yRange;\r\n\r\n\t\t\tlet axisRange = this.getCommonAxisRange(this.yAxes);\r\n\r\n\t\t\tlet difference = panStartRange.end - panStartRange.start;\r\n\t\t\tlet delta = range.start * (axisRange.end - axisRange.start);\r\n\r\n\t\t\tlet newStart = Math.max(-maxPanOut, delta + panStartRange.start);\r\n\t\t\tlet newEnd = Math.min(delta + panStartRange.end, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStart <= 0) {\r\n\t\t\t\tnewEnd = newStart + difference;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEnd >= 1) {\r\n\t\t\t\tnewStart = newEnd - difference;\r\n\t\t\t}\r\n\r\n\t\t\tlet newRange = {\r\n\t\t\t\tstart: newStart,\r\n\t\t\t\tend: newEnd\r\n\t\t\t}\r\n\t\t\tthis._panEndYRange = newRange;\r\n\t\t\tthis.zoomAxes(this.yAxes, newRange, false, false, cursor.maxPanOut);\r\n\t\t}\r\n\r\n\t\tthis.handleHideCursor();\r\n\t}\r\n\r\n\t/**\r\n\t * Performs zoom and other operations when user starts zooming using chart\r\n\t * cursor, e.g. zooms axes.\r\n\t *\r\n\t * @param event Cursor's event\r\n\t */\r\n\tprotected handleCursorZoomStart(event: IXYCursorEvents[\"zoomstarted\"]): void {\r\n\r\n\t\t// Nothing here\r\n\t\t// This method is here only as a \"placeholder\" for extending classes to\r\n\t\t// override if necessary\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal (X) scrollbar.\r\n\t *\r\n\t * @param scrollbar Scrollbar\r\n\t */\r\n\tpublic set scrollbarX(scrollbar: Scrollbar) {\r\n\t\tif (this._scrollbarX) {\r\n\t\t\tthis.removeDispose(this._scrollbarX);\r\n\t\t}\r\n\t\tthis._scrollbarX = scrollbar;\r\n\r\n\t\tif (scrollbar) {\r\n\t\t\tthis._disposers.push(scrollbar);\r\n\t\t\tscrollbar.parent = this.topAxesContainer;\r\n\t\t\tscrollbar.shouldClone = false;\r\n\t\t\tscrollbar.startGrip.exportable = false;\r\n\t\t\tscrollbar.endGrip.exportable = false;\r\n\t\t\tscrollbar.toBack();\r\n\t\t\tscrollbar.orientation = \"horizontal\";\r\n\t\t\tscrollbar.events.on(\"rangechanged\", this.handleXScrollbarChange, this, false);\r\n\t\t\t// accessibility related\r\n\t\t\tscrollbar.adapter.add(\"positionValue\", (arg) => {\r\n\t\t\t\tlet xAxis = this.xAxes.getIndex(0);\r\n\t\t\t\tif (xAxis) {\r\n\t\t\t\t\targ.value = xAxis.getPositionLabel(arg.position);\r\n\t\t\t\t}\r\n\t\t\t\treturn arg;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scrollbar\r\n\t */\r\n\tpublic get scrollbarX(): Scrollbar {\r\n\t\treturn this._scrollbarX;\r\n\t}\r\n\r\n\t/**\r\n\t * Vertical (Y) scrollbar.\r\n\t *\r\n\t * @param scrollbar Scrollbar\r\n\t */\r\n\tpublic set scrollbarY(scrollbar: Scrollbar) {\r\n\t\tif (this._scrollbarY) {\r\n\t\t\tthis.removeDispose(this._scrollbarY);\r\n\t\t}\r\n\t\tthis._scrollbarY = scrollbar;\r\n\r\n\t\tif (scrollbar) {\r\n\t\t\tthis._disposers.push(scrollbar);\r\n\t\t\tscrollbar.parent = this.rightAxesContainer;\r\n\t\t\tscrollbar.startGrip.exportable = false;\r\n\t\t\tscrollbar.shouldClone = false;\r\n\t\t\tscrollbar.endGrip.exportable = false;\r\n\t\t\tscrollbar.toFront();\r\n\t\t\tscrollbar.orientation = \"vertical\";\r\n\t\t\tscrollbar.events.on(\"rangechanged\", this.handleYScrollbarChange, this, false);\r\n\t\t\t// accessibility related\r\n\t\t\tscrollbar.adapter.add(\"positionValue\", (arg) => {\r\n\t\t\t\tlet yAxis = this.yAxes.getIndex(0);\r\n\t\t\t\tif (yAxis) {\r\n\t\t\t\t\targ.value = yAxis.getPositionLabel(arg.position);\r\n\t\t\t\t}\r\n\t\t\t\treturn arg;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Scrollbar\r\n\t */\r\n\tpublic get scrollbarY(): Scrollbar {\r\n\t\treturn this._scrollbarY;\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axes affected by the horizontal (X) scrollbar when the selection\r\n\t * on it changes.\r\n\t *\r\n\t * @param event Scrollbar range change event\r\n\t */\r\n\tprotected handleXScrollbarChange(event: AMEvent<Scrollbar, IScrollbarEvents>[\"rangechanged\"]): void {\r\n\t\tif (this.inited) {\r\n\t\t\tlet scrollbar: Scrollbar = event.target;\r\n\t\t\tlet range = scrollbar.range;\r\n\t\t\tif (range.end == 1) {\r\n\t\t\t\trange.priority = \"end\";\r\n\t\t\t}\r\n\t\t\tif (range.start == 0) {\r\n\t\t\t\trange.priority = \"start\";\r\n\t\t\t}\r\n\r\n\t\t\trange = this.zoomAxes(this.xAxes, range);\r\n\r\n\t\t\tscrollbar.fixRange(range);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axes affected by the vertical (Y) scrollbar when the selection\r\n\t * on it changes.\r\n\t *\r\n\t * @param event Scrollbar range change event\r\n\t */\r\n\tprotected handleYScrollbarChange(event: AMEvent<Scrollbar, IScrollbarEvents>[\"rangechanged\"]): void {\r\n\t\tif (this.inited) {\r\n\t\t\tlet scrollbar: Scrollbar = event.target;\r\n\t\t\tlet range = scrollbar.range;\r\n\t\t\tif (range.end == 1) {\r\n\t\t\t\trange.priority = \"end\";\r\n\t\t\t}\r\n\t\t\tif (range.start == 0) {\r\n\t\t\t\trange.priority = \"start\";\r\n\t\t\t}\r\n\t\t\trange = this.zoomAxes(this.yAxes, range);\r\n\t\t\tscrollbar.fixRange(range);\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Zooms axes that are affected by to specific relative range.\r\n\t *\r\n\t * @param axes List of axes to zoom\r\n\t * @param range Range of values to zoom to (0-1)\r\n\t * @param instantly If set to `true` will skip zooming animation\r\n\t * @return Recalculated range that is common to all involved axes\r\n\t */\r\n\tprotected zoomAxes(axes: List<Axis<this[\"_xAxisRendererType\"]>>, range: IRange, instantly?: boolean, round?: boolean, declination?: number): IRange {\r\n\t\tlet realRange: IRange = { start: 0, end: 1 };\r\n\r\n\t\tthis.showSeriesTooltip(); // hides\r\n\r\n\t\tif (!this.dataInvalid) {\r\n\t\t\t$iter.each(axes.iterator(), (axis) => {\r\n\t\t\t\tif (axis.renderer.inversed) {\r\n\t\t\t\t\trange = $math.invertRange(range);\r\n\t\t\t\t}\r\n\r\n\t\t\t\taxis.hideTooltip(0);\r\n\r\n\t\t\t\tif (round) {\r\n\t\t\t\t\t//let diff = range.end - range.start;\r\n\t\t\t\t\trange.start = axis.roundPosition(range.start + 0.0001, 0);\r\n\t\t\t\t\trange.end = axis.roundPosition(range.end + 0.0001, 0);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tlet axisRange: IRange = axis.zoom(range, instantly, instantly, declination);\r\n\r\n\t\t\t\tif (axis.renderer.inversed) {\r\n\t\t\t\t\taxisRange = $math.invertRange(axisRange);\r\n\t\t\t\t}\r\n\r\n\t\t\t\trealRange = axisRange;\r\n\t\t\t});\r\n\t\t}\r\n\t\treturn realRange;\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if bullet container is masked.\r\n\t *\r\n\t * If it is set to `true`, any bullets that do not fit into bullet container\r\n\t * will be clipped off. Settting to `false` will allow bullets to \"spill out\"\r\n\t * of the plot area so they are not cut off.\r\n\t *\r\n\t * @param value Mask bullet container?\r\n\t */\r\n\tpublic set maskBullets(value: boolean) {\r\n\t\tthis.setPropertyValue(\"maskBullets\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Mask bullet container?\r\n\t */\r\n\tpublic get maskBullets(): boolean {\r\n\t\treturn this.getPropertyValue(\"maskBullets\");\r\n\t}\r\n\r\n\t/**\r\n\t * Indicates if chart should arrange series tooltips so that they would not\r\n\t * overlap.\r\n\t *\r\n\t * If set to `true` (default), the chart will adjust vertical positions of\r\n\t * all simultaneously shown tooltips to avoid overlapping.\r\n\t *\r\n\t * However, if you have a vertically-arranged chart, it might not make sense,\r\n\t * because tooltips would most probably not be aligned horizontally. In this\r\n\t * case it would probably be a good idea to set this setting to `false`.\r\n\t *\r\n\t * @default true\r\n\t * @param value Arrange tooltips?\r\n\t */\r\n\tpublic set arrangeTooltips(value: boolean) {\r\n\t\tthis.setPropertyValue(\"arrangeTooltips\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Arrange tooltips?\r\n\t */\r\n\tpublic get arrangeTooltips(): boolean {\r\n\t\treturn this.getPropertyValue(\"arrangeTooltips\");\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Handles mouse wheel event.\r\n\t *\r\n\t * @param event Original event\r\n\t */\r\n\tprotected handleWheel(event: AMEvent<Sprite, ISpriteEvents>[\"wheel\"]) {\r\n\t\tlet plotContainer = this.plotContainer;\r\n\t\tlet svgPoint: IPoint = $utils.documentPointToSvg(event.point, this.htmlContainer, this.svgContainer.cssScale);\r\n\t\tlet plotPoint = $utils.svgPointToSprite(svgPoint, plotContainer);\r\n\t\tlet shift = event.shift.y;\r\n\r\n\t\tlet rangeX: IRange = this.getCommonAxisRange(this.xAxes);\r\n\t\tlet rangeY: IRange = this.getCommonAxisRange(this.yAxes);\r\n\r\n\t\tlet shiftStep = 0.05;\r\n\r\n\t\tlet maxPanOut = 0;\r\n\r\n\t\tlet mouseWheelBehavior = this.mouseWheelBehavior;\r\n\r\n\t\tif (mouseWheelBehavior == \"panX\" || mouseWheelBehavior == \"panXY\") {\r\n\r\n\t\t\tlet differenceX = rangeX.end - rangeX.start;\r\n\r\n\t\t\tlet newStartX = Math.max(-maxPanOut, rangeX.start + shiftStep * shift / 100);\r\n\t\t\tlet newEndX = Math.min(rangeX.end + shiftStep * shift / 100, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStartX <= 0) {\r\n\t\t\t\tnewEndX = newStartX + differenceX;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEndX >= 1) {\r\n\t\t\t\tnewStartX = newEndX - differenceX;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n\t\t}\r\n\r\n\t\tif (mouseWheelBehavior == \"panY\" || mouseWheelBehavior == \"panXY\") {\r\n\t\t\tshift *= -1;\r\n\t\t\tlet differenceY = rangeY.end - rangeY.start;\r\n\r\n\t\t\tlet newStartY = Math.max(-maxPanOut, rangeY.start + shiftStep * shift / 100);\r\n\t\t\tlet newEndY = Math.min(rangeY.end + shiftStep * shift / 100, 1 + maxPanOut);\r\n\r\n\t\t\tif (newStartY <= 0) {\r\n\t\t\t\tnewEndY = newStartY + differenceY;\r\n\t\t\t}\r\n\r\n\t\t\tif (newEndY >= 1) {\r\n\t\t\t\tnewStartY = newEndY - differenceY;\r\n\t\t\t}\r\n\r\n\t\t\tthis.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n\t\t}\r\n\r\n\t\tif (mouseWheelBehavior == \"zoomX\" || mouseWheelBehavior == \"zoomXY\") {\r\n\t\t\tlet locationX = plotPoint.x / plotContainer.maxWidth;\r\n\r\n\t\t\tlet newStartX = Math.max(-maxPanOut, rangeX.start - shiftStep * shift / 100 * locationX);\r\n\t\t\tnewStartX = Math.min(newStartX, rangeX.start + (rangeX.end - rangeX.start) * locationX - shiftStep * 0.05);\r\n\r\n\t\t\tlet newEndX = Math.min(rangeX.end + shiftStep * shift / 100 * (1 - locationX), 1 + maxPanOut);\r\n\t\t\tnewEndX = Math.max(newEndX, rangeX.start + (rangeX.end - rangeX.start) * locationX + shiftStep * 0.05);\r\n \r\n\t\t\tthis.zoomAxes(this.xAxes, { start: newStartX, end: newEndX });\r\n\t\t}\r\n\r\n\t\tif (mouseWheelBehavior == \"zoomY\" || mouseWheelBehavior == \"zoomXY\") {\r\n\t\t\tlet locationY = plotPoint.y / plotContainer.maxHeight;\r\n\r\n\t\t\tlet newStartY = Math.max(-maxPanOut, rangeY.start - shiftStep * shift / 100 * (1 - locationY));\r\n\t\t\tnewStartY = Math.min(newStartY, rangeY.start + (rangeY.end - rangeY.start) * locationY - shiftStep * 0.05);\r\n\r\n\t\t\tlet newEndY = Math.min(rangeY.end + shiftStep * shift / 100 * locationY, 1 + maxPanOut);\r\n \t\t\tnewEndY = Math.max(newEndY, rangeY.start + (rangeY.end - rangeY.start) * locationY + shiftStep * 0.05);\r\n\r\n\t\t\tthis.zoomAxes(this.yAxes, { start: newStartY, end: newEndY });\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies action for when mouse wheel is used when over the chart.\r\n\t *\r\n\t * Options: Options: `\"zoomX\"`, `\"zoomY\"`, `\"zoomXY\"`, `\"panX\"`, `\"panY\"`, `\"panXY\"`, `\"none\"` (default).\r\n\t *\r\n\t * @default \"none\"\r\n\t * @param mouse wheel behavior\r\n\t */\r\n\tpublic set mouseWheelBehavior(value: \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\") {\r\n\r\n\t\tif (this.setPropertyValue(\"mouseWheelBehavior\", value)) {\r\n\t\t\tif (value != \"none\") {\r\n\t\t\t\tthis._mouseWheelDisposer = this.plotContainer.events.on(\"wheel\", this.handleWheel, this, false);\r\n\t\t\t\tthis._disposers.push(this._mouseWheelDisposer);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (this._mouseWheelDisposer) {\r\n\t\t\t\t\tthis.plotContainer.wheelable = false;\r\n\t\t\t\t\tthis.plotContainer.hoverable = false;\r\n\t\t\t\t\tthis._mouseWheelDisposer.dispose();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Mouse wheel behavior\r\n\t */\r\n\tpublic get mouseWheelBehavior(): \"zoomX\" | \"zoomY\" | \"zoomXY\" | \"panX\" | \"panY\" | \"panXY\" | \"none\" {\r\n\t\treturn this.getPropertyValue(\"mouseWheelBehavior\");\r\n\t}\r\n\r\n\t/**\r\n\t * This function is called by the [[DataSource]]'s `dateFields` adapater\r\n\t * so that particular chart types can popuplate this setting with their\r\n\t * own type-specific data fields so they are parsed properly.\r\n\t *\r\n\t * @param fields Array of date fields\r\n\t * @return Array of date fields populated with chart's date fields\r\n\t */\r\n\tprotected dataSourceDateFields(fields: string[]): string[] {\r\n\t\t// Process parent\r\n\t\tfields = super.dataSourceDateFields(fields);\r\n\r\n\t\t// Check if we have any series with date-fields\r\n\t\t$iter.each(this.series.iterator(), (series: this[\"_seriesType\"]) => {\r\n\t\t\tfields = this.populateDataSourceFields(\r\n\t\t\t\tfields,\r\n\t\t\t\t<any>series.dataFields,\r\n\t\t\t\t[\"dateX\", \"dateY\", \"openDateX\", \"openDateY\"]\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t/**\r\n\t * This function is called by the [[DataSource]]'s `numberFields` adapater\r\n\t * so that particular chart types can popuplate this setting with their\r\n\t * own type-specific data fields so they are parsed properly.\r\n\t *\r\n\t * @param value Array of number fields\r\n\t * @return Array of number fields populated with chart's number fields\r\n\t */\r\n\tprotected dataSourceNumberFields(fields: string[]): string[] {\r\n\t\tfields = super.dataSourceDateFields(fields);\r\n\r\n\t\t// Check if we have any series with date-fields\r\n\t\t$iter.each(this.series.iterator(), (series: this[\"_seriesType\"]) => {\r\n\t\t\tfields = this.populateDataSourceFields(\r\n\t\t\t\tfields,\r\n\t\t\t\t<any>series.dataFields,\r\n\t\t\t\t[\"valueX\", \"valueY\", \"openValueX\", \"openValueY\"]\r\n\t\t\t);\r\n\t\t});\r\n\r\n\t\treturn fields;\r\n\t}\r\n\r\n\t/**\r\n\t * Processes JSON-based config before it is applied to the object.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param config Config\r\n\t */\r\n\tpublic processConfig(config?: { [index: string]: any }): void {\r\n\r\n\t\tif (config) {\r\n\r\n\t\t\t// Save axis ranges for later processing\r\n\t\t\tlet xAxes: any[] = [];\r\n\t\t\tlet yAxes: any[] = [];\r\n\r\n\t\t\t// Set up axes\r\n\t\t\tif ($type.hasValue(config.xAxes) && $type.isArray(config.xAxes)) {\r\n\t\t\t\tfor (let i = 0, len = config.xAxes.length; i < len; i++) {\r\n\t\t\t\t\tif (!config.xAxes[i].type) {\r\n\t\t\t\t\t\tthrow Error(\"[XYChart error] No type set for xAxes[\" + i + \"].\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.hasValue(config.xAxes[i][\"axisRanges\"])) {\r\n\t\t\t\t\t\txAxes.push({\r\n\t\t\t\t\t\t\taxisRanges: config.xAxes[i][\"axisRanges\"],\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdelete (config.xAxes[i][\"axisRanges\"]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif ($type.hasValue(config.yAxes) && $type.isArray(config.yAxes)) {\r\n\t\t\t\tfor (let i = 0, len = config.yAxes.length; i < len; i++) {\r\n\t\t\t\t\tif (!config.yAxes[i].type) {\r\n\t\t\t\t\t\tthrow Error(\"[XYChart error] No type set for yAxes[\" + i + \"].\");\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if ($type.hasValue(config.yAxes[i][\"axisRanges\"])) {\r\n\t\t\t\t\t\tyAxes.push({\r\n\t\t\t\t\t\t\taxisRanges: config.yAxes[i][\"axisRanges\"],\r\n\t\t\t\t\t\t\tindex: i\r\n\t\t\t\t\t\t});\r\n\t\t\t\t\t\tdelete (config.yAxes[i][\"axisRanges\"]);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set up series\r\n\t\t\tif ($type.hasValue(config.series) && $type.isArray(config.series)) {\r\n\t\t\t\tfor (let i = 0, len = config.series.length; i < len; i++) {\r\n\t\t\t\t\tconfig.series[i].type = config.series[i].type || \"LineSeries\";\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// Set up cursor\r\n\t\t\tif ($type.hasValue(config.cursor) && !$type.hasValue(config.cursor.type)) {\r\n\t\t\t\tconfig.cursor.type = \"XYCursor\";\r\n\t\t\t}\r\n\r\n\t\t\t// Set up scrollbars\r\n\t\t\tif ($type.hasValue(config.scrollbarX) && !$type.hasValue(config.scrollbarX.type)) {\r\n\t\t\t\tconfig.scrollbarX.type = \"Scrollbar\";\r\n\t\t\t}\r\n\r\n\t\t\tif ($type.hasValue(config.scrollbarY) && !$type.hasValue(config.scrollbarY.type)) {\r\n\t\t\t\tconfig.scrollbarY.type = \"Scrollbar\";\r\n\t\t\t}\r\n\r\n\t\t\tsuper.processConfig(config);\r\n\r\n\t\t\t// Finish up with ranges.\r\n\t\t\t// We need to do this here because series are processed last in JSON\r\n\t\t\t// config. Therefore their respective objects are not yet are available\r\n\t\t\t// when axis (and respectively their ranges) are being processed.\r\n\t\t\tif (yAxes.length) {\r\n\t\t\t\tfor (let i = 0, len = yAxes.length; i < len; i++) {\r\n\t\t\t\t\tthis.yAxes.getIndex(yAxes[i].index).config = {\r\n\t\t\t\t\t\taxisRanges: yAxes[i].axisRanges\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (xAxes.length) {\r\n\t\t\t\tfor (let i = 0, len = xAxes.length; i < len; i++) {\r\n\t\t\t\t\tthis.xAxes.getIndex(xAxes[i].index).config = {\r\n\t\t\t\t\t\taxisRanges: xAxes[i].axisRanges\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * This function is used to sort element's JSON config properties, so that\r\n\t * some properties that absolutely need to be processed last, can be put at\r\n\t * the end.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param a Element 1\r\n\t * @param b Element 2\r\n\t * @return Sorting number\r\n\t */\r\n\tprotected configOrder(a: string, b: string): Ordering {\r\n\t\tif (a == b) {\r\n\t\t\treturn 0;\r\n\t\t}\r\n\t\t// Must come last\r\n\t\telse if (a == \"scrollbarX\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"scrollbarX\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse if (a == \"scrollbarY\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"scrollbarY\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse if (a == \"cursor\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"cursor\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse if (a == \"series\") {\r\n\t\t\treturn 1;\r\n\t\t}\r\n\t\telse if (b == \"series\") {\r\n\t\t\treturn -1;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn super.configOrder(a, b);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Creates a new Series of type suitable for this chart.\r\n\t *\r\n\t * @return New series\r\n\t */\r\n\tprotected createSeries(): this[\"_seriesType\"] {\r\n\t\treturn new XYSeries();\r\n\t}\r\n\r\n\t/**\r\n\t * A [[Button]] element that is used for zooming out the chart.\r\n\t *\r\n\t * This button appears only when chart is zoomed in, and disappears\r\n\t * autoamatically when it is zoome dout.\r\n\t *\r\n\t * @param button Zoom out button\r\n\t */\r\n\tpublic set zoomOutButton(button: Button) {\r\n\t\tthis._zoomOutButton = button;\r\n\t\tif (button) {\r\n\t\t\tbutton.events.on(\"hit\", () => {\r\n\t\t\t\tthis.zoomAxes(this.xAxes, { start: 0, end: 1 });\r\n\t\t\t\tthis.zoomAxes(this.yAxes, { start: 0, end: 1 });\r\n\t\t\t}, undefined, false);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Zoom out button\r\n\t */\r\n\tpublic get zoomOutButton(): Button {\r\n\t\treturn this._zoomOutButton;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Copies all parameters from another [[XYChart]].\r\n\t *\r\n\t * @param source Source XYChart\r\n\t */\r\n\tpublic copyFrom(source: this) {\r\n\r\n\t\tsource.xAxes.each((axis) => {\r\n\t\t\tthis.xAxes.push(axis.clone());\r\n\t\t})\r\n\r\n\t\tsource.yAxes.each((axis) => {\r\n\t\t\tthis.yAxes.push(axis.clone());\r\n\t\t})\r\n\r\n\t\t//this.xAxes.copyFrom(source.xAxes);\r\n\t\t//this.yAxes.copyFrom(source.yAxes);\r\n\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\t//this.zoomOutButton.copyFrom(source.zoomOutButton);\r\n\r\n\t\tif (source.cursor) {\r\n\t\t\tthis.cursor = source.cursor.clone();\r\n\t\t}\r\n\r\n\t\tif (source.scrollbarX) {\r\n\t\t\tthis.scrollbarX = source.scrollbarX.clone();\r\n\t\t}\r\n\r\n\t\tif (source.scrollbarY) {\r\n\t\t\tthis.scrollbarY = source.scrollbarY.clone();\r\n\t\t}\r\n\t\t//@todo copy all container properties\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tsuper.disposeData();\r\n\r\n\t\tlet scrollbarX = this.scrollbarX;\r\n\t\tif (scrollbarX && scrollbarX instanceof XYChartScrollbar) {\r\n\t\t\tscrollbarX.scrollbarChart.disposeData();\r\n\t\t}\r\n\r\n\t\tlet scrollbarY = this.scrollbarY;\r\n\t\tif (scrollbarY && scrollbarY instanceof XYChartScrollbar) {\r\n\t\t\tscrollbarY.scrollbarChart.disposeData();\r\n\t\t}\r\n\r\n\t\tthis.xAxes.each((axis) => {\r\n\t\t\taxis.disposeData();\r\n\t\t})\r\n\r\n\t\tthis.yAxes.each((axis) => {\r\n\t\t\taxis.disposeData();\r\n\t\t})\r\n\t}\r\n\r\n\t/**\r\n\t * Adds one or several (array) of data items to the existing data.\r\n\t *\r\n\t * @param rawDataItem One or many raw data item objects\r\n\t */\r\n\tpublic addData(rawDataItem: Object | Object[], removeCount?: number): void {\r\n\t\tif (this.scrollbarX instanceof XYChartScrollbar) {\r\n\t\t\tthis.addScrollbarData(this.scrollbarX, removeCount);\r\n\t\t}\r\n\t\tif (this.scrollbarY instanceof XYChartScrollbar) {\r\n\t\t\tthis.addScrollbarData(this.scrollbarY, removeCount);\r\n\t\t}\r\n\r\n\t\tsuper.addData(rawDataItem, removeCount);\t\t\t\t\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected addScrollbarData(scrollbar:XYChartScrollbar, removeCount:number){\r\n\t\tlet chart = scrollbar.scrollbarChart;\r\n\t\tchart._parseDataFrom = chart.data.length;\r\n\t\tchart.invalidateData();\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected removeScrollbarData(scrollbar:XYChartScrollbar, removeCount:number){\r\n\t\tlet chart = scrollbar.scrollbarChart;\r\n\t\tif ($type.isNumber(removeCount)) {\r\n\t\t\twhile (removeCount > 0) {\r\n\t\t\t\tlet dataItem = this.dataItems.getIndex(0);\r\n\t\t\t\tif (dataItem) {\r\n\t\t\t\t\tchart.dataItems.remove(dataItem);\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tchart.dataUsers.each((dataUser) => {\r\n\t\t\t\t\tlet dataItem = dataUser.dataItems.getIndex(0);\r\n\t\t\t\t\tif (dataItem) {\r\n\t\t\t\t\t\tdataUser.dataItems.remove(dataItem);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\r\n\t\t\t\tchart._parseDataFrom--;\r\n\r\n\t\t\t\tremoveCount--;\r\n\t\t\t}\r\n\r\n\t\t\tchart.invalidateData();\r\n\t\t}\t\t\r\n\t}\r\n\r\n\t/**\r\n\t * Removes elements from the beginning of data\r\n\t *\r\n\t * @param count number of elements to remove\r\n\t */\r\n\tpublic removeData(count: $type.Optional<number>) {\r\n\t\tif (this.scrollbarX instanceof XYChartScrollbar) {\r\n\t\t\tthis.removeScrollbarData(this.scrollbarX, count);\r\n\t\t}\r\n\t\tif (this.scrollbarY instanceof XYChartScrollbar) {\r\n\t\t\tthis.removeScrollbarData(this.scrollbarY, count);\r\n\t\t}\t\r\n\r\n\t\tsuper.removeData(count);\r\n\t}\t\r\n\r\n\t/**\r\n\t * @param value Tap to activate?\r\n\t */\r\n\tprotected setTapToActivate(value: boolean): void {\r\n\t\tsuper.setTapToActivate(value);\r\n\t\tif (this.cursor) {\r\n\t\t\tthis.cursor.interactions.isTouchProtected = value;\r\n\t\t\tthis.plotContainer.interactions.isTouchProtected = value;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected handleTapToActivate(): void {\r\n\t\tsuper.handleTapToActivate();\r\n\t\tif (this.cursor) {\r\n\t\t\tthis.cursor.interactions.isTouchProtected = false;\r\n\t\t\tthis.plotContainer.interactions.isTouchProtected = false;\r\n\t\t}\r\n\t}\r\n\r\n\tprotected handleTapToActivateDeactivation(): void {\r\n\t\tsuper.handleTapToActivateDeactivation();\r\n\t\tif (this.cursor) {\r\n\t\t\tthis.cursor.interactions.isTouchProtected = true;\r\n\t\t\tthis.plotContainer.interactions.isTouchProtected = true;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"XYChart\"] = XYChart;\r\n\r\n/**\r\n * Add default responsive rules\r\n */\r\n\r\n/**\r\n * Remove horizontal scrollbar on narrow charts.\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.maybeXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof XYChart && target.scrollbarX) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tlet sbstate = target.scrollbarX.states.create(stateId);\r\n\t\t\tsbstate.properties.disabled = true;\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});\r\n\r\n/**\r\n * Remove vertical scrollbar on short charts.\r\n */\r\ndefaultRules.push({\r\n\trelevant: ResponsiveBreakpoints.maybeXS,\r\n\tstate: function(target, stateId) {\r\n\t\tif (target instanceof XYChart && target.scrollbarY) {\r\n\t\t\tlet state = target.states.create(stateId);\r\n\t\t\tlet sbstate = target.scrollbarY.states.create(stateId);\r\n\t\t\tsbstate.properties.disabled = true;\r\n\t\t\treturn state;\r\n\t\t}\r\n\r\n\t\treturn null;\r\n\t}\r\n});\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/types/XYChart.ts","/**\r\n * Line series segment module.\r\n * @todo Add description about what this is\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Container, IContainerProperties, IContainerAdapters, IContainerEvents } from \"../../core/Container\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport { color } from \"../../core/utils/Color\";\r\nimport * as $smoothing from \"../../core/rendering/Smoothing\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[LineSeriesSegment]].\r\n */\r\nexport interface ILineSeriesSegmentProperties extends IContainerProperties { }\r\n\r\n/**\r\n * Defines events for [[LineSeriesSegment]].\r\n */\r\nexport interface ILineSeriesSegmentEvents extends IContainerEvents { }\r\n\r\n/**\r\n * Defines adapters for [[LineSeriesSegment]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ILineSeriesSegmentAdapters extends IContainerAdapters, ILineSeriesSegmentProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Represents a line series segment.\r\n *\r\n * A line segment can be used to apply different properties to a part of the\r\n * line series, between two data points.\r\n *\r\n * @see {@link ILineSeriesSegmentEvents} for a list of available events\r\n * @see {@link ILineSeriesSegmentAdapters} for a list of available Adapters\r\n * @todo Example\r\n */\r\nexport class LineSeriesSegment extends Container {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ILineSeriesSegmentProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ILineSeriesSegmentAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ILineSeriesSegmentEvents;\r\n\r\n\t/**\r\n\t * Segment's line element.\r\n\t */\r\n\tpublic strokeSprite: Sprite;\r\n\r\n\t/**\r\n\t * Segment's fill element.\r\n\t */\r\n\tpublic fillSprite: Sprite;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"LineSeriesSegment\";\r\n\r\n\t\t// Set defaults\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.interactionsEnabled = false;\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\t// Create fill element\r\n\t\tlet fillSprite = this.createChild(Sprite);\r\n\t\tthis.fillSprite = fillSprite;\r\n\t\tfillSprite.shouldClone = false;\r\n\t\tfillSprite.setElement(this.paper.add(\"path\"));\r\n\t\tfillSprite.isMeasured = false;\r\n\t\tthis._disposers.push(fillSprite);\r\n\r\n\r\n\t\t// Create line element\r\n\t\tlet strokeSprite = this.createChild(Sprite);\r\n\t\tthis.strokeSprite = strokeSprite;\r\n\t\tstrokeSprite.shouldClone = false;\r\n\t\tstrokeSprite.fill = color();\r\n\t\tstrokeSprite.setElement(this.paper.add(\"path\"));\r\n\t\tstrokeSprite.isMeasured = false;\r\n\t\tthis._disposers.push(strokeSprite);\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the series segment.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param points Points to connect\r\n\t * @param closePoints ?\r\n\t * @param smoothnessX Horizontal bezier setting (?)\r\n\t * @param smoothnessY Vertical bezier setting (?)\r\n\t */\r\n\tpublic drawSegment(points: IPoint[], closePoints: IPoint[], smoothnessX: number, smoothnessY: number): void {\r\n\t\tif (!this.disabled) {\r\n\t\t\tif (points.length > 0 && closePoints.length > 0) {\r\n\t\t\t\t// first moveTo helps to avoid Chrome straight line in the mask bug.\r\n\t\t\t\tlet path: string = $path.moveTo({ x: points[0].x - 0.2, y: points[0].y - 0.2 }) + $path.moveTo(points[0]) + new $smoothing.Tension(smoothnessX, smoothnessY).smooth(points);\r\n\r\n\t\t\t\tif (this.strokeOpacity == 0 || this.strokeSprite.strokeOpacity == 0) {\r\n\t\t\t\t\t// like this and not if != 0, otherwise ranges stroke won't be drawn.\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.strokeSprite.path = path;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (this.fillOpacity > 0 || this.fillSprite.fillOpacity > 0) { // helps to avoid drawing fill object if fill is not visible\r\n\t\t\t\t\tpath += $path.lineTo(closePoints[0]) + new $smoothing.Tension(smoothnessX, smoothnessY).smooth(closePoints);\r\n\t\t\t\t\tpath += $path.lineTo(points[0]);\r\n\t\t\t\t\tpath += $path.closePath();\r\n\r\n\t\t\t\t\tthis.fillSprite.path = path;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthis.fillSprite.path = \"\";\r\n\t\t\t\tthis.strokeSprite.path = \"\";\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Copies properties from a [[Sprite]] to both line and fill elements.\r\n\t *\r\n\t * @param source Source [[Sprite]] to copy properties from\r\n\t */\r\n\tpublic copyFrom(source: this): void {\r\n\t\tsuper.copyFrom(source);\r\n\r\n\t\tlet lineElement = this.strokeSprite;\r\n\t\t$object.copyProperties(source, lineElement.properties, visualProperties);\r\n\t\tlineElement.events.copyFrom(source.strokeSprite.events);\r\n\t\tlineElement.fillOpacity = 0;\r\n\r\n\t\tlet fillElement = this.fillSprite;\r\n\t\t$object.copyProperties(source, fillElement.properties, visualProperties);\r\n\t\tfillElement.events.copyFrom(source.fillSprite.events);\r\n\t\tfillElement.strokeOpacity = 0;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LineSeriesSegment\"] = LineSeriesSegment;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/series/LineSeriesSegment.ts","/**\r\n * Line series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { XYSeries, XYSeriesDataItem, IXYSeriesProperties, IXYSeriesDataFields, IXYSeriesAdapters, IXYSeriesEvents } from \"./XYSeries\";\r\nimport { Sprite, visualProperties } from \"../../core/Sprite\";\r\nimport { Container } from \"../../core/Container\";\r\nimport { ListTemplate, ListDisposer } from \"../../core/utils/List\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\r\nimport { Axis, AxisDataItem } from \"../axes/Axis\";\r\nimport { ValueAxis } from \"../axes/ValueAxis\";\r\nimport { DateAxis } from \"../axes/DateAxis\";\r\nimport { CategoryAxis } from \"../axes/CategoryAxis\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Line } from \"../../core/elements/Line\";\r\nimport { Label } from \"../../core/elements/Label\";\r\nimport { Rectangle } from \"../../core/elements/Rectangle\";\r\nimport * as $iter from \"../../core/utils/Iterator\";\r\nimport * as $object from \"../../core/utils/Object\";\r\nimport * as $type from \"../../core/utils/Type\";\r\nimport * as $array from \"../../core/utils/Array\";\r\nimport { LegendDataItem } from \"../Legend\";\r\nimport { Bullet } from \"../elements/Bullet\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[LineSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class LineSeriesDataItem extends XYSeriesDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: LineSeries;\r\n\r\n\t/**\r\n\t * Point of line series data item\r\n\t */\r\n\tpublic point: IPoint;\r\n\r\n\t/**\r\n\t * A reference to a segment object, used for getting proper colors for tooltips\r\n\t */\r\n\tpublic segment: LineSeriesSegment;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"LineSeriesDataItem\";\r\n\t}\r\n\r\n\t// @todo: minimums/maximums\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[LineSeries]].\r\n */\r\nexport interface ILineSeriesDataFields extends IXYSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[LineSeries]].\r\n */\r\nexport interface ILineSeriesProperties extends IXYSeriesProperties {\r\n\r\n\t/**\r\n\t * Horizontal tension setting of the line (0-1).\r\n\t *\r\n\t * Used for smoothed lines.\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\ttensionX?: number;\r\n\r\n\t/**\r\n\t * Vertical tension setting of the line (0-1).\r\n\t *\r\n\t * Used for smoothed lines.\r\n\t *\r\n\t * @default 1\r\n\t */\r\n\ttensionY?: number;\r\n\r\n\t/**\r\n\t * Connect the lines over empty data points?\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tconnect?: boolean;\r\n\r\n\t/**\r\n\t * If `connect = false` and distance between two data points is bigger\r\n\t * than `baseInterval * autoGapCount`, a line will break automatically.\r\n\t *\r\n\t * @default 1.1\r\n\t */\r\n\tautoGapCount?: number;\r\n}\r\n\r\n/**\r\n * Defines events for [[LineSeries]].\r\n */\r\nexport interface ILineSeriesEvents extends IXYSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[LineSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface ILineSeriesAdapters extends IXYSeriesAdapters, ILineSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines [[Series]] for a line graph.\r\n *\r\n * @see {@link ILineSeriesEvents} for a list of available Events\r\n * @see {@link ILineSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class LineSeries extends XYSeries {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: ILineSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: ILineSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: ILineSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: ILineSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: LineSeriesDataItem;\r\n\r\n\t/**\r\n\t * A list of line series segments.\r\n\t *\r\n\t * Segments are used in two cases:\r\n\t *\r\n\t * * When we want to change the appearance of a part of the line series;\r\n\t * * When we have an axis range.\r\n\t */\r\n\tpublic segments: ListTemplate<this[\"_segment\"]>;\r\n\r\n\r\n\t/**\r\n\t */\r\n\tpublic _segment: LineSeriesSegment;\r\n\r\n\t/**\r\n\t * A container for segment elements.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic segmentsContainer: Container;\r\n\r\n\t/**\r\n\t * Minimum distance in pixels between two adjacent points.\r\n\t *\r\n\t * If the distance is less than this setting, a point is skipped.\r\n\t *\r\n\t * This allows acceptable performance with huge amounts of data points.\r\n\t *\r\n\t * @default 0.5\r\n\t */\r\n\tpublic minDistance: number = 0.5;\r\n\r\n\t/**\r\n\t * Iterator for segments.\r\n\t */\r\n\tprotected _segmentsIterator: $iter.ListIterator<this[\"_segment\"]>;\r\n\r\n\tprotected _adjustedStartIndex: number;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\r\n\t\tthis.segments = new ListTemplate<LineSeriesSegment>(this.createSegment());\r\n\t\tthis.segments.template.applyOnClones = true;\r\n\r\n\t\tthis._disposers.push(new ListDisposer(this.segments));\r\n\t\tthis._disposers.push(this.segments.template);\r\n\r\n\t\tthis._segmentsIterator = new $iter.ListIterator<LineSeriesSegment>(this.segments, () => this.segments.create());\r\n\t\tthis._segmentsIterator.createNewItems = true;\r\n\r\n\t\tthis.className = \"LineSeries\";\r\n\r\n\t\tthis.strokeOpacity = 1;\r\n\t\tthis.fillOpacity = 0;\r\n\r\n\t\tthis.connect = true;\r\n\r\n\t\tthis.tensionX = 1;\r\n\t\tthis.tensionY = 1;\r\n\r\n\t\tthis.autoGapCount = 1.1;\r\n\r\n\t\tthis.segmentsContainer = this.mainContainer.createChild(Container);\r\n\t\tthis.segmentsContainer.isMeasured = false;\r\n\r\n\t\t// line series might have multiple segments and it has a separate sprite for fill and stroke for each segment. So we need to observe all the changes on series and set them on the segments\r\n\t\t// todo: we need list here, otherwise everything will be redrawn event on change of properties like tooltipX or similar.\r\n\t\t// this.addEventListener(SpriteEvent.PROPERTY_CHANGED, this.validateDataElements, false, this);\r\n\r\n\t\tthis.bulletsContainer.toFront();\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Sets defaults that instantiate some objects that rely on parent, so they\r\n\t * cannot be set in constructor.\r\n\t */\r\n\tprotected applyInternalDefaults(): void {\r\n\t\tsuper.applyInternalDefaults();\r\n\t\tif (!$type.hasValue(this.readerTitle)) {\r\n\t\t\tthis.readerTitle = this.language.translate(\"Line Series\");\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected createSegment(): this[\"_segment\"] {\r\n\t\treturn new LineSeriesSegment();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new LineSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Inits data item's working values.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param index Data item's index\r\n\t */\r\n\r\n\tprotected setInitialWorkingValues(dataItem: this[\"_dataItem\"]): void {\r\n\t\t// this makes data items animate when added\r\n\r\n\t\tlet yAxis: Axis = this._yAxis.get();\r\n\t\tlet xAxis: Axis = this._xAxis.get();\r\n\r\n\t\tif (this.appeared && this.visible) {\r\n\r\n\t\t\tlet previousDataItem: XYSeriesDataItem = this.dataItems.getIndex(dataItem.index - 1);\r\n\r\n\t\t\tdataItem.component = this; // as these values are set before, we don't know component yet\r\n\r\n\t\t\tif (this.baseAxis == xAxis) {\r\n\t\t\t\tif (yAxis instanceof ValueAxis) {\r\n\t\t\t\t\tlet initialY: number = yAxis.minZoomed;\r\n\t\t\t\t\tif (previousDataItem) {\r\n\t\t\t\t\t\tinitialY = previousDataItem.values[\"valueY\"].workingValue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t// this makes line animate from previous point to newly added point\r\n\t\t\t\t\tdataItem.setWorkingValue(\"valueY\", initialY, 0);\r\n\t\t\t\t\tdataItem.setWorkingValue(\"valueY\", dataItem.values.valueY.value);\r\n\r\n\t\t\t\t\tif (xAxis instanceof DateAxis) {\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX); // animate to it's location\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.baseAxis == yAxis) {\r\n\t\t\t\tif (xAxis instanceof ValueAxis) {\r\n\t\t\t\t\tlet initialX: number = xAxis.minZoomed;\r\n\t\t\t\t\tif (previousDataItem) {\r\n\t\t\t\t\t\tinitialX = previousDataItem.values[\"valueX\"].workingValue;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tdataItem.setWorkingValue(\"valueX\", initialX, 0);\r\n\t\t\t\t\tdataItem.setWorkingValue(\"valueX\", dataItem.values.valueX.value);\r\n\r\n\t\t\t\t\tif (yAxis instanceof DateAxis) {\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateX - 1, 0); // instantly move it to previous\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY); // animate to it's location\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tif (this.baseAxis == xAxis) {\r\n\t\t\t\tif (yAxis instanceof ValueAxis) {\r\n\t\t\t\t\tif (xAxis instanceof DateAxis) {\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"dateX\", dataItem.locations.dateX);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (xAxis instanceof CategoryAxis) {\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"categoryX\", dataItem.locations.categoryX);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (this.baseAxis == yAxis) {\r\n\t\t\t\tif (xAxis instanceof ValueAxis) {\r\n\t\t\t\t\tif (yAxis instanceof DateAxis) {\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"dateY\", dataItem.locations.dateY);\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (yAxis instanceof CategoryAxis) {\r\n\t\t\t\t\t\tdataItem.setWorkingLocation(\"categoryY\", dataItem.locations.categoryY);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Updates corresponding legend data item with current values.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param dataItem Data item\r\n\t */\r\n\tpublic updateLegendValue(dataItem?: this[\"_dataItem\"]) {\r\n\t\tsuper.updateLegendValue(dataItem);\r\n\t\t//This is hack to save some methos, used to set tooltip color source only\r\n\t\tif (dataItem && dataItem.segment) {\r\n\t\t\tthis.tooltipColorSource = dataItem.segment;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the whole series, effectively causing it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\r\n\t\tsuper.validate();\r\n\r\n\t\tthis._segmentsIterator.reset();\r\n\r\n\t\tthis.openSegmentWrapper(this._adjustedStartIndex);\r\n\r\n\t\t$iter.each(this.axisRanges.iterator(), (range) => {\r\n\t\t\tthis.openSegmentWrapper(this._adjustedStartIndex, range);\r\n\t\t});\r\n\r\n\t\t$iter.each(this._segmentsIterator.iterator(), (segment) => {\r\n\t\t\tsegment.__disabled = true;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * [sliceData description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected sliceData(): void {\r\n\t\tlet startIndex: number = this.startIndex;\r\n\t\tlet endIndex: number = this.endIndex;\r\n\r\n\t\t// we need extra one item to both sides with values for line series, otherwise the line will not continue out of bounds of the chart while scrolling\r\n\t\t// find first to the left\r\n\t\t// TODO use iterator instead\r\n\t\tfor (let i = this.startIndex - 1; i >= 0; i--) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tif (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n\t\t\t\tstartIndex = i;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis._adjustedStartIndex = this.findAdjustedIndex(startIndex, [\"stroke\", \"strokeWidth\", \"strokeDasharray\", \"strokeOpacity\", \"fill\", \"fillOpacity\", \"opacity\"]);\r\n\r\n\t\t// find first to the right\r\n\t\t// TODO use iterator instead\r\n\t\tfor (let i = this.endIndex, len = this.dataItems.length; i < len; i++) {\r\n\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\tif (dataItem && dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n\t\t\t\tendIndex = i + 1;\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis._workingStartIndex = startIndex;\r\n\t\tthis._workingEndIndex = endIndex;\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tprotected findAdjustedIndex(adjustedIndex: number, properties: string[]): number {\r\n\t\tlet propertyFields: any = this.propertyFields;\r\n\t\tlet startIndex = adjustedIndex;\r\n\r\n\t\t$array.each(properties, (property) => {\r\n\t\t\tif ($type.hasValue(propertyFields[property])) {\r\n\t\t\t\tfor (let i = startIndex; i >= 0; i--) {\r\n\t\t\t\t\tlet dataItem = this.dataItems.getIndex(i);\r\n\t\t\t\t\tif(dataItem){\r\n\t\t\t\t\t\tif ($type.hasValue(dataItem.properties[property])) {\r\n\t\t\t\t\t\t\tif (adjustedIndex > i) {\r\n\t\t\t\t\t\t\t\tadjustedIndex = i;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t})\r\n\t\treturn adjustedIndex;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * Wraps openSegment call with iterative solution to prevent stack overflow\r\n\t *\r\n\t * @param openIndex Index\r\n\t * @param axisRange Range\r\n\t */\r\n\tprotected openSegmentWrapper(openIndex: number, axisRange?: AxisDataItem): void {\r\n\t\tlet params = {\r\n\t\t\t\"index\": openIndex,\r\n\t\t\t\"axisRange\": axisRange\r\n\t\t};\r\n\t\tdo {\r\n\t\t\tparams = this.openSegment(params.index, params.axisRange);\r\n\t\t} while (params)\r\n\t}\r\n\r\n\t/**\r\n\t * [openSegment description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param openIndex [description]\r\n\t * @param axisRange [description]\r\n\t */\r\n\tprotected openSegment(openIndex: number, axisRange?: AxisDataItem): { \"index\": number, \"axisRange\": AxisDataItem } {\r\n\t\tlet addToClose = false;\r\n\t\tlet points: IPoint[] = [];\r\n\t\topenIndex = Math.min(openIndex, this.dataItems.length);\r\n\t\tlet endIndex: number = Math.min(this._workingEndIndex, this.dataItems.length);\r\n\t\tthis._workingEndIndex = Math.min(this._workingEndIndex, this.dataItems.length);\r\n\r\n\t\tlet closeIndex: number;\r\n\t\tlet propertiesChanged: boolean = false;\r\n\r\n\t\tlet segment: LineSeriesSegment = this._segmentsIterator.getFirst();\r\n\t\tsegment.__disabled = false;\r\n\r\n\t\tif (axisRange) {\r\n\t\t\tsegment.parent = axisRange.contents;\r\n\t\t\t$object.copyProperties(axisRange.contents, segment, visualProperties);\r\n\t\t}\r\n\t\telse {\r\n\t\t\t$object.copyProperties(this, segment, visualProperties);\r\n\t\t\tsegment.filters.clear();\r\n\t\t\tsegment.parent = this.segmentsContainer;\r\n\t\t}\r\n\r\n\t\tlet connect: boolean = this.connect;\r\n\t\tlet valuesFound:boolean = false; // some flag to avoid multiple closes if no values found\r\n\r\n\t\tfor (let i: number = openIndex; i < endIndex; i++) {\r\n\r\n\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(i);\r\n\t\t\tdataItem.segment = segment;\r\n\r\n\t\t\tif (dataItem.hasProperties) {\r\n\t\t\t\t// if this is first item of segment\r\n\t\t\t\tif (i == openIndex) {\r\n\t\t\t\t\tthis.updateSegmentProperties(dataItem.properties, segment);\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// this time we only need to know if properties changed, so we don't pass segment\r\n\t\t\t\t\tpropertiesChanged = this.updateSegmentProperties(dataItem.properties, segment, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) {\r\n\t\t\t\tthis.addPoints(points, dataItem, this.xField, this.yField);\r\n\t\t\t\tvaluesFound = true;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\t// if no values in first data item, go to next\r\n\t\t\t\tif (i == openIndex) {\r\n\t\t\t\t\tcontinue;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\t// stop cycle\r\n\t\t\t\t\tif (!connect && valuesFound) {\r\n\t\t\t\t\t\tcloseIndex = i;\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tcloseIndex = i;\r\n\r\n\t\t\tif (this.baseAxis instanceof DateAxis) {\r\n\t\t\t\tlet next = this.dataItems.getIndex(i + 1)\r\n\t\t\t\tif (next && this.baseAxis.makeGap(next, dataItem)) {\r\n\t\t\t\t\taddToClose = true;\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tif (propertiesChanged) {\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn this.closeSegment(segment, points, openIndex, closeIndex, axisRange, addToClose);\r\n\t}\r\n\r\n\t/**\r\n\t * [addPoints description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param points [description]\r\n\t * @param dataItem [description]\r\n\t * @param xField [description]\r\n\t * @param yField [description]\r\n\t * @param backwards [description]\r\n\t */\r\n\tprotected addPoints(points: IPoint[], dataItem: this[\"_dataItem\"], xField: string, yField: string, backwards?: boolean) {\r\n\t\tlet point = this.getPoint(dataItem, xField, yField, dataItem.workingLocations[xField], dataItem.workingLocations[yField]);\r\n\t\tif (!backwards) {\r\n\t\t\tdataItem.point = point;\r\n\t\t}\r\n\t\tpoints.push(point);\r\n\t}\r\n\r\n\t/**\r\n\t * [closeSegment description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param segment [description]\r\n\t * @param points [description]\r\n\t * @param openIndex [description]\r\n\t * @param closeIndex [description]\r\n\t * @param axisRange [description]\r\n\t */\r\n\tprotected closeSegment(segment: LineSeriesSegment, points: IPoint[], openIndex: number, closeIndex: number, axisRange?: AxisDataItem, add?: boolean) {\r\n\t\tlet closePoints: IPoint[] = [];\r\n\r\n\t\tif (this.dataFields[<keyof this[\"_dataFields\"]>this._xOpenField] ||\r\n\t\t\tthis.dataFields[<keyof this[\"_dataFields\"]>this._yOpenField] ||\r\n\t\t\tthis.stacked) {\r\n\t\t\tfor (let i: number = closeIndex; i >= openIndex; i--) {\r\n\t\t\t\tlet dataItem: this[\"_dataItem\"] = this.dataItems.getIndex(i);\r\n\t\t\t\tif (dataItem.hasValue(this._xValueFields) && dataItem.hasValue(this._yValueFields)) { // not sure, this means that open point will only be added if value is also set for this point, but maybe it's ok.\r\n\t\t\t\t\tthis.addPoints(closePoints, dataItem, this.xOpenField, this.yOpenField, true);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\telse {\r\n\t\t\tlet baseAxis: Axis = this.baseAxis;\r\n\t\t\tlet count: number = points.length;\r\n\t\t\tlet xAxis: Axis = this.xAxis;\r\n\t\t\tlet yAxis: Axis = this.yAxis;\r\n\t\t\tif (count > 0) {\r\n\t\t\t\tif (baseAxis == xAxis) {\r\n\t\t\t\t\tclosePoints.push({ x: points[count - 1].x, y: yAxis.basePoint.y }); // last x\r\n\t\t\t\t\tclosePoints.push({ x: points[0].x, y: yAxis.basePoint.y }); // first x\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tclosePoints.push({ x: xAxis.basePoint.x, y: points[count - 1].y }); // last y\r\n\t\t\t\t\tclosePoints.push({ x: xAxis.basePoint.x, y: points[0].y }); // first y\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.drawSegment(segment, points, closePoints);\r\n\r\n\t\tif (add) {\r\n\t\t\tcloseIndex++;\r\n\t\t}\r\n\r\n\t\tif (closeIndex < this._workingEndIndex - 1) {\r\n\t\t\treturn { \"index\": closeIndex, \"axisRange\": axisRange };\r\n\t\t} else {\r\n\t\t\treturn null;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the line segment.\r\n\t *\r\n\t * @param segment Segment\r\n\t * @param points Segment points\r\n\t * @param closePoints Segment close points\r\n\t */\r\n\tprotected drawSegment(segment: LineSeriesSegment, points: IPoint[], closePoints: IPoint[]): void {\r\n\t\tsegment.drawSegment(points, closePoints, this.tensionX, this.tensionY);\r\n\t}\r\n\r\n\t/**\r\n\t * Segement will get its colors from `this.dataItem`, as thats how\r\n\t * `getPropertyValue()` method works.\r\n\t *\r\n\t * We pass `lineSeriesDataItem.properties` as item here each time when a flag\r\n\t * `hasProperties` is set to `true` on data item (this means it can contain\r\n\t * some properties set).\r\n\t *\r\n\t * @param itemProperties Item properties\r\n\t * @param segment Segment\r\n\t * @return Properties changed?\r\n\t */\r\n\tprotected updateSegmentProperties(itemProperties: { [index: string]: any }, segment: LineSeriesSegment, checkOnly?: boolean): boolean {\r\n\t\tlet changed: boolean = false;\r\n\r\n\t\t$object.each(itemProperties, (propertyName, value) => {\r\n\t\t\t// some value must be defined\r\n\t\t\tif ($type.hasValue(value)) {\r\n\t\t\t\tlet currentValue = (<any>segment)[propertyName];\r\n\t\t\t\tlet currentValueStr: string;\r\n\t\t\t\t// current value can be Color, number, anything. So we check if it has toString, otherwise just do String().\r\n\t\t\t\t// toString() will return hex if it's color. The only problem is that it will return lowercased hex and if we have uppercase in data, it will think that it changed\r\n\t\t\t\tif (currentValue) {\r\n\t\t\t\t\tif (currentValue.toString) {\r\n\t\t\t\t\t\tcurrentValueStr = currentValue.toString();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tcurrentValueStr = currentValue; // not doing String(currentValue) as this will make all Objects the same\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\t\t\t\tlet valueStr: string;\r\n\r\n\t\t\t\tif (value) {\r\n\t\t\t\t\tif (value.toString) {\r\n\t\t\t\t\t\tvalueStr = value.toString();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tvalueStr = value; // not doing String(currentValue) as this will make all Objects the same\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (currentValue == value || (currentValueStr != undefined && valueStr != undefined && currentValueStr == valueStr)) {\r\n\t\t\t\t\t// void\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tif (!checkOnly) {\r\n\t\t\t\t\t\t(<any>segment)[propertyName] = value;\r\n\t\t\t\t\t}\r\n\t\t\t\t\tchanged = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t});\r\n\r\n\t\treturn changed;\r\n\t}\r\n\r\n\t/**\r\n\t * Connect the lines over empty data points?\r\n\t *\r\n\t * If set to `true` the line will connect two adjacent data points by a\r\n\t * straight line. Even if there are data points with missing values\r\n\t * in-between.\r\n\t *\r\n\t * If you set this to `false`, the line will break when there are missing\r\n\t * values.\r\n\t *\r\n\t * @see {@link https://www.amcharts.com/docs/v4/chart-types/xy-chart/#Line_series_with_gaps} for more information about this feature\r\n\t * @default true\r\n\t * @param value Connect?\r\n\t */\r\n\tpublic set connect(value: boolean) {\r\n\t\tif (this.setPropertyValue(\"connect\", value)) {\r\n\t\t\tthis.invalidate();\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Connect?\r\n\t */\r\n\tpublic get connect(): boolean {\r\n\t\treturn this.getPropertyValue(\"connect\");\r\n\t}\r\n\r\n\t/**\r\n\t * Horizontal tension setting of the line (0-1).\r\n\t *\r\n\t * Can be used to create smoothed lines. It works like this:\r\n\t *\r\n\t * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n\t * will mean that the \"tension\" is very high, so the line is maximally\r\n\t * attracted to the points it connects, hence the straight line.\r\n\t *\r\n\t * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n\t *\r\n\t * The smaller the tension setting, the more relaxed the line and the more\r\n\t * wide the curve.\r\n\t *\r\n\t * This setting is for horizontal tension, meaning the curve will bend in\r\n\t * such way that it never goes below or above connecting points. To enable\r\n\t * vertical bending as well, use `tensionY`.\r\n\t *\r\n\t * @default 1\r\n\t * @param value Horizontal tension (0-1)\r\n\t */\r\n\tpublic set tensionX(value: number) {\r\n\t\tthis.setPropertyValue(\"tensionX\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Horizontal tension (0-1)\r\n\t */\r\n\tpublic get tensionX(): number {\r\n\t\treturn this.getPropertyValue(\"tensionX\");\r\n\t}\r\n\r\n\t/**\r\n\t * Can be used to create smoothed lines. It works like this:\r\n\t *\r\n\t * Accepted values are in the range between 0 and 1. The biggest value (1)\r\n\t * will mean that the \"tension\" is very high, so the line is maximally\r\n\t * attracted to the points it connects, hence the straight line.\r\n\t *\r\n\t * Using smaller numbers will \"relax\" the tension, creating some curving.\r\n\t *\r\n\t * The smaller the tension setting, the more relaxed the line and the more\r\n\t * wide the curve.\r\n\t *\r\n\t * This setting is for vertical tension, meaning the curve might bend in\r\n\t * such way that it will go below or above connected points.\r\n\t *\r\n\t * Combine this setting with `tensionX` to create beautifully looking\r\n\t * smoothed line series.\r\n\t *\r\n\t * @default 1\r\n\t * @param value Vertical tension (0-1)\r\n\t */\r\n\tpublic set tensionY(value: number) {\r\n\t\tthis.setPropertyValue(\"tensionY\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Vertical tension (0-1)\r\n\t */\r\n\tpublic get tensionY(): number {\r\n\t\treturn this.getPropertyValue(\"tensionY\");\r\n\t}\r\n\r\n\t/**\r\n\t * Creates elements in related legend container, that mimics the look of this\r\n\t * Series.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param marker Legend item container\r\n\t */\r\n\tpublic createLegendMarker(marker: Container): void {\r\n\r\n\t\tlet w: number = marker.pixelWidth;\r\n\t\tlet h: number = marker.pixelHeight;\r\n\r\n\t\tmarker.disposeChildren();\r\n\r\n\t\tlet line: Line = marker.createChild(Line);\r\n\t\tline.shouldClone = false;\r\n\t\t//line.copyFrom(<any>this); coppies events which is not good\r\n\t\t$object.copyProperties(this, line, visualProperties);\r\n\r\n\t\tline.x2 = w;\r\n\t\tline.y = h / 2;\r\n\t\tline.visible = true;\r\n\r\n\t\tif (this.fillOpacity > 0) {\r\n\t\t\tlet fill: Rectangle = marker.createChild(Rectangle);\r\n\t\t\t//fill.copyFrom(<any>this); coppies events which is not good\r\n\t\t\t$object.copyProperties(this, fill, visualProperties);\r\n\t\t\tfill.width = w;\r\n\t\t\tfill.height = h;\r\n\t\t\tfill.y = 0;\r\n\t\t\tfill.strokeOpacity = 0;\r\n\t\t\tfill.visible = true;\r\n\r\n\t\t\tline.y = 0;\r\n\t\t}\r\n\r\n\t\tlet legendDataItem = <LegendDataItem>marker.dataItem;\r\n\t\tlegendDataItem.color = this.stroke;\r\n\t\tlegendDataItem.colorOrig = this.fill;\r\n\r\n\t\t$iter.eachContinue(this.bullets.iterator(), (bullet) => {\r\n\r\n\t\t\tif ((bullet instanceof Bullet) && !bullet.copyToLegendMarker) {\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\r\n\t\t\tlet hasLabels: boolean = false;\r\n\r\n\t\t\tif (bullet instanceof Container) {\r\n\t\t\t\t// do not copy bullets with labels\r\n\r\n\t\t\t\t$iter.each(bullet.children.iterator(), (child) => {\r\n\t\t\t\t\tif (child instanceof Label) {\r\n\t\t\t\t\t\thasLabels = true;\r\n\t\t\t\t\t\treturn true;\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\r\n\t\t\tif (!hasLabels) {\r\n\t\t\t\tlet clone: Sprite = <Sprite>bullet.clone();\r\n\t\t\t\tclone.parent = marker;\r\n\t\t\t\tclone.isMeasured = true;\r\n\t\t\t\tclone.tooltipText = undefined;\r\n\t\t\t\tclone.x = w / 2;\r\n\t\t\t\tif (this.fillOpacity > 0) {\r\n\t\t\t\t\tclone.y = 0;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tclone.y = h / 2;\r\n\t\t\t\t}\r\n\t\t\t\tclone.visible = true;\r\n\r\n\t\t\t\t// otherwise will not transit to color after hiding\r\n\t\t\t\tif (!$type.hasValue(clone.fill)) {\r\n\t\t\t\t\tclone.fill = this.fill;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!$type.hasValue(clone.stroke)) {\r\n\t\t\t\t\tclone.stroke = this.stroke;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn false;\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic disposeData() {\r\n\t\tsuper.disposeData();\r\n\t\tthis.segments.clear();\r\n\t}\r\n\r\n\t/**\r\n\t * If `connect = false` and distance between two data points is bigger\r\n\t * than `baseInterval * autoGapCount`, a line will break automatically.\r\n\t *\r\n\t * @since 4.2.4\r\n\t * @param value Gap count\r\n\t */\r\n\tpublic set autoGapCount(value: number) {\r\n\t\tthis.setPropertyValue(\"autoGapCount\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Gap count\r\n\t */\r\n\tpublic get autoGapCount(): number {\r\n\t\treturn this.getPropertyValue(\"autoGapCount\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"LineSeries\"] = LineSeries;\r\nregistry.registeredClasses[\"LineSeriesDataItem\"] = LineSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/series/LineSeries.ts","/**\r\n * Radar series module.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { LineSeries, LineSeriesDataItem, ILineSeriesDataFields, ILineSeriesProperties, ILineSeriesAdapters, ILineSeriesEvents } from \"./LineSeries\";\r\nimport { LineSeriesSegment } from \"./LineSeriesSegment\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { AxisRendererRadial } from \"../axes/AxisRendererRadial\";\r\nimport { Axis } from \"../axes/Axis\";\r\nimport { RadarChart } from \"../types/RadarChart\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\n//import { AxisRendererCircular } from \"../axes/AxisRendererCircular\";\r\n//import { Sprite } from \"../../core/Sprite\";\r\n\r\n/**\r\n * ============================================================================\r\n * DATA ITEM\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines a [[DataItem]] for [[RadarSeries]].\r\n *\r\n * @see {@link DataItem}\r\n */\r\nexport class RadarSeriesDataItem extends LineSeriesDataItem {\r\n\r\n\t/**\r\n\t * Defines a type of [[Component]] this data item is used for.\r\n\t */\r\n\tpublic _component!: RadarSeries;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"RadarSeriesDataItem\";\r\n\r\n\t\tthis.setLocation(\"dateX\", 0, 0);\r\n\t\tthis.setLocation(\"dateY\", 0, 0);\r\n\r\n\t\tthis.setLocation(\"categoryX\", 0, 0);\r\n\t\tthis.setLocation(\"categoryY\", 0, 0);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines data fields for [[RadarSeries]].\r\n */\r\nexport interface IRadarSeriesDataFields extends ILineSeriesDataFields { }\r\n\r\n/**\r\n * Defines properties for [[RadarSeries]].\r\n */\r\nexport interface IRadarSeriesProperties extends ILineSeriesProperties {\r\n\r\n\t/**\r\n\t * Should the last and and first data points be connected, forming a complete\r\n\t * closed circle?\r\n\t *\r\n\t * @default true\r\n\t */\r\n\tconnectEnds?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[RadarSeries]].\r\n */\r\nexport interface IRadarSeriesEvents extends ILineSeriesEvents { }\r\n\r\n/**\r\n * Defines adapters for [[RadarSeries]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IRadarSeriesAdapters extends ILineSeriesAdapters, IRadarSeriesProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines [[Series]] for a radar graph.\r\n *\r\n * @see {@link IRadarSeriesEvents} for a list of available Events\r\n * @see {@link IRadarSeriesAdapters} for a list of available Adapters\r\n * @todo Example\r\n * @important\r\n */\r\nexport class RadarSeries extends LineSeries {\r\n\r\n\t/**\r\n\t * Defines the type of data fields used for the series.\r\n\t */\r\n\tpublic _dataFields: IRadarSeriesDataFields;\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IRadarSeriesProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IRadarSeriesAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IRadarSeriesEvents;\r\n\r\n\t/**\r\n\t * Defines the type of data item.\r\n\t */\r\n\tpublic _dataItem: RadarSeriesDataItem;\r\n\r\n\t/**\r\n\t * A chart series belongs to.\r\n\t */\r\n\tpublic _chart: RadarChart;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"RadarSeries\";\r\n\t\tthis.connectEnds = true;\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)validates the whole series, effectively causing it to redraw.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate(): void {\r\n\r\n\t\t// so that radius would be updated\r\n\t\tif (this.chart.invalid) {\r\n\t\t\tthis.chart.validate();\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a new/empty DataItem of the type appropriate for this object.\r\n\t *\r\n\t * @see {@link DataItem}\r\n\t * @return Data Item\r\n\t */\r\n\tprotected createDataItem(): this[\"_dataItem\"] {\r\n\t\treturn new RadarSeriesDataItem();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an [[IPoint]] coordinates of the specific Serie's data point.\r\n\t *\r\n\t * @param dataItem Data item\r\n\t * @param xKey Name of X data field\r\n\t * @param yKey Name of Y data field\r\n\t * @param locationX X location\r\n\t * @param locationY Y location\r\n\t * @param stackKeyX ?\r\n\t * @param stackKeyY ?\r\n\t * @returns Coordinates\r\n\t */\r\n\tpublic getPoint(dataItem: RadarSeriesDataItem, xKey: string, yKey: string, locationX?: number, locationY?: number, stackKeyX?: string, stackKeyY?: string) {\r\n\t\tif (!stackKeyX) {\r\n\t\t\tstackKeyX = \"valueX\";\r\n\t\t}\r\n\t\tif (!stackKeyY) {\r\n\t\t\tstackKeyY = \"valueY\";\r\n\t\t}\r\n\r\n\t\tlet x: number = this.yAxis.getX(dataItem, yKey, locationY, stackKeyY);\r\n\t\tlet y: number = this.yAxis.getY(dataItem, yKey, locationY, stackKeyY);\r\n\r\n\t\tlet radius: number = $math.getDistance({ x: x, y: y });\r\n\r\n\t\t// hack to be able to determine angle later\r\n\t\tif(radius == 0){\r\n\t\t\tradius = 0.00001;\r\n\t\t}\r\n\r\n\t\tlet angle: number = this.xAxis.getAngle(dataItem, xKey, locationX, stackKeyX);\r\n\r\n\t\tlet startAngle = this.chart.startAngle;\r\n\t\tlet endAngle = this.chart.endAngle;\r\n\r\n\t\t//\t\tangle = $math.fitToRange(angle, startAngle, endAngle);\r\n\t\tif (angle < startAngle || angle > endAngle) {\r\n\t\t\treturn undefined;\r\n\t\t}\r\n\t\telse {\r\n\t\t\treturn { x: radius * $math.cos(angle), y: radius * $math.sin(angle) };\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [addPoints description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param points [description]\r\n\t * @param dataItem [description]\r\n\t * @param xField [description]\r\n\t * @param yField [description]\r\n\t * @param backwards [description]\r\n\t */\r\n\tprotected addPoints(points: IPoint[], dataItem: this[\"_dataItem\"], xField: string, yField: string, backwards?: boolean): void {\r\n\t\tlet point = this.getPoint(dataItem, xField, yField, dataItem.locations[xField], dataItem.locations[yField]);\r\n\t\tif (point) {\r\n\t\t\tpoints.push(point);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Returns an SVG path to be used as a mask for the series.\r\n\t *\r\n\t * @return SVG path\r\n\t */\r\n\tprotected getMaskPath(): string {\r\n\t\tlet renderer: AxisRendererRadial = <AxisRendererRadial>this.yAxis.renderer;\r\n\t\treturn $path.arc(renderer.startAngle, renderer.endAngle - renderer.startAngle, renderer.pixelRadius, renderer.pixelInnerRadius);\r\n\t}\r\n\r\n\t/**\r\n\t * [drawSegment description]\r\n\t *\r\n\t * @todo Description\r\n\t * @param segment [description]\r\n\t * @param points [description]\r\n\t * @param closePoints [description]\r\n\t */\r\n\tprotected drawSegment(segment: LineSeriesSegment, points: IPoint[], closePoints: IPoint[]): void {\r\n\t\tlet axis: Axis = this.yAxis;\r\n\t\tlet renderer: AxisRendererRadial = <AxisRendererRadial>axis.renderer;\r\n\r\n\t\tif (this.connectEnds && Math.abs(renderer.endAngle - renderer.startAngle) == 360) {\r\n\t\t\t// adds one point to the beginning of closePoints array, if needed\r\n\t\t\tif (this.dataFields[<keyof this[\"_dataFields\"]>this._xOpenField] ||\r\n\t\t\t\tthis.dataFields[<keyof this[\"_dataFields\"]>this._yOpenField] ||\r\n\t\t\t\tthis.stacked) {\r\n\t\t\t\tpoints.push(points[0]);\r\n\t\t\t\tif (closePoints.length > 0) {\r\n\t\t\t\t\tclosePoints.unshift(closePoints[closePoints.length - 1]);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.drawSegment(segment, points, closePoints);\r\n\t}\r\n\r\n\t/**\r\n\t * Should the last and and first data points be connected, forming a complete\r\n\t * closed circle?\r\n\t *\r\n\t * @default true\r\n\t * @param value Connect?\r\n\t */\r\n\tpublic set connectEnds(value: boolean) {\r\n\t\tthis.setPropertyValue(\"connectEnds\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Connect?\r\n\t */\r\n\tpublic get connectEnds(): boolean {\r\n\t\treturn this.getPropertyValue(\"connectEnds\");\r\n\t}\r\n/*\r\n\tprotected positionBulletReal(bullet:Sprite, positionX:number, positionY:number){\r\n\t\t\r\n\t\tlet rendererX:AxisRendererCircular = <AxisRendererCircular>this.xAxis.renderer;\r\n\t\tlet rendererY:AxisRendererRadial = <AxisRendererRadial>this.yAxis.renderer;\r\n\t\t\r\n\t\tlet angle = rendererX.positionToAngle(positionX);\r\n\t\tlet radius = rendererY.positionToCoordinate(positionY);\r\n\r\n\t\tif(angle < this.chart.startAngle || angle > this.chart.endAngle){\r\n\t\t\tbullet.visible = false;\r\n\t\t}\r\n\r\n\t\tbullet.x = $math.cos(angle) * radius;\r\n\t\tbullet.y = $math.sin(angle) * radius;\r\n\t}\t*/\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarSeries\"] = RadarSeries;\r\nregistry.registeredClasses[\"RadarSeriesDataItem\"] = RadarSeriesDataItem;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/series/RadarSeries.ts","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { RadarChart } from \"../types/RadarChart\";\r\nimport { XYCursor, IXYCursorAdapters, IXYCursorEvents, IXYCursorProperties } from \"./XYCursor\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { ISpriteEvents } from \"../../core/Sprite\";\r\nimport { Tooltip } from \"../../core/elements/Tooltip\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[RadarCursor]].\r\n */\r\nexport interface IRadarCursorProperties extends IXYCursorProperties {\r\n\r\n\t/**\r\n\t * Inner radius of the cursor's circular line.\r\n\t * Absolute (px) or relative ([[Percent]]).\r\n\t */\r\n\tinnerRadius: number | Percent;\r\n\r\n\t/**\r\n\t * Outer radius of the cursor's circular line.\r\n\t * Absolute (px) or relative ([[Percent]]).\r\n\t */\r\n\tradius: number | Percent;\r\n\r\n\t/**\r\n\t * Starting angle of the cursor's radial line.\r\n\t */\r\n\tstartAngle: number;\r\n\r\n\t/**\r\n\t * Ending angle of the cursor's radial line.\r\n\t */\r\n\tendAngle: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[RadarCursor]].\r\n */\r\nexport interface IRadarCursorEvents extends IXYCursorEvents { }\r\n\r\n/**\r\n * Defines adapters for [[RadarCursor]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IRadarCursorAdapters extends IXYCursorAdapters, IRadarCursorProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Cursor for [[RadarChart]].\r\n *\r\n * @see {@link IRadarCursorEvents} for a list of available events\r\n * @see {@link IRadarCursorAdapters} for a list of available Adapters\r\n */\r\nexport class RadarCursor extends XYCursor {\r\n\r\n\t/**\r\n\t * Defines available properties\r\n\t */\r\n\tpublic _properties!: IRadarCursorProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters\r\n\t */\r\n\tpublic _adapter!: IRadarCursorAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IRadarCursorEvents;\r\n\r\n\t/**\r\n\t * A reference to chart cursor belongs to.\r\n\t */\r\n\tpublic _chart: RadarChart;\r\n\r\n\r\n\tprotected _prevAngle: number;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\t\tthis.className = \"RadarCursor\";\r\n\t\tthis.radius = percent(100);\r\n\t\tthis.innerRadius = percent(0);\r\n\r\n\t\t// Apply theme\r\n\t\tthis.applyTheme();\r\n\r\n\t\tthis.mask = undefined;\r\n\t}\r\n\r\n\t/**\r\n\t * Checks if point is within bounds of a container.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param point Point to check\r\n\t * @return Fits within container?\r\n\t */\r\n\tpublic fitsToBounds(point: IPoint): boolean {\r\n\t\tlet radius = $math.getDistance(point);\r\n\r\n\t\t//if(!$math.isAngleInRange(angle, this.startAngle, this.endAngle)){\r\n\t\t\t//return false;\r\n\t\t//}\r\n\t\tif (radius < this.truePixelRadius + 1 && radius > this.pixelInnerRadius - 1) { // ok to add/remove some\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/**\r\n\t * Starting angle of the cursor's radial line.\r\n\t *\r\n\t * @param value Start angle\r\n\t */\r\n\tpublic set startAngle(value: number) {\r\n\t\tthis.setPropertyValue(\"startAngle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Start angle\r\n\t */\r\n\tpublic get startAngle(): number {\r\n\t\treturn this.getPropertyValue(\"startAngle\");\r\n\t}\r\n\r\n\t/**\r\n\t * End angle of the cursor's radial line.\r\n\t *\r\n\t * @param value End angle\r\n\t */\r\n\tpublic set endAngle(value: number) {\r\n\t\tthis.setPropertyValue(\"endAngle\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return End angle\r\n\t */\r\n\tpublic get endAngle(): number {\r\n\t\treturn this.getPropertyValue(\"endAngle\");\r\n\t}\r\n\r\n\r\n\tprotected triggerMoveReal(point:IPoint) {\r\n\r\n\t\tif (!this.xAxis || (this.xAxis && (!this.xAxis.cursorTooltipEnabled || this.xAxis.tooltip.disabled))) {\r\n\t\t\tthis.updateLineX(this.point);\r\n\t\t}\r\n\t\tif (!this.yAxis || (this.yAxis && (!this.yAxis.cursorTooltipEnabled || this.yAxis.tooltip.disabled))) {\r\n\t\t\tthis.updateLineY(this.point);\r\n\t\t}\r\n\r\n\t\tthis.updateSelection();\r\n\t\tsuper.triggerMoveReal(point);\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)draws the horizontal (circular) cursor's line.\r\n\t *\r\n\t * @param point New target point\r\n\t */\r\n\tprotected updateLineX(point: IPoint) {\r\n\r\n\t\tlet radius: number = this.pixelRadius;\r\n\t\tlet startAngle: number = this.startAngle;\r\n\t\tlet endAngle: number = this.endAngle;\r\n\t\tlet innerRadius: number = this.pixelInnerRadius;\r\n\r\n\t\tif (radius > 0 && $type.isNumber(startAngle) && $type.isNumber(endAngle) && $type.isNumber(innerRadius)) {\r\n\t\t\tlet angle: number = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\r\n\t\t\tlet path: string;\r\n\r\n\t\t\tif (this.lineX && this.lineX.visible) {\r\n\r\n\t\t\t\tthis.lineX.moveTo({ x: 0, y: 0 });\r\n\r\n\t\t\t\t// fill\r\n\t\t\t\tif (this.xAxis && this.fullWidthLineX) {\r\n\r\n\t\t\t\t\tlet startPoint: IPoint = this.xAxis.currentItemStartPoint;\r\n\t\t\t\t\tlet endPoint: IPoint = this.xAxis.currentItemEndPoint;\r\n\r\n\t\t\t\t\tif (startPoint && endPoint) {\r\n\t\t\t\t\t\tlet fillStartAngle: number = $math.fitAngleToRange($math.getAngle(startPoint), startAngle, endAngle);\r\n\t\t\t\t\t\tlet fillEndAngle: number = $math.fitAngleToRange($math.getAngle(endPoint), startAngle, endAngle);\r\n\r\n\t\t\t\t\t\tlet arc: number = fillEndAngle - fillStartAngle;\r\n\r\n\t\t\t\t\t\t// clockwise\r\n\t\t\t\t\t\t// this is needed, normalizeAngle doesn't solve it\r\n\t\t\t\t\t\tif (startAngle < endAngle) {\r\n\t\t\t\t\t\t\tif (arc < 0) {\r\n\t\t\t\t\t\t\t\tarc += 360;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\t// ccw\r\n\t\t\t\t\t\telse {\r\n\t\t\t\t\t\t\tif (arc > 0) {\r\n\t\t\t\t\t\t\t\tarc -= 360;\r\n\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t\tangle -= arc / 2;\r\n\r\n\t\t\t\t\t\tpath = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) })\r\n\t\t\t\t\t\t\t+ $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) })\r\n\t\t\t\t\t\t\t+ $path.arcTo(angle, arc, radius)\r\n\t\t\t\t\t\t\t+ $path.lineTo({ x: innerRadius * $math.cos(angle + arc), y: innerRadius * $math.sin(angle + arc) })\r\n\t\t\t\t\t\t\t+ $path.arcTo(angle + arc, -arc, innerRadius);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t// line\r\n\t\t\t\tif (!path) {\r\n\t\t\t\t\tpath = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.lineX.path = path;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * (Re)draws the vertical (radial) cursor's line.\r\n\t *\r\n\t * @param point New target point\r\n\t */\r\n\tprotected updateLineY(point: IPoint) {\r\n\t\tif (this.lineY && this.lineY.visible) {\r\n\t\t\tlet startAngle = this.startAngle;\r\n\t\t\tlet endAngle = this.endAngle;\r\n\t\t\tlet truePixelRadius = this.truePixelRadius;\r\n\t\t\tlet radius = $math.fitToRange($math.getDistance(point), 0, this.truePixelRadius);\r\n\t\t\tif ($type.isNumber(radius) && $type.isNumber(startAngle)) {\r\n\t\t\t\tthis.lineY.moveTo({ x: 0, y: 0 });\r\n\r\n\t\t\t\tlet path: string;\r\n\t\t\t\tlet arc: number = endAngle - startAngle;\r\n\r\n\t\t\t\tif (this.yAxis && this.fullWidthLineY) {\r\n\t\t\t\t\t// fill\r\n\t\t\t\t\tlet startPoint: IPoint = this.yAxis.currentItemStartPoint;\r\n\t\t\t\t\tlet endPoint: IPoint = this.yAxis.currentItemEndPoint;\r\n\r\n\t\t\t\t\tif (startPoint && endPoint) {\r\n\t\t\t\t\t\tlet innerRadius: number = $math.fitToRange($math.getDistance(startPoint), 0, truePixelRadius);\r\n\t\t\t\t\t\tradius = $math.fitToRange($math.getDistance(endPoint), 0, truePixelRadius);\r\n\r\n\t\t\t\t\t\tpath = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius);\r\n\t\t\t\t\t\tpath += $path.moveTo({ x: innerRadius * $math.cos(endAngle), y: innerRadius * $math.sin(endAngle) }) + $path.arcTo(endAngle, -arc, innerRadius);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (!path) {\r\n\t\t\t\t\tpath = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, radius);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.lineY.path = path;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates selection dimensions on size change.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSelection(): void {\r\n\t\tif (this._usesSelection) {\r\n\t\t\tlet downPoint: IPoint = this.downPoint;\r\n\r\n\t\t\tif (downPoint) {\r\n\r\n\t\t\t\tlet point: IPoint = this.point;\r\n\r\n\t\t\t\tlet radius: number = this.pixelRadius;\r\n\t\t\t\tlet truePixelRadius: number = this.truePixelRadius;\r\n\t\t\t\tlet innerRadius: number = this.pixelInnerRadius;\r\n\r\n\t\t\t\tlet startAngle: number = Math.min(this.startAngle, this.endAngle);\r\n\t\t\t\tlet endAngle: number = Math.max(this.startAngle, this.endAngle);\r\n\r\n\t\t\t\tlet downAngle: number = $math.fitAngleToRange($math.getAngle(downPoint), startAngle, endAngle);\r\n\t\t\t\tlet angle: number = $math.fitAngleToRange($math.getAngle(point), startAngle, endAngle);\r\n\r\n\t\t\t\tlet downRadius: number = $math.getDistance(downPoint);\r\n\t\t\t\tif (downRadius < truePixelRadius) {\r\n\r\n\t\t\t\t\tlet currentRadius = $math.fitToRange($math.getDistance(point), 0, truePixelRadius);\r\n\r\n\t\t\t\t\tthis._prevAngle = angle;\r\n\r\n\t\t\t\t\tlet path: string = $path.moveTo({ x: 0, y: 0 });\r\n\r\n\t\t\t\t\tlet downSin: number = $math.sin(downAngle);\r\n\t\t\t\t\tlet downCos: number = $math.cos(downAngle);\r\n\r\n\t\t\t\t\tlet sin: number = $math.sin(angle);\r\n\t\t\t\t\tlet cos: number = $math.cos(angle);\r\n\r\n\t\t\t\t\tlet behavior = this.behavior;\r\n\t\t\t\t\tif (behavior == \"zoomX\" || behavior == \"selectX\") {\r\n\t\t\t\t\t\tpath += $path.lineTo({ x: radius * downCos, y: radius * downSin }) + $path.arcTo(downAngle, angle - downAngle, radius) + $path.lineTo({ x: innerRadius * cos, y: innerRadius * sin }) + $path.arcTo(angle, downAngle - angle, innerRadius);\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (behavior == \"zoomY\" || behavior == \"selectY\") {\r\n\t\t\t\t\t\tpath = $path.moveTo({ x: currentRadius * $math.cos(startAngle), y: currentRadius * $math.sin(startAngle) }) + $path.arcTo(startAngle, endAngle - startAngle, currentRadius) + $path.lineTo({ x: downRadius * $math.cos(endAngle), y: downRadius * $math.sin(endAngle) }) + $path.arcTo(endAngle, startAngle - endAngle, downRadius) + $path.closePath();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse if (behavior == \"zoomXY\") {\r\n\t\t\t\t\t\tpath = $path.moveTo({ x: currentRadius * $math.cos(downAngle), y: currentRadius * $math.sin(downAngle) }) + $path.arcTo(downAngle, angle - downAngle, currentRadius) + $path.lineTo({ x: downRadius * $math.cos(angle), y: downRadius * $math.sin(angle) }) + $path.arcTo(angle, downAngle - angle, downRadius) + $path.closePath();\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\tthis.selection.path = path;\r\n\t\t\t\t}\r\n\t\t\t\tthis.selection.moveTo({ x: 0, y: 0 });\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates cursors current positions.\r\n\t */\r\n\tprotected getPositions() {\r\n\t\t// positions are used by axes or series\r\n\t\tlet chart: RadarChart = this.chart;\r\n\t\tif (chart) {\r\n\t\t\tlet innerRadius = this.pixelInnerRadius;\r\n\t\t\tlet radius: number = this.truePixelRadius - innerRadius;\r\n\r\n\t\t\tlet startAngle: number = this.startAngle;\r\n\t\t\tlet endAngle: number = this.endAngle;\r\n\r\n\t\t\tlet angle: number = $math.fitAngleToRange($math.getAngle(this.point), startAngle, endAngle);\r\n\t\t\tlet xPosition = ((angle - startAngle) / (endAngle - startAngle));\r\n\t\t\tthis.xPosition = xPosition;\r\n\r\n\t\t\tthis.yPosition = $math.fitToRange(($math.getDistance(this.point) - innerRadius) / radius, 0, 1);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Overriding inherited method, so that nothing happens when it's triggered.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tprotected updatePoint(point: IPoint) {\r\n\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when axis tooltip changes horizontal position.\r\n\t *\r\n\t * @param event Axis event\r\n\t */\r\n\tprotected handleXTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tif (this.xAxis.cursorTooltipEnabled) {\r\n\t\t\tlet tooltip: Tooltip = this.xAxis.tooltip;\r\n\t\t\tthis.updateLineX($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Updates Cursor's position when axis tooltip changes vertical position.\r\n\t *\r\n\t * @todo Description\r\n\t * @param event Axis event\r\n\t */\r\n\tprotected handleYTooltipPosition(event: ISpriteEvents[\"positionchanged\"]): void {\r\n\t\tif (this.yAxis.cursorTooltipEnabled) {\r\n\t\t\tlet tooltip: Tooltip = this.yAxis.tooltip;\r\n\t\t\tthis.updateLineY($utils.svgPointToSprite({ x: tooltip.pixelX, y: tooltip.pixelY }, this));\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * needs to be overriden\r\n\t * @ignore\r\n\t */\r\n\tprotected updateLinePositions(point: IPoint) {\r\n\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * [getRanges description]\r\n\t *\r\n\t * @todo Description\r\n\t */\r\n\tprotected getRanges(): void {\r\n\t\tlet downPoint = this.downPoint;\r\n\t\tif (downPoint) {\r\n\t\t\tlet upPoint: IPoint = this.upPoint;\r\n\r\n\t\t\tlet chart: RadarChart = this.chart;\r\n\t\t\tif (chart) {\r\n\t\t\t\tlet radius: number = this.pixelRadius;\r\n\t\t\t\tlet startAngle: number = this.startAngle;\r\n\t\t\t\tlet endAngle: number = this.endAngle;\r\n\r\n\t\t\t\tlet downAngle: number = $math.fitAngleToRange($math.getAngle(downPoint), this.startAngle, this.endAngle);\r\n\t\t\t\tlet upAngle: number = $math.fitAngleToRange($math.getAngle(upPoint), this.startAngle, this.endAngle);\r\n\r\n\t\t\t\tlet downRadius = $math.fitToRange($math.getDistance(downPoint), 0, radius);\r\n\t\t\t\tlet upRadius = $math.fitToRange($math.getDistance(upPoint), 0, radius);\r\n\r\n\t\t\t\tlet startX: number = 0;\r\n\t\t\t\tlet endX: number = 1;\r\n\r\n\t\t\t\tlet startY: number = 0;\r\n\t\t\t\tlet endY: number = 1;\r\n\r\n\t\t\t\tlet behavior = this.behavior;\r\n\t\t\t\tif (behavior == \"zoomX\" || behavior == \"selectX\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\r\n\t\t\t\t\tlet arc: number = endAngle - startAngle;\r\n\t\t\t\t\tstartX = $math.round((downAngle - startAngle) / arc, 5);\r\n\t\t\t\t\tendX = $math.round((upAngle - startAngle) / arc, 5);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tif (behavior == \"zoomY\" || behavior == \"selectY\" || behavior == \"zoomXY\" || behavior == \"selectXY\") {\r\n\t\t\t\t\tstartY = $math.round(downRadius / radius, 5);\r\n\t\t\t\t\tendY = $math.round(upRadius / radius, 5);\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthis.xRange = { start: Math.min(startX, endX), end: Math.max(startX, endX) };\r\n\t\t\t\tthis.yRange = { start: Math.min(startY, endY), end: Math.max(startY, endY) };\r\n\r\n\t\t\t\tif (this.behavior == \"selectX\" || this.behavior == \"selectY\" || this.behavior == \"selectXY\") {\r\n\t\t\t\t\t// void\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.selection.hide();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Overriding inherited method, so that nothing happens when `updateSize`\r\n\t * is triggered.\r\n\t *\r\n\t * RadarCursor is quite complicated and needs own sizing logic.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateSize(): void { }\r\n\r\n\t/**\r\n\t * Outer radius of the cursor's circular line.\r\n\t * Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set radius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"radius\", value, false, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outer radius\r\n\t */\r\n\tpublic get radius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the circular line in pixels.\r\n\t *\r\n\t * @return Outer radius (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get pixelRadius(): number {\r\n\t\treturn $utils.relativeRadiusToValue(this.radius, this.truePixelRadius);\r\n\t}\r\n\r\n\t/**\r\n\t * [truePixelRadius description]\r\n\t *\r\n\t * @todo Description\r\n\t * @return Outer radius (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get truePixelRadius(): number {\r\n\t\treturn $utils.relativeToValue(percent(100), $math.min(this.innerWidth / 2, this.innerHeight / 2));\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the cursor's circular line.\r\n\t * Absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"innerRadius\", value, false, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the circular line in pixels.\r\n\t *\r\n\t * @return Inner radius (px)\r\n\t * @readonly\r\n\t */\r\n\tpublic get pixelInnerRadius(): number {\r\n\r\n\t\tlet innerRadius = this.innerRadius;\r\n\r\n\t\tif (innerRadius instanceof Percent) {\r\n\t\t\tinnerRadius = percent(100 * innerRadius.value * this.chart.innerRadiusModifyer);\r\n\t\t}\r\n\r\n\t\treturn $utils.relativeRadiusToValue(innerRadius, this.truePixelRadius) || 0;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\r\n\tprotected fixPoint(point: IPoint): IPoint {\r\n\t\t// overriding xy method\r\n\t\treturn point;\r\n\t}\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"RadarCursor\"] = RadarCursor;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/cursors/RadarCursor.ts","/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisFill, IAxisFillProperties, IAxisFillAdapters, IAxisFillEvents } from \"./AxisFill\";\r\nimport { Axis } from \"./Axis\";\r\nimport { Percent, percent } from \"../../core/utils/Percent\";\r\nimport { AxisRendererCircular } from \"./AxisRendererCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[AxisFillCircular]].\r\n */\r\nexport interface IAxisFillCircularProperties extends IAxisFillProperties {\r\n\r\n\t/**\r\n\t * Inner radius. Relative ir absolute.\r\n\t */\r\n\tinnerRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * Outer radius. Relative or absolute.\r\n\t */\r\n\tradius?: number | Percent;\r\n\r\n\t/**\r\n\t * Corner radius for the fill. In pixels.\r\n\t */\r\n\tcornerRadius?: number;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[AxisFillCircular]].\r\n */\r\nexport interface IAxisFillCircularEvents extends IAxisFillEvents { }\r\n\r\n/**\r\n * Defines adapters for [[AxisFillCircular]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IAxisFillCircularAdapters extends IAxisFillAdapters, IAxisFillCircularProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Provides fill element functionality for circular Axes.\r\n *\r\n * @see {@link IAxisFillCircularEvents} for a list of available events\r\n * @see {@link IAxisFillCircularAdapters} for a list of available Adapters\r\n * @todo Needs description\r\n */\r\nexport class AxisFillCircular extends AxisFill {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IAxisFillCircularProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IAxisFillCircularAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAxisFillCircularEvents;\r\n\r\n\t/**\r\n\t * An SVG path, used to draw fill shape.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @todo Description (review)\r\n\t */\r\n\tpublic fillPath: string;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param axis Axis\r\n\t */\r\n\tconstructor(axis: Axis) {\r\n\t\tsuper(axis);\r\n\r\n\t\tthis.className = \"AxisFillCircular\";\r\n\r\n\t\tthis.element = this.paper.add(\"path\");\r\n\r\n\t\tthis.radius = percent(100);\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Draws the fill element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic draw(): void {\r\n\t\tsuper.draw();\r\n\t\tif (this.axis) {\r\n\t\t\tlet renderer: AxisRendererCircular = <AxisRendererCircular>this.axis.renderer;\r\n\t\t\tthis.fillPath = renderer.getPositionRangePath(this.startPosition, this.endPosition, this.radius, $type.hasValue(this.innerRadius) ? this.innerRadius : renderer.innerRadius, this.cornerRadius);\r\n\t\t\tthis.path = this.fillPath;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n\t *\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the fill. Relative ([[Percent]]) or absolute (pixels).\r\n\t *\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set radius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outer radius\r\n\t */\r\n\tpublic get radius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Corner radius for the fill. In pixels.\r\n\t *\r\n\t * @param value Corner radius (px)\r\n\t */\r\n\tpublic set cornerRadius(value: number) {\r\n\t\tthis.setPropertyValue(\"cornerRadius\", value, true);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Corner radius (px)\r\n\t */\r\n\tpublic get cornerRadius(): number {\r\n\t\treturn this.getPropertyValue(\"cornerRadius\");\r\n\t}\r\n\r\n}\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"AxisFillCircular\"] = AxisFillCircular;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/AxisFillCircular.ts","/**\r\n * A module defining functionality for circular axis grid elements.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { Grid, IGridProperties, IGridAdapters, IGridEvents } from \"./Grid\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { Percent } from \"../../core/utils/Percent\";\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[GridCircular]].\r\n */\r\nexport interface IGridCircularProperties extends IGridProperties {\r\n\r\n\t/**\r\n\t * Inner radius of the circular grid. (absolute or relative)\r\n\t */\r\n\tinnerRadius: number | Percent;\r\n\r\n\t/**\r\n\t * Outer radius of the circular grid. (absolute or relative)\r\n\t */\r\n\tradius: number | Percent;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[GridCircular]].\r\n */\r\nexport interface IGridCircularEvents extends IGridEvents { }\r\n\r\n/**\r\n * Defines adapters for [[GridCircular]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IGridCircularAdapters extends IGridAdapters, IGridCircularProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Creates a circular grid element for circular-type axis.\r\n *\r\n * @see {@link IGridCircularEvents} for a list of available events\r\n * @see {@link IGridCircularAdapters} for a list of available Adapters\r\n * @todo Review: container is better, as we'll be able to attach something to the GridCircular, also with 3d charts we might need some additional elements\r\n */\r\nexport class GridCircular extends Grid {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IGridCircularProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IGridCircularAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IGridCircularEvents;\r\n\r\n\t/**\r\n\t * Constructor\r\n\t */\r\n\tconstructor() {\r\n\t\tsuper();\r\n\t\tthis.className = \"GridCircular\";\r\n\t\tthis.pixelPerfect = false;\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the circular grid. (absolute or relative)\r\n\t *\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"innerRadius\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the circular grid. (absolute or relative)\r\n\t *\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set radius(value: number | Percent) {\r\n\t\tthis.setPercentProperty(\"radius\", value, true, false, 10, false);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outer radius\r\n\t */\r\n\tpublic get radius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n}\r\n\r\n\r\n/**\r\n * Register class in system, so that it can be instantiated using its name from\r\n * anywhere.\r\n *\r\n * @ignore\r\n */\r\nregistry.registeredClasses[\"GridCircular\"] = GridCircular;\r\n\n\n\n// WEBPACK FOOTER //\n// ../../../../../src/.internal/charts/axes/GridCircular.ts","/**\r\n * Module, defining Axis Renderer for circular axes.\r\n */\r\n\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { AxisRenderer, IAxisRendererProperties, IAxisRendererAdapters, IAxisRendererEvents } from \"./AxisRenderer\";\r\nimport { Axis } from \"./Axis\";\r\nimport { AxisFillCircular } from \"./AxisFillCircular\";\r\nimport { IPoint } from \"../../core/defs/IPoint\";\r\nimport { AxisTick } from \"./AxisTick\";\r\nimport { GridCircular } from \"./GridCircular\";\r\nimport { AxisLabelCircular } from \"./AxisLabelCircular\";\r\nimport { registry } from \"../../core/Registry\";\r\nimport { percent, Percent } from \"../../core/utils/Percent\";\r\nimport * as $math from \"../../core/utils/Math\";\r\nimport * as $path from \"../../core/rendering/Path\";\r\nimport * as $utils from \"../../core/utils/Utils\";\r\nimport * as $type from \"../../core/utils/Type\";\r\n\r\n/**\r\n * ============================================================================\r\n * REQUISITES\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * Defines properties for [[AxisRendererCircular]].\r\n */\r\nexport interface IAxisRendererCircularProperties extends IAxisRendererProperties {\r\n\r\n\t/**\r\n\t * Start angle of the circular axis in degrees (0-360).\r\n\t */\r\n\tstartAngle?: number;\r\n\r\n\t/**\r\n\t * End angle of the circular axis in degrees (0-360).\r\n\t */\r\n\tendAngle?: number;\r\n\r\n\t/**\r\n\t * Outer radius of the circular axis.\r\n\t *\r\n\t * Can either be absolute (pixels) or relative ([[Percent]]).\r\n\t */\r\n\tradius?: number | Percent;\r\n\r\n\t/**\r\n\t * Inner radius of the circular axis.\r\n\t *\r\n\t * Can either be absolute (pixels) or relative ([[Percent]]).\r\n\t */\r\n\tinnerRadius?: number | Percent;\r\n\r\n\t/**\r\n\t * Specifies if axis should use it's own start/end angles or the ones set on chart.\r\n\t */\r\n\tuseChartAngles?: boolean;\r\n\r\n}\r\n\r\n/**\r\n * Defines events for [[AxisRendererCircular]].\r\n */\r\nexport interface IAxisRendererCircularEvents extends IAxisRendererEvents { }\r\n\r\n/**\r\n * Defines adapters for [[AxisRenderer]].\r\n *\r\n * @see {@link Adapter}\r\n */\r\nexport interface IAxisRendererCircularAdapters extends IAxisRendererAdapters, IAxisRendererCircularProperties { }\r\n\r\n\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n\r\n/**\r\n * A renderer for circular axis.\r\n */\r\nexport class AxisRendererCircular extends AxisRenderer {\r\n\r\n\t/**\r\n\t * Defines available properties.\r\n\t */\r\n\tpublic _properties!: IAxisRendererCircularProperties;\r\n\r\n\t/**\r\n\t * Defines available adapters.\r\n\t */\r\n\tpublic _adapter!: IAxisRendererCircularAdapters;\r\n\r\n\t/**\r\n\t * Defines available events.\r\n\t */\r\n\tpublic _events!: IAxisRendererCircularEvents;\r\n\r\n\t/**\r\n\t * Defines type of the grid elements.\r\n\t */\r\n\tpublic _gridType: GridCircular;\r\n\r\n\t/**\r\n\t * Defines type for the fill elements.\r\n\t */\r\n\tpublic _fillType: AxisFillCircular;\r\n\r\n\t/**\r\n\t * Defines type for the label elements.\r\n\t */\r\n\tpublic _labelType: AxisLabelCircular;\r\n\r\n\t/**\r\n\t * @ignore\r\n\t */\r\n\tpublic pixelRadiusReal: number = 0;\r\n\r\n\t/**\r\n\t * Constructor.\r\n\t *\r\n\t * @param axis Related axis\r\n\t */\r\n\tconstructor() {\r\n\r\n\t\t// Init\r\n\t\tsuper();\r\n\r\n\t\t// axis.layout = \"none\"; // does not trigger redraw when size changes\r\n\t\tthis.layout = \"none\";\r\n\r\n\t\tthis.className = \"AxisRendererCircular\";\r\n\t\tthis.isMeasured = false;\r\n\t\tthis.startAngle = -90;\r\n\t\tthis.endAngle = 270;\r\n\r\n\t\tthis.useChartAngles = true;\r\n\t\tthis.radius = percent(100);\r\n\r\n\t\tthis.isMeasured = false;\r\n\r\n\t\tthis.grid.template.location = 0;\r\n\r\n\t\tthis.labels.template.location = 0;\r\n\t\tthis.labels.template.radius = 15;\r\n\r\n\t\tthis.ticks.template.location = 0;\r\n\t\tthis.ticks.template.pixelPerfect = false;\r\n\t\tthis.tooltipLocation = 0;\r\n\r\n\t\tthis.line.strokeOpacity = 0;\r\n\r\n\t\tthis.applyTheme();\r\n\t}\r\n\r\n\t/**\r\n\t* @ignore\r\n\t*/\r\n\tpublic setAxis(axis: Axis) {\r\n\t\tsuper.setAxis(axis);\r\n\t\taxis.isMeasured = false;\r\n\r\n\t\t// modify x and y so that tooltip would always be on circle\r\n\t\tlet tooltip = axis.tooltip;\r\n\r\n\t\ttooltip.adapter.add(\"dx\", (x, target) => {\r\n\t\t\tlet point: IPoint = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, this);\r\n\t\t\treturn this.pixelRadius * Math.cos(Math.atan2(point.y, point.x)) - point.x;\r\n\t\t});\r\n\r\n\t\ttooltip.adapter.add(\"dy\", (y, target) => {\r\n\t\t\tlet point: IPoint = $utils.svgPointToSprite({ x: target.pixelX, y: target.pixelY }, this);\r\n\t\t\treturn this.pixelRadius * Math.sin(Math.atan2(point.y, point.x)) - point.y;\r\n\t\t});\r\n\t}\r\n\r\n\t/**\r\n\t * Validates Axis renderer.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic validate() {\r\n\t\t// so that radius would be updated\r\n\t\tif (this.chart && this.chart.invalid) {\r\n\t\t\tthis.chart.validate();\r\n\t\t}\r\n\r\n\t\tsuper.validate();\r\n\t}\r\n\r\n\t/**\r\n\t * Returns actual length of the Axis, in pixels.\r\n\t *\r\n\t * @return Length (px)\r\n\t */\r\n\tpublic get axisLength(): number {\r\n\t\treturn 2 * Math.PI * this.pixelRadius;\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius of the axis.\r\n\t *\r\n\t * Can be absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Outer radius\r\n\t */\r\n\tpublic set radius(value: number | Percent) {\r\n\t\tif (this.setPercentProperty(\"radius\", value, false, false, 10, false)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidate();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Outer radius\r\n\t */\r\n\tpublic get radius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"radius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Outer radius in pixels.\r\n\t *\r\n\t * @return Outer radius (px)\r\n\t */\r\n\tpublic get pixelRadius(): number {\r\n\t\treturn $utils.relativeRadiusToValue(this.radius, this.pixelRadiusReal) || 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius of the axis.\r\n\t *\r\n\t * Can be absolute (px) or relative ([[Percent]]).\r\n\t *\r\n\t * @param value Inner radius\r\n\t */\r\n\tpublic set innerRadius(value: number | Percent) {\r\n\t\tif (this.setPercentProperty(\"innerRadius\", value, false, false, 10, false)) {\r\n\t\t\tif (this.axis) {\r\n\t\t\t\tthis.axis.invalidate();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * @return Inner radius\r\n\t */\r\n\tpublic get innerRadius(): number | Percent {\r\n\t\treturn this.getPropertyValue(\"innerRadius\");\r\n\t}\r\n\r\n\t/**\r\n\t * Specifies if axis should use its own `startAngle` and `endAngle` or\r\n\t * inherit them from relative properties from chart.\r\n\t *\r\n\t * @default false\r\n\t * @param value Use chart's angles\r\n\t */\r\n\tpublic set useChartAngles(value: boolean) {\r\n\t\tthis.setPropertyValue(\"useChartAngles\", value);\r\n\t}\r\n\r\n\t/**\r\n\t * @return Use chart angles\r\n\t */\r\n\tpublic get useChartAngles(): boolean {\r\n\t\treturn this.getPropertyValue(\"useChartAngles\");\r\n\t}\r\n\r\n\t/**\r\n\t * Inner radius in pixels.\r\n\t *\r\n\t * @return Inner radius (px)\r\n\t */\r\n\tpublic get pixelInnerRadius(): number {\r\n\t\treturn $utils.relativeRadiusToValue(this.innerRadius, this.pixelRadiusReal) || 0;\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position on axis to point coordinates.\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Point\r\n\t */\r\n\tpublic positionToPoint(position: number): IPoint {\r\n\t\tlet coordinate: number = this.positionToCoordinate(position);\r\n\t\tlet angle: number = this.startAngle + (this.endAngle - this.startAngle) * coordinate / this.axisLength;\r\n\t\treturn { x: this.pixelRadius * $math.cos(angle), y: this.pixelRadius * $math.sin(angle) };\r\n\t}\r\n\r\n\t/**\r\n\t * Converts relative position (0-1) on axis to angle in degrees (0-360).\r\n\t *\r\n\t * @param position Position (0-1)\r\n\t * @return Angle (0-360)\r\n\t */\r\n\tpublic positionToAngle(position: number): number {\r\n\t\tlet axis: Axis = this.axis;\r\n\r\n\t\tlet arc: number = (this.endAngle - this.startAngle) / (axis.end - axis.start);\r\n\r\n\t\tlet angle: number;\r\n\r\n\t\tif (axis.renderer.inversed) {\r\n\t\t\tangle = this.startAngle + (axis.end - position) * arc;\r\n\t\t}\r\n\t\telse {\r\n\t\t\tangle = this.startAngle + (position - axis.start) * arc;\r\n\t\t}\r\n\r\n\t\treturn $math.round(angle, 3);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions the axis line element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t */\r\n\tpublic updateAxisLine() {\r\n\t\tlet radius: number = this.pixelRadius;\r\n\t\tlet startAngle: number = this.startAngle;\r\n\t\tlet endAngle: number = this.endAngle;\r\n\r\n\t\tlet arc: number = endAngle - startAngle;\r\n\t\tthis.line.path = $path.moveTo({ x: radius * $math.cos(startAngle), y: radius * $math.sin(startAngle) }) + $path.arcTo(startAngle, arc, radius, radius);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a grid element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param grid Grid element\r\n\t * @param position Starting position\r\n\t * @param endPosition End position\r\n\t */\r\n\tpublic updateGridElement(grid: GridCircular, position: number, endPosition: number) {\r\n\t\tposition = position + (endPosition - position) * grid.location;\r\n\r\n\t\tlet point: IPoint = this.positionToPoint(position);\r\n\t\tif (grid.element) {\r\n\t\t\tlet angle: number = $math.DEGREES * Math.atan2(point.y, point.x);\r\n\t\t\tlet radius: number = $utils.relativeRadiusToValue($type.hasValue(grid.radius) ? grid.radius : percent(100), this.pixelRadius);\r\n\r\n\t\t\tlet gridInnerRadius = $utils.relativeRadiusToValue(grid.innerRadius, this.pixelRadius);\r\n\t\t\tgrid.zIndex = 0;\r\n\r\n\t\t\tlet innerRadius: number = $utils.relativeRadiusToValue($type.isNumber(gridInnerRadius) ? gridInnerRadius : this.innerRadius, this.pixelRadius, true);\r\n\t\t\tgrid.path = $path.moveTo({ x: innerRadius * $math.cos(angle), y: innerRadius * $math.sin(angle) }) + $path.lineTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) });\r\n\t\t}\r\n\t\tthis.toggleVisibility(grid, position, 0, 1);\r\n\t}\r\n\r\n\t/**\r\n\t * Updates and positions a tick element.\r\n\t *\r\n\t * @ignore Exclude from docs\r\n\t * @param tick Tick element\r\n\t * @param position Starting position\r\n\t * @param endPosition End position\r\n\t */\r\n\tpublic updateTickElement(tick: AxisTick, position: number, endPosition: number) {\r\n\r\n\t\tposition = position + (endPosition - position) * tick.location;\r\n\r\n\t\tlet point: IPoint = this.positionToPoint(position);\r\n\r\n\t\tif (tick.element) {\r\n\t\t\tlet radius: number = this.pixelRadius;\r\n\t\t\tlet angle: number = $math.DEGREES * Math.atan2(point.y, point.x);\r\n\t\t\tlet tickLength: number = tick.length;\r\n\t\t\tif (tick.inside) {\r\n\t\t\t\ttickLength = -tickLength;\r\n\t\t\t}\r\n\t\t\ttick.zIndex = 1;\r\n\t\t\ttick.path = $path.moveTo({ x: radius * $math.cos(angle), y: radius * $math.sin(angle) }) + $path.lineTo({ x: (radius + tickLength) * $math.cos(angle), y: (radius + tickLength)