@refinitiv-ui/elements 5.3.3 → 5.3.4

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 (558) hide show
  1. package/lib/accordion/custom-elements.json +49 -0
  2. package/lib/accordion/index.d.ts +76 -0
  3. package/lib/accordion/index.js +139 -0
  4. package/lib/accordion/themes/halo/dark/index.js +3 -0
  5. package/lib/accordion/themes/halo/light/index.js +3 -0
  6. package/lib/accordion/themes/solar/charcoal/index.js +3 -0
  7. package/lib/accordion/themes/solar/pearl/index.js +3 -0
  8. package/lib/appstate-bar/custom-elements.json +49 -0
  9. package/lib/appstate-bar/index.d.ts +65 -0
  10. package/lib/appstate-bar/index.js +103 -0
  11. package/lib/appstate-bar/themes/halo/dark/index.js +3 -0
  12. package/lib/appstate-bar/themes/halo/light/index.js +3 -0
  13. package/lib/appstate-bar/themes/solar/charcoal/index.js +3 -0
  14. package/lib/appstate-bar/themes/solar/pearl/index.js +3 -0
  15. package/lib/autosuggest/custom-elements.json +223 -0
  16. package/lib/autosuggest/helpers/const.d.ts +2 -0
  17. package/lib/autosuggest/helpers/const.js +3 -0
  18. package/lib/autosuggest/helpers/types.d.ts +54 -0
  19. package/lib/autosuggest/helpers/types.js +1 -0
  20. package/lib/autosuggest/helpers/utils.d.ts +39 -0
  21. package/lib/autosuggest/helpers/utils.js +76 -0
  22. package/lib/autosuggest/index.d.ts +533 -0
  23. package/lib/autosuggest/index.js +1248 -0
  24. package/lib/autosuggest/themes/halo/dark/index.js +5 -0
  25. package/lib/autosuggest/themes/halo/light/index.js +5 -0
  26. package/lib/autosuggest/themes/solar/charcoal/index.js +5 -0
  27. package/lib/autosuggest/themes/solar/pearl/index.js +5 -0
  28. package/lib/button/custom-elements.json +119 -0
  29. package/lib/button/index.d.ts +132 -0
  30. package/lib/button/index.js +213 -0
  31. package/lib/button/themes/halo/dark/index.js +3 -0
  32. package/lib/button/themes/halo/light/index.js +3 -0
  33. package/lib/button/themes/solar/charcoal/index.js +3 -0
  34. package/lib/button/themes/solar/pearl/index.js +3 -0
  35. package/lib/button-bar/custom-elements.json +26 -0
  36. package/lib/button-bar/index.d.ts +76 -0
  37. package/lib/button-bar/index.js +157 -0
  38. package/lib/button-bar/themes/halo/dark/index.js +3 -0
  39. package/lib/button-bar/themes/halo/light/index.js +3 -0
  40. package/lib/button-bar/themes/solar/charcoal/index.js +3 -0
  41. package/lib/button-bar/themes/solar/pearl/index.js +3 -0
  42. package/lib/calendar/custom-elements.json +199 -0
  43. package/lib/calendar/index.d.ts +321 -0
  44. package/lib/calendar/index.js +926 -0
  45. package/lib/calendar/locales.d.ts +31 -0
  46. package/lib/calendar/locales.js +144 -0
  47. package/lib/calendar/themes/halo/dark/index.js +3 -0
  48. package/lib/calendar/themes/halo/light/index.js +3 -0
  49. package/lib/calendar/themes/solar/charcoal/index.js +3 -0
  50. package/lib/calendar/themes/solar/pearl/index.js +3 -0
  51. package/lib/calendar/types.d.ts +33 -0
  52. package/lib/calendar/types.js +6 -0
  53. package/lib/calendar/utils.d.ts +12 -0
  54. package/lib/calendar/utils.js +17 -0
  55. package/lib/canvas/custom-elements.json +69 -0
  56. package/lib/canvas/index.d.ts +100 -0
  57. package/lib/canvas/index.js +175 -0
  58. package/lib/canvas/themes/halo/dark/index.js +2 -0
  59. package/lib/canvas/themes/halo/light/index.js +2 -0
  60. package/lib/canvas/themes/solar/charcoal/index.js +2 -0
  61. package/lib/canvas/themes/solar/pearl/index.js +2 -0
  62. package/lib/card/custom-elements.json +59 -0
  63. package/lib/card/helpers/types.d.ts +12 -0
  64. package/lib/card/helpers/types.js +1 -0
  65. package/lib/card/index.d.ts +140 -0
  66. package/lib/card/index.js +247 -0
  67. package/lib/card/themes/halo/dark/index.js +5 -0
  68. package/lib/card/themes/halo/light/index.js +5 -0
  69. package/lib/card/themes/solar/charcoal/index.js +5 -0
  70. package/lib/card/themes/solar/pearl/index.js +5 -0
  71. package/lib/chart/custom-elements.json +42 -0
  72. package/lib/chart/helpers/index.d.ts +2 -0
  73. package/lib/chart/helpers/index.js +2 -0
  74. package/lib/chart/helpers/legend.d.ts +5 -0
  75. package/lib/chart/helpers/legend.js +78 -0
  76. package/lib/chart/helpers/merge.d.ts +15 -0
  77. package/lib/chart/helpers/merge.js +28 -0
  78. package/lib/chart/helpers/types.d.ts +69 -0
  79. package/lib/chart/helpers/types.js +1 -0
  80. package/lib/chart/index.d.ts +187 -0
  81. package/lib/chart/index.js +493 -0
  82. package/lib/chart/plugins/doughnut-center-label.d.ts +3 -0
  83. package/lib/chart/plugins/doughnut-center-label.js +196 -0
  84. package/lib/chart/themes/halo/dark/index.js +4 -0
  85. package/lib/chart/themes/halo/light/index.js +4 -0
  86. package/lib/chart/themes/solar/charcoal/index.js +4 -0
  87. package/lib/chart/themes/solar/pearl/index.js +4 -0
  88. package/lib/checkbox/custom-elements.json +71 -0
  89. package/lib/checkbox/index.d.ts +89 -0
  90. package/lib/checkbox/index.js +170 -0
  91. package/lib/checkbox/themes/halo/dark/index.js +4 -0
  92. package/lib/checkbox/themes/halo/light/index.js +4 -0
  93. package/lib/checkbox/themes/solar/charcoal/index.js +4 -0
  94. package/lib/checkbox/themes/solar/pearl/index.js +4 -0
  95. package/lib/clock/custom-elements.json +108 -0
  96. package/lib/clock/index.d.ts +309 -0
  97. package/lib/clock/index.js +564 -0
  98. package/lib/clock/themes/halo/dark/index.js +2 -0
  99. package/lib/clock/themes/halo/light/index.js +2 -0
  100. package/lib/clock/themes/solar/charcoal/index.js +2 -0
  101. package/lib/clock/themes/solar/pearl/index.js +2 -0
  102. package/lib/clock/utils/TickManager.d.ts +14 -0
  103. package/lib/clock/utils/TickManager.js +66 -0
  104. package/lib/clock/utils/timestamps.d.ts +6 -0
  105. package/lib/clock/utils/timestamps.js +6 -0
  106. package/lib/collapse/custom-elements.json +79 -0
  107. package/lib/collapse/index.d.ts +119 -0
  108. package/lib/collapse/index.js +199 -0
  109. package/lib/collapse/themes/halo/dark/index.js +5 -0
  110. package/lib/collapse/themes/halo/light/index.js +5 -0
  111. package/lib/collapse/themes/solar/charcoal/index.js +5 -0
  112. package/lib/collapse/themes/solar/pearl/index.js +5 -0
  113. package/lib/color-dialog/custom-elements.json +193 -0
  114. package/lib/color-dialog/elements/color-palettes.d.ts +52 -0
  115. package/lib/color-dialog/elements/color-palettes.js +105 -0
  116. package/lib/color-dialog/elements/grayscale-palettes.d.ts +67 -0
  117. package/lib/color-dialog/elements/grayscale-palettes.js +164 -0
  118. package/lib/color-dialog/elements/palettes.d.ts +58 -0
  119. package/lib/color-dialog/elements/palettes.js +119 -0
  120. package/lib/color-dialog/helpers/color-helpers.d.ts +62 -0
  121. package/lib/color-dialog/helpers/color-helpers.js +258 -0
  122. package/lib/color-dialog/helpers/value-model.d.ts +75 -0
  123. package/lib/color-dialog/helpers/value-model.js +139 -0
  124. package/lib/color-dialog/index.d.ts +232 -0
  125. package/lib/color-dialog/index.js +457 -0
  126. package/lib/color-dialog/themes/halo/dark/index.js +7 -0
  127. package/lib/color-dialog/themes/halo/light/index.js +7 -0
  128. package/lib/color-dialog/themes/solar/charcoal/index.js +7 -0
  129. package/lib/color-dialog/themes/solar/pearl/index.js +7 -0
  130. package/lib/combo-box/custom-elements.json +207 -0
  131. package/lib/combo-box/helpers/filter.d.ts +10 -0
  132. package/lib/combo-box/helpers/filter.js +29 -0
  133. package/lib/combo-box/helpers/keyboard-event.d.ts +17 -0
  134. package/lib/combo-box/helpers/keyboard-event.js +19 -0
  135. package/lib/combo-box/helpers/types.d.ts +11 -0
  136. package/lib/combo-box/helpers/types.js +1 -0
  137. package/lib/combo-box/index.d.ts +523 -0
  138. package/lib/combo-box/index.js +1146 -0
  139. package/lib/combo-box/themes/halo/dark/index.js +8 -0
  140. package/lib/combo-box/themes/halo/light/index.js +8 -0
  141. package/lib/combo-box/themes/solar/charcoal/index.js +8 -0
  142. package/lib/combo-box/themes/solar/pearl/index.js +8 -0
  143. package/lib/counter/custom-elements.json +35 -0
  144. package/lib/counter/index.d.ts +89 -0
  145. package/lib/counter/index.js +155 -0
  146. package/lib/counter/themes/halo/dark/index.js +3 -0
  147. package/lib/counter/themes/halo/light/index.js +3 -0
  148. package/lib/counter/themes/solar/charcoal/index.js +3 -0
  149. package/lib/counter/themes/solar/pearl/index.js +3 -0
  150. package/lib/counter/utils.d.ts +13 -0
  151. package/lib/counter/utils.js +52 -0
  152. package/lib/datetime-picker/custom-elements.json +333 -0
  153. package/lib/datetime-picker/index.d.ts +498 -0
  154. package/lib/datetime-picker/index.js +1164 -0
  155. package/lib/datetime-picker/locales.d.ts +8 -0
  156. package/lib/datetime-picker/locales.js +46 -0
  157. package/lib/datetime-picker/themes/halo/dark/index.js +7 -0
  158. package/lib/datetime-picker/themes/halo/light/index.js +7 -0
  159. package/lib/datetime-picker/themes/solar/charcoal/index.js +7 -0
  160. package/lib/datetime-picker/themes/solar/pearl/index.js +7 -0
  161. package/lib/datetime-picker/types.d.ts +3 -0
  162. package/lib/datetime-picker/types.js +1 -0
  163. package/lib/datetime-picker/utils.d.ts +55 -0
  164. package/lib/datetime-picker/utils.js +92 -0
  165. package/lib/dialog/custom-elements.json +136 -0
  166. package/lib/dialog/draggable-element.d.ts +14 -0
  167. package/lib/dialog/draggable-element.js +221 -0
  168. package/lib/dialog/index.d.ts +199 -0
  169. package/lib/dialog/index.js +331 -0
  170. package/lib/dialog/themes/halo/dark/index.js +7 -0
  171. package/lib/dialog/themes/halo/light/index.js +7 -0
  172. package/lib/dialog/themes/solar/charcoal/index.js +7 -0
  173. package/lib/dialog/themes/solar/pearl/index.js +7 -0
  174. package/lib/email-field/custom-elements.json +199 -0
  175. package/lib/email-field/index.d.ts +152 -0
  176. package/lib/email-field/index.js +287 -0
  177. package/lib/email-field/themes/halo/dark/index.js +3 -0
  178. package/lib/email-field/themes/halo/light/index.js +3 -0
  179. package/lib/email-field/themes/solar/charcoal/index.js +3 -0
  180. package/lib/email-field/themes/solar/pearl/index.js +3 -0
  181. package/lib/events.d.ts +121 -0
  182. package/lib/events.js +2 -0
  183. package/lib/flag/custom-elements.json +35 -0
  184. package/lib/flag/index.d.ts +94 -0
  185. package/lib/flag/index.js +168 -0
  186. package/lib/flag/themes/halo/dark/index.js +2 -0
  187. package/lib/flag/themes/halo/light/index.js +2 -0
  188. package/lib/flag/themes/solar/charcoal/index.js +2 -0
  189. package/lib/flag/themes/solar/pearl/index.js +2 -0
  190. package/lib/flag/utils/FlagLoader.d.ts +47 -0
  191. package/lib/flag/utils/FlagLoader.js +86 -0
  192. package/lib/header/custom-elements.json +36 -0
  193. package/lib/header/index.d.ts +46 -0
  194. package/lib/header/index.js +76 -0
  195. package/lib/header/themes/halo/dark/index.js +2 -0
  196. package/lib/header/themes/halo/light/index.js +2 -0
  197. package/lib/header/themes/solar/charcoal/index.js +2 -0
  198. package/lib/header/themes/solar/pearl/index.js +2 -0
  199. package/lib/heatmap/custom-elements.json +151 -0
  200. package/lib/heatmap/helpers/color.d.ts +30 -0
  201. package/lib/heatmap/helpers/color.js +68 -0
  202. package/lib/heatmap/helpers/text.d.ts +26 -0
  203. package/lib/heatmap/helpers/text.js +91 -0
  204. package/lib/heatmap/helpers/track.d.ts +102 -0
  205. package/lib/heatmap/helpers/track.js +160 -0
  206. package/lib/heatmap/helpers/types.d.ts +40 -0
  207. package/lib/heatmap/helpers/types.js +1 -0
  208. package/lib/heatmap/index.d.ts +453 -0
  209. package/lib/heatmap/index.js +1104 -0
  210. package/lib/heatmap/themes/halo/dark/index.js +4 -0
  211. package/lib/heatmap/themes/halo/light/index.js +4 -0
  212. package/lib/heatmap/themes/solar/charcoal/index.js +4 -0
  213. package/lib/heatmap/themes/solar/pearl/index.js +4 -0
  214. package/lib/icon/custom-elements.json +34 -0
  215. package/lib/icon/index.d.ts +87 -0
  216. package/lib/icon/index.js +161 -0
  217. package/lib/icon/themes/halo/dark/index.js +2 -0
  218. package/lib/icon/themes/halo/light/index.js +2 -0
  219. package/lib/icon/themes/solar/charcoal/index.js +2 -0
  220. package/lib/icon/themes/solar/pearl/index.js +2 -0
  221. package/lib/icon/utils/IconLoader.d.ts +47 -0
  222. package/lib/icon/utils/IconLoader.js +86 -0
  223. package/lib/index.d.ts +2 -0
  224. package/lib/index.js +2 -0
  225. package/lib/interactive-chart/custom-elements.json +86 -0
  226. package/lib/interactive-chart/helpers/merge.d.ts +15 -0
  227. package/lib/interactive-chart/helpers/merge.js +28 -0
  228. package/lib/interactive-chart/helpers/types.d.ts +45 -0
  229. package/lib/interactive-chart/helpers/types.js +6 -0
  230. package/lib/interactive-chart/index.d.ts +380 -0
  231. package/lib/interactive-chart/index.js +1093 -0
  232. package/lib/interactive-chart/themes/halo/dark/index.js +3 -0
  233. package/lib/interactive-chart/themes/halo/light/index.js +3 -0
  234. package/lib/interactive-chart/themes/solar/charcoal/index.js +3 -0
  235. package/lib/interactive-chart/themes/solar/pearl/index.js +3 -0
  236. package/lib/item/custom-elements.json +153 -0
  237. package/lib/item/helpers/types.d.ts +57 -0
  238. package/lib/item/helpers/types.js +1 -0
  239. package/lib/item/index.d.ts +149 -0
  240. package/lib/item/index.js +252 -0
  241. package/lib/item/themes/halo/dark/index.js +4 -0
  242. package/lib/item/themes/halo/light/index.js +4 -0
  243. package/lib/item/themes/solar/charcoal/index.js +4 -0
  244. package/lib/item/themes/solar/pearl/index.js +4 -0
  245. package/lib/jsx.d.ts +223 -0
  246. package/lib/label/custom-elements.json +52 -0
  247. package/lib/label/index.d.ts +102 -0
  248. package/lib/label/index.js +252 -0
  249. package/lib/label/themes/halo/dark/index.js +3 -0
  250. package/lib/label/themes/halo/light/index.js +3 -0
  251. package/lib/label/themes/solar/charcoal/index.js +3 -0
  252. package/lib/label/themes/solar/pearl/index.js +3 -0
  253. package/lib/layout/custom-elements.json +163 -0
  254. package/lib/layout/index.d.ts +107 -0
  255. package/lib/layout/index.js +215 -0
  256. package/lib/layout/themes/halo/dark/index.js +2 -0
  257. package/lib/layout/themes/halo/light/index.js +2 -0
  258. package/lib/layout/themes/solar/charcoal/index.js +2 -0
  259. package/lib/layout/themes/solar/pearl/index.js +2 -0
  260. package/lib/led-gauge/custom-elements.json +113 -0
  261. package/lib/led-gauge/index.d.ts +143 -0
  262. package/lib/led-gauge/index.js +440 -0
  263. package/lib/led-gauge/themes/halo/dark/index.js +3 -0
  264. package/lib/led-gauge/themes/halo/light/index.js +3 -0
  265. package/lib/led-gauge/themes/solar/charcoal/index.js +3 -0
  266. package/lib/led-gauge/themes/solar/pearl/index.js +3 -0
  267. package/lib/list/custom-elements.json +111 -0
  268. package/lib/list/extensible-function.d.ts +8 -0
  269. package/lib/list/extensible-function.js +13 -0
  270. package/lib/list/helpers/list-renderer.d.ts +9 -0
  271. package/lib/list/helpers/list-renderer.js +35 -0
  272. package/lib/list/helpers/types.d.ts +3 -0
  273. package/lib/list/helpers/types.js +1 -0
  274. package/lib/list/index.d.ts +292 -0
  275. package/lib/list/index.js +604 -0
  276. package/lib/list/renderer.d.ts +36 -0
  277. package/lib/list/renderer.js +9 -0
  278. package/lib/list/themes/halo/dark/index.js +3 -0
  279. package/lib/list/themes/halo/light/index.js +3 -0
  280. package/lib/list/themes/solar/charcoal/index.js +3 -0
  281. package/lib/list/themes/solar/pearl/index.js +3 -0
  282. package/lib/loader/custom-elements.json +9 -0
  283. package/lib/loader/index.d.ts +41 -0
  284. package/lib/loader/index.js +65 -0
  285. package/lib/loader/themes/halo/dark/index.js +2 -0
  286. package/lib/loader/themes/halo/light/index.js +2 -0
  287. package/lib/loader/themes/solar/charcoal/index.js +2 -0
  288. package/lib/loader/themes/solar/pearl/index.js +2 -0
  289. package/lib/multi-input/custom-elements.json +238 -0
  290. package/lib/multi-input/helpers/types.d.ts +11 -0
  291. package/lib/multi-input/helpers/types.js +1 -0
  292. package/lib/multi-input/index.d.ts +297 -0
  293. package/lib/multi-input/index.js +591 -0
  294. package/lib/multi-input/themes/halo/dark/index.js +4 -0
  295. package/lib/multi-input/themes/halo/light/index.js +4 -0
  296. package/lib/multi-input/themes/solar/charcoal/index.js +4 -0
  297. package/lib/multi-input/themes/solar/pearl/index.js +4 -0
  298. package/lib/notification/custom-elements.json +95 -0
  299. package/lib/notification/elements/notification-tray.d.ts +97 -0
  300. package/lib/notification/elements/notification-tray.js +170 -0
  301. package/lib/notification/elements/notification.d.ts +90 -0
  302. package/lib/notification/elements/notification.js +157 -0
  303. package/lib/notification/helpers/status.d.ts +30 -0
  304. package/lib/notification/helpers/status.js +130 -0
  305. package/lib/notification/helpers/types.d.ts +10 -0
  306. package/lib/notification/helpers/types.js +1 -0
  307. package/lib/notification/index.d.ts +2 -0
  308. package/lib/notification/index.js +2 -0
  309. package/lib/notification/themes/halo/dark/index.js +5 -0
  310. package/lib/notification/themes/halo/light/index.js +5 -0
  311. package/lib/notification/themes/solar/charcoal/index.js +5 -0
  312. package/lib/notification/themes/solar/pearl/index.js +5 -0
  313. package/lib/number-field/custom-elements.json +200 -0
  314. package/lib/number-field/index.d.ts +294 -0
  315. package/lib/number-field/index.js +708 -0
  316. package/lib/number-field/themes/halo/dark/index.js +3 -0
  317. package/lib/number-field/themes/halo/light/index.js +3 -0
  318. package/lib/number-field/themes/solar/charcoal/index.js +3 -0
  319. package/lib/number-field/themes/solar/pearl/index.js +3 -0
  320. package/lib/overlay/custom-elements.json +342 -0
  321. package/lib/overlay/elements/overlay-backdrop.d.ts +46 -0
  322. package/lib/overlay/elements/overlay-backdrop.js +67 -0
  323. package/lib/overlay/elements/overlay-viewport.d.ts +40 -0
  324. package/lib/overlay/elements/overlay-viewport.js +56 -0
  325. package/lib/overlay/elements/overlay.d.ts +403 -0
  326. package/lib/overlay/elements/overlay.js +1427 -0
  327. package/lib/overlay/helpers/functions.d.ts +13 -0
  328. package/lib/overlay/helpers/functions.js +16 -0
  329. package/lib/overlay/helpers/types.d.ts +97 -0
  330. package/lib/overlay/helpers/types.js +16 -0
  331. package/lib/overlay/index.d.ts +2 -0
  332. package/lib/overlay/index.js +1 -0
  333. package/lib/overlay/managers/backdrop-manager.d.ts +45 -0
  334. package/lib/overlay/managers/backdrop-manager.js +96 -0
  335. package/lib/overlay/managers/close-manager.d.ts +54 -0
  336. package/lib/overlay/managers/close-manager.js +138 -0
  337. package/lib/overlay/managers/focus-manager.d.ts +71 -0
  338. package/lib/overlay/managers/focus-manager.js +228 -0
  339. package/lib/overlay/managers/interaction-lock-manager.d.ts +138 -0
  340. package/lib/overlay/managers/interaction-lock-manager.js +375 -0
  341. package/lib/overlay/managers/viewport-manager.d.ts +93 -0
  342. package/lib/overlay/managers/viewport-manager.js +207 -0
  343. package/lib/overlay/managers/zindex-manager.d.ts +80 -0
  344. package/lib/overlay/managers/zindex-manager.js +195 -0
  345. package/lib/overlay/themes/halo/dark/index.js +4 -0
  346. package/lib/overlay/themes/halo/light/index.js +4 -0
  347. package/lib/overlay/themes/solar/charcoal/index.js +4 -0
  348. package/lib/overlay/themes/solar/pearl/index.js +4 -0
  349. package/lib/overlay-menu/custom-elements.json +196 -0
  350. package/lib/overlay-menu/helpers/types.d.ts +8 -0
  351. package/lib/overlay-menu/helpers/types.js +1 -0
  352. package/lib/overlay-menu/helpers/uuid.d.ts +7 -0
  353. package/lib/overlay-menu/helpers/uuid.js +13 -0
  354. package/lib/overlay-menu/index.d.ts +380 -0
  355. package/lib/overlay-menu/index.js +921 -0
  356. package/lib/overlay-menu/managers/menu-manager.d.ts +98 -0
  357. package/lib/overlay-menu/managers/menu-manager.js +240 -0
  358. package/lib/overlay-menu/themes/halo/dark/index.js +5 -0
  359. package/lib/overlay-menu/themes/halo/light/index.js +5 -0
  360. package/lib/overlay-menu/themes/solar/charcoal/index.js +5 -0
  361. package/lib/overlay-menu/themes/solar/pearl/index.js +5 -0
  362. package/lib/pagination/custom-elements.json +93 -0
  363. package/lib/pagination/helpers/types.d.ts +9 -0
  364. package/lib/pagination/helpers/types.js +1 -0
  365. package/lib/pagination/index.d.ts +207 -0
  366. package/lib/pagination/index.js +400 -0
  367. package/lib/pagination/themes/halo/dark/index.js +6 -0
  368. package/lib/pagination/themes/halo/light/index.js +6 -0
  369. package/lib/pagination/themes/solar/charcoal/index.js +6 -0
  370. package/lib/pagination/themes/solar/pearl/index.js +6 -0
  371. package/lib/panel/custom-elements.json +39 -0
  372. package/lib/panel/index.d.ts +48 -0
  373. package/lib/panel/index.js +77 -0
  374. package/lib/panel/themes/halo/dark/index.js +2 -0
  375. package/lib/panel/themes/halo/light/index.js +2 -0
  376. package/lib/panel/themes/solar/charcoal/index.js +2 -0
  377. package/lib/panel/themes/solar/pearl/index.js +2 -0
  378. package/lib/password-field/custom-elements.json +156 -0
  379. package/lib/password-field/index.d.ts +140 -0
  380. package/lib/password-field/index.js +258 -0
  381. package/lib/password-field/themes/halo/dark/index.js +3 -0
  382. package/lib/password-field/themes/halo/light/index.js +3 -0
  383. package/lib/password-field/themes/solar/charcoal/index.js +3 -0
  384. package/lib/password-field/themes/solar/pearl/index.js +3 -0
  385. package/lib/pill/custom-elements.json +95 -0
  386. package/lib/pill/index.d.ts +97 -0
  387. package/lib/pill/index.js +162 -0
  388. package/lib/pill/themes/halo/dark/index.js +3 -0
  389. package/lib/pill/themes/halo/light/index.js +3 -0
  390. package/lib/pill/themes/solar/charcoal/index.js +3 -0
  391. package/lib/pill/themes/solar/pearl/index.js +3 -0
  392. package/lib/progress-bar/custom-elements.json +58 -0
  393. package/lib/progress-bar/index.d.ts +82 -0
  394. package/lib/progress-bar/index.js +159 -0
  395. package/lib/progress-bar/themes/halo/dark/index.js +2 -0
  396. package/lib/progress-bar/themes/halo/light/index.js +2 -0
  397. package/lib/progress-bar/themes/solar/charcoal/index.js +2 -0
  398. package/lib/progress-bar/themes/solar/pearl/index.js +2 -0
  399. package/lib/radio-button/custom-elements.json +84 -0
  400. package/lib/radio-button/index.d.ts +106 -0
  401. package/lib/radio-button/index.js +195 -0
  402. package/lib/radio-button/radio-button-registry.d.ts +21 -0
  403. package/lib/radio-button/radio-button-registry.js +40 -0
  404. package/lib/radio-button/themes/halo/dark/index.js +3 -0
  405. package/lib/radio-button/themes/halo/light/index.js +3 -0
  406. package/lib/radio-button/themes/solar/charcoal/index.js +3 -0
  407. package/lib/radio-button/themes/solar/pearl/index.js +3 -0
  408. package/lib/rating/custom-elements.json +58 -0
  409. package/lib/rating/index.d.ts +91 -0
  410. package/lib/rating/index.js +158 -0
  411. package/lib/rating/themes/halo/dark/index.js +2 -0
  412. package/lib/rating/themes/halo/light/index.js +2 -0
  413. package/lib/rating/themes/solar/charcoal/index.js +2 -0
  414. package/lib/rating/themes/solar/pearl/index.js +2 -0
  415. package/lib/search-field/custom-elements.json +173 -0
  416. package/lib/search-field/index.d.ts +134 -0
  417. package/lib/search-field/index.js +254 -0
  418. package/lib/search-field/themes/halo/dark/index.js +3 -0
  419. package/lib/search-field/themes/halo/light/index.js +3 -0
  420. package/lib/search-field/themes/solar/charcoal/index.js +3 -0
  421. package/lib/search-field/themes/solar/pearl/index.js +3 -0
  422. package/lib/select/custom-elements.json +103 -0
  423. package/lib/select/helpers/types.d.ts +3 -0
  424. package/lib/select/helpers/types.js +1 -0
  425. package/lib/select/index.d.ts +388 -0
  426. package/lib/select/index.js +942 -0
  427. package/lib/select/themes/halo/dark/index.js +5 -0
  428. package/lib/select/themes/halo/light/index.js +5 -0
  429. package/lib/select/themes/solar/charcoal/index.js +5 -0
  430. package/lib/select/themes/solar/pearl/index.js +5 -0
  431. package/lib/sidebar-layout/custom-elements.json +72 -0
  432. package/lib/sidebar-layout/index.d.ts +69 -0
  433. package/lib/sidebar-layout/index.js +135 -0
  434. package/lib/sidebar-layout/themes/halo/dark/index.js +3 -0
  435. package/lib/sidebar-layout/themes/halo/light/index.js +3 -0
  436. package/lib/sidebar-layout/themes/solar/charcoal/index.js +3 -0
  437. package/lib/sidebar-layout/themes/solar/pearl/index.js +3 -0
  438. package/lib/slider/custom-elements.json +181 -0
  439. package/lib/slider/index.d.ts +409 -0
  440. package/lib/slider/index.js +1188 -0
  441. package/lib/slider/themes/halo/dark/index.js +3 -0
  442. package/lib/slider/themes/halo/light/index.js +3 -0
  443. package/lib/slider/themes/solar/charcoal/index.js +3 -0
  444. package/lib/slider/themes/solar/pearl/index.js +3 -0
  445. package/lib/sparkline/custom-elements.json +59 -0
  446. package/lib/sparkline/index.d.ts +107 -0
  447. package/lib/sparkline/index.js +188 -0
  448. package/lib/sparkline/themes/halo/dark/index.js +2 -0
  449. package/lib/sparkline/themes/halo/light/index.js +2 -0
  450. package/lib/sparkline/themes/solar/charcoal/index.js +2 -0
  451. package/lib/sparkline/themes/solar/pearl/index.js +2 -0
  452. package/lib/swing-gauge/const.d.ts +22 -0
  453. package/lib/swing-gauge/const.js +26 -0
  454. package/lib/swing-gauge/custom-elements.json +109 -0
  455. package/lib/swing-gauge/helpers.d.ts +8 -0
  456. package/lib/swing-gauge/helpers.js +105 -0
  457. package/lib/swing-gauge/index.d.ts +294 -0
  458. package/lib/swing-gauge/index.js +762 -0
  459. package/lib/swing-gauge/themes/halo/dark/index.js +3 -0
  460. package/lib/swing-gauge/themes/halo/light/index.js +3 -0
  461. package/lib/swing-gauge/themes/solar/charcoal/index.js +3 -0
  462. package/lib/swing-gauge/themes/solar/pearl/index.js +3 -0
  463. package/lib/swing-gauge/types.d.ts +34 -0
  464. package/lib/swing-gauge/types.js +1 -0
  465. package/lib/tab/custom-elements.json +123 -0
  466. package/lib/tab/index.d.ts +118 -0
  467. package/lib/tab/index.js +211 -0
  468. package/lib/tab/themes/halo/dark/index.js +4 -0
  469. package/lib/tab/themes/halo/light/index.js +4 -0
  470. package/lib/tab/themes/solar/charcoal/index.js +4 -0
  471. package/lib/tab/themes/solar/pearl/index.js +4 -0
  472. package/lib/tab-bar/custom-elements.json +52 -0
  473. package/lib/tab-bar/helpers/animate.d.ts +16 -0
  474. package/lib/tab-bar/helpers/animate.js +53 -0
  475. package/lib/tab-bar/index.d.ts +108 -0
  476. package/lib/tab-bar/index.js +220 -0
  477. package/lib/tab-bar/themes/halo/dark/index.js +4 -0
  478. package/lib/tab-bar/themes/halo/light/index.js +4 -0
  479. package/lib/tab-bar/themes/solar/charcoal/index.js +4 -0
  480. package/lib/tab-bar/themes/solar/pearl/index.js +4 -0
  481. package/lib/text-field/custom-elements.json +210 -0
  482. package/lib/text-field/index.d.ts +171 -0
  483. package/lib/text-field/index.js +319 -0
  484. package/lib/text-field/themes/halo/dark/index.js +3 -0
  485. package/lib/text-field/themes/halo/light/index.js +3 -0
  486. package/lib/text-field/themes/solar/charcoal/index.js +3 -0
  487. package/lib/text-field/themes/solar/pearl/index.js +3 -0
  488. package/lib/time-picker/custom-elements.json +124 -0
  489. package/lib/time-picker/index.d.ts +379 -0
  490. package/lib/time-picker/index.js +777 -0
  491. package/lib/time-picker/themes/halo/dark/index.js +4 -0
  492. package/lib/time-picker/themes/halo/light/index.js +4 -0
  493. package/lib/time-picker/themes/solar/charcoal/index.js +4 -0
  494. package/lib/time-picker/themes/solar/pearl/index.js +4 -0
  495. package/lib/toggle/custom-elements.json +84 -0
  496. package/lib/toggle/index.d.ts +77 -0
  497. package/lib/toggle/index.js +134 -0
  498. package/lib/toggle/themes/halo/dark/index.js +2 -0
  499. package/lib/toggle/themes/halo/light/index.js +2 -0
  500. package/lib/toggle/themes/solar/charcoal/index.js +2 -0
  501. package/lib/toggle/themes/solar/pearl/index.js +2 -0
  502. package/lib/tooltip/custom-elements.json +62 -0
  503. package/lib/tooltip/elements/title-tooltip.d.ts +1 -0
  504. package/lib/tooltip/elements/title-tooltip.js +18 -0
  505. package/lib/tooltip/elements/tooltip-element.d.ts +21 -0
  506. package/lib/tooltip/elements/tooltip-element.js +54 -0
  507. package/lib/tooltip/helpers/overflow-tooltip.d.ts +9 -0
  508. package/lib/tooltip/helpers/overflow-tooltip.js +19 -0
  509. package/lib/tooltip/helpers/renderer.d.ts +8 -0
  510. package/lib/tooltip/helpers/renderer.js +11 -0
  511. package/lib/tooltip/helpers/types.d.ts +23 -0
  512. package/lib/tooltip/helpers/types.js +1 -0
  513. package/lib/tooltip/index.d.ts +232 -0
  514. package/lib/tooltip/index.js +479 -0
  515. package/lib/tooltip/managers/tooltip-manager.d.ts +15 -0
  516. package/lib/tooltip/managers/tooltip-manager.js +144 -0
  517. package/lib/tooltip/themes/halo/dark/index.js +3 -0
  518. package/lib/tooltip/themes/halo/light/index.js +3 -0
  519. package/lib/tooltip/themes/solar/charcoal/index.js +3 -0
  520. package/lib/tooltip/themes/solar/pearl/index.js +3 -0
  521. package/lib/tornado-chart/custom-elements.json +45 -0
  522. package/lib/tornado-chart/elements/tornado-chart.d.ts +78 -0
  523. package/lib/tornado-chart/elements/tornado-chart.js +125 -0
  524. package/lib/tornado-chart/elements/tornado-item.d.ts +110 -0
  525. package/lib/tornado-chart/elements/tornado-item.js +209 -0
  526. package/lib/tornado-chart/index.d.ts +2 -0
  527. package/lib/tornado-chart/index.js +2 -0
  528. package/lib/tornado-chart/themes/halo/dark/index.js +6 -0
  529. package/lib/tornado-chart/themes/halo/light/index.js +6 -0
  530. package/lib/tornado-chart/themes/solar/charcoal/index.js +6 -0
  531. package/lib/tornado-chart/themes/solar/pearl/index.js +6 -0
  532. package/lib/tree/custom-elements.json +100 -0
  533. package/lib/tree/elements/tree-item.d.ts +96 -0
  534. package/lib/tree/elements/tree-item.js +182 -0
  535. package/lib/tree/elements/tree.d.ts +156 -0
  536. package/lib/tree/elements/tree.js +286 -0
  537. package/lib/tree/helpers/renderer.d.ts +5 -0
  538. package/lib/tree/helpers/renderer.js +33 -0
  539. package/lib/tree/helpers/types.d.ts +17 -0
  540. package/lib/tree/helpers/types.js +1 -0
  541. package/lib/tree/index.d.ts +4 -0
  542. package/lib/tree/index.js +3 -0
  543. package/lib/tree/managers/tree-manager.d.ts +236 -0
  544. package/lib/tree/managers/tree-manager.js +379 -0
  545. package/lib/tree/themes/halo/dark/index.js +7 -0
  546. package/lib/tree/themes/halo/light/index.js +7 -0
  547. package/lib/tree/themes/solar/charcoal/index.js +7 -0
  548. package/lib/tree/themes/solar/pearl/index.js +7 -0
  549. package/lib/tree-select/custom-elements.json +107 -0
  550. package/lib/tree-select/helpers/types.d.ts +4 -0
  551. package/lib/tree-select/helpers/types.js +1 -0
  552. package/lib/tree-select/index.d.ts +400 -0
  553. package/lib/tree-select/index.js +881 -0
  554. package/lib/tree-select/themes/halo/dark/index.js +12 -0
  555. package/lib/tree-select/themes/halo/light/index.js +12 -0
  556. package/lib/tree-select/themes/solar/charcoal/index.js +12 -0
  557. package/lib/tree-select/themes/solar/pearl/index.js +12 -0
  558. package/package.json +9 -9
