binbot-charts 0.0.2 → 0.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/README.md +5 -2
  2. package/babel.config.json +18 -0
  3. package/dist/TVChartContainer.js +85 -0
  4. package/dist/ar-tv-chart.f0bc1e45.html +1 -0
  5. package/dist/bundles/0.d46f0b5e9380d7893de5.js +334 -0
  6. package/dist/bundles/0579d40b812fa2c3ffe72e5803a6e14c.cur +0 -0
  7. package/{public/put-charting-library-here → dist/bundles/1.92647ec0a7beb8b2898d.css} +0 -0
  8. package/{public/put-datafeeds-here → dist/bundles/1.92647ec0a7beb8b2898d.rtl.css} +0 -0
  9. package/dist/bundles/1.f02c87d35fbc8ffcaedb.js +3 -0
  10. package/dist/bundles/10.21e665b7935d5bc4ba64.js +807 -0
  11. package/dist/bundles/11.8b65dc2e0d8b6e5041c4.css +1 -0
  12. package/dist/bundles/11.8b65dc2e0d8b6e5041c4.rtl.css +1 -0
  13. package/dist/bundles/11.df012db70159a159d927.js +3 -0
  14. package/dist/bundles/12.37750b21f6d8d35c6e6e.js +3 -0
  15. package/dist/bundles/12.ef8057448f3a7ae1c3d8.css +1 -0
  16. package/dist/bundles/12.ef8057448f3a7ae1c3d8.rtl.css +1 -0
  17. package/dist/bundles/13.699469c73d09b7add56d.js +3 -0
  18. package/dist/bundles/13.9240f13280154f2593b7.css +1 -0
  19. package/dist/bundles/13.9240f13280154f2593b7.rtl.css +1 -0
  20. package/dist/bundles/14.8095b40dd1e7deedf401.css +1 -0
  21. package/dist/bundles/14.8095b40dd1e7deedf401.rtl.css +1 -0
  22. package/dist/bundles/14.d1148b38d59df9ca5061.js +3 -0
  23. package/dist/bundles/15.44f2acca80348a1da1a6.js +526 -0
  24. package/dist/bundles/16.680572949c1125757d35.js +3 -0
  25. package/dist/bundles/16.d567c9db608f3d98d8de.css +1 -0
  26. package/dist/bundles/16.d567c9db608f3d98d8de.rtl.css +1 -0
  27. package/dist/bundles/17.404a01f527881dfff424.js +3 -0
  28. package/dist/bundles/17.ec35a19db935279c5b42.css +1 -0
  29. package/dist/bundles/17.ec35a19db935279c5b42.rtl.css +1 -0
  30. package/dist/bundles/18.78de69cfba051874e071.js +569 -0
  31. package/dist/bundles/19.048f7f5d36fef428ca8d.js +3 -0
  32. package/dist/bundles/19.75c30426f9d3ad5ca0c5.css +1 -0
  33. package/dist/bundles/19.75c30426f9d3ad5ca0c5.rtl.css +1 -0
  34. package/dist/bundles/1df47f578aeef40dd1f2328338a133be.png +0 -0
  35. package/dist/bundles/2.60931787a6734697ac13.js +507 -0
  36. package/dist/bundles/20.bc09ed47c5a62e1bc5c2.js +540 -0
  37. package/dist/bundles/21.4c7b5cccb67a95e7e782.js +3 -0
  38. package/dist/bundles/21.8153544955cdc47262e3.css +1 -0
  39. package/dist/bundles/21.8153544955cdc47262e3.rtl.css +1 -0
  40. package/dist/bundles/22.ca4300bcf614d8d5f4ab.js +3 -0
  41. package/dist/bundles/22.da9773799a06c6066d1e.css +1 -0
  42. package/dist/bundles/22.da9773799a06c6066d1e.rtl.css +1 -0
  43. package/dist/bundles/23.256ba98e6a03200bdeba.js +3 -0
  44. package/dist/bundles/23.ee754f50171546186397.css +1 -0
  45. package/dist/bundles/23.ee754f50171546186397.rtl.css +1 -0
  46. package/dist/bundles/24.bc4fafedb1730259aa10.js +3 -0
  47. package/dist/bundles/24.e70c1623e0c74477ef2e.css +1 -0
  48. package/dist/bundles/24.e70c1623e0c74477ef2e.rtl.css +1 -0
  49. package/dist/bundles/25.7416db26ed3dcc87c05a.js +2731 -0
  50. package/dist/bundles/26.3aeec391d4e6e19989ee.js +3 -0
  51. package/dist/bundles/26.69139a843bc1c84f790b.css +1 -0
  52. package/dist/bundles/26.69139a843bc1c84f790b.rtl.css +1 -0
  53. package/dist/bundles/27.e3ec08b1fb9df5f36ada.js +477 -0
  54. package/dist/bundles/28.3140e8cb507ad2593c76.css +1 -0
  55. package/dist/bundles/28.3140e8cb507ad2593c76.rtl.css +1 -0
  56. package/dist/bundles/28.9f103042c27ea2df422f.js +3 -0
  57. package/dist/bundles/29.07af6dca962ea27209f0.css +1 -0
  58. package/dist/bundles/29.07af6dca962ea27209f0.rtl.css +1 -0
  59. package/dist/bundles/29.3df8712b85d45a626aa0.js +3 -0
  60. package/dist/bundles/3.76c398b01b707e5b251c.js +3 -0
  61. package/dist/bundles/3.eeb90413029441681f91.css +1 -0
  62. package/dist/bundles/3.eeb90413029441681f91.rtl.css +1 -0
  63. package/dist/bundles/30.0b732ccb122d160480b6.js +1244 -0
  64. package/dist/bundles/31.8d2b7a538755fd1bb760.js +935 -0
  65. package/dist/bundles/32.13ce02217cf8f9dd6d90.js +636 -0
  66. package/dist/bundles/3293616ec0c605c7c2db25829a0a509e.woff +0 -0
  67. package/dist/bundles/33.02ed7df481ae8243d2f2.css +1 -0
  68. package/dist/bundles/33.02ed7df481ae8243d2f2.rtl.css +1 -0
  69. package/dist/bundles/33.4d0dd1f7001fc02099bb.js +3 -0
  70. package/dist/bundles/34.4b6099931f57311efc1a.css +1 -0
  71. package/dist/bundles/34.4b6099931f57311efc1a.rtl.css +1 -0
  72. package/dist/bundles/34.c9baa59add71a1e48fd2.js +3 -0
  73. package/dist/bundles/35.999f0e072062b7369a1a.css +1 -0
  74. package/dist/bundles/35.999f0e072062b7369a1a.rtl.css +1 -0
  75. package/dist/bundles/35.ed9e360f9686ad3a9497.js +3 -0
  76. package/dist/bundles/36.1882d1a8d312a0e193e9.js +3 -0
  77. package/dist/bundles/36.f315a19c17d5636af8f7.css +1 -0
  78. package/dist/bundles/36.f315a19c17d5636af8f7.rtl.css +1 -0
  79. package/dist/bundles/37.90129e4904155350d6a1.js +1288 -0
  80. package/dist/bundles/38.41f3d509b61c8af47de3.js +502 -0
  81. package/dist/bundles/39.74a7bc3b464cd284827f.css +1 -0
  82. package/dist/bundles/39.74a7bc3b464cd284827f.rtl.css +1 -0
  83. package/dist/bundles/39.bc1e9ce938fd5152831f.js +3 -0
  84. package/dist/bundles/4.92647ec0a7beb8b2898d.css +0 -0
  85. package/dist/bundles/4.92647ec0a7beb8b2898d.rtl.css +0 -0
  86. package/dist/bundles/4.c7430b8d89cddcf51345.js +3 -0
  87. package/dist/bundles/40.b59f41ba4cacbfb8acc3.js +255 -0
  88. package/dist/bundles/40566afd832a155e5e370a8bd423de4b.svg +1 -0
  89. package/dist/bundles/40f9a03d174178efb12303caa9bc7cd8.woff2 +0 -0
  90. package/dist/bundles/41.8fa0fb0bd4ad0241ef2f.css +1 -0
  91. package/dist/bundles/41.8fa0fb0bd4ad0241ef2f.rtl.css +1 -0
  92. package/dist/bundles/41.a19b0ae5d68f855d2753.js +3 -0
  93. package/dist/bundles/42.494986b0981f6d116fef.js +3 -0
  94. package/dist/bundles/42.9078fb8f1629e3eee9bd.css +1 -0
  95. package/dist/bundles/42.9078fb8f1629e3eee9bd.rtl.css +1 -0
  96. package/dist/bundles/43.619c5ed4a592cc2965a4.js +3 -0
  97. package/dist/bundles/43.8bf90585004742c338c5.css +1 -0
  98. package/dist/bundles/43.8bf90585004742c338c5.rtl.css +1 -0
  99. package/dist/bundles/44.0a7df307e4f397763ce8.js +3474 -0
  100. package/dist/bundles/45.12a19785e3864bd62a76.css +1 -0
  101. package/dist/bundles/45.12a19785e3864bd62a76.rtl.css +1 -0
  102. package/dist/bundles/45.db9dbd3e9bfeca5333da.js +3 -0
  103. package/dist/bundles/46.f1d4cfe6d6f830b4a011.js +495 -0
  104. package/dist/bundles/47.a3da3f774c90bd22798e.js +555 -0
  105. package/dist/bundles/48.a3fdb9dd54af71b3bda6.css +1 -0
  106. package/dist/bundles/48.a3fdb9dd54af71b3bda6.rtl.css +1 -0
  107. package/dist/bundles/48.a93f9cb8b1bcc0e0f21e.js +3 -0
  108. package/dist/bundles/49.bacd609f7eb77a4a4b68.js +3 -0
  109. package/dist/bundles/49.d723843c9192493b8c13.css +1 -0
  110. package/dist/bundles/49.d723843c9192493b8c13.rtl.css +1 -0
  111. package/dist/bundles/4a9abefd31dab7c8239e02e925aacd78.png +0 -0
  112. package/dist/bundles/4fafff07d8914dc11f6d335f606ff47c.png +0 -0
  113. package/dist/bundles/5.5e97b270ab80d99e9085.js +335 -0
  114. package/dist/bundles/50.8d5cba5b90176d3d2e3d.css +1 -0
  115. package/dist/bundles/50.8d5cba5b90176d3d2e3d.rtl.css +1 -0
  116. package/dist/bundles/50.b282667dddcb7fe1569a.js +3 -0
  117. package/dist/bundles/51.11871c50951db825ace3.js +3 -0
  118. package/dist/bundles/51.300c3df03ca063ec03a0.css +1 -0
  119. package/dist/bundles/51.300c3df03ca063ec03a0.rtl.css +1 -0
  120. package/dist/bundles/52.0379a85baae3ab43b15c.js +3 -0
  121. package/dist/bundles/52.29cec22b3525b47af67e.css +1 -0
  122. package/dist/bundles/52.29cec22b3525b47af67e.rtl.css +1 -0
  123. package/dist/bundles/53.1d3ec98cfb8e19affb1c.js +808 -0
  124. package/dist/bundles/54.bb5888ae55ea0a253a5b.js +1083 -0
  125. package/dist/bundles/55.3c35a629db21ab961f11.js +1733 -0
  126. package/dist/bundles/56.b3e69145c0fee614443d.js +723 -0
  127. package/dist/bundles/57.236996ec416da4c1f683.js +473 -0
  128. package/dist/bundles/58.7ffac4ba908b95705e63.js +410 -0
  129. package/dist/bundles/59.397cb6699b74d64072a8.js +3 -0
  130. package/dist/bundles/59.418f1db161eefae63284.css +1 -0
  131. package/dist/bundles/59.418f1db161eefae63284.rtl.css +1 -0
  132. package/dist/bundles/6.2221bb6a5d920bbb4bb2.css +1 -0
  133. package/dist/bundles/6.2221bb6a5d920bbb4bb2.rtl.css +1 -0
  134. package/dist/bundles/6.2d67b0ae77825dbd455d.js +3 -0
  135. package/dist/bundles/60.6b5eced2ef8fa856be88.js +3 -0
  136. package/dist/bundles/60.d4583c71cca790a25900.css +1 -0
  137. package/dist/bundles/60.d4583c71cca790a25900.rtl.css +1 -0
  138. package/dist/bundles/61.38a3040c925fadff7b64.js +743 -0
  139. package/dist/bundles/62.63b309f5f8da9ca013b8.js +309 -0
  140. package/dist/bundles/63.8255c7f5191bcafcee7c.js +3 -0
  141. package/dist/bundles/63.898a61bf08239711dc74.css +1 -0
  142. package/dist/bundles/63.898a61bf08239711dc74.rtl.css +1 -0
  143. package/dist/bundles/64.6f232bdb0fb4cdcc2d7d.css +1 -0
  144. package/dist/bundles/64.6f232bdb0fb4cdcc2d7d.rtl.css +1 -0
  145. package/dist/bundles/64.ec4b4d03b28c77658dde.js +3 -0
  146. package/dist/bundles/65.556980fc277562af83c8.css +1 -0
  147. package/dist/bundles/65.556980fc277562af83c8.rtl.css +1 -0
  148. package/dist/bundles/65.f895a78b4e04257983ff.js +3 -0
  149. package/dist/bundles/66.2979e9b7c35e7bf03a37.js +3 -0
  150. package/dist/bundles/66.84b4001b5c622a569dde.css +1 -0
  151. package/dist/bundles/66.84b4001b5c622a569dde.rtl.css +1 -0
  152. package/dist/bundles/67.19c83a0c303c290216d2.css +1 -0
  153. package/dist/bundles/67.19c83a0c303c290216d2.rtl.css +1 -0
  154. package/dist/bundles/67.25fd4b78c8c514988aeb.js +3 -0
  155. package/dist/bundles/68.8b4124c875484d11fd94.js +3 -0
  156. package/dist/bundles/68.fa7424ae9c5fe5483aac.css +1 -0
  157. package/dist/bundles/68.fa7424ae9c5fe5483aac.rtl.css +1 -0
  158. package/dist/bundles/69.094b4a764d3dc17820cf.css +1 -0
  159. package/dist/bundles/69.094b4a764d3dc17820cf.rtl.css +1 -0
  160. package/dist/bundles/69.43756a5c7477730eb0c4.js +3 -0
  161. package/dist/bundles/7.2c7c4f8a49c6380227de.js +315 -0
  162. package/dist/bundles/70.c27146ec029eda556108.css +1 -0
  163. package/dist/bundles/70.c27146ec029eda556108.rtl.css +1 -0
  164. package/dist/bundles/70.cb9d1bb5a00896c1bb97.js +3 -0
  165. package/dist/bundles/71.15e639d294c4209f256e.css +1 -0
  166. package/dist/bundles/71.15e639d294c4209f256e.rtl.css +1 -0
  167. package/dist/bundles/71.6a9d0842f5e48f68399c.js +3 -0
  168. package/dist/bundles/72.07441fd67b864b86147b.css +1 -0
  169. package/dist/bundles/72.07441fd67b864b86147b.rtl.css +1 -0
  170. package/dist/bundles/72.e3925aaf38d2c8997638.js +3 -0
  171. package/dist/bundles/73.6b8b9e5e2c8e2b753cb8.css +1 -0
  172. package/dist/bundles/73.6b8b9e5e2c8e2b753cb8.rtl.css +1 -0
  173. package/dist/bundles/73.8ca1a096c5bdc2e5fb8a.js +3 -0
  174. package/dist/bundles/7393f661fc7d4389ea6d4dabd2a5aeea.png +0 -0
  175. package/dist/bundles/74.34dcc0d3cd1bbfa5e951.js +3 -0
  176. package/dist/bundles/74.8c591c252b2e7ad8f744.css +1 -0
  177. package/dist/bundles/74.8c591c252b2e7ad8f744.rtl.css +1 -0
  178. package/dist/bundles/75.1c9a3a6524248ddf88bf.js +3 -0
  179. package/dist/bundles/75.fefbc386c59bf7d4f9f7.css +1 -0
  180. package/dist/bundles/75.fefbc386c59bf7d4f9f7.rtl.css +1 -0
  181. package/dist/bundles/76.5d20bed213399f326603.js +3 -0
  182. package/dist/bundles/76.f14d71a31295d8cd8d8b.css +1 -0
  183. package/dist/bundles/76.f14d71a31295d8cd8d8b.rtl.css +1 -0
  184. package/dist/bundles/77.3e4ccccc7d3eb03c488f.js +3 -0
  185. package/dist/bundles/77.9c35f7046b848fbfd7f5.css +1 -0
  186. package/dist/bundles/77.9c35f7046b848fbfd7f5.rtl.css +1 -0
  187. package/dist/bundles/78.0d502ab4d94441708606.css +1 -0
  188. package/dist/bundles/78.0d502ab4d94441708606.rtl.css +1 -0
  189. package/dist/bundles/78.1d1d47a915b06f1496fb.js +3 -0
  190. package/dist/bundles/79.86e92b77f8cf32e6bc37.js +3 -0
  191. package/dist/bundles/79.b990749a4839f9123f26.css +1 -0
  192. package/dist/bundles/79.b990749a4839f9123f26.rtl.css +1 -0
  193. package/dist/bundles/7e0cc5f7d7f5151500dd60b8d6ca60a1.png +0 -0
  194. package/dist/bundles/8.e66ab8f27911a033604f.css +1 -0
  195. package/dist/bundles/8.e66ab8f27911a033604f.rtl.css +1 -0
  196. package/dist/bundles/8.ffab20b86db484062268.js +3 -0
  197. package/dist/bundles/80.5bdd53d5fc42d40eee28.css +1 -0
  198. package/dist/bundles/80.5bdd53d5fc42d40eee28.rtl.css +1 -0
  199. package/dist/bundles/80.b5bc6acec3b531a510a9.js +3 -0
  200. package/dist/bundles/81.552e046aa828739c508b.css +1 -0
  201. package/dist/bundles/81.552e046aa828739c508b.rtl.css +1 -0
  202. package/dist/bundles/81.e6a1f76017a44b03480b.js +3 -0
  203. package/dist/bundles/82.8c2919e6c8f54e36e9e6.js +3 -0
  204. package/dist/bundles/82.e06fe84c8cdead4bd52e.css +1 -0
  205. package/dist/bundles/82.e06fe84c8cdead4bd52e.rtl.css +1 -0
  206. package/dist/bundles/83.e238aa056c5d4827cbdd.css +1 -0
  207. package/dist/bundles/83.e238aa056c5d4827cbdd.rtl.css +1 -0
  208. package/dist/bundles/83.f3e53bb5a5940e084955.js +3 -0
  209. package/dist/bundles/84.8acc496b4deeeeefb5af.js +3 -0
  210. package/dist/bundles/84.bb4fc57627c8626019fd.css +1 -0
  211. package/dist/bundles/84.bb4fc57627c8626019fd.rtl.css +1 -0
  212. package/dist/bundles/85.39c78fbeaabae306f343.js +3 -0
  213. package/dist/bundles/85.e0ba32bafcab02208901.css +1 -0
  214. package/dist/bundles/85.e0ba32bafcab02208901.rtl.css +1 -0
  215. package/dist/bundles/86.4bbbb9e6262243419986.js +3 -0
  216. package/dist/bundles/86.9244fc2bcc2370425a15.css +1 -0
  217. package/dist/bundles/86.9244fc2bcc2370425a15.rtl.css +1 -0
  218. package/dist/bundles/87.605cbc508223ec27341c.css +1 -0
  219. package/dist/bundles/87.605cbc508223ec27341c.rtl.css +1 -0
  220. package/dist/bundles/87.cf03fa0a76bfcadd157d.js +3 -0
  221. package/dist/bundles/88.158dd8a18e176936a343.css +1 -0
  222. package/dist/bundles/88.158dd8a18e176936a343.rtl.css +1 -0
  223. package/dist/bundles/88.d1e3aec63ece25f6b8a9.js +3 -0
  224. package/dist/bundles/89.5f142643917701de773b.css +1 -0
  225. package/dist/bundles/89.5f142643917701de773b.rtl.css +1 -0
  226. package/dist/bundles/89.d8aa43b4b9378722d572.js +3 -0
  227. package/dist/bundles/898929f1acdb622689e0fc0c95c8fcd0.png +0 -0
  228. package/dist/bundles/9.84ecbc930e51cb26d06a.js +3 -0
  229. package/dist/bundles/9.8ab09f93a5113a634119.css +1 -0
  230. package/dist/bundles/9.8ab09f93a5113a634119.rtl.css +1 -0
  231. package/dist/bundles/90.877114560c4828a97702.css +1 -0
  232. package/dist/bundles/90.877114560c4828a97702.rtl.css +1 -0
  233. package/dist/bundles/90.ce47bb68fc3fc88b5590.js +3 -0
  234. package/dist/bundles/91.2142b248a2bb29549a99.css +1 -0
  235. package/dist/bundles/91.2142b248a2bb29549a99.rtl.css +1 -0
  236. package/dist/bundles/91.a9b79ef7ba0a62311a53.js +3 -0
  237. package/dist/bundles/92.76d5ca7ebec10a1a7a12.js +3 -0
  238. package/dist/bundles/92.e46f0aa06bcdbddf3831.css +1 -0
  239. package/dist/bundles/92.e46f0aa06bcdbddf3831.rtl.css +1 -0
  240. package/dist/bundles/93.17d34ca77a7fc85a24d9.css +1 -0
  241. package/dist/bundles/93.17d34ca77a7fc85a24d9.rtl.css +1 -0
  242. package/dist/bundles/93.6de56ef1975f4a31e542.js +3 -0
  243. package/dist/bundles/94.231bea5fb12b806ef287.js +3 -0
  244. package/dist/bundles/94.b204218cb73b576333a1.css +1 -0
  245. package/dist/bundles/94.b204218cb73b576333a1.rtl.css +1 -0
  246. package/dist/bundles/95.51244d1c4baf49d08807.css +1 -0
  247. package/dist/bundles/95.51244d1c4baf49d08807.rtl.css +1 -0
  248. package/dist/bundles/95.6f7da80aac5cf2bf77d6.js +3 -0
  249. package/dist/bundles/96.43bb935eee30715afff7.js +3 -0
  250. package/dist/bundles/96.be9ad3d6a7c91501bb55.css +1 -0
  251. package/dist/bundles/96.be9ad3d6a7c91501bb55.rtl.css +1 -0
  252. package/dist/bundles/a6506134daec7169f68f563f084a9d41.svg +1 -0
  253. package/dist/bundles/add-compare-dialog.f980c19f222ff9cb8fe6.js +1285 -0
  254. package/dist/bundles/b1a63a011fd92dfb93db6db243bb036c.woff2 +0 -0
  255. package/dist/bundles/change-interval-dialog.e928f8dec65c9244cafe.js +260 -0
  256. package/dist/bundles/chart-bottom-toolbar.b2e895a5fd3f204fb6b6.js +2205 -0
  257. package/dist/bundles/chart-event-hint.94e94e93f9fdee936b66.js +367 -0
  258. package/dist/bundles/chart-screenshot-hint.14bfec43c52bc3d28f82.js +228 -0
  259. package/dist/bundles/chart-widget-gui.226991e9f53aba124fc2.js +4265 -0
  260. package/dist/bundles/compare-model.0e6bbdc5f5942c9a716e.js +667 -0
  261. package/dist/bundles/context-menu-renderer.7f6f59270ef0f3afa2ed.js +432 -0
  262. package/dist/bundles/currency-label-menu.a7a0c0e44d64b092f2cc.js +724 -0
  263. package/dist/bundles/custom-intervals-add-dialog.bb64431fb1c6d852f9f1.js +440 -0
  264. package/dist/bundles/drawing-toolbar.8cc497633535648562e7.js +1814 -0
  265. package/dist/bundles/ed68e83c16f77203e73dbc4c3a7c7fa1.cur +0 -0
  266. package/dist/bundles/export-data.c819cfa996e2815ff11d.js +238 -0
  267. package/dist/bundles/f55394b616ed1ae9462c37daab941d93.png +0 -0
  268. package/dist/bundles/floating-toolbars.d78a058b82ab09013aac.js +2373 -0
  269. package/dist/bundles/full-tooltips-popup.96fc751e06523b742440.js +423 -0
  270. package/dist/bundles/general-chart-properties-dialog.b08948e0c90aebf07ebd.js +656 -0
  271. package/dist/bundles/general-property-page.32bdfdbafbd81d9e83c6.js +604 -0
  272. package/dist/bundles/go-to-date-dialog-impl.3481c4fcfde2f4d46426.js +2313 -0
  273. package/dist/bundles/hammerjs.e5489031ed611f47bf09.js +993 -0
  274. package/dist/bundles/header-toolbar.4bff61e047f9b8379494.js +1293 -0
  275. package/dist/bundles/library.579e6e3fd95b660ad833.css +1 -0
  276. package/dist/bundles/library.579e6e3fd95b660ad833.rtl.css +1 -0
  277. package/dist/bundles/library.8b0dd8732414a2bcbcb1.js +1 -0
  278. package/dist/bundles/line-tools-icons.090f39d92664af3915a5.js +349 -0
  279. package/dist/bundles/load-chart-dialog.6cc1a47b17698c0108cb.js +683 -0
  280. package/dist/bundles/lollipop-tooltip-renderer.6705b971a2e73c26ecad.js +573 -0
  281. package/dist/bundles/lt-pane-views.4d2ee6c5330cd3760eb0.js +11748 -0
  282. package/dist/bundles/lt-property-pages-with-definitions.a5e8283e77afa66b5636.js +3491 -0
  283. package/dist/bundles/manage-drawings-dialog.1c0c3737002fa63fe6a6.js +81 -0
  284. package/dist/bundles/moment.78e587a83a009ca48cda.js +2059 -0
  285. package/dist/bundles/new-confirm-inputs-dialog.00d79c2263e005170345.js +305 -0
  286. package/dist/bundles/new-edit-object-dialog.0ed1c3834cfc0e834aed.js +2953 -0
  287. package/dist/bundles/object-tree-dialog.8e2b7eb9ba2f1dbfbc11.js +7693 -0
  288. package/dist/bundles/react.9f2899b40ad0e104f6c9.js +7156 -0
  289. package/dist/bundles/redux.43c3f6d214bcf2d1fbd1.js +1691 -0
  290. package/dist/bundles/restricted-toolset.08fefbae2bc0877b0ef2.js +3692 -0
  291. package/dist/bundles/runtime.dfe30490f666a6b5d4fe.js +654 -0
  292. package/dist/bundles/series-icons-map.ec8043f64d8b06dbce29.js +53 -0
  293. package/dist/bundles/series-pane-views.eefe35e1c508ac16c102.js +113 -0
  294. package/dist/bundles/share-chart-to-social-utils.c225af2051efd23269e0.js +44 -0
  295. package/dist/bundles/show-theme-save-dialog.f81ebf1b2ce08f4399fd.js +60 -0
  296. package/dist/bundles/simple-dialog.bd79f02afd512f0f36dd.js +919 -0
  297. package/dist/bundles/source-properties-editor.e858d44541ebb6f974a2.js +265 -0
  298. package/dist/bundles/study-market.3efd7bf7bc6e6fc7db2d.js +1030 -0
  299. package/dist/bundles/study-pane-views.9a873dcf74adedf7600b.js +682 -0
  300. package/dist/bundles/study-property-pages-with-definitions.ca4fc2ef5a4deff8c0bb.js +502 -0
  301. package/dist/bundles/study-template-dialog.fe56a9893a3695e93531.js +1598 -0
  302. package/dist/bundles/symbol-info-dialog-impl.17daedab6f893acdeae4.js +642 -0
  303. package/dist/bundles/symbol-search-dialog.fd3311eee8604f807c80.js +112 -0
  304. package/dist/bundles/take-chart-image-impl.c0e6073dcac3041eecf2.js +153 -0
  305. package/dist/bundles/vendors.6f5e0d8d267cb3e63ee0.js +5316 -0
  306. package/dist/charting_library.cjs.js +499 -0
  307. package/dist/charting_library.d.ts +2087 -0
  308. package/dist/charting_library.esm.js +503 -0
  309. package/dist/charting_library.js +506 -0
  310. package/dist/charting_library.standalone.js +500 -0
  311. package/dist/cs-tv-chart.f0bc1e45.html +1 -0
  312. package/dist/da_DK-tv-chart.f0bc1e45.html +1 -0
  313. package/dist/datafeed-api.d.ts +274 -0
  314. package/dist/de-tv-chart.f0bc1e45.html +1 -0
  315. package/dist/el-tv-chart.f0bc1e45.html +1 -0
  316. package/dist/en-tv-chart.f0bc1e45.html +1 -0
  317. package/dist/es-tv-chart.f0bc1e45.html +1 -0
  318. package/dist/et_EE-tv-chart.f0bc1e45.html +1 -0
  319. package/dist/fa-tv-chart.f0bc1e45.html +1 -0
  320. package/dist/fr-tv-chart.f0bc1e45.html +1 -0
  321. package/dist/he_IL-tv-chart.f0bc1e45.html +1 -0
  322. package/dist/hu_HU-tv-chart.f0bc1e45.html +1 -0
  323. package/dist/id_ID-tv-chart.f0bc1e45.html +1 -0
  324. package/dist/it-tv-chart.f0bc1e45.html +1 -0
  325. package/dist/ja-tv-chart.f0bc1e45.html +1 -0
  326. package/dist/ko-tv-chart.f0bc1e45.html +1 -0
  327. package/dist/ms_MY-tv-chart.f0bc1e45.html +1 -0
  328. package/dist/nl_NL-tv-chart.f0bc1e45.html +1 -0
  329. package/dist/no-tv-chart.f0bc1e45.html +1 -0
  330. package/dist/package.json +8 -0
  331. package/dist/pl-tv-chart.f0bc1e45.html +1 -0
  332. package/dist/pt-tv-chart.f0bc1e45.html +1 -0
  333. package/dist/ro-tv-chart.f0bc1e45.html +1 -0
  334. package/dist/ru-tv-chart.f0bc1e45.html +1 -0
  335. package/dist/sk_SK-tv-chart.f0bc1e45.html +1 -0
  336. package/dist/sv-tv-chart.f0bc1e45.html +1 -0
  337. package/dist/th-tv-chart.f0bc1e45.html +1 -0
  338. package/dist/tr-tv-chart.f0bc1e45.html +1 -0
  339. package/dist/vi-tv-chart.f0bc1e45.html +1 -0
  340. package/dist/yarn.lock +4 -0
  341. package/dist/zh-tv-chart.f0bc1e45.html +1 -0
  342. package/dist/zh_TW-tv-chart.f0bc1e45.html +1 -0
  343. package/package.json +9 -6
  344. package/src/components/TVChartContainer.jsx +1 -4
  345. package/copy_charting_library_files.sh +0 -30
