@watermarkinsights/ripple 4.2.0-1 → 4.2.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 (367) hide show
  1. package/dist/cjs/chartFunctions-2c3e010e.js +600 -0
  2. package/dist/cjs/{functions-4208c444.js → functions-91da05e9.js} +362 -362
  3. package/dist/cjs/{global-2806c327.js → global-b85941b0.js} +24 -24
  4. package/dist/cjs/{index-f8ef86de.js → index-fae02cd7.js} +150 -436
  5. package/dist/cjs/interfaces-245d7bff.js +38 -0
  6. package/dist/cjs/intl-fa3bb4ae.js +179 -0
  7. package/dist/cjs/loader.cjs.js +13 -4
  8. package/dist/cjs/priv-chart-popover.cjs.entry.js +85 -85
  9. package/dist/cjs/priv-datepicker.cjs.entry.js +637 -637
  10. package/dist/cjs/priv-navigator-button.cjs.entry.js +18 -18
  11. package/dist/cjs/priv-navigator-item.cjs.entry.js +21 -21
  12. package/dist/cjs/ripple.cjs.js +7 -4
  13. package/dist/cjs/wm-action-menu_2.cjs.entry.js +314 -314
  14. package/dist/cjs/wm-button.cjs.entry.js +174 -174
  15. package/dist/cjs/wm-chart-slice.cjs.entry.js +17 -17
  16. package/dist/cjs/wm-chart.cjs.entry.js +164 -164
  17. package/dist/cjs/wm-datepicker.cjs.entry.js +160 -160
  18. package/dist/cjs/wm-file-list.cjs.entry.js +10 -10
  19. package/dist/cjs/wm-file.cjs.entry.js +178 -178
  20. package/dist/cjs/wm-input.cjs.entry.js +102 -102
  21. package/dist/cjs/wm-line-chart.cjs.entry.js +448 -448
  22. package/dist/cjs/wm-modal-footer.cjs.entry.js +27 -27
  23. package/dist/cjs/wm-modal-header.cjs.entry.js +21 -21
  24. package/dist/cjs/wm-modal.cjs.entry.js +92 -92
  25. package/dist/cjs/wm-navigation_3.cjs.entry.js +179 -179
  26. package/dist/cjs/wm-navigator.cjs.entry.js +251 -251
  27. package/dist/cjs/wm-option_2.cjs.entry.js +710 -710
  28. package/dist/cjs/wm-pagination.cjs.entry.js +169 -169
  29. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +151 -151
  30. package/dist/cjs/wm-search.cjs.entry.js +192 -192
  31. package/dist/cjs/wm-snackbar.cjs.entry.js +114 -114
  32. package/dist/cjs/wm-tab-item_3.cjs.entry.js +247 -247
  33. package/dist/cjs/wm-tag-input.cjs.entry.js +849 -849
  34. package/dist/cjs/wm-tag-option.cjs.entry.js +33 -33
  35. package/dist/cjs/wm-timepicker.cjs.entry.js +270 -270
  36. package/dist/cjs/wm-toggletip.cjs.entry.js +99 -99
  37. package/dist/cjs/wm-uploader.cjs.entry.js +198 -198
  38. package/dist/cjs/wm-wrapper.cjs.entry.js +12 -12
  39. package/dist/collection/collection-manifest.json +41 -41
  40. package/dist/collection/components/charts/chartFunctions.js +456 -456
  41. package/dist/collection/components/charts/chartFunctions.spec.js +13 -13
  42. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.e2e.js +73 -73
  43. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +254 -257
  44. package/dist/collection/components/charts/screenshots.e2e.js +30 -30
  45. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +121 -121
  46. package/dist/collection/components/charts/wm-chart/wm-chart.e2e.js +160 -160
  47. package/dist/collection/components/charts/wm-chart/wm-chart.js +381 -382
  48. package/dist/collection/components/charts/wm-chart/wm-chart.spec.js +26 -26
  49. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.css +2 -1
  50. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.e2e.js +138 -138
  51. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +717 -717
  52. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.spec.js +106 -106
  53. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +202 -202
  54. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.e2e.js +54 -54
  55. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +136 -136
  56. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.spec.js +31 -31
  57. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +119 -119
  58. package/dist/collection/components/wm-action-menu/wm-action-menu.e2e.js +187 -187
  59. package/dist/collection/components/wm-action-menu/wm-action-menu.js +435 -435
  60. package/dist/collection/components/wm-action-menu/wm-action-menu.spec.js +35 -35
  61. package/dist/collection/components/wm-button/wm-button.e2e.js +58 -58
  62. package/dist/collection/components/wm-button/wm-button.js +452 -454
  63. package/dist/collection/components/wm-button/wm-button.spec.js +63 -63
  64. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.js +939 -943
  65. package/dist/collection/components/wm-datepicker/priv-datepicker/priv-datepicker.spec.js +71 -71
  66. package/dist/collection/components/wm-datepicker/wm-datepicker.css +2 -1
  67. package/dist/collection/components/wm-datepicker/wm-datepicker.e2e.js +359 -359
  68. package/dist/collection/components/wm-datepicker/wm-datepicker.js +413 -415
  69. package/dist/collection/components/wm-datepicker/wm-datepicker.spec.js +13 -13
  70. package/dist/collection/components/wm-file/wm-file.js +380 -380
  71. package/dist/collection/components/wm-file/wm-file.spec.js +107 -107
  72. package/dist/collection/components/wm-file-list/wm-file-list.js +42 -42
  73. package/dist/collection/components/wm-file-list/wm-file-list.spec.js +47 -47
  74. package/dist/collection/components/wm-input/wm-input.e2e.js +26 -26
  75. package/dist/collection/components/wm-input/wm-input.js +453 -453
  76. package/dist/collection/components/wm-input/wm-input.spec.js +168 -168
  77. package/dist/collection/components/wm-menuitem/wm-menuitem.e2e.js +18 -18
  78. package/dist/collection/components/wm-menuitem/wm-menuitem.js +436 -446
  79. package/dist/collection/components/wm-menuitem/wm-menuitem.spec.js +46 -46
  80. package/dist/collection/components/wm-modal/wm-modal-footer.js +130 -130
  81. package/dist/collection/components/wm-modal/wm-modal-footer.spec.js +8 -8
  82. package/dist/collection/components/wm-modal/wm-modal-header.js +68 -68
  83. package/dist/collection/components/wm-modal/wm-modal-header.spec.js +5 -5
  84. package/dist/collection/components/wm-modal/wm-modal.e2e.js +65 -65
  85. package/dist/collection/components/wm-modal/wm-modal.js +296 -299
  86. package/dist/collection/components/wm-modal/wm-modal.spec.js +22 -22
  87. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +1 -0
  88. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +112 -112
  89. package/dist/collection/components/wm-navigation/wm-navigation-item.js +125 -125
  90. package/dist/collection/components/wm-navigation/wm-navigation.css +2 -0
  91. package/dist/collection/components/wm-navigation/wm-navigation.e2e.js +86 -86
  92. package/dist/collection/components/wm-navigation/wm-navigation.js +209 -209
  93. package/dist/collection/components/wm-navigation/wm-navigation.spec.js +79 -79
  94. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.e2e.js +30 -30
  95. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +103 -103
  96. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +118 -119
  97. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +180 -180
  98. package/dist/collection/components/wm-navigator/wm-navigator.js +454 -454
  99. package/dist/collection/components/wm-navigator/wm-navigator.spec.js +153 -153
  100. package/dist/collection/components/wm-option/wm-option.e2e.js +19 -19
  101. package/dist/collection/components/wm-option/wm-option.js +463 -474
  102. package/dist/collection/components/wm-option/wm-option.spec.js +39 -39
  103. package/dist/collection/components/wm-pagination/wm-pagination.e2e.js +301 -301
  104. package/dist/collection/components/wm-pagination/wm-pagination.js +327 -327
  105. package/dist/collection/components/wm-search/wm-search.e2e.js +69 -69
  106. package/dist/collection/components/wm-search/wm-search.js +414 -415
  107. package/dist/collection/components/wm-search/wm-search.spec.js +64 -64
  108. package/dist/collection/components/wm-select/wm-select.e2e.js +443 -443
  109. package/dist/collection/components/wm-select/wm-select.js +966 -967
  110. package/dist/collection/components/wm-select/wm-select.spec.js +250 -250
  111. package/dist/collection/components/wm-snackbar/wm-snackbar.e2e.js +114 -114
  112. package/dist/collection/components/wm-snackbar/wm-snackbar.js +207 -209
  113. package/dist/collection/components/wm-snackbar/wm-snackbar.spec.js +4 -4
  114. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +188 -190
  115. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +261 -261
  116. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +104 -104
  117. package/dist/collection/components/wm-tabs/wm-tabs.e2e.js +79 -79
  118. package/dist/collection/components/wm-tabs/wm-tabs.spec.js +6 -6
  119. package/dist/collection/components/wm-tag-input/wm-tag-input.css +4 -2
  120. package/dist/collection/components/wm-tag-input/wm-tag-input.e2e.js +168 -168
  121. package/dist/collection/components/wm-tag-input/wm-tag-input.js +1159 -1159
  122. package/dist/collection/components/wm-tag-input/wm-tag-input.spec.js +147 -147
  123. package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +234 -236
  124. package/dist/collection/components/wm-timepicker/wm-timepicker.css +2 -1
  125. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +147 -147
  126. package/dist/collection/components/wm-timepicker/wm-timepicker.js +527 -531
  127. package/dist/collection/components/wm-timepicker/wm-timepicker.spec.js +151 -151
  128. package/dist/collection/components/wm-toggletip/wm-toggletip.e2e.js +61 -61
  129. package/dist/collection/components/wm-toggletip/wm-toggletip.js +208 -209
  130. package/dist/collection/components/wm-toggletip/wm-toggletip.spec.js +16 -16
  131. package/dist/collection/components/wm-uploader/wm-uploader.e2e.js +56 -56
  132. package/dist/collection/components/wm-uploader/wm-uploader.js +422 -423
  133. package/dist/collection/components/wm-uploader/wm-uploader.spec.js +149 -149
  134. package/dist/collection/components/wm-wrapper/wm-wrapper.js +26 -26
  135. package/dist/collection/global/__mocks__/functions.js +1 -1
  136. package/dist/collection/global/functions.js +510 -510
  137. package/dist/collection/global/functions.spec.js +123 -123
  138. package/dist/collection/global/global.js +16 -16
  139. package/dist/collection/global/interfaces.js +39 -39
  140. package/dist/collection/global/intl.js +162 -162
  141. package/dist/collection/global/services/__mocks__/http-service.js +112 -112
  142. package/dist/collection/global/services/http-service.js +41 -41
  143. package/dist/collection/global/themes/default.js +4 -4
  144. package/dist/collection/global/themes/neutral.js +4 -4
  145. package/dist/collection/lang/lang.spec.js +13 -13
  146. package/dist/esm/chartFunctions-36634c04.js +584 -0
  147. package/dist/esm/{functions-d0e70094.js → functions-5afd09f4.js} +362 -362
  148. package/dist/esm/{global-08dce155.js → global-91088105.js} +24 -24
  149. package/dist/esm/{index-f164fbca.js → index-7e11ea42.js} +150 -436
  150. package/dist/esm/interfaces-89cad2fc.js +35 -0
  151. package/dist/esm/intl-e2da750a.js +174 -0
  152. package/dist/esm/loader.js +14 -5
  153. package/dist/esm/polyfills/css-shim.js +1 -0
  154. package/dist/esm/priv-chart-popover.entry.js +85 -85
  155. package/dist/esm/priv-datepicker.entry.js +637 -637
  156. package/dist/esm/priv-navigator-button.entry.js +18 -18
  157. package/dist/esm/priv-navigator-item.entry.js +21 -21
  158. package/dist/esm/ripple.js +8 -5
  159. package/dist/esm/wm-action-menu_2.entry.js +314 -314
  160. package/dist/esm/wm-button.entry.js +174 -174
  161. package/dist/esm/wm-chart-slice.entry.js +17 -17
  162. package/dist/esm/wm-chart.entry.js +164 -164
  163. package/dist/esm/wm-datepicker.entry.js +160 -160
  164. package/dist/esm/wm-file-list.entry.js +10 -10
  165. package/dist/esm/wm-file.entry.js +178 -178
  166. package/dist/esm/wm-input.entry.js +102 -102
  167. package/dist/esm/wm-line-chart.entry.js +448 -448
  168. package/dist/esm/wm-modal-footer.entry.js +27 -27
  169. package/dist/esm/wm-modal-header.entry.js +21 -21
  170. package/dist/esm/wm-modal.entry.js +92 -92
  171. package/dist/esm/wm-navigation_3.entry.js +179 -179
  172. package/dist/esm/wm-navigator.entry.js +251 -251
  173. package/dist/esm/wm-option_2.entry.js +710 -710
  174. package/dist/esm/wm-pagination.entry.js +169 -169
  175. package/dist/esm/wm-progress-indicator_3.entry.js +151 -151
  176. package/dist/esm/wm-search.entry.js +192 -192
  177. package/dist/esm/wm-snackbar.entry.js +114 -114
  178. package/dist/esm/wm-tab-item_3.entry.js +247 -247
  179. package/dist/esm/wm-tag-input.entry.js +849 -849
  180. package/dist/esm/wm-tag-option.entry.js +33 -33
  181. package/dist/esm/wm-timepicker.entry.js +270 -270
  182. package/dist/esm/wm-toggletip.entry.js +99 -99
  183. package/dist/esm/wm-uploader.entry.js +198 -198
  184. package/dist/esm/wm-wrapper.entry.js +12 -12
  185. package/dist/esm-es5/chartFunctions-36634c04.js +1 -0
  186. package/dist/esm-es5/functions-5afd09f4.js +1 -0
  187. package/dist/esm-es5/global-91088105.js +1 -0
  188. package/dist/esm-es5/index-7e11ea42.js +2 -0
  189. package/dist/esm-es5/{intl-05c9e0c9.js → intl-e2da750a.js} +1 -1
  190. package/dist/esm-es5/loader.js +1 -1
  191. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  192. package/dist/esm-es5/priv-datepicker.entry.js +1 -1
  193. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  194. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  195. package/dist/esm-es5/ripple.js +1 -1
  196. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  197. package/dist/esm-es5/wm-button.entry.js +1 -1
  198. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  199. package/dist/esm-es5/wm-chart.entry.js +1 -1
  200. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  201. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  202. package/dist/esm-es5/wm-file.entry.js +1 -1
  203. package/dist/esm-es5/wm-input.entry.js +1 -1
  204. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  206. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  207. package/dist/esm-es5/wm-modal.entry.js +1 -1
  208. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  209. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  210. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  211. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  212. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  213. package/dist/esm-es5/wm-search.entry.js +1 -1
  214. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  215. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  216. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  217. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  218. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  219. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  220. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  221. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  222. package/dist/loader/index.d.ts +1 -1
  223. package/dist/ripple/p-00acacbe.system.entry.js +1 -0
  224. package/dist/ripple/{p-3446852f.system.entry.js → p-0631be01.system.entry.js} +1 -1
  225. package/dist/ripple/{p-ad6dc751.entry.js → p-0aecac86.entry.js} +1 -1
  226. package/dist/ripple/{p-c717d895.entry.js → p-0d9f70ab.entry.js} +1 -1
  227. package/dist/ripple/{p-b253d2fc.entry.js → p-0f1ff645.entry.js} +1 -1
  228. package/dist/ripple/{p-63f75d43.entry.js → p-1205fdc1.entry.js} +1 -1
  229. package/dist/ripple/{p-27f47edc.entry.js → p-1283e85d.entry.js} +1 -1
  230. package/dist/ripple/{p-43e2a49a.entry.js → p-13594c2e.entry.js} +1 -1
  231. package/dist/ripple/{p-5a921e55.entry.js → p-13af8346.entry.js} +1 -1
  232. package/dist/ripple/{p-ceced3d9.system.entry.js → p-15497721.system.entry.js} +1 -1
  233. package/dist/ripple/p-16363e1c.system.entry.js +1 -0
  234. package/dist/ripple/{p-3a070f35.entry.js → p-19773c40.entry.js} +1 -1
  235. package/dist/ripple/{p-b4d862e1.system.entry.js → p-1cde16a7.system.entry.js} +1 -1
  236. package/dist/ripple/{p-f711c914.entry.js → p-20f5c695.entry.js} +1 -1
  237. package/dist/ripple/{p-13ca30d8.js → p-24b08e1f.js} +1 -1
  238. package/dist/ripple/{p-2c834d27.system.entry.js → p-2a95b63f.system.entry.js} +1 -1
  239. package/dist/ripple/{p-c96a5c94.system.entry.js → p-2e773564.system.entry.js} +1 -1
  240. package/dist/ripple/p-30bf24f8.system.js +2 -0
  241. package/dist/ripple/p-3248c0fa.system.entry.js +1 -0
  242. package/dist/ripple/{p-28e4583c.system.entry.js → p-32b1126c.system.entry.js} +1 -1
  243. package/dist/ripple/{p-aadf8c59.entry.js → p-36049d2f.entry.js} +1 -1
  244. package/dist/ripple/p-3aca2871.js +1 -0
  245. package/dist/ripple/{p-633cd89a.system.entry.js → p-3becce62.system.entry.js} +1 -1
  246. package/dist/ripple/{p-58174f4e.entry.js → p-3c80bf67.entry.js} +1 -1
  247. package/dist/ripple/p-40fcae38.system.js +1 -0
  248. package/dist/ripple/p-47c20b05.entry.js +1 -0
  249. package/dist/ripple/p-4825101c.system.js +1 -0
  250. package/dist/ripple/p-56d64283.system.entry.js +1 -0
  251. package/dist/ripple/p-5e85967a.system.js +1 -0
  252. package/dist/ripple/{p-067d7922.system.entry.js → p-622a7791.system.entry.js} +1 -1
  253. package/dist/ripple/{p-aba5a00e.system.entry.js → p-676c1089.system.entry.js} +1 -1
  254. package/dist/ripple/{p-153701f9.entry.js → p-6abb903c.entry.js} +1 -1
  255. package/dist/ripple/{p-372faf33.entry.js → p-7529706d.entry.js} +1 -1
  256. package/dist/ripple/{p-de349bee.entry.js → p-7962f562.entry.js} +1 -1
  257. package/dist/ripple/{p-8d4734ad.entry.js → p-80aef387.entry.js} +1 -1
  258. package/dist/ripple/{p-8cace32f.entry.js → p-84a7e757.entry.js} +1 -1
  259. package/dist/ripple/{p-9fecbc8a.system.js → p-85f744ed.system.js} +1 -1
  260. package/dist/ripple/{p-05d4e49b.js → p-863e737a.js} +1 -1
  261. package/dist/ripple/{p-7e56da2e.system.entry.js → p-8ea68cb3.system.entry.js} +1 -1
  262. package/dist/ripple/{p-1402cfa2.system.js → p-8f3f903f.system.js} +1 -1
  263. package/dist/ripple/{p-c249063c.entry.js → p-8f8c3705.entry.js} +1 -1
  264. package/dist/ripple/{p-67d48c33.system.entry.js → p-90ea7e3a.system.entry.js} +1 -1
  265. package/dist/ripple/{p-a82a8931.entry.js → p-9288659b.entry.js} +1 -1
  266. package/dist/ripple/{p-6cf7a34a.entry.js → p-935513f8.entry.js} +1 -1
  267. package/dist/ripple/{p-b452d1d7.entry.js → p-a0bf5eef.entry.js} +1 -1
  268. package/dist/ripple/{p-06776596.system.entry.js → p-a1e95b05.system.entry.js} +1 -1
  269. package/dist/ripple/{p-25446670.entry.js → p-a52c5a1c.entry.js} +1 -1
  270. package/dist/ripple/{p-2c4f312d.system.entry.js → p-a5b23781.system.entry.js} +1 -1
  271. package/dist/ripple/p-a6be3cca.system.entry.js +1 -0
  272. package/dist/ripple/{p-fa87bce3.entry.js → p-a9c096b5.entry.js} +1 -1
  273. package/dist/ripple/p-aafa111a.system.js +1 -0
  274. package/dist/ripple/{p-1d8b0039.entry.js → p-ad37cdfd.entry.js} +1 -1
  275. package/dist/ripple/{p-350fe5da.entry.js → p-ae674a54.entry.js} +1 -1
  276. package/dist/ripple/{p-e24ddae1.entry.js → p-b3c73bc9.entry.js} +1 -1
  277. package/dist/ripple/{p-e8b58666.system.entry.js → p-b3e08b14.system.entry.js} +1 -1
  278. package/dist/ripple/p-b5bedd63.js +2 -0
  279. package/dist/ripple/{p-a69c37e0.entry.js → p-b71a83e3.entry.js} +1 -1
  280. package/dist/ripple/p-bd537299.system.entry.js +1 -0
  281. package/dist/ripple/{p-42ebfcfa.entry.js → p-c41603e6.entry.js} +1 -1
  282. package/dist/ripple/{p-5a4d9897.system.entry.js → p-c5e8f8a5.system.entry.js} +1 -1
  283. package/dist/ripple/{p-7a8816d9.system.entry.js → p-c76bbedf.system.entry.js} +1 -1
  284. package/dist/ripple/{p-3af72848.js → p-c7b5ac39.js} +1 -1
  285. package/dist/ripple/{p-361cc8fc.system.entry.js → p-cbd8a60b.system.entry.js} +1 -1
  286. package/dist/ripple/{p-3583d113.system.entry.js → p-d04ba5f8.system.entry.js} +1 -1
  287. package/dist/ripple/{p-1fa2a756.system.entry.js → p-d0f1b8c4.system.entry.js} +1 -1
  288. package/dist/ripple/{p-bdd4f919.system.entry.js → p-d496bc44.system.entry.js} +1 -1
  289. package/dist/ripple/{p-7e8daaac.entry.js → p-deb4f5a2.entry.js} +1 -1
  290. package/dist/ripple/{p-5ac980e2.system.entry.js → p-e3f0b57f.system.entry.js} +1 -1
  291. package/dist/ripple/{p-f1a92576.system.entry.js → p-e4919f95.system.entry.js} +1 -1
  292. package/dist/ripple/{p-49118468.entry.js → p-ed942b42.entry.js} +1 -1
  293. package/dist/ripple/{p-0ecbf569.system.entry.js → p-f30839a1.system.entry.js} +1 -1
  294. package/dist/ripple/{p-d3f9d028.system.entry.js → p-ff14e4ec.system.entry.js} +1 -1
  295. package/dist/ripple/ripple.esm.js +1 -1
  296. package/dist/ripple/ripple.js +20 -16
  297. package/dist/types/components/charts/chartFunctions.d.ts +13 -13
  298. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +24 -24
  299. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +8 -8
  300. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +39 -39
  301. package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +73 -73
  302. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +26 -26
  303. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +17 -17
  304. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +7 -7
  305. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +43 -43
  306. package/dist/types/components/wm-button/wm-button.d.ts +40 -40
  307. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +76 -76
  308. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +31 -31
  309. package/dist/types/components/wm-file/wm-file.d.ts +40 -40
  310. package/dist/types/components/wm-file-list/wm-file-list.d.ts +3 -3
  311. package/dist/types/components/wm-input/wm-input.d.ts +46 -46
  312. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +31 -31
  313. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +11 -11
  314. package/dist/types/components/wm-modal/wm-modal-header.d.ts +7 -7
  315. package/dist/types/components/wm-modal/wm-modal.d.ts +24 -24
  316. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +13 -13
  317. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +10 -10
  318. package/dist/types/components/wm-navigation/wm-navigation.d.ts +23 -23
  319. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +7 -7
  320. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +10 -10
  321. package/dist/types/components/wm-navigator/wm-navigator.d.ts +57 -57
  322. package/dist/types/components/wm-option/wm-option.d.ts +36 -36
  323. package/dist/types/components/wm-pagination/wm-pagination.d.ts +27 -27
  324. package/dist/types/components/wm-search/wm-search.d.ts +73 -73
  325. package/dist/types/components/wm-select/wm-select.d.ts +99 -99
  326. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +24 -24
  327. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +30 -30
  328. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +41 -41
  329. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +16 -16
  330. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +48 -48
  331. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +20 -20
  332. package/dist/types/components/wm-uploader/wm-uploader.d.ts +47 -47
  333. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +4 -4
  334. package/dist/types/components.d.ts +0 -382
  335. package/dist/types/global/__mocks__/functions.d.ts +1 -1
  336. package/dist/types/global/functions.d.ts +4 -4
  337. package/dist/types/global/interfaces.d.ts +49 -49
  338. package/dist/types/global/intl.d.ts +31 -31
  339. package/dist/types/global/services/__mocks__/http-service.d.ts +1 -1
  340. package/dist/types/stencil-public-runtime.d.ts +5 -46
  341. package/package.json +1 -1
  342. package/dist/cjs/chartFunctions-cecf8134.js +0 -600
  343. package/dist/cjs/interfaces-ad9e80a6.js +0 -38
  344. package/dist/cjs/intl-3fafc6d1.js +0 -179
  345. package/dist/esm/chartFunctions-23173fce.js +0 -584
  346. package/dist/esm/interfaces-9b75fb61.js +0 -35
  347. package/dist/esm/intl-05c9e0c9.js +0 -174
  348. package/dist/esm-es5/chartFunctions-23173fce.js +0 -1
  349. package/dist/esm-es5/functions-d0e70094.js +0 -1
  350. package/dist/esm-es5/global-08dce155.js +0 -1
  351. package/dist/esm-es5/index-f164fbca.js +0 -2
  352. package/dist/ripple/p-028ef6db.system.entry.js +0 -1
  353. package/dist/ripple/p-09d62ddd.entry.js +0 -1
  354. package/dist/ripple/p-0fe97e85.system.js +0 -2
  355. package/dist/ripple/p-1453ea51.system.entry.js +0 -1
  356. package/dist/ripple/p-17d3440b.system.js +0 -1
  357. package/dist/ripple/p-1cc91907.system.js +0 -1
  358. package/dist/ripple/p-30b17818.system.entry.js +0 -1
  359. package/dist/ripple/p-4de51706.js +0 -2
  360. package/dist/ripple/p-88406560.system.entry.js +0 -1
  361. package/dist/ripple/p-8f76a838.system.entry.js +0 -1
  362. package/dist/ripple/p-a99b05de.system.entry.js +0 -1
  363. package/dist/ripple/p-c18b398c.system.js +0 -1
  364. package/dist/ripple/p-c235754b.js +0 -1
  365. package/dist/ripple/p-d03095e7.system.js +0 -1
  366. /package/dist/esm-es5/{interfaces-9b75fb61.js → interfaces-89cad2fc.js} +0 -0
  367. /package/dist/ripple/{p-196eb2f3.js → p-c0c111fd.js} +0 -0