@@ -0,0 +1,762 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ import { ResponsiveElement, css, customElement, property, html, styleMap, query, state, WarningNotice } from '@refinitiv-ui/core';
8
+ import { VERSION } from '../';
9
+ import '../canvas';
10
+ import '../label';
11
+ import { helpers as canvasHelper } from './helpers';
12
+ import { DefaultStyle, Segment, TextType } from './const.js';
13
+ /**
14
+ * Constants from swing-gauge default specs
15
+ */
16
+ const GAUGE_WIDTH_SCALE = 0.4;
17
+ const GAUGE_HEIGHT_SCALE = 0.8;
18
+ const GAUGE_UPPER_BOUND = GAUGE_HEIGHT_SCALE + GAUGE_WIDTH_SCALE / 2;
19
+ const GAUGE_LOWER_BOUND = GAUGE_HEIGHT_SCALE - GAUGE_WIDTH_SCALE / 2;
20
+ const PRIMARY_RADIAN = 1.25;
21
+ const SECONDARY_RADIAN = 1.75;
22
+ const LINE_POINTER_OFFSET = 0.3;
23
+ const POINT_POINTER_OFFSET = 0.1;
24
+ const DEFAULT_OFFSET = 0.05;
25
+ const OVERFLOW_OFFSET = 0.08;
26
+ // When either value is below this threshold, the label position changes
27
+ const GAUGE_PERCENTAGE_THRESHOLD = 30;
28
+ const GAUGE_LABEL_FONT_SCALE = 0.14;
29
+ const GAUGE_VALUE_FONT_SCALE = 0.18;
30
+ const MIN_LABEL_FONT_SIZE = 12;
31
+ const MIN_VALUE_FONT_SIZE = 15;
32
+ const MAX_LABEL_LINE = 3;
33
+ const MAX_VALUE_LINE = 1;
34
+ const MAX_LEGEND_LINE = 2;
35
+ /**
36
+ * Data visualisation showing the percentage between two values
37
+ */
38
+ let SwingGauge = class SwingGauge extends ResponsiveElement {
39
+ constructor() {
40
+ super(...arguments);
41
+ this._primaryValue = 0;
42
+ /**
43
+ * Primary label
44
+ */
45
+ this.primaryLabel = '';
46
+ this._secondaryValue = 0;
47
+ /**
48
+ * Secondary label
49
+ */
50
+ this.secondaryLabel = '';
51
+ /**
52
+ * Animation duration in milliseconds
53
+ */
54
+ this.duration = 1000;
55
+ /**
56
+ * Primary value legend
57
+ */
58
+ this.primaryLegend = '';
59
+ /**
60
+ * Secondary value legend
61
+ */
62
+ this.secondaryLegend = '';
63
+ /**
64
+ * Custome value formatter
65
+ */
66
+ this.valueFormatter = this.defaultValueFormatter;
67
+ /**
68
+ * Controls swing gauge animations
69
+ */
70
+ this.onFrame = requestAnimationFrame.bind(window);
71
+ this.cancelFrame = cancelAnimationFrame.bind(window);
72
+ this.requestedAnimationID = 0;
73
+ this.gaugeWidthScale = GAUGE_WIDTH_SCALE;
74
+ this.gaugeHeightScale = GAUGE_HEIGHT_SCALE;
75
+ this.gaugeUpperBound = GAUGE_UPPER_BOUND;
76
+ this.gaugeLowerBound = GAUGE_LOWER_BOUND;
77
+ this.linePointerOffset = LINE_POINTER_OFFSET;
78
+ this.pointPointerOffset = POINT_POINTER_OFFSET;
79
+ this.primaryLineRadian = PRIMARY_RADIAN;
80
+ this.secondaryLineRadian = SECONDARY_RADIAN;
81
+ /**
82
+ * Data requires to draw swing gauge
83
+ */
84
+ this.data = null;
85
+ /**
86
+ * Internal sizes and scales
87
+ */
88
+ this.width = 0;
89
+ this.height = 0;
90
+ this.size = 0;
91
+ this.lineLength = 60;
92
+ this.scale = 1;
93
+ /**
94
+ * Current fill percentage
95
+ */
96
+ this.fillPercentage = 0;
97
+ /**
98
+ * Keeps previous percentage calculation to avoid re-rendering the same value
99
+ */
100
+ this.previousFillPercentage = 0;
101
+ /**
102
+ * This for keep line number of label for calculate new radius
103
+ */
104
+ this.labelLineNumber = 1;
105
+ /**
106
+ * Style for primary container
107
+ */
108
+ this.primaryContainerStyle = {};
109
+ /**
110
+ * Style for secondary container
111
+ */
112
+ this.secondaryContainerStyle = {};
113
+ /**
114
+ * Style for label
115
+ */
116
+ this.labelStyle = {};
117
+ /**
118
+ * Style for both values
119
+ */
120
+ this.valueStyle = {};
121
+ }
122
+ /**
123
+ * Element version number
124
+ * @returns version number
125
+ */
126
+ static get version() {
127
+ return VERSION;
128
+ }
129
+ /**
130
+ * A `CSSResult` that will be used
131
+ * to style the host, slotted children
132
+ * and the internal template of the element.
133
+ * @return CSS template
134
+ */
135
+ static get styles() {
136
+ return css `
137
+ :host {
138
+ display: block;
139
+ height: 200px;
140
+ }
141
+ :host [part=container] {
142
+ display: flex;
143
+ flex-direction: column;
144
+ height: 100%;
145
+ }
146
+ :host [part=canvas-container] {
147
+ position: relative;
148
+ flex: 1;
149
+ }
150
+ :host [part=canvas] {
151
+ height: 100%;
152
+ }
153
+ :host [part=primary-legend], [part=secondary-legend] {
154
+ text-align: left;
155
+ display: flex;
156
+ }
157
+ :host [part=primary-label], [part=primary-value] {
158
+ text-align: left;
159
+ }
160
+ :host [part=secondary-label], [part=secondary-value] {
161
+ text-align: right;
162
+ }
163
+ :host [part=legend-container-outer] {
164
+ width: 60%;
165
+ margin: 0 auto;
166
+ text-align: center;
167
+ }
168
+ :host [part=legend-container-inner] {
169
+ max-width: 100%;
170
+ display: inline-block;
171
+ }
172
+ :host [part=primary-legend-symbol], [part=secondary-legend-symbol] {
173
+ display: inline-block;
174
+ flex-shrink: 0;
175
+ }
176
+ :host [part=primary-container] {
177
+ position: absolute;
178
+ text-align: left;
179
+ }
180
+ :host [part=secondary-container] {
181
+ position: absolute;
182
+ text-align: right;
183
+ }
184
+ `;
185
+ }
186
+ /**
187
+ * Primary value
188
+ * @param value primary value
189
+ */
190
+ set primaryValue(value) {
191
+ value = this.validateNumber(value, 'primary-value');
192
+ const oldValue = this._primaryValue;
193
+ if (oldValue !== value) {
194
+ this._primaryValue = value;
195
+ void this.requestUpdate('primaryValue', oldValue);
196
+ }
197
+ }
198
+ get primaryValue() {
199
+ return this._primaryValue;
200
+ }
201
+ /**
202
+ * Secondary value
203
+ * @param value secondary value
204
+ */
205
+ set secondaryValue(value) {
206
+ value = this.validateNumber(value, 'secondary-value');
207
+ const oldValue = this._secondaryValue;
208
+ if (oldValue !== value) {
209
+ this._secondaryValue = value;
210
+ void this.requestUpdate('secondaryValue', oldValue);
211
+ }
212
+ }
213
+ get secondaryValue() {
214
+ return this._secondaryValue;
215
+ }
216
+ /**
217
+ * Get primary percentage
218
+ */
219
+ get primaryPercentage() {
220
+ return this.getPercentage(this.primaryValue);
221
+ }
222
+ /**
223
+ * Get secondary percentage
224
+ */
225
+ get secondaryPercentage() {
226
+ return this.getPercentage(this.secondaryValue);
227
+ }
228
+ /**
229
+ * Check width and height are valid
230
+ * @returns if size is valid
231
+ */
232
+ get hasValidSize() {
233
+ return this.offsetWidth > 0 && this.offsetHeight > 0 && this.canvas.width > 0 && this.canvas.height > 0;
234
+ }
235
+ /**
236
+ * Get default value format
237
+ * @param value A value on each side of swing gauge
238
+ * @returns default value format
239
+ */
240
+ defaultValueFormatter(value) {
241
+ return `${value.toFixed(2)}%`;
242
+ }
243
+ /**
244
+ * Getter size of component
245
+ * @returns return size of canvas
246
+ */
247
+ get canvasSize() {
248
+ return {
249
+ width: this.offsetWidth,
250
+ height: this.offsetHeight
251
+ };
252
+ }
253
+ /**
254
+ * Validate number
255
+ * @protected
256
+ * @param value number that want to validate
257
+ * @param propName name of property
258
+ * @returns {number} valid number
259
+ */
260
+ validateNumber(value, propName) {
261
+ if (typeof value === 'number' && !isNaN(value) && isFinite(value) && value >= 0) {
262
+ return value;
263
+ }
264
+ new WarningNotice(`${this.localName} : The specified value "${value}" of ${propName} property is not valid. Default value will be used instead.`).show();
265
+ return 0;
266
+ }
267
+ /**
268
+ * On update lifecycle
269
+ * @param changedProperties changed properties
270
+ * @returns {void}
271
+ */
272
+ update(changedProperties) {
273
+ super.update(changedProperties);
274
+ if (changedProperties.has('primaryValue') || changedProperties.has('secondaryValue')
275
+ || (this.primaryValue === 0 && this.secondaryValue === 0)) {
276
+ this.canvas.autoloop = true;
277
+ this.renderCanvas('frame');
278
+ this.animateCanvas();
279
+ }
280
+ if (changedProperties.has('primaryLabel') || changedProperties.has('secondaryLabel')) {
281
+ this.calculateLabelFontSize();
282
+ }
283
+ if (changedProperties.has('valueFormatter')) {
284
+ this.calculateValueFontSize();
285
+ }
286
+ if (changedProperties.has('primaryValue') || changedProperties.has('secondaryValue')
287
+ || changedProperties.has('primaryLabel') || changedProperties.has('secondaryLabel')
288
+ || changedProperties.has('valueFormatter')) {
289
+ this.updateGaugePositions();
290
+ }
291
+ }
292
+ /**
293
+ * Handles when component disconnected
294
+ * @returns {void}
295
+ */
296
+ disconnectedCallback() {
297
+ super.disconnectedCallback();
298
+ if (this.requestedAnimationID) {
299
+ this.cancelFrame(this.requestedAnimationID);
300
+ }
301
+ }
302
+ /**
303
+ * Calls easing based on both left and right values
304
+ * @param primaryValue primary value
305
+ * @param secondaryValue secondary value
306
+ * @returns {void}
307
+ */
308
+ ease(primaryValue, secondaryValue) {
309
+ let to = 0.5;
310
+ let from = this.fillPercentage;
311
+ if (primaryValue > 0 || secondaryValue > 0) {
312
+ to = primaryValue / (primaryValue + secondaryValue);
313
+ }
314
+ // this for prevent gauge not render when 'to' and 'from' are 0
315
+ if (primaryValue === 0 && from === 0) {
316
+ from = 0.1;
317
+ }
318
+ this.easeTo(to, from, performance.now() + this.duration);
319
+ }
320
+ /**
321
+ * Eases the fill percentage
322
+ * @param to ease to value
323
+ * @param from ease from value
324
+ * @param time ease time
325
+ * @returns {void}
326
+ */
327
+ easeTo(to, from, time) {
328
+ const diff = (this.duration - (time - performance.now())) / this.duration;
329
+ this.fillPercentage = from + (to - from) * canvasHelper.elasticOut(diff > 1 ? 1 : diff < 0 ? 0 : diff) || 0;
330
+ if (this.fillPercentage !== to) {
331
+ this.cancelFrame(this.requestedAnimationID);
332
+ this.requestedAnimationID = this.onFrame(() => this.easeTo(to, from, time));
333
+ }
334
+ else {
335
+ this.canvas.autoloop = false;
336
+ }
337
+ this.renderCanvas('frame', true);
338
+ }
339
+ /**
340
+ * Restart the animation, re-render the canvas
341
+ * @returns {void}
342
+ */
343
+ animateCanvas() {
344
+ this.ease(this.primaryValue, this.secondaryValue);
345
+ }
346
+ /**
347
+ * Render chart
348
+ * @param onDraw drawing type
349
+ * @param isFrameUpdated Optional called by on frame event
350
+ * @returns {void}
351
+ */
352
+ renderCanvas(onDraw, isFrameUpdated) {
353
+ const percentageChanged = this.previousFillPercentage !== this.fillPercentage;
354
+ const canRender = this.hasValidSize && percentageChanged;
355
+ if ((isFrameUpdated && !canRender) || !this.hasValidSize) {
356
+ return;
357
+ }
358
+ this.width = this.canvas.width;
359
+ this.height = this.canvas.height;
360
+ const min = this.width > this.height ? this.height : this.width;
361
+ const max = this.width > this.height ? this.width : this.height;
362
+ this.size = Math.floor(max / this.scale < min ? max / this.scale : min);
363
+ const canvasSize = { width: this.width, height: this.height };
364
+ // Prevent draw frame unnecessary recalculate position and draw data
365
+ if (!isFrameUpdated) {
366
+ this.data = this.getData();
367
+ }
368
+ else if (this.data !== null) {
369
+ this.data.fillPercentage = this.fillPercentage;
370
+ }
371
+ const clear = () => {
372
+ if (!this.canvas.ctx) {
373
+ return;
374
+ }
375
+ canvasHelper.clear(canvasSize, this.canvas.ctx);
376
+ };
377
+ this.canvas.addEventListener(onDraw, clear, { once: true });
378
+ const draw = () => {
379
+ if (!this.canvas.ctx) {
380
+ return;
381
+ }
382
+ canvasHelper.draw(this.data === null ? this.getData() : this.data, this.canvas.ctx, {
383
+ strokeWidth: Math.ceil(this.scale * this.size * 0.005),
384
+ primaryColor: this.getComputedVariable('--primary-color', DefaultStyle.PRIMARY_GAUGE_COLOR),
385
+ secondaryColor: this.getComputedVariable('--secondary-color', DefaultStyle.SECONDARY_GAUGE_COLOR),
386
+ borderColor: this.getComputedVariable('--border-color', DefaultStyle.BOREDER_COLOR),
387
+ centerline: `${this.getComputedVariable('--center-line', DefaultStyle.CENTER_LINE_STYLE)}`.trim(),
388
+ centerlineOpacity: this.getComputedVariable('--center-line-opacity', DefaultStyle.CENTER_LINE_OPACITY),
389
+ centerlineColor: this.getComputedVariable('--center-line-color', DefaultStyle.CENTER_LINE_COLOR)
390
+ });
391
+ };
392
+ this.canvas.addEventListener(onDraw, draw, { once: true });
393
+ // Set this for comparison when deciding if we should paint
394
+ this.previousFillPercentage = this.fillPercentage;
395
+ }
396
+ /**
397
+ * Get computed swing-gauge data for drawing
398
+ * @returns swing-gauge data
399
+ */
400
+ getData() {
401
+ // Recalculate radius to prevent container overflow
402
+ const gaugeHeight = this.size * this.gaugeHeightScale;
403
+ const containerHeight = this.labelLineNumber * MIN_LABEL_FONT_SIZE + MIN_VALUE_FONT_SIZE;
404
+ if (containerHeight > gaugeHeight) {
405
+ // The value of 'reverseScale' increases as the value of 'scale' decreases.
406
+ const reverseScale = 1 - this.scale;
407
+ // increase the offset by 25%, this for buffer to make label have some space from bottom
408
+ this.linePointerOffset = (containerHeight / gaugeHeight) * reverseScale * 1.25;
409
+ this.primaryLineRadian = PRIMARY_RADIAN + DEFAULT_OFFSET + (OVERFLOW_OFFSET * reverseScale);
410
+ this.secondaryLineRadian = 3 - this.primaryLineRadian;
411
+ }
412
+ const primaryPosLine = this.getPositionStyle(Segment.PRIMARY, this.primaryLineRadian, this.linePointerOffset, 0);
413
+ const primaryPosPoint = this.getPositionStyle(Segment.PRIMARY, PRIMARY_RADIAN, this.pointPointerOffset, 0);
414
+ const secondaryPosLine = this.getPositionStyle(Segment.SECONDARY, this.secondaryLineRadian, this.linePointerOffset, 0);
415
+ const secondaryPosPoint = this.getPositionStyle(Segment.SECONDARY, SECONDARY_RADIAN, this.pointPointerOffset, 0);
416
+ return {
417
+ width: this.width,
418
+ height: this.height,
419
+ size: this.size,
420
+ fillPercentage: this.fillPercentage,
421
+ gaugeWidthScale: this.gaugeWidthScale,
422
+ gaugeHeightScale: this.gaugeHeightScale,
423
+ gaugeUpperBound: this.gaugeUpperBound,
424
+ gaugeLowerBound: this.gaugeLowerBound,
425
+ lineLength: this.lineLength,
426
+ offsetLeftPrimaryLine: this.getValueFromStyle(primaryPosLine.left),
427
+ offsetTopPrimaryLine: this.getValueFromStyle(primaryPosLine.top),
428
+ offsetLeftPrimaryPoint: this.getValueFromStyle(primaryPosPoint.left),
429
+ offsetTopPrimaryPoint: this.getValueFromStyle(primaryPosPoint.top),
430
+ offsetLeftSecondaryLine: this.getValueFromStyle(secondaryPosLine.left),
431
+ offsetTopSecondaryLine: this.getValueFromStyle(secondaryPosLine.top),
432
+ offsetLeftSecondaryPoint: this.getValueFromStyle(secondaryPosPoint.left),
433
+ offsetTopSecondaryPoint: this.getValueFromStyle(secondaryPosPoint.top)
434
+ };
435
+ }
436
+ /**
437
+ * Get number from CSS declaration value
438
+ * @param styleValue value of CSS declaration
439
+ * @returns number without CSS unit
440
+ */
441
+ getValueFromStyle(styleValue) {
442
+ return Number(styleValue === null || styleValue === void 0 ? void 0 : styleValue.replace('px', ''));
443
+ }
444
+ /**
445
+ * Compute and update style of containers and labels
446
+ * @returns {void}
447
+ */
448
+ updateGaugePositions() {
449
+ if (!this.hasValidSize) {
450
+ return;
451
+ }
452
+ const primaryPosition = this.getPositionStyle(Segment.PRIMARY, this.primaryLineRadian, this.linePointerOffset, -this.lineLength);
453
+ const secondaryPosition = this.getPositionStyle(Segment.SECONDARY, this.secondaryLineRadian, this.linePointerOffset, 0);
454
+ this.primaryContainerStyle = Object.assign({ width: `${this.lineLength}px` }, primaryPosition);
455
+ this.secondaryContainerStyle = Object.assign({ width: `${this.lineLength}px` }, secondaryPosition);
456
+ // position container over line pointer
457
+ if (this.primaryPercentage < GAUGE_PERCENTAGE_THRESHOLD) {
458
+ delete this.primaryContainerStyle.top;
459
+ this.primaryContainerStyle.bottom = '5px';
460
+ }
461
+ if (this.secondaryPercentage < GAUGE_PERCENTAGE_THRESHOLD || this.secondaryValue === 0) {
462
+ delete this.secondaryContainerStyle.top;
463
+ this.secondaryContainerStyle.bottom = '5px';
464
+ }
465
+ }
466
+ /**
467
+ * Compute position style
468
+ * @param segment primary or secondary
469
+ * @param maxRadian max radian
470
+ * @param radiusOffset radius offset from gauge upper bound
471
+ * @param offset line length offset
472
+ * @returns position style
473
+ */
474
+ getPositionStyle(segment, maxRadian, radiusOffset, offset) {
475
+ let radius = this.size * (1 + radiusOffset) * this.scale;
476
+ let radianValue;
477
+ if (segment === Segment.PRIMARY) {
478
+ radianValue = this.primaryPercentage >= GAUGE_PERCENTAGE_THRESHOLD ? maxRadian : 1;
479
+ }
480
+ else {
481
+ radianValue = this.secondaryPercentage >= GAUGE_PERCENTAGE_THRESHOLD ? maxRadian : 0;
482
+ }
483
+ // reduce line length when line is on the bottom of canvas
484
+ if ((radianValue === 1 || radianValue === 0) && radiusOffset > 0.1) {
485
+ radius = this.size * (1 + this.pointPointerOffset) * this.scale;
486
+ }
487
+ const radian = radianValue * Math.PI;
488
+ const left = `${Math.round(this.width / 2 + Math.cos(radian) * radius) + offset}px`;
489
+ const top = `${Math.round(this.height + Math.sin(radian) * radius)}px`;
490
+ return { left: left, top: top };
491
+ }
492
+ /**
493
+ * Scales canvas variables making it responsive before painting
494
+ * @returns {void}
495
+ */
496
+ calculateCanvasSize() {
497
+ const lineLength = this.canvas.height * 0.75;
498
+ const bestWidth = 2 * (GAUGE_UPPER_BOUND + LINE_POINTER_OFFSET) * this.canvas.height + 2 * lineLength;
499
+ const ratio = bestWidth / this.canvas.height;
500
+ this.scale = 1;
501
+ if (this.canvas.width < bestWidth) {
502
+ const width = this.canvas.width;
503
+ const bestHeight = width / ratio;
504
+ this.scale = bestHeight / this.canvas.height;
505
+ }
506
+ this.scale = this.scale < 0.1 ? 0.1 : this.scale;
507
+ this.lineLength = this.scale * lineLength;
508
+ this.gaugeWidthScale = this.scale * GAUGE_WIDTH_SCALE;
509
+ this.gaugeHeightScale = this.scale * GAUGE_HEIGHT_SCALE;
510
+ this.gaugeUpperBound = this.scale * GAUGE_UPPER_BOUND;
511
+ this.gaugeLowerBound = this.scale * GAUGE_LOWER_BOUND;
512
+ this.primaryLineRadian = PRIMARY_RADIAN;
513
+ this.secondaryLineRadian = SECONDARY_RADIAN;
514
+ this.linePointerOffset = LINE_POINTER_OFFSET;
515
+ this.pointPointerOffset = POINT_POINTER_OFFSET;
516
+ if (this.scale < 1) {
517
+ // The value of 'reverseScale' increases as the value of 'scale' decreases.
518
+ // This mean when scale down the offset will grow up
519
+ const reverseScale = 1 - this.scale;
520
+ const offset = DEFAULT_OFFSET * reverseScale;
521
+ this.primaryLineRadian = PRIMARY_RADIAN + offset;
522
+ this.secondaryLineRadian = SECONDARY_RADIAN - offset;
523
+ this.linePointerOffset = LINE_POINTER_OFFSET + (0.4 * (1 - this.scale));
524
+ }
525
+ this.primaryLineRadian = this.primaryLineRadian > 1.3 ? 1.3 : this.primaryLineRadian;
526
+ this.secondaryLineRadian = this.primaryLineRadian > 1.7 ? 1.7 : this.secondaryLineRadian;
527
+ }
528
+ /**
529
+ * Calculate and update font sizes on canvas
530
+ * @returns {void}
531
+ */
532
+ updateFontSize() {
533
+ this.calculateLabelFontSize();
534
+ this.calculateValueFontSize();
535
+ }
536
+ /**
537
+ * Calculate label or value font size
538
+ * @param ctx canvas context
539
+ * @param textType text type
540
+ * @returns {number} font size
541
+ */
542
+ calculateFontSize(ctx, textType) {
543
+ let maxLine;
544
+ let minFontSize;
545
+ let widthScale;
546
+ let fontSize;
547
+ let longerLabel;
548
+ if (textType === TextType.LABEL) {
549
+ maxLine = MAX_LABEL_LINE;
550
+ minFontSize = MIN_LABEL_FONT_SIZE;
551
+ // buffer for word wrap
552
+ widthScale = 1.1;
553
+ longerLabel = this.primaryLabel.length > this.secondaryLabel.length ? this.primaryLabel : this.secondaryLabel;
554
+ fontSize = Math.ceil(this.scale * this.canvas.height * GAUGE_LABEL_FONT_SCALE);
555
+ }
556
+ else {
557
+ maxLine = MAX_VALUE_LINE;
558
+ minFontSize = MIN_VALUE_FONT_SIZE;
559
+ widthScale = 1;
560
+ const primaryValue = String(this.valueFormatter(this.primaryPercentage, this.primaryValue));
561
+ const secondaryValue = String(this.valueFormatter(this.secondaryPercentage, this.secondaryValue));
562
+ longerLabel = primaryValue.length > secondaryValue.length ? primaryValue : secondaryValue;
563
+ fontSize = Math.ceil(this.scale * this.canvas.height * GAUGE_VALUE_FONT_SCALE);
564
+ }
565
+ let textWidth = canvasHelper.textWidth(ctx, longerLabel, fontSize, getComputedStyle(this).fontFamily);
566
+ let numberOfLines = Math.ceil(textWidth / this.lineLength);
567
+ if (numberOfLines > maxLine) {
568
+ numberOfLines = maxLine;
569
+ }
570
+ if (textType === TextType.LABEL) {
571
+ this.labelLineNumber = numberOfLines;
572
+ }
573
+ do {
574
+ fontSize -= 1;
575
+ if (fontSize < minFontSize) {
576
+ fontSize = minFontSize;
577
+ break;
578
+ }
579
+ textWidth = canvasHelper.textWidth(ctx, longerLabel, fontSize, getComputedStyle(this).fontFamily);
580
+ } while (textWidth * widthScale > this.lineLength * numberOfLines);
581
+ return fontSize;
582
+ }
583
+ /**
584
+ * Update label font size
585
+ * @returns {void}
586
+ */
587
+ calculateLabelFontSize() {
588
+ if (!this.canvas.ctx) {
589
+ return;
590
+ }
591
+ this.labelStyle = { maxWidth: `${this.lineLength}px`, fontSize: `${this.calculateFontSize(this.canvas.ctx, TextType.LABEL)}px` };
592
+ }
593
+ /**
594
+ * Update value font size
595
+ * @returns {void}
596
+ */
597
+ calculateValueFontSize() {
598
+ if (!this.canvas.ctx) {
599
+ return;
600
+ }
601
+ this.valueStyle = { maxWidth: `${this.lineLength}px`, fontSize: `${this.calculateFontSize(this.canvas.ctx, TextType.VALUE)}px` };
602
+ }
603
+ /**
604
+ * Compute percentage of value
605
+ * @param value value of primary or secondary
606
+ * @returns percentage of value
607
+ */
608
+ getPercentage(value) {
609
+ if (value === 0) {
610
+ return 0;
611
+ }
612
+ return 100 * value / (this.primaryValue + this.secondaryValue);
613
+ }
614
+ /**
615
+ * Handles canvas resize
616
+ * @returns {void}
617
+ */
618
+ onCanvasResize() {
619
+ this.calculateCanvasSize();
620
+ this.updateFontSize();
621
+ this.renderCanvas('resize');
622
+ this.updateGaugePositions();
623
+ }
624
+ /**
625
+ * Renders legend container
626
+ * @returns {TemplateResult} Legend template or null
627
+ */
628
+ get legendTemplate() {
629
+ return this.primaryLegend.length > 0 || this.secondaryLegend.length > 0
630
+ ? html `<div part="legend-container-outer">
631
+ <div part="legend-container-inner">
632
+ ${this.primaryLegendTemplate}
633
+ ${this.secondaryLegendTemplate}
634
+ </div>
635
+ </div>`
636
+ : null;
637
+ }
638
+ /**
639
+ * Renders primary legend if property present
640
+ * @returns {TemplateResult} Primary legend template or null
641
+ */
642
+ get primaryLegendTemplate() {
643
+ return this.primaryLegend
644
+ ? html `<div part="primary-legend">
645
+ <span part="primary-legend-symbol"></span>
646
+ <ef-label max-line="${MAX_LEGEND_LINE}" line-clamp="${MAX_LEGEND_LINE}">${this.primaryLegend}</ef-label>
647
+ </div>`
648
+ : null;
649
+ }
650
+ /**
651
+ * Renders secondary legend if property present
652
+ * @returns {TemplateResult} Secondary legend template or null
653
+ */
654
+ get secondaryLegendTemplate() {
655
+ return this.secondaryLegend
656
+ ? html `<div part="secondary-legend">
657
+ <span part="secondary-legend-symbol"></span>
658
+ <ef-label max-line="${MAX_LEGEND_LINE}" line-clamp="${MAX_LEGEND_LINE}">${this.secondaryLegend}</ef-label>
659
+ </div>`
660
+ : null;
661
+ }
662
+ render() {
663
+ return html `
664
+ <div part="container">
665
+ ${this.legendTemplate}
666
+ <div part="canvas-container">
667
+ <ef-canvas part="canvas" @resize=${this.onCanvasResize}></ef-canvas>
668
+ <div part="primary-container" style=${styleMap(this.primaryContainerStyle)}>
669
+ ${this.primaryLabel ? html `
670
+ <ef-label
671
+ part="primary-label"
672
+ max-line="${MAX_LABEL_LINE}"
673
+ line-clamp="${MAX_LABEL_LINE}"
674
+ style=${styleMap(this.labelStyle)}
675
+ >${this.primaryLabel}
676
+ </ef-label><br>`
677
+ : null}
678
+ <ef-label
679
+ part="primary-value"
680
+ truncate=""
681
+ line-clamp="1"
682
+ style=${styleMap(this.valueStyle)}
683
+ >${this.valueFormatter(this.primaryPercentage, this.primaryValue)}</ef-label
684
+ >
685
+ </div>
686
+ <div part="secondary-container" style=${styleMap(this.secondaryContainerStyle)}>
687
+ ${this.secondaryLabel ? html `
688
+ <ef-label
689
+ part="secondary-label"
690
+ max-line="${MAX_LABEL_LINE}"
691
+ line-clamp="${MAX_LABEL_LINE}"
692
+ style=${styleMap(this.labelStyle)}
693
+ >${this.secondaryLabel}
694
+ </ef-label><br>`
695
+ : null}
696
+ <ef-label
697
+ part="secondary-value"
698
+ truncate=""
699
+ line-clamp="1"
700
+ style=${styleMap(this.valueStyle)}
701
+ >${this.valueFormatter(this.secondaryPercentage, this.secondaryValue)}</ef-label
702
+ >
703
+ </div>
704
+ </div>
705
+ </div>
706
+ `;
707
+ }
708
+ };
709
+ __decorate([
710
+ property({ attribute: 'primary-value', type: Number })
711
+ ], SwingGauge.prototype, "primaryValue", null);
712
+ __decorate([
713
+ property({ attribute: 'primary-label', type: String })
714
+ ], SwingGauge.prototype, "primaryLabel", void 0);
715
+ __decorate([
716
+ property({ attribute: 'secondary-value', type: Number })
717
+ ], SwingGauge.prototype, "secondaryValue", null);
718
+ __decorate([
719
+ property({ attribute: 'secondary-label', type: String })
720
+ ], SwingGauge.prototype, "secondaryLabel", void 0);
721
+ __decorate([
722
+ property({ type: Number })
723
+ ], SwingGauge.prototype, "duration", void 0);
724
+ __decorate([
725
+ property({ type: String, reflect: true, attribute: 'primary-legend' })
726
+ ], SwingGauge.prototype, "primaryLegend", void 0);
727
+ __decorate([
728
+ property({ type: String, reflect: true, attribute: 'secondary-legend' })
729
+ ], SwingGauge.prototype, "secondaryLegend", void 0);
730
+ __decorate([
731
+ property({ type: Function, attribute: false })
732
+ ], SwingGauge.prototype, "valueFormatter", void 0);
733
+ __decorate([
734
+ state()
735
+ ], SwingGauge.prototype, "primaryContainerStyle", void 0);
736
+ __decorate([
737
+ state()
738
+ ], SwingGauge.prototype, "secondaryContainerStyle", void 0);
739
+ __decorate([
740
+ state()
741
+ ], SwingGauge.prototype, "labelStyle", void 0);
742
+ __decorate([
743
+ state()
744
+ ], SwingGauge.prototype, "valueStyle", void 0);
745
+ __decorate([
746
+ query('[part=primary-container]', true)
747
+ ], SwingGauge.prototype, "primaryContainer", void 0);
748
+ __decorate([
749
+ query('[part=secondary-container]', true)
750
+ ], SwingGauge.prototype, "secondaryContainer", void 0);
751
+ __decorate([
752
+ query('[part=legend-container-outer]')
753
+ ], SwingGauge.prototype, "legendContainer", void 0);
754
+ __decorate([
755
+ query('[part=canvas]', true)
756
+ ], SwingGauge.prototype, "canvas", void 0);
757
+ SwingGauge = __decorate([
758
+ customElement('ef-swing-gauge', {
759
+ alias: 'sapphire-swing-gauge'
760
+ })
761
+ ], SwingGauge);
762
+ export { SwingGauge };