ngwr 14.9.1 → 14.11.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 (695) hide show
  1. package/editor/styles/_index.scss +16 -1
  2. package/fesm2022/ngwr-action-sheet-testing.mjs +111 -310
  3. package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -1
  4. package/fesm2022/ngwr-action-sheet.mjs +209 -89
  5. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  6. package/fesm2022/ngwr-affix.mjs +122 -140
  7. package/fesm2022/ngwr-affix.mjs.map +1 -1
  8. package/fesm2022/ngwr-alert.mjs +204 -107
  9. package/fesm2022/ngwr-alert.mjs.map +1 -1
  10. package/fesm2022/ngwr-anchor.mjs +171 -113
  11. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  12. package/fesm2022/ngwr-aurora.mjs +278 -198
  13. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  14. package/fesm2022/ngwr-avatar.mjs +191 -190
  15. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  16. package/fesm2022/ngwr-back-top.mjs +140 -95
  17. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  18. package/fesm2022/ngwr-badge.mjs +339 -204
  19. package/fesm2022/ngwr-badge.mjs.map +1 -1
  20. package/fesm2022/ngwr-bar-chart-testing.mjs +56 -120
  21. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  22. package/fesm2022/ngwr-bar-chart.mjs +204 -113
  23. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  24. package/fesm2022/ngwr-blur-text-testing.mjs +44 -198
  25. package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -1
  26. package/fesm2022/ngwr-blur-text.mjs +322 -202
  27. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  28. package/fesm2022/ngwr-border-glow-testing.mjs +134 -318
  29. package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -1
  30. package/fesm2022/ngwr-border-glow.mjs +440 -277
  31. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  32. package/fesm2022/ngwr-breadcrumbs.mjs +256 -120
  33. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  34. package/fesm2022/ngwr-burger.mjs +115 -63
  35. package/fesm2022/ngwr-burger.mjs.map +1 -1
  36. package/fesm2022/ngwr-button-testing.mjs +39 -94
  37. package/fesm2022/ngwr-button-testing.mjs.map +1 -1
  38. package/fesm2022/ngwr-button.mjs +404 -354
  39. package/fesm2022/ngwr-button.mjs.map +1 -1
  40. package/fesm2022/ngwr-calendar-heatmap-testing.mjs +50 -96
  41. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
  42. package/fesm2022/ngwr-calendar-heatmap.mjs +360 -264
  43. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  44. package/fesm2022/ngwr-calendar-testing.mjs +181 -378
  45. package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
  46. package/fesm2022/ngwr-calendar.mjs +612 -790
  47. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  48. package/fesm2022/ngwr-card.mjs +216 -98
  49. package/fesm2022/ngwr-card.mjs.map +1 -1
  50. package/fesm2022/ngwr-carousel-testing.mjs +131 -374
  51. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -1
  52. package/fesm2022/ngwr-carousel.mjs +459 -332
  53. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  54. package/fesm2022/ngwr-cascader-testing.mjs +227 -600
  55. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
  56. package/fesm2022/ngwr-cascader.mjs +479 -418
  57. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  58. package/fesm2022/ngwr-checkbox-testing.mjs +45 -99
  59. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
  60. package/fesm2022/ngwr-checkbox.mjs +442 -354
  61. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  62. package/fesm2022/ngwr-circular-text-testing.mjs +56 -223
  63. package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -1
  64. package/fesm2022/ngwr-circular-text.mjs +226 -186
  65. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  66. package/fesm2022/ngwr-click-spark.mjs +303 -199
  67. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  68. package/fesm2022/ngwr-clipboard.mjs +95 -163
  69. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  70. package/fesm2022/ngwr-collapse-testing.mjs +118 -365
  71. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -1
  72. package/fesm2022/ngwr-collapse.mjs +287 -227
  73. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  74. package/fesm2022/ngwr-color-picker-testing.mjs +223 -461
  75. package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
  76. package/fesm2022/ngwr-color-picker.mjs +937 -976
  77. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  78. package/fesm2022/ngwr-command-palette-testing.mjs +236 -585
  79. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -1
  80. package/fesm2022/ngwr-command-palette.mjs +512 -443
  81. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  82. package/fesm2022/ngwr-compare.mjs +252 -225
  83. package/fesm2022/ngwr-compare.mjs.map +1 -1
  84. package/fesm2022/ngwr-confetti.mjs +163 -181
  85. package/fesm2022/ngwr-confetti.mjs.map +1 -1
  86. package/fesm2022/ngwr-config.mjs +31 -106
  87. package/fesm2022/ngwr-config.mjs.map +1 -1
  88. package/fesm2022/ngwr-context-menu-testing.mjs +233 -642
  89. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
  90. package/fesm2022/ngwr-context-menu.mjs +837 -1167
  91. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  92. package/fesm2022/ngwr-cookie.mjs +103 -140
  93. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  94. package/fesm2022/ngwr-counter.mjs +646 -460
  95. package/fesm2022/ngwr-counter.mjs.map +1 -1
  96. package/fesm2022/ngwr-date-adapters-fns.mjs +173 -266
  97. package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -1
  98. package/fesm2022/ngwr-date-adapters-luxon.mjs +164 -236
  99. package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -1
  100. package/fesm2022/ngwr-date-picker-testing.mjs +340 -700
  101. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
  102. package/fesm2022/ngwr-date-picker.mjs +2575 -2416
  103. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  104. package/fesm2022/ngwr-date.mjs +606 -861
  105. package/fesm2022/ngwr-date.mjs.map +1 -1
  106. package/fesm2022/ngwr-decrypt-text-testing.mjs +57 -256
  107. package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -1
  108. package/fesm2022/ngwr-decrypt-text.mjs +489 -409
  109. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  110. package/fesm2022/ngwr-density.mjs +157 -154
  111. package/fesm2022/ngwr-density.mjs.map +1 -1
  112. package/fesm2022/ngwr-descriptions.mjs +188 -90
  113. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  114. package/fesm2022/ngwr-dialog-testing.mjs +44 -87
  115. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -1
  116. package/fesm2022/ngwr-dialog.mjs +391 -522
  117. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  118. package/fesm2022/ngwr-directives.mjs +354 -271
  119. package/fesm2022/ngwr-directives.mjs.map +1 -1
  120. package/fesm2022/ngwr-divider.mjs +151 -133
  121. package/fesm2022/ngwr-divider.mjs.map +1 -1
  122. package/fesm2022/ngwr-donut-chart-testing.mjs +48 -111
  123. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  124. package/fesm2022/ngwr-donut-chart.mjs +295 -190
  125. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  126. package/fesm2022/ngwr-drag-drop.mjs +411 -301
  127. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  128. package/fesm2022/ngwr-drawer-testing.mjs +97 -248
  129. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -1
  130. package/fesm2022/ngwr-drawer.mjs +862 -889
  131. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  132. package/fesm2022/ngwr-dropdown-testing.mjs +125 -288
  133. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -1
  134. package/fesm2022/ngwr-dropdown.mjs +613 -641
  135. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  136. package/fesm2022/ngwr-editor-testing.mjs +196 -563
  137. package/fesm2022/ngwr-editor-testing.mjs.map +1 -1
  138. package/fesm2022/ngwr-editor.mjs +2062 -2442
  139. package/fesm2022/ngwr-editor.mjs.map +1 -1
  140. package/fesm2022/ngwr-empty.mjs +117 -72
  141. package/fesm2022/ngwr-empty.mjs.map +1 -1
  142. package/fesm2022/ngwr-event-calendar-testing.mjs +215 -439
  143. package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -1
  144. package/fesm2022/ngwr-event-calendar.mjs +906 -822
  145. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  146. package/fesm2022/ngwr-falling-text-testing.mjs +52 -216
  147. package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
  148. package/fesm2022/ngwr-falling-text.mjs +375 -342
  149. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  150. package/fesm2022/ngwr-file-upload-testing.mjs +133 -320
  151. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -1
  152. package/fesm2022/ngwr-file-upload.mjs +457 -328
  153. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  154. package/fesm2022/ngwr-form-testing.mjs +145 -452
  155. package/fesm2022/ngwr-form-testing.mjs.map +1 -1
  156. package/fesm2022/ngwr-form.mjs +512 -590
  157. package/fesm2022/ngwr-form.mjs.map +1 -1
  158. package/fesm2022/ngwr-fuzzy-text-testing.mjs +36 -132
  159. package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -1
  160. package/fesm2022/ngwr-fuzzy-text.mjs +635 -421
  161. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  162. package/fesm2022/ngwr-gauge-testing.mjs +49 -98
  163. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
  164. package/fesm2022/ngwr-gauge.mjs +297 -129
  165. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  166. package/fesm2022/ngwr-glitch-text-testing.mjs +61 -213
  167. package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
  168. package/fesm2022/ngwr-glitch-text.mjs +170 -73
  169. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  170. package/fesm2022/ngwr-gradient-text-testing.mjs +82 -251
  171. package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
  172. package/fesm2022/ngwr-gradient-text.mjs +215 -114
  173. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  174. package/fesm2022/ngwr-graph-testing.mjs +65 -233
  175. package/fesm2022/ngwr-graph-testing.mjs.map +1 -1
  176. package/fesm2022/ngwr-graph.mjs +882 -1046
  177. package/fesm2022/ngwr-graph.mjs.map +1 -1
  178. package/fesm2022/ngwr-hotkey.mjs +307 -285
  179. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  180. package/fesm2022/ngwr-i18n-ar.mjs +375 -464
  181. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  182. package/fesm2022/ngwr-i18n-cs.mjs +375 -434
  183. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  184. package/fesm2022/ngwr-i18n-de.mjs +375 -453
  185. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  186. package/fesm2022/ngwr-i18n-en.mjs +375 -561
  187. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  188. package/fesm2022/ngwr-i18n-es.mjs +375 -434
  189. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  190. package/fesm2022/ngwr-i18n-fr.mjs +375 -458
  191. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  192. package/fesm2022/ngwr-i18n-he.mjs +375 -457
  193. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  194. package/fesm2022/ngwr-i18n-hi.mjs +375 -434
  195. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  196. package/fesm2022/ngwr-i18n-id.mjs +375 -434
  197. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  198. package/fesm2022/ngwr-i18n-it.mjs +375 -453
  199. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  200. package/fesm2022/ngwr-i18n-ja.mjs +375 -438
  201. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  202. package/fesm2022/ngwr-i18n-ko.mjs +375 -446
  203. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  204. package/fesm2022/ngwr-i18n-nl.mjs +375 -450
  205. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  206. package/fesm2022/ngwr-i18n-pl.mjs +375 -460
  207. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  208. package/fesm2022/ngwr-i18n-pt.mjs +375 -443
  209. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  210. package/fesm2022/ngwr-i18n-ru.mjs +375 -447
  211. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  212. package/fesm2022/ngwr-i18n-sv.mjs +375 -434
  213. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  214. package/fesm2022/ngwr-i18n-tr.mjs +375 -458
  215. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  216. package/fesm2022/ngwr-i18n-uk.mjs +375 -455
  217. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  218. package/fesm2022/ngwr-i18n-vi.mjs +375 -451
  219. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  220. package/fesm2022/ngwr-i18n-zh-TW.mjs +375 -442
  221. package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
  222. package/fesm2022/ngwr-i18n-zh.mjs +375 -433
  223. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  224. package/fesm2022/ngwr-i18n.mjs +415 -683
  225. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  226. package/fesm2022/ngwr-icon-adapters-feather.mjs +28 -77
  227. package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -1
  228. package/fesm2022/ngwr-icon-adapters-lucide.mjs +32 -94
  229. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
  230. package/fesm2022/ngwr-icon.mjs +371 -690
  231. package/fesm2022/ngwr-icon.mjs.map +1 -1
  232. package/fesm2022/ngwr-image-cropper-testing.mjs +84 -227
  233. package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
  234. package/fesm2022/ngwr-image-cropper.mjs +577 -639
  235. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  236. package/fesm2022/ngwr-input-number-testing.mjs +108 -305
  237. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  238. package/fesm2022/ngwr-input-number.mjs +496 -361
  239. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  240. package/fesm2022/ngwr-input-otp-testing.mjs +172 -420
  241. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
  242. package/fesm2022/ngwr-input-otp.mjs +396 -352
  243. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  244. package/fesm2022/ngwr-input-testing.mjs +52 -100
  245. package/fesm2022/ngwr-input-testing.mjs.map +1 -1
  246. package/fesm2022/ngwr-input.mjs +356 -303
  247. package/fesm2022/ngwr-input.mjs.map +1 -1
  248. package/fesm2022/ngwr-keyboard.mjs +63 -45
  249. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  250. package/fesm2022/ngwr-knob-testing.mjs +101 -223
  251. package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
  252. package/fesm2022/ngwr-knob.mjs +421 -303
  253. package/fesm2022/ngwr-knob.mjs.map +1 -1
  254. package/fesm2022/ngwr-layout.mjs +362 -207
  255. package/fesm2022/ngwr-layout.mjs.map +1 -1
  256. package/fesm2022/ngwr-lightbox-testing.mjs +100 -221
  257. package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -1
  258. package/fesm2022/ngwr-lightbox.mjs +335 -268
  259. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  260. package/fesm2022/ngwr-line-chart-testing.mjs +65 -133
  261. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
  262. package/fesm2022/ngwr-line-chart.mjs +356 -281
  263. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  264. package/fesm2022/ngwr-list.mjs +251 -134
  265. package/fesm2022/ngwr-list.mjs.map +1 -1
  266. package/fesm2022/ngwr-loading-bar-router.mjs +26 -68
  267. package/fesm2022/ngwr-loading-bar-router.mjs.map +1 -1
  268. package/fesm2022/ngwr-loading-bar.mjs +173 -186
  269. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  270. package/fesm2022/ngwr-markdown-testing.mjs +174 -505
  271. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -1
  272. package/fesm2022/ngwr-markdown.mjs +1578 -2219
  273. package/fesm2022/ngwr-markdown.mjs.map +1 -1
  274. package/fesm2022/ngwr-marquee-testing.mjs +118 -331
  275. package/fesm2022/ngwr-marquee-testing.mjs.map +1 -1
  276. package/fesm2022/ngwr-marquee.mjs +411 -230
  277. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  278. package/fesm2022/ngwr-media.mjs +100 -127
  279. package/fesm2022/ngwr-media.mjs.map +1 -1
  280. package/fesm2022/ngwr-mention-testing.mjs +179 -506
  281. package/fesm2022/ngwr-mention-testing.mjs.map +1 -1
  282. package/fesm2022/ngwr-mention.mjs +668 -732
  283. package/fesm2022/ngwr-mention.mjs.map +1 -1
  284. package/fesm2022/ngwr-meta.mjs +257 -329
  285. package/fesm2022/ngwr-meta.mjs.map +1 -1
  286. package/fesm2022/ngwr-meter-group-testing.mjs +56 -101
  287. package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
  288. package/fesm2022/ngwr-meter-group.mjs +206 -114
  289. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  290. package/fesm2022/ngwr-overlay.mjs +264 -576
  291. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  292. package/fesm2022/ngwr-page-header.mjs +107 -67
  293. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  294. package/fesm2022/ngwr-pagination-testing.mjs +125 -388
  295. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
  296. package/fesm2022/ngwr-pagination.mjs +505 -335
  297. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  298. package/fesm2022/ngwr-pipes.mjs +343 -382
  299. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  300. package/fesm2022/ngwr-platform.mjs +182 -221
  301. package/fesm2022/ngwr-platform.mjs.map +1 -1
  302. package/fesm2022/ngwr-popconfirm-testing.mjs +112 -307
  303. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -1
  304. package/fesm2022/ngwr-popconfirm.mjs +474 -277
  305. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  306. package/fesm2022/ngwr-popover-testing.mjs +114 -332
  307. package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
  308. package/fesm2022/ngwr-popover.mjs +1106 -1311
  309. package/fesm2022/ngwr-popover.mjs.map +1 -1
  310. package/fesm2022/ngwr-progress.mjs +124 -68
  311. package/fesm2022/ngwr-progress.mjs.map +1 -1
  312. package/fesm2022/ngwr-pull-to-refresh.mjs +198 -185
  313. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  314. package/fesm2022/ngwr-qr.mjs +1179 -1100
  315. package/fesm2022/ngwr-qr.mjs.map +1 -1
  316. package/fesm2022/ngwr-radio-testing.mjs +138 -389
  317. package/fesm2022/ngwr-radio-testing.mjs.map +1 -1
  318. package/fesm2022/ngwr-radio.mjs +346 -239
  319. package/fesm2022/ngwr-radio.mjs.map +1 -1
  320. package/fesm2022/ngwr-rating-testing.mjs +153 -390
  321. package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
  322. package/fesm2022/ngwr-rating.mjs +281 -247
  323. package/fesm2022/ngwr-rating.mjs.map +1 -1
  324. package/fesm2022/ngwr-result.mjs +353 -114
  325. package/fesm2022/ngwr-result.mjs.map +1 -1
  326. package/fesm2022/ngwr-rotating-text-testing.mjs +45 -215
  327. package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -1
  328. package/fesm2022/ngwr-rotating-text.mjs +402 -272
  329. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  330. package/fesm2022/ngwr-schema-form.mjs +384 -213
  331. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  332. package/fesm2022/ngwr-scroll.mjs +95 -105
  333. package/fesm2022/ngwr-scroll.mjs.map +1 -1
  334. package/fesm2022/ngwr-segmented-testing.mjs +184 -593
  335. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
  336. package/fesm2022/ngwr-segmented.mjs +235 -251
  337. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  338. package/fesm2022/ngwr-select-testing.mjs +139 -284
  339. package/fesm2022/ngwr-select-testing.mjs.map +1 -1
  340. package/fesm2022/ngwr-select.mjs +1784 -2098
  341. package/fesm2022/ngwr-select.mjs.map +1 -1
  342. package/fesm2022/ngwr-shiny-text-testing.mjs +83 -228
  343. package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -1
  344. package/fesm2022/ngwr-shiny-text.mjs +304 -131
  345. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  346. package/fesm2022/ngwr-sidebar.mjs +256 -205
  347. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  348. package/fesm2022/ngwr-skeleton.mjs +101 -72
  349. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  350. package/fesm2022/ngwr-slider-testing.mjs +191 -473
  351. package/fesm2022/ngwr-slider-testing.mjs.map +1 -1
  352. package/fesm2022/ngwr-slider.mjs +430 -443
  353. package/fesm2022/ngwr-slider.mjs.map +1 -1
  354. package/fesm2022/ngwr-sparkline-testing.mjs +37 -74
  355. package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -1
  356. package/fesm2022/ngwr-sparkline.mjs +311 -196
  357. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  358. package/fesm2022/ngwr-speed-dial-testing.mjs +135 -278
  359. package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
  360. package/fesm2022/ngwr-speed-dial.mjs +242 -140
  361. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  362. package/fesm2022/ngwr-spinner.mjs +97 -60
  363. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  364. package/fesm2022/ngwr-splash-cursor-testing.mjs +23 -87
  365. package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -1
  366. package/fesm2022/ngwr-splash-cursor.mjs +980 -725
  367. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  368. package/fesm2022/ngwr-split-text-testing.mjs +48 -218
  369. package/fesm2022/ngwr-split-text-testing.mjs.map +1 -1
  370. package/fesm2022/ngwr-split-text.mjs +365 -220
  371. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  372. package/fesm2022/ngwr-splitter-testing.mjs +107 -241
  373. package/fesm2022/ngwr-splitter-testing.mjs.map +1 -1
  374. package/fesm2022/ngwr-splitter.mjs +222 -184
  375. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  376. package/fesm2022/ngwr-spotlight-card-testing.mjs +105 -360
  377. package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -1
  378. package/fesm2022/ngwr-spotlight-card.mjs +217 -135
  379. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  380. package/fesm2022/ngwr-squircle.mjs +410 -326
  381. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  382. package/fesm2022/ngwr-star-border-testing.mjs +53 -168
  383. package/fesm2022/ngwr-star-border-testing.mjs.map +1 -1
  384. package/fesm2022/ngwr-star-border.mjs +160 -70
  385. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  386. package/fesm2022/ngwr-statistic.mjs +570 -389
  387. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  388. package/fesm2022/ngwr-stepper-testing.mjs +158 -471
  389. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
  390. package/fesm2022/ngwr-stepper.mjs +336 -215
  391. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  392. package/fesm2022/ngwr-storage.mjs +217 -330
  393. package/fesm2022/ngwr-storage.mjs.map +1 -1
  394. package/fesm2022/ngwr-switch-testing.mjs +42 -75
  395. package/fesm2022/ngwr-switch-testing.mjs.map +1 -1
  396. package/fesm2022/ngwr-switch.mjs +197 -114
  397. package/fesm2022/ngwr-switch.mjs.map +1 -1
  398. package/fesm2022/ngwr-table-testing.mjs +238 -572
  399. package/fesm2022/ngwr-table-testing.mjs.map +1 -1
  400. package/fesm2022/ngwr-table.mjs +1875 -1446
  401. package/fesm2022/ngwr-table.mjs.map +1 -1
  402. package/fesm2022/ngwr-tabs-router.mjs +84 -153
  403. package/fesm2022/ngwr-tabs-router.mjs.map +1 -1
  404. package/fesm2022/ngwr-tabs-testing.mjs +217 -617
  405. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
  406. package/fesm2022/ngwr-tabs.mjs +402 -425
  407. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  408. package/fesm2022/ngwr-textarea-testing.mjs +84 -236
  409. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -1
  410. package/fesm2022/ngwr-textarea.mjs +385 -264
  411. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  412. package/fesm2022/ngwr-theme.mjs +247 -443
  413. package/fesm2022/ngwr-theme.mjs.map +1 -1
  414. package/fesm2022/ngwr-tilt-card-testing.mjs +79 -186
  415. package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -1
  416. package/fesm2022/ngwr-tilt-card.mjs +257 -168
  417. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  418. package/fesm2022/ngwr-timeline.mjs +157 -70
  419. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  420. package/fesm2022/ngwr-toast-testing.mjs +59 -99
  421. package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
  422. package/fesm2022/ngwr-toast.mjs +769 -691
  423. package/fesm2022/ngwr-toast.mjs.map +1 -1
  424. package/fesm2022/ngwr-toolbar.mjs +73 -58
  425. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  426. package/fesm2022/ngwr-tour-testing.mjs +75 -171
  427. package/fesm2022/ngwr-tour-testing.mjs.map +1 -1
  428. package/fesm2022/ngwr-tour.mjs +333 -347
  429. package/fesm2022/ngwr-tour.mjs.map +1 -1
  430. package/fesm2022/ngwr-transfer-testing.mjs +195 -534
  431. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -1
  432. package/fesm2022/ngwr-transfer.mjs +441 -322
  433. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  434. package/fesm2022/ngwr-tree-testing.mjs +277 -754
  435. package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
  436. package/fesm2022/ngwr-tree.mjs +876 -906
  437. package/fesm2022/ngwr-tree.mjs.map +1 -1
  438. package/fesm2022/ngwr-typewriter-testing.mjs +50 -237
  439. package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
  440. package/fesm2022/ngwr-typewriter.mjs +461 -242
  441. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  442. package/fesm2022/ngwr-typography.mjs +142 -81
  443. package/fesm2022/ngwr-typography.mjs.map +1 -1
  444. package/fesm2022/ngwr-utils.mjs +304 -613
  445. package/fesm2022/ngwr-utils.mjs.map +1 -1
  446. package/fesm2022/ngwr-validators.mjs +179 -361
  447. package/fesm2022/ngwr-validators.mjs.map +1 -1
  448. package/fesm2022/ngwr-version.mjs +17 -47
  449. package/fesm2022/ngwr-version.mjs.map +1 -1
  450. package/fesm2022/ngwr-virtual-scroll.mjs +259 -125
  451. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  452. package/fesm2022/ngwr-waves-testing.mjs +34 -125
  453. package/fesm2022/ngwr-waves-testing.mjs.map +1 -1
  454. package/fesm2022/ngwr-waves.mjs +816 -373
  455. package/fesm2022/ngwr-waves.mjs.map +1 -1
  456. package/fesm2022/ngwr-window-testing.mjs +171 -366
  457. package/fesm2022/ngwr-window-testing.mjs.map +1 -1
  458. package/fesm2022/ngwr-window.mjs +1437 -1351
  459. package/fesm2022/ngwr-window.mjs.map +1 -1
  460. package/fesm2022/ngwr.mjs +0 -4
  461. package/input-number/styles/_index.scss +33 -35
  462. package/llms-full.txt +2 -2
  463. package/package.json +1 -1
  464. package/segmented/styles/_index.scss +10 -3
  465. package/types/ngwr-action-sheet-testing.d.ts +174 -200
  466. package/types/ngwr-action-sheet.d.ts +83 -45
  467. package/types/ngwr-affix.d.ts +27 -22
  468. package/types/ngwr-alert.d.ts +93 -59
  469. package/types/ngwr-anchor.d.ts +52 -35
  470. package/types/ngwr-aurora.d.ts +53 -35
  471. package/types/ngwr-avatar.d.ts +97 -81
  472. package/types/ngwr-back-top.d.ts +36 -23
  473. package/types/ngwr-badge.d.ts +160 -105
  474. package/types/ngwr-bar-chart-testing.d.ts +40 -58
  475. package/types/ngwr-bar-chart.d.ts +86 -60
  476. package/types/ngwr-blur-text-testing.d.ts +103 -121
  477. package/types/ngwr-blur-text.d.ts +99 -60
  478. package/types/ngwr-border-glow-testing.d.ts +155 -173
  479. package/types/ngwr-border-glow.d.ts +93 -45
  480. package/types/ngwr-breadcrumbs.d.ts +60 -32
  481. package/types/ngwr-burger.d.ts +38 -23
  482. package/types/ngwr-button-testing.d.ts +41 -59
  483. package/types/ngwr-button.d.ts +213 -163
  484. package/types/ngwr-calendar-heatmap-testing.d.ts +38 -56
  485. package/types/ngwr-calendar-heatmap.d.ts +151 -105
  486. package/types/ngwr-calendar-testing.d.ts +198 -224
  487. package/types/ngwr-calendar.d.ts +285 -246
  488. package/types/ngwr-card.d.ts +41 -23
  489. package/types/ngwr-carousel-testing.d.ts +196 -214
  490. package/types/ngwr-carousel.d.ts +173 -122
  491. package/types/ngwr-cascader-testing.d.ts +338 -372
  492. package/types/ngwr-cascader.d.ts +230 -161
  493. package/types/ngwr-checkbox-testing.d.ts +45 -63
  494. package/types/ngwr-checkbox.d.ts +238 -183
  495. package/types/ngwr-circular-text-testing.d.ts +108 -126
  496. package/types/ngwr-circular-text.d.ts +53 -41
  497. package/types/ngwr-click-spark.d.ts +82 -50
  498. package/types/ngwr-clipboard.d.ts +40 -44
  499. package/types/ngwr-collapse-testing.d.ts +193 -219
  500. package/types/ngwr-collapse.d.ts +82 -71
  501. package/types/ngwr-color-picker-testing.d.ts +211 -237
  502. package/types/ngwr-color-picker.d.ts +343 -300
  503. package/types/ngwr-command-palette-testing.d.ts +311 -345
  504. package/types/ngwr-command-palette.d.ts +257 -197
  505. package/types/ngwr-compare.d.ts +102 -67
  506. package/types/ngwr-confetti.d.ts +51 -55
  507. package/types/ngwr-config.d.ts +44 -71
  508. package/types/ngwr-context-menu-testing.d.ts +301 -327
  509. package/types/ngwr-context-menu.d.ts +350 -310
  510. package/types/ngwr-cookie.d.ts +37 -41
  511. package/types/ngwr-counter.d.ts +223 -128
  512. package/types/ngwr-date-adapters-fns.d.ts +40 -59
  513. package/types/ngwr-date-adapters-luxon.d.ts +61 -72
  514. package/types/ngwr-date-picker-testing.d.ts +295 -339
  515. package/types/ngwr-date-picker.d.ts +759 -583
  516. package/types/ngwr-date.d.ts +229 -258
  517. package/types/ngwr-decrypt-text-testing.d.ts +140 -158
  518. package/types/ngwr-decrypt-text.d.ts +104 -62
  519. package/types/ngwr-density.d.ts +42 -57
  520. package/types/ngwr-descriptions.d.ts +50 -27
  521. package/types/ngwr-dialog-testing.d.ts +36 -54
  522. package/types/ngwr-dialog.d.ts +166 -190
  523. package/types/ngwr-directives.d.ts +82 -60
  524. package/types/ngwr-divider.d.ts +78 -62
  525. package/types/ngwr-donut-chart-testing.d.ts +36 -54
  526. package/types/ngwr-donut-chart.d.ts +102 -66
  527. package/types/ngwr-drag-drop.d.ts +139 -106
  528. package/types/ngwr-drawer-testing.d.ts +141 -159
  529. package/types/ngwr-drawer.d.ts +374 -316
  530. package/types/ngwr-dropdown-testing.d.ts +128 -154
  531. package/types/ngwr-dropdown.d.ts +260 -166
  532. package/types/ngwr-editor-testing.d.ts +329 -301
  533. package/types/ngwr-editor.d.ts +445 -300
  534. package/types/ngwr-empty.d.ts +41 -28
  535. package/types/ngwr-event-calendar-testing.d.ts +217 -243
  536. package/types/ngwr-event-calendar.d.ts +340 -298
  537. package/types/ngwr-falling-text-testing.d.ts +108 -126
  538. package/types/ngwr-falling-text.d.ts +57 -35
  539. package/types/ngwr-file-upload-testing.d.ts +133 -151
  540. package/types/ngwr-file-upload.d.ts +193 -128
  541. package/types/ngwr-form-testing.d.ts +255 -282
  542. package/types/ngwr-form.d.ts +324 -306
  543. package/types/ngwr-fuzzy-text-testing.d.ts +63 -81
  544. package/types/ngwr-fuzzy-text.d.ts +152 -65
  545. package/types/ngwr-gauge-testing.d.ts +43 -61
  546. package/types/ngwr-gauge.d.ts +113 -61
  547. package/types/ngwr-glitch-text-testing.d.ts +125 -143
  548. package/types/ngwr-glitch-text.d.ts +47 -24
  549. package/types/ngwr-gradient-text-testing.d.ts +114 -132
  550. package/types/ngwr-gradient-text.d.ts +51 -24
  551. package/types/ngwr-graph-testing.d.ts +89 -115
  552. package/types/ngwr-graph.d.ts +137 -124
  553. package/types/ngwr-hotkey.d.ts +85 -75
  554. package/types/ngwr-i18n-ar.d.ts +2 -5
  555. package/types/ngwr-i18n-cs.d.ts +2 -5
  556. package/types/ngwr-i18n-de.d.ts +2 -5
  557. package/types/ngwr-i18n-en.d.ts +2 -5
  558. package/types/ngwr-i18n-es.d.ts +2 -5
  559. package/types/ngwr-i18n-fr.d.ts +2 -5
  560. package/types/ngwr-i18n-he.d.ts +2 -5
  561. package/types/ngwr-i18n-hi.d.ts +2 -5
  562. package/types/ngwr-i18n-id.d.ts +2 -5
  563. package/types/ngwr-i18n-it.d.ts +2 -5
  564. package/types/ngwr-i18n-ja.d.ts +2 -5
  565. package/types/ngwr-i18n-ko.d.ts +2 -5
  566. package/types/ngwr-i18n-nl.d.ts +2 -5
  567. package/types/ngwr-i18n-pl.d.ts +2 -5
  568. package/types/ngwr-i18n-pt.d.ts +2 -5
  569. package/types/ngwr-i18n-ru.d.ts +2 -5
  570. package/types/ngwr-i18n-sv.d.ts +2 -5
  571. package/types/ngwr-i18n-tr.d.ts +2 -5
  572. package/types/ngwr-i18n-uk.d.ts +2 -5
  573. package/types/ngwr-i18n-vi.d.ts +2 -5
  574. package/types/ngwr-i18n-zh-TW.d.ts +2 -5
  575. package/types/ngwr-i18n-zh.d.ts +2 -5
  576. package/types/ngwr-i18n.d.ts +202 -246
  577. package/types/ngwr-icon-adapters-feather.d.ts +2 -11
  578. package/types/ngwr-icon-adapters-lucide.d.ts +2 -12
  579. package/types/ngwr-icon.d.ts +62 -84
  580. package/types/ngwr-image-cropper-testing.d.ts +116 -134
  581. package/types/ngwr-image-cropper.d.ts +287 -252
  582. package/types/ngwr-input-number-testing.d.ts +164 -182
  583. package/types/ngwr-input-number.d.ts +231 -150
  584. package/types/ngwr-input-otp-testing.d.ts +210 -244
  585. package/types/ngwr-input-otp.d.ts +167 -123
  586. package/types/ngwr-input-testing.d.ts +42 -60
  587. package/types/ngwr-input.d.ts +118 -94
  588. package/types/ngwr-keyboard.d.ts +14 -12
  589. package/types/ngwr-knob-testing.d.ts +106 -124
  590. package/types/ngwr-knob.d.ts +194 -129
  591. package/types/ngwr-layout.d.ts +57 -40
  592. package/types/ngwr-lightbox-testing.d.ts +101 -119
  593. package/types/ngwr-lightbox.d.ts +140 -87
  594. package/types/ngwr-line-chart-testing.d.ts +51 -69
  595. package/types/ngwr-line-chart.d.ts +171 -134
  596. package/types/ngwr-list.d.ts +55 -27
  597. package/types/ngwr-loading-bar-router.d.ts +2 -12
  598. package/types/ngwr-loading-bar.d.ts +45 -39
  599. package/types/ngwr-markdown-testing.d.ts +323 -350
  600. package/types/ngwr-markdown.d.ts +432 -318
  601. package/types/ngwr-marquee-testing.d.ts +190 -216
  602. package/types/ngwr-marquee.d.ts +127 -75
  603. package/types/ngwr-media.d.ts +25 -39
  604. package/types/ngwr-mention-testing.d.ts +274 -300
  605. package/types/ngwr-mention.d.ts +249 -164
  606. package/types/ngwr-meta.d.ts +93 -108
  607. package/types/ngwr-meter-group-testing.d.ts +33 -51
  608. package/types/ngwr-meter-group.d.ts +86 -60
  609. package/types/ngwr-overlay.d.ts +57 -132
  610. package/types/ngwr-page-header.d.ts +32 -19
  611. package/types/ngwr-pagination-testing.d.ts +215 -233
  612. package/types/ngwr-pagination.d.ts +213 -141
  613. package/types/ngwr-pipes.d.ts +67 -84
  614. package/types/ngwr-platform.d.ts +52 -57
  615. package/types/ngwr-popconfirm-testing.d.ts +181 -199
  616. package/types/ngwr-popconfirm.d.ts +151 -82
  617. package/types/ngwr-popover-testing.d.ts +183 -201
  618. package/types/ngwr-popover.d.ts +291 -207
  619. package/types/ngwr-progress.d.ts +38 -25
  620. package/types/ngwr-pull-to-refresh.d.ts +55 -40
  621. package/types/ngwr-qr.d.ts +79 -37
  622. package/types/ngwr-radio-testing.d.ts +208 -234
  623. package/types/ngwr-radio.d.ts +162 -125
  624. package/types/ngwr-rating-testing.d.ts +218 -244
  625. package/types/ngwr-rating.d.ts +146 -111
  626. package/types/ngwr-result.d.ts +85 -41
  627. package/types/ngwr-rotating-text-testing.d.ts +107 -125
  628. package/types/ngwr-rotating-text.d.ts +96 -52
  629. package/types/ngwr-schema-form.d.ts +57 -49
  630. package/types/ngwr-scroll.d.ts +27 -31
  631. package/types/ngwr-segmented-testing.d.ts +333 -359
  632. package/types/ngwr-segmented.d.ts +183 -165
  633. package/types/ngwr-select-testing.d.ts +128 -154
  634. package/types/ngwr-select.d.ts +1083 -906
  635. package/types/ngwr-shiny-text-testing.d.ts +82 -100
  636. package/types/ngwr-shiny-text.d.ts +83 -36
  637. package/types/ngwr-sidebar.d.ts +108 -93
  638. package/types/ngwr-skeleton.d.ts +34 -26
  639. package/types/ngwr-slider-testing.d.ts +228 -254
  640. package/types/ngwr-slider.d.ts +236 -186
  641. package/types/ngwr-sparkline-testing.d.ts +29 -47
  642. package/types/ngwr-sparkline.d.ts +130 -88
  643. package/types/ngwr-speed-dial-testing.d.ts +129 -155
  644. package/types/ngwr-speed-dial.d.ts +92 -57
  645. package/types/ngwr-spinner.d.ts +30 -23
  646. package/types/ngwr-splash-cursor-testing.d.ts +42 -60
  647. package/types/ngwr-splash-cursor.d.ts +129 -61
  648. package/types/ngwr-split-text-testing.d.ts +119 -137
  649. package/types/ngwr-split-text.d.ts +120 -71
  650. package/types/ngwr-splitter-testing.d.ts +114 -132
  651. package/types/ngwr-splitter.d.ts +85 -55
  652. package/types/ngwr-spotlight-card-testing.d.ts +177 -203
  653. package/types/ngwr-spotlight-card.d.ts +50 -32
  654. package/types/ngwr-squircle.d.ts +112 -70
  655. package/types/ngwr-star-border-testing.d.ts +74 -92
  656. package/types/ngwr-star-border.d.ts +42 -20
  657. package/types/ngwr-statistic.d.ts +210 -130
  658. package/types/ngwr-stepper-testing.d.ts +258 -284
  659. package/types/ngwr-stepper.d.ts +112 -75
  660. package/types/ngwr-storage.d.ts +96 -118
  661. package/types/ngwr-switch-testing.d.ts +26 -44
  662. package/types/ngwr-switch.d.ts +92 -62
  663. package/types/ngwr-table-testing.d.ts +291 -333
  664. package/types/ngwr-table.d.ts +922 -707
  665. package/types/ngwr-tabs-router.d.ts +21 -24
  666. package/types/ngwr-tabs-testing.d.ts +354 -380
  667. package/types/ngwr-tabs.d.ts +169 -155
  668. package/types/ngwr-textarea-testing.d.ts +123 -141
  669. package/types/ngwr-textarea.d.ts +160 -105
  670. package/types/ngwr-theme.d.ts +81 -163
  671. package/types/ngwr-tilt-card-testing.d.ts +94 -112
  672. package/types/ngwr-tilt-card.d.ts +64 -35
  673. package/types/ngwr-timeline.d.ts +36 -19
  674. package/types/ngwr-toast-testing.d.ts +37 -55
  675. package/types/ngwr-toast.d.ts +165 -209
  676. package/types/ngwr-toolbar.d.ts +17 -14
  677. package/types/ngwr-tour-testing.d.ts +84 -102
  678. package/types/ngwr-tour.d.ts +142 -144
  679. package/types/ngwr-transfer-testing.d.ts +293 -328
  680. package/types/ngwr-transfer.d.ts +217 -159
  681. package/types/ngwr-tree-testing.d.ts +428 -454
  682. package/types/ngwr-tree.d.ts +400 -296
  683. package/types/ngwr-typewriter-testing.d.ts +125 -143
  684. package/types/ngwr-typewriter.d.ts +137 -63
  685. package/types/ngwr-typography.d.ts +49 -27
  686. package/types/ngwr-utils.d.ts +100 -107
  687. package/types/ngwr-validators.d.ts +94 -104
  688. package/types/ngwr-version.d.ts +3 -14
  689. package/types/ngwr-virtual-scroll.d.ts +86 -58
  690. package/types/ngwr-waves-testing.d.ts +61 -79
  691. package/types/ngwr-waves.d.ts +116 -63
  692. package/types/ngwr-window-testing.d.ts +178 -204
  693. package/types/ngwr-window.d.ts +299 -325
  694. package/types/ngwr.d.ts +1 -2
  695. package/fesm2022/ngwr.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"ngwr-slider-testing.mjs","sources":["../../../projects/lib/slider/testing/wr-slider-thumb-harness.ts","../../../projects/lib/slider/testing/wr-slider-harness.ts","../../../projects/lib/slider/testing/ngwr-slider-testing.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate, TestKey } from '@angular/cdk/testing';\n\nimport type { WrSliderThumbHarnessFilters, WrSliderThumbPosition } from './interfaces';\n\n/** How many key presses {@link WrSliderThumbHarness.setValue} spends before it gives up. */\nconst MAX_PRESSES = 1000;\n\n/**\n * Test harness for one thumb of a `<wr-slider>`.\n *\n * A single-thumb slider has exactly one; a `range` one has two, and each thumb\n * is the other's limit — the lower thumb's `aria-valuemax` is wherever the upper\n * thumb is standing, and vice versa. So {@link getMin} / {@link getMax} answer\n * the room THIS thumb has, not the slider's bounds, which is exactly what a\n * screen reader announces and exactly the window {@link setValue} can reach.\n *\n * Every write here is a KEY PRESS, because a drag is not something a unit test\n * can perform — see {@link setValue}.\n *\n * Every press is on the BLOCK axis — `ArrowUp` / `ArrowDown`, `PageUp` /\n * `PageDown`, `Home` / `End` — so the harness means the same thing in both\n * reading directions. That is not a detail: the component's ← / → follow the\n * VISUAL track, so under `dir=\"rtl\"` a right-arrow LOWERS the value, and a\n * harness that pressed it would have `stepUp()` stepping down while every LTR\n * spec stayed green. It cannot detect the direction to compensate either —\n * `Directionality` is injected, not published to the DOM — so it stays on the\n * axis `dir` does not govern.\n *\n * @example\n * ```ts\n * const upper = await slider.getHighThumb();\n *\n * await upper.setValue(90);\n * expect(await upper.getValue()).toBe(90);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderThumbHarness extends ComponentHarness {\n /**\n * The thumb is a real `<button role=\"slider\">`, so it is focusable without a\n * `tabindex` and leaves the tab order by itself when disabled. Anchored on the\n * BEM class rather than on `[role=\"slider\"]`: the class also carries the\n * `--low` / `--high` modifier this harness reads.\n */\n static hostSelector = '.wr-slider__thumb';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderThumbHarnessFilters = {}): HarnessPredicate<WrSliderThumbHarness> {\n return new HarnessPredicate(WrSliderThumbHarness, options)\n .addOption('position', options.position, async (harness, position) => (await harness.getPosition()) === position)\n .addOption('value', options.value, async (harness, value) => (await harness.getValue()) === value)\n .addOption('label', options.label, (harness, label) => HarnessPredicate.stringMatches(harness.getLabel(), label));\n }\n\n /** Which end this thumb is. A single-thumb slider's thumb is the `'low'` one. */\n async getPosition(): Promise<WrSliderThumbPosition> {\n return (await (await this.host()).hasClass('wr-slider__thumb--high')) ? 'high' : 'low';\n }\n\n /** Where the thumb is standing, from `aria-valuenow` — the number a screen reader reads out. */\n async getValue(): Promise<number> {\n return this.numeric('aria-valuenow');\n }\n\n /**\n * The lowest value THIS thumb can reach (`aria-valuemin`).\n *\n * On a range slider's upper thumb that is the lower thumb, not the slider's\n * `min` — the two cannot cross, so the neighbour is the real floor.\n */\n async getMin(): Promise<number> {\n return this.numeric('aria-valuemin');\n }\n\n /**\n * The highest value THIS thumb can reach (`aria-valuemax`).\n *\n * On a range slider's lower thumb that is the upper thumb, not the slider's\n * `max`.\n */\n async getMax(): Promise<number> {\n return this.numeric('aria-valuemax');\n }\n\n /** The thumb's accessible name — `'Value'`, or `'Lower value'` / `'Upper value'` in range mode. */\n async getLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** What a screen reader is told this control is. The role is why the arrows mean anything here. */\n async getRole(): Promise<string | null> {\n return (await this.host()).getAttribute('role');\n }\n\n /** Whether the thumb refuses the keyboard. Read from the button's native `disabled`. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * One step up (`ArrowUp`). A disabled thumb does not move.\n *\n * `ArrowRight` is the same key press in an LTR slider and the OPPOSITE one in\n * an RTL slider, so the vertical arrow is the one that means \"up\" everywhere.\n */\n async stepUp(): Promise<void> {\n return this.press(TestKey.UP_ARROW);\n }\n\n /** One step down (`ArrowDown`; `ArrowLeft` only agrees in LTR — see {@link stepUp}). */\n async stepDown(): Promise<void> {\n return this.press(TestKey.DOWN_ARROW);\n }\n\n /** Ten steps up (`PageUp`; `Shift`+arrow is the same stride). */\n async largeStepUp(): Promise<void> {\n return this.press(TestKey.PAGE_UP);\n }\n\n /** Ten steps down (`PageDown`; `Shift`+arrow is the same stride). */\n async largeStepDown(): Promise<void> {\n return this.press(TestKey.PAGE_DOWN);\n }\n\n /**\n * `Home` — jump to the lowest value this thumb can reach.\n *\n * On a range slider's UPPER thumb that lands on the lower thumb, not on the\n * slider's `min`: the component asks for `min` and then refuses to let the\n * ends cross, so the range collapses instead of inverting.\n */\n async toMin(): Promise<void> {\n return this.press(TestKey.HOME);\n }\n\n /**\n * `End` — jump to the highest value this thumb can reach.\n *\n * On a range slider's LOWER thumb that lands on the upper thumb, not on the\n * slider's `max`, for the same reason as {@link toMin}.\n */\n async toMax(): Promise<void> {\n return this.press(TestKey.END);\n }\n\n /**\n * Walk the thumb to `value` FROM THE KEYBOARD — `PageUp` / `PageDown` for the\n * distance, arrows for the last stretch, `Home` / `End` for the bounds. That\n * is the accessible path, and the only one a unit test can trust.\n *\n * There is deliberately no drag. jsdom has no layout: the track measures 0×0\n * and `getBoundingClientRect()` answers all zeros, while the component turns a\n * pointer into a value by dividing the offset by the track width. Every\n * positive offset therefore divides by zero, clamps to a ratio of 1 and writes\n * the slider's MAX — quietly, with no error to notice. A coordinate cannot\n * mean anything here.\n *\n * It costs one press per stride, so the walk is not free: crossing most of a\n * 0–100 range costs ~19 presses at `step=\"1\"` and ~109 at `step=\"0.1\"`.\n * Landing exactly on a bound is one press, whatever the step. The walk gives\n * up after 1000 presses — a 0–100 range reaches that at `step=\"0.01\"` or finer\n * — and throws rather than spin.\n *\n * A bound the step grid misses is announced but not reachable: `aria-valuemax`\n * is the `max` input, while the component snaps every key press onto whole\n * steps from `min`, so `max=\"100\" step=\"3\"` stops at 99. That is the off-grid\n * throw, arriving for `setValue(100)`.\n *\n * Either the thumb ends up exactly on `value` or this throws: when `value` is\n * outside the thumb's window (the other thumb is one end of it in range mode),\n * when the thumb is disabled, and when `value` is not on the step grid — on\n * the last one the thumb is left at the nearest value it could reach.\n */\n async setValue(value: number): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('WrSliderThumbHarness.setValue(): the slider is disabled, so the keyboard cannot move it.');\n }\n\n const [min, max] = [await this.getMin(), await this.getMax()];\n if (value < min || value > max) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): ${value} is outside the [${min}, ${max}] window this thumb can ` +\n 'reach. On a range slider the other thumb is one end of that window — move it first.'\n );\n }\n\n let current = await this.getValue();\n if (current === value) return;\n // The bounds are one key press, and on a range thumb `Home` / `End` stop at\n // the neighbour — which is precisely this window's end. The landing is still\n // checked: a `max` that is not a whole number of steps from `min` is\n // announced by `aria-valuemax` and refused by the component's snapping.\n if (value === min || value === max) {\n await (value === min ? this.toMin() : this.toMax());\n return this.assertSettled(await this.getValue(), value, min);\n }\n\n let presses = 0;\n // Start on the ten-step stride: neither stride is published to the DOM, so\n // the only way to learn one is to take it and look. One overshoot is pressed\n // back off and the rest of the walk goes a single step at a time.\n let striding = true;\n\n while (current !== value) {\n if (presses >= MAX_PRESSES) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): gave up walking to ${value} after ${MAX_PRESSES} key presses ` +\n `(reached ${current}). A step this fine is not something a keyboard reaches — write the ` +\n 'slider through its `[(value)]` model instead.'\n );\n }\n\n // Re-derived every pass so the walk follows wherever the thumb actually\n // landed rather than where a stride aimed. It never has to reverse: the\n // window check above keeps the target inside [min, max], so pressing back\n // off an overshoot lands at or short of where the stride began — on the\n // same side of the target it started on.\n const direction: 1 | -1 = value > current ? 1 : -1;\n await this.press(this.strideKey(direction, striding));\n presses++;\n\n const next = await this.getValue();\n // Nothing moved: the thumb is pinned against a bound or its neighbour, and\n // pressing again would only spin. The final check below reports where.\n if (next === current) break;\n\n const overshot = direction === 1 ? next > value : next < value;\n current = next;\n if (!overshot) continue;\n\n await this.press(this.strideKey(direction === 1 ? -1 : 1, striding));\n presses++;\n current = await this.getValue();\n\n // Single steps straddling the target means it is not on the step grid.\n if (!striding) break;\n striding = false;\n }\n\n this.assertSettled(current, value, min);\n }\n\n /**\n * The landing check every path through {@link setValue} ends on: exactly the\n * value asked for, or an error naming where the thumb stopped instead.\n */\n private assertSettled(current: number, value: number, min: number): void {\n if (current === value) return;\n throw new Error(\n `WrSliderThumbHarness.setValue(): the keyboard settled on ${current} instead of ${value}. The thumb ` +\n `moves in whole steps from ${min}, so only values on that grid are reachable.`\n );\n }\n\n /** The key that moves the thumb one stride in `direction`. */\n private strideKey(direction: 1 | -1, striding: boolean): TestKey {\n if (striding) return direction === 1 ? TestKey.PAGE_UP : TestKey.PAGE_DOWN;\n // The vertical arrows, for the reason {@link stepUp} gives: the horizontal\n // pair swaps meaning under `dir=\"rtl\"`, which would send the fine stretch of\n // the walk away from its target.\n return direction === 1 ? TestKey.UP_ARROW : TestKey.DOWN_ARROW;\n }\n\n /**\n * Press a key on the thumb.\n *\n * `sendKeys` focuses the element first, so this is the whole gesture a user\n * makes — the component listens for `keydown` on the thumb itself.\n */\n private async press(key: TestKey): Promise<void> {\n return (await this.host()).sendKeys(key);\n }\n\n /**\n * One of the ARIA range attributes as a number.\n *\n * Throws instead of handing back `NaN`: a slider whose `aria-valuenow` is not\n * a number is broken in a way every later assertion would describe badly.\n */\n private async numeric(attribute: string): Promise<number> {\n const raw = await (await this.host()).getAttribute(attribute);\n const value = raw === null ? Number.NaN : Number.parseFloat(raw);\n\n if (Number.isNaN(value)) {\n throw new Error(`WrSliderThumbHarness: the thumb's ${attribute} is ${JSON.stringify(raw)}, not a number.`);\n }\n return value;\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport type { WrSliderValue } from 'ngwr/slider';\n\nimport type { WrSliderHarnessFilters, WrSliderThumbHarnessFilters } from './interfaces';\nimport { WrSliderThumbHarness } from './wr-slider-thumb-harness';\n\n/** Element-wise comparison for the `value` filter — a tuple never matches a plain number. */\nfunction sameValue(actual: WrSliderValue, expected: WrSliderValue): boolean {\n if (typeof actual === 'number') return actual === expected;\n if (typeof expected === 'number') return false;\n return actual[0] === expected[0] && actual[1] === expected[1];\n}\n\n/**\n * Test harness for `<wr-slider>` — single-thumb and `range`.\n *\n * Every NUMBER it reads comes off the thumbs' ARIA range trio (`aria-valuenow`,\n * `aria-valuemin`, `aria-valuemax`), which is what a screen reader is told and\n * the only place the slider publishes its value. The mode comes off the host's\n * `wr-slider--range` class and {@link getLabelText} off the rendered text.\n *\n * Everything it WRITES is a key press. A slider is a pointer control, but a\n * pointer control cannot be driven by coordinates in jsdom — there is no layout,\n * so the track measures 0×0 and the component divides every offset by that\n * width: a positive one writes the slider's MAX and `clientX: 0` writes `NaN`,\n * neither of them the value asked for. The keyboard is both the accessible path\n * and the only honest one here; {@link WrSliderThumbHarness.setValue} spells out\n * what the walk costs, and {@link WrSliderThumbHarness} why every one of those\n * presses is on the block axis, which `dir` does not turn around.\n *\n * The `step` is deliberately not readable: the component publishes it nowhere in\n * the DOM (ARIA has no attribute for it), so a spec that needs the number should\n * measure it — `stepUp()` moves by exactly one step.\n *\n * @example\n * ```ts\n * const volume = await loader.getHarness(WrSliderHarness);\n *\n * await volume.setValue(70);\n * expect(await volume.getValue()).toBe(70);\n *\n * const span = await loader.getHarness(WrSliderHarness.with({ range: true }));\n * await span.setRange(30, 60);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderHarness extends ComponentHarness {\n static hostSelector = 'wr-slider';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderHarnessFilters = {}): HarnessPredicate<WrSliderHarness> {\n return new HarnessPredicate(WrSliderHarness, options)\n .addOption('value', options.value, async (harness, value) => sameValue(await harness.getValue(), value))\n .addOption('range', options.range, async (harness, range) => (await harness.isRange()) === range)\n .addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled)\n .addOption('labelText', options.labelText, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), text)\n );\n }\n\n /** Whether the slider has two thumbs and answers with a `[low, high]` tuple. */\n async isRange(): Promise<boolean> {\n return (await this.host()).hasClass('wr-slider--range');\n }\n\n /**\n * Whether the slider refuses interaction.\n *\n * Read from the thumb's native `disabled` rather than from the\n * `wr-slider--disabled` class: the class is paint, while `disabled` on the\n * button is what takes the thumb out of the tab order and what assistive tech\n * reports.\n */\n async isDisabled(): Promise<boolean> {\n return (await this.getLowThumb()).isDisabled();\n }\n\n /**\n * The current value, in the shape the model uses: a plain number for one\n * thumb, `[low, high]` for two.\n */\n async getValue(): Promise<WrSliderValue> {\n const values = await Promise.all((await this.getThumbs()).map(thumb => thumb.getValue()));\n return values.length > 1 ? ([values[0], values[1]] as const) : values[0];\n }\n\n /** The slider's lower bound. */\n async getMin(): Promise<number> {\n return (await this.getThumbs())[0].getMin();\n }\n\n /**\n * The slider's upper bound.\n *\n * Taken from the LAST thumb, because in range mode the thumbs bound each\n * other: the lower one's `aria-valuemax` is wherever the upper one is\n * standing, so only the upper thumb knows the real ceiling.\n */\n async getMax(): Promise<number> {\n const thumbs = await this.getThumbs();\n return thumbs[thumbs.length - 1].getMax();\n }\n\n /**\n * The text the slider prints under the track, or `null` when `showLabel` is\n * off.\n *\n * A range slider joins its ends with an EN DASH — `'20 – 80'`, U+2013 — so an\n * assertion typed with a hyphen will not match.\n */\n async getLabelText(): Promise<string | null> {\n const label = await this.locatorForOptional('.wr-slider__label')();\n return label ? label.text() : null;\n }\n\n /** The slider's thumbs in DOM order: the lower one first. */\n async getThumbs(filters: WrSliderThumbHarnessFilters = {}): Promise<WrSliderThumbHarness[]> {\n return this.locatorForAll(WrSliderThumbHarness.with(filters))();\n }\n\n /** The only thumb of a single-thumb slider, or the lower one of a range slider. */\n async getLowThumb(): Promise<WrSliderThumbHarness> {\n return this.locatorFor(WrSliderThumbHarness.with({ position: 'low' }))();\n }\n\n /** The upper thumb. Throws on a single-thumb slider, which has no such part. */\n async getHighThumb(): Promise<WrSliderThumbHarness> {\n const thumb = await this.locatorForOptional(WrSliderThumbHarness.with({ position: 'high' }))();\n if (!thumb) {\n throw new Error('WrSliderHarness.getHighThumb(): this slider has one thumb — only a `range` slider has two.');\n }\n return thumb;\n }\n\n /**\n * Walk the slider to `value` from the keyboard.\n *\n * Single-thumb only — {@link setRange} moves both ends. See\n * {@link WrSliderThumbHarness.setValue} for what the walk costs and when it\n * throws.\n */\n async setValue(value: number): Promise<void> {\n return (await this.single('setValue')).setValue(value);\n }\n\n /**\n * Walk both ends of a range slider to `[low, high]`.\n *\n * The far end moves FIRST. The thumbs bound each other, so writing `[90, 95]`\n * over `[20, 80]` lower-end-first would be refused outright — 90 is outside\n * the `[0, 80]` window the upper thumb leaves the lower one.\n */\n async setRange(low: number, high: number): Promise<void> {\n if (!(await this.isRange())) {\n throw new Error('WrSliderHarness.setRange(): this slider has one thumb — add `range` to it, or call setValue().');\n }\n if (low > high) {\n throw new Error(`WrSliderHarness.setRange(): ${low} is above ${high}, and the thumbs cannot cross.`);\n }\n\n const lowThumb = await this.getLowThumb();\n const highThumb = await this.getHighThumb();\n\n if (high >= (await highThumb.getValue())) {\n await highThumb.setValue(high);\n await lowThumb.setValue(low);\n return;\n }\n\n await lowThumb.setValue(low);\n await highThumb.setValue(high);\n }\n\n /** One step up (`ArrowUp`). Single-thumb only. A disabled slider does not move. */\n async stepUp(): Promise<void> {\n return (await this.single('stepUp')).stepUp();\n }\n\n /** One step down (`ArrowDown`). Single-thumb only. A disabled slider does not move. */\n async stepDown(): Promise<void> {\n return (await this.single('stepDown')).stepDown();\n }\n\n /** `Home` — jump to the slider's `min`. Single-thumb only. */\n async toMin(): Promise<void> {\n return (await this.single('toMin')).toMin();\n }\n\n /** `End` — jump to the slider's `max`. Single-thumb only. */\n async toMax(): Promise<void> {\n return (await this.single('toMax')).toMax();\n }\n\n /**\n * Move keyboard focus to the slider's first thumb. A range slider's thumbs are\n * two separate tab stops (both are plain buttons — there is no roving\n * `tabindex`), so reach the other one through {@link getHighThumb}.\n */\n async focus(): Promise<void> {\n return (await this.getLowThumb()).focus();\n }\n\n /** Whether any of the slider's thumbs holds focus. */\n async isFocused(): Promise<boolean> {\n const focused = await Promise.all((await this.getThumbs()).map(thumb => thumb.isFocused()));\n return focused.includes(true);\n }\n\n /**\n * The one thumb a single-thumb convenience call means.\n *\n * Range mode gets an error rather than a guess: \"step this slider up\" has two\n * possible answers there, and picking one silently is how a spec ends up\n * asserting against the end it did not move.\n */\n private async single(caller: string): Promise<WrSliderThumbHarness> {\n if (await this.isRange()) {\n throw new Error(\n `WrSliderHarness.${caller}(): this slider has two thumbs — use setRange(), or reach for one end ` +\n 'with getLowThumb() / getHighThumb().'\n );\n }\n return this.getLowThumb();\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ngwr-slider-testing.mjs","names":[],"sources":["../../../projects/lib/slider/testing/wr-slider-thumb-harness.ts","../../../projects/lib/slider/testing/wr-slider-harness.ts"],"sourcesContent":["/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate, TestKey } from '@angular/cdk/testing';\n\nimport type { WrSliderThumbHarnessFilters, WrSliderThumbPosition } from './interfaces';\n\n/** How many key presses {@link WrSliderThumbHarness.setValue} spends before it gives up. */\nconst MAX_PRESSES = 1000;\n\n/**\n * Test harness for one thumb of a `<wr-slider>`.\n *\n * A single-thumb slider has exactly one; a `range` one has two, and each thumb\n * is the other's limit — the lower thumb's `aria-valuemax` is wherever the upper\n * thumb is standing, and vice versa. So {@link getMin} / {@link getMax} answer\n * the room THIS thumb has, not the slider's bounds, which is exactly what a\n * screen reader announces and exactly the window {@link setValue} can reach.\n *\n * Every write here is a KEY PRESS, because a drag is not something a unit test\n * can perform — see {@link setValue}.\n *\n * Every press is on the BLOCK axis — `ArrowUp` / `ArrowDown`, `PageUp` /\n * `PageDown`, `Home` / `End` — so the harness means the same thing in both\n * reading directions. That is not a detail: the component's ← / → follow the\n * VISUAL track, so under `dir=\"rtl\"` a right-arrow LOWERS the value, and a\n * harness that pressed it would have `stepUp()` stepping down while every LTR\n * spec stayed green. It cannot detect the direction to compensate either —\n * `Directionality` is injected, not published to the DOM — so it stays on the\n * axis `dir` does not govern.\n *\n * @example\n * ```ts\n * const upper = await slider.getHighThumb();\n *\n * await upper.setValue(90);\n * expect(await upper.getValue()).toBe(90);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderThumbHarness extends ComponentHarness {\n /**\n * The thumb is a real `<button role=\"slider\">`, so it is focusable without a\n * `tabindex` and leaves the tab order by itself when disabled. Anchored on the\n * BEM class rather than on `[role=\"slider\"]`: the class also carries the\n * `--low` / `--high` modifier this harness reads.\n */\n static hostSelector = '.wr-slider__thumb';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderThumbHarnessFilters = {}): HarnessPredicate<WrSliderThumbHarness> {\n return new HarnessPredicate(WrSliderThumbHarness, options)\n .addOption('position', options.position, async (harness, position) => (await harness.getPosition()) === position)\n .addOption('value', options.value, async (harness, value) => (await harness.getValue()) === value)\n .addOption('label', options.label, (harness, label) => HarnessPredicate.stringMatches(harness.getLabel(), label));\n }\n\n /** Which end this thumb is. A single-thumb slider's thumb is the `'low'` one. */\n async getPosition(): Promise<WrSliderThumbPosition> {\n return (await (await this.host()).hasClass('wr-slider__thumb--high')) ? 'high' : 'low';\n }\n\n /** Where the thumb is standing, from `aria-valuenow` — the number a screen reader reads out. */\n async getValue(): Promise<number> {\n return this.numeric('aria-valuenow');\n }\n\n /**\n * The lowest value THIS thumb can reach (`aria-valuemin`).\n *\n * On a range slider's upper thumb that is the lower thumb, not the slider's\n * `min` — the two cannot cross, so the neighbour is the real floor.\n */\n async getMin(): Promise<number> {\n return this.numeric('aria-valuemin');\n }\n\n /**\n * The highest value THIS thumb can reach (`aria-valuemax`).\n *\n * On a range slider's lower thumb that is the upper thumb, not the slider's\n * `max`.\n */\n async getMax(): Promise<number> {\n return this.numeric('aria-valuemax');\n }\n\n /** The thumb's accessible name — `'Value'`, or `'Lower value'` / `'Upper value'` in range mode. */\n async getLabel(): Promise<string | null> {\n return (await this.host()).getAttribute('aria-label');\n }\n\n /** What a screen reader is told this control is. The role is why the arrows mean anything here. */\n async getRole(): Promise<string | null> {\n return (await this.host()).getAttribute('role');\n }\n\n /** Whether the thumb refuses the keyboard. Read from the button's native `disabled`. */\n async isDisabled(): Promise<boolean> {\n return (await this.host()).getProperty<boolean>('disabled');\n }\n\n async focus(): Promise<void> {\n return (await this.host()).focus();\n }\n\n async isFocused(): Promise<boolean> {\n return (await this.host()).isFocused();\n }\n\n /**\n * One step up (`ArrowUp`). A disabled thumb does not move.\n *\n * `ArrowRight` is the same key press in an LTR slider and the OPPOSITE one in\n * an RTL slider, so the vertical arrow is the one that means \"up\" everywhere.\n */\n async stepUp(): Promise<void> {\n return this.press(TestKey.UP_ARROW);\n }\n\n /** One step down (`ArrowDown`; `ArrowLeft` only agrees in LTR — see {@link stepUp}). */\n async stepDown(): Promise<void> {\n return this.press(TestKey.DOWN_ARROW);\n }\n\n /** Ten steps up (`PageUp`; `Shift`+arrow is the same stride). */\n async largeStepUp(): Promise<void> {\n return this.press(TestKey.PAGE_UP);\n }\n\n /** Ten steps down (`PageDown`; `Shift`+arrow is the same stride). */\n async largeStepDown(): Promise<void> {\n return this.press(TestKey.PAGE_DOWN);\n }\n\n /**\n * `Home` — jump to the lowest value this thumb can reach.\n *\n * On a range slider's UPPER thumb that lands on the lower thumb, not on the\n * slider's `min`: the component asks for `min` and then refuses to let the\n * ends cross, so the range collapses instead of inverting.\n */\n async toMin(): Promise<void> {\n return this.press(TestKey.HOME);\n }\n\n /**\n * `End` — jump to the highest value this thumb can reach.\n *\n * On a range slider's LOWER thumb that lands on the upper thumb, not on the\n * slider's `max`, for the same reason as {@link toMin}.\n */\n async toMax(): Promise<void> {\n return this.press(TestKey.END);\n }\n\n /**\n * Walk the thumb to `value` FROM THE KEYBOARD — `PageUp` / `PageDown` for the\n * distance, arrows for the last stretch, `Home` / `End` for the bounds. That\n * is the accessible path, and the only one a unit test can trust.\n *\n * There is deliberately no drag. jsdom has no layout: the track measures 0×0\n * and `getBoundingClientRect()` answers all zeros, while the component turns a\n * pointer into a value by dividing the offset by the track width. Every\n * positive offset therefore divides by zero, clamps to a ratio of 1 and writes\n * the slider's MAX — quietly, with no error to notice. A coordinate cannot\n * mean anything here.\n *\n * It costs one press per stride, so the walk is not free: crossing most of a\n * 0–100 range costs ~19 presses at `step=\"1\"` and ~109 at `step=\"0.1\"`.\n * Landing exactly on a bound is one press, whatever the step. The walk gives\n * up after 1000 presses — a 0–100 range reaches that at `step=\"0.01\"` or finer\n * — and throws rather than spin.\n *\n * A bound the step grid misses is announced but not reachable: `aria-valuemax`\n * is the `max` input, while the component snaps every key press onto whole\n * steps from `min`, so `max=\"100\" step=\"3\"` stops at 99. That is the off-grid\n * throw, arriving for `setValue(100)`.\n *\n * Either the thumb ends up exactly on `value` or this throws: when `value` is\n * outside the thumb's window (the other thumb is one end of it in range mode),\n * when the thumb is disabled, and when `value` is not on the step grid — on\n * the last one the thumb is left at the nearest value it could reach.\n */\n async setValue(value: number): Promise<void> {\n if (await this.isDisabled()) {\n throw new Error('WrSliderThumbHarness.setValue(): the slider is disabled, so the keyboard cannot move it.');\n }\n\n const [min, max] = [await this.getMin(), await this.getMax()];\n if (value < min || value > max) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): ${value} is outside the [${min}, ${max}] window this thumb can ` +\n 'reach. On a range slider the other thumb is one end of that window — move it first.'\n );\n }\n\n let current = await this.getValue();\n if (current === value) return;\n // The bounds are one key press, and on a range thumb `Home` / `End` stop at\n // the neighbour — which is precisely this window's end. The landing is still\n // checked: a `max` that is not a whole number of steps from `min` is\n // announced by `aria-valuemax` and refused by the component's snapping.\n if (value === min || value === max) {\n await (value === min ? this.toMin() : this.toMax());\n return this.assertSettled(await this.getValue(), value, min);\n }\n\n let presses = 0;\n // Start on the ten-step stride: neither stride is published to the DOM, so\n // the only way to learn one is to take it and look. One overshoot is pressed\n // back off and the rest of the walk goes a single step at a time.\n let striding = true;\n\n while (current !== value) {\n if (presses >= MAX_PRESSES) {\n throw new Error(\n `WrSliderThumbHarness.setValue(): gave up walking to ${value} after ${MAX_PRESSES} key presses ` +\n `(reached ${current}). A step this fine is not something a keyboard reaches — write the ` +\n 'slider through its `[(value)]` model instead.'\n );\n }\n\n // Re-derived every pass so the walk follows wherever the thumb actually\n // landed rather than where a stride aimed. It never has to reverse: the\n // window check above keeps the target inside [min, max], so pressing back\n // off an overshoot lands at or short of where the stride began — on the\n // same side of the target it started on.\n const direction: 1 | -1 = value > current ? 1 : -1;\n await this.press(this.strideKey(direction, striding));\n presses++;\n\n const next = await this.getValue();\n // Nothing moved: the thumb is pinned against a bound or its neighbour, and\n // pressing again would only spin. The final check below reports where.\n if (next === current) break;\n\n const overshot = direction === 1 ? next > value : next < value;\n current = next;\n if (!overshot) continue;\n\n await this.press(this.strideKey(direction === 1 ? -1 : 1, striding));\n presses++;\n current = await this.getValue();\n\n // Single steps straddling the target means it is not on the step grid.\n if (!striding) break;\n striding = false;\n }\n\n this.assertSettled(current, value, min);\n }\n\n /**\n * The landing check every path through {@link setValue} ends on: exactly the\n * value asked for, or an error naming where the thumb stopped instead.\n */\n private assertSettled(current: number, value: number, min: number): void {\n if (current === value) return;\n throw new Error(\n `WrSliderThumbHarness.setValue(): the keyboard settled on ${current} instead of ${value}. The thumb ` +\n `moves in whole steps from ${min}, so only values on that grid are reachable.`\n );\n }\n\n /** The key that moves the thumb one stride in `direction`. */\n private strideKey(direction: 1 | -1, striding: boolean): TestKey {\n if (striding) return direction === 1 ? TestKey.PAGE_UP : TestKey.PAGE_DOWN;\n // The vertical arrows, for the reason {@link stepUp} gives: the horizontal\n // pair swaps meaning under `dir=\"rtl\"`, which would send the fine stretch of\n // the walk away from its target.\n return direction === 1 ? TestKey.UP_ARROW : TestKey.DOWN_ARROW;\n }\n\n /**\n * Press a key on the thumb.\n *\n * `sendKeys` focuses the element first, so this is the whole gesture a user\n * makes — the component listens for `keydown` on the thumb itself.\n */\n private async press(key: TestKey): Promise<void> {\n return (await this.host()).sendKeys(key);\n }\n\n /**\n * One of the ARIA range attributes as a number.\n *\n * Throws instead of handing back `NaN`: a slider whose `aria-valuenow` is not\n * a number is broken in a way every later assertion would describe badly.\n */\n private async numeric(attribute: string): Promise<number> {\n const raw = await (await this.host()).getAttribute(attribute);\n const value = raw === null ? Number.NaN : Number.parseFloat(raw);\n\n if (Number.isNaN(value)) {\n throw new Error(`WrSliderThumbHarness: the thumb's ${attribute} is ${JSON.stringify(raw)}, not a number.`);\n }\n return value;\n }\n}\n","/**\n * @license\n *\n * Use of this source code is governed by an MIT-style license that can be\n * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE\n */\n\nimport { ComponentHarness, HarnessPredicate } from '@angular/cdk/testing';\n\nimport type { WrSliderValue } from 'ngwr/slider';\n\nimport type { WrSliderHarnessFilters, WrSliderThumbHarnessFilters } from './interfaces';\nimport { WrSliderThumbHarness } from './wr-slider-thumb-harness';\n\n/** Element-wise comparison for the `value` filter — a tuple never matches a plain number. */\nfunction sameValue(actual: WrSliderValue, expected: WrSliderValue): boolean {\n if (typeof actual === 'number') return actual === expected;\n if (typeof expected === 'number') return false;\n return actual[0] === expected[0] && actual[1] === expected[1];\n}\n\n/**\n * Test harness for `<wr-slider>` — single-thumb and `range`.\n *\n * Every NUMBER it reads comes off the thumbs' ARIA range trio (`aria-valuenow`,\n * `aria-valuemin`, `aria-valuemax`), which is what a screen reader is told and\n * the only place the slider publishes its value. The mode comes off the host's\n * `wr-slider--range` class and {@link getLabelText} off the rendered text.\n *\n * Everything it WRITES is a key press. A slider is a pointer control, but a\n * pointer control cannot be driven by coordinates in jsdom — there is no layout,\n * so the track measures 0×0 and the component divides every offset by that\n * width: a positive one writes the slider's MAX and `clientX: 0` writes `NaN`,\n * neither of them the value asked for. The keyboard is both the accessible path\n * and the only honest one here; {@link WrSliderThumbHarness.setValue} spells out\n * what the walk costs, and {@link WrSliderThumbHarness} why every one of those\n * presses is on the block axis, which `dir` does not turn around.\n *\n * The `step` is deliberately not readable: the component publishes it nowhere in\n * the DOM (ARIA has no attribute for it), so a spec that needs the number should\n * measure it — `stepUp()` moves by exactly one step.\n *\n * @example\n * ```ts\n * const volume = await loader.getHarness(WrSliderHarness);\n *\n * await volume.setValue(70);\n * expect(await volume.getValue()).toBe(70);\n *\n * const span = await loader.getHarness(WrSliderHarness.with({ range: true }));\n * await span.setRange(30, 60);\n * ```\n *\n * @see https://ngwr.dev/guides/testing\n */\nexport class WrSliderHarness extends ComponentHarness {\n static hostSelector = 'wr-slider';\n\n /** Build a predicate that narrows the query — pass to `getHarness` / `getAllHarnesses`. */\n static with(options: WrSliderHarnessFilters = {}): HarnessPredicate<WrSliderHarness> {\n return new HarnessPredicate(WrSliderHarness, options)\n .addOption('value', options.value, async (harness, value) => sameValue(await harness.getValue(), value))\n .addOption('range', options.range, async (harness, range) => (await harness.isRange()) === range)\n .addOption('disabled', options.disabled, async (harness, disabled) => (await harness.isDisabled()) === disabled)\n .addOption('labelText', options.labelText, (harness, text) =>\n HarnessPredicate.stringMatches(harness.getLabelText(), text)\n );\n }\n\n /** Whether the slider has two thumbs and answers with a `[low, high]` tuple. */\n async isRange(): Promise<boolean> {\n return (await this.host()).hasClass('wr-slider--range');\n }\n\n /**\n * Whether the slider refuses interaction.\n *\n * Read from the thumb's native `disabled` rather than from the\n * `wr-slider--disabled` class: the class is paint, while `disabled` on the\n * button is what takes the thumb out of the tab order and what assistive tech\n * reports.\n */\n async isDisabled(): Promise<boolean> {\n return (await this.getLowThumb()).isDisabled();\n }\n\n /**\n * The current value, in the shape the model uses: a plain number for one\n * thumb, `[low, high]` for two.\n */\n async getValue(): Promise<WrSliderValue> {\n const values = await Promise.all((await this.getThumbs()).map(thumb => thumb.getValue()));\n return values.length > 1 ? ([values[0], values[1]] as const) : values[0];\n }\n\n /** The slider's lower bound. */\n async getMin(): Promise<number> {\n return (await this.getThumbs())[0].getMin();\n }\n\n /**\n * The slider's upper bound.\n *\n * Taken from the LAST thumb, because in range mode the thumbs bound each\n * other: the lower one's `aria-valuemax` is wherever the upper one is\n * standing, so only the upper thumb knows the real ceiling.\n */\n async getMax(): Promise<number> {\n const thumbs = await this.getThumbs();\n return thumbs[thumbs.length - 1].getMax();\n }\n\n /**\n * The text the slider prints under the track, or `null` when `showLabel` is\n * off.\n *\n * A range slider joins its ends with an EN DASH — `'20 – 80'`, U+2013 — so an\n * assertion typed with a hyphen will not match.\n */\n async getLabelText(): Promise<string | null> {\n const label = await this.locatorForOptional('.wr-slider__label')();\n return label ? label.text() : null;\n }\n\n /** The slider's thumbs in DOM order: the lower one first. */\n async getThumbs(filters: WrSliderThumbHarnessFilters = {}): Promise<WrSliderThumbHarness[]> {\n return this.locatorForAll(WrSliderThumbHarness.with(filters))();\n }\n\n /** The only thumb of a single-thumb slider, or the lower one of a range slider. */\n async getLowThumb(): Promise<WrSliderThumbHarness> {\n return this.locatorFor(WrSliderThumbHarness.with({ position: 'low' }))();\n }\n\n /** The upper thumb. Throws on a single-thumb slider, which has no such part. */\n async getHighThumb(): Promise<WrSliderThumbHarness> {\n const thumb = await this.locatorForOptional(WrSliderThumbHarness.with({ position: 'high' }))();\n if (!thumb) {\n throw new Error('WrSliderHarness.getHighThumb(): this slider has one thumb — only a `range` slider has two.');\n }\n return thumb;\n }\n\n /**\n * Walk the slider to `value` from the keyboard.\n *\n * Single-thumb only — {@link setRange} moves both ends. See\n * {@link WrSliderThumbHarness.setValue} for what the walk costs and when it\n * throws.\n */\n async setValue(value: number): Promise<void> {\n return (await this.single('setValue')).setValue(value);\n }\n\n /**\n * Walk both ends of a range slider to `[low, high]`.\n *\n * The far end moves FIRST. The thumbs bound each other, so writing `[90, 95]`\n * over `[20, 80]` lower-end-first would be refused outright — 90 is outside\n * the `[0, 80]` window the upper thumb leaves the lower one.\n */\n async setRange(low: number, high: number): Promise<void> {\n if (!(await this.isRange())) {\n throw new Error('WrSliderHarness.setRange(): this slider has one thumb — add `range` to it, or call setValue().');\n }\n if (low > high) {\n throw new Error(`WrSliderHarness.setRange(): ${low} is above ${high}, and the thumbs cannot cross.`);\n }\n\n const lowThumb = await this.getLowThumb();\n const highThumb = await this.getHighThumb();\n\n if (high >= (await highThumb.getValue())) {\n await highThumb.setValue(high);\n await lowThumb.setValue(low);\n return;\n }\n\n await lowThumb.setValue(low);\n await highThumb.setValue(high);\n }\n\n /** One step up (`ArrowUp`). Single-thumb only. A disabled slider does not move. */\n async stepUp(): Promise<void> {\n return (await this.single('stepUp')).stepUp();\n }\n\n /** One step down (`ArrowDown`). Single-thumb only. A disabled slider does not move. */\n async stepDown(): Promise<void> {\n return (await this.single('stepDown')).stepDown();\n }\n\n /** `Home` — jump to the slider's `min`. Single-thumb only. */\n async toMin(): Promise<void> {\n return (await this.single('toMin')).toMin();\n }\n\n /** `End` — jump to the slider's `max`. Single-thumb only. */\n async toMax(): Promise<void> {\n return (await this.single('toMax')).toMax();\n }\n\n /**\n * Move keyboard focus to the slider's first thumb. A range slider's thumbs are\n * two separate tab stops (both are plain buttons — there is no roving\n * `tabindex`), so reach the other one through {@link getHighThumb}.\n */\n async focus(): Promise<void> {\n return (await this.getLowThumb()).focus();\n }\n\n /** Whether any of the slider's thumbs holds focus. */\n async isFocused(): Promise<boolean> {\n const focused = await Promise.all((await this.getThumbs()).map(thumb => thumb.isFocused()));\n return focused.includes(true);\n }\n\n /**\n * The one thumb a single-thumb convenience call means.\n *\n * Range mode gets an error rather than a guess: \"step this slider up\" has two\n * possible answers there, and picking one silently is how a spec ends up\n * asserting against the end it did not move.\n */\n private async single(caller: string): Promise<WrSliderThumbHarness> {\n if (await this.isRange()) {\n throw new Error(\n `WrSliderHarness.${caller}(): this slider has two thumbs — use setRange(), or reach for one end ` +\n 'with getLowThumb() / getHighThumb().'\n );\n }\n return this.getLowThumb();\n }\n}\n"],"mappings":"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"}