@@ -0,0 +1,3692 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/web.dom-collections.iterator.js");
4
+
5
+ require("core-js/modules/es.symbol.description.js");
6
+
7
+ require("core-js/modules/es.array.includes.js");
8
+
9
+ require("core-js/modules/es.string.includes.js");
10
+
11
+ require("core-js/modules/es.promise.js");
12
+
13
+ require("core-js/modules/es.json.stringify.js");
14
+
15
+ require("core-js/modules/es.array.reduce.js");
16
+
17
+ require("core-js/modules/es.array.sort.js");
18
+
19
+ require("core-js/modules/es.regexp.exec.js");
20
+
21
+ require("core-js/modules/es.regexp.test.js");
22
+
23
+ require("core-js/modules/web.url.js");
24
+
25
+ require("core-js/modules/web.url-search-params.js");
26
+
27
+ require("core-js/modules/es.string.replace.js");
28
+
29
+ require("core-js/modules/es.object.assign.js");
30
+
31
+ const _excluded = ["reference", "size", "intent"],
32
+ _excluded2 = ["className", "isActive", "onClick", "title", "hidden", "data-name"],
33
+ _excluded3 = ["children", "className"],
34
+ _excluded4 = ["text", "className", "displayMode", "collapseWhen"],
35
+ _excluded5 = ["className"],
36
+ _excluded6 = ["className", "isFilled", "isActive", "onClick"];
37
+
38
+ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
39
+
40
+ function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
41
+
42
+ function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
43
+
44
+ function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
45
+
46
+ function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
47
+
48
+ (window.webpackJsonp = window.webpackJsonp || []).push([["restricted-toolset", "series-icons-map"], {
49
+ "+KIV": function KIV(e, t) {
50
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none"><path stroke="currentColor" d="M8 9.5H6.5a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1h11a1 1 0 0 0 1-1V20m-8-1.5h11a1 1 0 0 0 1-1v-11a1 1 0 0 0-1-1h-11a1 1 0 0 0-1 1v11a1 1 0 0 0 1 1z"/></svg>';
51
+ },
52
+ "1Tx8": function Tx8(e, t, a) {
53
+ e.exports = {
54
+ button: "button-mPM2q3lb",
55
+ withText: "withText-mPM2q3lb",
56
+ withoutText: "withoutText-mPM2q3lb"
57
+ };
58
+ },
59
+ "1uoO": function uoO(e, t) {
60
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="currentColor"><path d="M9 8v12h3V8H9zm-1-.502C8 7.223 8.215 7 8.498 7h4.004c.275 0 .498.22.498.498v13.004a.493.493 0 0 1-.498.498H8.498A.496.496 0 0 1 8 20.502V7.498z"/><path d="M10 4h1v3.5h-1z"/><path d="M17 6v6h3V6h-3zm-1-.5c0-.276.215-.5.498-.5h4.004c.275 0 .498.23.498.5v7c0 .276-.215.5-.498.5h-4.004a.503.503 0 0 1-.498-.5v-7z"/><path d="M18 2h1v3.5h-1z"/></svg>';
61
+ },
62
+ "23di": function di(e, t, a) {
63
+ e.exports = {
64
+ wrap: "wrap-3FnlLKfX",
65
+ titleWrap: "titleWrap-3FnlLKfX",
66
+ indicators: "indicators-3FnlLKfX",
67
+ title: "title-3FnlLKfX",
68
+ icon: "icon-3FnlLKfX",
69
+ text: "text-3FnlLKfX",
70
+ titleTabletSmall: "titleTabletSmall-3FnlLKfX",
71
+ labelRow: "labelRow-3FnlLKfX",
72
+ label: "label-3FnlLKfX"
73
+ };
74
+ },
75
+ "2xRE": function xRE(e, t) {
76
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M18.293 13l-2.647 2.646.707.708 3.854-3.854-3.854-3.854-.707.708L18.293 12H12.5A5.5 5.5 0 0 0 7 17.5V19h1v-1.5a4.5 4.5 0 0 1 4.5-4.5h5.793z"/></svg>';
77
+ },
78
+ "39J6": function J6(e, t, a) {
79
+ "use strict";
80
+
81
+ a.d(t, "a", function () {
82
+ return r;
83
+ });
84
+ var n = a("q1tI"),
85
+ i = a("TSYQ"),
86
+ s = a.n(i),
87
+ o = a("6KyJ"),
88
+ l = a("Oy6E");
89
+
90
+ function r(e) {
91
+ const {
92
+ className: t
93
+ } = e;
94
+ return n.createElement("div", {
95
+ className: s()(l.spinnerWrap, t)
96
+ }, n.createElement(o.a, null));
97
+ }
98
+ },
99
+ "3j+J": function jJ(e, t, a) {
100
+ e.exports = {
101
+ wrapper: "wrapper-2wbe1KZX",
102
+ labelRow: "labelRow-2wbe1KZX",
103
+ label: "label-2wbe1KZX",
104
+ labelHint: "labelHint-2wbe1KZX",
105
+ labelOn: "labelOn-2wbe1KZX"
106
+ };
107
+ },
108
+ "4hTN": function hTN(e, t, a) {
109
+ e.exports = {
110
+ value: "value-2y-wa9jT",
111
+ selected: "selected-2y-wa9jT"
112
+ };
113
+ },
114
+ "4pMH": function pMH(e, t, a) {},
115
+ "5ijr": function ijr(e) {
116
+ e.exports = JSON.parse('{"switcherWrapper":"switcherWrapper-1wFH-_jm","size-small":"size-small-1gT-kZYO","size-large":"size-large-MOSirnj_","intent-select":"intent-select-2kut8F29","switcherThumbWrapper":"switcherThumbWrapper-2u191lDO","input":"input-J7QIcTTo","switcherTrack":"switcherTrack-2XruDVTa","intent-default":"intent-default-3soo5rvS","switcherThumb":"switcherThumb-2yuEucci","focus":"focus-uZMRkCO0"}');
117
+ },
118
+ "6KyJ": function KyJ(e, t, a) {
119
+ "use strict";
120
+
121
+ var n,
122
+ i = a("q1tI"),
123
+ s = a("TSYQ"),
124
+ o = a("K9GE"),
125
+ l = a("YZ9j");
126
+ a("O7m7");
127
+ !function (e) {
128
+ e[e.Initial = 0] = "Initial", e[e.Appear = 1] = "Appear", e[e.Active = 2] = "Active";
129
+ }(n || (n = {}));
130
+
131
+ class r extends i.PureComponent {
132
+ constructor(e) {
133
+ super(e), this._stateChangeTimeout = null, this.state = {
134
+ state: n.Initial
135
+ };
136
+ }
137
+
138
+ render() {
139
+ const {
140
+ className: e,
141
+ color: t = "black"
142
+ } = this.props,
143
+ a = s(l.item, {
144
+ [l[t]]: Boolean(t)
145
+ });
146
+ return i.createElement("span", {
147
+ className: s(l.loader, e, this._getStateClass())
148
+ }, i.createElement("span", {
149
+ className: a
150
+ }), i.createElement("span", {
151
+ className: a
152
+ }), i.createElement("span", {
153
+ className: a
154
+ }));
155
+ }
156
+
157
+ componentDidMount() {
158
+ this.setState({
159
+ state: n.Appear
160
+ }), this._stateChangeTimeout = setTimeout(() => {
161
+ this.setState({
162
+ state: n.Active
163
+ });
164
+ }, 2 * o.b);
165
+ }
166
+
167
+ componentWillUnmount() {
168
+ this._stateChangeTimeout && (clearTimeout(this._stateChangeTimeout), this._stateChangeTimeout = null);
169
+ }
170
+
171
+ _getStateClass() {
172
+ switch (this.state.state) {
173
+ case n.Initial:
174
+ return l["loader-initial"];
175
+
176
+ case n.Appear:
177
+ return l["loader-appear"];
178
+
179
+ default:
180
+ return "";
181
+ }
182
+ }
183
+
184
+ }
185
+
186
+ a.d(t, "a", function () {
187
+ return r;
188
+ });
189
+ },
190
+ "8RO/": function RO(e, t, a) {
191
+ "use strict";
192
+
193
+ a.d(t, "a", function () {
194
+ return i;
195
+ }), a.d(t, "b", function () {
196
+ return s;
197
+ });
198
+ var n = a("3ClC");
199
+
200
+ function i(e, t) {
201
+ return {
202
+ indicators: e.orderedDataSources(!0).filter(e => Object(n.isStudy)(e) && !Object(n.isESDStudy)(e)).map(e => ({
203
+ id: e.metaInfo().id,
204
+ description: e.title(!0, void 0, !0)
205
+ })),
206
+ interval: t
207
+ };
208
+ }
209
+
210
+ function s(e) {
211
+ const t = new Map();
212
+ return e.forEach(e => {
213
+ const [a, n] = t.get(e.id) || [e.description, 0];
214
+ t.set(e.id, [a, n + 1]);
215
+ }), Array.from(t.values()).map(_ref => {
216
+ let [e, t] = _ref;
217
+ return "".concat(e).concat(t > 1 ? " x " + t : "");
218
+ }).join(", ");
219
+ }
220
+ },
221
+ "9NBK": function NBK(e, t, a) {
222
+ e.exports = {
223
+ item: "item-2gtivim-",
224
+ round: "round-2gtivim-"
225
+ };
226
+ },
227
+ ASyk: function ASyk(e, t, a) {
228
+ e.exports = {
229
+ "tablet-normal-breakpoint": "screen and (max-width: 768px)",
230
+ "small-height-breakpoint": "screen and (max-height: 360px)",
231
+ "tablet-small-breakpoint": "screen and (max-width: 428px)"
232
+ };
233
+ },
234
+ BHQn: function BHQn(e, t) {
235
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="#1DA1F2" d="M10.28 22.26c7.55 0 11.68-6.26 11.68-11.67v-.53c.8-.58 1.49-1.3 2.04-2.13-.74.33-1.53.54-2.36.65.85-.5 1.5-1.32 1.8-2.28-.78.48-1.66.81-2.6 1a4.1 4.1 0 00-7 3.74c-3.4-.17-6.43-1.8-8.46-4.29a4.1 4.1 0 001.28 5.48c-.68-.02-1.3-.2-1.86-.5v.05a4.11 4.11 0 003.29 4.02 4 4 0 01-1.85.08 4.1 4.1 0 003.83 2.85A8.23 8.23 0 014 20.43a11.67 11.67 0 006.28 1.83z"/></svg>';
236
+ },
237
+ CGkO: function CGkO(e, t) {
238
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="none"><path stroke="currentColor" d="M19 15l2.5-2.5c1-1 1.5-3.5-.5-5.5s-4.5-1.5-5.5-.5L13 9M10 12l-2.5 2.5c-1 1-1.5 3.5.5 5.5s4.5 1.5 5.5.5L16 18M17 11l-5 5"/></svg>';
239
+ },
240
+ CX26: function CX26(e, t, a) {
241
+ e.exports = {
242
+ form: "form-9dAINdeN",
243
+ interacting: "interacting-9dAINdeN",
244
+ input: "input-9dAINdeN",
245
+ menu: "menu-9dAINdeN",
246
+ add: "add-9dAINdeN",
247
+ hovered: "hovered-9dAINdeN",
248
+ hover: "hover-9dAINdeN",
249
+ wrap: "wrap-9dAINdeN"
250
+ };
251
+ },
252
+ EsZh: function EsZh(e, t, a) {
253
+ "use strict";
254
+
255
+ a.r(t), a.d(t, "SERIES_ICONS", function () {
256
+ return d;
257
+ });
258
+ var n = a("G2sT"),
259
+ i = a("Jtxf"),
260
+ s = a("pqsj"),
261
+ o = a("1uoO"),
262
+ l = a("FO3N"),
263
+ r = a("t2Sj"),
264
+ c = a("fD7T"),
265
+ h = a("VgwI");
266
+ const d = {
267
+ 3: n,
268
+ 0: i,
269
+ 1: s,
270
+ 8: o,
271
+ 9: l,
272
+ 2: r,
273
+ 10: c,
274
+ 12: h
275
+ };
276
+ },
277
+ EvtC: function EvtC(e, t, a) {
278
+ e.exports = {
279
+ button: "button-2YcRd2gv"
280
+ };
281
+ },
282
+ FO3N: function FO3N(e, t) {
283
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="currentColor"><path d="M17 11v6h3v-6h-3zm-.5-1h4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5z"/><path d="M18 7h1v3.5h-1zm0 10.5h1V21h-1z"/><path d="M9 8v11h3V8H9zm-.5-1h4a.5.5 0 0 1 .5.5v12a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5v-12a.5.5 0 0 1 .5-.5z"/><path d="M10 4h1v5h-1zm0 14h1v5h-1zM8.5 9H10v1H8.5zM11 9h1.5v1H11zm-1 1h1v1h-1zm-1.5 1H10v1H8.5zm2.5 0h1.5v1H11zm-1 1h1v1h-1zm-1.5 1H10v1H8.5zm2.5 0h1.5v1H11zm-1 1h1v1h-1zm-1.5 1H10v1H8.5zm2.5 0h1.5v1H11zm-1 1h1v1h-1zm-1.5 1H10v1H8.5zm2.5 0h1.5v1H11z"/></svg>';
284
+ },
285
+ G2sT: function G2sT(e, t) {
286
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="currentColor"><path d="M12.5 17.207L18.707 11h2l3.647-3.646-.708-.708L20.293 10h-2L12.5 15.793l-3-3-4.854 4.853.708.708L9.5 14.207z"/><path d="M9 16h1v1H9zm1 1h1v1h-1zm-1 1h1v1H9zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1H9zm2 0h1v1h-1zm-3-3h1v1H8zm-1 1h1v1H7zm-1 1h1v1H6zm2 0h1v1H8zm-1 1h1v1H7zm-2 0h1v1H5zm17-9h1v1h-1zm1-1h1v1h-1zm0 2h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-5-7h1v1h-1zm2 0h1v1h-1zm1-1h1v1h-1zm-2 2h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-2-6h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-3-3h1v1h-1zm-1 1h1v1h-1zm-1 1h1v1h-1zm2 0h1v1h-1zm-1 1h1v1h-1z"/></svg>';
287
+ },
288
+ GgvM: function GgvM(e, t) {
289
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><g fill="currentColor"><path d="M21 7v4h1V6h-5v1z"/><path d="M16.854 11.854l5-5-.708-.708-5 5zM7 7v4H6V6h5v1z"/><path d="M11.146 11.854l-5-5 .708-.708 5 5zM21 21v-4h1v5h-5v-1z"/><path d="M16.854 16.146l5 5-.708.708-5-5z"/><g><path d="M7 21v-4H6v5h5v-1z"/><path d="M11.146 16.146l-5 5 .708.708 5-5z"/></g></g></svg>';
290
+ },
291
+ HBiQ: function HBiQ(e, t, a) {
292
+ e.exports = {
293
+ button: "button-2eVMAgh-",
294
+ first: "first-2eVMAgh-",
295
+ last: "last-2eVMAgh-"
296
+ };
297
+ },
298
+ Jtxf: function Jtxf(e, t) {
299
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><g fill="none" stroke="currentColor" stroke-linecap="square"><path d="M10.5 7.5v15M7.5 20.5H10M13.5 11.5H11M19.5 6.5v15M16.5 9.5H19M22.5 16.5H20"/></g></svg>';
300
+ },
301
+ MB0Y: function MB0Y(e, t, a) {
302
+ "use strict";
303
+
304
+ var n = a("q1tI"),
305
+ i = a.n(n),
306
+ s = a("TSYQ"),
307
+ o = a.n(s),
308
+ l = a("5ijr");
309
+ a("4pMH");
310
+
311
+ function r(e) {
312
+ const {
313
+ className: t = "",
314
+ intent: a = "default",
315
+ size: n = "small",
316
+ disabled: i
317
+ } = e;
318
+ return s(t, l.switcherWrapper, l["size-" + n], !i && l["intent-" + a]);
319
+ }
320
+
321
+ class c extends n.PureComponent {
322
+ render() {
323
+ const _this$props = this.props,
324
+ {
325
+ reference: e,
326
+ size: t,
327
+ intent: a
328
+ } = _this$props,
329
+ i = _objectWithoutProperties(_this$props, _excluded),
330
+ o = s(l.input, -1 !== this.props.tabIndex && l.focus);
331
+
332
+ return n.createElement("div", {
333
+ className: r(this.props)
334
+ }, n.createElement("input", _objectSpread(_objectSpread({}, i), {}, {
335
+ type: "checkbox",
336
+ className: o,
337
+ ref: e
338
+ })), n.createElement("div", {
339
+ className: l.switcherThumbWrapper
340
+ }, n.createElement("div", {
341
+ className: l.switcherTrack
342
+ }), n.createElement("div", {
343
+ className: l.switcherThumb
344
+ })));
345
+ }
346
+
347
+ }
348
+
349
+ var h = a("ijHL"),
350
+ d = a("OP2o");
351
+ a.d(t, "a", function () {
352
+ return u;
353
+ }), a.d(t, "b", function () {
354
+ return m;
355
+ });
356
+ const u = d;
357
+
358
+ function m(e) {
359
+ const {
360
+ className: t,
361
+ checked: a,
362
+ id: n,
363
+ label: s,
364
+ labelDescription: l,
365
+ value: r,
366
+ preventLabelHighlight: u,
367
+ reference: m,
368
+ switchReference: v,
369
+ theme: p = d,
370
+ disabled: b
371
+ } = e,
372
+ g = o()(p.label, a && !u && p.labelOn),
373
+ S = o()(t, p.wrapper, a && p.wrapperWithOnLabel);
374
+ return i.a.createElement("label", {
375
+ className: S,
376
+ htmlFor: n,
377
+ ref: m
378
+ }, i.a.createElement("div", {
379
+ className: p.labelRow
380
+ }, i.a.createElement("div", {
381
+ className: g
382
+ }, s), l && i.a.createElement("div", {
383
+ className: p.labelHint
384
+ }, l)), i.a.createElement(c, _objectSpread({
385
+ disabled: b,
386
+ className: p.switch,
387
+ reference: v,
388
+ checked: a,
389
+ onChange: function onChange(t) {
390
+ const a = t.target.checked;
391
+ void 0 !== e.onChange && e.onChange(a);
392
+ },
393
+ value: r,
394
+ tabIndex: -1,
395
+ id: n
396
+ }, Object(h.b)(e))));
397
+ }
398
+ },
399
+ NQJD: function NQJD(e, t, a) {
400
+ e.exports = {
401
+ "tablet-small-breakpoint": "screen and (max-width: 428px)",
402
+ item: "item-NklSvNSQ",
403
+ withIcon: "withIcon-NklSvNSQ",
404
+ shortcut: "shortcut-NklSvNSQ",
405
+ loading: "loading-NklSvNSQ",
406
+ icon: "icon-NklSvNSQ"
407
+ };
408
+ },
409
+ O7m7: function O7m7(e, t, a) {},
410
+ OP2o: function OP2o(e, t, a) {
411
+ e.exports = {
412
+ wrapper: "wrapper-1Eudat6L",
413
+ hovered: "hovered-1Eudat6L",
414
+ labelRow: "labelRow-1Eudat6L",
415
+ label: "label-1Eudat6L",
416
+ labelHint: "labelHint-1Eudat6L",
417
+ labelOn: "labelOn-1Eudat6L"
418
+ };
419
+ },
420
+ Owyg: function Owyg(e, t, a) {
421
+ e.exports = {
422
+ hidden: "hidden-y5m62lMJ"
423
+ };
424
+ },
425
+ Oy6E: function Oy6E(e, t, a) {
426
+ e.exports = {
427
+ spinnerWrap: "spinnerWrap-1dkAsm33"
428
+ };
429
+ },
430
+ "PR+g": function PRG(e, t, a) {
431
+ "use strict";
432
+
433
+ a.d(t, "a", function () {
434
+ return i;
435
+ });
436
+ var n = a("q1tI");
437
+
438
+ const i = () => {
439
+ const e = Object(n.useRef)(!1);
440
+ return Object(n.useEffect)(() => (e.current = !0, () => {
441
+ e.current = !1;
442
+ }), []), e;
443
+ };
444
+ },
445
+ Q6PN: function Q6PN(e, t) {
446
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M8.5 6A2.5 2.5 0 0 0 6 8.5v11A2.5 2.5 0 0 0 8.5 22h11a2.5 2.5 0 0 0 2.5-2.5v-3h-1v3c0 .83-.67 1.5-1.5 1.5h-11A1.5 1.5 0 0 1 7 19.5v-11C7 7.67 7.67 7 8.5 7h3V6h-3zm7 1h4.8l-7.49 7.48.71.7L21 7.72v4.79h1V6h-6.5v1z"/></svg>';
447
+ },
448
+ "QC7+": function QC7(e, t, a) {
449
+ "use strict";
450
+
451
+ a.d(t, "a", function () {
452
+ return s;
453
+ });
454
+ var n = a("Kxc7"),
455
+ i = a("Wt0y");
456
+
457
+ function s(e) {
458
+ return n.enabled("charting_library_base") || Object(i.isProd)() ? "https://www.tradingview.com/x/" + e + "/" : window.location.protocol + "//" + window.location.host + "/x/" + e + "/";
459
+ }
460
+ },
461
+ "QOH/": function QOH(e, t, a) {
462
+ e.exports = {
463
+ button: "button-1n0tF4SR",
464
+ text: "text-1n0tF4SR",
465
+ uppercase: "uppercase-1n0tF4SR"
466
+ };
467
+ },
468
+ RGo6: function RGo6(e, t, a) {
469
+ e.exports = {
470
+ opened: "opened-90gXp5JL",
471
+ hover: "hover-90gXp5JL",
472
+ autoSaveWrapper: "autoSaveWrapper-90gXp5JL",
473
+ sharingWrapper: "sharingWrapper-90gXp5JL",
474
+ button: "button-90gXp5JL",
475
+ buttonSmallPadding: "buttonSmallPadding-90gXp5JL",
476
+ hintPlaceHolder: "hintPlaceHolder-90gXp5JL",
477
+ smallHintPlaceHolder: "smallHintPlaceHolder-90gXp5JL",
478
+ popupItemRowTabletSmall: "popupItemRowTabletSmall-90gXp5JL",
479
+ shortcut: "shortcut-90gXp5JL"
480
+ };
481
+ },
482
+ RYBj: function RYBj(e, t) {
483
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M13.5 6a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17zM4 14.5a9.5 9.5 0 1 1 19 0 9.5 9.5 0 0 1-19 0z"/><path fill="currentColor" d="M9 14h4v-4h1v4h4v1h-4v4h-1v-4H9v-1z"/></svg>';
484
+ },
485
+ Rdaf: function Rdaf(e, t, a) {
486
+ "use strict";
487
+
488
+ function n(e, t) {
489
+ const a = document.createElement("a");
490
+ a.style.display = "none", a.href = t, a.download = e, a.click();
491
+ }
492
+
493
+ a.d(t, "a", function () {
494
+ return n;
495
+ });
496
+ },
497
+ "S+Ii": function SIi(e, t, a) {
498
+ e.exports = {
499
+ buttonUndo: "buttonUndo-nGqa616C",
500
+ buttonRedo: "buttonRedo-nGqa616C"
501
+ };
502
+ },
503
+ S0BX: function S0BX(e, t, a) {
504
+ e.exports = {
505
+ dropdown: "dropdown-3UuXmxSn",
506
+ label: "label-3UuXmxSn",
507
+ smallWidthTitle: "smallWidthTitle-3UuXmxSn",
508
+ smallWidthMenuItem: "smallWidthMenuItem-3UuXmxSn",
509
+ smallWidthWrapper: "smallWidthWrapper-3UuXmxSn"
510
+ };
511
+ },
512
+ SchQ: function SchQ(e, t, a) {
513
+ e.exports = {
514
+ button: "button-2DZWpSVr",
515
+ isDisabled: "isDisabled-2DZWpSVr",
516
+ text: "text-2DZWpSVr"
517
+ };
518
+ },
519
+ Sl3V: function Sl3V(e, t, a) {
520
+ e.exports = {
521
+ menu: "menu-N-Iyk8ip",
522
+ menuSmallTablet: "menuSmallTablet-N-Iyk8ip",
523
+ menuItemHeaderTabletSmall: "menuItemHeaderTabletSmall-N-Iyk8ip",
524
+ menuItemHeader: "menuItemHeader-N-Iyk8ip"
525
+ };
526
+ },
527
+ To8B: function To8B(e, t) {
528
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" width="18" height="18"><path fill="currentColor" d="M9.707 9l4.647-4.646-.707-.708L9 8.293 4.354 3.646l-.708.708L8.293 9l-4.647 4.646.708.708L9 9.707l4.646 4.647.708-.707L9.707 9z"/></svg>';
529
+ },
530
+ UJ4t: function UJ4t(e, t, a) {
531
+ e.exports = {
532
+ wrap: "wrap-3jbioG5e"
533
+ };
534
+ },
535
+ VgwI: function VgwI(e, t) {
536
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28"><path fill="currentColor" fill-rule="evenodd" clip-rule="evenodd" d="M7.5 7H7v14h5V7H7.5zM8 20V8h3v12H8zm7.5-11H15v10h5V9h-4.5zm.5 9v-8h3v8h-3z"/></svg>';
537
+ },
538
+ XWsk: function XWsk(e, t) {
539
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="none"><path stroke="currentColor" d="M20 17l-5 5M15 17l5 5M9 11.5h7M17.5 8a2.5 2.5 0 0 0-5 0v11a2.5 2.5 0 0 1-5 0"/></svg>';
540
+ },
541
+ XfUw: function XfUw(e, t) {
542
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18" fill="none"><path stroke="currentColor" d="M9 2.13l1.903 3.855.116.236.26.038 4.255.618-3.079 3.001-.188.184.044.259.727 4.237-3.805-2L9 12.434l-.233.122-3.805 2.001.727-4.237.044-.26-.188-.183-3.079-3.001 4.255-.618.26-.038.116-.236L9 2.13z"/></svg>';
543
+ },
544
+ YEs3: function YEs3(e, t, a) {
545
+ e.exports = {
546
+ button: "button-3HNCAKoZ",
547
+ menu: "menu-3HNCAKoZ"
548
+ };
549
+ },
550
+ YZ9j: function YZ9j(e) {
551
+ e.exports = JSON.parse('{"loader":"loader-8x1ZxRwP","item":"item-2-89r_cd","tv-button-loader":"tv-button-loader-23vqS1uY","black":"black-20Ytsf0V","white":"white-1ucCcc2I","gray":"gray-XDhHSS-T","loader-initial":"loader-initial-1deQDeio","loader-appear":"loader-appear-2krFtMrd"}');
552
+ },
553
+ aVq2: function aVq2(e, t, a) {
554
+ e.exports = {
555
+ button: "button-2R6OKuTS",
556
+ first: "first-2R6OKuTS",
557
+ last: "last-2R6OKuTS",
558
+ menu: "menu-2R6OKuTS",
559
+ dropdown: "dropdown-2R6OKuTS",
560
+ menuContent: "menuContent-2R6OKuTS",
561
+ section: "section-2R6OKuTS",
562
+ smallTabletSectionTitle: "smallTabletSectionTitle-2R6OKuTS",
563
+ addCustomInterval: "addCustomInterval-2R6OKuTS",
564
+ hovered: "hovered-2R6OKuTS"
565
+ };
566
+ },
567
+ cSDC: function cSDC(e, t, a) {
568
+ "use strict";
569
+
570
+ a.d(t, "a", function () {
571
+ return i;
572
+ });
573
+ var n = a("YFKU");
574
+ const i = [{
575
+ name: "1",
576
+ label: Object(n.t)("minutes", {
577
+ context: "interval"
578
+ })
579
+ }, {
580
+ name: "1H",
581
+ label: Object(n.t)("hours", {
582
+ context: "interval"
583
+ })
584
+ }, {
585
+ name: "1D",
586
+ label: Object(n.t)("days", {
587
+ context: "interval"
588
+ })
589
+ }, {
590
+ name: "1W",
591
+ label: Object(n.t)("weeks", {
592
+ context: "interval"
593
+ })
594
+ }, {
595
+ name: "1M",
596
+ label: Object(n.t)("months", {
597
+ context: "interval"
598
+ })
599
+ }];
600
+ },
601
+ cwLw: function cwLw(e, t, a) {
602
+ "use strict";
603
+
604
+ a.d(t, "a", function () {
605
+ return c;
606
+ });
607
+ var n = a("q1tI"),
608
+ i = a.n(n),
609
+ s = a("TSYQ"),
610
+ o = a.n(s),
611
+ l = a("ML8+"),
612
+ r = a("fioS");
613
+
614
+ function c(e) {
615
+ return i.a.createElement(i.a.Fragment, null, i.a.createElement("div", {
616
+ className: o()(e.className, r.summary),
617
+ onClick: function onClick() {
618
+ e.onStateChange && e.onStateChange(!e.open);
619
+ },
620
+ "data-open": e.open
621
+ }, e.summary, i.a.createElement(l.a, {
622
+ className: r.caret,
623
+ dropped: Boolean(e.open)
624
+ })), e.open && e.children);
625
+ }
626
+ },
627
+ fD7T: function fD7T(e, t) {
628
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><g fill="none" stroke="currentColor"><path stroke-dasharray="1,1" d="M4 14.5h22"/><path stroke-linecap="round" stroke-linejoin="round" d="M7.5 12.5l2-4 1 2 2-4 3 6"/><path stroke-linecap="round" d="M5.5 16.5l-1 2"/><path stroke-linecap="round" stroke-linejoin="round" d="M17.5 16.5l2 4 2-4m2-4l1-2-1 2z"/></g></svg>';
629
+ },
630
+ fESK: function fESK(e, t, a) {
631
+ e.exports = {
632
+ labelRow: "labelRow-2noQNU_F",
633
+ toolbox: "toolbox-2noQNU_F",
634
+ description: "description-2noQNU_F",
635
+ descriptionTabletSmall: "descriptionTabletSmall-2noQNU_F",
636
+ item: "item-2noQNU_F",
637
+ titleItem: "titleItem-2noQNU_F",
638
+ titleItemTabletSmall: "titleItemTabletSmall-2noQNU_F",
639
+ itemTabletSmall: "itemTabletSmall-2noQNU_F",
640
+ itemLabelTabletSmall: "itemLabelTabletSmall-2noQNU_F",
641
+ wrap: "wrap-2noQNU_F",
642
+ hovered: "hovered-2noQNU_F"
643
+ };
644
+ },
645
+ fEjm: function fEjm(e, t, a) {
646
+ e.exports = {
647
+ favorite: "favorite-I_fAY9V2",
648
+ disabled: "disabled-I_fAY9V2",
649
+ active: "active-I_fAY9V2",
650
+ checked: "checked-I_fAY9V2"
651
+ };
652
+ },
653
+ fioS: function fioS(e, t, a) {
654
+ e.exports = {
655
+ summary: "summary-3UYGeClB",
656
+ hovered: "hovered-3UYGeClB",
657
+ caret: "caret-3UYGeClB"
658
+ };
659
+ },
660
+ gla1: function gla1(e, t, a) {
661
+ "use strict";
662
+
663
+ a.d(t, "a", function () {
664
+ return i;
665
+ });
666
+ var n = a("q1tI");
667
+
668
+ const i = () => {
669
+ const [, e] = Object(n.useReducer)((e, t) => e + 1, 0);
670
+ return e;
671
+ };
672
+ },
673
+ "i/MG": function iMG(e, t, a) {
674
+ "use strict";
675
+
676
+ a.d(t, "a", function () {
677
+ return c;
678
+ });
679
+ a("YFKU");
680
+ var n = a("q1tI"),
681
+ i = a("TSYQ"),
682
+ s = a("Iivm"),
683
+ o = a("To8B"),
684
+ l = a("kXJy");
685
+ const r = {
686
+ remove: window.t("Remove")
687
+ };
688
+
689
+ function c(e) {
690
+ const {
691
+ className: t,
692
+ isActive: a,
693
+ onClick: c,
694
+ title: h,
695
+ hidden: d,
696
+ "data-name": u = "remove-button"
697
+ } = e,
698
+ m = _objectWithoutProperties(e, _excluded2);
699
+
700
+ return n.createElement(s.a, _objectSpread(_objectSpread({}, m), {}, {
701
+ "data-name": u,
702
+ className: i(l.button, "apply-common-tooltip", a && l.active, d && l.hidden, t),
703
+ icon: o,
704
+ onClick: c,
705
+ title: h || r.remove
706
+ }));
707
+ }
708
+ },
709
+ jKyl: function jKyl(e, t) {
710
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28"><g fill="none"><path stroke="currentColor" d="M11 20.5H7.5a5 5 0 1 1 .42-9.98 7.5 7.5 0 0 1 14.57 2.1 4 4 0 0 1-1 7.877H18"/><path stroke="currentColor" d="M14.5 24V12.5M11 16l3.5-3.5L18 16"/></g></svg>';
711
+ },
712
+ kXJy: function kXJy(e, t, a) {
713
+ e.exports = {
714
+ button: "button-3B9fDLtm",
715
+ disabled: "disabled-3B9fDLtm",
716
+ active: "active-3B9fDLtm",
717
+ hidden: "hidden-3B9fDLtm"
718
+ };
719
+ },
720
+ "koZ+": function koZ(e, t) {
721
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="currentColor"><path fill-rule="evenodd" clip-rule="evenodd" d="M11.118 6a.5.5 0 0 0-.447.276L9.809 8H5.5A1.5 1.5 0 0 0 4 9.5v10A1.5 1.5 0 0 0 5.5 21h16a1.5 1.5 0 0 0 1.5-1.5v-10A1.5 1.5 0 0 0 21.5 8h-4.309l-.862-1.724A.5.5 0 0 0 15.882 6h-4.764zm-1.342-.17A1.5 1.5 0 0 1 11.118 5h4.764a1.5 1.5 0 0 1 1.342.83L17.809 7H21.5A2.5 2.5 0 0 1 24 9.5v10a2.5 2.5 0 0 1-2.5 2.5h-16A2.5 2.5 0 0 1 3 19.5v-10A2.5 2.5 0 0 1 5.5 7h3.691l.585-1.17z"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5 18a3.5 3.5 0 1 0 0-7 3.5 3.5 0 0 0 0 7zm0 1a4.5 4.5 0 1 0 0-9 4.5 4.5 0 0 0 0 9z"/></svg>';
722
+ },
723
+ lAXe: function lAXe(e, t) {
724
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 21 21" width="21" height="21"><g fill="none" stroke="currentColor"><path d="M18.5 11v5.5a2 2 0 0 1-2 2h-13a2 2 0 0 1-2-2v-13a2 2 0 0 1 2-2H9"/><path stroke-linecap="square" d="M18 2l-8.5 8.5m4-9h5v5"/></g></svg>';
725
+ },
726
+ miV2: function miV2(e, t, a) {
727
+ "use strict";
728
+
729
+ a.r(t);
730
+ var n = a("Kxc7"),
731
+ i = a("q1tI"),
732
+ s = a.n(i),
733
+ o = a("17x9"),
734
+ l = a("dfhE"),
735
+ r = a("EsZh"),
736
+ c = a("pr86"),
737
+ h = a("Iivm"),
738
+ d = a("N5tr"),
739
+ u = a("82wv"),
740
+ m = a("TSYQ"),
741
+ v = a.n(m),
742
+ p = a("UJ4t");
743
+
744
+ class b extends i.PureComponent {
745
+ render() {
746
+ const _this$props2 = this.props,
747
+ {
748
+ children: e,
749
+ className: t
750
+ } = _this$props2,
751
+ a = _objectWithoutProperties(_this$props2, _excluded3);
752
+
753
+ return i.createElement("div", _objectSpread({
754
+ className: m(t, p.wrap)
755
+ }, a), e);
756
+ }
757
+
758
+ }
759
+
760
+ var g = a("tU7i"),
761
+ S = a("ijHL"),
762
+ w = a("HBiQ");
763
+
764
+ class C extends i.PureComponent {
765
+ constructor() {
766
+ super(...arguments), this._handleClick = () => {
767
+ const {
768
+ onClick: e,
769
+ onClickArg: t
770
+ } = this.props;
771
+ e && e(t);
772
+ };
773
+ }
774
+
775
+ render() {
776
+ const {
777
+ isFirst: e,
778
+ isLast: t,
779
+ hint: a,
780
+ text: n,
781
+ icon: s,
782
+ isActive: o,
783
+ isDisabled: l,
784
+ className: r
785
+ } = this.props,
786
+ c = Object(S.b)(this.props);
787
+ return i.createElement(g.b, _objectSpread(_objectSpread({}, c), {}, {
788
+ icon: s,
789
+ text: n,
790
+ title: a,
791
+ isDisabled: l,
792
+ isActive: o,
793
+ isGrouped: !0,
794
+ onClick: this._handleClick,
795
+ className: m(r, w.button, {
796
+ [w.first]: e,
797
+ [w.last]: t
798
+ })
799
+ }));
800
+ }
801
+
802
+ }
803
+
804
+ var f = a("KKsp"),
805
+ _ = a("/KDZ"),
806
+ y = a("uhCe"),
807
+ k = a("dhVi"),
808
+ x = a("1TxM"),
809
+ E = a("YEs3");
810
+
811
+ const O = {
812
+ 0: window.t("Bars"),
813
+ 1: window.t("Candles"),
814
+ 9: window.t("Hollow Candles"),
815
+ 8: window.t("Heikin Ashi"),
816
+ 2: window.t("Line"),
817
+ 3: window.t("Area"),
818
+ 10: window.t("Baseline"),
819
+ 12: window.t("High-Low")
820
+ };
821
+ const M = {
822
+ barsStyle: window.t("Bar's Style"),
823
+ labels: O
824
+ },
825
+ T = Object(x.b)();
826
+
827
+ class N extends i.PureComponent {
828
+ constructor(e, t) {
829
+ super(e, t), this._handleChangeStyle = e => {
830
+ const {
831
+ favorites: t,
832
+ lastSelectedNotFavorite: a,
833
+ activeStyle: n
834
+ } = this.state;
835
+ this.setState({
836
+ activeStyle: e,
837
+ lastSelectedNotFavorite: t.includes(n) ? a : n
838
+ });
839
+ }, this._handleSelectStyle = e => {
840
+ const {
841
+ chartWidgetCollection: t
842
+ } = this.context;
843
+ e !== t.activeChartStyle.value() && t.setChartStyleToWidget(e);
844
+ }, this._handleClickFavorite = e => {
845
+ this._isStyleFavorited(e) ? this._handleRemoveFavorite(e) : this._handleAddFavorite(e);
846
+ }, Object(x.c)(t, {
847
+ chartWidgetCollection: o.any.isRequired,
848
+ favoriteChartStylesService: o.any.isRequired
849
+ });
850
+ const {
851
+ chartWidgetCollection: a,
852
+ favoriteChartStylesService: i
853
+ } = t,
854
+ s = a.activeChartStyle.value(),
855
+ l = i.get();
856
+ n.enabled("japanese_chart_styles"), this.state = {
857
+ activeStyle: s,
858
+ favorites: l,
859
+ styles: [0, 1, 9, 2, 3, 10],
860
+ japaneseStyles: [8]
861
+ };
862
+ n.enabled("chart_style_hilo") && this.state.styles.push(12);
863
+ }
864
+
865
+ componentDidMount() {
866
+ const {
867
+ chartWidgetCollection: e,
868
+ favoriteChartStylesService: t
869
+ } = this.context;
870
+ e.activeChartStyle.subscribe(this._handleChangeStyle), t.getOnChange().subscribe(this, this._handleChangeSettings);
871
+ }
872
+
873
+ componentWillUnmount() {
874
+ const {
875
+ chartWidgetCollection: e,
876
+ favoriteChartStylesService: t
877
+ } = this.context;
878
+ e.activeChartStyle.unsubscribe(this._handleChangeStyle), t.getOnChange().unsubscribe(this, this._handleChangeSettings);
879
+ }
880
+
881
+ render() {
882
+ const {
883
+ isShownQuicks: e,
884
+ displayMode: t = "full",
885
+ id: a
886
+ } = this.props,
887
+ {
888
+ activeStyle: n,
889
+ favorites: s,
890
+ styles: o,
891
+ japaneseStyles: c,
892
+ lastSelectedNotFavorite: d
893
+ } = this.state,
894
+ m = "small" !== t && e && 0 !== s.length,
895
+ v = [...s];
896
+ v.includes(n) ? void 0 !== d && v.push(d) : v.push(n);
897
+ const p = m && v.length > 1;
898
+ return i.createElement(_.a, {
899
+ rule: y.a.TabletSmall
900
+ }, e => {
901
+ const t = o.map(t => this._renderPopupMenuItem(t, t === n, e)),
902
+ s = c.map(t => this._renderPopupMenuItem(t, t === n, e));
903
+ return i.createElement(b, {
904
+ id: a
905
+ }, p && v.map((e, t) => i.createElement(C, {
906
+ className: E.button,
907
+ icon: r.SERIES_ICONS[e],
908
+ isActive: m && n === e,
909
+ key: t,
910
+ hint: M.labels[e],
911
+ isFirst: 0 === t,
912
+ isLast: t === v.length - 1,
913
+ onClick: m ? this._handleSelectStyle : void 0,
914
+ onClickArg: e,
915
+ "data-value": l.STYLE_SHORT_NAMES[e]
916
+ })), i.createElement(u.a, {
917
+ arrow: Boolean(p),
918
+ content: p ? void 0 : i.createElement(b, null, i.createElement(h.a, {
919
+ icon: r.SERIES_ICONS[n]
920
+ })),
921
+ title: p ? M.barsStyle : M.labels[n],
922
+ className: E.menu,
923
+ isDrawer: e
924
+ }, t, !!s.length && i.createElement(f.a, null), s));
925
+ });
926
+ }
927
+
928
+ _renderPopupMenuItem(e, t, a) {
929
+ const {
930
+ isFavoritingAllowed: n
931
+ } = this.props,
932
+ s = this._isStyleFavorited(e);
933
+
934
+ return i.createElement(d.b, {
935
+ key: e,
936
+ theme: a ? k.a : void 0,
937
+ icon: r.SERIES_ICONS[e],
938
+ isActive: t,
939
+ label: M.labels[e] || "",
940
+ onClick: this._handleSelectStyle,
941
+ onClickArg: e,
942
+ showToolboxOnHover: !s,
943
+ toolbox: n && i.createElement(c.a, {
944
+ isActive: t,
945
+ isFilled: s,
946
+ onClick: () => this._handleClickFavorite(e)
947
+ }),
948
+ "data-value": l.STYLE_SHORT_NAMES[e]
949
+ });
950
+ }
951
+
952
+ _handleChangeSettings(e) {
953
+ this.setState({
954
+ lastSelectedNotFavorite: void 0,
955
+ favorites: e
956
+ });
957
+ }
958
+
959
+ _isStyleFavorited(e) {
960
+ return -1 !== this.state.favorites.indexOf(e);
961
+ }
962
+
963
+ _handleAddFavorite(e) {
964
+ const {
965
+ favorites: t
966
+ } = this.state,
967
+ {
968
+ favoriteChartStylesService: a
969
+ } = this.context;
970
+ a.set([...t, e]);
971
+ }
972
+
973
+ _handleRemoveFavorite(e) {
974
+ const {
975
+ favorites: t
976
+ } = this.state,
977
+ {
978
+ favoriteChartStylesService: a
979
+ } = this.context;
980
+ a.set(t.filter(t => t !== e));
981
+ }
982
+
983
+ }
984
+
985
+ N.contextType = T;
986
+ var R = a("YFKU"),
987
+ I = a("1Tx8");
988
+ const A = ["medium", "small"];
989
+
990
+ function j(e) {
991
+ const {
992
+ text: t,
993
+ className: a,
994
+ displayMode: n,
995
+ collapseWhen: s = A
996
+ } = e,
997
+ o = _objectWithoutProperties(e, _excluded4),
998
+ l = !s.includes(n);
999
+
1000
+ return i.createElement(g.b, _objectSpread(_objectSpread({}, o), {}, {
1001
+ text: l ? t : void 0,
1002
+ className: m(a, I.button, l ? I.withText : I.withoutText)
1003
+ }));
1004
+ }
1005
+
1006
+ var F = a("JWMC"),
1007
+ H = a("RYBj");
1008
+ const z = {
1009
+ compare: window.t("Compare"),
1010
+ compareOrAddSymbol: window.t("Compare or Add Symbol")
1011
+ },
1012
+ L = Object(x.b)();
1013
+
1014
+ class W extends i.PureComponent {
1015
+ constructor(e, t) {
1016
+ super(e, t), this._updateState = e => {
1017
+ this.setState({
1018
+ isActive: e
1019
+ });
1020
+ }, this._handleClick = () => {
1021
+ var e;
1022
+ Object(F.trackEvent)("GUI", "Chart Header Toolbar", "compare"), null === (e = this._compareDialogRenderer) || void 0 === e || e.show();
1023
+ }, Object(x.c)(t, {
1024
+ chartWidgetCollection: o.any.isRequired
1025
+ }), this.state = {
1026
+ isActive: !1
1027
+ }, this._compareDialogRenderer = this.context.chartWidgetCollection.getCompareDialogRenderer();
1028
+ }
1029
+
1030
+ componentDidMount() {
1031
+ var e;
1032
+ null === (e = this._compareDialogRenderer) || void 0 === e || e.visible().subscribe(this._updateState);
1033
+ }
1034
+
1035
+ componentWillUnmount() {
1036
+ var e;
1037
+ null === (e = this._compareDialogRenderer) || void 0 === e || e.visible().unsubscribe(this._updateState);
1038
+ }
1039
+
1040
+ render() {
1041
+ const {
1042
+ isActive: e
1043
+ } = this.state;
1044
+ return i.createElement(j, _objectSpread(_objectSpread({}, this.props), {}, {
1045
+ icon: H,
1046
+ isOpened: e,
1047
+ onClick: this._handleClick,
1048
+ text: z.compare,
1049
+ title: z.compareOrAddSymbol
1050
+ }));
1051
+ }
1052
+
1053
+ }
1054
+
1055
+ W.contextType = L;
1056
+ var D = a("p0W+"),
1057
+ P = a("GgvM");
1058
+ const U = {
1059
+ hint: window.t("Fullscreen mode")
1060
+ },
1061
+ V = Object(x.b)();
1062
+
1063
+ class B extends i.PureComponent {
1064
+ constructor(e, t) {
1065
+ super(e, t), this._handleClick = () => {
1066
+ const {
1067
+ chartWidgetCollection: e
1068
+ } = this.context;
1069
+ e.startFullscreen();
1070
+ }, Object(x.c)(t, {
1071
+ chartWidgetCollection: o.any.isRequired
1072
+ });
1073
+ }
1074
+
1075
+ render() {
1076
+ const {
1077
+ className: e,
1078
+ id: t
1079
+ } = this.props;
1080
+ return i.createElement(D.a, {
1081
+ id: t,
1082
+ icon: P,
1083
+ onClick: this._handleClick,
1084
+ title: U.hint,
1085
+ className: m(e)
1086
+ });
1087
+ }
1088
+
1089
+ }
1090
+
1091
+ B.contextType = V;
1092
+ var K = a("Eyy1"),
1093
+ Q = a("/DW5"),
1094
+ G = a("txPx");
1095
+ const X = Object(G.getLogger)("FavoritesInfo");
1096
+
1097
+ function q(e, t) {
1098
+ if (0 === e.length) return Promise.resolve([]);
1099
+ X.logNormal("Requesting favorites info");
1100
+ const a = [],
1101
+ n = new Map(),
1102
+ i = new Map(),
1103
+ s = new Map();
1104
+ return e.forEach(e => {
1105
+ switch (e.type) {
1106
+ case "java":
1107
+ s.set(e.studyId, e);
1108
+ break;
1109
+
1110
+ case "pine":
1111
+ isPublishedPineId(e.pineId) ? n.set(e.pineId, e) : i.set(e.pineId, e);
1112
+ break;
1113
+
1114
+ default:
1115
+ Object(K.assert)(!1, "unknown favorite type " + JSON.stringify(e));
1116
+ }
1117
+ }), 0 !== s.size && a.push(t.findAllJavaStudies().then(e => {
1118
+ const t = new Map();
1119
+
1120
+ for (const a of e) !a.is_hidden_study && s.has(a.id) && t.set(a.id, {
1121
+ name: a.description,
1122
+ localizedName: a.description_localized,
1123
+ studyMarketShittyObject: a
1124
+ });
1125
+
1126
+ return t;
1127
+ }).then(e => {
1128
+ const t = function (e, t) {
1129
+ const a = {
1130
+ items: [],
1131
+ notFoundItems: []
1132
+ };
1133
+ return e.forEach((e, n) => {
1134
+ const i = t.get(n);
1135
+ void 0 !== i ? a.items.push({
1136
+ item: e,
1137
+ info: i
1138
+ }) : a.notFoundItems.push(e);
1139
+ }), a;
1140
+ }(s, e);
1141
+
1142
+ if (0 !== t.notFoundItems.length) {
1143
+ const e = t.notFoundItems.map(e => e.studyId);
1144
+ X.logWarn("Cannot find java scripts: " + JSON.stringify(e));
1145
+ }
1146
+
1147
+ return t.items;
1148
+ })), Promise.all(a).then(e => (X.logNormal("Requesting favorites info finished"), e.reduce((e, t) => e.concat(t), [])));
1149
+ }
1150
+
1151
+ var J = a("CW80"),
1152
+ Y = a("mMWL"),
1153
+ Z = a("39J6"),
1154
+ $ = a("sHKj");
1155
+
1156
+ function ee(e) {
1157
+ return i.createElement("div", {
1158
+ className: m(e.className, $.title)
1159
+ }, e.children);
1160
+ }
1161
+
1162
+ var te = a("FQhm"),
1163
+ ae = a("XWsk"),
1164
+ ne = a("S0BX");
1165
+ const ie = {
1166
+ text: window.t("Indicators"),
1167
+ hint: n.enabled("study_dialog_fundamentals_economy_addons") ? window.t("Indicators & Strategies") : window.t("Indicators"),
1168
+ favorites: window.t("Favorites")
1169
+ },
1170
+ se = Object(Q.b)({
1171
+ keys: ["/"],
1172
+ text: "{0}"
1173
+ }),
1174
+ oe = Object(x.b)();
1175
+
1176
+ class le extends s.a.PureComponent {
1177
+ constructor(e, t) {
1178
+ super(e, t), this._promise = null, this._menu = s.a.createRef(), this._setActiveState = e => {
1179
+ this.setState({
1180
+ isActive: e
1181
+ });
1182
+ }, this._handleClick = () => {
1183
+ const {
1184
+ studyMarket: e
1185
+ } = this.props;
1186
+ this.setState({
1187
+ isActive: !0
1188
+ }, () => {
1189
+ e.visible().value() ? e.hide() : e.show();
1190
+ });
1191
+ }, this._handleSelectIndicator = e => {
1192
+ e = Object(K.ensureDefined)(e);
1193
+ const {
1194
+ chartWidgetCollection: t
1195
+ } = this.context;
1196
+
1197
+ if ("java" === e.type) {
1198
+ const t = Object(J.tryFindStudyLineToolNameByStudyId)(e.studyId);
1199
+ if (null !== t) return void Y.tool.setValue(t);
1200
+ }
1201
+
1202
+ t.activeChartWidget.value().insertStudy(e);
1203
+ }, this._handleFavoriteIndicatorsChange = () => {
1204
+ const {
1205
+ favoriteScriptsModel: e
1206
+ } = this.context,
1207
+ t = [...Object(K.ensureDefined)(e).favorites()];
1208
+ this.setState({
1209
+ favorites: t
1210
+ }), this._clearCache();
1211
+ }, this._handleMouseEnter = () => {
1212
+ this._prefetchFavorites();
1213
+ }, this._handleWrapClick = () => {
1214
+ this._prefetchFavorites();
1215
+ }, this._handleChangeActiveWidget = () => {
1216
+ this._clearCache();
1217
+ }, this._clearCache = () => {
1218
+ this._promise = null, this.setState({
1219
+ infos: []
1220
+ });
1221
+ }, this._handleScriptRenamed = e => {
1222
+ const {
1223
+ favoriteScriptsModel: t
1224
+ } = this.context;
1225
+ void 0 !== t && t.isFav(e.scriptIdPart) && this._clearCache();
1226
+ }, Object(x.c)(t, {
1227
+ favoriteScriptsModel: o.any,
1228
+ chartWidgetCollection: o.any.isRequired
1229
+ });
1230
+ const {
1231
+ favoriteScriptsModel: a
1232
+ } = t,
1233
+ n = void 0 !== a ? a.favorites() : [];
1234
+ this.state = {
1235
+ isActive: !1,
1236
+ isLoading: !1,
1237
+ favorites: n,
1238
+ infos: []
1239
+ };
1240
+ }
1241
+
1242
+ componentDidMount() {
1243
+ const {
1244
+ studyMarket: e
1245
+ } = this.props,
1246
+ {
1247
+ favoriteScriptsModel: t,
1248
+ chartWidgetCollection: a
1249
+ } = this.context;
1250
+ e.visible().subscribe(this._setActiveState), void 0 !== t && (t.favoritesChanged().subscribe(this, this._handleFavoriteIndicatorsChange), a.activeChartWidget.subscribe(this._handleChangeActiveWidget)), te.on("TVScriptRenamed", this._handleScriptRenamed, null);
1251
+ }
1252
+
1253
+ componentWillUnmount() {
1254
+ const {
1255
+ studyMarket: e
1256
+ } = this.props,
1257
+ {
1258
+ favoriteScriptsModel: t,
1259
+ chartWidgetCollection: a
1260
+ } = this.context;
1261
+ e.visible().unsubscribe(this._setActiveState), void 0 !== t && (t.favoritesChanged().unsubscribe(this, this._handleFavoriteIndicatorsChange), a.activeChartWidget.unsubscribe(this._handleChangeActiveWidget)), te.unsubscribe("TVScriptRenamed", this._handleScriptRenamed, null), this._promise = null;
1262
+ }
1263
+
1264
+ render() {
1265
+ const {
1266
+ isActive: e,
1267
+ favorites: t,
1268
+ isLoading: a
1269
+ } = this.state,
1270
+ {
1271
+ className: n,
1272
+ displayMode: i,
1273
+ id: o
1274
+ } = this.props,
1275
+ {
1276
+ chartWidgetCollection: l
1277
+ } = this.context;
1278
+ return s.a.createElement(b, {
1279
+ id: o,
1280
+ onMouseEnter: this._handleMouseEnter,
1281
+ onClick: this._handleWrapClick
1282
+ }, s.a.createElement(j, {
1283
+ displayMode: i,
1284
+ className: n,
1285
+ icon: ae,
1286
+ isOpened: e,
1287
+ onClick: this._handleClick,
1288
+ text: ie.text,
1289
+ title: ie.hint,
1290
+ "data-role": "button",
1291
+ "data-name": "open-indicators-dialog",
1292
+ "data-tooltip-hotkey": se
1293
+ }), t.length > 0 && s.a.createElement(_.a, {
1294
+ rule: "screen and (max-width: 428px)"
1295
+ }, e => s.a.createElement(u.a, {
1296
+ key: l.activeChartWidget.value().id(),
1297
+ arrow: !0,
1298
+ closeOnClickOutside: !0,
1299
+ isDrawer: e,
1300
+ drawerPosition: "Bottom",
1301
+ title: ie.favorites,
1302
+ ref: this._menu,
1303
+ "data-name": "show-favorite-indicators"
1304
+ }, s.a.createElement("div", {
1305
+ className: v()(ne.dropdown, e && ne.smallWidthWrapper)
1306
+ }, s.a.createElement(ee, {
1307
+ className: e && ne.smallWidthTitle
1308
+ }, window.t("Favorite Indicators")), a && s.a.createElement(Z.a, null), !a && s.a.createElement(s.a.Fragment, null, this.state.infos.length > 0 ? this.state.infos.map(t => s.a.createElement(d.b, {
1309
+ className: v()(e && ne.smallWidthMenuItem),
1310
+ theme: e ? k.a : void 0,
1311
+ key: "java" === t.item.type ? t.item.studyId : t.item.pineId,
1312
+ onClick: this._handleSelectIndicator,
1313
+ onClickArg: t.item,
1314
+ label: s.a.createElement("span", {
1315
+ className: v()(!e && ne.label, e && ne.smallWidthLabel, "apply-overflow-tooltip")
1316
+ }, re(t))
1317
+ })) : null !== this._promise && s.a.createElement(d.b, {
1318
+ isDisabled: !0,
1319
+ label: window.t("You have no Favorites Indicators yet")
1320
+ }))))));
1321
+ }
1322
+
1323
+ _prefetchFavorites() {
1324
+ const {
1325
+ chartWidgetCollection: e
1326
+ } = this.context;
1327
+ if (null !== this._promise || !window.is_authenticated) return;
1328
+ const t = e.activeChartWidget.value();
1329
+ if (!t.hasModel()) return;
1330
+ const a = t.model().model().studyMetaInfoRepository();
1331
+ this.setState({
1332
+ isLoading: !0
1333
+ });
1334
+ const n = this._promise = q(this.state.favorites, a).then(e => {
1335
+ if (n !== this._promise) return;
1336
+ e = [...e].sort((e, t) => re(e).localeCompare(re(t))), this.setState({
1337
+ infos: e,
1338
+ isLoading: !1
1339
+ }, () => {
1340
+ this._menu.current && this._menu.current.update();
1341
+ });
1342
+ });
1343
+ }
1344
+
1345
+ }
1346
+
1347
+ function re(e) {
1348
+ return e.info.localizedName || Object(R.t)(e.info.name, {
1349
+ context: "study"
1350
+ });
1351
+ }
1352
+
1353
+ le.contextType = oe;
1354
+ var ce = a("PT1i"),
1355
+ he = a("pPtI"),
1356
+ de = a("LxhU"),
1357
+ ue = a("4hTN");
1358
+
1359
+ function me(e) {
1360
+ return i.createElement("div", {
1361
+ className: m(ue.value, {
1362
+ [ue.selected]: e.isSelected
1363
+ })
1364
+ }, e.value, e.metric);
1365
+ }
1366
+
1367
+ var ve = a("9dlw"),
1368
+ pe = a("ML8+"),
1369
+ be = a("cSDC"),
1370
+ ge = a("CX26");
1371
+
1372
+ class Se extends i.PureComponent {
1373
+ constructor(e) {
1374
+ super(e), this._timeMenu = null, this._setMenuRef = e => {
1375
+ this._timeMenu = e;
1376
+ }, this._handleChangeInput = e => {
1377
+ const {
1378
+ value: t
1379
+ } = e.currentTarget;
1380
+ /^[0-9]*$/.test(t) && this.setState({
1381
+ inputValue: t
1382
+ });
1383
+ }, this._handleSelectTime = e => {
1384
+ this.setState({
1385
+ selectedTime: e
1386
+ }), this._closeMenu();
1387
+ }, this._handleClickAdd = () => {
1388
+ const {
1389
+ inputValue: e,
1390
+ selectedTime: t
1391
+ } = this.state;
1392
+ this.props.onAdd(e, t);
1393
+ }, this._toggleMenu = () => {
1394
+ this.state.isOpenedMenu ? this._closeMenu() : this._openMenu();
1395
+ }, this._closeMenu = () => {
1396
+ this.props.onCloseMenu(), this.setState({
1397
+ isOpenedMenu: !1
1398
+ });
1399
+ }, this._openMenu = () => {
1400
+ this.props.onOpenMenu(), this.setState({
1401
+ isOpenedMenu: !0
1402
+ });
1403
+ }, this._getMenuPosition = () => {
1404
+ const e = Object(K.ensureNotNull)(this._timeMenu).getBoundingClientRect();
1405
+ return {
1406
+ overrideWidth: e.width,
1407
+ x: e.left,
1408
+ y: e.bottom + 1
1409
+ };
1410
+ }, this.state = {
1411
+ inputValue: "1",
1412
+ isOpenedMenu: !1,
1413
+ selectedTime: be.a[0].name
1414
+ };
1415
+ }
1416
+
1417
+ render() {
1418
+ const {
1419
+ inputValue: e,
1420
+ isOpenedMenu: t,
1421
+ menuWidth: a,
1422
+ selectedTime: n
1423
+ } = this.state;
1424
+ return i.createElement("div", {
1425
+ className: m(ge.form, {
1426
+ [ge.interacting]: t
1427
+ })
1428
+ }, i.createElement("input", {
1429
+ className: ge.input,
1430
+ maxLength: 7,
1431
+ onChange: this._handleChangeInput,
1432
+ value: e
1433
+ }), i.createElement("div", {
1434
+ className: ge.menu,
1435
+ onClick: this._toggleMenu,
1436
+ ref: this._setMenuRef
1437
+ }, be.a.find(e => e.name === n).label, i.createElement(pe.a, {
1438
+ dropped: t
1439
+ })), i.createElement("div", {
1440
+ className: ge.add,
1441
+ onClick: this._handleClickAdd
1442
+ }, Object(R.t)("Add")), i.createElement(ve.a, {
1443
+ doNotCloseOn: this,
1444
+ isOpened: t,
1445
+ minWidth: a,
1446
+ onClose: this._closeMenu,
1447
+ position: this._getMenuPosition
1448
+ }, be.a.map(e => i.createElement(d.b, {
1449
+ dontClosePopup: !0,
1450
+ key: e.name,
1451
+ label: e.label,
1452
+ onClick: this._handleSelectTime,
1453
+ onClickArg: e.name
1454
+ }))));
1455
+ }
1456
+
1457
+ }
1458
+
1459
+ var we = a("i/MG"),
1460
+ Ce = a("8d0Q"),
1461
+ fe = a("8+VR"),
1462
+ _e = a("uPhS");
1463
+
1464
+ function ye(e) {
1465
+ const {
1466
+ interval: t,
1467
+ hint: a,
1468
+ isActive: n,
1469
+ isDisabled: o,
1470
+ isFavorite: l,
1471
+ isSignaling: r,
1472
+ onClick: h,
1473
+ onClickRemove: u,
1474
+ onClickFavorite: m,
1475
+ isSmallTablet: p
1476
+ } = e,
1477
+ b = Object(S.b)(e),
1478
+ [g, w] = Object(Ce.c)(),
1479
+ C = s.a.useCallback(() => u(t), [u, t]),
1480
+ f = s.a.useCallback(() => m(t), [m, t]),
1481
+ _ = Object(i.useRef)(null);
1482
+
1483
+ return Object(i.useEffect)(() => {
1484
+ var e;
1485
+ r && p && (null === (e = _.current) || void 0 === e || e.scrollIntoView());
1486
+ }, [r, p]), s.a.createElement("div", _objectSpread(_objectSpread({}, w), {}, {
1487
+ ref: _
1488
+ }), s.a.createElement(d.b, _objectSpread(_objectSpread({}, b), {}, {
1489
+ className: v()(p && _e.smallWidthMenuItem),
1490
+ theme: p ? k.a : void 0,
1491
+ isActive: n,
1492
+ isDisabled: o,
1493
+ isHovered: r,
1494
+ onClick: h,
1495
+ onClickArg: t,
1496
+ toolbox: function () {
1497
+ const {
1498
+ isRemovable: t,
1499
+ isFavoritingAllowed: a
1500
+ } = e,
1501
+ i = s.a.createElement(we.a, {
1502
+ key: "remove",
1503
+ isActive: n,
1504
+ hidden: !fe.touch && !g,
1505
+ onClick: C
1506
+ }),
1507
+ r = s.a.createElement(c.a, {
1508
+ key: "favorite",
1509
+ isActive: n,
1510
+ isFilled: l,
1511
+ onClick: f
1512
+ });
1513
+ return [t && i, !o && a && r];
1514
+ }(),
1515
+ showToolboxOnHover: !l,
1516
+ label: a
1517
+ })));
1518
+ }
1519
+
1520
+ const ke = {
1521
+ [de.ResolutionKind.Ticks]: window.t("Ticks", {
1522
+ context: "interval_group_name"
1523
+ }),
1524
+ [de.ResolutionKind.Seconds]: window.t("Seconds", {
1525
+ context: "interval_group_name"
1526
+ }),
1527
+ [de.ResolutionKind.Minutes]: window.t("Minutes", {
1528
+ context: "interval_group_name"
1529
+ }),
1530
+ [de.SpecialResolutionKind.Hours]: window.t("Hours", {
1531
+ context: "interval_group_name"
1532
+ }),
1533
+ [de.ResolutionKind.Days]: window.t("Days", {
1534
+ context: "interval_group_name"
1535
+ }),
1536
+ [de.ResolutionKind.Weeks]: window.t("Weeks", {
1537
+ context: "interval_group_name"
1538
+ }),
1539
+ [de.ResolutionKind.Months]: window.t("Months", {
1540
+ context: "interval_group_name"
1541
+ }),
1542
+ [de.ResolutionKind.Range]: window.t("Ranges", {
1543
+ context: "interval_group_name"
1544
+ }),
1545
+ [de.ResolutionKind.Invalid]: ""
1546
+ };
1547
+
1548
+ function xe(e) {
1549
+ let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
1550
+ return {
1551
+ id: e,
1552
+ name: ke[e],
1553
+ items: [],
1554
+ mayOmitSeparator: t
1555
+ };
1556
+ }
1557
+
1558
+ var Ee = a("cwLw"),
1559
+ Oe = a("aIyQ"),
1560
+ Me = a.n(Oe),
1561
+ Te = a("X0gx"),
1562
+ Ne = a("tWVy"),
1563
+ Re = a("aVq2");
1564
+ const Ie = {
1565
+ openDialog: Object(R.t)("Open Interval Dialog"),
1566
+ timeInterval: Object(R.t)("Time Interval")
1567
+ },
1568
+ Ae = Object(Q.b)({
1569
+ keys: [","],
1570
+ text: Object(R.t)("Number or {hotKey_0}")
1571
+ }),
1572
+ je = Object(x.b)(),
1573
+ Fe = new Me.a(),
1574
+ He = s.a.lazy(async () => ({
1575
+ default: (await Promise.all([a.e(3), a.e(8), a.e(9), a.e(16), a.e(17), a.e(23), a.e(35), a.e(91), a.e(2), a.e(15), a.e(31), a.e("custom-intervals-add-dialog")]).then(a.bind(null, "w9vS"))).ToolWidgetIntervalsAddDialog
1576
+ }));
1577
+
1578
+ function ze(e) {
1579
+ {
1580
+ const t = de.Interval.parse(e);
1581
+ if (!Object(he.isSecondsEnabled)() && t.isSeconds()) return !1;
1582
+ if (!Object(he.isTicksEnabled)() && t.isTicks()) return !1;
1583
+ }
1584
+ return !0;
1585
+ }
1586
+
1587
+ class Le extends s.a.PureComponent {
1588
+ constructor(e, t) {
1589
+ super(e, t), this._menu = s.a.createRef(), this._renderChildren = (e, t) => [...this._createMenuItems(e, t), ...this._createIntervalForm(t)], this._handleChangeInterval = e => {
1590
+ const {
1591
+ activeInterval: t,
1592
+ lastNotQuicked: a
1593
+ } = this.state,
1594
+ n = this._getQuicks();
1595
+
1596
+ this.setState({
1597
+ activeInterval: Object(he.normalizeIntervalString)(e),
1598
+ lastNotQuicked: void 0 === t || n.includes(t) ? a : t
1599
+ });
1600
+ }, this._bindedForceUpdate = () => {
1601
+ this.forceUpdate();
1602
+ }, this._handleCloseMenu = () => {
1603
+ this.setState({
1604
+ isOpenedFormMenu: !1
1605
+ });
1606
+ }, this._handleOpenMenu = () => {
1607
+ this.setState({
1608
+ isOpenedFormMenu: !0
1609
+ });
1610
+ }, this._handleSelectInterval = e => {
1611
+ void 0 !== e && e !== ce.linking.interval.value() && this.context.chartWidgetCollection.setResolution(e), e && Object(F.trackEvent)("GUI", "Time Interval", e);
1612
+ }, this._handleClickFavorite = e => {
1613
+ e = Object(K.ensureDefined)(e), this._isIntervalFavorite(e) ? this._handleRemoveFavorite(e) : this._handleAddFavorite(e);
1614
+ }, this._handleAddFavorite = e => {
1615
+ const {
1616
+ favorites: t
1617
+ } = this.state;
1618
+ this.context.favoriteIntervalsService.set([...t, e]);
1619
+ }, this._handleRemoveFavorite = e => {
1620
+ const {
1621
+ favorites: t
1622
+ } = this.state;
1623
+ this.context.favoriteIntervalsService.set(t.filter(t => t !== e));
1624
+ }, this._handleAddInterval = (e, t) => {
1625
+ const {
1626
+ intervalService: a
1627
+ } = this.context,
1628
+ n = a.add(e, t);
1629
+ n && this.setState({
1630
+ lastAddedInterval: n
1631
+ });
1632
+ }, this._handleRemoveInterval = e => {
1633
+ const {
1634
+ intervalService: t
1635
+ } = this.context;
1636
+ e && (t.remove(e), this._handleRemoveFavorite(e));
1637
+ }, this._getHandleSectionStateChange = e => t => {
1638
+ const {
1639
+ menuViewState: a
1640
+ } = this.state,
1641
+ {
1642
+ intervalsMenuViewStateService: n
1643
+ } = this.context;
1644
+ n.set(_objectSpread(_objectSpread({}, a), {}, {
1645
+ [e]: !t
1646
+ }));
1647
+ }, this._handleOpenAddIntervalDialog = () => {
1648
+ this.setState({
1649
+ isAddIntervalDialogOpened: !0
1650
+ });
1651
+ }, this._handleCloseAddIntervalDialog = () => {
1652
+ this.setState({
1653
+ isAddIntervalDialogOpened: !1
1654
+ });
1655
+ }, this._handleGlobalClose = () => {
1656
+ const {
1657
+ isFake: e
1658
+ } = this.props,
1659
+ {
1660
+ isAddIntervalDialogOpened: t
1661
+ } = this.state;
1662
+ e || t || Fe.fire();
1663
+ }, Object(x.c)(t, {
1664
+ chartApiInstance: o.any.isRequired,
1665
+ favoriteIntervalsService: o.any.isRequired,
1666
+ intervalService: o.any.isRequired,
1667
+ intervalsMenuViewStateService: o.any.isRequired
1668
+ });
1669
+ const {
1670
+ chartApiInstance: a,
1671
+ favoriteIntervalsService: i,
1672
+ intervalService: l,
1673
+ intervalsMenuViewStateService: r
1674
+ } = t;
1675
+ this._customIntervals = n.enabled("custom_resolutions");
1676
+ const c = ce.linking.interval.value(),
1677
+ h = c && Object(he.normalizeIntervalString)(c),
1678
+ d = i.get(),
1679
+ u = l.getCustomIntervals(),
1680
+ m = r.get();
1681
+ this._defaultIntervals = a.defaultResolutions().filter(ze).map(he.normalizeIntervalString), this.state = {
1682
+ isOpenedFormMenu: !1,
1683
+ activeInterval: h,
1684
+ favorites: d,
1685
+ customs: u,
1686
+ menuViewState: m,
1687
+ isAddIntervalDialogOpened: !1
1688
+ };
1689
+ }
1690
+
1691
+ componentDidMount() {
1692
+ const {
1693
+ favoriteIntervalsService: e,
1694
+ intervalService: t,
1695
+ intervalsMenuViewStateService: a
1696
+ } = this.context;
1697
+ e.getOnChange().subscribe(this, this._handleChangeFavorites), a.getOnChange().subscribe(this, this._handleChangeMenuViewState), t.getOnChange().subscribe(this, this._handleChangeCustoms), ce.linking.interval.subscribe(this._handleChangeInterval), ce.linking.intraday.subscribe(this._bindedForceUpdate), ce.linking.seconds.subscribe(this._bindedForceUpdate), ce.linking.ticks.subscribe(this._bindedForceUpdate), ce.linking.supportedResolutions.subscribe(this._bindedForceUpdate), Ne.a.subscribe(this, this._handleGlobalClose);
1698
+ }
1699
+
1700
+ componentWillUnmount() {
1701
+ const {
1702
+ favoriteIntervalsService: e,
1703
+ intervalService: t,
1704
+ intervalsMenuViewStateService: a
1705
+ } = this.context;
1706
+ e.getOnChange().unsubscribe(this, this._handleChangeFavorites), a.getOnChange().unsubscribe(this, this._handleChangeMenuViewState), t.getOnChange().unsubscribe(this, this._handleChangeCustoms), ce.linking.interval.unsubscribe(this._handleChangeInterval), ce.linking.intraday.unsubscribe(this._bindedForceUpdate), ce.linking.seconds.unsubscribe(this._bindedForceUpdate), ce.linking.ticks.unsubscribe(this._bindedForceUpdate), ce.linking.supportedResolutions.unsubscribe(this._bindedForceUpdate), Ne.a.unsubscribe(this, this._handleGlobalClose);
1707
+ }
1708
+
1709
+ componentDidUpdate(e, t) {
1710
+ this.state.lastAddedInterval && setTimeout(() => this.setState({
1711
+ lastAddedInterval: void 0
1712
+ }), 400);
1713
+ }
1714
+
1715
+ render() {
1716
+ const {
1717
+ isShownQuicks: e,
1718
+ id: t
1719
+ } = this.props,
1720
+ {
1721
+ activeInterval: a,
1722
+ customs: n,
1723
+ lastNotQuicked: i,
1724
+ isAddIntervalDialogOpened: o
1725
+ } = this.state,
1726
+ l = this._getQuicks(),
1727
+ r = Object(he.sortResolutions)([...l]);
1728
+
1729
+ void 0 !== a && r.includes(a) ? void 0 !== i && r.push(i) : void 0 !== a && r.push(a);
1730
+ const c = (!(!e || 0 === l.length) || void 0) && r.length > 1,
1731
+ h = {},
1732
+ d = Object(he.mergeResolutions)(this._defaultIntervals, n);
1733
+ (void 0 !== a ? d.concat(a) : d).filter(he.isAvailable).forEach(e => h[e] = !0);
1734
+ const v = void 0 !== a ? Object(he.getTranslatedResolutionModel)(a) : null;
1735
+ return s.a.createElement(b, {
1736
+ id: t
1737
+ }, c && r.map((e, t) => {
1738
+ const n = Object(he.getTranslatedResolutionModel)(e);
1739
+ return s.a.createElement(C, {
1740
+ key: t,
1741
+ className: m(Re.button, {
1742
+ [Re.first]: 0 === t,
1743
+ [Re.last]: t === r.length - 1
1744
+ }),
1745
+ text: s.a.createElement(me, {
1746
+ value: n.mayOmitMultiplier ? void 0 : n.multiplier,
1747
+ metric: n.shortKind
1748
+ }),
1749
+ hint: n.hint,
1750
+ isActive: a === e,
1751
+ isDisabled: !h[e] && e !== i,
1752
+ onClick: this._handleSelectInterval,
1753
+ onClickArg: e,
1754
+ "data-value": e
1755
+ });
1756
+ }), s.a.createElement(_.a, {
1757
+ rule: y.a.TabletSmall
1758
+ }, e => s.a.createElement(s.a.Fragment, null, s.a.createElement(Te.a.Provider, {
1759
+ value: Fe
1760
+ }, s.a.createElement(u.a, {
1761
+ arrow: Boolean(c),
1762
+ closeOnClickOutside: !0,
1763
+ content: c || null === v ? void 0 : s.a.createElement(b, {
1764
+ className: Re.menuContent
1765
+ }, s.a.createElement(me, {
1766
+ value: v.mayOmitMultiplier ? void 0 : v.multiplier,
1767
+ metric: v.shortKind
1768
+ })),
1769
+ title: c || null === v ? Ie.timeInterval : v.hint,
1770
+ hotKey: c ? Ae : void 0,
1771
+ className: Re.menu,
1772
+ ref: this._menu,
1773
+ isDrawer: e
1774
+ }, s.a.createElement("div", {
1775
+ className: Re.dropdown
1776
+ }, this._renderChildren(d, e)))), e && o && s.a.createElement(s.a.Suspense, {
1777
+ fallback: null
1778
+ }, s.a.createElement(He, {
1779
+ onAdd: this._handleAddInterval,
1780
+ onClose: this._handleCloseAddIntervalDialog,
1781
+ onUnmount: this._handleCloseAddIntervalDialog
1782
+ })))));
1783
+ }
1784
+
1785
+ _createMenuItems(e, t) {
1786
+ const a = function (e) {
1787
+ const t = xe(de.ResolutionKind.Ticks),
1788
+ a = xe(de.ResolutionKind.Seconds),
1789
+ n = xe(de.ResolutionKind.Minutes),
1790
+ i = xe(de.SpecialResolutionKind.Hours),
1791
+ s = xe(de.ResolutionKind.Days),
1792
+ o = xe(de.ResolutionKind.Range);
1793
+ return e.forEach(e => {
1794
+ const l = de.Interval.parse(e);
1795
+ l.isMinuteHours() ? i.items.push(e) : l.isMinutes() ? Object(de.isHour)(Number(l.multiplier())) ? i.items.push(e) : n.items.push(e) : l.isSeconds() ? a.items.push(e) : l.isDWM() ? s.items.push(e) : l.isRange() ? o.items.push(e) : l.isTicks() && t.items.push(e);
1796
+ }), [t, a, n, i, s, o].filter(e => 0 !== e.items.length);
1797
+ }(e).map((e, a, n) => this._renderResolutionsGroup(e, 1 === n.length, t));
1798
+
1799
+ return function (e) {
1800
+ let t = !1;
1801
+ return e.filter((e, a, n) => {
1802
+ let i = !0;
1803
+ return e.type === f.a && (0 !== a && a !== n.length - 1 || (i = !1), t && (i = !1)), t = e.type === f.a, i;
1804
+ });
1805
+ }([].concat(...a));
1806
+ }
1807
+
1808
+ _createIntervalForm(e) {
1809
+ if (this._customIntervals) {
1810
+ const t = e ? s.a.createElement("div", {
1811
+ key: "add-dialog",
1812
+ className: Re.addCustomInterval,
1813
+ onClick: this._handleOpenAddIntervalDialog
1814
+ }, Object(R.t)("Add custom interval") + "…") : s.a.createElement(Se, {
1815
+ key: "add-form",
1816
+ onAdd: this._handleAddInterval,
1817
+ onCloseMenu: this._handleCloseMenu,
1818
+ onOpenMenu: this._handleOpenMenu
1819
+ });
1820
+ return [s.a.createElement(f.a, {
1821
+ key: "custom-interval-separator"
1822
+ }), t];
1823
+ }
1824
+
1825
+ return [];
1826
+ }
1827
+
1828
+ _renderResolutionsGroup(e) {
1829
+ let t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : !1;
1830
+ let a = arguments.length > 2 ? arguments[2] : undefined;
1831
+ const n = [],
1832
+ i = e.items.map(e => this._renderPopupMenuItem(e, a));
1833
+ if (t) n.push(...i);else if (a) {
1834
+ const t = s.a.createElement("div", {
1835
+ key: e.id
1836
+ }, s.a.createElement("div", {
1837
+ className: Re.smallTabletSectionTitle
1838
+ }, e.name), i);
1839
+ n.push(t);
1840
+ } else {
1841
+ const {
1842
+ intervalsMenuViewStateService: t
1843
+ } = this.context,
1844
+ {
1845
+ menuViewState: a
1846
+ } = this.state;
1847
+ if (!t.isAllowed(e.id)) return [];
1848
+ const o = s.a.createElement(Ee.a, {
1849
+ key: e.id,
1850
+ className: Re.section,
1851
+ summary: e.name,
1852
+ open: !a[e.id],
1853
+ onStateChange: this._getHandleSectionStateChange(e.id)
1854
+ }, i);
1855
+ n.push(o);
1856
+ }
1857
+ return (!e.mayOmitSeparator || e.items.length > 1) && (n.unshift(s.a.createElement(f.a, {
1858
+ key: "begin-" + e.name
1859
+ })), n.push(s.a.createElement(f.a, {
1860
+ key: "end-" + e.name
1861
+ }))), n;
1862
+ }
1863
+
1864
+ _handleChangeFavorites(e) {
1865
+ this.setState({
1866
+ lastNotQuicked: void 0,
1867
+ favorites: e
1868
+ });
1869
+ }
1870
+
1871
+ _handleChangeCustoms(e) {
1872
+ this.setState({
1873
+ customs: e
1874
+ });
1875
+ }
1876
+
1877
+ _handleChangeMenuViewState(e) {
1878
+ this.setState({
1879
+ menuViewState: e
1880
+ }, () => {
1881
+ this._menu.current && this._menu.current.update();
1882
+ });
1883
+ }
1884
+
1885
+ _renderPopupMenuItem(e, t) {
1886
+ const {
1887
+ isFavoritingAllowed: a
1888
+ } = this.props,
1889
+ {
1890
+ activeInterval: n,
1891
+ lastAddedInterval: i
1892
+ } = this.state,
1893
+ o = e === n,
1894
+ l = Object(he.isAvailable)(e),
1895
+ r = this._isIntervalFavorite(e),
1896
+ c = this._isIntervalDefault(e),
1897
+ h = Object(he.getTranslatedResolutionModel)(e);
1898
+
1899
+ return s.a.createElement(ye, {
1900
+ key: e,
1901
+ isSmallTablet: t,
1902
+ interval: e,
1903
+ hint: h.hint,
1904
+ isSignaling: i === e,
1905
+ isFavoritingAllowed: a,
1906
+ isDisabled: !l,
1907
+ isFavorite: r,
1908
+ isRemovable: !c,
1909
+ isActive: o,
1910
+ onClick: this._handleSelectInterval,
1911
+ onClickRemove: this._handleRemoveInterval,
1912
+ onClickFavorite: this._handleClickFavorite,
1913
+ "data-value": e
1914
+ });
1915
+ }
1916
+
1917
+ _isIntervalDefault(e) {
1918
+ return this._defaultIntervals.includes(e);
1919
+ }
1920
+
1921
+ _isIntervalFavorite(e) {
1922
+ return this.state.favorites.includes(e);
1923
+ }
1924
+
1925
+ _getQuicks(e) {
1926
+ return this.props.isShownQuicks && "small" !== this.props.displayMode ? void 0 === e ? this.state.favorites : e : [];
1927
+ }
1928
+
1929
+ }
1930
+
1931
+ Le.contextType = je;
1932
+ var We = a("sbT4"),
1933
+ De = a("lAXe");
1934
+ const Pe = {
1935
+ hint: window.t("Open chart in popup")
1936
+ },
1937
+ Ue = Object(x.b)();
1938
+
1939
+ class Ve extends i.PureComponent {
1940
+ constructor(e, t) {
1941
+ super(e, t), this._handleClick = () => {
1942
+ const {
1943
+ chartWidgetCollection: e,
1944
+ windowMessageService: t,
1945
+ isFundamental: a
1946
+ } = this.context,
1947
+ n = e.activeChartWidget.value();
1948
+ n.withModel(null, () => {
1949
+ t.post(parent, "openChartInPopup", {
1950
+ symbol: n.model().mainSeries().actualSymbol(),
1951
+ interval: n.model().mainSeries().interval(),
1952
+ fundamental: a
1953
+ });
1954
+ });
1955
+ }, Object(x.c)(t, {
1956
+ isFundamental: o.any,
1957
+ chartWidgetCollection: o.any.isRequired,
1958
+ windowMessageService: o.any.isRequired
1959
+ });
1960
+ }
1961
+
1962
+ render() {
1963
+ const {
1964
+ className: e
1965
+ } = this.props;
1966
+ return i.createElement(D.a, {
1967
+ className: m(e, We.button),
1968
+ icon: De,
1969
+ onClick: this._handleClick,
1970
+ title: Pe.hint
1971
+ });
1972
+ }
1973
+
1974
+ }
1975
+
1976
+ Ve.contextType = Ue;
1977
+ var Be = a("uafl");
1978
+ const Ke = {
1979
+ hint: window.t("Chart Properties")
1980
+ },
1981
+ Qe = Object(x.b)();
1982
+
1983
+ class Ge extends i.PureComponent {
1984
+ constructor(e, t) {
1985
+ super(e, t), this._handleClick = () => {
1986
+ const {
1987
+ chartWidgetCollection: e
1988
+ } = this.context,
1989
+ t = e.activeChartWidget.value();
1990
+ Object(F.trackEvent)("GUI", "Chart Header Toolbar", "chart properties"), t.showGeneralChartProperties();
1991
+ }, Object(x.c)(t, {
1992
+ chartWidgetCollection: o.any.isRequired
1993
+ });
1994
+ }
1995
+
1996
+ render() {
1997
+ return i.createElement(D.a, _objectSpread(_objectSpread({}, this.props), {}, {
1998
+ icon: Be,
1999
+ title: Ke.hint,
2000
+ onClick: this._handleClick
2001
+ }));
2002
+ }
2003
+
2004
+ }
2005
+
2006
+ Ge.contextType = Qe;
2007
+ var Xe = a("lxNp"),
2008
+ qe = (a("bSeV"), a("/3z9")),
2009
+ Je = a("//lZ"),
2010
+ Ye = a("9uLv"),
2011
+ Ze = a("nrMg");
2012
+ const $e = "M21.5 21.5h-14a5 5 0 1 1 .42-9.983 7.5 7.5 0 0 1 14.57 2.106 4.002 4.002 0 0 1-.99 7.877z",
2013
+ et = 13.08991081237793,
2014
+ tt = {
2015
+ strokeDashOffset: 49.242997817993164,
2016
+ strokeDash: 49.866326904296876,
2017
+ strokeGap: et,
2018
+ strokeDashCheck: 0
2019
+ },
2020
+ at = {
2021
+ strokeDashOffset: 62.956237716674806,
2022
+ strokeGap: 0,
2023
+ strokeDash: 62.956237716674806,
2024
+ strokeDashCheck: 200
2025
+ };
2026
+
2027
+ class nt extends i.PureComponent {
2028
+ constructor(e) {
2029
+ super(e), this.state = tt;
2030
+ }
2031
+
2032
+ componentDidMount() {
2033
+ "saved" === this.props.state ? this.setState(at) : this._goToNextState(this.props.state);
2034
+ }
2035
+
2036
+ componentWillUnmount() {
2037
+ this._currentAnimation = void 0;
2038
+ }
2039
+
2040
+ UNSAFE_componentWillReceiveProps(e) {
2041
+ this.props.state !== e.state && this._goToNextState(e.state);
2042
+ }
2043
+
2044
+ render() {
2045
+ const {
2046
+ strokeDashOffset: e,
2047
+ strokeDash: t,
2048
+ strokeGap: a,
2049
+ strokeDashCheck: n
2050
+ } = this.state,
2051
+ {
2052
+ className: s,
2053
+ size: o,
2054
+ onClick: l,
2055
+ state: r,
2056
+ isHovered: c = !1
2057
+ } = this.props,
2058
+ h = m(Ze.container, s, c && Ze.hovered, {
2059
+ [Ze.unsaved]: "unsaved" === r,
2060
+ [Ze.saving]: "saving" === r,
2061
+ [Ze.saved]: "saved" === r
2062
+ });
2063
+ return i.createElement("svg", {
2064
+ xmlns: "http://www.w3.org/2000/svg",
2065
+ className: h,
2066
+ version: "1.1",
2067
+ width: o,
2068
+ height: o,
2069
+ viewBox: "0 0 28 28",
2070
+ onClick: l
2071
+ }, i.createElement("g", {
2072
+ fill: "none"
2073
+ }, i.createElement("path", {
2074
+ className: Ze.dottedCloud,
2075
+ stroke: "currentColor",
2076
+ strokeDasharray: "3.5,2.5",
2077
+ d: $e
2078
+ }), i.createElement("path", {
2079
+ className: Ze.spinningCloud,
2080
+ stroke: "currentColor",
2081
+ strokeDasharray: "".concat(t, " ").concat(a),
2082
+ strokeDashoffset: e,
2083
+ d: $e
2084
+ }), i.createElement("path", {
2085
+ className: Ze.arrowGap,
2086
+ d: "M11 20h6v5h-6z"
2087
+ }), i.createElement("g", {
2088
+ className: Ze.arrow,
2089
+ stroke: "currentColor"
2090
+ }, i.createElement("path", {
2091
+ strokeLinecap: "square",
2092
+ d: "M14.5 14.5v10"
2093
+ }), i.createElement("path", {
2094
+ d: "M11 17l3.5-3.5L18 17"
2095
+ })), i.createElement("g", {
2096
+ className: Ze.check,
2097
+ stroke: "currentColor"
2098
+ }, i.createElement("path", {
2099
+ strokeDasharray: "".concat(n, "% ").concat(200 - n, "%"),
2100
+ d: "M10 15l2.5 2.5L18 12"
2101
+ }))));
2102
+ }
2103
+
2104
+ _goToNextState(e) {
2105
+ switch (e) {
2106
+ case "unsaved":
2107
+ this.setState(tt);
2108
+ break;
2109
+
2110
+ case "saving":
2111
+ "unsaved" !== this.props.state && this.setState(tt), this._currentAnimation = Promise.resolve(this._currentAnimation).then(() => this._createSpinAnimationWhile(() => "saving" === this.props.state));
2112
+ break;
2113
+
2114
+ case "saved":
2115
+ this._currentAnimation = Promise.resolve(this._currentAnimation).then(this._createFillGapAnimation.bind(this)).then(this._createCheckAnimation.bind(this));
2116
+ }
2117
+ }
2118
+
2119
+ _createSpinAnimationWhile(e) {
2120
+ return this._createSpinAnimation().then(() => e() ? this._createSpinAnimationWhile(e) : Promise.resolve());
2121
+ }
2122
+
2123
+ _createSpinAnimation() {
2124
+ return new Promise(e => {
2125
+ Object(Je.doAnimate)({
2126
+ onStep: (e, t) => {
2127
+ void 0 !== this._currentAnimation && this.setState({
2128
+ strokeDashOffset: t
2129
+ });
2130
+ },
2131
+ onComplete: () => e(),
2132
+ from: 49.242997817993164,
2133
+ to: 111.57590644836426,
2134
+ easing: Ye.c.linear,
2135
+ duration: 1e3
2136
+ });
2137
+ });
2138
+ }
2139
+
2140
+ _createCheckAnimation() {
2141
+ return new Promise(e => {
2142
+ Object(Je.doAnimate)({
2143
+ onStep: (e, t) => {
2144
+ void 0 !== this._currentAnimation && this.setState({
2145
+ strokeDashCheck: Math.round(t)
2146
+ });
2147
+ },
2148
+ onComplete: () => e(),
2149
+ from: 0,
2150
+ to: 200,
2151
+ easing: Ye.c.linear,
2152
+ duration: 1e3
2153
+ });
2154
+ });
2155
+ }
2156
+
2157
+ _createFillGapAnimation() {
2158
+ return new Promise(e => {
2159
+ Object(Je.doAnimate)({
2160
+ onStep: (e, t) => {
2161
+ void 0 !== this._currentAnimation && this.setState({
2162
+ strokeDashOffset: 62.956237716674806 - t,
2163
+ strokeGap: t,
2164
+ strokeDash: 62.956237716674806 - t
2165
+ });
2166
+ },
2167
+ onComplete: () => e(),
2168
+ from: et,
2169
+ to: 0,
2170
+ easing: Ye.c.linear,
2171
+ duration: 200
2172
+ });
2173
+ });
2174
+ }
2175
+
2176
+ }
2177
+
2178
+ var it = a("nPPD"),
2179
+ st = a("MB0Y"),
2180
+ ot = a("3j+J");
2181
+ Object(it.a)(st.a, ot);
2182
+ var lt = a("2uTr"),
2183
+ rt = a("+KIV"),
2184
+ ct = a("RGo6"),
2185
+ ht = a("SchQ");
2186
+ a("OP2o");
2187
+ const dt = n.enabled("widget"),
2188
+ ut = Object(it.a)(g.a, ht),
2189
+ mt = Object(it.a)(d.a, {
2190
+ shortcut: ct.shortcut
2191
+ }),
2192
+ vt = {
2193
+ copy: window.t("Copy"),
2194
+ makeCopy: window.t("Make a Copy"),
2195
+ newChartLayout: window.t("New Chart Layout"),
2196
+ loadChartLayout: Object(lt.appendEllipsis)(window.t("Load Chart Layout")),
2197
+ rename: Object(lt.appendEllipsis)(window.t("Rename")),
2198
+ renameChartLayout: window.t("Rename Chart Layout"),
2199
+ saveAs: Object(lt.appendEllipsis)(window.t("Make a Copy")),
2200
+ saveChartLayout: window.t("Save"),
2201
+ saveChartLayoutLong: window.t("Save all charts for all symbols and intervals on your layout"),
2202
+ manageChartLayouts: window.t("Manage Chart Layouts")
2203
+ },
2204
+ pt = [],
2205
+ bt = Object(Q.b)({
2206
+ keys: ["Ctrl", "S"],
2207
+ text: "{0} + {1}"
2208
+ });
2209
+
2210
+ class gt extends i.PureComponent {
2211
+ constructor(e) {
2212
+ super(e), this._toolWidgetMenuRef = i.createRef(), this._handleSaveHoverBegin = () => {
2213
+ this.setState({
2214
+ iconHovered: !0
2215
+ });
2216
+ }, this._handleSaveHoverEnd = () => {
2217
+ this.setState({
2218
+ iconHovered: !1
2219
+ });
2220
+ }, this.state = {
2221
+ iconHovered: !1
2222
+ };
2223
+ }
2224
+
2225
+ render() {
2226
+ const {
2227
+ id: e,
2228
+ isReadOnly: t,
2229
+ displayMode: a,
2230
+ isProcessing: n,
2231
+ title: s,
2232
+ chartId: o,
2233
+ wasChanges: l,
2234
+ onCloneChart: r,
2235
+ onSaveChart: c,
2236
+ hideMenu: d,
2237
+ isTabletSmall: v
2238
+ } = this.props,
2239
+ {
2240
+ iconHovered: p
2241
+ } = this.state,
2242
+ g = !t && !d;
2243
+ let S = "saved";
2244
+ return !l && s || (S = "unsaved"), n && (S = "saving"), i.createElement(b, null, t ? i.createElement(b, null, i.createElement(j, {
2245
+ id: e,
2246
+ displayMode: a,
2247
+ icon: i.createElement(h.a, {
2248
+ icon: rt
2249
+ }),
2250
+ isDisabled: n,
2251
+ onClick: r,
2252
+ text: vt.copy,
2253
+ title: vt.makeCopy,
2254
+ onMouseEnter: this._handleSaveHoverBegin,
2255
+ onMouseLeave: this._handleSaveHoverEnd,
2256
+ collapseWhen: pt
2257
+ })) : i.createElement(b, null, i.createElement(j, {
2258
+ id: e,
2259
+ className: m(ct.button, g && ct.buttonSmallPadding),
2260
+ displayMode: a,
2261
+ icon: i.createElement(nt, {
2262
+ size: 28,
2263
+ state: S,
2264
+ isHovered: p
2265
+ }),
2266
+ isDisabled: o && !l || n,
2267
+ onClick: c,
2268
+ text: s || vt.saveChartLayout,
2269
+ title: vt.saveChartLayoutLong,
2270
+ onMouseEnter: this._handleSaveHoverBegin,
2271
+ onMouseLeave: this._handleSaveHoverEnd,
2272
+ theme: ut,
2273
+ collapseWhen: pt,
2274
+ "data-tooltip-hotkey": dt ? "" : bt
2275
+ }), g && i.createElement(u.a, {
2276
+ ref: this._toolWidgetMenuRef,
2277
+ className: "js-save-load-menu-open-button",
2278
+ arrow: !0,
2279
+ isDrawer: v,
2280
+ drawerPosition: "Bottom",
2281
+ title: vt.manageChartLayouts
2282
+ }, this._renderMenuItems(Boolean(v)))));
2283
+ }
2284
+
2285
+ _renderMenuItems(e) {
2286
+ const {
2287
+ wasChanges: t,
2288
+ isProcessing: a,
2289
+ chartId: n,
2290
+ onSaveChartFromMenu: s,
2291
+ onRenameChart: o,
2292
+ onSaveAsChart: l,
2293
+ onLoadChart: r,
2294
+ onNewChart: c,
2295
+ isAutoSaveEnabled: h,
2296
+ autoSaveId: u,
2297
+ sharingId: v,
2298
+ onAutoSaveChanged: p,
2299
+ isSharingEnabled: b,
2300
+ onSharingChanged: g
2301
+ } = this.props,
2302
+ S = e ? k.a : mt,
2303
+ w = e ? void 0 : Object(qe.humanReadableHash)(qe.Modifiers.Mod + 83),
2304
+ C = e ? void 0 : Object(R.t)("Dot", {
2305
+ context: "hotkey"
2306
+ }),
2307
+ _ = [];
2308
+ return _.push(i.createElement(d.b, {
2309
+ key: "save",
2310
+ isDisabled: Boolean(a || !t && n),
2311
+ label: vt.saveChartLayout,
2312
+ onClick: s,
2313
+ shortcut: w,
2314
+ labelRowClassName: m(e && ct.popupItemRowTabletSmall),
2315
+ theme: S
2316
+ })), void 0 !== n && (e || _.push(i.createElement(f.a, {
2317
+ key: "existing-chart-section-begin"
2318
+ })), _.push(i.createElement(d.b, {
2319
+ key: "rename",
2320
+ label: vt.rename,
2321
+ onClick: o,
2322
+ labelRowClassName: m(e && ct.popupItemRowTabletSmall),
2323
+ theme: S
2324
+ }), i.createElement(d.b, {
2325
+ key: "save-as",
2326
+ label: vt.saveAs,
2327
+ onClick: l,
2328
+ labelRowClassName: m(e && ct.popupItemRowTabletSmall),
2329
+ theme: S
2330
+ }))), _.push(i.createElement(f.a, {
2331
+ key: "platform-section-begin"
2332
+ })), _.push(i.createElement(d.b, {
2333
+ key: "load-chart",
2334
+ className: "js-save-load-menu-item-load-chart",
2335
+ label: vt.loadChartLayout,
2336
+ onClick: r,
2337
+ labelRowClassName: m(e && ct.popupItemRowTabletSmall),
2338
+ theme: S,
2339
+ shortcut: C
2340
+ })), _;
2341
+ }
2342
+
2343
+ }
2344
+
2345
+ const St = Object(x.b)();
2346
+
2347
+ class wt extends i.PureComponent {
2348
+ constructor(e, t) {
2349
+ super(e, t), this._syncState = e => {
2350
+ this.setState(e);
2351
+ }, this._onChangeHasChanges = e => {
2352
+ this.state.wasChanges !== e && this.setState({
2353
+ wasChanges: e
2354
+ });
2355
+ }, this._onChangeAutoSaveEnabled = e => {
2356
+ 0;
2357
+ }, this._onChangeSharingEnabled = e => {
2358
+ this.setState({
2359
+ isSharingEnabled: e
2360
+ });
2361
+ }, this._onChangeTitle = e => {
2362
+ this.setState({
2363
+ title: e
2364
+ });
2365
+ }, this._onChangeId = e => {
2366
+ this.setState({
2367
+ id: e
2368
+ });
2369
+ }, this._onChartAboutToBeSaved = () => {
2370
+ this.setState({
2371
+ isProcessing: !0
2372
+ });
2373
+ }, this._onChartSaved = () => {
2374
+ this.setState({
2375
+ isProcessing: !1
2376
+ });
2377
+ }, this._handleAutoSaveEnabled = e => {
2378
+ 0;
2379
+ }, this._handleSharingEnabled = e => {
2380
+ 0;
2381
+ }, this._handleClickSave = () => {
2382
+ this.context.saveChartService.saveChartOrShowTitleDialog(), this._trackEvent("Save click");
2383
+ }, this._handleClickSaveFromMenu = () => {
2384
+ this.context.saveChartService.saveChartOrShowTitleDialog(), this._trackEvent("Save From Menu");
2385
+ }, this._handleClickClone = () => {
2386
+ this.context.saveChartService.cloneChart();
2387
+ }, this._handleClickSaveAs = () => {
2388
+ this.context.saveChartService.saveChartAs(), this._trackEvent("Make a copy");
2389
+ }, this._handleClickNew = () => {
2390
+ this._trackEvent("New chart layout");
2391
+ }, this._handleClickLoad = () => {
2392
+ this.context.loadChartService.showLoadDialog(), this._trackEvent("Load chart layout");
2393
+ }, this._handleHotkey = () => {
2394
+ this.context.loadChartService.showLoadDialog();
2395
+ }, this._handleClickRename = () => {
2396
+ this.context.saveChartService.renameChart(), this._trackEvent("Rename");
2397
+ }, Object(x.c)(t, {
2398
+ chartWidgetCollection: o.any.isRequired,
2399
+ chartChangesWatcher: o.any.isRequired,
2400
+ saveChartService: o.any.isRequired,
2401
+ sharingChartService: o.any,
2402
+ loadChartService: o.any.isRequired
2403
+ });
2404
+ const {
2405
+ chartWidgetCollection: a,
2406
+ chartChangesWatcher: n,
2407
+ saveChartService: i,
2408
+ sharingChartService: s
2409
+ } = t;
2410
+ this.state = {
2411
+ isAuthenticated: window.is_authenticated,
2412
+ isProcessing: !1,
2413
+ id: a.metaInfo.id.value(),
2414
+ title: a.metaInfo.name.value(),
2415
+ wasChanges: n.hasChanges(),
2416
+ iconHovered: !1
2417
+ };
2418
+ }
2419
+
2420
+ componentDidMount() {
2421
+ const {
2422
+ chartSaver: e,
2423
+ isFake: t,
2424
+ stateSyncEmitter: a
2425
+ } = this.props,
2426
+ {
2427
+ chartWidgetCollection: n,
2428
+ chartChangesWatcher: i,
2429
+ saveChartService: s,
2430
+ sharingChartService: o
2431
+ } = this.context;
2432
+ t ? a.on("change", this._syncState) : (i.getOnChange().subscribe(this, this._onChangeHasChanges), n.metaInfo.name.subscribe(this._onChangeTitle), n.metaInfo.id.subscribe(this._onChangeId), this._hotkeys = Object(Xe.createGroup)({
2433
+ desc: "Save/Load"
2434
+ }), this._hotkeys.add({
2435
+ desc: window.t("Load Chart Layout"),
2436
+ handler: this._handleHotkey,
2437
+ hotkey: 190
2438
+ }), e.chartSaved().subscribe(this, this._onChartSaved), e.chartAboutToBeSaved().subscribe(this, this._onChartAboutToBeSaved), window.loginStateChange.subscribe(this, this._onLoginStateChange));
2439
+ }
2440
+
2441
+ componentDidUpdate(e, t) {
2442
+ this.props.isFake || t !== this.state && this.props.stateSyncEmitter.emit("change", this.state);
2443
+ }
2444
+
2445
+ componentWillUnmount() {
2446
+ const {
2447
+ chartSaver: e,
2448
+ isFake: t,
2449
+ stateSyncEmitter: a
2450
+ } = this.props,
2451
+ {
2452
+ chartWidgetCollection: n,
2453
+ chartChangesWatcher: i,
2454
+ saveChartService: s,
2455
+ sharingChartService: o
2456
+ } = this.context;
2457
+ t ? a.off("change", this._syncState) : (i.getOnChange().unsubscribe(this, this._onChangeHasChanges), n.metaInfo.name.unsubscribe(this._onChangeTitle), n.metaInfo.id.unsubscribe(this._onChangeId), Object(K.ensureDefined)(this._hotkeys).destroy(), e.chartSaved().unsubscribe(this, this._onChartSaved), e.chartAboutToBeSaved().unsubscribe(this, this._onChartAboutToBeSaved), window.loginStateChange.unsubscribe(this, this._onLoginStateChange));
2458
+ }
2459
+
2460
+ render() {
2461
+ const {
2462
+ isReadOnly: e,
2463
+ displayMode: t,
2464
+ id: a,
2465
+ isFake: n
2466
+ } = this.props,
2467
+ {
2468
+ isProcessing: s,
2469
+ isAuthenticated: o,
2470
+ title: l,
2471
+ id: r,
2472
+ wasChanges: c,
2473
+ isAutoSaveEnabled: h,
2474
+ isSharingEnabled: d
2475
+ } = this.state,
2476
+ u = {
2477
+ displayMode: t,
2478
+ isReadOnly: e,
2479
+ isAuthenticated: o,
2480
+ isProcessing: s,
2481
+ wasChanges: c,
2482
+ title: l,
2483
+ id: a,
2484
+ chartId: null !== r ? r : void 0,
2485
+ onCloneChart: this._handleClickClone,
2486
+ onSaveChart: this._handleClickSave,
2487
+ onSaveChartFromMenu: this._handleClickSaveFromMenu,
2488
+ onRenameChart: this._handleClickRename,
2489
+ onSaveAsChart: this._handleClickSaveAs,
2490
+ onLoadChart: this._handleClickLoad
2491
+ };
2492
+ return i.createElement(_.a, {
2493
+ rule: y.a.TabletSmall
2494
+ }, e => i.createElement(gt, _objectSpread(_objectSpread({}, u), {}, {
2495
+ isTabletSmall: e
2496
+ })));
2497
+ }
2498
+
2499
+ _onLoginStateChange() {
2500
+ this.setState({
2501
+ isAuthenticated: window.is_authenticated
2502
+ });
2503
+ }
2504
+
2505
+ _trackEvent(e) {
2506
+ 0;
2507
+ }
2508
+
2509
+ }
2510
+
2511
+ wt.contextType = St;
2512
+
2513
+ var Ct = a("QC7+"),
2514
+ ft = a("MbIA"),
2515
+ _t = a("8woN");
2516
+
2517
+ const yt = new ft.a({
2518
+ dateTimeSeparator: "_",
2519
+ timeFormat: "%h-%m-%s"
2520
+ }),
2521
+ kt = {
2522
+ takeSnapshot: window.t("Take a snapshot")
2523
+ },
2524
+ xt = Object(x.b)();
2525
+ var Et = a("mNbo");
2526
+ const Ot = R.t("Loading...");
2527
+
2528
+ const Mt = async function Mt(e) {
2529
+ const t = URL.createObjectURL(new Blob(["<!doctype html><html style=\"background-color:".concat(getComputedStyle(document.documentElement).backgroundColor, "\"><head><meta charset=\"utf-8\"><title>").concat(Ot, "</title></head><body style=\"background-color:").concat(getComputedStyle(document.body).backgroundColor, "\"></body></html>")], {
2530
+ type: "text/html"
2531
+ }));
2532
+
2533
+ try {
2534
+ const a = open(t);
2535
+ if (!a) throw new Error("cound not open a new tab");
2536
+ const n = await e.catch(() => {});
2537
+ void 0 !== n ? a.location.replace(n) : a.close();
2538
+ } finally {
2539
+ URL.revokeObjectURL(t);
2540
+ }
2541
+ };
2542
+
2543
+ var Tt = a("qHEz"),
2544
+ Nt = a("Rdaf"),
2545
+ Rt = a("6KyJ"),
2546
+ It = a("Owyg");
2547
+
2548
+ function At(e) {
2549
+ const t = m(e.isLoading && It.hidden),
2550
+ a = m(!e.isLoading && It.hidden);
2551
+ return i.createElement("div", null, i.createElement("span", {
2552
+ className: t
2553
+ }, e.children), i.createElement("span", {
2554
+ className: a
2555
+ }, i.createElement(Rt.a, null)));
2556
+ }
2557
+
2558
+ var jt = a("PR+g"),
2559
+ Ft = a("BHQn"),
2560
+ Ht = a("K8V9"),
2561
+ zt = a("npeR"),
2562
+ Lt = a("CGkO"),
2563
+ Wt = a("Q6PN"),
2564
+ Dt = a("NQJD");
2565
+ const Pt = Object(it.a)(d.a, Dt);
2566
+
2567
+ function Ut(e) {
2568
+ const {
2569
+ serverSnapshot: t,
2570
+ clientSnapshot: n
2571
+ } = e,
2572
+ [o, l] = Object(i.useState)(!1),
2573
+ [r, c] = Object(i.useState)(!1),
2574
+ [h, u] = Object(i.useState)(!1),
2575
+ v = Object(jt.a)(),
2576
+ p = Object(i.useCallback)(async () => {
2577
+ var e;
2578
+ const t = n(),
2579
+ a = t.then(e => new Promise(t => e.canvas.toBlob(e => {
2580
+ null !== e && t(e);
2581
+ })));
2582
+
2583
+ try {
2584
+ await Object(Tt.b)(a, "image/png"), te.emit("onClientScreenshotCopiedToClipboard");
2585
+ } catch (a) {
2586
+ const {
2587
+ canvas: n
2588
+ } = await t;
2589
+ null === (e = window.open()) || void 0 === e || e.document.write("<img width=\"100%\" src=\"".concat(n.toDataURL(), "\"/>"));
2590
+ }
2591
+ }, [n]),
2592
+ b = Object(i.useCallback)(async () => {
2593
+ const e = await n();
2594
+ Object(Nt.a)(e.name + ".png", e.canvas.toDataURL());
2595
+ }, [n]),
2596
+ g = e => Mt(e.then(e => e.imageUrl)),
2597
+ S = Object(i.useCallback)(async function () {
2598
+ let e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : !1;
2599
+ const a = t();
2600
+
2601
+ try {
2602
+ if (e) await g(a);else {
2603
+ const e = a.then(e => new Blob([e.imageUrl], {
2604
+ type: "text/plain"
2605
+ }));
2606
+ await Object(Tt.b)(e, "text/plain"), te.emit("onServerScreenshotCopiedToClipboard");
2607
+ }
2608
+ return !0;
2609
+ } catch (e) {
2610
+ return g(a), !0;
2611
+ } finally {
2612
+ v.current && (c(!1), l(!1), Object(Ne.b)());
2613
+ }
2614
+ }, [t]),
2615
+ w = Object(i.useCallback)(async () => {
2616
+ u(!0);
2617
+ const [e, n] = await Promise.all([a.e("share-chart-to-social-utils").then(a.bind(null, "E5mD")), t()]);
2618
+ e.Twitter.shareSnapshotInstantly(n.symbol, n.imageUrl), v.current && (u(!1), Object(Ne.b)());
2619
+ }, [t]);
2620
+
2621
+ return s.a.createElement(s.a.Fragment, null, s.a.createElement(d.b, {
2622
+ "data-name": "save-chart-image",
2623
+ label: Object(R.t)("Save chart image"),
2624
+ icon: zt,
2625
+ onClick: b,
2626
+ shortcut: Object(qe.humanReadableHash)(qe.Modifiers.Mod + qe.Modifiers.Alt + 83),
2627
+ theme: Pt
2628
+ }), s.a.createElement(d.b, {
2629
+ "data-name": "copy-chart-image",
2630
+ label: Object(R.t)("Copy chart image"),
2631
+ icon: Ht,
2632
+ onClick: p,
2633
+ shortcut: Object(qe.humanReadableHash)(qe.Modifiers.Mod + qe.Modifiers.Shift + 83),
2634
+ theme: Pt
2635
+ }), s.a.createElement(d.b, {
2636
+ "data-name": "copy-link-to-the-chart-image",
2637
+ label: s.a.createElement(At, {
2638
+ isLoading: o
2639
+ }, Object(R.t)("Copy link to the chart image")),
2640
+ icon: Lt,
2641
+ onClick: () => {
2642
+ l(!0), S(!1);
2643
+ },
2644
+ dontClosePopup: !0,
2645
+ isDisabled: o,
2646
+ shortcut: Object(qe.humanReadableHash)(qe.Modifiers.Alt + 83),
2647
+ className: m(o && Dt.loading),
2648
+ theme: Pt
2649
+ }), s.a.createElement(d.b, {
2650
+ "data-name": "open-image-in-new-tab",
2651
+ label: s.a.createElement(At, {
2652
+ isLoading: r
2653
+ }, Object(R.t)("Open image in new tab")),
2654
+ icon: Wt,
2655
+ onClick: () => {
2656
+ c(!0), S(!0);
2657
+ },
2658
+ dontClosePopup: !0,
2659
+ isDisabled: r,
2660
+ className: m(r && Dt.loading),
2661
+ theme: Pt
2662
+ }), s.a.createElement(d.b, {
2663
+ "data-name": "tweet-chart-image",
2664
+ label: s.a.createElement(At, {
2665
+ isLoading: h
2666
+ }, Object(R.t)("Tweet chart image")),
2667
+ icon: Ft,
2668
+ onClick: w,
2669
+ dontClosePopup: !0,
2670
+ isDisabled: h,
2671
+ className: m(h && Dt.loading),
2672
+ theme: Pt
2673
+ }));
2674
+ }
2675
+
2676
+ function Vt(e) {
2677
+ const [t, a] = Object(i.useState)(!1),
2678
+ n = Object(jt.a)(),
2679
+ o = Object(i.useCallback)(async () => {
2680
+ a(!0), await e.serverSnapshot(), n.current && a(!1);
2681
+ }, [e.serverSnapshot]);
2682
+ return s.a.createElement(g.b, {
2683
+ id: e.id,
2684
+ className: e.className,
2685
+ isDisabled: t,
2686
+ onClick: o,
2687
+ title: e.tooltip,
2688
+ icon: e.icon
2689
+ });
2690
+ }
2691
+
2692
+ var Bt = a("koZ+");
2693
+ const Kt = (Qt = function Qt(e) {
2694
+ return Object(Et.isOnMobileAppPage)("any") ? s.a.createElement(Vt, _objectSpread(_objectSpread({}, e), {}, {
2695
+ icon: Bt
2696
+ })) : s.a.createElement(u.a, {
2697
+ content: s.a.createElement(g.b, {
2698
+ id: e.id,
2699
+ className: e.className,
2700
+ title: e.tooltip,
2701
+ icon: Bt
2702
+ }),
2703
+ drawerPosition: "Bottom",
2704
+ drawerBreakpoint: y.a.TabletSmall,
2705
+ arrow: !1
2706
+ }, s.a.createElement(Ut, _objectSpread({}, e)));
2707
+ }, (Gt = class extends i.PureComponent {
2708
+ constructor(e, t) {
2709
+ super(e, t), this._clientSnapshot = async () => {
2710
+ const e = this.context.chartWidgetCollection.activeChartWidget.value().model().mainSeries().actualSymbol();
2711
+ return {
2712
+ canvas: await this.context.chartWidgetCollection.clientSnapshot(),
2713
+ name: "".concat(Object(_t.shortName)(e), "_").concat(yt.formatLocal(new Date()))
2714
+ };
2715
+ }, this._serverSnapshot = async () => {
2716
+ const e = this.context.chartWidgetCollection.activeChartWidget.value().model().mainSeries().actualSymbol(),
2717
+ t = await this.context.chartWidgetCollection.takeScreenshot(),
2718
+ a = n.enabled("charting_library_base") && void 0 !== this.context.snapshotUrl ? t : Object(Ct.a)(t);
2719
+ return {
2720
+ symbol: Object(_t.shortName)(e),
2721
+ imageUrl: a
2722
+ };
2723
+ }, Object(x.c)(t, {
2724
+ chartWidgetCollection: o.any.isRequired
2725
+ });
2726
+ }
2727
+
2728
+ render() {
2729
+ const {
2730
+ className: e,
2731
+ id: t
2732
+ } = this.props;
2733
+ return i.createElement(Qt, {
2734
+ id: t,
2735
+ className: e,
2736
+ tooltip: kt.takeSnapshot,
2737
+ serverSnapshot: this._serverSnapshot,
2738
+ clientSnapshot: this._clientSnapshot
2739
+ });
2740
+ }
2741
+
2742
+ }).contextType = xt, Gt);
2743
+ var Qt,
2744
+ Gt,
2745
+ Xt = a("FA0h"),
2746
+ qt = a("h24c"),
2747
+ Jt = a("tOje"),
2748
+ Yt = a("QOH/");
2749
+ const Zt = Object(it.a)(g.a, Yt);
2750
+
2751
+ class $t extends s.a.PureComponent {
2752
+ constructor(e) {
2753
+ super(e), this._promise = null, this._openSymbolSearchDialog = e => {
2754
+ if (Object(qe.modifiersFromEvent)(e) === qe.Modifiers.Alt) return void navigator.clipboard.writeText(this.state.symbol);
2755
+ const t = this._promise = Object(Xt.a)().then(e => {
2756
+ t === this._promise && (e.showDefaultSearchDialog({
2757
+ defaultValue: this._isSpread(this.state.symbol) ? this.state.symbol : this.state.shortName,
2758
+ showSpreadActions: Object(qt.a)() && this.props.isActionsVisible,
2759
+ source: "searchBar",
2760
+ footer: fe.mobiletouch ? void 0 : s.a.createElement(Jt.a, null, Object(R.t)("Simply start typing while on the chart to pull up this search box"))
2761
+ }), Object(F.trackEvent)("GUI", "SS", "main search"));
2762
+ });
2763
+ }, this._isSpread = e => !1, this._onSymbolChanged = () => {
2764
+ this.setState({
2765
+ symbol: ce.linking.symbol.value(),
2766
+ shortName: ea()
2767
+ });
2768
+ }, this.state = {
2769
+ symbol: ce.linking.symbol.value(),
2770
+ shortName: ea()
2771
+ };
2772
+ }
2773
+
2774
+ componentDidMount() {
2775
+ ce.linking.seriesShortSymbol.subscribe(this._onSymbolChanged), Object(Xt.a)();
2776
+ }
2777
+
2778
+ componentWillUnmount() {
2779
+ ce.linking.seriesShortSymbol.unsubscribe(this._onSymbolChanged), this._promise = null;
2780
+ }
2781
+
2782
+ render() {
2783
+ const {
2784
+ id: e,
2785
+ className: t
2786
+ } = this.props;
2787
+ return s.a.createElement(g.b, {
2788
+ id: e,
2789
+ className: m(t, n.enabled("uppercase_instrument_names") && Yt.uppercase),
2790
+ theme: Zt,
2791
+ text: this.state.shortName,
2792
+ title: Object(R.t)("Symbol Search"),
2793
+ onClick: this._openSymbolSearchDialog
2794
+ });
2795
+ }
2796
+
2797
+ }
2798
+
2799
+ function ea() {
2800
+ return ce.linking.seriesShortSymbol.value() || ce.linking.symbol.value() || "";
2801
+ }
2802
+
2803
+ var ta = a("9NBK");
2804
+
2805
+ class aa extends i.PureComponent {
2806
+ constructor() {
2807
+ super(...arguments), this._handleClick = e => {
2808
+ e.stopPropagation();
2809
+ const {
2810
+ onApply: t,
2811
+ item: a
2812
+ } = this.props;
2813
+ t(a);
2814
+ };
2815
+ }
2816
+
2817
+ render() {
2818
+ const {
2819
+ className: e,
2820
+ item: t
2821
+ } = this.props;
2822
+ return i.createElement("div", {
2823
+ className: m(e, ta.item, "apply-common-tooltip"),
2824
+ onClick: this._handleClick,
2825
+ title: t.name
2826
+ }, i.createElement("div", {
2827
+ className: ta.round
2828
+ }, t.name.length > 0 ? t.name[0].toUpperCase() : " "));
2829
+ }
2830
+
2831
+ }
2832
+
2833
+ var na = a("8RO/"),
2834
+ ia = a("s0T6");
2835
+
2836
+ function sa(e) {
2837
+ return i.createElement("div", {
2838
+ className: m(ia.description, e.className)
2839
+ }, e.children);
2840
+ }
2841
+
2842
+ var oa = a("fESK");
2843
+ const la = Object(it.a)(d.a, {
2844
+ labelRow: oa.labelRow,
2845
+ toolbox: oa.toolbox,
2846
+ item: oa.titleItem
2847
+ }),
2848
+ ra = Object(it.a)(d.a, {
2849
+ labelRow: oa.labelRow,
2850
+ toolbox: oa.toolbox,
2851
+ item: oa.titleItemTabletSmall
2852
+ }),
2853
+ ca = Object(it.a)(d.a, {
2854
+ item: oa.item
2855
+ }),
2856
+ ha = Object(it.a)(d.a, {
2857
+ item: oa.itemTabletSmall
2858
+ });
2859
+
2860
+ function da(e) {
2861
+ const {
2862
+ item: t,
2863
+ onApply: a,
2864
+ onRemove: n,
2865
+ onFavor: o,
2866
+ favorite: l,
2867
+ isFavoritingAllowed: r,
2868
+ isTabletSmall: h
2869
+ } = e,
2870
+ [u, m] = Object(Ce.c)(),
2871
+ p = t.meta_info,
2872
+ b = p ? Object(na.b)(p.indicators) : void 0,
2873
+ g = h ? ra : la,
2874
+ S = h ? ha : ca,
2875
+ w = Object(i.useCallback)(() => a(t), [a, t]),
2876
+ C = Object(i.useCallback)(() => n(t), [n, t]),
2877
+ f = Object(i.useCallback)(() => {
2878
+ o && o(t);
2879
+ }, [o, t]);
2880
+ return s.a.createElement("div", _objectSpread(_objectSpread({}, m), {}, {
2881
+ className: oa.wrap,
2882
+ "data-name": t.name,
2883
+ "data-id": t.id,
2884
+ "data-is-default": Boolean(t.is_default)
2885
+ }), s.a.createElement(d.b, {
2886
+ theme: g,
2887
+ label: t.name,
2888
+ labelRowClassName: v()(h && oa.itemLabelTabletSmall),
2889
+ isHovered: u,
2890
+ showToolboxOnHover: !l && !u,
2891
+ onClick: w,
2892
+ toolbox: s.a.createElement(s.a.Fragment, null, !t.is_default && s.a.createElement(we.a, {
2893
+ key: "remove",
2894
+ hidden: !fe.touch && !u,
2895
+ onClick: C
2896
+ }), Boolean(o) && r && s.a.createElement(c.a, {
2897
+ key: "favorite",
2898
+ isFilled: Boolean(l),
2899
+ onClick: f
2900
+ }))
2901
+ }), b && s.a.createElement(d.b, {
2902
+ theme: S,
2903
+ label: s.a.createElement(sa, {
2904
+ className: v()(oa.description, h && oa.descriptionTabletSmall)
2905
+ }, b),
2906
+ onClick: w,
2907
+ isHovered: u
2908
+ }));
2909
+ }
2910
+
2911
+ var ua = a("jKyl"),
2912
+ ma = a("23di");
2913
+ const va = Object(it.a)(d.a, ma),
2914
+ pa = {
2915
+ text: Object(lt.appendEllipsis)(window.t("Save Indicator template"))
2916
+ };
2917
+
2918
+ function ba(e) {
2919
+ const {
2920
+ onClick: t,
2921
+ isTabletSmall: a
2922
+ } = e;
2923
+ return s.a.createElement(d.b, {
2924
+ theme: va,
2925
+ className: ma.wrap,
2926
+ label: s.a.createElement("div", {
2927
+ className: ma.titleWrap
2928
+ }, s.a.createElement("div", {
2929
+ className: v()(ma.title, a && ma.titleTabletSmall)
2930
+ }, s.a.createElement(h.a, {
2931
+ className: ma.icon,
2932
+ icon: ua
2933
+ }), s.a.createElement("div", {
2934
+ className: ma.text
2935
+ }, pa.text))),
2936
+ onClick: t
2937
+ });
2938
+ }
2939
+
2940
+ var ga = a("gla1"),
2941
+ Sa = a("PN6A");
2942
+ const wa = s.a.createContext(null);
2943
+ var Ca = a("Sl3V");
2944
+
2945
+ function fa(e) {
2946
+ const {
2947
+ templates: t,
2948
+ favorites: a,
2949
+ onTemplateSave: n,
2950
+ onTemplateRemove: o,
2951
+ onTemplateSelect: l,
2952
+ onTemplateFavorite: r,
2953
+ isTabletSmall: c,
2954
+ isLoading: h
2955
+ } = e,
2956
+ d = Object(i.useMemo)(() => t.filter(e => e.is_default), [t]),
2957
+ u = Object(i.useMemo)(() => t.filter(e => !e.is_default), [t]),
2958
+ m = Object(i.useMemo)(() => new Set(a.map(e => e.name)), [a]),
2959
+ p = Object(i.useContext)(wa),
2960
+ b = Object(i.useContext)(Sa.a),
2961
+ g = Object(ga.a)();
2962
+ Object(i.useEffect)(() => {
2963
+ if (null !== p) {
2964
+ const e = {};
2965
+ return p.getOnChange().subscribe(e, () => {
2966
+ g(), b && b.update();
2967
+ }), () => p.getOnChange().unsubscribeAll(e);
2968
+ }
2969
+
2970
+ return () => {};
2971
+ }, []);
2972
+
2973
+ const S = e => s.a.createElement(da, {
2974
+ key: e.name,
2975
+ item: e,
2976
+ isFavoritingAllowed: Boolean(r),
2977
+ favorite: m.has(e.name),
2978
+ onApply: l,
2979
+ onFavor: r,
2980
+ onRemove: o,
2981
+ isTabletSmall: c
2982
+ });
2983
+
2984
+ return s.a.createElement("div", {
2985
+ className: v()(Ca.menu, c && Ca.menuSmallTablet)
2986
+ }, s.a.createElement(ba, {
2987
+ onClick: n,
2988
+ isTabletSmall: c
2989
+ }), h && s.a.createElement(s.a.Fragment, null, s.a.createElement(f.a, null), s.a.createElement(Z.a, null)), !h && (c ? s.a.createElement(_a, {
2990
+ defaults: d,
2991
+ customs: u,
2992
+ render: S
2993
+ }) : s.a.createElement(ya, {
2994
+ defaults: d,
2995
+ customs: u,
2996
+ render: S,
2997
+ state: p
2998
+ })));
2999
+ }
3000
+
3001
+ function _a(e) {
3002
+ const {
3003
+ defaults: t,
3004
+ customs: a,
3005
+ render: n
3006
+ } = e;
3007
+ return s.a.createElement(s.a.Fragment, null, a.length > 0 && s.a.createElement(s.a.Fragment, null, s.a.createElement(f.a, null), s.a.createElement(ee, {
3008
+ className: Ca.menuItemHeaderTabletSmall
3009
+ }, Object(R.t)("My templates")), a.map(n)), t.length > 0 && s.a.createElement(s.a.Fragment, null, s.a.createElement(f.a, null), s.a.createElement(ee, {
3010
+ className: Ca.menuItemHeaderTabletSmall
3011
+ }, Object(R.t)("Default templates")), t.map(n)));
3012
+ }
3013
+
3014
+ function ya(e) {
3015
+ const {
3016
+ defaults: t,
3017
+ customs: a,
3018
+ render: n,
3019
+ state: i
3020
+ } = e;
3021
+ return s.a.createElement(s.a.Fragment, null, a.length > 0 && s.a.createElement(s.a.Fragment, null, s.a.createElement(f.a, null), s.a.createElement(ee, {
3022
+ className: Ca.menuItemHeader
3023
+ }, Object(R.t)("My templates")), a.map(n)), a.length > 0 && t.length > 0 && i && s.a.createElement(s.a.Fragment, null, s.a.createElement(f.a, null), s.a.createElement(Ee.a, {
3024
+ summary: Object(R.t)("Default templates"),
3025
+ open: !i.get().defaultsCollapsed,
3026
+ onStateChange: e => i.set({
3027
+ defaultsCollapsed: !e
3028
+ })
3029
+ }, t.map(n))), 0 === a.length && t.length > 0 && s.a.createElement(s.a.Fragment, null, s.a.createElement(f.a, null), s.a.createElement(ee, {
3030
+ className: Ca.menuItemHeader
3031
+ }, Object(R.t)("Default templates")), t.map(n)));
3032
+ }
3033
+
3034
+ var ka = a("hY0g"),
3035
+ xa = a.n(ka);
3036
+
3037
+ class Ea {
3038
+ constructor(e, t) {
3039
+ var a, i;
3040
+ this._isFavoriteEnabled = n.enabled("items_favoriting"), this.handleFavorTemplate = e => {
3041
+ if (!this._isFavoriteEnabled) return;
3042
+ const {
3043
+ name: t
3044
+ } = e;
3045
+ this._isTemplateFavorite(t) ? this._removeFavoriteTemplate(t) : this._addFavoriteTemplate(t);
3046
+ }, this.handleDropdownOpen = () => {
3047
+ this._setState({
3048
+ isLoading: !0
3049
+ }), this._studyTemplates.invalidate(), this._studyTemplates.refreshStudyTemplateList(() => this._setState({
3050
+ isLoading: !1
3051
+ }));
3052
+ }, this.handleApplyTemplate = e => {
3053
+ this._studyTemplates.applyTemplate(e.name);
3054
+ }, this.handleRemoveTemplate = e => {
3055
+ this._studyTemplates.deleteStudyTemplate(e.name);
3056
+ }, this.handleSaveTemplate = () => {
3057
+ this._studyTemplates.showSaveAsDialog();
3058
+ }, this._studyTemplates = e, this._favoriteStudyTemplatesService = t;
3059
+
3060
+ const s = (null === (a = this._favoriteStudyTemplatesService) || void 0 === a ? void 0 : a.get()) || [],
3061
+ o = this._studyTemplates.list();
3062
+
3063
+ this._state = new xa.a({
3064
+ isLoading: !1,
3065
+ studyTemplatesList: o,
3066
+ favorites: s
3067
+ }), this._studyTemplates.getOnChange().subscribe(this, this._handleTemplatesChange), this._studyTemplates.refreshStudyTemplateList(), this._isFavoriteEnabled && (null === (i = this._favoriteStudyTemplatesService) || void 0 === i || i.getOnChange().subscribe(this, this._handleFavoritesChange));
3068
+ }
3069
+
3070
+ destroy() {
3071
+ var e;
3072
+ this._studyTemplates.getOnChange().unsubscribe(this, this._handleTemplatesChange), this._isFavoriteEnabled && (null === (e = this._favoriteStudyTemplatesService) || void 0 === e || e.getOnChange().unsubscribe(this, this._handleFavoritesChange));
3073
+ }
3074
+
3075
+ state() {
3076
+ return this._state.readonly();
3077
+ }
3078
+
3079
+ _setState(e) {
3080
+ this._state.setValue(_objectSpread(_objectSpread({}, this._state.value()), e));
3081
+ }
3082
+
3083
+ _handleTemplatesChange() {
3084
+ this._setState({
3085
+ studyTemplatesList: this._studyTemplates.list()
3086
+ });
3087
+ }
3088
+
3089
+ _handleFavoritesChange(e) {
3090
+ this._isFavoriteEnabled && this._setState({
3091
+ favorites: e
3092
+ });
3093
+ }
3094
+
3095
+ _removeFavoriteTemplate(e) {
3096
+ var t;
3097
+
3098
+ const {
3099
+ favorites: a
3100
+ } = this._state.value();
3101
+
3102
+ null === (t = this._favoriteStudyTemplatesService) || void 0 === t || t.set(a.filter(t => t !== e));
3103
+ }
3104
+
3105
+ _addFavoriteTemplate(e) {
3106
+ var t;
3107
+
3108
+ const {
3109
+ favorites: a
3110
+ } = this._state.value();
3111
+
3112
+ null === (t = this._favoriteStudyTemplatesService) || void 0 === t || t.set([...a, e]);
3113
+ }
3114
+
3115
+ _isTemplateFavorite(e) {
3116
+ const {
3117
+ favorites: t
3118
+ } = this._state.value();
3119
+
3120
+ return t.includes(e);
3121
+ }
3122
+
3123
+ }
3124
+
3125
+ var Oa = a("zgWb"),
3126
+ Ma = a("yGrx");
3127
+ const Ta = {
3128
+ title: Object(R.t)("Templates"),
3129
+ tooltip: Object(R.t)("Indicator Templates")
3130
+ },
3131
+ Na = Object(x.b)();
3132
+
3133
+ class Ra extends s.a.PureComponent {
3134
+ constructor(e, t) {
3135
+ super(e, t), this._updateState = e => {
3136
+ this.setState(_objectSpread(_objectSpread({}, e), {}, {
3137
+ isActive: this.state.isActive
3138
+ }));
3139
+ }, this._handleApplyTemplate = e => {
3140
+ this._handleClose(), this._model.handleApplyTemplate(e);
3141
+ }, this._handleRemoveTemplate = e => {
3142
+ this._handleClose(), this._model.handleRemoveTemplate(e);
3143
+ }, this._handleClose = () => {
3144
+ this._handleToggleDropdown(!1);
3145
+ }, this._handleToggleDropdown = e => {
3146
+ const {
3147
+ isActive: t
3148
+ } = this.state,
3149
+ a = "boolean" == typeof e ? e : !t;
3150
+ this.setState({
3151
+ isActive: a
3152
+ });
3153
+ }, Object(x.c)(t, {
3154
+ favoriteStudyTemplatesService: o.any,
3155
+ studyTemplates: o.any.isRequired,
3156
+ templatesMenuViewStateService: o.any
3157
+ });
3158
+ const {
3159
+ favoriteStudyTemplatesService: a,
3160
+ studyTemplates: n
3161
+ } = t;
3162
+ this._model = new Ea(n, a), this.state = _objectSpread(_objectSpread({}, this._model.state().value()), {}, {
3163
+ isActive: !1
3164
+ });
3165
+ }
3166
+
3167
+ componentDidMount() {
3168
+ this._model.state().subscribe(this._updateState);
3169
+ }
3170
+
3171
+ componentWillUnmount() {
3172
+ this._model.state().unsubscribe(this._updateState), this._model.destroy();
3173
+ }
3174
+
3175
+ render() {
3176
+ const {
3177
+ studyTemplatesList: e,
3178
+ favorites: t
3179
+ } = this.state,
3180
+ {
3181
+ isShownQuicks: a,
3182
+ className: n,
3183
+ displayMode: i,
3184
+ id: o
3185
+ } = this.props;
3186
+ return s.a.createElement(wa.Provider, {
3187
+ value: this.context.templatesMenuViewStateService || null
3188
+ }, s.a.createElement(Ia, {
3189
+ id: o,
3190
+ className: n,
3191
+ mode: i,
3192
+ templates: e,
3193
+ favorites: t,
3194
+ onMenuOpen: this._model.handleDropdownOpen,
3195
+ onTemplateFavorite: a ? this._model.handleFavorTemplate : void 0,
3196
+ onTemplateSelect: this._handleApplyTemplate,
3197
+ onTemplateRemove: this._handleRemoveTemplate,
3198
+ onTemplateSave: this._model.handleSaveTemplate
3199
+ }));
3200
+ }
3201
+
3202
+ }
3203
+
3204
+ function Ia(e) {
3205
+ const {
3206
+ id: t,
3207
+ className: a,
3208
+ mode: n,
3209
+ favorites: i,
3210
+ templates: o,
3211
+ isMenuOpen: l,
3212
+ onTemplateSelect: r,
3213
+ onTemplateSave: c,
3214
+ onTemplateFavorite: h,
3215
+ onTemplateRemove: d
3216
+ } = e,
3217
+ m = v()(a, Ma.wrap, {
3218
+ [Ma.full]: "full" === n,
3219
+ [Ma.medium]: "medium" === n
3220
+ }),
3221
+ p = o.filter(e => i.includes(e.name)),
3222
+ g = "small" !== n && h && p.length > 0;
3223
+ return s.a.createElement(b, {
3224
+ id: t,
3225
+ className: m
3226
+ }, s.a.createElement(_.a, {
3227
+ rule: y.a.TabletSmall
3228
+ }, t => s.a.createElement(u.a, {
3229
+ onOpen: e.onMenuOpen,
3230
+ isDrawer: t,
3231
+ drawerPosition: "Bottom",
3232
+ arrow: !1,
3233
+ content: s.a.createElement(j, {
3234
+ className: v()(g && Ma.buttonWithFavorites),
3235
+ displayMode: n,
3236
+ isOpened: l,
3237
+ icon: Oa,
3238
+ text: Ta.title,
3239
+ title: Ta.tooltip,
3240
+ forceInteractive: !0
3241
+ })
3242
+ }, s.a.createElement(fa, {
3243
+ onTemplateSave: c,
3244
+ onTemplateSelect: r,
3245
+ onTemplateRemove: d,
3246
+ onTemplateFavorite: h,
3247
+ templates: o,
3248
+ favorites: p,
3249
+ isTabletSmall: t
3250
+ }))), g && s.a.createElement(Aa, {
3251
+ favorites: p,
3252
+ onTemplateSelect: r
3253
+ }));
3254
+ }
3255
+
3256
+ function Aa(e) {
3257
+ return s.a.createElement(s.a.Fragment, null, e.favorites.map((t, a, n) => s.a.createElement(aa, {
3258
+ key: t.name,
3259
+ item: t,
3260
+ onApply: e.onTemplateSelect,
3261
+ className: v()({
3262
+ [Ma.first]: 0 === a,
3263
+ [Ma.last]: a === n.length - 1
3264
+ })
3265
+ })));
3266
+ }
3267
+
3268
+ Ra.contextType = Na;
3269
+ a("HbRj");
3270
+ var ja = a("S+Ii"),
3271
+ Fa = a("bQ7Y"),
3272
+ Ha = a("wnRL"),
3273
+ za = a("2xRE");
3274
+
3275
+ const La = {
3276
+ undoHint: Object(R.t)("Undo {hint}"),
3277
+ redoHint: Object(R.t)("Redo {hint}")
3278
+ },
3279
+ Wa = {
3280
+ undoHotKey: Object(Q.b)({
3281
+ keys: ["Ctrl", "Z"],
3282
+ text: "{0} + {1}"
3283
+ }),
3284
+ redoHotKey: Object(Q.b)({
3285
+ keys: ["Ctrl", "Y"],
3286
+ text: "{0} + {1}"
3287
+ })
3288
+ },
3289
+ Da = Object(it.b)(Fa, ja, {
3290
+ buttonUndo: "button",
3291
+ buttonRedo: "button"
3292
+ }),
3293
+ Pa = _objectSpread(_objectSpread({}, Fa), {}, {
3294
+ button: Da.buttonUndo
3295
+ }),
3296
+ Ua = _objectSpread(_objectSpread({}, Fa), {}, {
3297
+ button: Da.buttonRedo
3298
+ }),
3299
+ Va = Object(x.b)();
3300
+
3301
+ class Ba extends i.PureComponent {
3302
+ constructor(e, t) {
3303
+ super(e, t), this._batched = null, this._handleClickUndo = () => {
3304
+ Object(F.trackEvent)("GUI", "Undo");
3305
+ const {
3306
+ chartWidgetCollection: e
3307
+ } = this.context;
3308
+ e.undoHistory.undo();
3309
+ }, this._handleClickRedo = () => {
3310
+ Object(F.trackEvent)("GUI", "Redo");
3311
+ const {
3312
+ chartWidgetCollection: e
3313
+ } = this.context;
3314
+ e.undoHistory.redo();
3315
+ }, Object(x.c)(t, {
3316
+ chartWidgetCollection: o.any.isRequired
3317
+ }), this.state = this._getStateFromUndoHistory();
3318
+ }
3319
+
3320
+ componentDidMount() {
3321
+ const {
3322
+ chartWidgetCollection: e
3323
+ } = this.context;
3324
+ e.undoHistory.redoStack().onChange().subscribe(this, this._onChangeStack), e.undoHistory.undoStack().onChange().subscribe(this, this._onChangeStack);
3325
+ }
3326
+
3327
+ componentWillUnmount() {
3328
+ const {
3329
+ chartWidgetCollection: e
3330
+ } = this.context;
3331
+ e.undoHistory.redoStack().onChange().unsubscribe(this, this._onChangeStack), e.undoHistory.undoStack().onChange().unsubscribe(this, this._onChangeStack), this._batched = null;
3332
+ }
3333
+
3334
+ render() {
3335
+ const {
3336
+ id: e
3337
+ } = this.props,
3338
+ {
3339
+ isEnabledRedo: t,
3340
+ isEnabledUndo: a,
3341
+ redoStack: n,
3342
+ undoStack: s
3343
+ } = this.state;
3344
+ return i.createElement(b, {
3345
+ id: e
3346
+ }, i.createElement(g.b, {
3347
+ icon: Ha,
3348
+ isDisabled: !a,
3349
+ onClick: this._handleClickUndo,
3350
+ title: a ? La.undoHint.format({
3351
+ hint: s
3352
+ }) : void 0,
3353
+ "data-tooltip-hotkey": a ? Wa.undoHotKey : void 0,
3354
+ theme: Pa
3355
+ }), i.createElement(g.b, {
3356
+ icon: za,
3357
+ isDisabled: !t,
3358
+ onClick: this._handleClickRedo,
3359
+ title: t ? La.redoHint.format({
3360
+ hint: n
3361
+ }) : void 0,
3362
+ "data-tooltip-hotkey": t ? Wa.redoHotKey : void 0,
3363
+ theme: Ua
3364
+ }));
3365
+ }
3366
+
3367
+ _onChangeStack() {
3368
+ null === this._batched && (this._batched = Promise.resolve().then(() => {
3369
+ if (null === this._batched) return;
3370
+ this._batched = null;
3371
+
3372
+ const e = this._getStateFromUndoHistory();
3373
+
3374
+ this.setState(e);
3375
+ }));
3376
+ }
3377
+
3378
+ _getStateFromUndoHistory() {
3379
+ const {
3380
+ chartWidgetCollection: e
3381
+ } = this.context,
3382
+ t = e.undoHistory.undoStack(),
3383
+ a = e.undoHistory.redoStack(),
3384
+ n = a.head(),
3385
+ i = t.head();
3386
+ return {
3387
+ isEnabledRedo: !a.isEmpty(),
3388
+ isEnabledUndo: !t.isEmpty(),
3389
+ redoStack: n ? n.text() : "",
3390
+ undoStack: i ? i.text() : ""
3391
+ };
3392
+ }
3393
+
3394
+ }
3395
+
3396
+ Ba.contextType = Va;
3397
+ var Ka = a("i8i4"),
3398
+ Qa = a("cvc5");
3399
+
3400
+ class Ga extends i.PureComponent {
3401
+ constructor() {
3402
+ super(...arguments), this._ref = null, this._update = () => {
3403
+ this.forceUpdate();
3404
+ }, this._setRef = e => {
3405
+ this._ref = e;
3406
+ }, this._handleMeasure = _ref2 => {
3407
+ let {
3408
+ width: e
3409
+ } = _ref2;
3410
+ this.props.width.setValue(e);
3411
+ };
3412
+ }
3413
+
3414
+ componentDidMount() {
3415
+ const {
3416
+ element: e,
3417
+ isFake: t,
3418
+ width: a
3419
+ } = this.props;
3420
+ if (t) a.subscribe(this._update);else {
3421
+ const t = Object(K.ensureNotNull)(this._ref);
3422
+ Ka.findDOMNode(t).appendChild(e);
3423
+ }
3424
+ }
3425
+
3426
+ componentWillUnmount() {
3427
+ const {
3428
+ width: e,
3429
+ isFake: t
3430
+ } = this.props;
3431
+ t && e.unsubscribe(this._update);
3432
+ }
3433
+
3434
+ render() {
3435
+ const {
3436
+ isFake: e = !1,
3437
+ width: t
3438
+ } = this.props;
3439
+ return i.createElement(Qa, {
3440
+ shouldMeasure: !e,
3441
+ whitelist: ["width"],
3442
+ onMeasure: this._handleMeasure
3443
+ }, i.createElement(b, {
3444
+ ref: this._setRef,
3445
+ style: e ? {
3446
+ width: t.value()
3447
+ } : void 0,
3448
+ "data-is-custom-header-element": !0
3449
+ }));
3450
+ }
3451
+
3452
+ }
3453
+
3454
+ function Xa(e) {
3455
+ const {
3456
+ displayMode: t,
3457
+ params: a
3458
+ } = e;
3459
+ return s.a.createElement(u.a, {
3460
+ content: s.a.createElement(j, {
3461
+ collapseWhen: void 0 !== a.icon ? void 0 : [],
3462
+ displayMode: t,
3463
+ icon: a.icon,
3464
+ text: a.title,
3465
+ title: a.tooltip,
3466
+ "data-name": "dropdown",
3467
+ "data-is-custom-header-element": !0
3468
+ }),
3469
+ drawerPosition: "Bottom",
3470
+ drawerBreakpoint: y.a.TabletSmall,
3471
+ arrow: !1
3472
+ }, a.items.map((e, t) => s.a.createElement(d.b, {
3473
+ key: t,
3474
+ label: e.title,
3475
+ onClick: () => e.onSelect(),
3476
+ "data-name": "dropdown-item"
3477
+ })));
3478
+ }
3479
+
3480
+ function qa() {
3481
+ return {
3482
+ Bars: n.enabled("header_chart_type") ? N : void 0,
3483
+ Compare: n.enabled("header_compare") ? W : void 0,
3484
+ Custom: Ga,
3485
+ Fullscreen: n.enabled("header_fullscreen_button") ? B : void 0,
3486
+ Indicators: n.enabled("header_indicators") ? le : void 0,
3487
+ Intervals: n.enabled("header_resolutions") ? Le : void 0,
3488
+ OpenPopup: Ve,
3489
+ Properties: n.enabled("header_settings") && n.enabled("show_chart_property_page") ? Ge : void 0,
3490
+ SaveLoad: n.enabled("header_saveload") ? wt : void 0,
3491
+ Screenshot: n.enabled("header_screenshot") ? Kt : void 0,
3492
+ SymbolSearch: n.enabled("header_symbol_search") ? $t : void 0,
3493
+ Templates: n.enabled("study_templates") ? Ra : void 0,
3494
+ Dropdown: Xa,
3495
+ UndoRedo: n.enabled("header_undo_redo") ? Ba : void 0,
3496
+ Layout: void 0
3497
+ };
3498
+ }
3499
+
3500
+ a.d(t, "getRestrictedToolSet", function () {
3501
+ return qa;
3502
+ });
3503
+ },
3504
+ nPPD: function nPPD(e, t, a) {
3505
+ "use strict";
3506
+
3507
+ function n(e, t) {
3508
+ let a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
3509
+ const n = Object.assign({}, t);
3510
+
3511
+ for (const i of Object.keys(t)) {
3512
+ const s = a[i] || i;
3513
+ s in e && (n[i] = [e[s], t[i]].join(" "));
3514
+ }
3515
+
3516
+ return n;
3517
+ }
3518
+
3519
+ function i(e, t) {
3520
+ let a = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
3521
+ return Object.assign({}, e, n(e, t, a));
3522
+ }
3523
+
3524
+ a.d(t, "b", function () {
3525
+ return n;
3526
+ }), a.d(t, "a", function () {
3527
+ return i;
3528
+ });
3529
+ },
3530
+ npeR: function npeR(e, t) {
3531
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" width="28" height="28" fill="none"><path stroke="currentColor" d="M6.5 16v4.5a1 1 0 001 1h14a1 1 0 001-1V16M14.5 5V17m-4-3.5l4 4l4-4"/></svg>';
3532
+ },
3533
+ nrMg: function nrMg(e, t, a) {
3534
+ e.exports = {
3535
+ dottedCloud: "dottedCloud-3RnJMRVd",
3536
+ check: "check-3RnJMRVd",
3537
+ spinningCloud: "spinningCloud-3RnJMRVd",
3538
+ arrow: "arrow-3RnJMRVd",
3539
+ arrowGap: "arrowGap-3RnJMRVd",
3540
+ container: "container-3RnJMRVd",
3541
+ unsaved: "unsaved-3RnJMRVd",
3542
+ hovered: "hovered-3RnJMRVd",
3543
+ saving: "saving-3RnJMRVd",
3544
+ saved: "saved-3RnJMRVd"
3545
+ };
3546
+ },
3547
+ os48: function os48(e, t, a) {
3548
+ e.exports = {
3549
+ footer: "footer-3r-9t_XG"
3550
+ };
3551
+ },
3552
+ "p0W+": function p0W(e, t, a) {
3553
+ "use strict";
3554
+
3555
+ a.d(t, "a", function () {
3556
+ return l;
3557
+ });
3558
+ var n = a("q1tI"),
3559
+ i = a("TSYQ"),
3560
+ s = a("tU7i"),
3561
+ o = a("EvtC");
3562
+ const l = n.forwardRef((e, t) => {
3563
+ const {
3564
+ className: a
3565
+ } = e,
3566
+ l = _objectWithoutProperties(e, _excluded5);
3567
+
3568
+ return n.createElement(s.b, _objectSpread(_objectSpread({}, l), {}, {
3569
+ ref: t,
3570
+ className: i(a, o.button)
3571
+ }));
3572
+ });
3573
+ },
3574
+ pqsj: function pqsj(e, t) {
3575
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="currentColor"><path d="M17 11v6h3v-6h-3zm-.5-1h4a.5.5 0 0 1 .5.5v7a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5v-7a.5.5 0 0 1 .5-.5z"/><path d="M18 7h1v3.5h-1zm0 10.5h1V21h-1z"/><path d="M9 8v12h3V8H9zm-.5-1h4a.5.5 0 0 1 .5.5v13a.5.5 0 0 1-.5.5h-4a.5.5 0 0 1-.5-.5v-13a.5.5 0 0 1 .5-.5z"/><path d="M10 4h1v3.5h-1zm0 16.5h1V24h-1z"/></svg>';
3576
+ },
3577
+ pr86: function pr86(e, t, a) {
3578
+ "use strict";
3579
+
3580
+ a.d(t, "a", function () {
3581
+ return h;
3582
+ });
3583
+ a("YFKU");
3584
+ var n = a("q1tI"),
3585
+ i = a("TSYQ"),
3586
+ s = a("Iivm"),
3587
+ o = a("sg5d"),
3588
+ l = a("XfUw"),
3589
+ r = a("fEjm");
3590
+ const c = {
3591
+ add: window.t("Add to favorites"),
3592
+ remove: window.t("Remove from favorites")
3593
+ };
3594
+
3595
+ function h(e) {
3596
+ const {
3597
+ className: t,
3598
+ isFilled: a,
3599
+ isActive: h,
3600
+ onClick: d
3601
+ } = e,
3602
+ u = _objectWithoutProperties(e, _excluded6);
3603
+
3604
+ return n.createElement(s.a, _objectSpread(_objectSpread({}, u), {}, {
3605
+ className: i(r.favorite, "apply-common-tooltip", a && r.checked, h && r.active, t),
3606
+ icon: a ? o : l,
3607
+ onClick: d,
3608
+ title: a ? c.remove : c.add
3609
+ }));
3610
+ }
3611
+ },
3612
+ s0T6: function s0T6(e, t, a) {
3613
+ e.exports = {
3614
+ description: "description-2U1ZnBls"
3615
+ };
3616
+ },
3617
+ sHKj: function sHKj(e, t, a) {
3618
+ e.exports = {
3619
+ title: "title-2VoDfDWK"
3620
+ };
3621
+ },
3622
+ sbT4: function sbT4(e, t, a) {
3623
+ e.exports = {
3624
+ button: "button-2twPcS_V"
3625
+ };
3626
+ },
3627
+ sg5d: function sg5d(e, t) {
3628
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 18 18" width="18" height="18" fill="none"><path fill="currentColor" d="M9 1l2.35 4.76 5.26.77-3.8 3.7.9 5.24L9 13l-4.7 2.47.9-5.23-3.8-3.71 5.25-.77L9 1z"/></svg>';
3629
+ },
3630
+ t2Sj: function t2Sj(e, t) {
3631
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M11.982 16.689L17.192 12h3.033l4.149-4.668-.748-.664L19.776 11h-2.968l-4.79 4.311L9 12.293l-4.354 4.353.708.708L9 13.707z"/></svg>';
3632
+ },
3633
+ tOje: function tOje(e, t, a) {
3634
+ "use strict";
3635
+
3636
+ a.d(t, "a", function () {
3637
+ return r;
3638
+ });
3639
+ var n = a("q1tI"),
3640
+ i = a.n(n),
3641
+ s = a("TSYQ"),
3642
+ o = a.n(s),
3643
+ l = a("os48");
3644
+
3645
+ function r(e) {
3646
+ const {
3647
+ className: t,
3648
+ children: a
3649
+ } = e;
3650
+ return i.a.createElement("div", {
3651
+ className: o()(l.footer, t)
3652
+ }, a);
3653
+ }
3654
+ },
3655
+ uPhS: function uPhS(e, t, a) {
3656
+ e.exports = {
3657
+ smallWidthMenuItem: "smallWidthMenuItem-2BP6_jxN"
3658
+ };
3659
+ },
3660
+ uafl: function uafl(e, t) {
3661
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><g fill="currentColor" fill-rule="evenodd"><path fill-rule="nonzero" d="M14 17a3 3 0 1 1 0-6 3 3 0 0 1 0 6zm0-1a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/><path d="M5.005 16A1.003 1.003 0 0 1 4 14.992v-1.984A.998.998 0 0 1 5 12h1.252a7.87 7.87 0 0 1 .853-2.06l-.919-.925c-.356-.397-.348-1 .03-1.379l1.42-1.42a1 1 0 0 1 1.416.007l.889.882A7.96 7.96 0 0 1 12 6.253V5c0-.514.46-1 1-1h2c.557 0 1 .44 1 1v1.253a7.96 7.96 0 0 1 2.06.852l.888-.882a1 1 0 0 1 1.416-.006l1.42 1.42a.999.999 0 0 1 .029 1.377s-.4.406-.918.926a7.87 7.87 0 0 1 .853 2.06H23c.557 0 1 .447 1 1.008v1.984A.998.998 0 0 1 23 16h-1.252a7.87 7.87 0 0 1-.853 2.06l.882.888a1 1 0 0 1 .006 1.416l-1.42 1.42a1 1 0 0 1-1.415-.007l-.889-.882a7.96 7.96 0 0 1-2.059.852v1.248c0 .56-.45 1.005-1.008 1.005h-1.984A1.004 1.004 0 0 1 12 22.995v-1.248a7.96 7.96 0 0 1-2.06-.852l-.888.882a1 1 0 0 1-1.416.006l-1.42-1.42a1 1 0 0 1 .007-1.415l.882-.888A7.87 7.87 0 0 1 6.252 16H5.005zm3.378-6.193l-.227.34A6.884 6.884 0 0 0 7.14 12.6l-.082.4H5.005C5.002 13 5 13.664 5 14.992c0 .005.686.008 2.058.008l.082.4c.18.883.52 1.71 1.016 2.453l.227.34-1.45 1.46c-.004.003.466.477 1.41 1.422l1.464-1.458.34.227a6.959 6.959 0 0 0 2.454 1.016l.399.083v2.052c0 .003.664.005 1.992.005.005 0 .008-.686.008-2.057l.399-.083a6.959 6.959 0 0 0 2.454-1.016l.34-.227 1.46 1.45c.003.004.477-.466 1.422-1.41l-1.458-1.464.227-.34A6.884 6.884 0 0 0 20.86 15.4l.082-.4h2.053c.003 0 .005-.664.005-1.992 0-.005-.686-.008-2.058-.008l-.082-.4a6.884 6.884 0 0 0-1.016-2.453l-.227-.34 1.376-1.384.081-.082-1.416-1.416-1.465 1.458-.34-.227a6.959 6.959 0 0 0-2.454-1.016L15 7.057V5c0-.003-.664-.003-1.992 0-.005 0-.008.686-.008 2.057l-.399.083a6.959 6.959 0 0 0-2.454 1.016l-.34.227-1.46-1.45c-.003-.004-.477.466-1.421 1.408l1.457 1.466z"/></g></svg>';
3662
+ },
3663
+ uhCe: function uhCe(e, t, a) {
3664
+ "use strict";
3665
+
3666
+ a.d(t, "a", function () {
3667
+ return i;
3668
+ });
3669
+ var n = a("ASyk");
3670
+ const i = {
3671
+ SmallHeight: n["small-height-breakpoint"],
3672
+ TabletSmall: n["tablet-small-breakpoint"],
3673
+ TabletNormal: n["tablet-normal-breakpoint"]
3674
+ };
3675
+ },
3676
+ wnRL: function wnRL(e, t) {
3677
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28"><path fill="currentColor" d="M8.707 13l2.647 2.646-.707.708L6.792 12.5l3.853-3.854.708.708L8.707 12H14.5a5.5 5.5 0 0 1 5.5 5.5V19h-1v-1.5a4.5 4.5 0 0 0-4.5-4.5H8.707z"/></svg>';
3678
+ },
3679
+ yGrx: function yGrx(e, t, a) {
3680
+ e.exports = {
3681
+ wrap: "wrap-13GsG5XA",
3682
+ full: "full-13GsG5XA",
3683
+ first: "first-13GsG5XA",
3684
+ last: "last-13GsG5XA",
3685
+ medium: "medium-13GsG5XA",
3686
+ buttonWithFavorites: "buttonWithFavorites-13GsG5XA"
3687
+ };
3688
+ },
3689
+ zgWb: function zgWb(e, t) {
3690
+ e.exports = '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 28 28" width="28" height="28" fill="none"><path stroke="currentColor" d="M6 12l3.88-4.31a1 1 0 0 1 1.35-.13l5.07 3.9a1 1 0 0 0 1.32-.08L23 6M6.5 22v-4m4 4v-8m4 8v-6m4 6v-4m4 4v-8"/></svg>';
3691
+ }
3692
+ }]);