@refinitiv-ui/elements 5.3.3 → 5.7.0

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 (617) hide show
  1. package/CHANGELOG.md +70 -0
  2. package/lib/accordion/custom-elements.json +49 -0
  3. package/lib/accordion/custom-elements.md +18 -0
  4. package/lib/accordion/index.d.ts +76 -0
  5. package/lib/accordion/index.js +136 -0
  6. package/lib/accordion/themes/halo/dark/index.js +3 -0
  7. package/lib/accordion/themes/halo/light/index.js +3 -0
  8. package/lib/accordion/themes/solar/charcoal/index.js +3 -0
  9. package/lib/accordion/themes/solar/pearl/index.js +3 -0
  10. package/lib/appstate-bar/custom-elements.json +49 -0
  11. package/lib/appstate-bar/custom-elements.md +22 -0
  12. package/lib/appstate-bar/index.d.ts +65 -0
  13. package/lib/appstate-bar/index.js +100 -0
  14. package/lib/appstate-bar/themes/halo/dark/index.js +3 -0
  15. package/lib/appstate-bar/themes/halo/light/index.js +3 -0
  16. package/lib/appstate-bar/themes/solar/charcoal/index.js +3 -0
  17. package/lib/appstate-bar/themes/solar/pearl/index.js +3 -0
  18. package/lib/autosuggest/custom-elements.json +233 -0
  19. package/lib/autosuggest/custom-elements.md +47 -0
  20. package/lib/autosuggest/helpers/types.d.ts +54 -0
  21. package/lib/autosuggest/helpers/types.js +1 -0
  22. package/lib/autosuggest/helpers/utils.d.ts +39 -0
  23. package/lib/autosuggest/helpers/utils.js +75 -0
  24. package/lib/autosuggest/index.d.ts +534 -0
  25. package/lib/autosuggest/index.js +1251 -0
  26. package/lib/autosuggest/themes/halo/dark/index.js +5 -0
  27. package/lib/autosuggest/themes/halo/light/index.js +5 -0
  28. package/lib/autosuggest/themes/solar/charcoal/index.js +5 -0
  29. package/lib/autosuggest/themes/solar/pearl/index.js +5 -0
  30. package/lib/button/custom-elements.json +119 -0
  31. package/lib/button/custom-elements.md +23 -0
  32. package/lib/button/index.d.ts +132 -0
  33. package/lib/button/index.js +223 -0
  34. package/lib/button/themes/halo/dark/index.js +3 -0
  35. package/lib/button/themes/halo/light/index.js +3 -0
  36. package/lib/button/themes/solar/charcoal/index.js +3 -0
  37. package/lib/button/themes/solar/pearl/index.js +3 -0
  38. package/lib/button-bar/custom-elements.json +26 -0
  39. package/lib/button-bar/custom-elements.md +9 -0
  40. package/lib/button-bar/index.d.ts +76 -0
  41. package/lib/button-bar/index.js +155 -0
  42. package/lib/button-bar/themes/halo/dark/index.js +3 -0
  43. package/lib/button-bar/themes/halo/light/index.js +3 -0
  44. package/lib/button-bar/themes/solar/charcoal/index.js +3 -0
  45. package/lib/button-bar/themes/solar/pearl/index.js +3 -0
  46. package/lib/calendar/constants.d.ts +22 -0
  47. package/lib/calendar/constants.js +23 -0
  48. package/lib/calendar/custom-elements.json +199 -0
  49. package/lib/calendar/custom-elements.md +35 -0
  50. package/lib/calendar/index.d.ts +321 -0
  51. package/lib/calendar/index.js +906 -0
  52. package/lib/calendar/locales.d.ts +1 -0
  53. package/lib/calendar/locales.js +40 -0
  54. package/lib/calendar/themes/halo/dark/index.js +3 -0
  55. package/lib/calendar/themes/halo/light/index.js +3 -0
  56. package/lib/calendar/themes/solar/charcoal/index.js +3 -0
  57. package/lib/calendar/themes/solar/pearl/index.js +3 -0
  58. package/lib/calendar/types.d.ts +29 -0
  59. package/lib/calendar/types.js +1 -0
  60. package/lib/calendar/utils.d.ts +42 -0
  61. package/lib/calendar/utils.js +119 -0
  62. package/lib/canvas/custom-elements.json +69 -0
  63. package/lib/canvas/custom-elements.md +27 -0
  64. package/lib/canvas/index.d.ts +100 -0
  65. package/lib/canvas/index.js +172 -0
  66. package/lib/canvas/themes/halo/dark/index.js +2 -0
  67. package/lib/canvas/themes/halo/light/index.js +2 -0
  68. package/lib/canvas/themes/solar/charcoal/index.js +2 -0
  69. package/lib/canvas/themes/solar/pearl/index.js +2 -0
  70. package/lib/card/custom-elements.json +59 -0
  71. package/lib/card/custom-elements.md +24 -0
  72. package/lib/card/helpers/types.d.ts +12 -0
  73. package/lib/card/helpers/types.js +1 -0
  74. package/lib/card/index.d.ts +140 -0
  75. package/lib/card/index.js +246 -0
  76. package/lib/card/themes/halo/dark/index.js +5 -0
  77. package/lib/card/themes/halo/light/index.js +5 -0
  78. package/lib/card/themes/solar/charcoal/index.js +5 -0
  79. package/lib/card/themes/solar/pearl/index.js +5 -0
  80. package/lib/chart/custom-elements.json +42 -0
  81. package/lib/chart/custom-elements.md +16 -0
  82. package/lib/chart/helpers/index.d.ts +2 -0
  83. package/lib/chart/helpers/index.js +2 -0
  84. package/lib/chart/helpers/legend.d.ts +5 -0
  85. package/lib/chart/helpers/legend.js +78 -0
  86. package/lib/chart/helpers/merge.d.ts +15 -0
  87. package/lib/chart/helpers/merge.js +28 -0
  88. package/lib/chart/helpers/types.d.ts +69 -0
  89. package/lib/chart/helpers/types.js +1 -0
  90. package/lib/chart/index.d.ts +187 -0
  91. package/lib/chart/index.js +491 -0
  92. package/lib/chart/plugins/doughnut-center-label.d.ts +3 -0
  93. package/lib/chart/plugins/doughnut-center-label.js +196 -0
  94. package/lib/chart/themes/halo/dark/index.js +4 -0
  95. package/lib/chart/themes/halo/light/index.js +4 -0
  96. package/lib/chart/themes/solar/charcoal/index.js +4 -0
  97. package/lib/chart/themes/solar/pearl/index.js +4 -0
  98. package/lib/checkbox/custom-elements.json +67 -0
  99. package/lib/checkbox/custom-elements.md +18 -0
  100. package/lib/checkbox/index.d.ts +95 -0
  101. package/lib/checkbox/index.js +193 -0
  102. package/lib/checkbox/themes/halo/dark/index.js +4 -0
  103. package/lib/checkbox/themes/halo/light/index.js +4 -0
  104. package/lib/checkbox/themes/solar/charcoal/index.js +4 -0
  105. package/lib/checkbox/themes/solar/pearl/index.js +4 -0
  106. package/lib/clock/custom-elements.json +121 -0
  107. package/lib/clock/custom-elements.md +28 -0
  108. package/lib/clock/index.d.ts +319 -0
  109. package/lib/clock/index.js +581 -0
  110. package/lib/clock/themes/halo/dark/index.js +2 -0
  111. package/lib/clock/themes/halo/light/index.js +2 -0
  112. package/lib/clock/themes/solar/charcoal/index.js +2 -0
  113. package/lib/clock/themes/solar/pearl/index.js +2 -0
  114. package/lib/clock/utils/TickManager.d.ts +14 -0
  115. package/lib/clock/utils/TickManager.js +66 -0
  116. package/lib/clock/utils/timestamps.d.ts +6 -0
  117. package/lib/clock/utils/timestamps.js +6 -0
  118. package/lib/collapse/custom-elements.json +79 -0
  119. package/lib/collapse/custom-elements.md +27 -0
  120. package/lib/collapse/index.d.ts +119 -0
  121. package/lib/collapse/index.js +197 -0
  122. package/lib/collapse/themes/halo/dark/index.js +5 -0
  123. package/lib/collapse/themes/halo/light/index.js +5 -0
  124. package/lib/collapse/themes/solar/charcoal/index.js +5 -0
  125. package/lib/collapse/themes/solar/pearl/index.js +5 -0
  126. package/lib/color-dialog/custom-elements.json +193 -0
  127. package/lib/color-dialog/custom-elements.md +39 -0
  128. package/lib/color-dialog/elements/color-palettes.d.ts +52 -0
  129. package/lib/color-dialog/elements/color-palettes.js +101 -0
  130. package/lib/color-dialog/elements/grayscale-palettes.d.ts +67 -0
  131. package/lib/color-dialog/elements/grayscale-palettes.js +161 -0
  132. package/lib/color-dialog/elements/palettes.d.ts +65 -0
  133. package/lib/color-dialog/elements/palettes.js +132 -0
  134. package/lib/color-dialog/helpers/color-helpers.d.ts +16 -0
  135. package/lib/color-dialog/helpers/color-helpers.js +161 -0
  136. package/lib/color-dialog/helpers/value-model.d.ts +75 -0
  137. package/lib/color-dialog/helpers/value-model.js +141 -0
  138. package/lib/color-dialog/index.d.ts +232 -0
  139. package/lib/color-dialog/index.js +459 -0
  140. package/lib/color-dialog/themes/halo/dark/index.js +7 -0
  141. package/lib/color-dialog/themes/halo/light/index.js +7 -0
  142. package/lib/color-dialog/themes/solar/charcoal/index.js +7 -0
  143. package/lib/color-dialog/themes/solar/pearl/index.js +7 -0
  144. package/lib/combo-box/custom-elements.json +210 -0
  145. package/lib/combo-box/custom-elements.md +35 -0
  146. package/lib/combo-box/helpers/filter.d.ts +10 -0
  147. package/lib/combo-box/helpers/filter.js +29 -0
  148. package/lib/combo-box/helpers/keyboard-event.d.ts +17 -0
  149. package/lib/combo-box/helpers/keyboard-event.js +19 -0
  150. package/lib/combo-box/helpers/types.d.ts +11 -0
  151. package/lib/combo-box/helpers/types.js +1 -0
  152. package/lib/combo-box/index.d.ts +523 -0
  153. package/lib/combo-box/index.js +1146 -0
  154. package/lib/combo-box/themes/halo/dark/index.js +8 -0
  155. package/lib/combo-box/themes/halo/light/index.js +8 -0
  156. package/lib/combo-box/themes/solar/charcoal/index.js +8 -0
  157. package/lib/combo-box/themes/solar/pearl/index.js +8 -0
  158. package/lib/counter/custom-elements.json +35 -0
  159. package/lib/counter/custom-elements.md +11 -0
  160. package/lib/counter/index.d.ts +89 -0
  161. package/lib/counter/index.js +152 -0
  162. package/lib/counter/themes/halo/dark/index.js +3 -0
  163. package/lib/counter/themes/halo/light/index.js +3 -0
  164. package/lib/counter/themes/solar/charcoal/index.js +3 -0
  165. package/lib/counter/themes/solar/pearl/index.js +3 -0
  166. package/lib/counter/utils.d.ts +13 -0
  167. package/lib/counter/utils.js +52 -0
  168. package/lib/datetime-picker/custom-elements.json +333 -0
  169. package/lib/datetime-picker/custom-elements.md +49 -0
  170. package/lib/datetime-picker/index.d.ts +498 -0
  171. package/lib/datetime-picker/index.js +1164 -0
  172. package/lib/datetime-picker/locales.d.ts +8 -0
  173. package/lib/datetime-picker/locales.js +57 -0
  174. package/lib/datetime-picker/themes/halo/dark/index.js +7 -0
  175. package/lib/datetime-picker/themes/halo/light/index.js +7 -0
  176. package/lib/datetime-picker/themes/solar/charcoal/index.js +7 -0
  177. package/lib/datetime-picker/themes/solar/pearl/index.js +7 -0
  178. package/lib/datetime-picker/types.d.ts +3 -0
  179. package/lib/datetime-picker/types.js +1 -0
  180. package/lib/datetime-picker/utils.d.ts +55 -0
  181. package/lib/datetime-picker/utils.js +92 -0
  182. package/lib/dialog/custom-elements.json +136 -0
  183. package/lib/dialog/custom-elements.md +47 -0
  184. package/lib/dialog/draggable-element.d.ts +14 -0
  185. package/lib/dialog/draggable-element.js +221 -0
  186. package/lib/dialog/index.d.ts +199 -0
  187. package/lib/dialog/index.js +331 -0
  188. package/lib/dialog/themes/halo/dark/index.js +7 -0
  189. package/lib/dialog/themes/halo/light/index.js +7 -0
  190. package/lib/dialog/themes/solar/charcoal/index.js +7 -0
  191. package/lib/dialog/themes/solar/pearl/index.js +7 -0
  192. package/lib/email-field/custom-elements.json +199 -0
  193. package/lib/email-field/custom-elements.md +35 -0
  194. package/lib/email-field/index.d.ts +152 -0
  195. package/lib/email-field/index.js +286 -0
  196. package/lib/email-field/themes/halo/dark/index.js +3 -0
  197. package/lib/email-field/themes/halo/light/index.js +3 -0
  198. package/lib/email-field/themes/solar/charcoal/index.js +3 -0
  199. package/lib/email-field/themes/solar/pearl/index.js +3 -0
  200. package/lib/events.d.ts +121 -0
  201. package/lib/events.js +1 -0
  202. package/lib/flag/custom-elements.json +35 -0
  203. package/lib/flag/custom-elements.md +10 -0
  204. package/lib/flag/index.d.ts +94 -0
  205. package/lib/flag/index.js +166 -0
  206. package/lib/flag/themes/halo/dark/index.js +2 -0
  207. package/lib/flag/themes/halo/light/index.js +2 -0
  208. package/lib/flag/themes/solar/charcoal/index.js +2 -0
  209. package/lib/flag/themes/solar/pearl/index.js +2 -0
  210. package/lib/flag/utils/FlagLoader.d.ts +47 -0
  211. package/lib/flag/utils/FlagLoader.js +86 -0
  212. package/lib/header/custom-elements.json +36 -0
  213. package/lib/header/custom-elements.md +18 -0
  214. package/lib/header/index.d.ts +46 -0
  215. package/lib/header/index.js +73 -0
  216. package/lib/header/themes/halo/dark/index.js +2 -0
  217. package/lib/header/themes/halo/light/index.js +2 -0
  218. package/lib/header/themes/solar/charcoal/index.js +2 -0
  219. package/lib/header/themes/solar/pearl/index.js +2 -0
  220. package/lib/heatmap/custom-elements.json +151 -0
  221. package/lib/heatmap/custom-elements.md +26 -0
  222. package/lib/heatmap/helpers/color.d.ts +30 -0
  223. package/lib/heatmap/helpers/color.js +68 -0
  224. package/lib/heatmap/helpers/text.d.ts +26 -0
  225. package/lib/heatmap/helpers/text.js +91 -0
  226. package/lib/heatmap/helpers/track.d.ts +102 -0
  227. package/lib/heatmap/helpers/track.js +160 -0
  228. package/lib/heatmap/helpers/types.d.ts +40 -0
  229. package/lib/heatmap/helpers/types.js +1 -0
  230. package/lib/heatmap/index.d.ts +453 -0
  231. package/lib/heatmap/index.js +1103 -0
  232. package/lib/heatmap/themes/halo/dark/index.js +4 -0
  233. package/lib/heatmap/themes/halo/light/index.js +4 -0
  234. package/lib/heatmap/themes/solar/charcoal/index.js +4 -0
  235. package/lib/heatmap/themes/solar/pearl/index.js +4 -0
  236. package/lib/icon/custom-elements.json +36 -0
  237. package/lib/icon/custom-elements.md +8 -0
  238. package/lib/icon/index.d.ts +88 -0
  239. package/lib/icon/index.js +169 -0
  240. package/lib/icon/themes/halo/dark/index.js +2 -0
  241. package/lib/icon/themes/halo/light/index.js +2 -0
  242. package/lib/icon/themes/solar/charcoal/index.js +2 -0
  243. package/lib/icon/themes/solar/pearl/index.js +2 -0
  244. package/lib/icon/utils/IconLoader.d.ts +52 -0
  245. package/lib/icon/utils/IconLoader.js +93 -0
  246. package/lib/index.d.ts +3 -0
  247. package/lib/index.js +3 -0
  248. package/lib/interactive-chart/custom-elements.json +86 -0
  249. package/lib/interactive-chart/custom-elements.md +32 -0
  250. package/lib/interactive-chart/helpers/merge.d.ts +15 -0
  251. package/lib/interactive-chart/helpers/merge.js +28 -0
  252. package/lib/interactive-chart/helpers/types.d.ts +45 -0
  253. package/lib/interactive-chart/helpers/types.js +6 -0
  254. package/lib/interactive-chart/index.d.ts +380 -0
  255. package/lib/interactive-chart/index.js +1090 -0
  256. package/lib/interactive-chart/themes/halo/dark/index.js +3 -0
  257. package/lib/interactive-chart/themes/halo/light/index.js +3 -0
  258. package/lib/interactive-chart/themes/solar/charcoal/index.js +3 -0
  259. package/lib/interactive-chart/themes/solar/pearl/index.js +3 -0
  260. package/lib/item/custom-elements.json +151 -0
  261. package/lib/item/custom-elements.md +29 -0
  262. package/lib/item/helpers/types.d.ts +57 -0
  263. package/lib/item/helpers/types.js +1 -0
  264. package/lib/item/index.d.ts +158 -0
  265. package/lib/item/index.js +271 -0
  266. package/lib/item/themes/halo/dark/index.js +4 -0
  267. package/lib/item/themes/halo/light/index.js +4 -0
  268. package/lib/item/themes/solar/charcoal/index.js +4 -0
  269. package/lib/item/themes/solar/pearl/index.js +4 -0
  270. package/lib/jsx.d.ts +223 -0
  271. package/lib/label/custom-elements.json +52 -0
  272. package/lib/label/custom-elements.md +11 -0
  273. package/lib/label/index.d.ts +102 -0
  274. package/lib/label/index.js +244 -0
  275. package/lib/label/themes/halo/dark/index.js +3 -0
  276. package/lib/label/themes/halo/light/index.js +3 -0
  277. package/lib/label/themes/solar/charcoal/index.js +3 -0
  278. package/lib/label/themes/solar/pearl/index.js +3 -0
  279. package/lib/layout/custom-elements.json +163 -0
  280. package/lib/layout/custom-elements.md +26 -0
  281. package/lib/layout/index.d.ts +107 -0
  282. package/lib/layout/index.js +212 -0
  283. package/lib/layout/themes/halo/dark/index.js +2 -0
  284. package/lib/layout/themes/halo/light/index.js +2 -0
  285. package/lib/layout/themes/solar/charcoal/index.js +2 -0
  286. package/lib/layout/themes/solar/pearl/index.js +2 -0
  287. package/lib/led-gauge/custom-elements.json +113 -0
  288. package/lib/led-gauge/custom-elements.md +17 -0
  289. package/lib/led-gauge/index.d.ts +143 -0
  290. package/lib/led-gauge/index.js +437 -0
  291. package/lib/led-gauge/themes/halo/dark/index.js +3 -0
  292. package/lib/led-gauge/themes/halo/light/index.js +3 -0
  293. package/lib/led-gauge/themes/solar/charcoal/index.js +3 -0
  294. package/lib/led-gauge/themes/solar/pearl/index.js +3 -0
  295. package/lib/list/custom-elements.json +111 -0
  296. package/lib/list/custom-elements.md +30 -0
  297. package/lib/list/extensible-function.d.ts +8 -0
  298. package/lib/list/extensible-function.js +13 -0
  299. package/lib/list/helpers/list-renderer.d.ts +9 -0
  300. package/lib/list/helpers/list-renderer.js +35 -0
  301. package/lib/list/helpers/types.d.ts +3 -0
  302. package/lib/list/helpers/types.js +1 -0
  303. package/lib/list/index.d.ts +292 -0
  304. package/lib/list/index.js +600 -0
  305. package/lib/list/renderer.d.ts +36 -0
  306. package/lib/list/renderer.js +9 -0
  307. package/lib/list/themes/halo/dark/index.js +3 -0
  308. package/lib/list/themes/halo/light/index.js +3 -0
  309. package/lib/list/themes/solar/charcoal/index.js +3 -0
  310. package/lib/list/themes/solar/pearl/index.js +3 -0
  311. package/lib/loader/custom-elements.json +9 -0
  312. package/lib/loader/custom-elements.md +5 -0
  313. package/lib/loader/index.d.ts +41 -0
  314. package/lib/loader/index.js +61 -0
  315. package/lib/loader/themes/halo/dark/index.js +2 -0
  316. package/lib/loader/themes/halo/light/index.js +2 -0
  317. package/lib/loader/themes/solar/charcoal/index.js +2 -0
  318. package/lib/loader/themes/solar/pearl/index.js +2 -0
  319. package/lib/multi-input/custom-elements.json +238 -0
  320. package/lib/multi-input/custom-elements.md +43 -0
  321. package/lib/multi-input/helpers/types.d.ts +11 -0
  322. package/lib/multi-input/helpers/types.js +1 -0
  323. package/lib/multi-input/index.d.ts +297 -0
  324. package/lib/multi-input/index.js +590 -0
  325. package/lib/multi-input/themes/halo/dark/index.js +4 -0
  326. package/lib/multi-input/themes/halo/light/index.js +4 -0
  327. package/lib/multi-input/themes/solar/charcoal/index.js +4 -0
  328. package/lib/multi-input/themes/solar/pearl/index.js +4 -0
  329. package/lib/notification/custom-elements.json +95 -0
  330. package/lib/notification/custom-elements.md +26 -0
  331. package/lib/notification/elements/notification-tray.d.ts +97 -0
  332. package/lib/notification/elements/notification-tray.js +167 -0
  333. package/lib/notification/elements/notification.d.ts +90 -0
  334. package/lib/notification/elements/notification.js +154 -0
  335. package/lib/notification/helpers/status.d.ts +30 -0
  336. package/lib/notification/helpers/status.js +130 -0
  337. package/lib/notification/helpers/types.d.ts +10 -0
  338. package/lib/notification/helpers/types.js +1 -0
  339. package/lib/notification/index.d.ts +2 -0
  340. package/lib/notification/index.js +2 -0
  341. package/lib/notification/themes/halo/dark/index.js +5 -0
  342. package/lib/notification/themes/halo/light/index.js +5 -0
  343. package/lib/notification/themes/solar/charcoal/index.js +5 -0
  344. package/lib/notification/themes/solar/pearl/index.js +5 -0
  345. package/lib/number-field/custom-elements.json +200 -0
  346. package/lib/number-field/custom-elements.md +37 -0
  347. package/lib/number-field/index.d.ts +294 -0
  348. package/lib/number-field/index.js +707 -0
  349. package/lib/number-field/themes/halo/dark/index.js +3 -0
  350. package/lib/number-field/themes/halo/light/index.js +3 -0
  351. package/lib/number-field/themes/solar/charcoal/index.js +3 -0
  352. package/lib/number-field/themes/solar/pearl/index.js +3 -0
  353. package/lib/overlay/custom-elements.json +345 -0
  354. package/lib/overlay/custom-elements.md +54 -0
  355. package/lib/overlay/elements/overlay-backdrop.d.ts +46 -0
  356. package/lib/overlay/elements/overlay-backdrop.js +64 -0
  357. package/lib/overlay/elements/overlay-viewport.d.ts +40 -0
  358. package/lib/overlay/elements/overlay-viewport.js +52 -0
  359. package/lib/overlay/elements/overlay.d.ts +403 -0
  360. package/lib/overlay/elements/overlay.js +1426 -0
  361. package/lib/overlay/helpers/functions.d.ts +13 -0
  362. package/lib/overlay/helpers/functions.js +16 -0
  363. package/lib/overlay/helpers/types.d.ts +97 -0
  364. package/lib/overlay/helpers/types.js +16 -0
  365. package/lib/overlay/index.d.ts +2 -0
  366. package/lib/overlay/index.js +1 -0
  367. package/lib/overlay/managers/backdrop-manager.d.ts +45 -0
  368. package/lib/overlay/managers/backdrop-manager.js +96 -0
  369. package/lib/overlay/managers/close-manager.d.ts +54 -0
  370. package/lib/overlay/managers/close-manager.js +138 -0
  371. package/lib/overlay/managers/focus-manager.d.ts +71 -0
  372. package/lib/overlay/managers/focus-manager.js +228 -0
  373. package/lib/overlay/managers/interaction-lock-manager.d.ts +138 -0
  374. package/lib/overlay/managers/interaction-lock-manager.js +375 -0
  375. package/lib/overlay/managers/viewport-manager.d.ts +93 -0
  376. package/lib/overlay/managers/viewport-manager.js +211 -0
  377. package/lib/overlay/managers/zindex-manager.d.ts +80 -0
  378. package/lib/overlay/managers/zindex-manager.js +195 -0
  379. package/lib/overlay/themes/halo/dark/index.js +4 -0
  380. package/lib/overlay/themes/halo/light/index.js +4 -0
  381. package/lib/overlay/themes/solar/charcoal/index.js +4 -0
  382. package/lib/overlay/themes/solar/pearl/index.js +4 -0
  383. package/lib/overlay-menu/custom-elements.json +194 -0
  384. package/lib/overlay-menu/custom-elements.md +44 -0
  385. package/lib/overlay-menu/helpers/types.d.ts +8 -0
  386. package/lib/overlay-menu/helpers/types.js +1 -0
  387. package/lib/overlay-menu/index.d.ts +385 -0
  388. package/lib/overlay-menu/index.js +933 -0
  389. package/lib/overlay-menu/managers/menu-manager.d.ts +98 -0
  390. package/lib/overlay-menu/managers/menu-manager.js +240 -0
  391. package/lib/overlay-menu/themes/halo/dark/index.js +5 -0
  392. package/lib/overlay-menu/themes/halo/light/index.js +5 -0
  393. package/lib/overlay-menu/themes/solar/charcoal/index.js +5 -0
  394. package/lib/overlay-menu/themes/solar/pearl/index.js +5 -0
  395. package/lib/pagination/custom-elements.json +93 -0
  396. package/lib/pagination/custom-elements.md +27 -0
  397. package/lib/pagination/helpers/types.d.ts +9 -0
  398. package/lib/pagination/helpers/types.js +1 -0
  399. package/lib/pagination/index.d.ts +207 -0
  400. package/lib/pagination/index.js +398 -0
  401. package/lib/pagination/themes/halo/dark/index.js +6 -0
  402. package/lib/pagination/themes/halo/light/index.js +6 -0
  403. package/lib/pagination/themes/solar/charcoal/index.js +6 -0
  404. package/lib/pagination/themes/solar/pearl/index.js +6 -0
  405. package/lib/panel/custom-elements.json +39 -0
  406. package/lib/panel/custom-elements.md +11 -0
  407. package/lib/panel/index.d.ts +48 -0
  408. package/lib/panel/index.js +74 -0
  409. package/lib/panel/themes/halo/dark/index.js +2 -0
  410. package/lib/panel/themes/halo/light/index.js +2 -0
  411. package/lib/panel/themes/solar/charcoal/index.js +2 -0
  412. package/lib/panel/themes/solar/pearl/index.js +2 -0
  413. package/lib/password-field/custom-elements.json +156 -0
  414. package/lib/password-field/custom-elements.md +31 -0
  415. package/lib/password-field/index.d.ts +141 -0
  416. package/lib/password-field/index.js +258 -0
  417. package/lib/password-field/themes/halo/dark/index.js +3 -0
  418. package/lib/password-field/themes/halo/light/index.js +3 -0
  419. package/lib/password-field/themes/solar/charcoal/index.js +3 -0
  420. package/lib/password-field/themes/solar/pearl/index.js +3 -0
  421. package/lib/pill/custom-elements.json +95 -0
  422. package/lib/pill/custom-elements.md +22 -0
  423. package/lib/pill/index.d.ts +97 -0
  424. package/lib/pill/index.js +160 -0
  425. package/lib/pill/themes/halo/dark/index.js +3 -0
  426. package/lib/pill/themes/halo/light/index.js +3 -0
  427. package/lib/pill/themes/solar/charcoal/index.js +3 -0
  428. package/lib/pill/themes/solar/pearl/index.js +3 -0
  429. package/lib/progress-bar/custom-elements.json +58 -0
  430. package/lib/progress-bar/custom-elements.md +18 -0
  431. package/lib/progress-bar/index.d.ts +82 -0
  432. package/lib/progress-bar/index.js +157 -0
  433. package/lib/progress-bar/themes/halo/dark/index.js +2 -0
  434. package/lib/progress-bar/themes/halo/light/index.js +2 -0
  435. package/lib/progress-bar/themes/solar/charcoal/index.js +2 -0
  436. package/lib/progress-bar/themes/solar/pearl/index.js +2 -0
  437. package/lib/radio-button/custom-elements.json +82 -0
  438. package/lib/radio-button/custom-elements.md +19 -0
  439. package/lib/radio-button/index.d.ts +122 -0
  440. package/lib/radio-button/index.js +257 -0
  441. package/lib/radio-button/radio-button-registry.d.ts +22 -0
  442. package/lib/radio-button/radio-button-registry.js +93 -0
  443. package/lib/radio-button/themes/halo/dark/index.js +3 -0
  444. package/lib/radio-button/themes/halo/light/index.js +3 -0
  445. package/lib/radio-button/themes/solar/charcoal/index.js +3 -0
  446. package/lib/radio-button/themes/solar/pearl/index.js +3 -0
  447. package/lib/rating/custom-elements.json +58 -0
  448. package/lib/rating/custom-elements.md +17 -0
  449. package/lib/rating/index.d.ts +91 -0
  450. package/lib/rating/index.js +157 -0
  451. package/lib/rating/themes/halo/dark/index.js +2 -0
  452. package/lib/rating/themes/halo/light/index.js +2 -0
  453. package/lib/rating/themes/solar/charcoal/index.js +2 -0
  454. package/lib/rating/themes/solar/pearl/index.js +2 -0
  455. package/lib/search-field/custom-elements.json +173 -0
  456. package/lib/search-field/custom-elements.md +33 -0
  457. package/lib/search-field/index.d.ts +134 -0
  458. package/lib/search-field/index.js +253 -0
  459. package/lib/search-field/themes/halo/dark/index.js +3 -0
  460. package/lib/search-field/themes/halo/light/index.js +3 -0
  461. package/lib/search-field/themes/solar/charcoal/index.js +3 -0
  462. package/lib/search-field/themes/solar/pearl/index.js +3 -0
  463. package/lib/select/custom-elements.json +103 -0
  464. package/lib/select/custom-elements.md +24 -0
  465. package/lib/select/helpers/types.d.ts +3 -0
  466. package/lib/select/helpers/types.js +1 -0
  467. package/lib/select/index.d.ts +388 -0
  468. package/lib/select/index.js +942 -0
  469. package/lib/select/themes/halo/dark/index.js +5 -0
  470. package/lib/select/themes/halo/light/index.js +5 -0
  471. package/lib/select/themes/solar/charcoal/index.js +5 -0
  472. package/lib/select/themes/solar/pearl/index.js +5 -0
  473. package/lib/sidebar-layout/custom-elements.json +72 -0
  474. package/lib/sidebar-layout/custom-elements.md +22 -0
  475. package/lib/sidebar-layout/index.d.ts +69 -0
  476. package/lib/sidebar-layout/index.js +134 -0
  477. package/lib/sidebar-layout/themes/halo/dark/index.js +3 -0
  478. package/lib/sidebar-layout/themes/halo/light/index.js +3 -0
  479. package/lib/sidebar-layout/themes/solar/charcoal/index.js +3 -0
  480. package/lib/sidebar-layout/themes/solar/pearl/index.js +3 -0
  481. package/lib/slider/custom-elements.json +181 -0
  482. package/lib/slider/custom-elements.md +28 -0
  483. package/lib/slider/index.d.ts +409 -0
  484. package/lib/slider/index.js +1187 -0
  485. package/lib/slider/themes/halo/dark/index.js +3 -0
  486. package/lib/slider/themes/halo/light/index.js +3 -0
  487. package/lib/slider/themes/solar/charcoal/index.js +3 -0
  488. package/lib/slider/themes/solar/pearl/index.js +3 -0
  489. package/lib/sparkline/custom-elements.json +59 -0
  490. package/lib/sparkline/custom-elements.md +16 -0
  491. package/lib/sparkline/index.d.ts +107 -0
  492. package/lib/sparkline/index.js +186 -0
  493. package/lib/sparkline/themes/halo/dark/index.js +2 -0
  494. package/lib/sparkline/themes/halo/light/index.js +2 -0
  495. package/lib/sparkline/themes/solar/charcoal/index.js +2 -0
  496. package/lib/sparkline/themes/solar/pearl/index.js +2 -0
  497. package/lib/swing-gauge/const.d.ts +22 -0
  498. package/lib/swing-gauge/const.js +26 -0
  499. package/lib/swing-gauge/custom-elements.json +109 -0
  500. package/lib/swing-gauge/custom-elements.md +17 -0
  501. package/lib/swing-gauge/helpers.d.ts +8 -0
  502. package/lib/swing-gauge/helpers.js +105 -0
  503. package/lib/swing-gauge/index.d.ts +294 -0
  504. package/lib/swing-gauge/index.js +762 -0
  505. package/lib/swing-gauge/themes/halo/dark/index.js +3 -0
  506. package/lib/swing-gauge/themes/halo/light/index.js +3 -0
  507. package/lib/swing-gauge/themes/solar/charcoal/index.js +3 -0
  508. package/lib/swing-gauge/themes/solar/pearl/index.js +3 -0
  509. package/lib/swing-gauge/types.d.ts +34 -0
  510. package/lib/swing-gauge/types.js +1 -0
  511. package/lib/tab/custom-elements.json +123 -0
  512. package/lib/tab/custom-elements.md +22 -0
  513. package/lib/tab/index.d.ts +118 -0
  514. package/lib/tab/index.js +208 -0
  515. package/lib/tab/themes/halo/dark/index.js +4 -0
  516. package/lib/tab/themes/halo/light/index.js +4 -0
  517. package/lib/tab/themes/solar/charcoal/index.js +4 -0
  518. package/lib/tab/themes/solar/pearl/index.js +4 -0
  519. package/lib/tab-bar/custom-elements.json +52 -0
  520. package/lib/tab-bar/custom-elements.md +11 -0
  521. package/lib/tab-bar/helpers/animate.d.ts +16 -0
  522. package/lib/tab-bar/helpers/animate.js +53 -0
  523. package/lib/tab-bar/index.d.ts +108 -0
  524. package/lib/tab-bar/index.js +218 -0
  525. package/lib/tab-bar/themes/halo/dark/index.js +4 -0
  526. package/lib/tab-bar/themes/halo/light/index.js +4 -0
  527. package/lib/tab-bar/themes/solar/charcoal/index.js +4 -0
  528. package/lib/tab-bar/themes/solar/pearl/index.js +4 -0
  529. package/lib/text-field/custom-elements.json +210 -0
  530. package/lib/text-field/custom-elements.md +37 -0
  531. package/lib/text-field/index.d.ts +193 -0
  532. package/lib/text-field/index.js +409 -0
  533. package/lib/text-field/themes/halo/dark/index.js +3 -0
  534. package/lib/text-field/themes/halo/light/index.js +3 -0
  535. package/lib/text-field/themes/solar/charcoal/index.js +3 -0
  536. package/lib/text-field/themes/solar/pearl/index.js +3 -0
  537. package/lib/time-picker/custom-elements.json +124 -0
  538. package/lib/time-picker/custom-elements.md +28 -0
  539. package/lib/time-picker/index.d.ts +379 -0
  540. package/lib/time-picker/index.js +775 -0
  541. package/lib/time-picker/themes/halo/dark/index.js +4 -0
  542. package/lib/time-picker/themes/halo/light/index.js +4 -0
  543. package/lib/time-picker/themes/solar/charcoal/index.js +4 -0
  544. package/lib/time-picker/themes/solar/pearl/index.js +4 -0
  545. package/lib/toggle/custom-elements.json +82 -0
  546. package/lib/toggle/custom-elements.md +19 -0
  547. package/lib/toggle/index.d.ts +86 -0
  548. package/lib/toggle/index.js +152 -0
  549. package/lib/toggle/themes/halo/dark/index.js +2 -0
  550. package/lib/toggle/themes/halo/light/index.js +2 -0
  551. package/lib/toggle/themes/solar/charcoal/index.js +2 -0
  552. package/lib/toggle/themes/solar/pearl/index.js +2 -0
  553. package/lib/tooltip/custom-elements.json +62 -0
  554. package/lib/tooltip/custom-elements.md +14 -0
  555. package/lib/tooltip/elements/title-tooltip.d.ts +1 -0
  556. package/lib/tooltip/elements/title-tooltip.js +18 -0
  557. package/lib/tooltip/elements/tooltip-element.d.ts +21 -0
  558. package/lib/tooltip/elements/tooltip-element.js +54 -0
  559. package/lib/tooltip/helpers/overflow-tooltip.d.ts +9 -0
  560. package/lib/tooltip/helpers/overflow-tooltip.js +19 -0
  561. package/lib/tooltip/helpers/renderer.d.ts +8 -0
  562. package/lib/tooltip/helpers/renderer.js +11 -0
  563. package/lib/tooltip/helpers/types.d.ts +23 -0
  564. package/lib/tooltip/helpers/types.js +1 -0
  565. package/lib/tooltip/index.d.ts +232 -0
  566. package/lib/tooltip/index.js +477 -0
  567. package/lib/tooltip/managers/tooltip-manager.d.ts +15 -0
  568. package/lib/tooltip/managers/tooltip-manager.js +140 -0
  569. package/lib/tooltip/themes/halo/dark/index.js +3 -0
  570. package/lib/tooltip/themes/halo/light/index.js +3 -0
  571. package/lib/tooltip/themes/solar/charcoal/index.js +3 -0
  572. package/lib/tooltip/themes/solar/pearl/index.js +3 -0
  573. package/lib/tornado-chart/custom-elements.json +45 -0
  574. package/lib/tornado-chart/custom-elements.md +18 -0
  575. package/lib/tornado-chart/elements/tornado-chart.d.ts +78 -0
  576. package/lib/tornado-chart/elements/tornado-chart.js +122 -0
  577. package/lib/tornado-chart/elements/tornado-item.d.ts +110 -0
  578. package/lib/tornado-chart/elements/tornado-item.js +207 -0
  579. package/lib/tornado-chart/index.d.ts +2 -0
  580. package/lib/tornado-chart/index.js +2 -0
  581. package/lib/tornado-chart/themes/halo/dark/index.js +6 -0
  582. package/lib/tornado-chart/themes/halo/light/index.js +6 -0
  583. package/lib/tornado-chart/themes/solar/charcoal/index.js +6 -0
  584. package/lib/tornado-chart/themes/solar/pearl/index.js +6 -0
  585. package/lib/tree/custom-elements.json +113 -0
  586. package/lib/tree/custom-elements.md +32 -0
  587. package/lib/tree/elements/tree-item.d.ts +96 -0
  588. package/lib/tree/elements/tree-item.js +179 -0
  589. package/lib/tree/elements/tree.d.ts +201 -0
  590. package/lib/tree/elements/tree.js +412 -0
  591. package/lib/tree/helpers/filter.d.ts +8 -0
  592. package/lib/tree/helpers/filter.js +33 -0
  593. package/lib/tree/helpers/renderer.d.ts +5 -0
  594. package/lib/tree/helpers/renderer.js +33 -0
  595. package/lib/tree/helpers/types.d.ts +25 -0
  596. package/lib/tree/helpers/types.js +1 -0
  597. package/lib/tree/index.d.ts +4 -0
  598. package/lib/tree/index.js +3 -0
  599. package/lib/tree/managers/tree-manager.d.ts +248 -0
  600. package/lib/tree/managers/tree-manager.js +395 -0
  601. package/lib/tree/themes/halo/dark/index.js +7 -0
  602. package/lib/tree/themes/halo/light/index.js +7 -0
  603. package/lib/tree/themes/solar/charcoal/index.js +7 -0
  604. package/lib/tree/themes/solar/pearl/index.js +7 -0
  605. package/lib/tree-select/custom-elements.json +107 -0
  606. package/lib/tree-select/custom-elements.md +26 -0
  607. package/lib/tree-select/helpers/types.d.ts +4 -0
  608. package/lib/tree-select/helpers/types.js +1 -0
  609. package/lib/tree-select/index.d.ts +402 -0
  610. package/lib/tree-select/index.js +890 -0
  611. package/lib/tree-select/themes/halo/dark/index.js +12 -0
  612. package/lib/tree-select/themes/halo/light/index.js +12 -0
  613. package/lib/tree-select/themes/solar/charcoal/index.js +12 -0
  614. package/lib/tree-select/themes/solar/pearl/index.js +12 -0
  615. package/lib/version.d.ts +1 -0
  616. package/lib/version.js +1 -0
  617. package/package.json +298 -15
