@watermarkinsights/ripple 0.0.1 → 0.1.0-alpha.1

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 (460) hide show
  1. package/dist/cjs/app-globals-3db2fdd3.js +103 -0
  2. package/dist/cjs/chartFunctions-0d47b1f4.js +906 -0
  3. package/dist/cjs/functions-761cb9f2.js +10694 -0
  4. package/dist/cjs/index-bb947bd5.js +1843 -0
  5. package/dist/cjs/index.cjs.js +2 -0
  6. package/dist/cjs/interfaces-33cd6161.js +82 -0
  7. package/dist/cjs/intl-9e9388a7.js +291 -0
  8. package/dist/cjs/loader.cjs.js +15 -0
  9. package/dist/cjs/priv-calendar.cjs.entry.js +580 -0
  10. package/dist/cjs/priv-chart-popover-old.cjs.entry.js +146 -0
  11. package/dist/cjs/priv-chart-popover_2.cjs.entry.js +204 -0
  12. package/dist/cjs/priv-navigator-button.cjs.entry.js +29 -0
  13. package/dist/cjs/priv-navigator-item.cjs.entry.js +35 -0
  14. package/dist/cjs/priv-option-list.cjs.entry.js +391 -0
  15. package/dist/cjs/ripple.cjs.js +25 -0
  16. package/dist/cjs/wm-action-menu_2.cjs.entry.js +525 -0
  17. package/dist/cjs/wm-button.cjs.entry.js +280 -0
  18. package/dist/cjs/wm-chart-bar.cjs.entry.js +444 -0
  19. package/dist/cjs/wm-chart-column.cjs.entry.js +629 -0
  20. package/dist/cjs/wm-chart-slice.cjs.entry.js +27 -0
  21. package/dist/cjs/wm-chart-stack.cjs.entry.js +447 -0
  22. package/dist/cjs/wm-chart.cjs.entry.js +163 -0
  23. package/dist/cjs/wm-date-range.cjs.entry.js +591 -0
  24. package/dist/cjs/wm-datepicker.cjs.entry.js +399 -0
  25. package/dist/{ripple/wm-tab-panel.entry.js → cjs/wm-file-list.cjs.entry.js} +15 -24
  26. package/dist/cjs/wm-file.cjs.entry.js +210 -0
  27. package/dist/cjs/wm-flyout.cjs.entry.js +178 -0
  28. package/dist/{ripple/wm-modal.entry.js → cjs/wm-input.cjs.entry.js} +108 -110
  29. package/dist/cjs/wm-line-chart.cjs.entry.js +541 -0
  30. package/dist/cjs/wm-modal-pss_3.cjs.entry.js +220 -0
  31. package/dist/cjs/wm-modal_3.cjs.entry.js +238 -0
  32. package/dist/cjs/wm-navigation_3.cjs.entry.js +188 -0
  33. package/dist/cjs/wm-navigator.cjs.entry.js +334 -0
  34. package/dist/cjs/wm-nested-select.cjs.entry.js +322 -0
  35. package/dist/{ripple/wm-textarea.entry.js → cjs/wm-optgroup.cjs.entry.js} +62 -57
  36. package/dist/cjs/wm-option_2.cjs.entry.js +536 -0
  37. package/dist/{ripple/wm-navigation.entry.js → cjs/wm-pagination.cjs.entry.js} +204 -91
  38. package/dist/cjs/wm-progress-indicator_3.cjs.entry.js +204 -0
  39. package/dist/{ripple/wm-flyout.entry.js → cjs/wm-search.cjs.entry.js} +168 -139
  40. package/dist/{ripple/wm-datepicker.entry.js → cjs/wm-snackbar.cjs.entry.js} +152 -223
  41. package/dist/cjs/wm-tab-item_3.cjs.entry.js +357 -0
  42. package/dist/cjs/wm-tag-input.cjs.entry.js +985 -0
  43. package/dist/cjs/wm-tag-option.cjs.entry.js +51 -0
  44. package/dist/{ripple/wm-modal-pss.entry.js → cjs/wm-textarea.cjs.entry.js} +70 -111
  45. package/dist/{ripple/wm-progress-indicator.entry.js → cjs/wm-timepicker.cjs.entry.js} +296 -78
  46. package/dist/cjs/wm-toggletip.cjs.entry.js +252 -0
  47. package/dist/cjs/wm-uploader.cjs.entry.js +341 -0
  48. package/dist/cjs/wm-wrapper.cjs.entry.js +21 -0
  49. package/dist/collection/collection-manifest.json +207 -0
  50. package/dist/collection/components/charts/chartFunctions.js +831 -0
  51. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.css +995 -0
  52. package/dist/collection/components/charts/priv-chart-popover/priv-chart-popover.js +345 -0
  53. package/dist/collection/components/charts/priv-chart-popover-old/priv-chart-popover-old.css +990 -0
  54. package/dist/collection/components/charts/priv-chart-popover-old/priv-chart-popover-old.js +268 -0
  55. package/dist/collection/components/charts/wm-chart/wm-chart-slice.js +177 -0
  56. package/dist/collection/components/charts/wm-chart/wm-chart.css +1326 -0
  57. package/dist/collection/components/charts/wm-chart/wm-chart.js +549 -0
  58. package/dist/collection/components/charts/wm-chart-bar/wm-chart-bar.css +1236 -0
  59. package/dist/collection/components/charts/wm-chart-bar/wm-chart-bar.js +725 -0
  60. package/dist/collection/components/charts/wm-chart-column/wm-chart-column.css +1335 -0
  61. package/dist/collection/components/charts/wm-chart-column/wm-chart-column.js +914 -0
  62. package/dist/collection/components/charts/wm-chart-legend/wm-chart-legend.css +1006 -0
  63. package/dist/collection/components/charts/wm-chart-legend/wm-chart-legend.js +310 -0
  64. package/dist/collection/components/charts/wm-chart-stack/wm-chart-stack.css +1466 -0
  65. package/dist/collection/components/charts/wm-chart-stack/wm-chart-stack.js +709 -0
  66. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.css +1208 -0
  67. package/dist/collection/components/charts/wm-line-chart/wm-line-chart.js +999 -0
  68. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.css +1326 -0
  69. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-indicator.js +320 -0
  70. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.css +967 -0
  71. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-monitor.js +232 -0
  72. package/dist/collection/components/charts/wm-progress-monitor/wm-progress-slice.js +167 -0
  73. package/dist/collection/components/datepickers/datepicker.css +1147 -0
  74. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.css +1415 -0
  75. package/dist/collection/components/datepickers/priv-calendar/priv-calendar.js +857 -0
  76. package/dist/collection/components/datepickers/wm-date-range.js +1158 -0
  77. package/dist/collection/components/datepickers/wm-datepicker.js +875 -0
  78. package/dist/collection/components/selects/priv-option-list/priv-option-list.css +999 -0
  79. package/dist/collection/components/selects/priv-option-list/priv-option-list.js +784 -0
  80. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.css +1259 -0
  81. package/dist/collection/components/selects/wm-nested-select/wm-nested-select.js +805 -0
  82. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.css +909 -0
  83. package/dist/collection/components/selects/wm-optgroup/wm-optgroup.js +363 -0
  84. package/dist/collection/components/selects/wm-option/wm-option.css +1033 -0
  85. package/dist/collection/components/selects/wm-option/wm-option.js +665 -0
  86. package/dist/collection/components/selects/wm-select/wm-select.css +1174 -0
  87. package/dist/collection/components/selects/wm-select/wm-select.js +878 -0
  88. package/dist/collection/components/wm-action-menu/wm-action-menu.css +1690 -0
  89. package/dist/collection/components/wm-action-menu/wm-action-menu.js +932 -0
  90. package/dist/collection/components/wm-button/wm-button.css +1630 -0
  91. package/dist/collection/components/wm-button/wm-button.js +794 -0
  92. package/dist/collection/components/wm-file/wm-file.css +1086 -0
  93. package/dist/collection/components/wm-file/wm-file.js +536 -0
  94. package/dist/collection/components/wm-file-list/wm-file-list.css +899 -0
  95. package/dist/collection/components/wm-file-list/wm-file-list.js +118 -0
  96. package/dist/collection/components/wm-flyout/wm-flyout.css +1091 -0
  97. package/dist/collection/components/wm-flyout/wm-flyout.js +651 -0
  98. package/dist/collection/components/wm-input/wm-input.css +1095 -0
  99. package/dist/collection/components/wm-input/wm-input.js +653 -0
  100. package/dist/collection/components/wm-menuitem/wm-menuitem.css +982 -0
  101. package/dist/collection/components/wm-menuitem/wm-menuitem.js +515 -0
  102. package/dist/collection/components/wm-modal/wm-modal-footer.css +927 -0
  103. package/dist/collection/components/wm-modal/wm-modal-footer.js +199 -0
  104. package/dist/collection/components/wm-modal/wm-modal-header.css +926 -0
  105. package/dist/collection/components/wm-modal/wm-modal-header.js +110 -0
  106. package/dist/collection/components/wm-modal/wm-modal.css +983 -0
  107. package/dist/collection/components/wm-modal/wm-modal.js +534 -0
  108. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.css +931 -0
  109. package/dist/collection/components/wm-modal-pss/wm-modal-pss-footer.js +142 -0
  110. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.css +925 -0
  111. package/dist/collection/components/wm-modal-pss/wm-modal-pss-header.js +86 -0
  112. package/dist/collection/components/wm-modal-pss/wm-modal-pss.css +1007 -0
  113. package/dist/collection/components/wm-modal-pss/wm-modal-pss.js +369 -0
  114. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +926 -0
  115. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.js +153 -0
  116. package/dist/collection/components/wm-navigation/wm-navigation-item.css +935 -0
  117. package/dist/collection/components/wm-navigation/wm-navigation-item.js +140 -0
  118. package/dist/collection/components/wm-navigation/wm-navigation.css +977 -0
  119. package/dist/collection/components/wm-navigation/wm-navigation.js +246 -0
  120. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.css +929 -0
  121. package/dist/collection/components/wm-navigator/priv-navigator-button/priv-navigator-button.js +90 -0
  122. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.css +918 -0
  123. package/dist/collection/components/wm-navigator/priv-navigator-item/priv-navigator-item.js +128 -0
  124. package/dist/collection/components/wm-navigator/wm-navigator.css +990 -0
  125. package/dist/collection/components/wm-navigator/wm-navigator.js +597 -0
  126. package/dist/collection/components/wm-pagination/wm-pagination.css +1044 -0
  127. package/dist/collection/components/wm-pagination/wm-pagination.js +487 -0
  128. package/dist/collection/components/wm-search/wm-search.css +983 -0
  129. package/dist/collection/components/wm-search/wm-search.js +604 -0
  130. package/dist/collection/components/wm-snackbar/wm-snackbar.css +1150 -0
  131. package/dist/collection/components/wm-snackbar/wm-snackbar.js +363 -0
  132. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.css +958 -0
  133. package/dist/collection/components/wm-tabs/wm-tab-item/wm-tab-item.js +233 -0
  134. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.css +966 -0
  135. package/dist/collection/components/wm-tabs/wm-tab-list/wm-tab-list.js +461 -0
  136. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.css +906 -0
  137. package/dist/collection/components/wm-tabs/wm-tab-panel/wm-tab-panel.js +132 -0
  138. package/dist/collection/components/wm-tag-input/wm-tag-input.css +1423 -0
  139. package/dist/collection/components/wm-tag-input/wm-tag-input.js +1511 -0
  140. package/dist/collection/components/wm-tag-input/wm-tag-option/wm-tag-option.js +328 -0
  141. package/dist/collection/components/wm-textarea/wm-textarea.css +1065 -0
  142. package/dist/collection/components/wm-textarea/wm-textarea.js +423 -0
  143. package/dist/collection/components/wm-timepicker/wm-timepicker.css +1174 -0
  144. package/dist/collection/components/wm-timepicker/wm-timepicker.js +728 -0
  145. package/dist/collection/components/wm-toggletip/wm-toggletip.css +1296 -0
  146. package/dist/collection/components/wm-toggletip/wm-toggletip.js +455 -0
  147. package/dist/collection/components/wm-uploader/wm-uploader.css +1987 -0
  148. package/dist/collection/components/wm-uploader/wm-uploader.js +760 -0
  149. package/dist/collection/components/wm-wrapper/wm-wrapper.js +31 -0
  150. package/dist/collection/dev/action-menu.js +18 -0
  151. package/dist/collection/dev/button.js +12 -0
  152. package/dist/collection/dev/chart-bar.js +430 -0
  153. package/dist/collection/dev/chart-column.js +459 -0
  154. package/dist/collection/dev/chart-small.js +56 -0
  155. package/dist/collection/dev/chart-stack.js +205 -0
  156. package/dist/collection/dev/chart.js +18 -0
  157. package/dist/collection/dev/date-range.js +14 -0
  158. package/dist/collection/dev/datepicker.js +46 -0
  159. package/dist/collection/dev/file-list.js +16 -0
  160. package/dist/collection/dev/file.js +0 -0
  161. package/dist/collection/dev/flyout.js +194 -0
  162. package/dist/collection/dev/input.js +6 -0
  163. package/dist/collection/dev/line-chart.js +45 -0
  164. package/dist/collection/dev/modal.js +48 -0
  165. package/dist/collection/dev/navigation.js +13 -0
  166. package/dist/collection/dev/navigator.js +34 -0
  167. package/dist/collection/dev/nested-select.js +36 -0
  168. package/dist/collection/dev/pagination.js +7 -0
  169. package/dist/collection/dev/progress-monitor.js +0 -0
  170. package/dist/collection/dev/pss-modal.js +8 -0
  171. package/dist/collection/dev/scripts.js +49 -0
  172. package/dist/collection/dev/search.js +72 -0
  173. package/dist/collection/dev/select.js +57 -0
  174. package/dist/collection/dev/snackbar.js +68 -0
  175. package/dist/collection/dev/tabs.js +44 -0
  176. package/dist/collection/dev/tag-input.js +32 -0
  177. package/dist/collection/dev/textarea.js +28 -0
  178. package/dist/collection/dev/timepicker.js +32 -0
  179. package/dist/collection/dev/toggletip.js +9 -0
  180. package/dist/collection/dev/uploader.js +139 -0
  181. package/dist/collection/global/__mocks__/functions.js +6 -0
  182. package/dist/collection/global/functions.js +907 -0
  183. package/dist/{ripple/app-globals-B7cOtGhY.js → collection/global/global.js} +16 -87
  184. package/dist/collection/global/interfaces.js +94 -0
  185. package/dist/collection/global/intl.js +281 -0
  186. package/dist/collection/global/services/__mocks__/http-service.js +130 -0
  187. package/dist/collection/global/services/http-service.js +50 -0
  188. package/dist/collection/lang/lang.js +5 -0
  189. package/dist/collection/lang/missing.js +43 -0
  190. package/dist/collection/lang/piglatin.js +101 -0
  191. package/dist/docs/docs.d.ts +435 -0
  192. package/dist/docs/docs.json +14178 -0
  193. package/dist/docs/props-reference.json +2079 -0
  194. package/dist/docs/skill/index.md +33 -0
  195. package/dist/docs/skill/wm-action-menu.md +116 -0
  196. package/dist/docs/skill/wm-button.md +121 -0
  197. package/dist/docs/skill/wm-chart-bar.md +156 -0
  198. package/dist/docs/skill/wm-chart-column.md +122 -0
  199. package/dist/docs/skill/wm-chart-legend.md +91 -0
  200. package/dist/docs/skill/wm-chart-slice.md +101 -0
  201. package/dist/docs/skill/wm-chart-stack.md +147 -0
  202. package/dist/docs/skill/wm-chart.md +139 -0
  203. package/dist/docs/skill/wm-date-range.md +176 -0
  204. package/dist/docs/skill/wm-datepicker.md +153 -0
  205. package/dist/docs/skill/wm-file-list.md +105 -0
  206. package/dist/docs/skill/wm-file.md +91 -0
  207. package/dist/docs/skill/wm-flyout.md +209 -0
  208. package/dist/docs/skill/wm-input.md +134 -0
  209. package/dist/docs/skill/wm-line-chart.md +135 -0
  210. package/dist/docs/skill/wm-menuitem.md +64 -0
  211. package/dist/docs/skill/wm-modal-footer.md +81 -0
  212. package/dist/docs/skill/wm-modal-header.md +71 -0
  213. package/dist/docs/skill/wm-modal.md +172 -0
  214. package/dist/docs/skill/wm-navigation-hamburger.md +61 -0
  215. package/dist/docs/skill/wm-navigation-item.md +78 -0
  216. package/dist/docs/skill/wm-navigation.md +82 -0
  217. package/dist/docs/skill/wm-navigator.md +106 -0
  218. package/dist/docs/skill/wm-nested-select.md +160 -0
  219. package/dist/docs/skill/wm-optgroup.md +72 -0
  220. package/dist/docs/skill/wm-option.md +67 -0
  221. package/dist/docs/skill/wm-pagination.md +114 -0
  222. package/dist/docs/skill/wm-progress-indicator.md +75 -0
  223. package/dist/docs/skill/wm-progress-monitor.md +120 -0
  224. package/dist/docs/skill/wm-progress-slice.md +67 -0
  225. package/dist/docs/skill/wm-search.md +180 -0
  226. package/dist/docs/skill/wm-select.md +169 -0
  227. package/dist/docs/skill/wm-snackbar.md +130 -0
  228. package/dist/docs/skill/wm-tab-item.md +45 -0
  229. package/dist/docs/skill/wm-tab-list.md +139 -0
  230. package/dist/docs/skill/wm-tab-panel.md +39 -0
  231. package/dist/docs/skill/wm-tag-input.md +187 -0
  232. package/dist/docs/skill/wm-tag-option.md +60 -0
  233. package/dist/docs/skill/wm-textarea.md +102 -0
  234. package/dist/docs/skill/wm-timepicker.md +156 -0
  235. package/dist/docs/skill/wm-toggletip.md +98 -0
  236. package/dist/docs/skill/wm-uploader.md +154 -0
  237. package/dist/docs/skill/wm-wrapper.md +5 -0
  238. package/dist/esm/app-globals-a1092590.js +101 -0
  239. package/dist/{ripple/chartFunctions-CmeM8Tyx.js → esm/chartFunctions-58637dc9.js} +159 -3
  240. package/dist/{ripple/functions-DVLl0rH_.js → esm/functions-65f1594c.js} +374 -7830
  241. package/dist/esm/index-3425d80d.js +1813 -0
  242. package/dist/esm/index.js +1 -0
  243. package/dist/esm/interfaces-8778346d.js +77 -0
  244. package/dist/{ripple/intl-7p27BJSM.js → esm/intl-d518f362.js} +11 -4
  245. package/dist/esm/loader.js +11 -0
  246. package/dist/{ripple → esm}/priv-calendar.entry.js +143 -133
  247. package/dist/esm/priv-chart-popover-old.entry.js +142 -0
  248. package/dist/esm/priv-chart-popover_2.entry.js +199 -0
  249. package/dist/{ripple → esm}/priv-navigator-button.entry.js +5 -4
  250. package/dist/{ripple → esm}/priv-navigator-item.entry.js +5 -4
  251. package/dist/{ripple → esm}/priv-option-list.entry.js +18 -16
  252. package/dist/esm/ripple.js +20 -0
  253. package/dist/esm/wm-action-menu_2.entry.js +520 -0
  254. package/dist/{ripple/wm-modal-header.entry.js → esm/wm-button.entry.js} +264 -24
  255. package/dist/esm/wm-chart-bar.entry.js +440 -0
  256. package/dist/esm/wm-chart-column.entry.js +625 -0
  257. package/dist/{ripple → esm}/wm-chart-slice.entry.js +6 -1
  258. package/dist/esm/wm-chart-stack.entry.js +443 -0
  259. package/dist/esm/wm-chart.entry.js +159 -0
  260. package/dist/{ripple → esm}/wm-date-range.entry.js +224 -114
  261. package/dist/esm/wm-datepicker.entry.js +395 -0
  262. package/dist/{ripple → esm}/wm-file-list.entry.js +5 -4
  263. package/dist/{ripple → esm}/wm-file.entry.js +48 -24
  264. package/dist/esm/wm-flyout.entry.js +174 -0
  265. package/dist/{ripple → esm}/wm-input.entry.js +23 -7
  266. package/dist/{ripple → esm}/wm-line-chart.entry.js +182 -94
  267. package/dist/esm/wm-modal-pss_3.entry.js +214 -0
  268. package/dist/esm/wm-modal_3.entry.js +232 -0
  269. package/dist/esm/wm-navigation_3.entry.js +182 -0
  270. package/dist/{ripple → esm}/wm-navigator.entry.js +26 -64
  271. package/dist/{ripple → esm}/wm-nested-select.entry.js +35 -25
  272. package/dist/{ripple → esm}/wm-optgroup.entry.js +17 -5
  273. package/dist/esm/wm-option_2.entry.js +531 -0
  274. package/dist/{ripple → esm}/wm-pagination.entry.js +16 -14
  275. package/dist/esm/wm-progress-indicator_3.entry.js +198 -0
  276. package/dist/{ripple → esm}/wm-search.entry.js +15 -31
  277. package/dist/{ripple → esm}/wm-snackbar.entry.js +32 -45
  278. package/dist/esm/wm-tab-item_3.entry.js +351 -0
  279. package/dist/{ripple → esm}/wm-tag-input.entry.js +169 -65
  280. package/dist/{ripple → esm}/wm-tag-option.entry.js +14 -2
  281. package/dist/{ripple/wm-menuitem.entry.js → esm/wm-textarea.entry.js} +65 -100
  282. package/dist/{ripple → esm}/wm-timepicker.entry.js +33 -12
  283. package/dist/{ripple → esm}/wm-toggletip.entry.js +105 -33
  284. package/dist/esm/wm-uploader.entry.js +337 -0
  285. package/dist/{ripple → esm}/wm-wrapper.entry.js +1 -1
  286. package/dist/index.cjs.js +1 -0
  287. package/dist/index.js +1 -0
  288. package/dist/loader/cdn.js +1 -0
  289. package/dist/loader/index.cjs.js +1 -0
  290. package/dist/loader/index.d.ts +24 -0
  291. package/dist/loader/index.es2017.js +1 -0
  292. package/dist/loader/index.js +2 -0
  293. package/dist/loader/package.json +11 -0
  294. package/dist/ripple/index.esm.js +0 -1
  295. package/dist/ripple/p-0d364411.entry.js +1 -0
  296. package/dist/ripple/p-156c4d1d.entry.js +1 -0
  297. package/dist/ripple/{wm-modal-footer.entry.js → p-26d8c356.entry.js} +1 -44
  298. package/dist/ripple/p-2b23ce49.entry.js +1 -0
  299. package/dist/ripple/p-2b7cc2c1.entry.js +1 -0
  300. package/dist/ripple/p-34bde06a.entry.js +1 -0
  301. package/dist/ripple/p-35db9386.entry.js +1 -0
  302. package/dist/ripple/p-38a987ac.entry.js +1 -0
  303. package/dist/ripple/p-38b05894.entry.js +1 -0
  304. package/dist/ripple/p-38dee4ab.entry.js +1 -0
  305. package/dist/ripple/p-3a19d019.entry.js +1 -0
  306. package/dist/ripple/p-451d4de2.js +1 -0
  307. package/dist/ripple/p-507f2cf4.entry.js +1 -0
  308. package/dist/ripple/p-59f74ead.entry.js +1 -0
  309. package/dist/ripple/p-5c2fc42a.entry.js +1 -0
  310. package/dist/ripple/p-680d7606.entry.js +1 -0
  311. package/dist/ripple/p-683264db.js +1 -0
  312. package/dist/ripple/p-6db681c8.entry.js +1 -0
  313. package/dist/ripple/p-6e3c2bbc.js +1 -0
  314. package/dist/ripple/p-6f1cabab.entry.js +1 -0
  315. package/dist/ripple/p-72d135ee.entry.js +1 -0
  316. package/dist/ripple/p-7799953c.entry.js +1 -0
  317. package/dist/ripple/p-83c3db60.js +2 -0
  318. package/dist/ripple/{wm-progress-monitor.entry.js → p-83cdad78.entry.js} +1 -71
  319. package/dist/ripple/p-87ef0cfa.entry.js +1 -0
  320. package/dist/ripple/p-88e44511.entry.js +1 -0
  321. package/dist/ripple/p-8f8e4eb8.entry.js +1 -0
  322. package/dist/ripple/p-936adffb.entry.js +1 -0
  323. package/dist/ripple/p-9755192c.entry.js +1 -0
  324. package/dist/ripple/p-9c5c591b.js +1 -0
  325. package/dist/ripple/p-9ea38d96.entry.js +1 -0
  326. package/dist/ripple/p-be3e4e7c.entry.js +1 -0
  327. package/dist/ripple/p-c9c7df12.entry.js +1 -0
  328. package/dist/ripple/p-d7a1be0b.entry.js +1 -0
  329. package/dist/ripple/p-dab86523.entry.js +1 -0
  330. package/dist/ripple/{wm-tab-list.entry.js → p-e4aa6e27.entry.js} +1 -175
  331. package/dist/ripple/p-ebe9f38c.js +1 -0
  332. package/dist/ripple/p-ed053612.entry.js +1 -0
  333. package/dist/ripple/p-f43f621b.entry.js +1 -0
  334. package/dist/ripple/p-f48d30d6.entry.js +1 -0
  335. package/dist/ripple/{wm-action-menu.entry.js → p-f6aad57c.entry.js} +1 -201
  336. package/dist/ripple/p-f6e1beb5.entry.js +1 -0
  337. package/dist/ripple/p-fc843bb8.entry.js +1 -0
  338. package/dist/ripple/{priv-chart-popover.entry.js → p-fd997764.entry.js} +1 -134
  339. package/dist/ripple/p-fffb46ad.entry.js +1 -0
  340. package/dist/ripple/ripple.esm.js +1 -48
  341. package/dist/types/components/charts/chartFunctions.d.ts +15 -2
  342. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +25 -11
  343. package/dist/types/components/charts/priv-chart-popover-old/priv-chart-popover-old.d.ts +31 -0
  344. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +52 -0
  345. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +113 -1
  346. package/dist/types/components/charts/wm-chart-bar/wm-chart-bar.d.ts +195 -0
  347. package/dist/types/components/charts/wm-chart-column/wm-chart-column.d.ts +184 -0
  348. package/dist/types/components/charts/wm-chart-legend/wm-chart-legend.d.ts +110 -0
  349. package/dist/types/components/charts/wm-chart-stack/wm-chart-stack.d.ts +194 -0
  350. package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +156 -11
  351. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +53 -1
  352. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +85 -0
  353. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +44 -0
  354. package/dist/types/components/datepickers/priv-calendar/priv-calendar.d.ts +19 -3
  355. package/dist/types/components/datepickers/wm-date-range.d.ts +205 -14
  356. package/dist/types/components/datepickers/wm-datepicker.d.ts +189 -11
  357. package/dist/types/components/selects/priv-option-list/priv-option-list.d.ts +6 -0
  358. package/dist/types/components/selects/wm-nested-select/wm-nested-select.d.ts +165 -1
  359. package/dist/types/components/selects/wm-optgroup/wm-optgroup.d.ts +87 -0
  360. package/dist/types/components/selects/wm-option/wm-option.d.ts +117 -0
  361. package/dist/types/components/selects/wm-select/wm-select.d.ts +193 -12
  362. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +207 -2
  363. package/dist/types/components/wm-button/wm-button.d.ts +191 -0
  364. package/dist/types/components/wm-file/wm-file.d.ts +110 -1
  365. package/dist/types/components/wm-file-list/wm-file-list.d.ts +72 -0
  366. package/dist/types/components/wm-flyout/wm-flyout.d.ts +205 -0
  367. package/dist/types/components/wm-input/wm-input.d.ts +161 -1
  368. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +79 -0
  369. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +54 -0
  370. package/dist/types/components/wm-modal/wm-modal-header.d.ts +30 -0
  371. package/dist/types/components/wm-modal/wm-modal.d.ts +160 -0
  372. package/dist/types/components/wm-modal-pss/wm-modal-pss-footer.d.ts +4 -0
  373. package/dist/types/components/wm-modal-pss/wm-modal-pss-header.d.ts +4 -0
  374. package/dist/types/components/wm-modal-pss/wm-modal-pss.d.ts +6 -0
  375. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +34 -0
  376. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +41 -0
  377. package/dist/types/components/wm-navigation/wm-navigation.d.ts +57 -0
  378. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +4 -0
  379. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +4 -0
  380. package/dist/types/components/wm-navigator/wm-navigator.d.ts +93 -4
  381. package/dist/types/components/wm-pagination/wm-pagination.d.ts +100 -1
  382. package/dist/types/components/wm-search/wm-search.d.ts +158 -6
  383. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +103 -1
  384. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +55 -3
  385. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +119 -20
  386. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +35 -2
  387. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +199 -5
  388. package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +68 -0
  389. package/dist/types/components/wm-textarea/wm-textarea.d.ts +99 -0
  390. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +147 -0
  391. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +88 -2
  392. package/dist/types/components/wm-uploader/wm-uploader.d.ts +145 -3
  393. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +3 -0
  394. package/dist/types/components.d.ts +11523 -95
  395. package/dist/types/global/functions.d.ts +7 -2
  396. package/dist/types/global/interfaces.d.ts +92 -2
  397. package/dist/types/global/intl.d.ts +3 -0
  398. package/dist/types/stencil-public-runtime.d.ts +0 -28
  399. package/package.json +4 -33
  400. package/dist/components/index.d.ts +0 -33
  401. package/dist/components/priv-calendar.d.ts +0 -11
  402. package/dist/components/priv-chart-popover.d.ts +0 -11
  403. package/dist/components/priv-navigator-button.d.ts +0 -11
  404. package/dist/components/priv-navigator-item.d.ts +0 -11
  405. package/dist/components/priv-option-list.d.ts +0 -11
  406. package/dist/components/wm-action-menu.d.ts +0 -11
  407. package/dist/components/wm-button.d.ts +0 -11
  408. package/dist/components/wm-chart-slice.d.ts +0 -11
  409. package/dist/components/wm-chart.d.ts +0 -11
  410. package/dist/components/wm-date-range.d.ts +0 -11
  411. package/dist/components/wm-datepicker.d.ts +0 -11
  412. package/dist/components/wm-file-list.d.ts +0 -11
  413. package/dist/components/wm-file.d.ts +0 -11
  414. package/dist/components/wm-flyout.d.ts +0 -11
  415. package/dist/components/wm-input.d.ts +0 -11
  416. package/dist/components/wm-line-chart.d.ts +0 -11
  417. package/dist/components/wm-menuitem.d.ts +0 -11
  418. package/dist/components/wm-modal-footer.d.ts +0 -11
  419. package/dist/components/wm-modal-header.d.ts +0 -11
  420. package/dist/components/wm-modal-pss-footer.d.ts +0 -11
  421. package/dist/components/wm-modal-pss-header.d.ts +0 -11
  422. package/dist/components/wm-modal-pss.d.ts +0 -11
  423. package/dist/components/wm-modal.d.ts +0 -11
  424. package/dist/components/wm-navigation-hamburger.d.ts +0 -11
  425. package/dist/components/wm-navigation-item.d.ts +0 -11
  426. package/dist/components/wm-navigation.d.ts +0 -11
  427. package/dist/components/wm-navigator.d.ts +0 -11
  428. package/dist/components/wm-nested-select.d.ts +0 -11
  429. package/dist/components/wm-optgroup.d.ts +0 -11
  430. package/dist/components/wm-option.d.ts +0 -11
  431. package/dist/components/wm-pagination.d.ts +0 -11
  432. package/dist/components/wm-progress-indicator.d.ts +0 -11
  433. package/dist/components/wm-progress-monitor.d.ts +0 -11
  434. package/dist/components/wm-progress-slice.d.ts +0 -11
  435. package/dist/components/wm-search.d.ts +0 -11
  436. package/dist/components/wm-select.d.ts +0 -11
  437. package/dist/components/wm-snackbar.d.ts +0 -11
  438. package/dist/components/wm-tab-item.d.ts +0 -11
  439. package/dist/components/wm-tab-list.d.ts +0 -11
  440. package/dist/components/wm-tab-panel.d.ts +0 -11
  441. package/dist/components/wm-tag-input.d.ts +0 -11
  442. package/dist/components/wm-tag-option.d.ts +0 -11
  443. package/dist/components/wm-textarea.d.ts +0 -11
  444. package/dist/components/wm-timepicker.d.ts +0 -11
  445. package/dist/components/wm-toggletip.d.ts +0 -11
  446. package/dist/components/wm-uploader.d.ts +0 -11
  447. package/dist/components/wm-wrapper.d.ts +0 -11
  448. package/dist/ripple/index-CU5QNCKv.js +0 -4167
  449. package/dist/ripple/interfaces-CrANcZM9.js +0 -53
  450. package/dist/ripple/wm-button.entry.js +0 -197
  451. package/dist/ripple/wm-chart.entry.js +0 -157
  452. package/dist/ripple/wm-modal-pss-footer.entry.js +0 -40
  453. package/dist/ripple/wm-modal-pss-header.entry.js +0 -39
  454. package/dist/ripple/wm-navigation-hamburger.entry.js +0 -48
  455. package/dist/ripple/wm-navigation-item.entry.js +0 -18
  456. package/dist/ripple/wm-option.entry.js +0 -171
  457. package/dist/ripple/wm-progress-slice.entry.js +0 -13
  458. package/dist/ripple/wm-select.entry.js +0 -249
  459. package/dist/ripple/wm-tab-item.entry.js +0 -63
  460. package/dist/ripple/wm-uploader.entry.js +0 -313
