@watermarkinsights/ripple 4.3.0 → 4.4.0-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 (371) hide show
  1. package/dist/cjs/chartFunctions-cecf8134.js +600 -0
  2. package/dist/cjs/{functions-91da05e9.js → functions-4208c444.js} +362 -362
  3. package/dist/cjs/{global-20d48c6c.js → global-bd289a67.js} +24 -24
  4. package/dist/cjs/{index-fae02cd7.js → index-f8ef86de.js} +436 -150
  5. package/dist/cjs/interfaces-ad9e80a6.js +38 -0
  6. package/dist/cjs/intl-3fafc6d1.js +179 -0
  7. package/dist/cjs/loader.cjs.js +4 -13
  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 +4 -7
  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 +462 -462
  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 +255 -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 +257 -254
  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 +382 -381
  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 +1 -2
  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 +731 -731
  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 +454 -452
  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 +943 -939
  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 +1 -2
  67. package/dist/collection/components/wm-datepicker/wm-datepicker.e2e.js +359 -359
  68. package/dist/collection/components/wm-datepicker/wm-datepicker.js +415 -413
  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 +446 -436
  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 +299 -296
  86. package/dist/collection/components/wm-modal/wm-modal.spec.js +22 -22
  87. package/dist/collection/components/wm-navigation/wm-navigation-hamburger.css +0 -1
  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 +0 -2
  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 +119 -118
  97. package/dist/collection/components/wm-navigator/wm-navigator.e2e.js +180 -180
  98. package/dist/collection/components/wm-navigator/wm-navigator.js +458 -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 +474 -463
  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 +415 -414
  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 +967 -966
  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 +209 -207
  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 +190 -188
  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 +2 -4
  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 +236 -234
  124. package/dist/collection/components/wm-timepicker/wm-timepicker.css +1 -2
  125. package/dist/collection/components/wm-timepicker/wm-timepicker.e2e.js +147 -147
  126. package/dist/collection/components/wm-timepicker/wm-timepicker.js +531 -527
  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 +209 -208
  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 +423 -422
  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-23173fce.js +584 -0
  147. package/dist/esm/{functions-5afd09f4.js → functions-d0e70094.js} +362 -362
  148. package/dist/esm/{global-d4a9e80e.js → global-4569c7b8.js} +24 -24
  149. package/dist/esm/{index-7e11ea42.js → index-f164fbca.js} +436 -150
  150. package/dist/esm/interfaces-9b75fb61.js +35 -0
  151. package/dist/esm/intl-05c9e0c9.js +174 -0
  152. package/dist/esm/loader.js +5 -14
  153. package/dist/esm/priv-chart-popover.entry.js +85 -85
  154. package/dist/esm/priv-datepicker.entry.js +637 -637
  155. package/dist/esm/priv-navigator-button.entry.js +18 -18
  156. package/dist/esm/priv-navigator-item.entry.js +21 -21
  157. package/dist/esm/ripple.js +5 -8
  158. package/dist/esm/wm-action-menu_2.entry.js +314 -314
  159. package/dist/esm/wm-button.entry.js +174 -174
  160. package/dist/esm/wm-chart-slice.entry.js +17 -17
  161. package/dist/esm/wm-chart.entry.js +164 -164
  162. package/dist/esm/wm-datepicker.entry.js +160 -160
  163. package/dist/esm/wm-file-list.entry.js +10 -10
  164. package/dist/esm/wm-file.entry.js +178 -178
  165. package/dist/esm/wm-input.entry.js +102 -102
  166. package/dist/esm/wm-line-chart.entry.js +462 -462
  167. package/dist/esm/wm-modal-footer.entry.js +27 -27
  168. package/dist/esm/wm-modal-header.entry.js +21 -21
  169. package/dist/esm/wm-modal.entry.js +92 -92
  170. package/dist/esm/wm-navigation_3.entry.js +179 -179
  171. package/dist/esm/wm-navigator.entry.js +255 -251
  172. package/dist/esm/wm-option_2.entry.js +710 -710
  173. package/dist/esm/wm-pagination.entry.js +169 -169
  174. package/dist/esm/wm-progress-indicator_3.entry.js +151 -151
  175. package/dist/esm/wm-search.entry.js +192 -192
  176. package/dist/esm/wm-snackbar.entry.js +114 -114
  177. package/dist/esm/wm-tab-item_3.entry.js +247 -247
  178. package/dist/esm/wm-tag-input.entry.js +849 -849
  179. package/dist/esm/wm-tag-option.entry.js +33 -33
  180. package/dist/esm/wm-timepicker.entry.js +270 -270
  181. package/dist/esm/wm-toggletip.entry.js +99 -99
  182. package/dist/esm/wm-uploader.entry.js +198 -198
  183. package/dist/esm/wm-wrapper.entry.js +12 -12
  184. package/dist/esm-es5/chartFunctions-23173fce.js +1 -0
  185. package/dist/esm-es5/functions-d0e70094.js +1 -0
  186. package/dist/esm-es5/global-4569c7b8.js +1 -0
  187. package/dist/esm-es5/index-f164fbca.js +2 -0
  188. package/dist/esm-es5/{intl-e2da750a.js → intl-05c9e0c9.js} +1 -1
  189. package/dist/esm-es5/loader.js +1 -1
  190. package/dist/esm-es5/priv-chart-popover.entry.js +1 -1
  191. package/dist/esm-es5/priv-datepicker.entry.js +1 -1
  192. package/dist/esm-es5/priv-navigator-button.entry.js +1 -1
  193. package/dist/esm-es5/priv-navigator-item.entry.js +1 -1
  194. package/dist/esm-es5/ripple.js +1 -1
  195. package/dist/esm-es5/wm-action-menu_2.entry.js +1 -1
  196. package/dist/esm-es5/wm-button.entry.js +1 -1
  197. package/dist/esm-es5/wm-chart-slice.entry.js +1 -1
  198. package/dist/esm-es5/wm-chart.entry.js +1 -1
  199. package/dist/esm-es5/wm-datepicker.entry.js +1 -1
  200. package/dist/esm-es5/wm-file-list.entry.js +1 -1
  201. package/dist/esm-es5/wm-file.entry.js +1 -1
  202. package/dist/esm-es5/wm-input.entry.js +1 -1
  203. package/dist/esm-es5/wm-line-chart.entry.js +1 -1
  204. package/dist/esm-es5/wm-modal-footer.entry.js +1 -1
  205. package/dist/esm-es5/wm-modal-header.entry.js +1 -1
  206. package/dist/esm-es5/wm-modal.entry.js +1 -1
  207. package/dist/esm-es5/wm-navigation_3.entry.js +1 -1
  208. package/dist/esm-es5/wm-navigator.entry.js +1 -1
  209. package/dist/esm-es5/wm-option_2.entry.js +1 -1
  210. package/dist/esm-es5/wm-pagination.entry.js +1 -1
  211. package/dist/esm-es5/wm-progress-indicator_3.entry.js +1 -1
  212. package/dist/esm-es5/wm-search.entry.js +1 -1
  213. package/dist/esm-es5/wm-snackbar.entry.js +1 -1
  214. package/dist/esm-es5/wm-tab-item_3.entry.js +1 -1
  215. package/dist/esm-es5/wm-tag-input.entry.js +1 -1
  216. package/dist/esm-es5/wm-tag-option.entry.js +1 -1
  217. package/dist/esm-es5/wm-timepicker.entry.js +1 -1
  218. package/dist/esm-es5/wm-toggletip.entry.js +1 -1
  219. package/dist/esm-es5/wm-uploader.entry.js +1 -1
  220. package/dist/esm-es5/wm-wrapper.entry.js +1 -1
  221. package/dist/loader/index.d.ts +1 -1
  222. package/dist/ripple/p-028ef6db.system.entry.js +1 -0
  223. package/dist/ripple/{p-863e737a.js → p-05d4e49b.js} +1 -1
  224. package/dist/ripple/{p-a1e95b05.system.entry.js → p-06776596.system.entry.js} +1 -1
  225. package/dist/ripple/{p-622a7791.system.entry.js → p-067d7922.system.entry.js} +1 -1
  226. package/dist/ripple/p-09d62ddd.entry.js +1 -0
  227. package/dist/ripple/{p-f30839a1.system.entry.js → p-0ecbf569.system.entry.js} +1 -1
  228. package/dist/ripple/p-0fe97e85.system.js +2 -0
  229. package/dist/ripple/{p-24b08e1f.js → p-13ca30d8.js} +1 -1
  230. package/dist/ripple/{p-8f3f903f.system.js → p-1402cfa2.system.js} +1 -1
  231. package/dist/ripple/p-1453ea51.system.entry.js +1 -0
  232. package/dist/ripple/{p-6abb903c.entry.js → p-153701f9.entry.js} +1 -1
  233. package/dist/ripple/p-1cc91907.system.js +1 -0
  234. package/dist/ripple/{p-ad37cdfd.entry.js → p-1d8b0039.entry.js} +1 -1
  235. package/dist/ripple/{p-d0f1b8c4.system.entry.js → p-1fa2a756.system.entry.js} +1 -1
  236. package/dist/ripple/{p-a52c5a1c.entry.js → p-25446670.entry.js} +1 -1
  237. package/dist/ripple/{p-1283e85d.entry.js → p-27f47edc.entry.js} +1 -1
  238. package/dist/ripple/{p-32b1126c.system.entry.js → p-28e4583c.system.entry.js} +1 -1
  239. package/dist/ripple/{p-a5b23781.system.entry.js → p-2c4f312d.system.entry.js} +1 -1
  240. package/dist/ripple/p-30b17818.system.entry.js +1 -0
  241. package/dist/ripple/{p-0631be01.system.entry.js → p-3446852f.system.entry.js} +1 -1
  242. package/dist/ripple/{p-ae674a54.entry.js → p-350fe5da.entry.js} +1 -1
  243. package/dist/ripple/{p-d04ba5f8.system.entry.js → p-3583d113.system.entry.js} +1 -1
  244. package/dist/ripple/{p-cbd8a60b.system.entry.js → p-361cc8fc.system.entry.js} +1 -1
  245. package/dist/ripple/{p-7529706d.entry.js → p-372faf33.entry.js} +1 -1
  246. package/dist/ripple/{p-19773c40.entry.js → p-3a070f35.entry.js} +1 -1
  247. package/dist/ripple/{p-c7b5ac39.js → p-3af72848.js} +1 -1
  248. package/dist/ripple/{p-c41603e6.entry.js → p-42ebfcfa.entry.js} +1 -1
  249. package/dist/ripple/{p-13594c2e.entry.js → p-43e2a49a.entry.js} +1 -1
  250. package/dist/ripple/{p-ed942b42.entry.js → p-49118468.entry.js} +1 -1
  251. package/dist/ripple/p-49c85d1a.system.js +1 -0
  252. package/dist/ripple/p-4de51706.js +2 -0
  253. package/dist/ripple/{p-3c80bf67.entry.js → p-58174f4e.entry.js} +1 -1
  254. package/dist/ripple/{p-c5e8f8a5.system.entry.js → p-5a4d9897.system.entry.js} +1 -1
  255. package/dist/ripple/{p-e3f0b57f.system.entry.js → p-5ac980e2.system.entry.js} +1 -1
  256. package/dist/ripple/{p-3becce62.system.entry.js → p-633cd89a.system.entry.js} +1 -1
  257. package/dist/ripple/{p-1205fdc1.entry.js → p-63f75d43.entry.js} +1 -1
  258. package/dist/ripple/{p-90ea7e3a.system.entry.js → p-67d48c33.system.entry.js} +1 -1
  259. package/dist/ripple/{p-8ef87907.entry.js → p-6caaf85f.entry.js} +1 -1
  260. package/dist/ripple/{p-935513f8.entry.js → p-6cf7a34a.entry.js} +1 -1
  261. package/dist/ripple/p-73289c2c.system.js +1 -0
  262. package/dist/ripple/{p-c76bbedf.system.entry.js → p-7a8816d9.system.entry.js} +1 -1
  263. package/dist/ripple/{p-8ea68cb3.system.entry.js → p-7e56da2e.system.entry.js} +1 -1
  264. package/dist/ripple/{p-deb4f5a2.entry.js → p-7e8daaac.entry.js} +1 -1
  265. package/dist/ripple/p-88406560.system.entry.js +1 -0
  266. package/dist/ripple/{p-84a7e757.entry.js → p-8cace32f.entry.js} +1 -1
  267. package/dist/ripple/{p-80aef387.entry.js → p-8d4734ad.entry.js} +1 -1
  268. package/dist/ripple/p-8f76a838.system.entry.js +1 -0
  269. package/dist/ripple/p-934c1b6b.js +1 -0
  270. package/dist/ripple/{p-85f744ed.system.js → p-9fecbc8a.system.js} +1 -1
  271. package/dist/ripple/{p-b71a83e3.entry.js → p-a69c37e0.entry.js} +1 -1
  272. package/dist/ripple/{p-9288659b.entry.js → p-a82a8931.entry.js} +1 -1
  273. package/dist/ripple/p-a99b05de.system.entry.js +1 -0
  274. package/dist/ripple/{p-36049d2f.entry.js → p-aadf8c59.entry.js} +1 -1
  275. package/dist/ripple/{p-676c1089.system.entry.js → p-aba5a00e.system.entry.js} +1 -1
  276. package/dist/ripple/{p-0aecac86.entry.js → p-ad6dc751.entry.js} +1 -1
  277. package/dist/ripple/{p-0f1ff645.entry.js → p-b253d2fc.entry.js} +1 -1
  278. package/dist/ripple/p-b2ff4723.system.entry.js +1 -0
  279. package/dist/ripple/{p-a0bf5eef.entry.js → p-b452d1d7.entry.js} +1 -1
  280. package/dist/ripple/{p-1cde16a7.system.entry.js → p-b4d862e1.system.entry.js} +1 -1
  281. package/dist/ripple/{p-d496bc44.system.entry.js → p-bdd4f919.system.entry.js} +1 -1
  282. package/dist/ripple/p-c18b398c.system.js +1 -0
  283. package/dist/ripple/{p-8f8c3705.entry.js → p-c249063c.entry.js} +1 -1
  284. package/dist/ripple/p-c344a69c.entry.js +1 -0
  285. package/dist/ripple/{p-0d9f70ab.entry.js → p-c717d895.entry.js} +1 -1
  286. package/dist/ripple/{p-2e773564.system.entry.js → p-c96a5c94.system.entry.js} +1 -1
  287. package/dist/ripple/{p-15497721.system.entry.js → p-ceced3d9.system.entry.js} +1 -1
  288. package/dist/ripple/{p-d428e9bb.system.entry.js → p-d16f91e9.system.entry.js} +1 -1
  289. package/dist/ripple/{p-ff14e4ec.system.entry.js → p-d3f9d028.system.entry.js} +1 -1
  290. package/dist/ripple/{p-7962f562.entry.js → p-de349bee.entry.js} +1 -1
  291. package/dist/ripple/{p-b3c73bc9.entry.js → p-e24ddae1.entry.js} +1 -1
  292. package/dist/ripple/{p-b3e08b14.system.entry.js → p-e8b58666.system.entry.js} +1 -1
  293. package/dist/ripple/{p-a9c096b5.entry.js → p-fa87bce3.entry.js} +1 -1
  294. package/dist/ripple/ripple.esm.js +1 -1
  295. package/dist/ripple/ripple.js +16 -20
  296. package/dist/types/components/charts/chartFunctions.d.ts +13 -13
  297. package/dist/types/components/charts/priv-chart-popover/priv-chart-popover.d.ts +24 -24
  298. package/dist/types/components/charts/wm-chart/wm-chart-slice.d.ts +8 -8
  299. package/dist/types/components/charts/wm-chart/wm-chart.d.ts +39 -39
  300. package/dist/types/components/charts/wm-line-chart/wm-line-chart.d.ts +74 -74
  301. package/dist/types/components/charts/wm-progress-monitor/wm-progress-indicator.d.ts +26 -26
  302. package/dist/types/components/charts/wm-progress-monitor/wm-progress-monitor.d.ts +17 -17
  303. package/dist/types/components/charts/wm-progress-monitor/wm-progress-slice.d.ts +7 -7
  304. package/dist/types/components/wm-action-menu/wm-action-menu.d.ts +43 -43
  305. package/dist/types/components/wm-button/wm-button.d.ts +40 -40
  306. package/dist/types/components/wm-datepicker/priv-datepicker/priv-datepicker.d.ts +76 -76
  307. package/dist/types/components/wm-datepicker/wm-datepicker.d.ts +31 -31
  308. package/dist/types/components/wm-file/wm-file.d.ts +40 -40
  309. package/dist/types/components/wm-file-list/wm-file-list.d.ts +3 -3
  310. package/dist/types/components/wm-input/wm-input.d.ts +46 -46
  311. package/dist/types/components/wm-menuitem/wm-menuitem.d.ts +31 -31
  312. package/dist/types/components/wm-modal/wm-modal-footer.d.ts +11 -11
  313. package/dist/types/components/wm-modal/wm-modal-header.d.ts +7 -7
  314. package/dist/types/components/wm-modal/wm-modal.d.ts +24 -24
  315. package/dist/types/components/wm-navigation/wm-navigation-hamburger.d.ts +13 -13
  316. package/dist/types/components/wm-navigation/wm-navigation-item.d.ts +10 -10
  317. package/dist/types/components/wm-navigation/wm-navigation.d.ts +23 -23
  318. package/dist/types/components/wm-navigator/priv-navigator-button/priv-navigator-button.d.ts +7 -7
  319. package/dist/types/components/wm-navigator/priv-navigator-item/priv-navigator-item.d.ts +10 -10
  320. package/dist/types/components/wm-navigator/wm-navigator.d.ts +57 -57
  321. package/dist/types/components/wm-option/wm-option.d.ts +36 -36
  322. package/dist/types/components/wm-pagination/wm-pagination.d.ts +27 -27
  323. package/dist/types/components/wm-search/wm-search.d.ts +73 -73
  324. package/dist/types/components/wm-select/wm-select.d.ts +99 -99
  325. package/dist/types/components/wm-snackbar/wm-snackbar.d.ts +24 -24
  326. package/dist/types/components/wm-tabs/wm-tab-item/wm-tab-item.d.ts +30 -30
  327. package/dist/types/components/wm-tabs/wm-tab-list/wm-tab-list.d.ts +41 -41
  328. package/dist/types/components/wm-tabs/wm-tab-panel/wm-tab-panel.d.ts +16 -16
  329. package/dist/types/components/wm-tag-input/wm-tag-input.d.ts +114 -114
  330. package/dist/types/components/wm-tag-input/wm-tag-option/wm-tag-option.d.ts +15 -15
  331. package/dist/types/components/wm-timepicker/wm-timepicker.d.ts +48 -48
  332. package/dist/types/components/wm-toggletip/wm-toggletip.d.ts +20 -20
  333. package/dist/types/components/wm-uploader/wm-uploader.d.ts +47 -47
  334. package/dist/types/components/wm-wrapper/wm-wrapper.d.ts +4 -4
  335. package/dist/types/components.d.ts +382 -0
  336. package/dist/types/global/__mocks__/functions.d.ts +1 -1
  337. package/dist/types/global/functions.d.ts +4 -4
  338. package/dist/types/global/interfaces.d.ts +49 -49
  339. package/dist/types/global/intl.d.ts +31 -31
  340. package/dist/types/global/services/__mocks__/http-service.d.ts +1 -1
  341. package/dist/types/stencil-public-runtime.d.ts +46 -5
  342. package/package.json +1 -1
  343. package/dist/cjs/chartFunctions-2c3e010e.js +0 -600
  344. package/dist/cjs/interfaces-245d7bff.js +0 -38
  345. package/dist/cjs/intl-fa3bb4ae.js +0 -179
  346. package/dist/esm/chartFunctions-36634c04.js +0 -584
  347. package/dist/esm/interfaces-89cad2fc.js +0 -35
  348. package/dist/esm/intl-e2da750a.js +0 -174
  349. package/dist/esm/polyfills/css-shim.js +0 -1
  350. package/dist/esm-es5/chartFunctions-36634c04.js +0 -1
  351. package/dist/esm-es5/functions-5afd09f4.js +0 -1
  352. package/dist/esm-es5/global-d4a9e80e.js +0 -1
  353. package/dist/esm-es5/index-7e11ea42.js +0 -2
  354. package/dist/ripple/p-00acacbe.system.entry.js +0 -1
  355. package/dist/ripple/p-0f889b84.system.js +0 -1
  356. package/dist/ripple/p-13af8346.entry.js +0 -1
  357. package/dist/ripple/p-16363e1c.system.entry.js +0 -1
  358. package/dist/ripple/p-2a95b63f.system.entry.js +0 -1
  359. package/dist/ripple/p-30bf24f8.system.js +0 -2
  360. package/dist/ripple/p-3248c0fa.system.entry.js +0 -1
  361. package/dist/ripple/p-47c20b05.entry.js +0 -1
  362. package/dist/ripple/p-56d64283.system.entry.js +0 -1
  363. package/dist/ripple/p-5e85967a.system.js +0 -1
  364. package/dist/ripple/p-9b2034f6.js +0 -1
  365. package/dist/ripple/p-a3d07be5.system.js +0 -1
  366. package/dist/ripple/p-a6be3cca.system.entry.js +0 -1
  367. package/dist/ripple/p-aafa111a.system.js +0 -1
  368. package/dist/ripple/p-b5bedd63.js +0 -2
  369. package/dist/ripple/p-bd537299.system.entry.js +0 -1
  370. /package/dist/esm-es5/{interfaces-89cad2fc.js → interfaces-9b75fb61.js} +0 -0
  371. /package/dist/ripple/{p-c0c111fd.js → p-196eb2f3.js} +0 -0