@@ -0,0 +1,1090 @@
1
+ var InteractiveChart_1;
2
+ import { __decorate } from "tslib";
3
+ import { ResponsiveElement, html, css, DeprecationNotice } from '@refinitiv-ui/core';
4
+ import { customElement } from '@refinitiv-ui/core/lib/decorators/custom-element.js';
5
+ import { property } from '@refinitiv-ui/core/lib/decorators/property.js';
6
+ import { query } from '@refinitiv-ui/core/lib/decorators/query.js';
7
+ import { VERSION } from '../version.js';
8
+ import { color as parseColor } from '@refinitiv-ui/utils/lib/color.js';
9
+ import { createChart as chart } from 'lightweight-charts';
10
+ import '../tooltip/index.js';
11
+ import { LegendStyle } from './helpers/types.js';
12
+ import { merge } from './helpers/merge.js';
13
+ const NOT_AVAILABLE_DATA = 'N/A';
14
+ const NO_DATA_POINT = '--';
15
+ /**
16
+ * A charting component that allows you to create several use cases of financial chart.
17
+ * By lightweight-charts library.
18
+ * @slot legend - Slot to use for implementing custom legend.
19
+ * @fires initialized - Dispatched when chart is initialized
20
+ */
21
+ let InteractiveChart = InteractiveChart_1 = class InteractiveChart extends ResponsiveElement {
22
+ constructor() {
23
+ super(...arguments);
24
+ /**
25
+ * Chart configurations for init chart
26
+ * @type {InteractiveChartConfig}
27
+ */
28
+ this.config = null;
29
+ /**
30
+ * Hide legend
31
+ */
32
+ this.disabledLegend = false;
33
+ /**
34
+ * Hide jump to latest data button
35
+ */
36
+ this.disabledJumpButton = false;
37
+ /**
38
+ * Deprecation noticed, used to display a warning message
39
+ * when deprecated features are used.
40
+ */
41
+ this.deprecationNotice = new DeprecationNotice('`legendstyle` attribute and property are deprecated. Use `legend-style` for attribute and `legendStyle` property instead.');
42
+ /** Array of series instances in chart */
43
+ this.seriesList = [];
44
+ this.jumpButtonInitialized = false;
45
+ this.legendInitialized = false;
46
+ this.isCrosshairVisible = false;
47
+ this.chart = null;
48
+ this.rowLegend = null;
49
+ this.timeScale = null;
50
+ this.width = 0;
51
+ this.height = 0;
52
+ this.theme = null;
53
+ this.themeColors = [];
54
+ this.hasDataPoint = false;
55
+ /**
56
+ * Set opacity of color
57
+ * @param color color value
58
+ * @param opacity opacity value
59
+ * @returns color parse
60
+ */
61
+ this.setOpacity = (color, opacity) => {
62
+ const colorParse = parseColor(color);
63
+ if (colorParse && opacity !== null) {
64
+ colorParse.opacity = Number(opacity);
65
+ }
66
+ return colorParse;
67
+ };
68
+ /**
69
+ * Handle MouseEventHandler
70
+ * on event subscribeCrosshairMove
71
+ * for create row legend
72
+ * @param param MouseEventParams
73
+ * @returns {void} return undefined has out of boundary chart
74
+ */
75
+ /* istanbul ignore next */
76
+ this.handleCrosshairMoved = (param) => {
77
+ if (!param) {
78
+ return;
79
+ }
80
+ this.createRowLegend(this.rowLegend, param);
81
+ };
82
+ /**
83
+ * Handle TimeRangeChangeEventHandler
84
+ * on event subscribeVisibleTimeRangeChange
85
+ * for create jump last button
86
+ * @returns {void}
87
+ */
88
+ this.handleTimeRangeChange = () => {
89
+ let buttonVisible = false;
90
+ if (this.timeScale) {
91
+ buttonVisible = this.timeScale.scrollPosition() < 0;
92
+ }
93
+ this.jumpButtonContainer.style.display = buttonVisible ? 'block' : 'none';
94
+ // when update data in series then should always show last value
95
+ if (this.internalConfig.series.length === this.seriesList.length) {
96
+ // update legend only when chart already created
97
+ this.updateLegendWithLatestData();
98
+ }
99
+ };
100
+ /**
101
+ * Handle event clicked scroll to realtime
102
+ * @returns {void}
103
+ */
104
+ this.handleScrollToRealTime = () => {
105
+ if (this.timeScale !== null) {
106
+ this.timeScale.scrollToRealTime();
107
+ }
108
+ };
109
+ }
110
+ /**
111
+ * Element version number
112
+ * @returns version number
113
+ */
114
+ static get version() {
115
+ return VERSION;
116
+ }
117
+ /**
118
+ * Set legend style i.e. `horizontal`, `vertical`.
119
+ * Default is `vertical`.
120
+ * @param {LegendStyle} value legend style value
121
+ * @type {"vertical" | "horizontal"} type of legend style
122
+ **/
123
+ set legendStyle(value) {
124
+ const oldValue = this.legendStyle;
125
+ if (oldValue !== value) {
126
+ this._legendStyle = value;
127
+ this.requestUpdate('legend-style', oldValue);
128
+ }
129
+ }
130
+ get legendStyle() {
131
+ return this._legendStyle || this.deprecatedLegendStyle || LegendStyle.vertical;
132
+ }
133
+ /**
134
+ * @returns return config of property component
135
+ */
136
+ get internalConfig() {
137
+ // Check config is available
138
+ return this.config === null ? { series: [] } : this.config;
139
+ }
140
+ /**
141
+ * On Updated Lifecycle
142
+ * @param changedProperties changed properties
143
+ * @returns {void}
144
+ */
145
+ updated(changedProperties) {
146
+ super.updated(changedProperties);
147
+ if (changedProperties.has('config')) {
148
+ if (this.width && this.height && this.config) {
149
+ this.createChart(this.width, this.height, this.config);
150
+ }
151
+ }
152
+ if (changedProperties.has('disabledLegend')) {
153
+ this.onLegendChange(this.disabledLegend);
154
+ }
155
+ if (changedProperties.has('disabledJumpButton')) {
156
+ this.onJumpButtonChange(this.disabledJumpButton);
157
+ }
158
+ if (changedProperties.has('deprecatedLegendStyle') || changedProperties.has('legend-style')) {
159
+ if (changedProperties.has('deprecatedLegendStyle')) {
160
+ this.deprecationNotice.show();
161
+ }
162
+ const oldLegendStyle = (changedProperties.get('legend-style') || changedProperties.get('deprecatedLegendStyle'));
163
+ this.onLegendStyleChange(this.legendStyle, oldLegendStyle);
164
+ }
165
+ }
166
+ /**
167
+ * Change chart size or re-create chart
168
+ * when window size changed
169
+ * @ignore
170
+ * @param size new size
171
+ * @returns {void}
172
+ */
173
+ resizedCallback(size) {
174
+ super.resizedCallback(size);
175
+ this.width = size.width;
176
+ this.height = size.height;
177
+ if (this.chart) {
178
+ this.applyChartOptionSize(this.width, this.height);
179
+ }
180
+ else {
181
+ this.createChart(this.width, this.height, this.config);
182
+ }
183
+ }
184
+ /**
185
+ * Legend value observer
186
+ * @param value Legend value
187
+ * @returns {void}
188
+ */
189
+ onLegendChange(value) {
190
+ if (!value) {
191
+ this.createLegend();
192
+ }
193
+ else {
194
+ this.removeLegend();
195
+ }
196
+ }
197
+ /**
198
+ * Legend style observer
199
+ * @param value Legend style value
200
+ * @param previousValue Previous legend style value
201
+ * @returns {void}
202
+ */
203
+ onLegendStyleChange(value, previousValue) {
204
+ if (value === 'horizontal') {
205
+ if (previousValue) {
206
+ this.legendContainer.classList.remove(previousValue);
207
+ }
208
+ this.legendContainer.classList.add(value);
209
+ }
210
+ else {
211
+ this.legendContainer.classList.remove(previousValue);
212
+ }
213
+ }
214
+ /**
215
+ * Jump last value observer
216
+ * @param value jump last value
217
+ * @returns {void}
218
+ */
219
+ onJumpButtonChange(value) {
220
+ if (!value) {
221
+ this.createJumpButton(this.width, this.height);
222
+ }
223
+ else {
224
+ this.removeJumpButton();
225
+ }
226
+ }
227
+ /**
228
+ * update width and height of chart
229
+ * @param width width of element
230
+ * @param height height of element
231
+ * @returns {void}
232
+ */
233
+ applyChartOptionSize(width, height) {
234
+ if (this.chart) {
235
+ // Resize chart after rendered.
236
+ this.chart.applyOptions({
237
+ width: width,
238
+ height: height
239
+ });
240
+ // Render jump last button
241
+ if (!this.disabledJumpButton) {
242
+ this.createJumpButton(width, height);
243
+ }
244
+ }
245
+ }
246
+ /**
247
+ * Create chart from user config
248
+ * @param width Width component size
249
+ * @param height Height component size
250
+ * @param config data config
251
+ * @returns {void}
252
+ */
253
+ createChart(width, height, config) {
254
+ this.destroyChart();
255
+ if (config && width && height) {
256
+ // init css variables
257
+ this.themeColors = this.colors();
258
+ this.theme = {
259
+ backgroundColor: this.getComputedVariable('--background-color'),
260
+ textColor: this.getComputedVariable('--text-color'),
261
+ scalePriceBorderColor: this.getComputedVariable('--scale-price-border-color'),
262
+ scaleTimesBorderColor: this.getComputedVariable('--scale-times-border-color'),
263
+ gridVertLineColor: this.getComputedVariable('--grid-vert-line-color'),
264
+ gridHorzLineColor: this.getComputedVariable('--grid-horz-line-color'),
265
+ crossHairColor: this.getComputedVariable('--cross-hair-color'),
266
+ chartUpColor: this.getComputedVariable('--chart-up-color'),
267
+ chartDownColor: this.getComputedVariable('--chart-down-color'),
268
+ fillOpacity: this.cssVarAsNumber('--fill-opacity', InteractiveChart_1.DEFAULT_FILL_OPACITY),
269
+ lineWidth: this.cssVarAsNumber('--line-width', InteractiveChart_1.DEFAULT_LINE_WIDTH)
270
+ };
271
+ this.chart = chart(this.chartContainer);
272
+ this.mergeConfig(config);
273
+ this.applyChartOptionSize(width, height);
274
+ if (!this.disabledLegend) {
275
+ this.createLegend();
276
+ }
277
+ if (this.legendStyle === 'horizontal') {
278
+ this.legendContainer.classList.add(this.legendStyle);
279
+ }
280
+ this.chart.timeScale().fitContent();
281
+ /*
282
+ * Fired when chart initialized
283
+ */
284
+ this.dispatchEvent(new CustomEvent('initialized'));
285
+ }
286
+ }
287
+ /**
288
+ * Destroy chart
289
+ * @returns {void}
290
+ */
291
+ destroyChart() {
292
+ if (this.chart) {
293
+ this.removeLegend();
294
+ this.removeJumpButton();
295
+ this.destroySeries();
296
+ this.chartContainer.textContent = '';
297
+ }
298
+ }
299
+ /**
300
+ * Remove jump button
301
+ * @returns {void}
302
+ */
303
+ removeJumpButton() {
304
+ if (this.chart) {
305
+ this.jumpButtonContainer.style.display = 'none';
306
+ this.chart.timeScale().unsubscribeVisibleTimeRangeChange(this.handleTimeRangeChange);
307
+ this.jumpButtonContainer.removeEventListener('tap', this.handleScrollToRealTime);
308
+ this.jumpButtonInitialized = false;
309
+ }
310
+ }
311
+ /**
312
+ * Remove legend element
313
+ * @returns {void}
314
+ */
315
+ removeLegend() {
316
+ if (this.chart) {
317
+ this.legendContainer.textContent = '';
318
+ this.chart.unsubscribeCrosshairMove(this.handleCrosshairMoved);
319
+ this.legendInitialized = false;
320
+ }
321
+ }
322
+ /**
323
+ * Customize config and create chart by theme
324
+ * @param config data configuration for create chart
325
+ * @returns {void}
326
+ */
327
+ mergeConfig(config) {
328
+ if (config && config.hasOwnProperty('series')) {
329
+ this.createSeriesOptions();
330
+ this.createSeries();
331
+ }
332
+ this.applyTheme(config);
333
+ this.applyLegendTextColor();
334
+ this.applyStylesBranding();
335
+ this.applyStyleLegend();
336
+ }
337
+ /**
338
+ * Create series
339
+ * @returns {void}
340
+ */
341
+ createSeries() {
342
+ // Loop for add multiple series
343
+ for (let index = 0; index < this.internalConfig.series.length; index++) {
344
+ const config = this.internalConfig.series[index];
345
+ const series = this.addSeriesConfig(config);
346
+ this.seriesList.push(series);
347
+ }
348
+ }
349
+ /**
350
+ * Destroy Series
351
+ * @returns {void}
352
+ */
353
+ destroySeries() {
354
+ if (this.chart && this.seriesList && this.seriesList.length > 0) {
355
+ for (let i = 0; i < this.seriesList.length; i++) {
356
+ this.chart.removeSeries(this.seriesList[i]);
357
+ }
358
+ this.seriesList = [];
359
+ }
360
+ }
361
+ /**
362
+ * Add series to chart from config
363
+ * @param config data configuration for add series
364
+ * @returns series data
365
+ */
366
+ addSeriesConfig(config) {
367
+ let series = null;
368
+ if (this.chart) {
369
+ const { type, data, seriesOptions } = config;
370
+ // Create instance series
371
+ if (type === 'line') {
372
+ series = this.chart.addLineSeries(seriesOptions);
373
+ }
374
+ else if (type === 'area') {
375
+ series = this.chart.addAreaSeries(seriesOptions);
376
+ }
377
+ else if (type === 'bar') {
378
+ series = this.chart.addBarSeries(seriesOptions);
379
+ }
380
+ else if (type === 'candlestick') {
381
+ series = this.chart.addCandlestickSeries(seriesOptions);
382
+ }
383
+ else if (type === 'volume') {
384
+ series = this.chart.addHistogramSeries(seriesOptions);
385
+ }
386
+ if (data && series) {
387
+ series.setData(data);
388
+ }
389
+ }
390
+ return series;
391
+ }
392
+ /**
393
+ * Convert color to string
394
+ * @param fn function for parse color
395
+ * @param param value color
396
+ * @returns color parse
397
+ */
398
+ convertColorToString(fn, param, ...args) {
399
+ let color = null;
400
+ if (param) {
401
+ color = fn(param, ...args);
402
+ if (color) {
403
+ color = color.toString();
404
+ }
405
+ }
406
+ else {
407
+ color = {};
408
+ }
409
+ return color || {};
410
+ }
411
+ /**
412
+ * Create data configuration from theme
413
+ * @returns {void}
414
+ */
415
+ createSeriesOptions() {
416
+ if (this.theme) {
417
+ let colorIndex = 0;
418
+ for (let index = 0; index < this.internalConfig.series.length; index++) {
419
+ // Get seriesOptions and type
420
+ const seriesOptions = this.internalConfig.series[index].seriesOptions || {};
421
+ const type = this.internalConfig.series[index].type;
422
+ let seriesThemeOptions = {};
423
+ const colorCycle = this.convertColorToString(parseColor, this.themeColors[colorIndex]);
424
+ if (type === 'line') {
425
+ seriesThemeOptions = {
426
+ lineWidth: this.theme.lineWidth,
427
+ color: colorCycle
428
+ };
429
+ // Update color index
430
+ if (!seriesOptions.color) {
431
+ colorIndex++;
432
+ }
433
+ }
434
+ else if (type === 'area') {
435
+ seriesThemeOptions = {
436
+ lineWidth: this.theme.lineWidth,
437
+ lineColor: this.convertColorToString(parseColor, this.themeColors[colorIndex]),
438
+ topColor: this.convertColorToString(this.setOpacity, this.themeColors[colorIndex], this.theme.fillOpacity),
439
+ bottomColor: this.convertColorToString(this.setOpacity, this.themeColors[colorIndex], '0')
440
+ };
441
+ // Update color index
442
+ if (!seriesOptions.lineColor || !seriesOptions.topColor || !seriesOptions.bottomColor) {
443
+ colorIndex++;
444
+ }
445
+ }
446
+ else if (type === 'bar') {
447
+ seriesThemeOptions = {
448
+ upColor: colorCycle,
449
+ downColor: colorCycle
450
+ };
451
+ // Update color index
452
+ if (!seriesOptions.upColor || !seriesOptions.downColor) {
453
+ colorIndex++;
454
+ }
455
+ }
456
+ else if (type === 'candlestick') {
457
+ seriesThemeOptions = {
458
+ upColor: this.theme.chartUpColor,
459
+ downColor: this.theme.chartDownColor,
460
+ borderUpColor: this.theme.chartUpColor,
461
+ borderDownColor: this.theme.chartDownColor,
462
+ wickUpColor: this.theme.chartUpColor,
463
+ wickDownColor: this.theme.chartDownColor
464
+ };
465
+ // Update color index
466
+ if (!seriesOptions.upColor
467
+ || !seriesOptions.downColor
468
+ || !seriesOptions.borderUpColor
469
+ || !seriesOptions.borderDownColor
470
+ || !seriesOptions.wickUpColor
471
+ || !seriesOptions.wickDownColor) {
472
+ colorIndex++;
473
+ }
474
+ }
475
+ else if (type === 'volume') {
476
+ seriesThemeOptions = {
477
+ color: colorCycle
478
+ };
479
+ // Update color index
480
+ if (!seriesOptions.color) {
481
+ colorIndex++;
482
+ }
483
+ }
484
+ // Update config seriesOptions not have seriesOptions
485
+ if (!this.internalConfig.series[index].seriesOptions) {
486
+ this.internalConfig.series[index].seriesOptions = seriesThemeOptions;
487
+ }
488
+ else {
489
+ merge(seriesOptions, seriesThemeOptions);
490
+ }
491
+ }
492
+ }
493
+ }
494
+ /**
495
+ * Apply Theme to chart
496
+ * @param config value config
497
+ * @returns {void}
498
+ */
499
+ applyTheme(config) {
500
+ if (this.chart && this.theme) {
501
+ const style = getComputedStyle(this);
502
+ const defaultFontFamily = style.getPropertyValue('font-family');
503
+ // Create object has a property object before comparing config the theme
504
+ const chartOptions = config.options || {};
505
+ // Create object same as the theme
506
+ const chartThemeOptions = {
507
+ layout: {
508
+ backgroundColor: this.theme.backgroundColor,
509
+ textColor: this.theme.textColor,
510
+ fontFamily: defaultFontFamily
511
+ },
512
+ priceScale: {
513
+ borderColor: this.theme.scalePriceBorderColor
514
+ },
515
+ timeScale: {
516
+ borderColor: this.theme.scaleTimesBorderColor,
517
+ rightOffset: 1
518
+ },
519
+ grid: {
520
+ vertLines: {
521
+ color: this.theme.gridVertLineColor,
522
+ style: InteractiveChart_1.LINE_STYLES.SOLID
523
+ },
524
+ horzLines: {
525
+ color: this.theme.gridHorzLineColor,
526
+ style: InteractiveChart_1.LINE_STYLES.SOLID
527
+ }
528
+ },
529
+ crosshair: {
530
+ vertLine: {
531
+ color: this.theme.crossHairColor
532
+ },
533
+ horzLine: {
534
+ color: this.theme.crossHairColor
535
+ }
536
+ }
537
+ };
538
+ merge(chartOptions, chartThemeOptions);
539
+ if (!config.options) {
540
+ this.chart.applyOptions(chartThemeOptions);
541
+ }
542
+ else {
543
+ // Apply config when has option for custom
544
+ this.applyLegendTextColor();
545
+ this.chart.applyOptions(config.options);
546
+ }
547
+ }
548
+ }
549
+ /**
550
+ * Apply text color legend from chart options
551
+ * @returns {void}
552
+ */
553
+ applyLegendTextColor() {
554
+ if (this.chart) {
555
+ const options = this.chart.options();
556
+ if (options && options.hasOwnProperty('layout') && options.layout.hasOwnProperty('textColor')) {
557
+ this.legendContainer.style.color = options.layout.textColor;
558
+ }
559
+ }
560
+ }
561
+ /**
562
+ * Get position config for set position legend
563
+ * @returns {void}
564
+ */
565
+ applyStyleLegend() {
566
+ if (this.chart) {
567
+ // Get position config for set position legend
568
+ const position = this.getPriceScalePosition();
569
+ if (position === 'left' || position === 'two-price') {
570
+ this.legendContainer.className = 'yaxis-left';
571
+ }
572
+ else {
573
+ this.legendContainer.className = 'yaxis-right';
574
+ }
575
+ }
576
+ }
577
+ /**
578
+ * Get position config for set position logo trading view on chart
579
+ * @returns {void}
580
+ */
581
+ applyStylesBranding() {
582
+ if (this.chart) {
583
+ const position = this.getPriceScalePosition();
584
+ this.brandingContainer.className = position === 'two-price' ? 'right' : position;
585
+ }
586
+ }
587
+ /**
588
+ * Get price scale position
589
+ * @return position
590
+ */
591
+ getPriceScalePosition() {
592
+ var _a;
593
+ const priceScale = (_a = this.chart) === null || _a === void 0 ? void 0 : _a.options();
594
+ if (priceScale.leftPriceScale.visible && priceScale.rightPriceScale.visible) {
595
+ return 'two-price';
596
+ }
597
+ else if (priceScale.leftPriceScale.visible) {
598
+ return 'left';
599
+ }
600
+ else if (priceScale.rightPriceScale.visible) {
601
+ return 'right';
602
+ }
603
+ else {
604
+ return 'none';
605
+ }
606
+ }
607
+ /**
608
+ * Create legend element
609
+ * @returns {void}
610
+ */
611
+ createLegend() {
612
+ if (this.chart && !this.legendInitialized && this.internalConfig.hasOwnProperty('series')) {
613
+ this.createRowLegend();
614
+ if (this.shadowRoot) {
615
+ this.rowLegend = this.shadowRoot.querySelectorAll('.row');
616
+ }
617
+ this.chart.subscribeCrosshairMove(this.handleCrosshairMoved);
618
+ this.legendInitialized = true;
619
+ }
620
+ }
621
+ /**
622
+ * Create legend element or update value in legend element
623
+ * @param rowLegend Legend element
624
+ * @param eventMove Event mouse move on chart
625
+ * @return {void}
626
+ */
627
+ createRowLegend(rowLegend, eventMove) {
628
+ let rowLegendElem;
629
+ for (let idx = 0; idx < this.internalConfig.series.length; idx++) {
630
+ const chartType = this.internalConfig.series[idx].type;
631
+ const dataSet = this.internalConfig.series[idx].data || [];
632
+ const symbol = (this.internalConfig.series[idx].symbolName || this.internalConfig.series[idx].symbol) || '';
633
+ // Create row legend element
634
+ if (!rowLegend) {
635
+ rowLegendElem = document.createElement('div');
636
+ rowLegendElem.setAttribute('class', 'row');
637
+ this.createTextSymbol(rowLegendElem, symbol);
638
+ if (dataSet.length) {
639
+ this.hasDataPoint = true;
640
+ const lastData = dataSet[dataSet.length - 1];
641
+ const priceColor = this.getColorInSeries(lastData, chartType, idx);
642
+ const lastDataValue = chartType === 'bar' || chartType === 'candlestick' ? lastData : lastData.value;
643
+ this.renderTextLegend(chartType, rowLegendElem, lastDataValue, priceColor, idx);
644
+ }
645
+ else {
646
+ const span = document.createElement('span');
647
+ span.className = 'price';
648
+ span.textContent = NOT_AVAILABLE_DATA;
649
+ rowLegendElem.appendChild(span);
650
+ }
651
+ this.legendContainer.appendChild(rowLegendElem);
652
+ }
653
+ /* Update value legend element on subscribeCrosshairMove.
654
+ * Don't need to be updated if chart has no data.
655
+ */
656
+ /* istanbul ignore next */
657
+ else if (rowLegend && dataSet.length) {
658
+ let value;
659
+ let priceColor = '';
660
+ // When have price on event moved on the crosshair
661
+ if ((eventMove === null || eventMove === void 0 ? void 0 : eventMove.seriesPrices.get(this.seriesList[idx])) && eventMove.time) {
662
+ value = eventMove.seriesPrices.get(this.seriesList[idx]);
663
+ priceColor = this.getColorInSeries(eventMove, chartType, idx);
664
+ this.isCrosshairVisible = true;
665
+ this.hasDataPoint = true;
666
+ }
667
+ // when there's no data point in the series object.
668
+ else if (!(eventMove === null || eventMove === void 0 ? void 0 : eventMove.seriesPrices.get(this.seriesList[idx])) && (eventMove === null || eventMove === void 0 ? void 0 : eventMove.time)) {
669
+ value = NO_DATA_POINT;
670
+ this.isCrosshairVisible = true;
671
+ this.hasDataPoint = false;
672
+ }
673
+ // Get latest value when mouse move out of scope
674
+ else {
675
+ const latestData = dataSet[dataSet.length - 1];
676
+ if (latestData) {
677
+ priceColor = this.getColorInSeries(latestData, chartType, idx);
678
+ value = chartType === 'bar' || chartType === 'candlestick' ? latestData : latestData.value;
679
+ this.isCrosshairVisible = false;
680
+ this.hasDataPoint = true;
681
+ }
682
+ }
683
+ // Render legend by series type
684
+ this.renderTextLegend(chartType, rowLegend, value, priceColor, idx);
685
+ }
686
+ }
687
+ }
688
+ /**
689
+ * Render text legend in row legend
690
+ * @param chartType chart type of series
691
+ * @param rowLegendElem row legend div element
692
+ * @param value value of series
693
+ * @param priceColor price color of series
694
+ * @param index index of series
695
+ * @returns {void}
696
+ */
697
+ renderTextLegend(chartType, rowLegendElem, value, priceColor, index) {
698
+ if (chartType === 'bar' || chartType === 'candlestick') {
699
+ if (!this.hasDataPoint && this.isNodeListElement(rowLegendElem)) {
700
+ const spanElem = rowLegendElem[index].querySelectorAll('span.price,span.ohlc');
701
+ spanElem.forEach(span => rowLegendElem[index].removeChild(span));
702
+ const span = document.createElement('span');
703
+ span.className = 'price';
704
+ span.textContent = value;
705
+ rowLegendElem[index].appendChild(span);
706
+ }
707
+ else {
708
+ this.createTextOHLC(rowLegendElem, value, priceColor, index);
709
+ }
710
+ }
711
+ else {
712
+ this.createTextPrice(rowLegendElem, value, priceColor, index);
713
+ }
714
+ }
715
+ /**
716
+ * Check `node` inside row legend and case type to HTMLElement
717
+ * @param rowLegend Legend element
718
+ * @returns true if not have `node` inside row legend
719
+ */
720
+ isHTMLElement(rowLegend) {
721
+ return rowLegend.length === undefined;
722
+ }
723
+ /**
724
+ * Check `node` inside row legend and case type to NodeListOf<Element>
725
+ * @param rowLegend Legend element
726
+ * @returns true if have `node` inside row legend
727
+ */
728
+ isNodeListElement(rowLegend) {
729
+ return rowLegend !== undefined;
730
+ }
731
+ /**
732
+ * Create span OHLC in row legend used by several series types such as bars or candlesticks
733
+ * @param rowLegend Legend element
734
+ * @param rowData Value of series
735
+ * @param priceColor Color of series
736
+ * @returns {void}
737
+ */
738
+ createSpanOHLC(rowLegend, rowData, priceColor) {
739
+ if (this.isHTMLElement(rowLegend)) {
740
+ rowLegend.setAttribute('data-color', priceColor);
741
+ this.createSpan(rowLegend, 'O', rowData.open, 'H', rowData.high, 'L', rowData.low, 'C', rowData.close);
742
+ }
743
+ }
744
+ /**
745
+ * Create text used by several series types such as bars or candlesticks
746
+ * @param rowLegend Legend element
747
+ * @param rowData Value of series
748
+ * @param priceColor color of series
749
+ * @param index Series index
750
+ * @returns {void}
751
+ */
752
+ createTextOHLC(rowLegend, rowData, priceColor, index) {
753
+ // Uses price formatter if provided
754
+ const formatter = this.internalConfig.series[index].hasOwnProperty('legendPriceFormatter') ? this.internalConfig.series[index].legendPriceFormatter : null;
755
+ if (formatter) {
756
+ rowData = {
757
+ open: formatter(rowData.open),
758
+ high: formatter(rowData.high),
759
+ low: formatter(rowData.low),
760
+ close: formatter(rowData.close)
761
+ };
762
+ }
763
+ // Create text price after chart has rendered
764
+ if (this.isHTMLElement(rowLegend)) {
765
+ this.createSpanOHLC(rowLegend, rowData, priceColor);
766
+ }
767
+ // Handle update text price when mouse crosshairMove in chart
768
+ else if (this.isNodeListElement(rowLegend)) {
769
+ const rowSpanLength = rowLegend[index].children.length;
770
+ let countElmPrice = 0;
771
+ for (let spanIndex = 0; spanIndex < rowSpanLength; spanIndex++) {
772
+ const spanElem = rowLegend[index].children[spanIndex];
773
+ /**
774
+ * Create a new span OHLC after displaying (--) or (N/A)
775
+ */
776
+ if (spanElem.textContent === NOT_AVAILABLE_DATA || spanElem.textContent === NO_DATA_POINT) {
777
+ rowLegend[index].removeChild(spanElem);
778
+ this.createSpanOHLC(rowLegend[index], rowData, priceColor);
779
+ }
780
+ else if (spanElem.getAttribute('class') === 'price') {
781
+ // Set price color
782
+ spanElem.style.color = priceColor;
783
+ // Set value OHLC BY price
784
+ if (countElmPrice === 0) {
785
+ spanElem.textContent = `${rowData.open}`;
786
+ }
787
+ else if (countElmPrice === 1) {
788
+ spanElem.textContent = `${rowData.high}`;
789
+ }
790
+ else if (countElmPrice === 2) {
791
+ spanElem.textContent = `${rowData.low}`;
792
+ }
793
+ else if (countElmPrice === 3) {
794
+ spanElem.textContent = `${rowData.close}`;
795
+ }
796
+ // Update next span by price
797
+ countElmPrice++;
798
+ }
799
+ }
800
+ }
801
+ }
802
+ /**
803
+ * Create text price used by several series types
804
+ * @param rowLegend Legend element
805
+ * @param price Value of series
806
+ * @param priceColor color of series
807
+ * @param index Series index
808
+ * @returns {void}
809
+ */
810
+ createTextPrice(rowLegend, price, priceColor, index) {
811
+ var _a;
812
+ const formatter = this.internalConfig.series[index].legendPriceFormatter;
813
+ // Formats legend only when formatter and data point are provided
814
+ const formattedPrice = !!formatter && price !== NO_DATA_POINT ? formatter(price) : price;
815
+ // Create text price after chart has rendered
816
+ if (this.isHTMLElement(rowLegend)) {
817
+ rowLegend.setAttribute('data-color', priceColor);
818
+ this.createSpan(rowLegend, formattedPrice);
819
+ }
820
+ // Handle update text price when mouse crosshairMove in chart
821
+ else if (this.isNodeListElement(rowLegend)) {
822
+ const symbolElem = rowLegend[index].children[0];
823
+ const spanIndex = ((_a = symbolElem.getAttribute('class')) === null || _a === void 0 ? void 0 : _a.indexOf('symbol')) === 0 ? 1 : 0;
824
+ const rowLegendElem = rowLegend[index];
825
+ rowLegendElem.children[spanIndex].textContent = `${formattedPrice}`;
826
+ rowLegendElem.children[spanIndex].style.color = `${priceColor}`;
827
+ }
828
+ }
829
+ /**
830
+ * Create span in legend element by several series types
831
+ * @param rowLegend Legend element
832
+ * @param args text value
833
+ * @returns {void}
834
+ */
835
+ createSpan(rowLegend, ...args) {
836
+ const div = rowLegend; // rowLegend
837
+ const arg = args;
838
+ const len = args.length;
839
+ const color = div.getAttribute('data-color');
840
+ for (let idx = 0; idx < len; idx++) {
841
+ const span = document.createElement('span');
842
+ const textContent = `${arg[idx]}`;
843
+ span.textContent = textContent;
844
+ // Set class by Text O H L C
845
+ if (['O', 'H', 'L', 'C'].includes(textContent)) {
846
+ span.setAttribute('class', 'ohlc');
847
+ }
848
+ else {
849
+ span.setAttribute('class', 'price');
850
+ span.style.color = color;
851
+ }
852
+ div.appendChild(span);
853
+ }
854
+ }
855
+ /**
856
+ * Create span in legend element by several series types
857
+ * @param rowLegend Legend element
858
+ * @param symbol Value naming for show
859
+ * @returns {void}
860
+ */
861
+ createTextSymbol(rowLegend, symbol) {
862
+ if (rowLegend.children && symbol) {
863
+ const symbolElem = document.createElement('span');
864
+ symbolElem.setAttribute('class', 'symbol');
865
+ symbolElem.textContent = symbol + ' : ';
866
+ rowLegend.appendChild(symbolElem);
867
+ }
868
+ }
869
+ /**
870
+ * Get legend price color
871
+ * @param color color code
872
+ * @returns rgba or hex color
873
+ */
874
+ getLegendPriceColor(color) {
875
+ // check color is does not blend with the background
876
+ if (color === 'rgba(0,0,0,0)' || color === 'transparent') {
877
+ return this.getComputedVariable('--text-color');
878
+ }
879
+ return color;
880
+ }
881
+ /**
882
+ * Get Color in series
883
+ * @param seriesData series data or event mouse move on chart
884
+ * @param chartType type of chart
885
+ * @param index index of list series
886
+ * @returns color value
887
+ */
888
+ getColorInSeries(seriesData, chartType, index) {
889
+ var _a;
890
+ if (chartType === 'line') {
891
+ return this.getLegendPriceColor(this.seriesList[index].options().color);
892
+ }
893
+ else if (chartType === 'candlestick') {
894
+ const value = seriesData.hasOwnProperty('seriesPrices') ? (_a = seriesData) === null || _a === void 0 ? void 0 : _a.seriesPrices.get(this.seriesList[index]) : seriesData;
895
+ const barStyle = this.seriesList[index].options();
896
+ const colorBar = value.close > value.open ? barStyle.borderUpColor : barStyle.borderDownColor;
897
+ return colorBar;
898
+ }
899
+ else if (chartType === 'bar') {
900
+ return this.getLegendPriceColor(this.seriesList[index].options().upColor);
901
+ }
902
+ else if (chartType === 'area') {
903
+ return this.getLegendPriceColor(this.seriesList[index].options().lineColor);
904
+ }
905
+ else if (chartType === 'volume') {
906
+ const priceValue = seriesData.hasOwnProperty('seriesPrices') ? seriesData.seriesPrices.get(this.seriesList[index]) : seriesData.value;
907
+ let dataItem = {};
908
+ this.internalConfig.series[index].data.forEach((dataConfig) => {
909
+ const data = dataConfig;
910
+ const time = data.time;
911
+ const timeSeriesData = seriesData.time;
912
+ // if via time point data string format 'yyyy-mm-dd' or object '{ year: 2019, month: 6, day: 1 }'
913
+ if (time.hasOwnProperty('day') && time.hasOwnProperty('month') && time.hasOwnProperty('year')) {
914
+ if (time.day === timeSeriesData.day
915
+ && time.month === timeSeriesData.month
916
+ && time.year === timeSeriesData.year
917
+ && data.value === priceValue) {
918
+ dataItem = dataConfig;
919
+ }
920
+ }
921
+ // if via config time uses a UNIX Timestamp format for time point data.
922
+ else if (time === seriesData.time) {
923
+ dataItem = data;
924
+ }
925
+ });
926
+ // check when each color is added, the item comes from the configuration
927
+ if (dataItem.hasOwnProperty('color')) {
928
+ const data = dataItem;
929
+ return this.getLegendPriceColor(data.color);
930
+ }
931
+ else {
932
+ return this.getLegendPriceColor(this.seriesList[index].options().color);
933
+ }
934
+ }
935
+ return '';
936
+ }
937
+ /**
938
+ * Create button that will make window scroll to the last data
939
+ * in the chart when clicked
940
+ * @param width Width component size
941
+ * @param height Hight component size
942
+ * @returns {void}
943
+ */
944
+ createJumpButton(width, height) {
945
+ if (this.chart && this.jumpButtonContainer) {
946
+ this.timeScale = this.chart.timeScale();
947
+ // Get position config for set position jump last button
948
+ const position = this.getPriceScalePosition();
949
+ const pricePosition = position === 'left' ? 30 : 0;
950
+ const buttonTop = `${height - 70}px`;
951
+ const buttonLeft = `${(width + pricePosition) - 100}px`;
952
+ this.jumpButtonContainer.style.top = buttonTop;
953
+ this.jumpButtonContainer.style.left = buttonLeft;
954
+ // Create subscribeVisibleTimeRangeChange
955
+ if (!this.jumpButtonInitialized) {
956
+ this.chart.timeScale().subscribeVisibleTimeRangeChange(this.handleTimeRangeChange);
957
+ this.jumpButtonContainer.addEventListener('tap', this.handleScrollToRealTime);
958
+ this.jumpButtonInitialized = true;
959
+ }
960
+ }
961
+ }
962
+ /**
963
+ * Update Legend with latest data on update data in series
964
+ * @returns {void}
965
+ */
966
+ updateLegendWithLatestData() {
967
+ var _a;
968
+ if (this.rowLegend && !this.isCrosshairVisible && ((_a = this.config) === null || _a === void 0 ? void 0 : _a.hasOwnProperty('series'))) {
969
+ for (let idx = 0; idx < this.internalConfig.series.length; idx++) {
970
+ const chartType = this.internalConfig.series[idx].type;
971
+ const series = this.internalConfig.series[idx];
972
+ const dataSet = series.data || [];
973
+ const latestData = dataSet[dataSet.length - 1];
974
+ if (latestData) {
975
+ const value = chartType === 'bar' || chartType === 'candlestick' ? latestData : latestData.value; // latestData
976
+ const priceColor = this.getColorInSeries(latestData, chartType, idx);
977
+ // Render legend by series type
978
+ this.renderTextLegend(chartType, this.rowLegend, value, priceColor, idx);
979
+ }
980
+ }
981
+ }
982
+ }
983
+ /**
984
+ * Get as CSS variable and tries to convert it into a usable number
985
+ * @param args param css variable
986
+ * @returns The value as a number, or, undefined if NaN.
987
+ */
988
+ cssVarAsNumber(...args) {
989
+ args[args.length] = '';
990
+ const cssComputeVar = this.getComputedVariable(...args);
991
+ const result = parseFloat(cssComputeVar.replace(/\D+$/, ''));
992
+ return cssComputeVar && !isNaN(result) ? result : undefined;
993
+ }
994
+ /**
995
+ * List of available chart colors from the theme.
996
+ * @returns list of available chart colors from the theme.
997
+ */
998
+ colors() {
999
+ let color;
1000
+ let index = 0;
1001
+ const colors = [];
1002
+ while ((color = this.getComputedVariable(`${InteractiveChart_1.CSS_COLOR_PREFIX}${(index += 1)}`))) {
1003
+ const parseColorCode = parseColor(color);
1004
+ if (parseColorCode !== null) {
1005
+ colors.push(parseColorCode.toString());
1006
+ }
1007
+ }
1008
+ return colors;
1009
+ }
1010
+ /**
1011
+ * A `CSSResultGroup` that will be used
1012
+ * to style the host, slotted children
1013
+ * and the internal template of the element.
1014
+ * @return CSS template
1015
+ */
1016
+ static get styles() {
1017
+ return css `
1018
+ :host {
1019
+ display: block;
1020
+ position: relative;
1021
+ height: 300px;
1022
+ z-index: 0;
1023
+ }
1024
+ `;
1025
+ }
1026
+ /**
1027
+ * A `TemplateResult` that will be used
1028
+ * to render the updated internal template.
1029
+ * @return Render template
1030
+ */
1031
+ render() {
1032
+ return html `
1033
+ <slot name="legend">
1034
+ <div part="legend"></div>
1035
+ </slot>
1036
+ <div part="jump-button-container">
1037
+ <div part="jump-button"></div>
1038
+ </div>
1039
+ <div part="branding-container" title="" tooltip="Powered by Trading View">
1040
+ <svg width="33" height="19" viewBox="0 0 611 314" part="branding">
1041
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M341 124C375.242 124 403 96.2417 403 62C403 27.7583 375.242 0 341 0C306.758 0 279 27.7583 279 62C279 96.2417 306.758 124 341 124ZM481 314H337L467 4H611L481 314ZM124 4H248V128V314H124V128H0V4H124Z"/>
1042
+ </svg>
1043
+ </div>
1044
+ <div part="chart"></div>
1045
+ `;
1046
+ }
1047
+ };
1048
+ InteractiveChart.CSS_COLOR_PREFIX = '--chart-color-';
1049
+ InteractiveChart.DEFAULT_LINE_WIDTH = '2';
1050
+ InteractiveChart.DEFAULT_FILL_OPACITY = '0.4';
1051
+ InteractiveChart.LINE_STYLES = {
1052
+ SOLID: 0,
1053
+ DOTTED: 1,
1054
+ DASHED: 2,
1055
+ LARGE_DASHED: 3,
1056
+ SPARSE_DOTTED: 4
1057
+ };
1058
+ __decorate([
1059
+ property({ type: Object })
1060
+ ], InteractiveChart.prototype, "config", void 0);
1061
+ __decorate([
1062
+ property({ type: Boolean, reflect: true, attribute: 'disabled-legend' })
1063
+ ], InteractiveChart.prototype, "disabledLegend", void 0);
1064
+ __decorate([
1065
+ property({ type: Boolean, reflect: true, attribute: 'disabled-jump-button' })
1066
+ ], InteractiveChart.prototype, "disabledJumpButton", void 0);
1067
+ __decorate([
1068
+ property({ type: String, attribute: 'legendstyle' })
1069
+ ], InteractiveChart.prototype, "deprecatedLegendStyle", void 0);
1070
+ __decorate([
1071
+ property({ type: String, attribute: 'legend-style' })
1072
+ ], InteractiveChart.prototype, "legendStyle", null);
1073
+ __decorate([
1074
+ query('[part=chart]', true)
1075
+ ], InteractiveChart.prototype, "chartContainer", void 0);
1076
+ __decorate([
1077
+ query('[part=legend]', true)
1078
+ ], InteractiveChart.prototype, "legendContainer", void 0);
1079
+ __decorate([
1080
+ query('[part=jump-button-container]', true)
1081
+ ], InteractiveChart.prototype, "jumpButtonContainer", void 0);
1082
+ __decorate([
1083
+ query('[part=branding-container]', true)
1084
+ ], InteractiveChart.prototype, "brandingContainer", void 0);
1085
+ InteractiveChart = InteractiveChart_1 = __decorate([
1086
+ customElement('ef-interactive-chart', {
1087
+ alias: 'sapphire-interactive-chart'
1088
+ })
1089
+ ], InteractiveChart);
1090
+ export { InteractiveChart };