@@ -0,0 +1,999 @@
1
+ import { h, Host, forceUpdate } from "@stencil/core";
2
+ import { csvToArray, debounce, transposeMatrix, getSmallestSkipInterval, wrapAround, calcPercentageInRange, } from "../../../global/functions";
3
+ import { getInterval, inferDecimalPlacesForUnitValue, suffixNumber } from "../chartFunctions";
4
+ import { chartMessages, globalMessages, lineChartMessages } from "../../../global/intl";
5
+ /**
6
+ * Visualizes how data changes over time. Ideal for trend analysis — tracking one or more
7
+ * metrics across chronological intervals such as semesters, academic years, or months.
8
+ * Supports up to 7 lines, each differentiated by both color and symbol. Data is set via the
9
+ * `line-data` prop (JSON string or object). Minimum width of 562 px; horizontally scrollable
10
+ * at smaller viewports.
11
+ *
12
+ * @category Data Visualization
13
+ *
14
+ * @keyboardInteraction
15
+ * - **Tab** (into chart): If `visibility-toggles` is enabled, focuses the first toggle button;
16
+ * otherwise focuses the first data point.
17
+ * - **Tab** (on toggle button): Moves to the first data point of the first visible line.
18
+ * - **Shift+Tab** (on first data point, with toggles): Returns focus to the toggle buttons.
19
+ * - **Arrow Up / Down** (on data point): Moves focus vertically to the same x-interval on
20
+ * the previous/next line.
21
+ * - **Arrow Left / Right** (on data point): Moves focus to the previous/next data point on
22
+ * the same line.
23
+ * - **Arrow Left / Right** (on toggle button): Cycles between toggle buttons.
24
+ *
25
+ * @accessibility
26
+ * - `label`, `x-axis-label`, and `y-axis-label` are required for accessibility.
27
+ * - Each data point renders as `role="img"` with a detailed `aria-label` including the line
28
+ * name, x-value, y-value, units, and (if `show-deltas`) the percentage change from the
29
+ * previous point.
30
+ * - An `aria-live` region announces the line name and data point count when keyboard focus
31
+ * moves to a new line.
32
+ * - The `description` prop is appended to the chart instructions read to screen readers —
33
+ * use it to summarize the key takeaway.
34
+ *
35
+ * @usageNotes
36
+ * - `line-data` expects a JSON object where keys are line labels and values are objects mapping
37
+ * x-axis values (strings) to y-axis values (numbers or `null` for missing data points).
38
+ * In HTML, set it as a JSON string attribute; in JavaScript/React, set it as an object.
39
+ * - Up to 7 lines are supported — each is automatically assigned a color and symbol from
40
+ * the built-in palette.
41
+ * - `spotlight-data` adds a single reference line spanning the whole chart. Provide an object
42
+ * with a `label` key and one x-value key mapping to the y-value.
43
+ *
44
+ * @example {html} Basic line chart
45
+ * <wm-line-chart label="Enrollment trend" x-axis-label="Term" y-axis-label="Students"
46
+ * line-data='{"Biology": {"Fall 2022": 310, "Fall 2023": 340}}'></wm-line-chart>
47
+ *
48
+ * @example {react} Basic line chart
49
+ * <WmLineChart label="Enrollment trend" xAxisLabel="Term" yAxisLabel="Students"
50
+ * lineData={{ Biology: { "Fall 2022": 310, "Fall 2023": 340 } }} />
51
+ *
52
+ * @example {html} Multi-line with delta comparisons
53
+ * <wm-line-chart label="Retention rates" x-axis-label="Year" y-axis-label="Rate"
54
+ * units="null,percent" show-deltas
55
+ * line-data='{"Biology": {"2022": 85, "2023": 88}, "English": {"2022": 79, "2023": 82}}'>
56
+ * </wm-line-chart>
57
+ *
58
+ * @example {react} Multi-line with delta comparisons
59
+ * <WmLineChart label="Retention rates" xAxisLabel="Year" yAxisLabel="Rate"
60
+ * units="null,percent" showDeltas={true}
61
+ * lineData={{ Biology: { "2022": 85, "2023": 88 }, English: { "2022": 79, "2023": 82 } }} />
62
+ *
63
+ */
64
+ export class LineChart {
65
+ constructor() {
66
+ this.minTickWidth = 120;
67
+ this.lineStyles = [
68
+ { color: "#8b86ca", icon: "triangle" }, // lavender
69
+ { color: "#2e1b46", icon: "circle" }, // midnight
70
+ { color: "#0089e4", icon: "square" }, // blue
71
+ { color: "#088000", icon: "star" }, // forest
72
+ { color: "#ea8500", icon: "rhombus" }, // orange
73
+ { color: "#d54f41", icon: "triangle-inverted" }, // red
74
+ { color: "#146ca9", icon: "pentagon" }, // blue
75
+ ];
76
+ this.debouncedResize = debounce(async () => {
77
+ forceUpdate(this.el);
78
+ }, 100);
79
+ this.label = undefined;
80
+ this.description = "";
81
+ this.xAxisLabel = undefined;
82
+ this.yAxisLabel = undefined;
83
+ this.showGrid = true;
84
+ this.lineData = undefined;
85
+ this.units = "null,null";
86
+ this.labelWidth = "120px";
87
+ this.highlightQualifier = lineChartMessages.highlightQualifier;
88
+ this.highlightStart = undefined;
89
+ this.highlightEnd = undefined;
90
+ this.visibilityToggles = false;
91
+ this.showDeltas = false;
92
+ this.yRange = undefined;
93
+ this.spotlightData = undefined;
94
+ this.decimalPlaces = undefined;
95
+ this.parsedLineData = {};
96
+ this.popoverIndex = -1;
97
+ this.focusedLine = -1;
98
+ this.hiddenLines = [];
99
+ this.isTabbing = false;
100
+ this.announcement = "";
101
+ }
102
+ get xIntervals() {
103
+ const firstLine = Object.values(this.parsedLineData)[0];
104
+ return firstLine ? Object.keys(firstLine) : [];
105
+ }
106
+ get yIntervals() {
107
+ if (Object.keys(this.parsedLineData).length === 0)
108
+ return [];
109
+ let yIntervals = [];
110
+ if (this.yRange) {
111
+ yIntervals = csvToArray(this.yRange).map((val) => parseFloat(val));
112
+ }
113
+ else {
114
+ // gather all yValues
115
+ let allYValues = [];
116
+ const lines = Object.values(this.parsedLineData).flat();
117
+ lines.forEach((line) => allYValues.push(...Object.values(line)));
118
+ const filteredYValues = allYValues.filter((val) => val !== null);
119
+ // Clamp to integers for clean intervals
120
+ let minYValue = Math.floor(Math.min(...filteredYValues));
121
+ let maxYValue = Math.ceil(Math.max(...filteredYValues));
122
+ if (minYValue === maxYValue) {
123
+ // If the axis bounds are identical (flat line), add some grid height
124
+ minYValue -= 1;
125
+ maxYValue += 1;
126
+ }
127
+ // calculate neat yInterval
128
+ let interval = getInterval(maxYValue - minYValue, 4);
129
+ // find new min below smallest yValue that divides cleanly by interval
130
+ let counter = interval;
131
+ while (minYValue % interval !== 0 && counter > 0) {
132
+ minYValue--;
133
+ counter--;
134
+ }
135
+ // calculate new interval using new min
136
+ interval = getInterval(maxYValue - minYValue, 4);
137
+ let current = minYValue;
138
+ // determine top interval, no more than one tick above max yValue
139
+ while (current <= maxYValue + interval) {
140
+ yIntervals.push(current);
141
+ current += interval;
142
+ }
143
+ }
144
+ return yIntervals.reverse();
145
+ }
146
+ get intervalInfo() {
147
+ const maxTicks = this.plotAreaEl && this.plotAreaEl.clientWidth > 0
148
+ ? Math.round(this.plotAreaEl.clientWidth / this.minTickWidth)
149
+ : this.xIntervals.length;
150
+ return getSmallestSkipInterval(this.xIntervals, maxTicks);
151
+ }
152
+ get displayedXIntervals() {
153
+ return this.intervalInfo.skippedList;
154
+ }
155
+ get dataPointMatrix() {
156
+ if (Object.keys(this.parsedLineData).length === 0)
157
+ return [];
158
+ return Object.entries(this.parsedLineData).map((entry) => this.buildLineDataPointDetails(entry[0], entry[1]));
159
+ }
160
+ get popoverData() {
161
+ return transposeMatrix(this.dataPointMatrix);
162
+ }
163
+ get spotlightXValue() {
164
+ if (this.spotlightData) {
165
+ const keys = Object.keys(this.spotlightData).filter((key) => key !== "label");
166
+ return keys[0];
167
+ }
168
+ return undefined;
169
+ }
170
+ get spotlightYValue() {
171
+ if (this.spotlightData && this.spotlightXValue) {
172
+ const raw = this.spotlightData[this.spotlightXValue];
173
+ if (typeof raw !== "number") {
174
+ return undefined;
175
+ }
176
+ return raw;
177
+ }
178
+ return undefined;
179
+ }
180
+ parseData() {
181
+ if (typeof this.lineData === "string") {
182
+ this.parsedLineData = JSON.parse(this.lineData);
183
+ }
184
+ else {
185
+ this.parsedLineData = this.lineData;
186
+ }
187
+ }
188
+ get hasPartialInterval() {
189
+ // 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
190
+ // 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)
191
+ // in these cases, show a partial interval must be shown in order to still provide space to plot the 8th data point
192
+ // e.g intervals will be 1-3, 3-5, 5-7, 7-8
193
+ return this.intervalInfo.skipInterval > 0 && this.xIntervals.length % 2 === 0;
194
+ }
195
+ get parsedUnits() {
196
+ return csvToArray(this.units).map((unit) => (unit === "null" ? null : unit));
197
+ }
198
+ get visibilityToggleEls() {
199
+ return this.legendEl.querySelectorAll("wm-button");
200
+ }
201
+ get lineEls() {
202
+ return this.plotAreaEl.querySelectorAll(".line");
203
+ }
204
+ get firstVisibleLineIdx() {
205
+ let firstVisibleLineIdx = 0;
206
+ while (this.hiddenLines.includes(firstVisibleLineIdx)) {
207
+ firstVisibleLineIdx++;
208
+ }
209
+ return firstVisibleLineIdx < this.dataPointMatrix.length ? firstVisibleLineIdx : -1;
210
+ }
211
+ get pointEls() {
212
+ return this.plotAreaEl.querySelectorAll(".point");
213
+ }
214
+ toggleTabbingOn() {
215
+ this.isTabbing = true;
216
+ }
217
+ toggleTabbingOff() {
218
+ this.isTabbing = false;
219
+ }
220
+ componentWillLoad() {
221
+ this.parseData();
222
+ }
223
+ componentDidLoad() {
224
+ const resizeObserver = new ResizeObserver(() => this.debouncedResize());
225
+ resizeObserver.observe(this.el);
226
+ }
227
+ handleVisibilityToggleKeydown(ev, toggleIdx) {
228
+ switch (ev.key) {
229
+ case "Tab":
230
+ if (!ev.shiftKey && this.firstVisibleLineIdx !== -1) {
231
+ ev.preventDefault();
232
+ this.announce(this.lineFocusMessage(this.firstVisibleLineIdx));
233
+ const point = this.lineEls[this.firstVisibleLineIdx].querySelector(".point");
234
+ point && this.focusDataPointByEl(point);
235
+ }
236
+ break;
237
+ case "ArrowUp":
238
+ case "ArrowLeft":
239
+ ev.preventDefault();
240
+ const prevToggleIdx = wrapAround(toggleIdx, -1, this.dataPointMatrix.length - 1);
241
+ this.visibilityToggleEls[prevToggleIdx].focus();
242
+ break;
243
+ case "ArrowDown":
244
+ case "ArrowRight":
245
+ ev.preventDefault();
246
+ const nextToggleIdx = wrapAround(toggleIdx, 1, this.dataPointMatrix.length - 1);
247
+ this.visibilityToggleEls[nextToggleIdx].focus();
248
+ break;
249
+ }
250
+ }
251
+ handleDataPointKeydown(ev) {
252
+ const curPointEl = ev.target;
253
+ switch (ev.key) {
254
+ case "Tab":
255
+ if (ev.shiftKey && this.visibilityToggles) {
256
+ ev.preventDefault();
257
+ this.visibilityToggleEls[0].focus();
258
+ }
259
+ break;
260
+ case "ArrowUp":
261
+ ev.preventDefault();
262
+ this.navigatePointsVertically(curPointEl, -1);
263
+ break;
264
+ case "ArrowDown":
265
+ ev.preventDefault();
266
+ this.navigatePointsVertically(curPointEl, 1);
267
+ break;
268
+ case "ArrowLeft":
269
+ ev.preventDefault();
270
+ this.navigatePointsHorizontally(curPointEl, -1);
271
+ break;
272
+ case "ArrowRight":
273
+ ev.preventDefault();
274
+ this.navigatePointsHorizontally(curPointEl, 1);
275
+ break;
276
+ }
277
+ }
278
+ navigatePointsVertically(originPoint, stepAmount) {
279
+ const pointElsInColumn = Array.from(this.pointEls).filter((p) => p.dataset.pointidx == originPoint.dataset.pointidx);
280
+ if (pointElsInColumn.length > 1) {
281
+ const nextPointIdx = wrapAround(pointElsInColumn.indexOf(originPoint), stepAmount, pointElsInColumn.length - 1);
282
+ const nextVerticalPoint = pointElsInColumn[nextPointIdx];
283
+ const idx = nextVerticalPoint.dataset.lineidx;
284
+ const msg = idx && this.lineFocusMessage(parseInt(idx));
285
+ msg && this.announce(msg);
286
+ this.focusDataPointByEl(nextVerticalPoint);
287
+ }
288
+ }
289
+ navigatePointsHorizontally(originPoint, stepAmount) {
290
+ const linePoints = Array.from(originPoint.parentElement.querySelectorAll(".point"));
291
+ if (linePoints.length > 1) {
292
+ const nextPointIdxInDirection = wrapAround(linePoints.indexOf(originPoint), stepAmount, linePoints.length - 1);
293
+ const nextHorizontalPoint = linePoints[nextPointIdxInDirection];
294
+ this.focusDataPointByEl(nextHorizontalPoint);
295
+ }
296
+ }
297
+ announce(message) {
298
+ // \u00A0 is a non-breaking space character, which causes the message to be read as a new one
299
+ if (this.liveRegionEl.textContent === message) {
300
+ message += "\u00A0";
301
+ }
302
+ this.announcement = message;
303
+ }
304
+ lineFocusMessage(lineIdx) {
305
+ const label = this.dataPointMatrix[lineIdx][0].lineLabel;
306
+ const numDataPoints = this.dataPointMatrix[lineIdx].filter((datapoint) => datapoint.yValue !== null).length;
307
+ const focusMessage = lineChartMessages.getLineFocusAnnouncement(label, lineIdx + 1, this.dataPointMatrix.length, numDataPoints);
308
+ return focusMessage;
309
+ }
310
+ focusDataPointByEl(pointEl) {
311
+ this.pointEls.forEach((point) => (point.tabIndex = -1));
312
+ pointEl.tabIndex = 0;
313
+ pointEl.focus();
314
+ }
315
+ formatDisplayYValue(yValue) {
316
+ if (this.decimalPlaces === undefined) {
317
+ return new Intl.NumberFormat().format(yValue);
318
+ }
319
+ return yValue.toFixed(this.decimalPlaces);
320
+ }
321
+ formatYAxisIntervalLabel(intervalValue) {
322
+ var _a;
323
+ const decimalPlaces = (_a = this.decimalPlaces) !== null && _a !== void 0 ? _a : inferDecimalPlacesForUnitValue(intervalValue);
324
+ let absFormattedValue = suffixNumber(Math.abs(intervalValue), decimalPlaces);
325
+ if (intervalValue < 0) {
326
+ absFormattedValue = "-" + absFormattedValue;
327
+ }
328
+ return absFormattedValue;
329
+ }
330
+ buildLineDataPointDetails(lineLabel, line) {
331
+ let dataPointDetailsList = [];
332
+ const lineDataPoints = Object.entries(line);
333
+ let isHighlighted;
334
+ lineDataPoints.forEach((entry, pointIdx) => {
335
+ const [xValue, yValue] = entry;
336
+ let xPositionPercent = (100 / (lineDataPoints.length - 1)) * pointIdx;
337
+ const yPositionPercent = yValue === null
338
+ ? null
339
+ : 100 - calcPercentageInRange(yValue, this.yIntervals[this.yIntervals.length - 1], this.yIntervals[0]);
340
+ // add space between first points and y-axis
341
+ if (pointIdx === 0) {
342
+ xPositionPercent +=
343
+ this.plotAreaEl && this.plotAreaEl.clientWidth > 0 ? (8 / this.plotAreaEl.clientWidth) * 100 : 1;
344
+ }
345
+ if (xValue === this.highlightStart && !isHighlighted) {
346
+ isHighlighted = true;
347
+ }
348
+ dataPointDetailsList.push({
349
+ lineLabel: lineLabel,
350
+ xValue: xValue,
351
+ yValue: yValue,
352
+ xPositionPercent: xPositionPercent,
353
+ yPositionPercent: yPositionPercent,
354
+ highlighted: isHighlighted,
355
+ });
356
+ // because highlight range is inclusive, disable after pushing details
357
+ if (xValue === this.highlightEnd && isHighlighted) {
358
+ isHighlighted = false;
359
+ }
360
+ });
361
+ return dataPointDetailsList;
362
+ }
363
+ toggleLineVisibility(lineIdx) {
364
+ if (this.hiddenLines.includes(lineIdx)) {
365
+ this.hiddenLines = this.hiddenLines.filter((num) => num !== lineIdx);
366
+ }
367
+ else {
368
+ this.hiddenLines.push(lineIdx);
369
+ }
370
+ forceUpdate(this.el);
371
+ }
372
+ resetDataPointFocus() {
373
+ this.popoverIndex = -1;
374
+ this.pointEls.forEach((point) => (point.tabIndex = -1));
375
+ if (this.firstVisibleLineIdx !== -1) {
376
+ const lineEl = this.lineEls[this.firstVisibleLineIdx];
377
+ const linePointEl = lineEl.querySelectorAll(".point")[0];
378
+ linePointEl.tabIndex = 0;
379
+ }
380
+ }
381
+ calcDelta(dataPoint, prevDataPoint) {
382
+ let delta;
383
+ if (dataPoint.yValue === null || prevDataPoint.yValue === null) {
384
+ // display "No data" when either of the datapoints is missing
385
+ delta = lineChartMessages.noData;
386
+ }
387
+ else if (dataPoint.yValue == prevDataPoint.yValue) {
388
+ // display "0%" if datapoints are equal
389
+ delta = "0%";
390
+ }
391
+ else if (prevDataPoint.yValue == 0) {
392
+ // display "-" for % increase if prev data point is 0, as the technical number would be infinity
393
+ delta = "-";
394
+ }
395
+ else {
396
+ const changePercent = ((dataPoint.yValue - prevDataPoint.yValue) / prevDataPoint.yValue) * 100;
397
+ const roundedPercent = Math.round(changePercent * 100) / 100;
398
+ delta = `${roundedPercent > 0 ? "+" : ""}${roundedPercent}%`;
399
+ }
400
+ return delta;
401
+ }
402
+ renderLegend() {
403
+ var _a;
404
+ const lineLabels = Object.keys(this.parsedLineData);
405
+ return (h("div", { ref: (el) => (this.legendEl = el), class: "legend" }, ((_a = this.spotlightData) === null || _a === void 0 ? void 0 : _a.label) && (h("div", { class: "legend-label" }, h("div", { class: "svg-icon svg-spotlight" }), this.spotlightData.label)), lineLabels.map((lineLabel, lineIdx) => {
406
+ const isHidden = this.hiddenLines.includes(lineIdx);
407
+ const isFaded = this.focusedLine !== -1 && this.focusedLine !== lineIdx;
408
+ 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)));
409
+ })));
410
+ }
411
+ renderVisibilityToggle(lineLabel, lineIdx, isHidden) {
412
+ return (h("wm-button", { id: `visibility-button-${lineIdx}`, class: "visibility-toggle", "label-for-identical-buttons": `${lineIdx === 0 ? lineChartMessages.getToggleButtonLabel(this.dataPointMatrix.length) : ""} ${isHidden ? globalMessages.show : globalMessages.hide} ${lineLabel} ${lineChartMessages.getToggleButtonState(isHidden)}`, "button-type": "navigational", tooltip: isHidden ? globalMessages.show : globalMessages.hide, tooltipPosition: "bottom", icon: isHidden ? "#hide" : "#show", onClick: () => this.toggleLineVisibility(lineIdx), onKeyDown: (ev) => this.handleVisibilityToggleKeydown(ev, lineIdx), onFocus: () => (this.popoverIndex = -1) }));
413
+ }
414
+ renderIcon(lineIdx) {
415
+ const { color, icon } = this.lineStyles[lineIdx];
416
+ return h("div", { style: { color: color }, class: `svg-icon svg-shape-${icon}` });
417
+ }
418
+ renderXIntervals() {
419
+ const gridStyle = {
420
+ "--columns": `.5fr repeat(${this.xIntervals.length - 2}, 1fr) .5fr`,
421
+ };
422
+ return (h("div", { class: "x-intervals", style: gridStyle }, this.xIntervals.map((interval) => (h("span", { class: `x-interval ${this.displayedXIntervals.includes(interval) ? "" : "hidden"}` }, interval)))));
423
+ }
424
+ renderYIntervals() {
425
+ return (h("div", { ref: (el) => (this.yIntervalsEl = el), class: "y-intervals" }, this.yIntervals.map((yInterval, idx) => {
426
+ const percentFromTop = (100 / (this.yIntervals.length - 1)) * idx;
427
+ return (h("span", { class: "y-interval", style: { top: `${percentFromTop}%` } }, this.formatYAxisIntervalLabel(yInterval)));
428
+ })));
429
+ }
430
+ renderData() {
431
+ return this.dataPointMatrix.map((_, lineIdx) => {
432
+ let focusState = this.focusedLine === lineIdx ? "focused" : "faded";
433
+ const isHidden = this.hiddenLines.includes(lineIdx);
434
+ return (h("div", { class: `line ${this.focusedLine !== -1 ? focusState : ""} ${isHidden ? "hidden" : ""}` }, this.renderLines(lineIdx), this.renderPoints(lineIdx)));
435
+ });
436
+ }
437
+ renderPoints(lineIdx) {
438
+ const lineDataPoints = this.dataPointMatrix[lineIdx];
439
+ return (h("div", { class: "line-icons" }, lineDataPoints.map((dataPoint, pointIdx) => {
440
+ var _a;
441
+ const { lineLabel, xValue, yValue, xPositionPercent, yPositionPercent, highlighted } = dataPoint;
442
+ if (yValue !== null) {
443
+ const { color, icon } = this.lineStyles[lineIdx];
444
+ const firstPointTabIndex = lineIdx === 0 && pointIdx === 0 ? 0 : undefined;
445
+ const iconStyle = {
446
+ color: color,
447
+ "--xPosition": xPositionPercent + "%",
448
+ "--yPosition": yPositionPercent + "%",
449
+ };
450
+ let ariaLabel = `${lineLabel} ${highlighted ? this.highlightQualifier : ""} ${this.xAxisLabel} ${xValue + (this.parsedUnits[0] ? this.parsedUnits[0] : "")}, ${this.yAxisLabel}: ${this.formatDisplayYValue(yValue)}${this.parsedUnits[1] ? this.parsedUnits[1] : ""}`;
451
+ if (this.showDeltas && pointIdx > 0) {
452
+ const prevDataPoint = lineDataPoints[pointIdx - 1];
453
+ const changeSinceMessage = lineChartMessages.getChangeSince(prevDataPoint.xValue);
454
+ ariaLabel += `, ${changeSinceMessage} ${this.calcDelta(dataPoint, prevDataPoint)}`;
455
+ }
456
+ if (((_a = this.spotlightData) === null || _a === void 0 ? void 0 : _a.label) && this.spotlightYValue !== undefined) {
457
+ ariaLabel += `, ${this.spotlightData.label} ${this.xAxisLabel} ${this.spotlightXValue + (this.parsedUnits[0] ? this.parsedUnits[0] : "")}, ${this.yAxisLabel}: ${this.formatDisplayYValue(this.spotlightYValue)}${this.parsedUnits[1] ? this.parsedUnits[1] : ""}`;
458
+ }
459
+ return (h("span", { id: `${lineLabel}-${pointIdx}`, role: "img", "aria-label": ariaLabel, tabIndex: firstPointTabIndex, class: `point svg-icon svg-shape-${icon}`, style: iconStyle, "data-lineidx": lineIdx, "data-pointidx": pointIdx, "data-xvalue": xValue, onKeyDown: (ev) => this.handleDataPointKeydown(ev), onFocus: () => (this.popoverIndex = pointIdx), onClick: (ev) => this.focusDataPointByEl(ev.target), onMouseEnter: () => (this.popoverIndex = pointIdx) }, h("span", { class: `point-bg svg-icon svg-shape-${icon}` })));
460
+ }
461
+ })));
462
+ }
463
+ renderLines(lineIdx) {
464
+ const lineDataPoints = this.dataPointMatrix[lineIdx];
465
+ return (h("svg", { class: "line-svg" }, lineDataPoints.map((dataPoint, pointIdx) => {
466
+ const shouldDraw = dataPoint.yValue !== null &&
467
+ pointIdx !== lineDataPoints.length - 1 &&
468
+ lineDataPoints[pointIdx + 1].yValue !== null;
469
+ if (shouldDraw) {
470
+ const { color } = this.lineStyles[lineIdx];
471
+ const { xPositionPercent: xStart, yPositionPercent: yStart } = dataPoint;
472
+ const { xPositionPercent: xEnd, yPositionPercent: yEnd } = lineDataPoints[pointIdx + 1];
473
+ return (h("line", { x1: xStart + "%", y1: yStart + "%", x2: xEnd + "%", y2: yEnd + "%", stroke: color, "stroke-width": "2px" }));
474
+ }
475
+ })));
476
+ }
477
+ renderSpotlight() {
478
+ if (!this.spotlightData || !this.spotlightXValue || this.spotlightYValue === undefined)
479
+ return "";
480
+ const yPositionPercent = 100 -
481
+ calcPercentageInRange(this.spotlightYValue, this.yIntervals[this.yIntervals.length - 1], this.yIntervals[0]);
482
+ const xIndex = this.xIntervals.indexOf(this.spotlightXValue);
483
+ const iconXPositionPercent = xIndex >= 0 ? (100 / (this.xIntervals.length - 1)) * xIndex : null;
484
+ return (h("div", { class: "spotlight", style: { "--yPosition": yPositionPercent + "%" } }, this.spotlightXValue && (h("div", { class: "spotlight-icon", style: { "--xPosition": iconXPositionPercent + "%" } }))));
485
+ }
486
+ renderHoverAreas() {
487
+ const hoverAreaStyle = { "--columns": `.5fr repeat(${this.xIntervals.length - 2}, 1fr) .5fr` };
488
+ return (h("div", { class: "hover-area-wrapper", style: hoverAreaStyle, onMouseLeave: () => (this.popoverIndex = -1) }, this.xIntervals.map((_, idx) => (h("div", { onMouseEnter: () => (this.popoverIndex = idx) })))));
489
+ }
490
+ renderPopover() {
491
+ const hasPopoverData = this.popoverData &&
492
+ this.popoverData[this.popoverIndex] &&
493
+ this.plotAreaEl.querySelector(`.point[data-xvalue="${this.dataPointMatrix[0][this.popoverIndex].xValue}"]`);
494
+ if (!hasPopoverData) {
495
+ return "";
496
+ }
497
+ const displayedPopoverData = this.popoverData[this.popoverIndex];
498
+ const xPosition = displayedPopoverData[0].xPositionPercent;
499
+ const yPositions = displayedPopoverData
500
+ .map((point) => point.yPositionPercent)
501
+ .filter((yPosition) => yPosition !== null);
502
+ const averageYPosition = yPositions.reduce((acc, cur) => acc + cur, 0) / yPositions.length;
503
+ const referencePointEl = this.plotAreaEl.querySelector(`.point[data-xvalue="${this.dataPointMatrix[0][this.popoverIndex].xValue}"]`);
504
+ const componentBoundingClientRect = this.el.getBoundingClientRect();
505
+ const referencePointBoundingClientRect = referencePointEl.getBoundingClientRect();
506
+ const rightSpaceAvailable = componentBoundingClientRect.right - referencePointBoundingClientRect.right;
507
+ const leftSpaceAvailable = referencePointBoundingClientRect.left - componentBoundingClientRect.left;
508
+ const hasRoomRight = rightSpaceAvailable >= (this.popoverEl ? Math.min(this.popoverEl.clientWidth, 400) : 400);
509
+ const hasRoomLeft = leftSpaceAvailable >= (this.popoverEl ? Math.min(this.popoverEl.clientWidth, 400) : 400);
510
+ const percentMargin = (8 / this.plotAreaEl.clientWidth) * 100;
511
+ let popoverStyle = {
512
+ "--leftPosition": hasRoomRight ? xPosition + percentMargin + "%" : "unset",
513
+ "--rightPosition": hasRoomLeft ? 100 - xPosition + percentMargin + "%" : "unset",
514
+ "--topPosition": averageYPosition + "%",
515
+ transform: "translateY(-50%)", // vertically center for averageYPosition
516
+ };
517
+ if (!hasRoomLeft && !hasRoomRight) {
518
+ // if there's not enough room to the left and right, position "detached" from the data points towards the top of the chart
519
+ const displaceLeft = `0px - ${this.labelWidth} - 20px - ${this.yIntervalsEl.clientWidth + "px"} + ${this.el.scrollLeft + "px"} + 2px`;
520
+ popoverStyle = {
521
+ "--leftPosition": `0%`,
522
+ "--topPosition": "0%",
523
+ maxWidth: Math.min(this.el.clientWidth - 2, 400) + "px", // take up no more max-width than is visually available
524
+ transform: `translateX(calc(${displaceLeft}))`, // align with left edge of component
525
+ };
526
+ }
527
+ 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.popoverIndex > 0 && (h("div", { class: "comparison-title" }, lineChartMessages.getChangeSince(this.popoverData[this.popoverIndex - 1][0].xValue))), this.renderPopoverTable()));
528
+ }
529
+ renderPopoverTable() {
530
+ var _a;
531
+ const displayedPopoverData = this.popoverData[this.popoverIndex];
532
+ const displayedSpotlightYValue = this.spotlightYValue !== undefined ? this.formatDisplayYValue(this.spotlightYValue) : "";
533
+ return (h("table", { class: "popover-table" }, this.spotlightXValue === displayedPopoverData[0].xValue && (h("tr", { class: "popover-row" }, h("td", null, h("div", { class: "svg-icon svg-spotlight" })), h("td", { class: "row-label" }, (_a = this.spotlightData) === null || _a === void 0 ? void 0 : _a.label), h("td", { class: "row-value" }, displayedSpotlightYValue, displayedSpotlightYValue !== "" && this.parsedUnits[1] && (h("span", { class: "unit --y" }, this.parsedUnits[1]))))), displayedPopoverData.map((dataPoint, lineIdx) => {
534
+ if (!this.hiddenLines.includes(lineIdx)) {
535
+ const { lineLabel, yValue } = dataPoint;
536
+ const prevDataPoint = this.popoverIndex > 0 ? this.popoverData[this.popoverIndex - 1][lineIdx] : null;
537
+ const displayYValue = yValue !== null ? this.formatDisplayYValue(yValue) : null;
538
+ return (h("tr", { class: "popover-row" }, h("td", null, this.renderIcon(lineIdx)), h("td", { class: "row-label" }, lineLabel), h("td", { class: "row-value" }, displayYValue !== null && displayYValue !== void 0 ? displayYValue : lineChartMessages.noData, yValue !== null && this.parsedUnits[1] && h("span", { class: "unit --y" }, this.parsedUnits[1])), this.showDeltas && prevDataPoint && this.renderDeltas(dataPoint, prevDataPoint)));
539
+ }
540
+ })));
541
+ }
542
+ renderDeltas(dataPoint, prevDataPoint) {
543
+ const delta = this.calcDelta(dataPoint, prevDataPoint);
544
+ const deltaColor = delta.toString()[0] == "+" || delta == "-" ? "positive" : delta.toString()[0] == "-" ? "negative" : "";
545
+ return prevDataPoint && h("td", { class: `delta --${deltaColor}` }, delta);
546
+ }
547
+ renderHoverIndicator() {
548
+ const hasIndicatorData = this.dataPointMatrix.length > 0 && this.dataPointMatrix[0][this.popoverIndex];
549
+ if (!hasIndicatorData) {
550
+ return "";
551
+ }
552
+ const xPosition = this.dataPointMatrix[0][this.popoverIndex].xPositionPercent;
553
+ const indicatorStyle = { "--xPosition": xPosition + "%" };
554
+ return h("div", { class: "hover-indicator", style: indicatorStyle });
555
+ }
556
+ renderVerticalGridlines() {
557
+ var _a;
558
+ const gridlineSpacing = this.dataPointMatrix[0] && this.displayedXIntervals[1]
559
+ ? (_a = this.dataPointMatrix[0][this.xIntervals.indexOf(this.displayedXIntervals[1])]) === null || _a === void 0 ? void 0 : _a.xPositionPercent
560
+ : 0;
561
+ return (h("div", { class: `vertical-gridlines ${this.hasPartialInterval ? "" : "right-border"} ${!this.showGrid && "axis-only"}`, style: { "--gridlineSpacing": gridlineSpacing + "%" } }));
562
+ }
563
+ renderHorizontalGridlines() {
564
+ const gridlineSpacing = 100 / (this.yIntervals.length - 1);
565
+ return (h("div", { class: `horizontal-gridlines ${!this.showGrid && "axis-only"}`, style: { "--gridlineSpacing": gridlineSpacing + "%" } }));
566
+ }
567
+ renderHighlight() {
568
+ var _a, _b;
569
+ if (this.highlightStart) {
570
+ const startIdx = this.xIntervals.indexOf(this.highlightStart);
571
+ if (startIdx === -1 || !((_a = this.dataPointMatrix[0]) === null || _a === void 0 ? void 0 : _a[startIdx])) {
572
+ return null;
573
+ }
574
+ const startPercentage = this.dataPointMatrix[0][startIdx].xPositionPercent;
575
+ const endIdx = this.highlightEnd ? this.xIntervals.indexOf(this.highlightEnd) : -1;
576
+ const endPercentage = endIdx !== -1 && ((_b = this.dataPointMatrix[0]) === null || _b === void 0 ? void 0 : _b[endIdx]) ? 100 - this.dataPointMatrix[0][endIdx].xPositionPercent : 0;
577
+ const highlightStyle = { "--startPercentage": startPercentage + "%", "--endPercentage": endPercentage + "%" };
578
+ return h("div", { class: "highlight", style: highlightStyle });
579
+ }
580
+ }
581
+ render() {
582
+ return (h(Host, { key: '35db725a92a9ff0a0592550b1d9e60cc89aa1e3d', onBlur: () => this.resetDataPointFocus(), onMouseLeave: () => (this.popoverIndex = -1) }, h("div", { key: '5cd3cc1568e1694ad84569fe6e8c25da633964b2', class: "component-wrapper", role: "application", "aria-roledescription": chartMessages.interactiveChart, "aria-label": this.label, "aria-describedby": "chart-description" }, this.renderLegend(), h("div", { key: 'c1e39c43d3e9ed8c145236b7170cd9fb42c5a133', class: "chart-wrapper" }, h("div", { key: 'e219a208fb12a278821451dcdad527f2a042e970', class: "chart-label --y-axis", style: { "--labelWidth": this.labelWidth } }, this.yAxisLabel, this.parsedUnits[1] && ` (${this.parsedUnits[1]})`), this.renderYIntervals(), h("div", { key: '2e53bce4063a092b5e779f1248a172c59b9e60b6', ref: (el) => (this.plotAreaEl = el), class: "plot-area" }, this.renderVerticalGridlines(), this.renderHorizontalGridlines(), this.renderHighlight(), this.renderData(), this.renderHoverAreas(), this.renderSpotlight()), this.popoverIndex !== -1 && this.renderHoverIndicator(), this.popoverIndex !== -1 && this.renderPopover(), this.renderXIntervals(), h("div", { key: 'a277e88668b605f236950d9c645a87432fff62b9', class: "chart-label --x-axis" }, this.xAxisLabel, this.parsedUnits[0] && ` (${this.parsedUnits[0]})`)), h("div", { key: '17785df43feac141c7b1fb7d3716054d48a90ec1', id: "chart-description", class: "sr-only" }, `${lineChartMessages.instructions} ${this.description}`), h("div", { key: 'c3bdd0bbeaac310fba9dfe990fa0c7f1b3f5cdfa', ref: (el) => (this.liveRegionEl = el), "aria-live": "polite", class: "sr-only" }, this.announcement))));
583
+ }
584
+ static get is() { return "wm-line-chart"; }
585
+ static get encapsulation() { return "shadow"; }
586
+ static get originalStyleUrls() {
587
+ return {
588
+ "$": ["wm-line-chart.scss"]
589
+ };
590
+ }
591
+ static get styleUrls() {
592
+ return {
593
+ "$": ["wm-line-chart.css"]
594
+ };
595
+ }
596
+ static get properties() {
597
+ return {
598
+ "label": {
599
+ "type": "string",
600
+ "mutable": false,
601
+ "complexType": {
602
+ "original": "string",
603
+ "resolved": "string",
604
+ "references": {}
605
+ },
606
+ "required": true,
607
+ "optional": false,
608
+ "docs": {
609
+ "tags": [{
610
+ "name": "description",
611
+ "text": "Accessible label for the chart, used as the `aria-label` on the chart\ncontainer. Required for accessibility."
612
+ }, {
613
+ "name": "required",
614
+ "text": undefined
615
+ }],
616
+ "text": ""
617
+ },
618
+ "attribute": "label",
619
+ "reflect": false
620
+ },
621
+ "description": {
622
+ "type": "string",
623
+ "mutable": false,
624
+ "complexType": {
625
+ "original": "string",
626
+ "resolved": "string",
627
+ "references": {}
628
+ },
629
+ "required": false,
630
+ "optional": false,
631
+ "docs": {
632
+ "tags": [{
633
+ "name": "description",
634
+ "text": "Accessible description appended to the keyboard instructions read to screen\nreaders. Recommended \u2014 use it to summarize the key takeaway of the chart."
635
+ }, {
636
+ "name": "default",
637
+ "text": "\"\""
638
+ }],
639
+ "text": ""
640
+ },
641
+ "attribute": "description",
642
+ "reflect": false,
643
+ "defaultValue": "\"\""
644
+ },
645
+ "xAxisLabel": {
646
+ "type": "string",
647
+ "mutable": false,
648
+ "complexType": {
649
+ "original": "string",
650
+ "resolved": "string",
651
+ "references": {}
652
+ },
653
+ "required": true,
654
+ "optional": false,
655
+ "docs": {
656
+ "tags": [{
657
+ "name": "description",
658
+ "text": "Label for the x-axis (the time dimension, e.g. `\"Term\"`, `\"Academic Year\"`).\nRequired for accessibility."
659
+ }, {
660
+ "name": "required",
661
+ "text": undefined
662
+ }],
663
+ "text": ""
664
+ },
665
+ "attribute": "x-axis-label",
666
+ "reflect": false
667
+ },
668
+ "yAxisLabel": {
669
+ "type": "string",
670
+ "mutable": false,
671
+ "complexType": {
672
+ "original": "string",
673
+ "resolved": "string",
674
+ "references": {}
675
+ },
676
+ "required": true,
677
+ "optional": false,
678
+ "docs": {
679
+ "tags": [{
680
+ "name": "description",
681
+ "text": "Label for the y-axis (the measured value, e.g. `\"Enrollment\"`, `\"Score\"`).\nRequired for accessibility."
682
+ }, {
683
+ "name": "required",
684
+ "text": undefined
685
+ }],
686
+ "text": ""
687
+ },
688
+ "attribute": "y-axis-label",
689
+ "reflect": false
690
+ },
691
+ "showGrid": {
692
+ "type": "boolean",
693
+ "mutable": false,
694
+ "complexType": {
695
+ "original": "boolean",
696
+ "resolved": "boolean",
697
+ "references": {}
698
+ },
699
+ "required": false,
700
+ "optional": false,
701
+ "docs": {
702
+ "tags": [{
703
+ "name": "description",
704
+ "text": "When true, renders horizontal and vertical grid lines."
705
+ }, {
706
+ "name": "default",
707
+ "text": "true"
708
+ }],
709
+ "text": ""
710
+ },
711
+ "attribute": "show-grid",
712
+ "reflect": false,
713
+ "defaultValue": "true"
714
+ },
715
+ "lineData": {
716
+ "type": "string",
717
+ "mutable": true,
718
+ "complexType": {
719
+ "original": "string | LineChartData",
720
+ "resolved": "string | { [lineLabel: string]: Line; }",
721
+ "references": {
722
+ "LineChartData": {
723
+ "location": "import",
724
+ "path": "../../../global/interfaces",
725
+ "id": "src/global/interfaces.ts::LineChartData"
726
+ }
727
+ }
728
+ },
729
+ "required": true,
730
+ "optional": false,
731
+ "docs": {
732
+ "tags": [{
733
+ "name": "description",
734
+ "text": "Chart data. Each key is a line label (shown in the legend); each value is an\nobject mapping x-axis values (strings) to y-axis values (numbers or `null` for missing\ndata points). Can be set as a JSON string (HTML attribute) or as an object (JavaScript).\nExample: `{ \"Biology\": { \"2022\u201323\": 310, \"2023\u201324\": 420 } }`."
735
+ }, {
736
+ "name": "required",
737
+ "text": undefined
738
+ }],
739
+ "text": ""
740
+ },
741
+ "attribute": "line-data",
742
+ "reflect": false
743
+ },
744
+ "units": {
745
+ "type": "string",
746
+ "mutable": false,
747
+ "complexType": {
748
+ "original": "string",
749
+ "resolved": "string",
750
+ "references": {}
751
+ },
752
+ "required": false,
753
+ "optional": false,
754
+ "docs": {
755
+ "tags": [{
756
+ "name": "description",
757
+ "text": "Two comma-separated unit labels for the x and y axes, shown in parentheses\nafter axis labels and inside popovers. Use `null` for no unit.\nExample: `\"null,students\"` or `\"semester,percent\"`."
758
+ }, {
759
+ "name": "default",
760
+ "text": "\"null,null\""
761
+ }],
762
+ "text": ""
763
+ },
764
+ "attribute": "units",
765
+ "reflect": false,
766
+ "defaultValue": "\"null,null\""
767
+ },
768
+ "labelWidth": {
769
+ "type": "string",
770
+ "mutable": false,
771
+ "complexType": {
772
+ "original": "string",
773
+ "resolved": "string",
774
+ "references": {}
775
+ },
776
+ "required": false,
777
+ "optional": false,
778
+ "docs": {
779
+ "tags": [{
780
+ "name": "description",
781
+ "text": "CSS width of the y-axis interval label column."
782
+ }, {
783
+ "name": "default",
784
+ "text": "\"120px\""
785
+ }],
786
+ "text": ""
787
+ },
788
+ "attribute": "label-width",
789
+ "reflect": false,
790
+ "defaultValue": "\"120px\""
791
+ },
792
+ "highlightQualifier": {
793
+ "type": "string",
794
+ "mutable": false,
795
+ "complexType": {
796
+ "original": "string",
797
+ "resolved": "string",
798
+ "references": {}
799
+ },
800
+ "required": false,
801
+ "optional": false,
802
+ "docs": {
803
+ "tags": [{
804
+ "name": "description",
805
+ "text": "Screen reader qualifier appended to the `aria-label` of data points that fall\nwithin a highlighted section (e.g. `\"projected\"`)."
806
+ }],
807
+ "text": ""
808
+ },
809
+ "attribute": "highlight-qualifier",
810
+ "reflect": false,
811
+ "defaultValue": "lineChartMessages.highlightQualifier"
812
+ },
813
+ "highlightStart": {
814
+ "type": "string",
815
+ "mutable": false,
816
+ "complexType": {
817
+ "original": "string",
818
+ "resolved": "string | undefined",
819
+ "references": {}
820
+ },
821
+ "required": false,
822
+ "optional": true,
823
+ "docs": {
824
+ "tags": [{
825
+ "name": "description",
826
+ "text": "x-axis value where the highlighted background area begins. If used without\n`highlight-end`, the highlight extends to the right edge of the chart."
827
+ }],
828
+ "text": ""
829
+ },
830
+ "attribute": "highlight-start",
831
+ "reflect": false
832
+ },
833
+ "highlightEnd": {
834
+ "type": "string",
835
+ "mutable": false,
836
+ "complexType": {
837
+ "original": "string",
838
+ "resolved": "string | undefined",
839
+ "references": {}
840
+ },
841
+ "required": false,
842
+ "optional": true,
843
+ "docs": {
844
+ "tags": [{
845
+ "name": "description",
846
+ "text": "x-axis value where the highlighted background area ends."
847
+ }],
848
+ "text": ""
849
+ },
850
+ "attribute": "highlight-end",
851
+ "reflect": false
852
+ },
853
+ "visibilityToggles": {
854
+ "type": "boolean",
855
+ "mutable": false,
856
+ "complexType": {
857
+ "original": "boolean",
858
+ "resolved": "boolean",
859
+ "references": {}
860
+ },
861
+ "required": false,
862
+ "optional": false,
863
+ "docs": {
864
+ "tags": [{
865
+ "name": "description",
866
+ "text": "When true, renders hide/show toggle buttons in the legend, allowing users to\nhide individual lines."
867
+ }, {
868
+ "name": "default",
869
+ "text": "false"
870
+ }],
871
+ "text": ""
872
+ },
873
+ "attribute": "visibility-toggles",
874
+ "reflect": false,
875
+ "defaultValue": "false"
876
+ },
877
+ "showDeltas": {
878
+ "type": "boolean",
879
+ "mutable": false,
880
+ "complexType": {
881
+ "original": "boolean",
882
+ "resolved": "boolean",
883
+ "references": {}
884
+ },
885
+ "required": false,
886
+ "optional": false,
887
+ "docs": {
888
+ "tags": [{
889
+ "name": "description",
890
+ "text": "When true, a \"Change since [previous x-value]\" column appears in each data\npoint's popover, showing the percentage change from the preceding data point."
891
+ }, {
892
+ "name": "default",
893
+ "text": "false"
894
+ }],
895
+ "text": ""
896
+ },
897
+ "attribute": "show-deltas",
898
+ "reflect": false,
899
+ "defaultValue": "false"
900
+ },
901
+ "yRange": {
902
+ "type": "string",
903
+ "mutable": false,
904
+ "complexType": {
905
+ "original": "string",
906
+ "resolved": "string | undefined",
907
+ "references": {}
908
+ },
909
+ "required": false,
910
+ "optional": true,
911
+ "docs": {
912
+ "tags": [{
913
+ "name": "description",
914
+ "text": "Comma-separated numbers that explicitly define the y-axis tick values.\nOverrides automatic range and interval calculation.\nExample: `\"0,100,200,300\"`."
915
+ }],
916
+ "text": ""
917
+ },
918
+ "attribute": "y-range",
919
+ "reflect": false
920
+ },
921
+ "spotlightData": {
922
+ "type": "unknown",
923
+ "mutable": false,
924
+ "complexType": {
925
+ "original": "SpotlightData",
926
+ "resolved": "SpotlightData | undefined",
927
+ "references": {
928
+ "SpotlightData": {
929
+ "location": "import",
930
+ "path": "../../../global/interfaces",
931
+ "id": "src/global/interfaces.ts::SpotlightData"
932
+ }
933
+ }
934
+ },
935
+ "required": false,
936
+ "optional": true,
937
+ "docs": {
938
+ "tags": [{
939
+ "name": "description",
940
+ "text": "Adds a reference data point and a spanning horizontal line across the chart.\nMust include a `label` key and exactly one x-value key mapping to the y-value.\nExample: `{ label: \"Target\", \"2024\u201325\": 500 }`."
941
+ }],
942
+ "text": ""
943
+ }
944
+ },
945
+ "decimalPlaces": {
946
+ "type": "number",
947
+ "mutable": false,
948
+ "complexType": {
949
+ "original": "number",
950
+ "resolved": "number | undefined",
951
+ "references": {}
952
+ },
953
+ "required": false,
954
+ "optional": true,
955
+ "docs": {
956
+ "tags": [{
957
+ "name": "description",
958
+ "text": "Number of decimal places for data point values and y-axis interval labels.\nIf omitted, the component infers an appropriate number from the data."
959
+ }],
960
+ "text": ""
961
+ },
962
+ "attribute": "decimal-places",
963
+ "reflect": false
964
+ }
965
+ };
966
+ }
967
+ static get states() {
968
+ return {
969
+ "parsedLineData": {},
970
+ "popoverIndex": {},
971
+ "focusedLine": {},
972
+ "hiddenLines": {},
973
+ "isTabbing": {},
974
+ "announcement": {}
975
+ };
976
+ }
977
+ static get elementRef() { return "el"; }
978
+ static get watchers() {
979
+ return [{
980
+ "propName": "lineData",
981
+ "methodName": "parseData"
982
+ }];
983
+ }
984
+ static get listeners() {
985
+ return [{
986
+ "name": "wmUserIsTabbing",
987
+ "method": "toggleTabbingOn",
988
+ "target": "window",
989
+ "capture": false,
990
+ "passive": false
991
+ }, {
992
+ "name": "wmUserIsNotTabbing",
993
+ "method": "toggleTabbingOff",
994
+ "target": "window",
995
+ "capture": false,
996
+ "passive": false
997
+ }];
998
+ }
999
+ }