@@ -2,614 +2,614 @@ import * as lang from "../lang/lang";
2
2
  import { createIntl, createIntlCache } from "@formatjs/intl";
3
3
  const DEFAULT_LANGUAGE = "en";
4
4
  function getBrowserLang() {
5
- const langAttr = document.documentElement.getAttribute("lang");
6
- if (!!langAttr) {
7
- return langAttr;
8
- }
9
- else if (window.navigator && window.navigator.language) {
10
- const lang = window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
11
- return lang.slice(0, 2);
12
- }
13
- else {
14
- return DEFAULT_LANGUAGE;
15
- }
5
+ const langAttr = document.documentElement.getAttribute("lang");
6
+ if (!!langAttr) {
7
+ return langAttr;
8
+ }
9
+ else if (window.navigator && window.navigator.language) {
10
+ const lang = window.navigator.languages ? window.navigator.languages[0] : window.navigator.language;
11
+ return lang.slice(0, 2);
12
+ }
13
+ else {
14
+ return DEFAULT_LANGUAGE;
15
+ }
16
16
  }
17
17
  // prevents memory leak
18
18
  const cache = createIntlCache();
19
19
  const locale = getBrowserLang();
20
20
  export const intl = createIntl({
21
- locale: locale,
22
- defaultLocale: "en",
23
- messages: lang[locale] || lang.en,
21
+ locale: locale,
22
+ defaultLocale: "en",
23
+ messages: lang[locale] || lang.en,
24
24
  }, cache);