@@ -3,727 +3,727 @@ import { csvToArray, debounce, transposeMatrix, getSmallestSkipInterval, wrapAro
3
3
  import { abbrNumber, getInterval } from "../chartFunctions";
4
4
  import { chartMessages, globalMessages, lineChartMessages } from "../../../global/intl";
5
5
  export class LineChart {
6
- constructor() {
7
- this.minTickWidth = 120;
8
- this.popoverData = [];
9
- this.focusedDataPoint = [0, 0];
10
- this.dataPointMatrix = [];
11
- this.xIntervals = [];
12
- this.displayedXIntervals = [];
13
- this.yIntervals = [];
14
- this.lineStyles = [
15
- { color: "#8b86ca", icon: "f536" },
16
- { color: "#2e1b46", icon: "f12f" },
17
- { color: "#0089e4", icon: "f763" },
18
- { color: "#088000", icon: "f4ce" },
19
- { color: "#ea8500", icon: "f70a" },
20
- { color: "#d54f41", icon: "f536" },
21
- { color: "#146ca9", icon: "f6ff" }, // blue, upside down triangle
22
- ];
23
- this.debouncedResize = debounce(async () => {
24
- this.displayedXIntervals = this.determineDisplayedXIntervals();
25
- }, 100);
26
- this.label = undefined;
27
- this.description = "";
28
- this.xAxisLabel = undefined;
29
- this.yAxisLabel = undefined;
30
- this.lineData = undefined;
31
- this.units = "null,null";
32
- this.labelWidth = "120px";
33
- this.highlightQualifier = "highlighted";
34
- this.highlightStart = undefined;
35
- this.highlightEnd = undefined;
36
- this.visibilityToggles = false;
37
- this.showDeltas = false;
38
- this.yRange = undefined;
39
- this.parsedLineData = {};
40
- this.displayedPopover = -1;
41
- this.focusedLine = -1;
42
- this.hiddenLines = [];
43
- this.isTabbing = false;
44
- this.intervalSkip = 0;
45
- this.announcement = "";
46
- }
47
- parseData() {
48
- this.parsedLineData = JSON.parse(this.lineData);
49
- this.yIntervals = this.calcYIntervals().reverse(); // needed before building dataPointMatrix
50
- this.xIntervals = Object.keys(Object.values(this.parsedLineData)[0]);
51
- this.displayedXIntervals = this.determineDisplayedXIntervals();
52
- this.dataPointMatrix = Object.entries(this.parsedLineData).map((entry) => this.buildLineDataPointDetails(entry[0], entry[1]));
53
- this.popoverData = transposeMatrix(this.dataPointMatrix);
54
- }
55
- handleIntervalSkip() {
56
- // if intervalSkip ever changes, dataPointMatrix must be regenerated to account for chart spacers
57
- this.parseData();
58
- }
59
- get hasPartialInterval() {
60
- // if chart width is too small, an odd # of intervals like 1,2,3,4,5,6,7 can be shortened to 1,3,5,7 or 1,4,7
61
- // but an even # like 1,2,3,4,5,6,7,8 will be shortened to 1,3,5,7 (can't show first and last interval)
62
- // in these cases, show a partial interval must be shown in order to still provide space to plot the 8th data point
63
- // e.g intervals will be 1-3, 3-5, 5-7, 7-8
64
- return this.intervalSkip > 0 && this.xIntervals.length % 2 === 0;
65
- }
66
- get parsedUnits() {
67
- return csvToArray(this.units).map((unit) => (unit === "null" ? null : unit));
68
- }
69
- get visibilityToggleEls() {
70
- return this.legendEl.querySelectorAll("wm-button");
71
- }
72
- get lineEls() {
73
- return this.plotAreaEl.querySelectorAll(".line");
74
- }
75
- get firstVisibleLineIdx() {
76
- let firstVisibleLineIdx = 0;
77
- while (this.hiddenLines.includes(firstVisibleLineIdx)) {
78
- firstVisibleLineIdx++;
79
- }
80
- return firstVisibleLineIdx < this.dataPointMatrix.length ? firstVisibleLineIdx : -1;
81
- }
82
- toggleTabbingOn() {
83
- this.isTabbing = true;
84
- }
85
- toggleTabbingOff() {
86
- this.isTabbing = false;
87
- }
88
- componentWillLoad() {
89
- this.parseData();
90
- }
91
- componentDidLoad() {
92
- const resizeObserver = new ResizeObserver(() => this.debouncedResize());
93
- resizeObserver.observe(this.el);
94
- }
95
- handleVisibilityToggleKeydown(ev, toggleIdx) {
96
- switch (ev.key) {
97
- case "Tab":
98
- if (!ev.shiftKey && this.firstVisibleLineIdx !== -1) {
99
- ev.preventDefault();
100
- this.announce(this.lineFocusMessage(this.firstVisibleLineIdx));
101
- this.focusDataPoint(this.firstVisibleLineIdx, 0);
102
- }
103
- break;
104
- case "ArrowUp":
105
- case "ArrowLeft":
106
- ev.preventDefault();
107
- const prevToggleIdx = wrapAround(toggleIdx, -1, this.dataPointMatrix.length - 1);
108
- this.visibilityToggleEls[prevToggleIdx].focus();
109
- break;
110
- case "ArrowDown":
111
- case "ArrowRight":
112
- ev.preventDefault();
113
- const nextToggleIdx = wrapAround(toggleIdx, 1, this.dataPointMatrix.length - 1);
114
- this.visibilityToggleEls[nextToggleIdx].focus();
115
- break;
116
- }
117
- }
118
- handleDataPointKeydown(ev) {
119
- const [lineIdx, pointIdx] = this.focusedDataPoint;
120
- const lineLength = this.lineEls[lineIdx].querySelectorAll(".point").length;
121
- const numLines = this.dataPointMatrix.length;
122
- switch (ev.key) {
123
- case "Tab":
124
- if (ev.shiftKey && this.visibilityToggles) {
125
- ev.preventDefault();
126
- this.visibilityToggleEls[0].focus();
127
- }
128
- break;
129
- case "ArrowUp":
130
- ev.preventDefault();
131
- let prevLineIdx = lineIdx;
132
- do
133
- prevLineIdx = wrapAround(prevLineIdx, -1, numLines - 1);
134
- while (this.hiddenLines.includes(prevLineIdx));
135
- this.announce(this.lineFocusMessage(prevLineIdx));
136
- this.focusDataPoint(prevLineIdx, pointIdx);
137
- break;
138
- case "ArrowDown":
139
- ev.preventDefault();
140
- let nextLineIdx = lineIdx;
141
- do
142
- nextLineIdx = wrapAround(nextLineIdx, 1, numLines - 1);
143
- while (this.hiddenLines.includes(nextLineIdx));
144
- this.announce(this.lineFocusMessage(nextLineIdx));
145
- this.focusDataPoint(nextLineIdx, pointIdx);
146
- break;
147
- case "ArrowLeft":
148
- ev.preventDefault();
149
- const prevPointIdx = wrapAround(pointIdx, -1, lineLength - 1);
150
- this.focusDataPoint(lineIdx, prevPointIdx);
151
- break;
152
- case "ArrowRight":
153
- ev.preventDefault();
154
- const nextPointIdx = wrapAround(pointIdx, 1, lineLength - 1);
155
- this.focusDataPoint(lineIdx, nextPointIdx);
156
- break;
157
- }
158
- }
159
- announce(message) {
160
- // \u00A0 is a non-breaking space character, which causes the message to be read as a new one
161
- if (this.liveRegionEl.textContent === message) {
162
- message += "\u00A0";
163
- }
164
- this.announcement = message;
165
- }
166
- lineFocusMessage(lineIdx) {
167
- const label = this.dataPointMatrix[lineIdx][0].lineLabel;
168
- const numDataPoints = this.dataPointMatrix[lineIdx].filter((datapoint) => datapoint.yValue !== null).length;
169
- return `${label}, line ${lineIdx + 1} of ${this.dataPointMatrix.length} with ${numDataPoints} data points`;
170
- }
171
- focusDataPoint(lineIdx, pointIdx) {
172
- const lineEl = this.lineEls[lineIdx];
173
- const pointEl = lineEl.querySelectorAll(".point")[pointIdx];
174
- const allPoints = this.plotAreaEl.querySelectorAll(".point");
175
- allPoints.forEach((point) => (point.tabIndex = -1));
176
- pointEl.tabIndex = 0;
177
- pointEl.focus();
178
- this.focusedDataPoint = [lineIdx, pointIdx];
179
- }
180
- focusDataPointByEl(pointEl) {
181
- const lineIdx = parseInt(pointEl.dataset.lineidx);
182
- const pointIdx = Array.from(pointEl.parentElement.querySelectorAll(".point")).indexOf(pointEl);
183
- const allPoints = this.plotAreaEl.querySelectorAll(".point");
184
- allPoints.forEach((point) => (point.tabIndex = -1));
185
- pointEl.tabIndex = 0;
186
- pointEl.focus();
187
- this.focusedDataPoint = [lineIdx, pointIdx];
188
- }
189
- calcYIntervals() {
190
- let yIntervals = [];
191
- if (this.yRange) {
192
- yIntervals = csvToArray(this.yRange).map((val) => parseInt(val));
193
- }
194
- else {
195
- // gather all yValues
196
- let allYValues = [];
197
- const lines = Object.values(this.parsedLineData).flat();
198
- lines.forEach((line) => allYValues.push(...Object.values(line)));
199
- const filteredYValues = allYValues.filter((val) => val !== null);
200
- // get max and min yValues in data
201
- let minYValue = Math.min(...filteredYValues);
202
- const maxYValue = Math.max(...filteredYValues);
203
- // calculate neat yInterval
204
- let interval = getInterval(maxYValue - minYValue, 4);
205
- // find new min below smallest yValue that divides cleanly by interval
206
- let counter = interval;
207
- while (minYValue % interval !== 0 && counter > 0) {
208
- minYValue--;
209
- counter--;
210
- }
211
- // calculate new interval using new min
212
- interval = getInterval(maxYValue - minYValue, 4);
213
- let current = minYValue;
214
- // determine top interval, no more than one tick above max yValue
215
- while (current <= maxYValue + interval) {
216
- yIntervals.push(current);
217
- current += interval;
218
- }
219
- }
220
- return yIntervals;
221
- }
222
- determineDisplayedXIntervals() {
223
- // if component has display: none, plotAreaEl is truthy, but it's clientWidth is 0. This caused a crash when component was hidden in a tab
224
- const maxTicks = this.plotAreaEl && this.plotAreaEl.clientWidth > 0
225
- ? Math.round(this.plotAreaEl.clientWidth / this.minTickWidth)
226
- : this.xIntervals.length;
227
- const { skipInterval, skippedList } = getSmallestSkipInterval(this.xIntervals, maxTicks);
228
- this.intervalSkip = skipInterval;
229
- return skippedList;
230
- }
231
- buildLineDataPointDetails(lineLabel, line) {
232
- let dataPointDetailsList = [];
233
- const lineDataPoints = Object.entries(line);
234
- let isHighlighted;
235
- lineDataPoints.forEach((entry, pointIdx) => {
236
- const [xValue, yValue] = entry;
237
- let xPositionPercent = (100 / (lineDataPoints.length - 1)) * pointIdx;
238
- const yPositionPercent = yValue === null
239
- ? null
240
- : 100 - calcPercentageInRange(yValue, this.yIntervals[this.yIntervals.length - 1], this.yIntervals[0]);
241
- // add space between first points and y-axis
242
- if (pointIdx === 0) {
243
- xPositionPercent +=
244
- this.plotAreaEl && this.plotAreaEl.clientWidth > 0 ? (8 / this.plotAreaEl.clientWidth) * 100 : 1;
245
- }
246
- if (xValue === this.highlightStart && !isHighlighted) {
247
- isHighlighted = true;
248
- }
249
- dataPointDetailsList.push({
250
- lineLabel: lineLabel,
251
- xValue: xValue,
252
- yValue: yValue,
253
- xPositionPercent: xPositionPercent,
254
- yPositionPercent: yPositionPercent,
255
- highlighted: isHighlighted,
256
- });
257
- // because highlight range is inclusive, disable after pushing details
258
- if (xValue === this.highlightEnd && isHighlighted) {
259
- isHighlighted = false;
260
- }
261
- });
262
- return dataPointDetailsList;
263
- }
264
- toggleLineVisibility(lineIdx) {
265
- if (this.hiddenLines.includes(lineIdx)) {
266
- this.hiddenLines = this.hiddenLines.filter((num) => num !== lineIdx);
267
- }
268
- else {
269
- this.hiddenLines.push(lineIdx);
270
- }
271
- forceUpdate(this.el);
272
- }
273
- resetDataPointFocus() {
274
- this.displayedPopover = -1;
275
- const allPoints = this.plotAreaEl.querySelectorAll(".point");
276
- allPoints.forEach((point) => (point.tabIndex = -1));
277
- if (this.firstVisibleLineIdx !== -1) {
278
- const lineEl = this.lineEls[this.firstVisibleLineIdx];
279
- const pointEl = lineEl.querySelectorAll(".point")[0];
280
- pointEl.tabIndex = 0;
281
- this.focusedDataPoint = [this.firstVisibleLineIdx, 0];
282
- }
283
- }
284
- calcDelta(dataPoint, prevDataPoint) {
285
- let delta;
286
- if (dataPoint.yValue === null || prevDataPoint.yValue === null) {
287
- // display "No data" when either of the datapoints is missing
288
- delta = lineChartMessages.noData;
289
- }
290
- else if (dataPoint.yValue == prevDataPoint.yValue) {
291
- // display "0%" if datapoints are equal
292
- delta = "0%";
6
+ constructor() {
7
+ this.minTickWidth = 120;
8
+ this.popoverData = [];
9
+ this.focusedDataPoint = [0, 0];
10
+ this.dataPointMatrix = [];
11
+ this.xIntervals = [];
12
+ this.displayedXIntervals = [];
13
+ this.yIntervals = [];
14
+ this.lineStyles = [
15
+ { color: "#8b86ca", icon: "f536" },
16
+ { color: "#2e1b46", icon: "f12f" },
17
+ { color: "#0089e4", icon: "f763" },
18
+ { color: "#088000", icon: "f4ce" },
19
+ { color: "#ea8500", icon: "f70a" },
20
+ { color: "#d54f41", icon: "f536" },
21
+ { color: "#146ca9", icon: "f6ff" }, // blue, upside down triangle
22
+ ];
23
+ this.debouncedResize = debounce(async () => {
24
+ this.displayedXIntervals = this.determineDisplayedXIntervals();
25
+ }, 100);
26
+ this.label = undefined;
27
+ this.description = "";
28
+ this.xAxisLabel = undefined;
29
+ this.yAxisLabel = undefined;
30
+ this.lineData = undefined;
31
+ this.units = "null,null";
32
+ this.labelWidth = "120px";
33
+ this.highlightQualifier = "highlighted";
34
+ this.highlightStart = undefined;
35
+ this.highlightEnd = undefined;
36
+ this.visibilityToggles = false;
37
+ this.showDeltas = false;
38
+ this.yRange = undefined;
39
+ this.parsedLineData = {};
40
+ this.displayedPopover = -1;
41
+ this.focusedLine = -1;
42
+ this.hiddenLines = [];
43
+ this.isTabbing = false;
44
+ this.intervalSkip = 0;
45
+ this.announcement = "";
46
+ }
47
+ parseData() {
48
+ this.parsedLineData = JSON.parse(this.lineData);
49
+ this.yIntervals = this.calcYIntervals().reverse(); // needed before building dataPointMatrix
50
+ this.xIntervals = Object.keys(Object.values(this.parsedLineData)[0]);
51
+ this.displayedXIntervals = this.determineDisplayedXIntervals();
52
+ this.dataPointMatrix = Object.entries(this.parsedLineData).map((entry) => this.buildLineDataPointDetails(entry[0], entry[1]));
53
+ this.popoverData = transposeMatrix(this.dataPointMatrix);
54
+ }
55
+ handleIntervalSkip() {
56
+ // if intervalSkip ever changes, dataPointMatrix must be regenerated to account for chart spacers
57
+ this.parseData();
58
+ }
59
+ get hasPartialInterval() {
60
+ // if chart width is too small, an odd # of intervals like 1,2,3,4,5,6,7 can be shortened to 1,3,5,7 or 1,4,7
61
+ // but an even # like 1,2,3,4,5,6,7,8 will be shortened to 1,3,5,7 (can't show first and last interval)
62
+ // in these cases, show a partial interval must be shown in order to still provide space to plot the 8th data point
63
+ // e.g intervals will be 1-3, 3-5, 5-7, 7-8
64
+ return this.intervalSkip > 0 && this.xIntervals.length % 2 === 0;
65
+ }
66
+ get parsedUnits() {
67
+ return csvToArray(this.units).map((unit) => (unit === "null" ? null : unit));
68
+ }
69
+ get visibilityToggleEls() {
70
+ return this.legendEl.querySelectorAll("wm-button");
71
+ }
72
+ get lineEls() {
73
+ return this.plotAreaEl.querySelectorAll(".line");
74
+ }
75
+ get firstVisibleLineIdx() {
76
+ let firstVisibleLineIdx = 0;
77
+ while (this.hiddenLines.includes(firstVisibleLineIdx)) {
78
+ firstVisibleLineIdx++;
79
+ }
80
+ return firstVisibleLineIdx < this.dataPointMatrix.length ? firstVisibleLineIdx : -1;
81
+ }
82
+ toggleTabbingOn() {
83
+ this.isTabbing = true;
84
+ }
85
+ toggleTabbingOff() {
86
+ this.isTabbing = false;
87
+ }
88
+ componentWillLoad() {
89
+ this.parseData();
90
+ }
91
+ componentDidLoad() {
92
+ const resizeObserver = new ResizeObserver(() => this.debouncedResize());
93
+ resizeObserver.observe(this.el);
94
+ }
95
+ handleVisibilityToggleKeydown(ev, toggleIdx) {
96
+ switch (ev.key) {
97
+ case "Tab":
98
+ if (!ev.shiftKey && this.firstVisibleLineIdx !== -1) {
99
+ ev.preventDefault();
100
+ this.announce(this.lineFocusMessage(this.firstVisibleLineIdx));
101
+ this.focusDataPoint(this.firstVisibleLineIdx, 0);
293
102
  }
294
- else if (prevDataPoint.yValue == 0) {
295
- // display "-" for % increase if prev data point is 0, as the technical number would be infinity
296
- delta = "-";
103
+ break;
104
+ case "ArrowUp":
105
+ case "ArrowLeft":
106
+ ev.preventDefault();
107
+ const prevToggleIdx = wrapAround(toggleIdx, -1, this.dataPointMatrix.length - 1);
108
+ this.visibilityToggleEls[prevToggleIdx].focus();
109
+ break;
110
+ case "ArrowDown":
111
+ case "ArrowRight":
112
+ ev.preventDefault();
113
+ const nextToggleIdx = wrapAround(toggleIdx, 1, this.dataPointMatrix.length - 1);
114
+ this.visibilityToggleEls[nextToggleIdx].focus();
115
+ break;
116
+ }
117
+ }
118
+ handleDataPointKeydown(ev) {
119
+ const [lineIdx, pointIdx] = this.focusedDataPoint;
120
+ const lineLength = this.lineEls[lineIdx].querySelectorAll(".point").length;
121
+ const numLines = this.dataPointMatrix.length;
122
+ switch (ev.key) {
123
+ case "Tab":
124
+ if (ev.shiftKey && this.visibilityToggles) {
125
+ ev.preventDefault();
126
+ this.visibilityToggleEls[0].focus();
297
127
  }
298
- else {
299
- const changePercent = ((dataPoint.yValue - prevDataPoint.yValue) / prevDataPoint.yValue) * 100;
300
- const roundedPercent = Math.round(changePercent * 100) / 100;
301
- delta = `${roundedPercent > 0 ? "+" : ""}${roundedPercent}%`;
302
- }
303
- return delta;
304
- }
305
- renderLegend() {
306
- const lineLabels = Object.keys(this.parsedLineData);
307
- return (h("div", { ref: (el) => (this.legendEl = el), class: "legend" }, lineLabels.map((lineLabel, lineIdx) => {
308
- const isHidden = this.hiddenLines.includes(lineIdx);
309
- const isFaded = this.focusedLine !== -1 && this.focusedLine !== lineIdx;
310
- return (h("div", { id: `legend-label-${lineIdx}`, class: `legend-label ${isFaded ? "faded" : ""}`, onMouseEnter: () => (this.focusedLine = isHidden ? -1 : lineIdx), onMouseLeave: () => (this.focusedLine = -1) }, this.renderIcon(lineIdx), lineLabel, this.visibilityToggles && this.renderVisibilityToggle(lineLabel, lineIdx, isHidden)));
311
- })));
312
- }
313
- renderVisibilityToggle(lineLabel, lineIdx, isHidden) {
314
- return (h("wm-button", { id: `visibility-button-${lineIdx}`, class: "visibility-toggle", "label-for-identical-buttons": `${lineIdx === 0 ? `Toggle line visibility list with ${this.dataPointMatrix.length} items` : ""} ${isHidden ? globalMessages.show : globalMessages.hide} ${lineLabel} toggle ${isHidden ? "pressed" : ""}`, "button-type": "navigational", tooltip: isHidden ? globalMessages.show : globalMessages.hide, tooltipPosition: "bottom", icon: isHidden ? "f209" : "f208", onClick: () => this.toggleLineVisibility(lineIdx), onKeyDown: (ev) => this.handleVisibilityToggleKeydown(ev, lineIdx), onFocus: () => (this.displayedPopover = -1) }));
315
- }
316
- renderIcon(lineIdx) {
128
+ break;
129
+ case "ArrowUp":
130
+ ev.preventDefault();
131
+ let prevLineIdx = lineIdx;
132
+ do
133
+ prevLineIdx = wrapAround(prevLineIdx, -1, numLines - 1);
134
+ while (this.hiddenLines.includes(prevLineIdx));
135
+ this.announce(this.lineFocusMessage(prevLineIdx));
136
+ this.focusDataPoint(prevLineIdx, pointIdx);
137
+ break;
138
+ case "ArrowDown":
139
+ ev.preventDefault();
140
+ let nextLineIdx = lineIdx;
141
+ do
142
+ nextLineIdx = wrapAround(nextLineIdx, 1, numLines - 1);
143
+ while (this.hiddenLines.includes(nextLineIdx));
144
+ this.announce(this.lineFocusMessage(nextLineIdx));
145
+ this.focusDataPoint(nextLineIdx, pointIdx);
146
+ break;
147
+ case "ArrowLeft":
148
+ ev.preventDefault();
149
+ const prevPointIdx = wrapAround(pointIdx, -1, lineLength - 1);
150
+ this.focusDataPoint(lineIdx, prevPointIdx);
151
+ break;
152
+ case "ArrowRight":
153
+ ev.preventDefault();
154
+ const nextPointIdx = wrapAround(pointIdx, 1, lineLength - 1);
155
+ this.focusDataPoint(lineIdx, nextPointIdx);
156
+ break;
157
+ }
158
+ }
159
+ announce(message) {
160
+ // \u00A0 is a non-breaking space character, which causes the message to be read as a new one
161
+ if (this.liveRegionEl.textContent === message) {
162
+ message += "\u00A0";
163
+ }
164
+ this.announcement = message;
165
+ }
166
+ lineFocusMessage(lineIdx) {
167
+ const label = this.dataPointMatrix[lineIdx][0].lineLabel;
168
+ const numDataPoints = this.dataPointMatrix[lineIdx].filter((datapoint) => datapoint.yValue !== null).length;
169
+ return `${label}, line ${lineIdx + 1} of ${this.dataPointMatrix.length} with ${numDataPoints} data points`;
170
+ }
171
+ focusDataPoint(lineIdx, pointIdx) {
172
+ const lineEl = this.lineEls[lineIdx];
173
+ const pointEl = lineEl.querySelectorAll(".point")[pointIdx];
174
+ const allPoints = this.plotAreaEl.querySelectorAll(".point");
175
+ allPoints.forEach((point) => (point.tabIndex = -1));
176
+ pointEl.tabIndex = 0;
177
+ pointEl.focus();
178
+ this.focusedDataPoint = [lineIdx, pointIdx];
179
+ }
180
+ focusDataPointByEl(pointEl) {
181
+ const lineIdx = parseInt(pointEl.dataset.lineidx);
182
+ const pointIdx = Array.from(pointEl.parentElement.querySelectorAll(".point")).indexOf(pointEl);
183
+ const allPoints = this.plotAreaEl.querySelectorAll(".point");
184
+ allPoints.forEach((point) => (point.tabIndex = -1));
185
+ pointEl.tabIndex = 0;
186
+ pointEl.focus();
187
+ this.focusedDataPoint = [lineIdx, pointIdx];
188
+ }
189
+ calcYIntervals() {
190
+ let yIntervals = [];
191
+ if (this.yRange) {
192
+ yIntervals = csvToArray(this.yRange).map((val) => parseInt(val));
193
+ }
194
+ else {
195
+ // gather all yValues
196
+ let allYValues = [];
197
+ const lines = Object.values(this.parsedLineData).flat();
198
+ lines.forEach((line) => allYValues.push(...Object.values(line)));
199
+ const filteredYValues = allYValues.filter((val) => val !== null);
200
+ // get max and min yValues in data
201
+ let minYValue = Math.min(...filteredYValues);
202
+ const maxYValue = Math.max(...filteredYValues);
203
+ // calculate neat yInterval
204
+ let interval = getInterval(maxYValue - minYValue, 4);
205
+ // find new min below smallest yValue that divides cleanly by interval
206
+ let counter = interval;
207
+ while (minYValue % interval !== 0 && counter > 0) {
208
+ minYValue--;
209
+ counter--;
210
+ }
211
+ // calculate new interval using new min
212
+ interval = getInterval(maxYValue - minYValue, 4);
213
+ let current = minYValue;
214
+ // determine top interval, no more than one tick above max yValue
215
+ while (current <= maxYValue + interval) {
216
+ yIntervals.push(current);
217
+ current += interval;
218
+ }
219
+ }
220
+ return yIntervals;
221
+ }
222
+ determineDisplayedXIntervals() {
223
+ // if component has display: none, plotAreaEl is truthy, but it's clientWidth is 0. This caused a crash when component was hidden in a tab
224
+ const maxTicks = this.plotAreaEl && this.plotAreaEl.clientWidth > 0
225
+ ? Math.round(this.plotAreaEl.clientWidth / this.minTickWidth)
226
+ : this.xIntervals.length;
227
+ const { skipInterval, skippedList } = getSmallestSkipInterval(this.xIntervals, maxTicks);
228
+ this.intervalSkip = skipInterval;
229
+ return skippedList;
230
+ }
231
+ buildLineDataPointDetails(lineLabel, line) {
232
+ let dataPointDetailsList = [];
233
+ const lineDataPoints = Object.entries(line);
234
+ let isHighlighted;
235
+ lineDataPoints.forEach((entry, pointIdx) => {
236
+ const [xValue, yValue] = entry;
237
+ let xPositionPercent = (100 / (lineDataPoints.length - 1)) * pointIdx;
238
+ const yPositionPercent = yValue === null
239
+ ? null
240
+ : 100 - calcPercentageInRange(yValue, this.yIntervals[this.yIntervals.length - 1], this.yIntervals[0]);
241
+ // add space between first points and y-axis
242
+ if (pointIdx === 0) {
243
+ xPositionPercent +=
244
+ this.plotAreaEl && this.plotAreaEl.clientWidth > 0 ? (8 / this.plotAreaEl.clientWidth) * 100 : 1;
245
+ }
246
+ if (xValue === this.highlightStart && !isHighlighted) {
247
+ isHighlighted = true;
248
+ }
249
+ dataPointDetailsList.push({
250
+ lineLabel: lineLabel,
251
+ xValue: xValue,
252
+ yValue: yValue,
253
+ xPositionPercent: xPositionPercent,
254
+ yPositionPercent: yPositionPercent,
255
+ highlighted: isHighlighted,
256
+ });
257
+ // because highlight range is inclusive, disable after pushing details
258
+ if (xValue === this.highlightEnd && isHighlighted) {
259
+ isHighlighted = false;
260
+ }
261
+ });
262
+ return dataPointDetailsList;
263
+ }
264
+ toggleLineVisibility(lineIdx) {
265
+ if (this.hiddenLines.includes(lineIdx)) {
266
+ this.hiddenLines = this.hiddenLines.filter((num) => num !== lineIdx);
267
+ }
268
+ else {
269
+ this.hiddenLines.push(lineIdx);
270
+ }
271
+ forceUpdate(this.el);
272
+ }
273
+ resetDataPointFocus() {
274
+ this.displayedPopover = -1;
275
+ const allPoints = this.plotAreaEl.querySelectorAll(".point");
276
+ allPoints.forEach((point) => (point.tabIndex = -1));
277
+ if (this.firstVisibleLineIdx !== -1) {
278
+ const lineEl = this.lineEls[this.firstVisibleLineIdx];
279
+ const pointEl = lineEl.querySelectorAll(".point")[0];
280
+ pointEl.tabIndex = 0;
281
+ this.focusedDataPoint = [this.firstVisibleLineIdx, 0];
282
+ }
283
+ }
284
+ calcDelta(dataPoint, prevDataPoint) {
285
+ let delta;
286
+ if (dataPoint.yValue === null || prevDataPoint.yValue === null) {
287
+ // display "No data" when either of the datapoints is missing
288
+ delta = lineChartMessages.noData;
289
+ }
290
+ else if (dataPoint.yValue == prevDataPoint.yValue) {
291
+ // display "0%" if datapoints are equal
292
+ delta = "0%";
293
+ }
294
+ else if (prevDataPoint.yValue == 0) {
295
+ // display "-" for % increase if prev data point is 0, as the technical number would be infinity
296
+ delta = "-";
297
+ }
298
+ else {
299
+ const changePercent = ((dataPoint.yValue - prevDataPoint.yValue) / prevDataPoint.yValue) * 100;
300
+ const roundedPercent = Math.round(changePercent * 100) / 100;
301
+ delta = `${roundedPercent > 0 ? "+" : ""}${roundedPercent}%`;
302
+ }
303
+ return delta;
304
+ }
305
+ renderLegend() {
306
+ const lineLabels = Object.keys(this.parsedLineData);
307
+ return (h("div", { ref: (el) => (this.legendEl = el), class: "legend" }, lineLabels.map((lineLabel, lineIdx) => {
308
+ const isHidden = this.hiddenLines.includes(lineIdx);
309
+ const isFaded = this.focusedLine !== -1 && this.focusedLine !== lineIdx;
310
+ return (h("div", { id: `legend-label-${lineIdx}`, class: `legend-label ${isFaded ? "faded" : ""}`, onMouseEnter: () => (this.focusedLine = isHidden ? -1 : lineIdx), onMouseLeave: () => (this.focusedLine = -1) }, this.renderIcon(lineIdx), lineLabel, this.visibilityToggles && this.renderVisibilityToggle(lineLabel, lineIdx, isHidden)));
311
+ })));
312
+ }
313
+ renderVisibilityToggle(lineLabel, lineIdx, isHidden) {
314
+ return (h("wm-button", { id: `visibility-button-${lineIdx}`, class: "visibility-toggle", "label-for-identical-buttons": `${lineIdx === 0 ? `Toggle line visibility list with ${this.dataPointMatrix.length} items` : ""} ${isHidden ? globalMessages.show : globalMessages.hide} ${lineLabel} toggle ${isHidden ? "pressed" : ""}`, "button-type": "navigational", tooltip: isHidden ? globalMessages.show : globalMessages.hide, tooltipPosition: "bottom", icon: isHidden ? "f209" : "f208", onClick: () => this.toggleLineVisibility(lineIdx), onKeyDown: (ev) => this.handleVisibilityToggleKeydown(ev, lineIdx), onFocus: () => (this.displayedPopover = -1) }));
315
+ }
316
+ renderIcon(lineIdx) {
317
+ const { color, icon } = this.lineStyles[lineIdx];
318
+ const iconStyle = {
319
+ "--iconColor": color,
320
+ "--icon": `"\\${icon}"`,
321
+ "--translation": lineIdx === 5 ? "rotate(180deg)" : "unset",
322
+ };
323
+ return h("span", { class: "icon", style: iconStyle });
324
+ }
325
+ renderXIntervals() {
326
+ const gridStyle = {
327
+ "--columns": `.5fr repeat(${this.xIntervals.length - 2}, 1fr) .5fr`,
328
+ };
329
+ return (h("div", { class: "x-intervals", style: gridStyle }, this.xIntervals.map((interval) => (h("span", { class: `x-interval ${this.displayedXIntervals.includes(interval) ? "" : "hidden"}` }, interval)))));
330
+ }
331
+ renderYIntervals() {
332
+ return (h("div", { ref: (el) => (this.yIntervalsEl = el), class: "y-intervals" }, this.yIntervals.map((yInterval) => (h("span", { class: "y-interval" }, abbrNumber(yInterval))))));
333
+ }
334
+ renderData() {
335
+ return this.dataPointMatrix.map((_, lineIdx) => {
336
+ let focusState = this.focusedLine === lineIdx ? "focused" : "faded";
337
+ const isHidden = this.hiddenLines.includes(lineIdx);
338
+ return (h("div", { class: `line ${this.focusedLine !== -1 ? focusState : ""} ${isHidden ? "hidden" : ""}` }, this.renderLines(lineIdx), this.renderPoints(lineIdx)));
339
+ });
340
+ }
341
+ renderPoints(lineIdx) {
342
+ const lineDataPoints = this.dataPointMatrix[lineIdx];
343
+ return (h("div", { class: "line-icons" }, lineDataPoints.map((dataPoint, pointIdx) => {
344
+ const { lineLabel, xValue, yValue, xPositionPercent, yPositionPercent, highlighted } = dataPoint;
345
+ if (yValue !== null) {
317
346
  const { color, icon } = this.lineStyles[lineIdx];
347
+ const firstPointTabIndex = lineIdx === 0 && pointIdx === 0 ? 0 : undefined;
318
348
  const iconStyle = {
319
- "--iconColor": color,
320
- "--icon": `"\\${icon}"`,
321
- "--translation": lineIdx === 5 ? "rotate(180deg)" : "unset",
322
- };
323
- return h("span", { class: "icon", style: iconStyle });
324
- }
325
- renderXIntervals() {
326
- const gridStyle = {
327
- "--columns": `.5fr repeat(${this.xIntervals.length - 2}, 1fr) .5fr`,
349
+ "--icon": `"\\${icon}"`,
350
+ "--iconColor": color,
351
+ "--xPosition": xPositionPercent + "%",
352
+ "--yPosition": yPositionPercent + "%",
353
+ "--translation": lineIdx === 5 ? "translate(-50%, -50%) rotate(180deg)" : "translate(-50%, -50%)",
328
354
  };
329
- return (h("div", { class: "x-intervals", style: gridStyle }, this.xIntervals.map((interval) => (h("span", { class: `x-interval ${this.displayedXIntervals.includes(interval) ? "" : "hidden"}` }, interval)))));
330
- }
331
- renderYIntervals() {
332
- return (h("div", { ref: (el) => (this.yIntervalsEl = el), class: "y-intervals" }, this.yIntervals.map((yInterval) => (h("span", { class: "y-interval" }, abbrNumber(yInterval))))));
333
- }
334
- renderData() {
335
- return this.dataPointMatrix.map((_, lineIdx) => {
336
- let focusState = this.focusedLine === lineIdx ? "focused" : "faded";
337
- const isHidden = this.hiddenLines.includes(lineIdx);
338
- return (h("div", { class: `line ${this.focusedLine !== -1 ? focusState : ""} ${isHidden ? "hidden" : ""}` }, this.renderLines(lineIdx), this.renderPoints(lineIdx)));
339
- });
340
- }
341
- renderPoints(lineIdx) {
342
- const lineDataPoints = this.dataPointMatrix[lineIdx];
343
- return (h("div", { class: "line-icons" }, lineDataPoints.map((dataPoint, pointIdx) => {
344
- const { lineLabel, xValue, yValue, xPositionPercent, yPositionPercent, highlighted } = dataPoint;
345
- if (yValue !== null) {
346
- const { color, icon } = this.lineStyles[lineIdx];
347
- const firstPointTabIndex = lineIdx === 0 && pointIdx === 0 ? 0 : undefined;
348
- const iconStyle = {
349
- "--icon": `"\\${icon}"`,
350
- "--iconColor": color,
351
- "--xPosition": xPositionPercent + "%",
352
- "--yPosition": yPositionPercent + "%",
353
- "--translation": lineIdx === 5 ? "translate(-50%, -50%) rotate(180deg)" : "translate(-50%, -50%)",
354
- };
355
- let ariaLabel = `${lineLabel} ${highlighted ? this.highlightQualifier : ""} ${this.xAxisLabel} ${xValue + (this.parsedUnits[0] ? this.parsedUnits[0] : "")}, ${this.yAxisLabel}: ${yValue + (this.parsedUnits[1] ? this.parsedUnits[1] : "")}`;
356
- if (this.showDeltas && pointIdx > 0) {
357
- const prevDataPoint = lineDataPoints[pointIdx - 1];
358
- const changeSinceMessage = lineChartMessages.getChangeSince(prevDataPoint.xValue);
359
- ariaLabel += `, ${changeSinceMessage} ${this.calcDelta(dataPoint, prevDataPoint)}`;
360
- }
361
- return (h("span", { id: `${lineLabel}-${pointIdx}`, role: "img", "aria-label": ariaLabel, tabIndex: firstPointTabIndex, class: "point icon", style: iconStyle, "data-lineidx": lineIdx, "data-xvalue": xValue, onKeyDown: (ev) => this.handleDataPointKeydown(ev), onFocus: () => (this.displayedPopover = pointIdx), onClick: (ev) => this.focusDataPointByEl(ev.target), onMouseEnter: () => (this.displayedPopover = pointIdx) }));
362
- }
363
- })));
364
- }
365
- renderLines(lineIdx) {
366
- const lineDataPoints = this.dataPointMatrix[lineIdx];
367
- return (h("svg", { class: "line-svg" }, lineDataPoints.map((dataPoint, pointIdx) => {
368
- const shouldDraw = dataPoint.yValue !== null &&
369
- pointIdx !== lineDataPoints.length - 1 &&
370
- lineDataPoints[pointIdx + 1].yValue !== null;
371
- if (shouldDraw) {
372
- const { color } = this.lineStyles[lineIdx];
373
- const { xPositionPercent: xStart, yPositionPercent: yStart } = dataPoint;
374
- const { xPositionPercent: xEnd, yPositionPercent: yEnd } = lineDataPoints[pointIdx + 1];
375
- return (h("line", { x1: xStart + "%", y1: yStart + "%", x2: xEnd + "%", y2: yEnd + "%", stroke: color, "stroke-width": "2px" }));
376
- }
377
- })));
378
- }
379
- renderHoverAreas() {
380
- const hoverAreaStyle = { "--columns": `.5fr repeat(${this.xIntervals.length - 2}, 1fr) .5fr` };
381
- return (h("div", { class: "hover-area-wrapper", style: hoverAreaStyle, onMouseLeave: () => (this.displayedPopover = -1) }, this.xIntervals.map((_, idx) => (h("div", { onMouseEnter: () => (this.displayedPopover = idx) })))));
382
- }
383
- renderPopover() {
384
- const displayedPopoverData = this.popoverData[this.displayedPopover];
385
- const xPosition = displayedPopoverData[0].xPositionPercent;
386
- const yPositions = displayedPopoverData
387
- .map((point) => point.yPositionPercent)
388
- .filter((yPosition) => yPosition !== null);
389
- const averageYPosition = yPositions.reduce((acc, cur) => acc + cur, 0) / yPositions.length;
390
- const referencePointEl = this.plotAreaEl.querySelector(`.point[data-xvalue="${this.dataPointMatrix[0][this.displayedPopover].xValue}"]`);
391
- const componentBoundingClientRect = this.el.getBoundingClientRect();
392
- const referencePointBoundingClientRect = referencePointEl.getBoundingClientRect();
393
- const rightSpaceAvailable = componentBoundingClientRect.right - referencePointBoundingClientRect.right;
394
- const leftSpaceAvailable = referencePointBoundingClientRect.left - componentBoundingClientRect.left;
395
- const hasRoomRight = rightSpaceAvailable >= (this.popoverEl ? Math.min(this.popoverEl.clientWidth, 400) : 400);
396
- const hasRoomLeft = leftSpaceAvailable >= (this.popoverEl ? Math.min(this.popoverEl.clientWidth, 400) : 400);
397
- const percentMargin = (8 / this.plotAreaEl.clientWidth) * 100;
398
- let popoverStyle = {
399
- "--leftPosition": hasRoomRight ? xPosition + percentMargin + "%" : "unset",
400
- "--rightPosition": hasRoomLeft ? 100 - xPosition + percentMargin + "%" : "unset",
401
- "--topPosition": averageYPosition + "%",
402
- transform: "translateY(-50%)", // vertically center for averageYPosition
403
- };
404
- if (!hasRoomLeft && !hasRoomRight) {
405
- // if there's not enough room to the left and right, position "detached" from the data points towards the top of the chart
406
- const displaceLeft = `0px - ${this.labelWidth} - 20px - ${this.yIntervalsEl.clientWidth + "px"} + ${this.el.scrollLeft + "px"} + 2px`;
407
- popoverStyle = {
408
- "--leftPosition": `0%`,
409
- "--topPosition": "0%",
410
- maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px",
411
- transform: `translateX(calc(${displaceLeft}))`, // align with left edge of component
412
- };
355
+ let ariaLabel = `${lineLabel} ${highlighted ? this.highlightQualifier : ""} ${this.xAxisLabel} ${xValue + (this.parsedUnits[0] ? this.parsedUnits[0] : "")}, ${this.yAxisLabel}: ${yValue + (this.parsedUnits[1] ? this.parsedUnits[1] : "")}`;
356
+ if (this.showDeltas && pointIdx > 0) {
357
+ const prevDataPoint = lineDataPoints[pointIdx - 1];
358
+ const changeSinceMessage = lineChartMessages.getChangeSince(prevDataPoint.xValue);
359
+ ariaLabel += `, ${changeSinceMessage} ${this.calcDelta(dataPoint, prevDataPoint)}`;
413
360
  }
414
- return (h("div", { ref: (el) => (this.popoverEl = el), class: "popover", style: popoverStyle }, h("div", { class: "title" }, displayedPopoverData[0].xValue, this.parsedUnits[0] && h("span", { class: "unit --x" }, "(", this.parsedUnits[0], ")")), this.showDeltas && this.displayedPopover > 0 && (h("div", { class: "comparison-title" }, lineChartMessages.getChangeSince(this.popoverData[this.displayedPopover - 1][0].xValue))), this.renderPopoverTable()));
415
- }
416
- renderPopoverTable() {
417
- const displayedPopoverData = this.popoverData[this.displayedPopover];
418
- return (h("table", { class: "popover-table" }, displayedPopoverData.map((dataPoint, lineIdx) => {
419
- if (!this.hiddenLines.includes(lineIdx)) {
420
- const { lineLabel, yValue } = dataPoint;
421
- const prevDataPoint = this.displayedPopover > 0 ? this.popoverData[this.displayedPopover - 1][lineIdx] : null;
422
- const localizedYValue = yValue !== null ? new Intl.NumberFormat().format(yValue) : null;
423
- return (h("tr", { class: "popover-row" }, h("td", null, this.renderIcon(lineIdx)), h("td", { class: "row-label" }, lineLabel), h("td", { class: "row-value" }, yValue === null ? lineChartMessages.noData : localizedYValue, yValue !== null && this.parsedUnits[1] && h("span", { class: "unit --y" }, this.parsedUnits[1])), this.showDeltas && prevDataPoint && this.renderDeltas(dataPoint, prevDataPoint)));
424
- }
425
- })));
426
- }
427
- renderDeltas(dataPoint, prevDataPoint) {
428
- const delta = this.calcDelta(dataPoint, prevDataPoint);
429
- const deltaColor = delta.toString()[0] == "+" || delta == "-" ? "positive" : delta.toString()[0] == "-" ? "negative" : "";
430
- return prevDataPoint && h("td", { class: `delta --${deltaColor}` }, delta);
431
- }
432
- renderHoverIndicator() {
433
- const xPosition = this.dataPointMatrix[0][this.displayedPopover].xPositionPercent;
434
- const indicatorStyle = { "--xPosition": xPosition + "%" };
435
- return h("div", { class: "hover-indicator", style: indicatorStyle });
436
- }
437
- renderHighlight() {
438
- const startPercentage = this.dataPointMatrix[0][this.xIntervals.indexOf(this.highlightStart)].xPositionPercent;
439
- const endPercentage = this.highlightEnd
440
- ? 100 - this.dataPointMatrix[0][this.xIntervals.indexOf(this.highlightEnd)].xPositionPercent
441
- : 0;
442
- const highlightStyle = { "--startPercentage": startPercentage + "%", "--endPercentage": endPercentage + "%" };
443
- return h("div", { class: "highlight", style: highlightStyle });
444
- }
445
- render() {
446
- return (h(Host, { onBlur: () => this.resetDataPointFocus(), onMouseLeave: () => (this.displayedPopover = -1) }, h("div", { class: "component-wrapper", role: "application", "aria-roledescription": chartMessages.interactiveChart, "aria-label": this.label, "aria-describedby": "chart-description" }, this.renderLegend(), h("div", { class: "chart-wrapper" }, h("div", { class: "chart-label --y-axis", style: { "--labelWidth": this.labelWidth } }, this.yAxisLabel, this.parsedUnits[1] && ` (${this.parsedUnits[1]})`), this.renderYIntervals(), h("div", { ref: (el) => (this.plotAreaEl = el), class: `plot-area ${this.hasPartialInterval ? "" : "right-border"}`, style: {
447
- "--backgroundSize": `${this.dataPointMatrix[0][this.xIntervals.indexOf(this.displayedXIntervals[1])].xPositionPercent}%`,
448
- } }, this.highlightStart && this.renderHighlight(), this.renderData(), this.renderHoverAreas()), this.displayedPopover !== -1 && this.renderHoverIndicator(), this.displayedPopover !== -1 && this.renderPopover(), this.renderXIntervals(), h("div", { class: "chart-label --x-axis" }, this.xAxisLabel, this.parsedUnits[0] && ` (${this.parsedUnits[0]})`)), h("div", { id: "chart-description", class: "sr-only" }, `${lineChartMessages.instructions} ${this.description}`), h("div", { ref: (el) => (this.liveRegionEl = el), "aria-live": "polite", class: "sr-only" }, this.announcement))));
449
- }
450
- static get is() { return "wm-line-chart"; }
451
- static get encapsulation() { return "shadow"; }
452
- static get originalStyleUrls() {
453
- return {
454
- "$": ["wm-line-chart.scss"]
455
- };
456
- }
457
- static get styleUrls() {
458
- return {
459
- "$": ["wm-line-chart.css"]
460
- };
461
- }
462
- static get properties() {
463
- return {
464
- "label": {
465
- "type": "string",
466
- "mutable": false,
467
- "complexType": {
468
- "original": "string",
469
- "resolved": "string",
470
- "references": {}
471
- },
472
- "required": true,
473
- "optional": false,
474
- "docs": {
475
- "tags": [],
476
- "text": ""
477
- },
478
- "attribute": "label",
479
- "reflect": false
480
- },
481
- "description": {
482
- "type": "string",
483
- "mutable": false,
484
- "complexType": {
485
- "original": "string",
486
- "resolved": "string",
487
- "references": {}
488
- },
489
- "required": false,
490
- "optional": false,
491
- "docs": {
492
- "tags": [],
493
- "text": ""
494
- },
495
- "attribute": "description",
496
- "reflect": false,
497
- "defaultValue": "\"\""
498
- },
499
- "xAxisLabel": {
500
- "type": "string",
501
- "mutable": false,
502
- "complexType": {
503
- "original": "string",
504
- "resolved": "string",
505
- "references": {}
506
- },
507
- "required": true,
508
- "optional": false,
509
- "docs": {
510
- "tags": [],
511
- "text": ""
512
- },
513
- "attribute": "x-axis-label",
514
- "reflect": false
515
- },
516
- "yAxisLabel": {
517
- "type": "string",
518
- "mutable": false,
519
- "complexType": {
520
- "original": "string",
521
- "resolved": "string",
522
- "references": {}
523
- },
524
- "required": true,
525
- "optional": false,
526
- "docs": {
527
- "tags": [],
528
- "text": ""
529
- },
530
- "attribute": "y-axis-label",
531
- "reflect": false
532
- },
533
- "lineData": {
534
- "type": "string",
535
- "mutable": false,
536
- "complexType": {
537
- "original": "string",
538
- "resolved": "string",
539
- "references": {}
540
- },
541
- "required": true,
542
- "optional": false,
543
- "docs": {
544
- "tags": [],
545
- "text": ""
546
- },
547
- "attribute": "line-data",
548
- "reflect": true
549
- },
550
- "units": {
551
- "type": "string",
552
- "mutable": false,
553
- "complexType": {
554
- "original": "string",
555
- "resolved": "string",
556
- "references": {}
557
- },
558
- "required": false,
559
- "optional": false,
560
- "docs": {
561
- "tags": [],
562
- "text": ""
563
- },
564
- "attribute": "units",
565
- "reflect": false,
566
- "defaultValue": "\"null,null\""
567
- },
568
- "labelWidth": {
569
- "type": "string",
570
- "mutable": false,
571
- "complexType": {
572
- "original": "string",
573
- "resolved": "string",
574
- "references": {}
575
- },
576
- "required": false,
577
- "optional": false,
578
- "docs": {
579
- "tags": [],
580
- "text": ""
581
- },
582
- "attribute": "label-width",
583
- "reflect": false,
584
- "defaultValue": "\"120px\""
585
- },
586
- "highlightQualifier": {
587
- "type": "string",
588
- "mutable": false,
589
- "complexType": {
590
- "original": "string",
591
- "resolved": "string",
592
- "references": {}
593
- },
594
- "required": false,
595
- "optional": false,
596
- "docs": {
597
- "tags": [],
598
- "text": ""
599
- },
600
- "attribute": "highlight-qualifier",
601
- "reflect": false,
602
- "defaultValue": "\"highlighted\""
603
- },
604
- "highlightStart": {
605
- "type": "string",
606
- "mutable": false,
607
- "complexType": {
608
- "original": "string",
609
- "resolved": "string | undefined",
610
- "references": {}
611
- },
612
- "required": false,
613
- "optional": true,
614
- "docs": {
615
- "tags": [],
616
- "text": ""
617
- },
618
- "attribute": "highlight-start",
619
- "reflect": false
620
- },
621
- "highlightEnd": {
622
- "type": "string",
623
- "mutable": false,
624
- "complexType": {
625
- "original": "string",
626
- "resolved": "string | undefined",
627
- "references": {}
628
- },
629
- "required": false,
630
- "optional": true,
631
- "docs": {
632
- "tags": [],
633
- "text": ""
634
- },
635
- "attribute": "highlight-end",
636
- "reflect": false
637
- },
638
- "visibilityToggles": {
639
- "type": "boolean",
640
- "mutable": false,
641
- "complexType": {
642
- "original": "boolean",
643
- "resolved": "boolean",
644
- "references": {}
645
- },
646
- "required": false,
647
- "optional": false,
648
- "docs": {
649
- "tags": [],
650
- "text": ""
651
- },
652
- "attribute": "visibility-toggles",
653
- "reflect": false,
654
- "defaultValue": "false"
655
- },
656
- "showDeltas": {
657
- "type": "boolean",
658
- "mutable": false,
659
- "complexType": {
660
- "original": "boolean",
661
- "resolved": "boolean",
662
- "references": {}
663
- },
664
- "required": false,
665
- "optional": false,
666
- "docs": {
667
- "tags": [],
668
- "text": ""
669
- },
670
- "attribute": "show-deltas",
671
- "reflect": false,
672
- "defaultValue": "false"
673
- },
674
- "yRange": {
675
- "type": "string",
676
- "mutable": false,
677
- "complexType": {
678
- "original": "string",
679
- "resolved": "string | undefined",
680
- "references": {}
681
- },
682
- "required": false,
683
- "optional": true,
684
- "docs": {
685
- "tags": [],
686
- "text": ""
687
- },
688
- "attribute": "y-range",
689
- "reflect": false
690
- }
691
- };
692
- }
693
- static get states() {
694
- return {
695
- "parsedLineData": {},
696
- "displayedPopover": {},
697
- "focusedLine": {},
698
- "hiddenLines": {},
699
- "isTabbing": {},
700
- "intervalSkip": {},
701
- "announcement": {}
702
- };
703
- }
704
- static get elementRef() { return "el"; }
705
- static get watchers() {
706
- return [{
707
- "propName": "lineData",
708
- "methodName": "parseData"
709
- }, {
710
- "propName": "intervalSkip",
711
- "methodName": "handleIntervalSkip"
712
- }];
713
- }
714
- static get listeners() {
715
- return [{
716
- "name": "wmUserIsTabbing",
717
- "method": "toggleTabbingOn",
718
- "target": "window",
719
- "capture": false,
720
- "passive": false
721
- }, {
722
- "name": "wmUserIsNotTabbing",
723
- "method": "toggleTabbingOff",
724
- "target": "window",
725
- "capture": false,
726
- "passive": false
727
- }];
728
- }
361
+ return (h("span", { id: `${lineLabel}-${pointIdx}`, role: "img", "aria-label": ariaLabel, tabIndex: firstPointTabIndex, class: "point icon", style: iconStyle, "data-lineidx": lineIdx, "data-xvalue": xValue, onKeyDown: (ev) => this.handleDataPointKeydown(ev), onFocus: () => (this.displayedPopover = pointIdx), onClick: (ev) => this.focusDataPointByEl(ev.target), onMouseEnter: () => (this.displayedPopover = pointIdx) }));
362
+ }
363
+ })));
364
+ }
365
+ renderLines(lineIdx) {
366
+ const lineDataPoints = this.dataPointMatrix[lineIdx];
367
+ return (h("svg", { class: "line-svg" }, lineDataPoints.map((dataPoint, pointIdx) => {
368
+ const shouldDraw = dataPoint.yValue !== null &&
369
+ pointIdx !== lineDataPoints.length - 1 &&
370
+ lineDataPoints[pointIdx + 1].yValue !== null;
371
+ if (shouldDraw) {
372
+ const { color } = this.lineStyles[lineIdx];
373
+ const { xPositionPercent: xStart, yPositionPercent: yStart } = dataPoint;
374
+ const { xPositionPercent: xEnd, yPositionPercent: yEnd } = lineDataPoints[pointIdx + 1];
375
+ return (h("line", { x1: xStart + "%", y1: yStart + "%", x2: xEnd + "%", y2: yEnd + "%", stroke: color, "stroke-width": "2px" }));
376
+ }
377
+ })));
378
+ }
379
+ renderHoverAreas() {
380
+ const hoverAreaStyle = { "--columns": `.5fr repeat(${this.xIntervals.length - 2}, 1fr) .5fr` };
381
+ return (h("div", { class: "hover-area-wrapper", style: hoverAreaStyle, onMouseLeave: () => (this.displayedPopover = -1) }, this.xIntervals.map((_, idx) => (h("div", { onMouseEnter: () => (this.displayedPopover = idx) })))));
382
+ }
383
+ renderPopover() {
384
+ const displayedPopoverData = this.popoverData[this.displayedPopover];
385
+ const xPosition = displayedPopoverData[0].xPositionPercent;
386
+ const yPositions = displayedPopoverData
387
+ .map((point) => point.yPositionPercent)
388
+ .filter((yPosition) => yPosition !== null);
389
+ const averageYPosition = yPositions.reduce((acc, cur) => acc + cur, 0) / yPositions.length;
390
+ const referencePointEl = this.plotAreaEl.querySelector(`.point[data-xvalue="${this.dataPointMatrix[0][this.displayedPopover].xValue}"]`);
391
+ const componentBoundingClientRect = this.el.getBoundingClientRect();
392
+ const referencePointBoundingClientRect = referencePointEl.getBoundingClientRect();
393
+ const rightSpaceAvailable = componentBoundingClientRect.right - referencePointBoundingClientRect.right;
394
+ const leftSpaceAvailable = referencePointBoundingClientRect.left - componentBoundingClientRect.left;
395
+ const hasRoomRight = rightSpaceAvailable >= (this.popoverEl ? Math.min(this.popoverEl.clientWidth, 400) : 400);
396
+ const hasRoomLeft = leftSpaceAvailable >= (this.popoverEl ? Math.min(this.popoverEl.clientWidth, 400) : 400);
397
+ const percentMargin = (8 / this.plotAreaEl.clientWidth) * 100;
398
+ let popoverStyle = {
399
+ "--leftPosition": hasRoomRight ? xPosition + percentMargin + "%" : "unset",
400
+ "--rightPosition": hasRoomLeft ? 100 - xPosition + percentMargin + "%" : "unset",
401
+ "--topPosition": averageYPosition + "%",
402
+ transform: "translateY(-50%)", // vertically center for averageYPosition
403
+ };
404
+ if (!hasRoomLeft && !hasRoomRight) {
405
+ // if there's not enough room to the left and right, position "detached" from the data points towards the top of the chart
406
+ const displaceLeft = `0px - ${this.labelWidth} - 20px - ${this.yIntervalsEl.clientWidth + "px"} + ${this.el.scrollLeft + "px"} + 2px`;
407
+ popoverStyle = {
408
+ "--leftPosition": `0%`,
409
+ "--topPosition": "0%",
410
+ maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px",
411
+ transform: `translateX(calc(${displaceLeft}))`, // align with left edge of component
412
+ };
413
+ }
414
+ return (h("div", { ref: (el) => (this.popoverEl = el), class: "popover", style: popoverStyle }, h("div", { class: "title" }, displayedPopoverData[0].xValue, this.parsedUnits[0] && h("span", { class: "unit --x" }, "(", this.parsedUnits[0], ")")), this.showDeltas && this.displayedPopover > 0 && (h("div", { class: "comparison-title" }, lineChartMessages.getChangeSince(this.popoverData[this.displayedPopover - 1][0].xValue))), this.renderPopoverTable()));
415
+ }
416
+ renderPopoverTable() {
417
+ const displayedPopoverData = this.popoverData[this.displayedPopover];
418
+ return (h("table", { class: "popover-table" }, displayedPopoverData.map((dataPoint, lineIdx) => {
419
+ if (!this.hiddenLines.includes(lineIdx)) {
420
+ const { lineLabel, yValue } = dataPoint;
421
+ const prevDataPoint = this.displayedPopover > 0 ? this.popoverData[this.displayedPopover - 1][lineIdx] : null;
422
+ const localizedYValue = yValue !== null ? new Intl.NumberFormat().format(yValue) : null;
423
+ return (h("tr", { class: "popover-row" }, h("td", null, this.renderIcon(lineIdx)), h("td", { class: "row-label" }, lineLabel), h("td", { class: "row-value" }, yValue === null ? lineChartMessages.noData : localizedYValue, yValue !== null && this.parsedUnits[1] && h("span", { class: "unit --y" }, this.parsedUnits[1])), this.showDeltas && prevDataPoint && this.renderDeltas(dataPoint, prevDataPoint)));
424
+ }
425
+ })));
426
+ }
427
+ renderDeltas(dataPoint, prevDataPoint) {
428
+ const delta = this.calcDelta(dataPoint, prevDataPoint);
429
+ const deltaColor = delta.toString()[0] == "+" || delta == "-" ? "positive" : delta.toString()[0] == "-" ? "negative" : "";
430
+ return prevDataPoint && h("td", { class: `delta --${deltaColor}` }, delta);
431
+ }
432
+ renderHoverIndicator() {
433
+ const xPosition = this.dataPointMatrix[0][this.displayedPopover].xPositionPercent;
434
+ const indicatorStyle = { "--xPosition": xPosition + "%" };
435
+ return h("div", { class: "hover-indicator", style: indicatorStyle });
436
+ }
437
+ renderHighlight() {
438
+ const startPercentage = this.dataPointMatrix[0][this.xIntervals.indexOf(this.highlightStart)].xPositionPercent;
439
+ const endPercentage = this.highlightEnd
440
+ ? 100 - this.dataPointMatrix[0][this.xIntervals.indexOf(this.highlightEnd)].xPositionPercent
441
+ : 0;
442
+ const highlightStyle = { "--startPercentage": startPercentage + "%", "--endPercentage": endPercentage + "%" };
443
+ return h("div", { class: "highlight", style: highlightStyle });
444
+ }
445
+ render() {
446
+ return (h(Host, { onBlur: () => this.resetDataPointFocus(), onMouseLeave: () => (this.displayedPopover = -1) }, h("div", { class: "component-wrapper", role: "application", "aria-roledescription": chartMessages.interactiveChart, "aria-label": this.label, "aria-describedby": "chart-description" }, this.renderLegend(), h("div", { class: "chart-wrapper" }, h("div", { class: "chart-label --y-axis", style: { "--labelWidth": this.labelWidth } }, this.yAxisLabel, this.parsedUnits[1] && ` (${this.parsedUnits[1]})`), this.renderYIntervals(), h("div", { ref: (el) => (this.plotAreaEl = el), class: `plot-area ${this.hasPartialInterval ? "" : "right-border"}`, style: {
447
+ "--backgroundSize": `${this.dataPointMatrix[0][this.xIntervals.indexOf(this.displayedXIntervals[1])].xPositionPercent}%`,
448
+ } }, this.highlightStart && this.renderHighlight(), this.renderData(), this.renderHoverAreas()), this.displayedPopover !== -1 && this.renderHoverIndicator(), this.displayedPopover !== -1 && this.renderPopover(), this.renderXIntervals(), h("div", { class: "chart-label --x-axis" }, this.xAxisLabel, this.parsedUnits[0] && ` (${this.parsedUnits[0]})`)), h("div", { id: "chart-description", class: "sr-only" }, `${lineChartMessages.instructions} ${this.description}`), h("div", { ref: (el) => (this.liveRegionEl = el), "aria-live": "polite", class: "sr-only" }, this.announcement))));
449
+ }
450
+ static get is() { return "wm-line-chart"; }
451
+ static get encapsulation() { return "shadow"; }
452
+ static get originalStyleUrls() {
453
+ return {
454
+ "$": ["wm-line-chart.scss"]
455
+ };
456
+ }
457
+ static get styleUrls() {
458
+ return {
459
+ "$": ["wm-line-chart.css"]
460
+ };
461
+ }
462
+ static get properties() {
463
+ return {
464
+ "label": {
465
+ "type": "string",
466
+ "mutable": false,
467
+ "complexType": {
468
+ "original": "string",
469
+ "resolved": "string",
470
+ "references": {}
471
+ },
472
+ "required": true,
473
+ "optional": false,
474
+ "docs": {
475
+ "tags": [],
476
+ "text": ""
477
+ },
478
+ "attribute": "label",
479
+ "reflect": false
480
+ },
481
+ "description": {
482
+ "type": "string",
483
+ "mutable": false,
484
+ "complexType": {
485
+ "original": "string",
486
+ "resolved": "string",
487
+ "references": {}
488
+ },
489
+ "required": false,
490
+ "optional": false,
491
+ "docs": {
492
+ "tags": [],
493
+ "text": ""
494
+ },
495
+ "attribute": "description",
496
+ "reflect": false,
497
+ "defaultValue": "\"\""
498
+ },
499
+ "xAxisLabel": {
500
+ "type": "string",
501
+ "mutable": false,
502
+ "complexType": {
503
+ "original": "string",
504
+ "resolved": "string",
505
+ "references": {}
506
+ },
507
+ "required": true,
508
+ "optional": false,
509
+ "docs": {
510
+ "tags": [],
511
+ "text": ""
512
+ },
513
+ "attribute": "x-axis-label",
514
+ "reflect": false
515
+ },
516
+ "yAxisLabel": {
517
+ "type": "string",
518
+ "mutable": false,
519
+ "complexType": {
520
+ "original": "string",
521
+ "resolved": "string",
522
+ "references": {}
523
+ },
524
+ "required": true,
525
+ "optional": false,
526
+ "docs": {
527
+ "tags": [],
528
+ "text": ""
529
+ },
530
+ "attribute": "y-axis-label",
531
+ "reflect": false
532
+ },
533
+ "lineData": {
534
+ "type": "string",
535
+ "mutable": false,
536
+ "complexType": {
537
+ "original": "string",
538
+ "resolved": "string",
539
+ "references": {}
540
+ },
541
+ "required": true,
542
+ "optional": false,
543
+ "docs": {
544
+ "tags": [],
545
+ "text": ""
546
+ },
547
+ "attribute": "line-data",
548
+ "reflect": true
549
+ },
550
+ "units": {
551
+ "type": "string",
552
+ "mutable": false,
553
+ "complexType": {
554
+ "original": "string",
555
+ "resolved": "string",
556
+ "references": {}
557
+ },
558
+ "required": false,
559
+ "optional": false,
560
+ "docs": {
561
+ "tags": [],
562
+ "text": ""
563
+ },
564
+ "attribute": "units",
565
+ "reflect": false,
566
+ "defaultValue": "\"null,null\""
567
+ },
568
+ "labelWidth": {
569
+ "type": "string",
570
+ "mutable": false,
571
+ "complexType": {
572
+ "original": "string",
573
+ "resolved": "string",
574
+ "references": {}
575
+ },
576
+ "required": false,
577
+ "optional": false,
578
+ "docs": {
579
+ "tags": [],
580
+ "text": ""
581
+ },
582
+ "attribute": "label-width",
583
+ "reflect": false,
584
+ "defaultValue": "\"120px\""
585
+ },
586
+ "highlightQualifier": {
587
+ "type": "string",
588
+ "mutable": false,
589
+ "complexType": {
590
+ "original": "string",
591
+ "resolved": "string",
592
+ "references": {}
593
+ },
594
+ "required": false,
595
+ "optional": false,
596
+ "docs": {
597
+ "tags": [],
598
+ "text": ""
599
+ },
600
+ "attribute": "highlight-qualifier",
601
+ "reflect": false,
602
+ "defaultValue": "\"highlighted\""
603
+ },
604
+ "highlightStart": {
605
+ "type": "string",
606
+ "mutable": false,
607
+ "complexType": {
608
+ "original": "string",
609
+ "resolved": "string | undefined",
610
+ "references": {}
611
+ },
612
+ "required": false,
613
+ "optional": true,
614
+ "docs": {
615
+ "tags": [],
616
+ "text": ""
617
+ },
618
+ "attribute": "highlight-start",
619
+ "reflect": false
620
+ },
621
+ "highlightEnd": {
622
+ "type": "string",
623
+ "mutable": false,
624
+ "complexType": {
625
+ "original": "string",
626
+ "resolved": "string | undefined",
627
+ "references": {}
628
+ },
629
+ "required": false,
630
+ "optional": true,
631
+ "docs": {
632
+ "tags": [],
633
+ "text": ""
634
+ },
635
+ "attribute": "highlight-end",
636
+ "reflect": false
637
+ },
638
+ "visibilityToggles": {
639
+ "type": "boolean",
640
+ "mutable": false,
641
+ "complexType": {
642
+ "original": "boolean",
643
+ "resolved": "boolean",
644
+ "references": {}
645
+ },
646
+ "required": false,
647
+ "optional": false,
648
+ "docs": {
649
+ "tags": [],
650
+ "text": ""
651
+ },
652
+ "attribute": "visibility-toggles",
653
+ "reflect": false,
654
+ "defaultValue": "false"
655
+ },
656
+ "showDeltas": {
657
+ "type": "boolean",
658
+ "mutable": false,
659
+ "complexType": {
660
+ "original": "boolean",
661
+ "resolved": "boolean",
662
+ "references": {}
663
+ },
664
+ "required": false,
665
+ "optional": false,
666
+ "docs": {
667
+ "tags": [],
668
+ "text": ""
669
+ },
670
+ "attribute": "show-deltas",
671
+ "reflect": false,
672
+ "defaultValue": "false"
673
+ },
674
+ "yRange": {
675
+ "type": "string",
676
+ "mutable": false,
677
+ "complexType": {
678
+ "original": "string",
679
+ "resolved": "string | undefined",
680
+ "references": {}
681
+ },
682
+ "required": false,
683
+ "optional": true,
684
+ "docs": {
685
+ "tags": [],
686
+ "text": ""
687
+ },
688
+ "attribute": "y-range",
689
+ "reflect": false
690
+ }
691
+ };
692
+ }
693
+ static get states() {
694
+ return {
695
+ "parsedLineData": {},
696
+ "displayedPopover": {},
697
+ "focusedLine": {},
698
+ "hiddenLines": {},
699
+ "isTabbing": {},
700
+ "intervalSkip": {},
701
+ "announcement": {}
702
+ };
703
+ }
704
+ static get elementRef() { return "el"; }
705
+ static get watchers() {
706
+ return [{
707
+ "propName": "lineData",
708
+ "methodName": "parseData"
709
+ }, {
710
+ "propName": "intervalSkip",
711
+ "methodName": "handleIntervalSkip"
712
+ }];
713
+ }
714
+ static get listeners() {
715
+ return [{
716
+ "name": "wmUserIsTabbing",
717
+ "method": "toggleTabbingOn",
718
+ "target": "window",
719
+ "capture": false,
720
+ "passive": false
721
+ }, {
722
+ "name": "wmUserIsNotTabbing",
723
+ "method": "toggleTabbingOff",
724
+ "target": "window",
725
+ "capture": false,
726
+ "passive": false
727
+ }];
728
+ }
729
729
  }