25
25
  export function generateId() {
26
- return "wmcl-" + Math.random().toString(36).substr(2, 10);
26
+ return "wmcl-" + Math.random().toString(36).substr(2, 10);
27
27
  }
28
28
  // limits how many times a function fires
29
29
  // use when the function should run periodically, but not too often (e.g. window resize)
30
30
  export function throttle(fn, wait) {
31
- let timeout;
32
- let shouldWait = false;
33
- return function () {
34
- const context = this;
35
- if (!shouldWait) {
36
- fn.apply(context, arguments);
37
- shouldWait = true;
38
- clearTimeout(timeout);
39
- timeout = setTimeout(function () {
40
- shouldWait = false;
41
- }, wait);
42
- }
43
- };
31
+ let timeout;
32
+ let shouldWait = false;
33
+ return function () {
34
+ const context = this;
35
+ if (!shouldWait) {
36
+ fn.apply(context, arguments);
37
+ shouldWait = true;
38
+ clearTimeout(timeout);
39
+ timeout = setTimeout(function () {
40
+ shouldWait = false;
41
+ }, wait);
42
+ }
43
+ };
44
44
  }
45
45
  // waits until it hasn't been called for [timeout] ms.
46
46
  // use when the function should run only after something (event) is done firing
47
47
  export function debounce(fn, wait) {
48
- let timeout;
49
- return function () {
50
- const context = this;
51
- const functionCall = () => fn.apply(context, arguments);
52
- clearTimeout(timeout);
53
- timeout = setTimeout(functionCall, wait);
54
- };
48
+ let timeout;
49
+ return function () {
50
+ const context = this;
51
+ const functionCall = () => fn.apply(context, arguments);
52
+ clearTimeout(timeout);
53
+ timeout = setTimeout(functionCall, wait);
54
+ };
55
55
  }
56
56
  export function getTextDir() {
57
- const dir = document.querySelector("html").getAttribute("dir");
58
- return dir ? dir.toLowerCase() : "";
57
+ const dir = document.querySelector("html").getAttribute("dir");
58
+ return dir ? dir.toLowerCase() : "";
59
59
  }
60
60
  export function getPosition(el) {
61
- const coords = el.getBoundingClientRect();
62
- let x = coords.x;
63
- let y = coords.y;
64
- // Edge doesn't have x and y
65
- if (!x) {
66
- if (getTextDir() === "rtl") {
67
- x = coords.right;
68
- }
69
- else {
70
- x = coords.left;
61
+ const coords = el.getBoundingClientRect();
62
+ let x = coords.x;
63
+ let y = coords.y;
64
+ // Edge doesn't have x and y
65
+ if (!x) {
66
+ if (getTextDir() === "rtl") {
67
+ x = coords.right;
68
+ }
69
+ else {
70
+ x = coords.left;
71
+ }
72
+ y = coords.top;
71
73
  }
72
- y = coords.top;
73
- }
74
- return { x, y };
74
+ return { x, y };
75
75
  }
76
76
  export function findParentWithScrollbar(el) {
77
- while (!!el) {
78
- if (el.scrollHeight > el.clientHeight && ["scroll", "auto"].includes(window.getComputedStyle(el).overflowY)) {
79
- return el;
77
+ while (!!el) {
78
+ if (el.scrollHeight > el.clientHeight && ["scroll", "auto"].includes(window.getComputedStyle(el).overflowY)) {
79
+ return el;
80
+ }
81
+ el = el.parentElement;
80
82
  }
81
- el = el.parentElement;
82
- }
83
83
  }
84
84
  export function findParentWithHiddenOverflow(el) {
85
- while (!!el) {
86
- if (window.getComputedStyle(el).overflowY !== "visible") {
87
- return el;
85
+ while (!!el) {
86
+ if (window.getComputedStyle(el).overflowY !== "visible") {
87
+ return el;
88
+ }
89
+ el = el.parentElement;
88
90
  }
89
- el = el.parentElement;
90
- }
91
91
  }
92
92
  function getContextMeasurements(el) {
93
- const fixedRect = el.getBoundingClientRect();
94
- const parentEl = findParentWithHiddenOverflow(el);
95
- const parentRect = parentEl && parentEl.getBoundingClientRect();
96
- // if parentEl is not found, measurements are checked against the viewport
97
- return {
98
- // NB boundingClientRect.bottom is space from top of viewport to bottom of el
99
- // to get space below the el -> height of viewport minus boundingClientRect.bottom
100
- spaceAbove: parentRect ? fixedRect.top - parentRect.top : fixedRect.top,
101
- // NB boundingClientRect.bottom is space from top of viewport to bottom of el
102
- // to get space below the el -> height of viewport minus boundingClientRect.bottom
103
- spaceBelow: parentRect
104
- ? parentRect.bottom - fixedRect.bottom
105
- : document.documentElement.clientHeight - fixedRect.bottom,
106
- spaceLeft: parentRect ? fixedRect.left - parentRect.left : fixedRect.left,
107
- spaceRight: parentRect
108
- ? parentRect.right - fixedRect.right
109
- : document.documentElement.clientWidth - fixedRect.right,
110
- };
93
+ const fixedRect = el.getBoundingClientRect();
94
+ const parentEl = findParentWithHiddenOverflow(el);
95
+ const parentRect = parentEl && parentEl.getBoundingClientRect();
96
+ // if parentEl is not found, measurements are checked against the viewport
97
+ return {
98
+ // NB boundingClientRect.bottom is space from top of viewport to bottom of el
99
+ // to get space below the el -> height of viewport minus boundingClientRect.bottom
100
+ spaceAbove: parentRect ? fixedRect.top - parentRect.top : fixedRect.top,
101
+ // NB boundingClientRect.bottom is space from top of viewport to bottom of el
102
+ // to get space below the el -> height of viewport minus boundingClientRect.bottom
103
+ spaceBelow: parentRect
104
+ ? parentRect.bottom - fixedRect.bottom
105
+ : document.documentElement.clientHeight - fixedRect.bottom,
106
+ spaceLeft: parentRect ? fixedRect.left - parentRect.left : fixedRect.left,
107
+ spaceRight: parentRect
108
+ ? parentRect.right - fixedRect.right
109
+ : document.documentElement.clientWidth - fixedRect.right,
110
+ };
111
111
  }
112
112
  export function shouldOpenUp(fixedEl, //the element visible on the page when the component is closed
113
113
  closableElHeight, //the dropdown/popup/etc that becomes visible when the component is open
114
114
  offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
115
115
  offsetBelow = 0) {
116
- const { spaceAbove, spaceBelow } = getContextMeasurements(fixedEl);
117
- //we want to open up only if there's not enough space below AND there is enough space above
118
- const openUp = closableElHeight > spaceBelow + offsetBelow && closableElHeight <= spaceAbove + offsetAbove;
119
- return openUp;
116
+ const { spaceAbove, spaceBelow } = getContextMeasurements(fixedEl);
117
+ //we want to open up only if there's not enough space below AND there is enough space above
118
+ const openUp = closableElHeight > spaceBelow + offsetBelow && closableElHeight <= spaceAbove + offsetAbove;
119
+ return openUp;
120
120
  }
121
121
  export function shouldOpenDown(fixedEl, //the element visible on the page when the component is closed
122
122
  closableElHeight, //the dropdown/popup/etc that becomes visible when the component is open
123
123
  offsetAbove = 0, // if closableEl covers a part of fixedEl, that part should be offset
124
124
  offsetBelow = 0) {
125
- const { spaceAbove, spaceBelow } = getContextMeasurements(fixedEl);
126
- //we want to open up only if there's not enough space below AND there is enough space above
127
- const openDown = closableElHeight > spaceAbove + offsetAbove && closableElHeight <= spaceBelow + offsetBelow;
128
- return openDown;
125
+ const { spaceAbove, spaceBelow } = getContextMeasurements(fixedEl);
126
+ //we want to open up only if there's not enough space below AND there is enough space above
127
+ const openDown = closableElHeight > spaceAbove + offsetAbove && closableElHeight <= spaceBelow + offsetBelow;
128
+ return openDown;
129
129
  }
130
130
  export function shouldShiftRight(fixedEl, closableElWidth) {
131
- const { spaceLeft, spaceRight } = getContextMeasurements(fixedEl);
132
- const needsSpaceLeft = closableElWidth > spaceLeft && spaceRight > spaceLeft;
133
- return needsSpaceLeft;
131
+ const { spaceLeft, spaceRight } = getContextMeasurements(fixedEl);
132
+ const needsSpaceLeft = closableElWidth > spaceLeft && spaceRight > spaceLeft;
133
+ return needsSpaceLeft;
134
134
  }
135
135
  export function shouldShiftLeft(fixedEl, closableElWidth) {
136
- const { spaceLeft, spaceRight } = getContextMeasurements(fixedEl);
137
- const needsSpaceRight = closableElWidth > spaceRight && spaceLeft > spaceRight;
138
- return needsSpaceRight;
136
+ const { spaceLeft, spaceRight } = getContextMeasurements(fixedEl);
137
+ const needsSpaceRight = closableElWidth > spaceRight && spaceLeft > spaceRight;
138
+ return needsSpaceRight;
139
139
  }
140
140
  export function adjustTooltipPlacement(placement, anchorEl, tooltipHeight, tooltipWidth) {
141
- const { spaceLeft, spaceRight, spaceBelow, spaceAbove } = getContextMeasurements(anchorEl);
142
- const enoughSpaceAbove = spaceAbove > tooltipHeight;
143
- const enoughSpaceBelow = spaceBelow > tooltipHeight;
144
- // a tooltip should never be closer than 24px to the edge of a screen
145
- const enoughSpaceLeft = spaceLeft - 24 > tooltipWidth;
146
- const enoughSpaceRight = spaceRight - 24 > tooltipWidth;
147
- const swapAbove = (placement) => {
148
- return !enoughSpaceAbove ? placement.replace("top", "bottom") : placement;
149
- };
150
- const swapBelow = (placement) => {
151
- return !enoughSpaceBelow && enoughSpaceAbove ? placement.replace("bottom", "top") : placement;
152
- };
153
- const swapLeft = (placement, centeredPosition) => {
154
- if (!enoughSpaceLeft && enoughSpaceRight) {
155
- placement = placement.replace("left", "right");
156
- }
157
- else if (!enoughSpaceLeft && !enoughSpaceRight) {
158
- placement = centeredPosition;
159
- }
160
- return placement;
161
- };
162
- const swapRight = (placement, centeredPosition) => {
163
- if (!enoughSpaceRight && enoughSpaceLeft) {
164
- placement = placement.replace("right", "left");
165
- }
166
- else if (!enoughSpaceRight && !enoughSpaceLeft) {
167
- placement = centeredPosition;
141
+ const { spaceLeft, spaceRight, spaceBelow, spaceAbove } = getContextMeasurements(anchorEl);
142
+ const enoughSpaceAbove = spaceAbove > tooltipHeight;
143
+ const enoughSpaceBelow = spaceBelow > tooltipHeight;
144
+ // a tooltip should never be closer than 24px to the edge of a screen
145
+ const enoughSpaceLeft = spaceLeft - 24 > tooltipWidth;
146
+ const enoughSpaceRight = spaceRight - 24 > tooltipWidth;
147
+ const swapAbove = (placement) => {
148
+ return !enoughSpaceAbove ? placement.replace("top", "bottom") : placement;
149
+ };
150
+ const swapBelow = (placement) => {
151
+ return !enoughSpaceBelow && enoughSpaceAbove ? placement.replace("bottom", "top") : placement;
152
+ };
153
+ const swapLeft = (placement, centeredPosition) => {
154
+ if (!enoughSpaceLeft && enoughSpaceRight) {
155
+ placement = placement.replace("left", "right");
156
+ }
157
+ else if (!enoughSpaceLeft && !enoughSpaceRight) {
158
+ placement = centeredPosition;
159
+ }
160
+ return placement;
161
+ };
162
+ const swapRight = (placement, centeredPosition) => {
163
+ if (!enoughSpaceRight && enoughSpaceLeft) {
164
+ placement = placement.replace("right", "left");
165
+ }
166
+ else if (!enoughSpaceRight && !enoughSpaceLeft) {
167
+ placement = centeredPosition;
168
+ }
169
+ return placement;
170
+ };
171
+ // horizontal checks must occur before vertical checks, because horizontal can affect vertical placement but not vice versa
172
+ switch (placement) {
173
+ case "left":
174
+ placement = swapLeft(placement, "bottom");
175
+ case "right":
176
+ placement = swapRight(placement, "bottom");
177
+ case "top-left":
178
+ placement = swapLeft(placement, "top");
179
+ placement = swapAbove(placement);
180
+ case "top-right":
181
+ placement = swapRight(placement, "top");
182
+ placement = swapAbove(placement);
183
+ case "bottom-left":
184
+ placement = swapLeft(placement, "bottom");
185
+ placement = swapBelow(placement);
186
+ case "bottom-right":
187
+ placement = swapRight(placement, "bottom");
188
+ placement = swapBelow(placement);
189
+ case "top":
190
+ placement = swapAbove(placement);
191
+ case "bottom":
192
+ placement = swapBelow(placement);
168
193
  }
169
194
  return placement;
170
- };
171
- // horizontal checks must occur before vertical checks, because horizontal can affect vertical placement but not vice versa
172
- switch (placement) {
173
- case "left":
174
- placement = swapLeft(placement, "bottom");
175
- case "right":
176
- placement = swapRight(placement, "bottom");
177
- case "top-left":
178
- placement = swapLeft(placement, "top");
179
- placement = swapAbove(placement);
180
- case "top-right":
181
- placement = swapRight(placement, "top");
182
- placement = swapAbove(placement);
183
- case "bottom-left":
184
- placement = swapLeft(placement, "bottom");
185
- placement = swapBelow(placement);
186
- case "bottom-right":
187
- placement = swapRight(placement, "bottom");
188
- placement = swapBelow(placement);
189
- case "top":
190
- placement = swapAbove(placement);
191
- case "bottom":
192
- placement = swapBelow(placement);
193
- }
194
- return placement;
195
195
  }
196
196
  export function showTooltip(placement, anchorEl, tooltipText) {
197
- // until popover is supported by firefox, we have to check for and position additional tooltip rendered within the modal's dialog element
198
- // this additional tooltip is only rendered in browsers that do not support popover
199
- const tooltipEls = document.querySelectorAll(".wm-tooltip");
200
- tooltipEls.forEach((tooltipEl) => {
201
- //@ts-ignore
202
- if (!!tooltipEl.showPopover) {
203
- //@ts-ignore
204
- tooltipEl.showPopover();
205
- }
206
- tooltipEl.classList.add("show");
207
- tooltipEl.textContent = tooltipText;
208
- // tooltip only has a maxWidth if it contains whitespace and can break
209
- const hasNoWhitespace = tooltipText.match(/^[^\s]+$/);
210
- if (hasNoWhitespace) {
211
- tooltipEl.classList.add("single-word");
212
- tooltipEl.style.setProperty("--wmTooltipMaxWidth", "none");
213
- }
214
- else {
215
- tooltipEl.classList.remove("single-word");
216
- tooltipEl.style.removeProperty("--wmTooltipMaxWidth");
217
- }
218
- const tooltipRect = tooltipEl.getBoundingClientRect();
219
- const anchorRect = anchorEl.getBoundingClientRect();
220
- const adjustedPlacement = adjustTooltipPlacement(placement, anchorEl, tooltipRect.height, tooltipRect.width);
221
- let verticalPos, horizontalPos;
222
- [verticalPos, horizontalPos] = positionTooltip(adjustedPlacement, anchorRect, tooltipRect.height, tooltipRect.width);
223
- tooltipEl.style.setProperty("--wmTooltipTop", verticalPos + "px");
224
- tooltipEl.style.setProperty("--wmTooltipLeft", horizontalPos + "px");
225
- });
197
+ // until popover is supported by firefox, we have to check for and position additional tooltip rendered within the modal's dialog element
198
+ // this additional tooltip is only rendered in browsers that do not support popover
199
+ const tooltipEls = document.querySelectorAll(".wm-tooltip");
200
+ tooltipEls.forEach((tooltipEl) => {
201
+ //@ts-ignore
202
+ if (!!tooltipEl.showPopover) {
203
+ //@ts-ignore
204
+ tooltipEl.showPopover();
205
+ }
206
+ tooltipEl.classList.add("show");
207
+ tooltipEl.textContent = tooltipText;
208
+ // tooltip only has a maxWidth if it contains whitespace and can break
209
+ const hasNoWhitespace = tooltipText.match(/^[^\s]+$/);
210
+ if (hasNoWhitespace) {
211
+ tooltipEl.classList.add("single-word");
212
+ tooltipEl.style.setProperty("--wmTooltipMaxWidth", "none");
213
+ }
214
+ else {
215
+ tooltipEl.classList.remove("single-word");
216
+ tooltipEl.style.removeProperty("--wmTooltipMaxWidth");
217
+ }
218
+ const tooltipRect = tooltipEl.getBoundingClientRect();
219
+ const anchorRect = anchorEl.getBoundingClientRect();
220
+ const adjustedPlacement = adjustTooltipPlacement(placement, anchorEl, tooltipRect.height, tooltipRect.width);
221
+ let verticalPos, horizontalPos;
222
+ [verticalPos, horizontalPos] = positionTooltip(adjustedPlacement, anchorRect, tooltipRect.height, tooltipRect.width);
223
+ tooltipEl.style.setProperty("--wmTooltipTop", verticalPos + "px");
224
+ tooltipEl.style.setProperty("--wmTooltipLeft", horizontalPos + "px");
225
+ });
226
226
  }
227
227
  export function hideTooltip() {
228
- const tooltipEls = document.querySelectorAll(".wm-tooltip");
229
- tooltipEls.forEach((tooltipEl) => {
230
- //@ts-ignore
231
- if (!!tooltipEl.hidePopover) {
232
- //@ts-ignore
233
- tooltipEl.hidePopover();
234
- }
235
- tooltipEl.classList.remove("show");
236
- });
228
+ const tooltipEls = document.querySelectorAll(".wm-tooltip");
229
+ tooltipEls.forEach((tooltipEl) => {
230
+ //@ts-ignore
231
+ if (!!tooltipEl.hidePopover) {
232
+ //@ts-ignore
233
+ tooltipEl.hidePopover();
234
+ }
235
+ tooltipEl.classList.remove("show");
236
+ });
237
237
  }
238
238
  function positionTooltip(placement, anchorRect, tooltipHeight, tooltipWidth) {
239
- // to get the center positions, calculate the difference between the button width and the tooltip width
240
- const verticalDiff = (anchorRect.height - tooltipHeight) / 2;
241
- const horizontalDiff = (anchorRect.width - tooltipWidth) / 2;
242
- // the naming convention defaults to center in the absence of a value
243
- // "top" and "bottom" imply centering horizontally; "right" and "left" imply centering vertically
244
- // therefore we first set to center and adjust accordingly
245
- let verticalPos = anchorRect.top + verticalDiff;
246
- let horizontalPos = anchorRect.left + horizontalDiff;
247
- if (placement.includes("top")) {
248
- verticalPos = anchorRect.top - tooltipHeight - 8;
249
- }
250
- if (placement.includes("bottom")) {
251
- verticalPos = anchorRect.bottom + 8;
252
- }
253
- if (placement.includes("left")) {
254
- horizontalPos = anchorRect.left - tooltipWidth - 8;
255
- }
256
- if (placement.includes("right")) {
257
- horizontalPos = anchorRect.right + 8;
258
- }
259
- // after all positioning has been calculated, if tooltip is off-screen or closer than 24px it is readjusted
260
- // this only occurs when the tooltip is overflowing to the left and is placed top or bottom
261
- // (button placed too far left, or screen size under 268px)
262
- horizontalPos = Math.max(horizontalPos, 24);
263
- return [verticalPos, horizontalPos];
239
+ // to get the center positions, calculate the difference between the button width and the tooltip width
240
+ const verticalDiff = (anchorRect.height - tooltipHeight) / 2;
241
+ const horizontalDiff = (anchorRect.width - tooltipWidth) / 2;
242
+ // the naming convention defaults to center in the absence of a value
243
+ // "top" and "bottom" imply centering horizontally; "right" and "left" imply centering vertically
244
+ // therefore we first set to center and adjust accordingly
245
+ let verticalPos = anchorRect.top + verticalDiff;
246
+ let horizontalPos = anchorRect.left + horizontalDiff;
247
+ if (placement.includes("top")) {
248
+ verticalPos = anchorRect.top - tooltipHeight - 8;
249
+ }
250
+ if (placement.includes("bottom")) {
251
+ verticalPos = anchorRect.bottom + 8;
252
+ }
253
+ if (placement.includes("left")) {
254
+ horizontalPos = anchorRect.left - tooltipWidth - 8;
255
+ }
256
+ if (placement.includes("right")) {
257
+ horizontalPos = anchorRect.right + 8;
258
+ }
259
+ // after all positioning has been calculated, if tooltip is off-screen or closer than 24px it is readjusted
260
+ // this only occurs when the tooltip is overflowing to the left and is placed top or bottom
261
+ // (button placed too far left, or screen size under 268px)
262
+ horizontalPos = Math.max(horizontalPos, 24);
263
+ return [verticalPos, horizontalPos];
264
264
  }
265
265
  export function hasRoomRight(x, spaceNeeded) {
266
- let horizOffset = 0;
267
- // if (getTextDir() === "ltr") {
268
- if (x.type === "click") {
269
- // if it's a mouse event, deal with mouse coords
270
- horizOffset = x.clientX;
271
- // if it's a focus event, the offset is 0
272
- }
273
- else if (x.type === "focus") {
274
- horizOffset = 0;
275
- }
276
- else {
277
- // otherwise an element was passed, calculate how far it is from the edge of the window
278
- let el = x; // re-assignment is for clarity
279
- while (el) {
280
- if (el.tagName == "BODY") {
281
- // deal with browser quirks with body/window/document and page scroll
282
- var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
283
- horizOffset += el.offsetLeft - xScroll + el.clientLeft;
284
- }
285
- else {
286
- // for all other non-BODY elements
287
- horizOffset += el.offsetLeft - el.scrollLeft + el.clientLeft;
288
- }
289
- el = el.offsetParent;
290
- }
291
- // }
292
- }
293
- return window.innerWidth - horizOffset >= spaceNeeded;
266
+ let horizOffset = 0;
267
+ // if (getTextDir() === "ltr") {
268
+ if (x.type === "click") {
269
+ // if it's a mouse event, deal with mouse coords
270
+ horizOffset = x.clientX;
271
+ // if it's a focus event, the offset is 0
272
+ }
273
+ else if (x.type === "focus") {
274
+ horizOffset = 0;
275
+ }
276
+ else {
277
+ // otherwise an element was passed, calculate how far it is from the edge of the window
278
+ let el = x; // re-assignment is for clarity
279
+ while (el) {
280
+ if (el.tagName == "BODY") {
281
+ // deal with browser quirks with body/window/document and page scroll
282
+ var xScroll = el.scrollLeft || document.documentElement.scrollLeft;
283
+ horizOffset += el.offsetLeft - xScroll + el.clientLeft;
284
+ }
285
+ else {
286
+ // for all other non-BODY elements
287
+ horizOffset += el.offsetLeft - el.scrollLeft + el.clientLeft;
288
+ }
289
+ el = el.offsetParent;
290
+ }
291
+ // }
292
+ }
293
+ return window.innerWidth - horizOffset >= spaceNeeded;
294
294
  }
295
295
  export function checkForActiveElInShadow(element) {
296
- while (element && element.shadowRoot) {
297
- element = element.shadowRoot.activeElement;
298
- }
299
- return element;
296
+ while (element && element.shadowRoot) {
297
+ element = element.shadowRoot.activeElement;
298
+ }
299
+ return element;
300
300
  }
301
301
  export function checkForFocusableElInShadow(element) {
302
- const selectors = [
303
- "button",
304
- "a",
305
- "input",
306
- "select",
307
- "textarea",
308
- "wm-button",
309
- "wm-search",
310
- "wm-select",
311
- "wm-action-menu",
312
- "wm-tab-item",
313
- "wm-datepicker",
314
- ];
315
- let focusableEl = element;
316
- selectors.forEach((selector) => {
317
- if (focusableEl && focusableEl.shadowRoot) {
318
- let elInShadow = focusableEl.shadowRoot.querySelector(selector);
319
- if (elInShadow) {
320
- if (selector.startsWith("wm-")) {
321
- focusableEl = checkForFocusableElInShadow(elInShadow);
322
- }
323
- else {
324
- focusableEl = elInShadow;
302
+ const selectors = [
303
+ "button",
304
+ "a",
305
+ "input",
306
+ "select",
307
+ "textarea",
308
+ "wm-button",
309
+ "wm-search",
310
+ "wm-select",
311
+ "wm-action-menu",
312
+ "wm-tab-item",
313
+ "wm-datepicker",
314
+ ];
315
+ let focusableEl = element;
316
+ selectors.forEach((selector) => {
317
+ if (focusableEl && focusableEl.shadowRoot) {
318
+ let elInShadow = focusableEl.shadowRoot.querySelector(selector);
319
+ if (elInShadow) {
320
+ if (selector.startsWith("wm-")) {
321
+ focusableEl = checkForFocusableElInShadow(elInShadow);
322
+ }
323
+ else {
324
+ focusableEl = elInShadow;
325
+ }
326
+ }
325
327
  }
326
- }
327
- }
328
- });
329
- return focusableEl;
328
+ });
329
+ return focusableEl;
330
330
  }
331
331
  export function isFocusable(element) {
332
- if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute("tabIndex") !== null)) {
333
- return true;
334
- }
335
- if (element.disabled) {
336
- return false;
337
- }
338
- switch (element.nodeName) {
339
- case "A":
340
- return !!element.href && element.rel != "ignore";
341
- case "INPUT":
342
- return element.type != "hidden" && element.type != "file";
343
- case "BUTTON":
344
- case "SELECT":
345
- case "TEXTAREA":
346
- case "WM-BUTTON":
347
- case "WM-SELECT":
348
- case "WM-ACTION-MENU":
349
- case "WM-DATEPICKER":
350
- case "WM-TIMEPICKER":
351
- case "WM-INPUT":
352
- case "WM-TAG-INPUT":
353
- case "WM-TAB-ITEM":
354
- case "WM-SEARCH":
355
- return true;
356
- default:
357
- return false;
358
- }
332
+ if (element.tabIndex > 0 || (element.tabIndex === 0 && element.getAttribute("tabIndex") !== null)) {
333
+ return true;
334
+ }
335
+ if (element.disabled) {
336
+ return false;
337
+ }
338
+ switch (element.nodeName) {
339
+ case "A":
340
+ return !!element.href && element.rel != "ignore";
341
+ case "INPUT":
342
+ return element.type != "hidden" && element.type != "file";
343
+ case "BUTTON":
344
+ case "SELECT":
345
+ case "TEXTAREA":
346
+ case "WM-BUTTON":
347
+ case "WM-SELECT":
348
+ case "WM-ACTION-MENU":
349
+ case "WM-DATEPICKER":
350
+ case "WM-TIMEPICKER":
351
+ case "WM-INPUT":
352
+ case "WM-TAG-INPUT":
353
+ case "WM-TAB-ITEM":
354
+ case "WM-SEARCH":
355
+ return true;
356
+ default:
357
+ return false;
358
+ }
359
359
  }
360
360
  export function getFirstFocusableDescendant(element) {
361
- if (isFocusable(element)) {
362
- return checkForFocusableElInShadow(element);
363
- }
364
- else if (element.childNodes.length > 0) {
365
- element.childNodes.forEach((i) => {
366
- const childEl = getFirstFocusableDescendant(i);
367
- return childEl && checkForFocusableElInShadow(childEl);
368
- });
369
- }
361
+ if (isFocusable(element)) {
362
+ return checkForFocusableElInShadow(element);
363
+ }
364
+ else if (element.childNodes.length > 0) {
365
+ element.childNodes.forEach((i) => {
366
+ const childEl = getFirstFocusableDescendant(i);
367
+ return childEl && checkForFocusableElInShadow(childEl);
368
+ });
369
+ }
370
370
  }
371
371
  // takes a string (space separated list of extensions), returns an array of strings (corresponding MIME types)
372
372
  export function getAcceptedMimeTypesList(acceptedExtensions) {
373
- // this is just a list of common file types (regardless of whether they are/can be valid or not)
374
- // front end checks are just a convenience to users, independent of security.
375
- // it allows users to be notified of an invalid type as soon as they select the file, rather than when it gets uploaded
376
- const lookupTable = {
377
- aac: ["audio/aac"],
378
- abw: ["application/x-abiword"],
379
- arc: ["application/x-freearc"],
380
- avi: ["video/x-msvideo"],
381
- azw: ["application/vnd.amazon.ebook"],
382
- bin: ["application/octet-stream"],
383
- bmp: ["image/bmp"],
384
- bz: ["application/x-bzip"],
385
- bz2: ["application/x-bzip2"],
386
- csh: ["application/x-csh"],
387
- css: ["text/css"],
388
- csv: ["text/csv"],
389
- doc: ["application/msword"],
390
- docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
391
- eot: ["application/vnd.ms-fontobject"],
392
- epub: ["application/epub+zip"],
393
- gz: ["application/gzip"],
394
- gif: ["image/gif"],
395
- htm: ["text/html"],
396
- html: ["text/html"],
397
- ico: ["image/vnd.microsoft.icon"],
398
- ics: ["text/calendar"],
399
- jar: ["application/java-archive"],
400
- jpeg: ["image/jpeg"],
401
- jpg: ["image/jpeg"],
402
- js: ["text/javascript"],
403
- json: ["application/json"],
404
- jsonld: ["application/ld+json"],
405
- log: ["text/plain"],
406
- mid: ["audio/x-midi"],
407
- midi: ["audio/x-midi"],
408
- mjs: ["text/javascript"],
409
- mp3: ["audio/mpeg"],
410
- mpeg: ["video/mpeg"],
411
- mpkg: ["application/vnd.apple.installer+xml"],
412
- odp: ["application/vnd.oasis.opendocument.presentation"],
413
- ods: ["application/vnd.oasis.opendocument.spreadsheet"],
414
- odt: ["application/vnd.oasis.opendocument.text"],
415
- oga: ["audio/ogg"],
416
- ogv: ["video/ogg"],
417
- ogx: ["application/ogg"],
418
- opus: ["audio/opus"],
419
- otf: ["font/otf"],
420
- png: ["image/png"],
421
- pdf: ["application/pdf"],
422
- php: ["application/php"],
423
- ppt: ["application/vnd.ms-powerpoint"],
424
- pptx: ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
425
- rar: ["application/vnd.rar", "application/x-rar", "application/x-rar-compressed"],
426
- rtf: ["application/rtf"],
427
- sh: ["application/x-sh"],
428
- svg: ["image/svg+xml"],
429
- swf: ["application/x-shockwave-flash"],
430
- tar: ["application/x-tar"],
431
- tif: ["image/tiff"],
432
- tiff: ["image/tiff"],
433
- ts: ["video/mp2t"],
434
- ttf: ["font/ttf"],
435
- txt: ["text/plain"],
436
- vsd: ["application/vnd.visio"],
437
- wav: ["audio/wav"],
438
- weba: ["audio/webm"],
439
- webm: ["video/webm"],
440
- webp: ["image/webp"],
441
- woff: ["font/woff"],
442
- woff2: ["font/woff2"],
443
- xhtml: ["application/xhtml+xml"],
444
- xls: ["application/vnd.ms-excel"],
445
- xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
446
- xml: ["application/xml", "text/xml"],
447
- xul: ["application/vnd.mozilla.xul+xml"],
448
- zip: ["application/zip", "application/x-zip-compressed", "multipart/x-zip"],
449
- "3gp": ["video/3gpp", "audio/3gpp"],
450
- "3g2": ["video/3gpp2", "audio/3gpp2"],
451
- "7z": ["application/x-7z-compressed"],
452
- };
453
- return acceptedExtensions.reduce((acc, ext) => acc.concat(lookupTable[ext]), []);
373
+ // this is just a list of common file types (regardless of whether they are/can be valid or not)
374
+ // front end checks are just a convenience to users, independent of security.
375
+ // it allows users to be notified of an invalid type as soon as they select the file, rather than when it gets uploaded
376
+ const lookupTable = {
377
+ aac: ["audio/aac"],
378
+ abw: ["application/x-abiword"],
379
+ arc: ["application/x-freearc"],
380
+ avi: ["video/x-msvideo"],
381
+ azw: ["application/vnd.amazon.ebook"],
382
+ bin: ["application/octet-stream"],
383
+ bmp: ["image/bmp"],
384
+ bz: ["application/x-bzip"],
385
+ bz2: ["application/x-bzip2"],
386
+ csh: ["application/x-csh"],
387
+ css: ["text/css"],
388
+ csv: ["text/csv"],
389
+ doc: ["application/msword"],
390
+ docx: ["application/vnd.openxmlformats-officedocument.wordprocessingml.document"],
391
+ eot: ["application/vnd.ms-fontobject"],
392
+ epub: ["application/epub+zip"],
393
+ gz: ["application/gzip"],
394
+ gif: ["image/gif"],
395
+ htm: ["text/html"],
396
+ html: ["text/html"],
397
+ ico: ["image/vnd.microsoft.icon"],
398
+ ics: ["text/calendar"],
399
+ jar: ["application/java-archive"],
400
+ jpeg: ["image/jpeg"],
401
+ jpg: ["image/jpeg"],
402
+ js: ["text/javascript"],
403
+ json: ["application/json"],
404
+ jsonld: ["application/ld+json"],
405
+ log: ["text/plain"],
406
+ mid: ["audio/x-midi"],
407
+ midi: ["audio/x-midi"],
408
+ mjs: ["text/javascript"],
409
+ mp3: ["audio/mpeg"],
410
+ mpeg: ["video/mpeg"],
411
+ mpkg: ["application/vnd.apple.installer+xml"],
412
+ odp: ["application/vnd.oasis.opendocument.presentation"],
413
+ ods: ["application/vnd.oasis.opendocument.spreadsheet"],
414
+ odt: ["application/vnd.oasis.opendocument.text"],
415
+ oga: ["audio/ogg"],
416
+ ogv: ["video/ogg"],
417
+ ogx: ["application/ogg"],
418
+ opus: ["audio/opus"],
419
+ otf: ["font/otf"],
420
+ png: ["image/png"],
421
+ pdf: ["application/pdf"],
422
+ php: ["application/php"],
423
+ ppt: ["application/vnd.ms-powerpoint"],
424
+ pptx: ["application/vnd.openxmlformats-officedocument.presentationml.presentation"],
425
+ rar: ["application/vnd.rar", "application/x-rar", "application/x-rar-compressed"],
426
+ rtf: ["application/rtf"],
427
+ sh: ["application/x-sh"],
428
+ svg: ["image/svg+xml"],
429
+ swf: ["application/x-shockwave-flash"],
430
+ tar: ["application/x-tar"],
431
+ tif: ["image/tiff"],
432
+ tiff: ["image/tiff"],
433
+ ts: ["video/mp2t"],
434
+ ttf: ["font/ttf"],
435
+ txt: ["text/plain"],
436
+ vsd: ["application/vnd.visio"],
437
+ wav: ["audio/wav"],
438
+ weba: ["audio/webm"],
439
+ webm: ["video/webm"],
440
+ webp: ["image/webp"],
441
+ woff: ["font/woff"],
442
+ woff2: ["font/woff2"],
443
+ xhtml: ["application/xhtml+xml"],
444
+ xls: ["application/vnd.ms-excel"],
445
+ xlsx: ["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"],
446
+ xml: ["application/xml", "text/xml"],
447
+ xul: ["application/vnd.mozilla.xul+xml"],
448
+ zip: ["application/zip", "application/x-zip-compressed", "multipart/x-zip"],
449
+ "3gp": ["video/3gpp", "audio/3gpp"],
450
+ "3g2": ["video/3gpp2", "audio/3gpp2"],
451
+ "7z": ["application/x-7z-compressed"],
452
+ };
453
+ return acceptedExtensions.reduce((acc, ext) => acc.concat(lookupTable[ext]), []);
454
454
  }
455
455
  export function snakeCaseToCamelCase(str) {
456
- const snakeCaseRegexp = /^([a-z0-9]*)(_[a-z0-9]*)*$/g;
457
- if (snakeCaseRegexp.test(str)) {
458
- let camelCase = "";
459
- let arr = str.split("_");
460
- arr.forEach((word, idx) => {
461
- camelCase += idx === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1);
462
- });
463
- return camelCase;
464
- }
465
- else {
466
- return str;
467
- }
456
+ const snakeCaseRegexp = /^([a-z0-9]*)(_[a-z0-9]*)*$/g;
457
+ if (snakeCaseRegexp.test(str)) {
458
+ let camelCase = "";
459
+ let arr = str.split("_");
460
+ arr.forEach((word, idx) => {
461
+ camelCase += idx === 0 ? word.toLowerCase() : word.charAt(0).toUpperCase() + word.slice(1);
462
+ });
463
+ return camelCase;
464
+ }
465
+ else {
466
+ return str;
467
+ }
468
468
  }
469
469
  export function csvToArray(csv) {
470
- return csv ? csv.split(/, ?/) : [];
470
+ return csv ? csv.split(/, ?/) : [];
471
471
  }
472
472
  export function getNewIndexToFocus(currentIndex, direction, listLength) {
473
- let newIndex = currentIndex;
474
- if (direction === "ArrowDown") {
475
- newIndex = (currentIndex + 1) % listLength;
476
- }
477
- if (direction === "ArrowUp") {
478
- newIndex = currentIndex === 0 ? listLength - 1 : currentIndex - 1;
479
- }
480
- return newIndex;
473
+ let newIndex = currentIndex;
474
+ if (direction === "ArrowDown") {
475
+ newIndex = (currentIndex + 1) % listLength;
476
+ }
477
+ if (direction === "ArrowUp") {
478
+ newIndex = currentIndex === 0 ? listLength - 1 : currentIndex - 1;
479
+ }
480
+ return newIndex;
481
481
  }
482
482
  export function isRelatedTarget(ev, id) {
483
- // used for onBlur events to check the element that has been clicked
484
- const ids = id.split(" ");
485
- return ev.relatedTarget && ids.includes(ev.relatedTarget.id);
483
+ // used for onBlur events to check the element that has been clicked
484
+ const ids = id.split(" ");
485
+ return ev.relatedTarget && ids.includes(ev.relatedTarget.id);
486
486
  }
487
487
  export function toBool(val) {
488
- // string "false" needs to be treated as bool False because react wrappers convert bool to string.
489
- return val == "false" ? false : !!val;
488
+ // string "false" needs to be treated as bool False because react wrappers convert bool to string.
489
+ return val == "false" ? false : !!val;
490
490
  }
491
491
  export function measureText(originEl, placeholderText) {
492
- const measurementEl = document.createElement("div");
493
- const originStyles = getComputedStyle(originEl);
494
- measurementEl.style.position = "absolute";
495
- measurementEl.style.top = "-100vh";
496
- measurementEl.style.fontFamily = originStyles.fontFamily;
497
- measurementEl.style.fontWeight = originStyles.fontWeight;
498
- measurementEl.style.fontSize = originStyles.fontSize;
499
- measurementEl.textContent = placeholderText;
500
- document.body.appendChild(measurementEl);
501
- const boundingClientRect = measurementEl.getBoundingClientRect();
502
- document.body.removeChild(measurementEl);
503
- return boundingClientRect;
492
+ const measurementEl = document.createElement("div");
493
+ const originStyles = getComputedStyle(originEl);
494
+ measurementEl.style.position = "absolute";
495
+ measurementEl.style.top = "-100vh";
496
+ measurementEl.style.fontFamily = originStyles.fontFamily;
497
+ measurementEl.style.fontWeight = originStyles.fontWeight;
498
+ measurementEl.style.fontSize = originStyles.fontSize;
499
+ measurementEl.textContent = placeholderText;
500
+ document.body.appendChild(measurementEl);
501
+ const boundingClientRect = measurementEl.getBoundingClientRect();
502
+ document.body.removeChild(measurementEl);
503
+ return boundingClientRect;
504
504
  }
505
505
  export function truncateText(textEl, text, availableSpace, endAmt) {
506
- const cloneEl = document.createElement("div");
507
- cloneEl.style.visibility = "hidden";
508
- cloneEl.style.position = "absolute";
509
- cloneEl.style.top = "-200vh";
510
- cloneEl.style.left = "-200vh";
511
- cloneEl.textContent = text;
512
- textEl.appendChild(cloneEl);
513
- const ellipses = "...";
514
- const minimumLength = 2 + ellipses.length + endAmt;
515
- let canFitText = availableSpace > cloneEl.clientWidth;
516
- if (!canFitText && text.length > minimumLength) {
517
- let frontChars = text.slice(0, text.length - endAmt - ellipses.length).trim();
518
- let endChars = text.slice(-endAmt).trim();
519
- let truncatedText = frontChars + ellipses + endChars;
520
- cloneEl.textContent = truncatedText;
521
- canFitText = availableSpace > cloneEl.clientWidth;
522
- while (!canFitText && truncatedText.length > minimumLength) {
523
- frontChars = frontChars.slice(0, -1).trim();
524
- truncatedText = frontChars + ellipses + endChars;
525
- cloneEl.textContent = truncatedText;
526
- canFitText = availableSpace > cloneEl.clientWidth;
527
- }
528
- }
529
- const truncatedText = cloneEl.textContent;
530
- cloneEl.remove();
531
- return truncatedText;
506
+ const cloneEl = document.createElement("div");
507
+ cloneEl.style.visibility = "hidden";
508
+ cloneEl.style.position = "absolute";
509
+ cloneEl.style.top = "-200vh";
510
+ cloneEl.style.left = "-200vh";
511
+ cloneEl.textContent = text;
512
+ textEl.appendChild(cloneEl);
513
+ const ellipses = "...";
514
+ const minimumLength = 2 + ellipses.length + endAmt;
515
+ let canFitText = availableSpace > cloneEl.clientWidth;
516
+ if (!canFitText && text.length > minimumLength) {
517
+ let frontChars = text.slice(0, text.length - endAmt - ellipses.length).trim();
518
+ let endChars = text.slice(-endAmt).trim();
519
+ let truncatedText = frontChars + ellipses + endChars;
520
+ cloneEl.textContent = truncatedText;
521
+ canFitText = availableSpace > cloneEl.clientWidth;
522
+ while (!canFitText && truncatedText.length > minimumLength) {
523
+ frontChars = frontChars.slice(0, -1).trim();
524
+ truncatedText = frontChars + ellipses + endChars;
525
+ cloneEl.textContent = truncatedText;
526
+ canFitText = availableSpace > cloneEl.clientWidth;
527
+ }
528
+ }
529
+ const truncatedText = cloneEl.textContent;
530
+ cloneEl.remove();
531
+ return truncatedText;
532
532
  }
533
533
  export function transposeMatrix(originalMatrix) {
534
- let newMatrix = [];
535
- for (let i = 0; i < originalMatrix[0].length; i++) {
536
- let column = [];
537
- for (let j = 0; j < originalMatrix.length; j++) {
538
- column.push(originalMatrix[j][i]);
534
+ let newMatrix = [];
535
+ for (let i = 0; i < originalMatrix[0].length; i++) {
536
+ let column = [];
537
+ for (let j = 0; j < originalMatrix.length; j++) {
538
+ column.push(originalMatrix[j][i]);
539
+ }
540
+ newMatrix.push(column);
539
541
  }
540
- newMatrix.push(column);
541
- }
542
- return newMatrix;
542
+ return newMatrix;
543
543
  }
544
544
  export function wrapAround(currentIdx, step, endIdx) {
545
- currentIdx += step;
546
- if (currentIdx > endIdx) {
547
- currentIdx = (currentIdx - 1) % endIdx;
548
- }
549
- while (currentIdx < 0) {
550
- currentIdx = endIdx - Math.abs(currentIdx) + 1;
551
- }
552
- return currentIdx;
545
+ currentIdx += step;
546
+ if (currentIdx > endIdx) {
547
+ currentIdx = (currentIdx - 1) % endIdx;
548
+ }
549
+ while (currentIdx < 0) {
550
+ currentIdx = endIdx - Math.abs(currentIdx) + 1;
551
+ }
552
+ return currentIdx;
553
553
  }
554
554
  export function skipByInterval(list, skipInterval) {
555
- let skippedList = [];
556
- for (let i = 0; i < list.length; i += 1 + skipInterval) {
557
- skippedList.push(list[i]);
558
- }
559
- return skippedList;
555
+ let skippedList = [];
556
+ for (let i = 0; i < list.length; i += 1 + skipInterval) {
557
+ skippedList.push(list[i]);
558
+ }
559
+ return skippedList;
560
560
  }
561
561
  export function getSmallestSkipInterval(list, maxLength) {
562
- let skipInterval = 0;
563
- let skippedList = list;
564
- while (skipByInterval(list, skipInterval).length > maxLength) {
565
- skipInterval++;
566
- skippedList = skipByInterval(list, skipInterval);
567
- }
568
- return { skipInterval: skipInterval, skippedList: skippedList };
562
+ let skipInterval = 0;
563
+ let skippedList = list;
564
+ while (skipByInterval(list, skipInterval).length > maxLength) {
565
+ skipInterval++;
566
+ skippedList = skipByInterval(list, skipInterval);
567
+ }
568
+ return { skipInterval: skipInterval, skippedList: skippedList };
569
569
  }
570
570
  export function calcPercentageInRange(value, rangeLowest, rangeHighest) {
571
- const rangeDistance = rangeHighest - rangeLowest;
572
- const adjustedValue = Math.abs(value - rangeLowest);
573
- const percentage = (adjustedValue / rangeDistance) * 100;
574
- return percentage;
571
+ const rangeDistance = rangeHighest - rangeLowest;
572
+ const adjustedValue = Math.abs(value - rangeLowest);
573
+ const percentage = (adjustedValue / rangeDistance) * 100;
574
+ return percentage;
575
575
  }
576
576
  export function triggerFormSubmit(formEl) {
577
- // requestSubmit is not supported by Safari v<16, use a polyfill for this
578
- if (formEl.requestSubmit) {
579
- formEl.requestSubmit();
580
- }
581
- else {
582
- const submitButton = document.createElement("button");
583
- submitButton.style.display = "none";
584
- formEl.appendChild(submitButton);
585
- submitButton.click();
586
- document.removeChild(submitButton);
587
- }
577
+ // requestSubmit is not supported by Safari v<16, use a polyfill for this
578
+ if (formEl.requestSubmit) {
579
+ formEl.requestSubmit();
580
+ }
581
+ else {
582
+ const submitButton = document.createElement("button");
583
+ submitButton.style.display = "none";
584
+ formEl.appendChild(submitButton);
585
+ submitButton.click();
586
+ document.removeChild(submitButton);
587
+ }
588
588
  }
589
589
  export function handleDisabledAttribute(el, isDisabled) {
590
- if (isDisabled == false && el.hasAttribute("disabled")) {
591
- el.removeAttribute("disabled");
592
- }
590
+ if (isDisabled == false && el.hasAttribute("disabled")) {
591
+ el.removeAttribute("disabled");
592
+ }
593
593
  }
594
594
  // get the prev/next element with an option to circle through the list
595
595
  export function findPrev(list, item, loop = false) {
596
- if (!!list && !item)
597
- return list[list.length - 1]; // if list was passed but no item, get the last item
598
- if (!list.includes(item))
599
- return; // if list is empty or doesn't include item
600
- let current = list.indexOf(item);
601
- let beforeFirst = loop ? list.length - 1 : 0; // before first item can be first (hard stop) or back to last
602
- let prev = current > 0 ? current - 1 : beforeFirst;
603
- return list[prev];
596
+ if (!!list && !item)
597
+ return list[list.length - 1]; // if list was passed but no item, get the last item
598
+ if (!list.includes(item))
599
+ return; // if list is empty or doesn't include item
600
+ let current = list.indexOf(item);
601
+ let beforeFirst = loop ? list.length - 1 : 0; // before first item can be first (hard stop) or back to last
602
+ let prev = current > 0 ? current - 1 : beforeFirst;
603
+ return list[prev];
604
604
  }
605
605
  export function findNext(list, item, loop = false) {
606
- if (!!list && !item)
607
- return list[0]; // if list was passed but no item, get the first item
608
- if (!list.includes(item))
609
- return; // if list is empty or doesn't include item
610
- let current = list.indexOf(item);
611
- const last = list.length - 1;
612
- let afterLast = loop ? 0 : last; // after last item can be last (hard stop) or back to first
613
- let next = current !== last ? current + 1 : afterLast;
614
- return list[next];
606
+ if (!!list && !item)
607
+ return list[0]; // if list was passed but no item, get the first item
608
+ if (!list.includes(item))
609
+ return; // if list is empty or doesn't include item
610
+ let current = list.indexOf(item);
611
+ const last = list.length - 1;
612
+ let afterLast = loop ? 0 : last; // after last item can be last (hard stop) or back to first
613
+ let next = current !== last ? current + 1 : afterLast;
614
+ return list[next];
615
615
  }