ngwr 14.10.0 → 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 (694) hide show
  1. package/fesm2022/ngwr-action-sheet-testing.mjs +111 -310
  2. package/fesm2022/ngwr-action-sheet-testing.mjs.map +1 -1
  3. package/fesm2022/ngwr-action-sheet.mjs +209 -89
  4. package/fesm2022/ngwr-action-sheet.mjs.map +1 -1
  5. package/fesm2022/ngwr-affix.mjs +122 -140
  6. package/fesm2022/ngwr-affix.mjs.map +1 -1
  7. package/fesm2022/ngwr-alert.mjs +204 -107
  8. package/fesm2022/ngwr-alert.mjs.map +1 -1
  9. package/fesm2022/ngwr-anchor.mjs +171 -113
  10. package/fesm2022/ngwr-anchor.mjs.map +1 -1
  11. package/fesm2022/ngwr-aurora.mjs +278 -198
  12. package/fesm2022/ngwr-aurora.mjs.map +1 -1
  13. package/fesm2022/ngwr-avatar.mjs +191 -190
  14. package/fesm2022/ngwr-avatar.mjs.map +1 -1
  15. package/fesm2022/ngwr-back-top.mjs +140 -95
  16. package/fesm2022/ngwr-back-top.mjs.map +1 -1
  17. package/fesm2022/ngwr-badge.mjs +339 -204
  18. package/fesm2022/ngwr-badge.mjs.map +1 -1
  19. package/fesm2022/ngwr-bar-chart-testing.mjs +56 -120
  20. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  21. package/fesm2022/ngwr-bar-chart.mjs +204 -113
  22. package/fesm2022/ngwr-bar-chart.mjs.map +1 -1
  23. package/fesm2022/ngwr-blur-text-testing.mjs +44 -198
  24. package/fesm2022/ngwr-blur-text-testing.mjs.map +1 -1
  25. package/fesm2022/ngwr-blur-text.mjs +322 -202
  26. package/fesm2022/ngwr-blur-text.mjs.map +1 -1
  27. package/fesm2022/ngwr-border-glow-testing.mjs +134 -318
  28. package/fesm2022/ngwr-border-glow-testing.mjs.map +1 -1
  29. package/fesm2022/ngwr-border-glow.mjs +440 -277
  30. package/fesm2022/ngwr-border-glow.mjs.map +1 -1
  31. package/fesm2022/ngwr-breadcrumbs.mjs +256 -120
  32. package/fesm2022/ngwr-breadcrumbs.mjs.map +1 -1
  33. package/fesm2022/ngwr-burger.mjs +115 -63
  34. package/fesm2022/ngwr-burger.mjs.map +1 -1
  35. package/fesm2022/ngwr-button-testing.mjs +39 -94
  36. package/fesm2022/ngwr-button-testing.mjs.map +1 -1
  37. package/fesm2022/ngwr-button.mjs +404 -354
  38. package/fesm2022/ngwr-button.mjs.map +1 -1
  39. package/fesm2022/ngwr-calendar-heatmap-testing.mjs +50 -96
  40. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
  41. package/fesm2022/ngwr-calendar-heatmap.mjs +360 -264
  42. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  43. package/fesm2022/ngwr-calendar-testing.mjs +181 -378
  44. package/fesm2022/ngwr-calendar-testing.mjs.map +1 -1
  45. package/fesm2022/ngwr-calendar.mjs +612 -790
  46. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  47. package/fesm2022/ngwr-card.mjs +216 -98
  48. package/fesm2022/ngwr-card.mjs.map +1 -1
  49. package/fesm2022/ngwr-carousel-testing.mjs +131 -374
  50. package/fesm2022/ngwr-carousel-testing.mjs.map +1 -1
  51. package/fesm2022/ngwr-carousel.mjs +459 -332
  52. package/fesm2022/ngwr-carousel.mjs.map +1 -1
  53. package/fesm2022/ngwr-cascader-testing.mjs +227 -600
  54. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
  55. package/fesm2022/ngwr-cascader.mjs +479 -418
  56. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  57. package/fesm2022/ngwr-checkbox-testing.mjs +45 -99
  58. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
  59. package/fesm2022/ngwr-checkbox.mjs +442 -354
  60. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  61. package/fesm2022/ngwr-circular-text-testing.mjs +56 -223
  62. package/fesm2022/ngwr-circular-text-testing.mjs.map +1 -1
  63. package/fesm2022/ngwr-circular-text.mjs +226 -186
  64. package/fesm2022/ngwr-circular-text.mjs.map +1 -1
  65. package/fesm2022/ngwr-click-spark.mjs +303 -199
  66. package/fesm2022/ngwr-click-spark.mjs.map +1 -1
  67. package/fesm2022/ngwr-clipboard.mjs +95 -163
  68. package/fesm2022/ngwr-clipboard.mjs.map +1 -1
  69. package/fesm2022/ngwr-collapse-testing.mjs +118 -365
  70. package/fesm2022/ngwr-collapse-testing.mjs.map +1 -1
  71. package/fesm2022/ngwr-collapse.mjs +287 -227
  72. package/fesm2022/ngwr-collapse.mjs.map +1 -1
  73. package/fesm2022/ngwr-color-picker-testing.mjs +223 -461
  74. package/fesm2022/ngwr-color-picker-testing.mjs.map +1 -1
  75. package/fesm2022/ngwr-color-picker.mjs +937 -976
  76. package/fesm2022/ngwr-color-picker.mjs.map +1 -1
  77. package/fesm2022/ngwr-command-palette-testing.mjs +236 -585
  78. package/fesm2022/ngwr-command-palette-testing.mjs.map +1 -1
  79. package/fesm2022/ngwr-command-palette.mjs +512 -443
  80. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  81. package/fesm2022/ngwr-compare.mjs +252 -225
  82. package/fesm2022/ngwr-compare.mjs.map +1 -1
  83. package/fesm2022/ngwr-confetti.mjs +163 -181
  84. package/fesm2022/ngwr-confetti.mjs.map +1 -1
  85. package/fesm2022/ngwr-config.mjs +31 -106
  86. package/fesm2022/ngwr-config.mjs.map +1 -1
  87. package/fesm2022/ngwr-context-menu-testing.mjs +233 -642
  88. package/fesm2022/ngwr-context-menu-testing.mjs.map +1 -1
  89. package/fesm2022/ngwr-context-menu.mjs +837 -1167
  90. package/fesm2022/ngwr-context-menu.mjs.map +1 -1
  91. package/fesm2022/ngwr-cookie.mjs +103 -140
  92. package/fesm2022/ngwr-cookie.mjs.map +1 -1
  93. package/fesm2022/ngwr-counter.mjs +646 -460
  94. package/fesm2022/ngwr-counter.mjs.map +1 -1
  95. package/fesm2022/ngwr-date-adapters-fns.mjs +173 -266
  96. package/fesm2022/ngwr-date-adapters-fns.mjs.map +1 -1
  97. package/fesm2022/ngwr-date-adapters-luxon.mjs +164 -236
  98. package/fesm2022/ngwr-date-adapters-luxon.mjs.map +1 -1
  99. package/fesm2022/ngwr-date-picker-testing.mjs +340 -700
  100. package/fesm2022/ngwr-date-picker-testing.mjs.map +1 -1
  101. package/fesm2022/ngwr-date-picker.mjs +2575 -2416
  102. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  103. package/fesm2022/ngwr-date.mjs +606 -861
  104. package/fesm2022/ngwr-date.mjs.map +1 -1
  105. package/fesm2022/ngwr-decrypt-text-testing.mjs +57 -256
  106. package/fesm2022/ngwr-decrypt-text-testing.mjs.map +1 -1
  107. package/fesm2022/ngwr-decrypt-text.mjs +489 -409
  108. package/fesm2022/ngwr-decrypt-text.mjs.map +1 -1
  109. package/fesm2022/ngwr-density.mjs +157 -154
  110. package/fesm2022/ngwr-density.mjs.map +1 -1
  111. package/fesm2022/ngwr-descriptions.mjs +188 -90
  112. package/fesm2022/ngwr-descriptions.mjs.map +1 -1
  113. package/fesm2022/ngwr-dialog-testing.mjs +44 -87
  114. package/fesm2022/ngwr-dialog-testing.mjs.map +1 -1
  115. package/fesm2022/ngwr-dialog.mjs +391 -522
  116. package/fesm2022/ngwr-dialog.mjs.map +1 -1
  117. package/fesm2022/ngwr-directives.mjs +354 -271
  118. package/fesm2022/ngwr-directives.mjs.map +1 -1
  119. package/fesm2022/ngwr-divider.mjs +151 -133
  120. package/fesm2022/ngwr-divider.mjs.map +1 -1
  121. package/fesm2022/ngwr-donut-chart-testing.mjs +48 -111
  122. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  123. package/fesm2022/ngwr-donut-chart.mjs +295 -190
  124. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  125. package/fesm2022/ngwr-drag-drop.mjs +411 -301
  126. package/fesm2022/ngwr-drag-drop.mjs.map +1 -1
  127. package/fesm2022/ngwr-drawer-testing.mjs +97 -248
  128. package/fesm2022/ngwr-drawer-testing.mjs.map +1 -1
  129. package/fesm2022/ngwr-drawer.mjs +862 -889
  130. package/fesm2022/ngwr-drawer.mjs.map +1 -1
  131. package/fesm2022/ngwr-dropdown-testing.mjs +125 -288
  132. package/fesm2022/ngwr-dropdown-testing.mjs.map +1 -1
  133. package/fesm2022/ngwr-dropdown.mjs +613 -641
  134. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  135. package/fesm2022/ngwr-editor-testing.mjs +194 -640
  136. package/fesm2022/ngwr-editor-testing.mjs.map +1 -1
  137. package/fesm2022/ngwr-editor.mjs +2062 -2541
  138. package/fesm2022/ngwr-editor.mjs.map +1 -1
  139. package/fesm2022/ngwr-empty.mjs +117 -72
  140. package/fesm2022/ngwr-empty.mjs.map +1 -1
  141. package/fesm2022/ngwr-event-calendar-testing.mjs +215 -439
  142. package/fesm2022/ngwr-event-calendar-testing.mjs.map +1 -1
  143. package/fesm2022/ngwr-event-calendar.mjs +906 -822
  144. package/fesm2022/ngwr-event-calendar.mjs.map +1 -1
  145. package/fesm2022/ngwr-falling-text-testing.mjs +52 -216
  146. package/fesm2022/ngwr-falling-text-testing.mjs.map +1 -1
  147. package/fesm2022/ngwr-falling-text.mjs +375 -342
  148. package/fesm2022/ngwr-falling-text.mjs.map +1 -1
  149. package/fesm2022/ngwr-file-upload-testing.mjs +133 -320
  150. package/fesm2022/ngwr-file-upload-testing.mjs.map +1 -1
  151. package/fesm2022/ngwr-file-upload.mjs +457 -328
  152. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  153. package/fesm2022/ngwr-form-testing.mjs +145 -452
  154. package/fesm2022/ngwr-form-testing.mjs.map +1 -1
  155. package/fesm2022/ngwr-form.mjs +512 -590
  156. package/fesm2022/ngwr-form.mjs.map +1 -1
  157. package/fesm2022/ngwr-fuzzy-text-testing.mjs +36 -132
  158. package/fesm2022/ngwr-fuzzy-text-testing.mjs.map +1 -1
  159. package/fesm2022/ngwr-fuzzy-text.mjs +635 -421
  160. package/fesm2022/ngwr-fuzzy-text.mjs.map +1 -1
  161. package/fesm2022/ngwr-gauge-testing.mjs +49 -98
  162. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
  163. package/fesm2022/ngwr-gauge.mjs +297 -129
  164. package/fesm2022/ngwr-gauge.mjs.map +1 -1
  165. package/fesm2022/ngwr-glitch-text-testing.mjs +61 -213
  166. package/fesm2022/ngwr-glitch-text-testing.mjs.map +1 -1
  167. package/fesm2022/ngwr-glitch-text.mjs +170 -73
  168. package/fesm2022/ngwr-glitch-text.mjs.map +1 -1
  169. package/fesm2022/ngwr-gradient-text-testing.mjs +82 -251
  170. package/fesm2022/ngwr-gradient-text-testing.mjs.map +1 -1
  171. package/fesm2022/ngwr-gradient-text.mjs +215 -114
  172. package/fesm2022/ngwr-gradient-text.mjs.map +1 -1
  173. package/fesm2022/ngwr-graph-testing.mjs +65 -233
  174. package/fesm2022/ngwr-graph-testing.mjs.map +1 -1
  175. package/fesm2022/ngwr-graph.mjs +882 -1046
  176. package/fesm2022/ngwr-graph.mjs.map +1 -1
  177. package/fesm2022/ngwr-hotkey.mjs +307 -285
  178. package/fesm2022/ngwr-hotkey.mjs.map +1 -1
  179. package/fesm2022/ngwr-i18n-ar.mjs +375 -464
  180. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  181. package/fesm2022/ngwr-i18n-cs.mjs +375 -434
  182. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  183. package/fesm2022/ngwr-i18n-de.mjs +375 -453
  184. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  185. package/fesm2022/ngwr-i18n-en.mjs +375 -561
  186. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  187. package/fesm2022/ngwr-i18n-es.mjs +375 -434
  188. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  189. package/fesm2022/ngwr-i18n-fr.mjs +375 -458
  190. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  191. package/fesm2022/ngwr-i18n-he.mjs +375 -457
  192. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  193. package/fesm2022/ngwr-i18n-hi.mjs +375 -434
  194. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  195. package/fesm2022/ngwr-i18n-id.mjs +375 -434
  196. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  197. package/fesm2022/ngwr-i18n-it.mjs +375 -453
  198. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  199. package/fesm2022/ngwr-i18n-ja.mjs +375 -438
  200. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  201. package/fesm2022/ngwr-i18n-ko.mjs +375 -446
  202. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  203. package/fesm2022/ngwr-i18n-nl.mjs +375 -450
  204. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  205. package/fesm2022/ngwr-i18n-pl.mjs +375 -460
  206. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  207. package/fesm2022/ngwr-i18n-pt.mjs +375 -443
  208. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  209. package/fesm2022/ngwr-i18n-ru.mjs +375 -447
  210. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  211. package/fesm2022/ngwr-i18n-sv.mjs +375 -434
  212. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  213. package/fesm2022/ngwr-i18n-tr.mjs +375 -458
  214. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  215. package/fesm2022/ngwr-i18n-uk.mjs +375 -455
  216. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  217. package/fesm2022/ngwr-i18n-vi.mjs +375 -451
  218. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  219. package/fesm2022/ngwr-i18n-zh-TW.mjs +375 -442
  220. package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
  221. package/fesm2022/ngwr-i18n-zh.mjs +375 -433
  222. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  223. package/fesm2022/ngwr-i18n.mjs +415 -683
  224. package/fesm2022/ngwr-i18n.mjs.map +1 -1
  225. package/fesm2022/ngwr-icon-adapters-feather.mjs +28 -77
  226. package/fesm2022/ngwr-icon-adapters-feather.mjs.map +1 -1
  227. package/fesm2022/ngwr-icon-adapters-lucide.mjs +32 -94
  228. package/fesm2022/ngwr-icon-adapters-lucide.mjs.map +1 -1
  229. package/fesm2022/ngwr-icon.mjs +371 -690
  230. package/fesm2022/ngwr-icon.mjs.map +1 -1
  231. package/fesm2022/ngwr-image-cropper-testing.mjs +84 -227
  232. package/fesm2022/ngwr-image-cropper-testing.mjs.map +1 -1
  233. package/fesm2022/ngwr-image-cropper.mjs +577 -639
  234. package/fesm2022/ngwr-image-cropper.mjs.map +1 -1
  235. package/fesm2022/ngwr-input-number-testing.mjs +108 -305
  236. package/fesm2022/ngwr-input-number-testing.mjs.map +1 -1
  237. package/fesm2022/ngwr-input-number.mjs +496 -361
  238. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  239. package/fesm2022/ngwr-input-otp-testing.mjs +172 -420
  240. package/fesm2022/ngwr-input-otp-testing.mjs.map +1 -1
  241. package/fesm2022/ngwr-input-otp.mjs +396 -352
  242. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  243. package/fesm2022/ngwr-input-testing.mjs +52 -100
  244. package/fesm2022/ngwr-input-testing.mjs.map +1 -1
  245. package/fesm2022/ngwr-input.mjs +356 -303
  246. package/fesm2022/ngwr-input.mjs.map +1 -1
  247. package/fesm2022/ngwr-keyboard.mjs +63 -45
  248. package/fesm2022/ngwr-keyboard.mjs.map +1 -1
  249. package/fesm2022/ngwr-knob-testing.mjs +101 -223
  250. package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
  251. package/fesm2022/ngwr-knob.mjs +421 -303
  252. package/fesm2022/ngwr-knob.mjs.map +1 -1
  253. package/fesm2022/ngwr-layout.mjs +362 -207
  254. package/fesm2022/ngwr-layout.mjs.map +1 -1
  255. package/fesm2022/ngwr-lightbox-testing.mjs +100 -221
  256. package/fesm2022/ngwr-lightbox-testing.mjs.map +1 -1
  257. package/fesm2022/ngwr-lightbox.mjs +335 -268
  258. package/fesm2022/ngwr-lightbox.mjs.map +1 -1
  259. package/fesm2022/ngwr-line-chart-testing.mjs +65 -133
  260. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
  261. package/fesm2022/ngwr-line-chart.mjs +356 -281
  262. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  263. package/fesm2022/ngwr-list.mjs +251 -134
  264. package/fesm2022/ngwr-list.mjs.map +1 -1
  265. package/fesm2022/ngwr-loading-bar-router.mjs +26 -68
  266. package/fesm2022/ngwr-loading-bar-router.mjs.map +1 -1
  267. package/fesm2022/ngwr-loading-bar.mjs +173 -186
  268. package/fesm2022/ngwr-loading-bar.mjs.map +1 -1
  269. package/fesm2022/ngwr-markdown-testing.mjs +174 -505
  270. package/fesm2022/ngwr-markdown-testing.mjs.map +1 -1
  271. package/fesm2022/ngwr-markdown.mjs +1578 -2219
  272. package/fesm2022/ngwr-markdown.mjs.map +1 -1
  273. package/fesm2022/ngwr-marquee-testing.mjs +118 -331
  274. package/fesm2022/ngwr-marquee-testing.mjs.map +1 -1
  275. package/fesm2022/ngwr-marquee.mjs +411 -230
  276. package/fesm2022/ngwr-marquee.mjs.map +1 -1
  277. package/fesm2022/ngwr-media.mjs +100 -127
  278. package/fesm2022/ngwr-media.mjs.map +1 -1
  279. package/fesm2022/ngwr-mention-testing.mjs +179 -506
  280. package/fesm2022/ngwr-mention-testing.mjs.map +1 -1
  281. package/fesm2022/ngwr-mention.mjs +668 -732
  282. package/fesm2022/ngwr-mention.mjs.map +1 -1
  283. package/fesm2022/ngwr-meta.mjs +257 -329
  284. package/fesm2022/ngwr-meta.mjs.map +1 -1
  285. package/fesm2022/ngwr-meter-group-testing.mjs +56 -101
  286. package/fesm2022/ngwr-meter-group-testing.mjs.map +1 -1
  287. package/fesm2022/ngwr-meter-group.mjs +206 -114
  288. package/fesm2022/ngwr-meter-group.mjs.map +1 -1
  289. package/fesm2022/ngwr-overlay.mjs +264 -576
  290. package/fesm2022/ngwr-overlay.mjs.map +1 -1
  291. package/fesm2022/ngwr-page-header.mjs +107 -67
  292. package/fesm2022/ngwr-page-header.mjs.map +1 -1
  293. package/fesm2022/ngwr-pagination-testing.mjs +125 -388
  294. package/fesm2022/ngwr-pagination-testing.mjs.map +1 -1
  295. package/fesm2022/ngwr-pagination.mjs +505 -335
  296. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  297. package/fesm2022/ngwr-pipes.mjs +343 -382
  298. package/fesm2022/ngwr-pipes.mjs.map +1 -1
  299. package/fesm2022/ngwr-platform.mjs +182 -221
  300. package/fesm2022/ngwr-platform.mjs.map +1 -1
  301. package/fesm2022/ngwr-popconfirm-testing.mjs +112 -307
  302. package/fesm2022/ngwr-popconfirm-testing.mjs.map +1 -1
  303. package/fesm2022/ngwr-popconfirm.mjs +474 -277
  304. package/fesm2022/ngwr-popconfirm.mjs.map +1 -1
  305. package/fesm2022/ngwr-popover-testing.mjs +114 -332
  306. package/fesm2022/ngwr-popover-testing.mjs.map +1 -1
  307. package/fesm2022/ngwr-popover.mjs +1106 -1311
  308. package/fesm2022/ngwr-popover.mjs.map +1 -1
  309. package/fesm2022/ngwr-progress.mjs +124 -68
  310. package/fesm2022/ngwr-progress.mjs.map +1 -1
  311. package/fesm2022/ngwr-pull-to-refresh.mjs +198 -185
  312. package/fesm2022/ngwr-pull-to-refresh.mjs.map +1 -1
  313. package/fesm2022/ngwr-qr.mjs +1179 -1100
  314. package/fesm2022/ngwr-qr.mjs.map +1 -1
  315. package/fesm2022/ngwr-radio-testing.mjs +138 -389
  316. package/fesm2022/ngwr-radio-testing.mjs.map +1 -1
  317. package/fesm2022/ngwr-radio.mjs +346 -239
  318. package/fesm2022/ngwr-radio.mjs.map +1 -1
  319. package/fesm2022/ngwr-rating-testing.mjs +153 -390
  320. package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
  321. package/fesm2022/ngwr-rating.mjs +281 -247
  322. package/fesm2022/ngwr-rating.mjs.map +1 -1
  323. package/fesm2022/ngwr-result.mjs +353 -114
  324. package/fesm2022/ngwr-result.mjs.map +1 -1
  325. package/fesm2022/ngwr-rotating-text-testing.mjs +45 -215
  326. package/fesm2022/ngwr-rotating-text-testing.mjs.map +1 -1
  327. package/fesm2022/ngwr-rotating-text.mjs +402 -272
  328. package/fesm2022/ngwr-rotating-text.mjs.map +1 -1
  329. package/fesm2022/ngwr-schema-form.mjs +384 -213
  330. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  331. package/fesm2022/ngwr-scroll.mjs +95 -105
  332. package/fesm2022/ngwr-scroll.mjs.map +1 -1
  333. package/fesm2022/ngwr-segmented-testing.mjs +184 -593
  334. package/fesm2022/ngwr-segmented-testing.mjs.map +1 -1
  335. package/fesm2022/ngwr-segmented.mjs +235 -251
  336. package/fesm2022/ngwr-segmented.mjs.map +1 -1
  337. package/fesm2022/ngwr-select-testing.mjs +139 -284
  338. package/fesm2022/ngwr-select-testing.mjs.map +1 -1
  339. package/fesm2022/ngwr-select.mjs +1784 -2098
  340. package/fesm2022/ngwr-select.mjs.map +1 -1
  341. package/fesm2022/ngwr-shiny-text-testing.mjs +83 -228
  342. package/fesm2022/ngwr-shiny-text-testing.mjs.map +1 -1
  343. package/fesm2022/ngwr-shiny-text.mjs +304 -131
  344. package/fesm2022/ngwr-shiny-text.mjs.map +1 -1
  345. package/fesm2022/ngwr-sidebar.mjs +256 -205
  346. package/fesm2022/ngwr-sidebar.mjs.map +1 -1
  347. package/fesm2022/ngwr-skeleton.mjs +101 -72
  348. package/fesm2022/ngwr-skeleton.mjs.map +1 -1
  349. package/fesm2022/ngwr-slider-testing.mjs +191 -473
  350. package/fesm2022/ngwr-slider-testing.mjs.map +1 -1
  351. package/fesm2022/ngwr-slider.mjs +430 -443
  352. package/fesm2022/ngwr-slider.mjs.map +1 -1
  353. package/fesm2022/ngwr-sparkline-testing.mjs +37 -74
  354. package/fesm2022/ngwr-sparkline-testing.mjs.map +1 -1
  355. package/fesm2022/ngwr-sparkline.mjs +311 -196
  356. package/fesm2022/ngwr-sparkline.mjs.map +1 -1
  357. package/fesm2022/ngwr-speed-dial-testing.mjs +135 -278
  358. package/fesm2022/ngwr-speed-dial-testing.mjs.map +1 -1
  359. package/fesm2022/ngwr-speed-dial.mjs +242 -140
  360. package/fesm2022/ngwr-speed-dial.mjs.map +1 -1
  361. package/fesm2022/ngwr-spinner.mjs +97 -60
  362. package/fesm2022/ngwr-spinner.mjs.map +1 -1
  363. package/fesm2022/ngwr-splash-cursor-testing.mjs +23 -87
  364. package/fesm2022/ngwr-splash-cursor-testing.mjs.map +1 -1
  365. package/fesm2022/ngwr-splash-cursor.mjs +980 -725
  366. package/fesm2022/ngwr-splash-cursor.mjs.map +1 -1
  367. package/fesm2022/ngwr-split-text-testing.mjs +48 -218
  368. package/fesm2022/ngwr-split-text-testing.mjs.map +1 -1
  369. package/fesm2022/ngwr-split-text.mjs +365 -220
  370. package/fesm2022/ngwr-split-text.mjs.map +1 -1
  371. package/fesm2022/ngwr-splitter-testing.mjs +107 -241
  372. package/fesm2022/ngwr-splitter-testing.mjs.map +1 -1
  373. package/fesm2022/ngwr-splitter.mjs +222 -184
  374. package/fesm2022/ngwr-splitter.mjs.map +1 -1
  375. package/fesm2022/ngwr-spotlight-card-testing.mjs +105 -360
  376. package/fesm2022/ngwr-spotlight-card-testing.mjs.map +1 -1
  377. package/fesm2022/ngwr-spotlight-card.mjs +217 -135
  378. package/fesm2022/ngwr-spotlight-card.mjs.map +1 -1
  379. package/fesm2022/ngwr-squircle.mjs +410 -326
  380. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  381. package/fesm2022/ngwr-star-border-testing.mjs +53 -168
  382. package/fesm2022/ngwr-star-border-testing.mjs.map +1 -1
  383. package/fesm2022/ngwr-star-border.mjs +160 -70
  384. package/fesm2022/ngwr-star-border.mjs.map +1 -1
  385. package/fesm2022/ngwr-statistic.mjs +570 -389
  386. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  387. package/fesm2022/ngwr-stepper-testing.mjs +158 -471
  388. package/fesm2022/ngwr-stepper-testing.mjs.map +1 -1
  389. package/fesm2022/ngwr-stepper.mjs +336 -215
  390. package/fesm2022/ngwr-stepper.mjs.map +1 -1
  391. package/fesm2022/ngwr-storage.mjs +217 -330
  392. package/fesm2022/ngwr-storage.mjs.map +1 -1
  393. package/fesm2022/ngwr-switch-testing.mjs +42 -75
  394. package/fesm2022/ngwr-switch-testing.mjs.map +1 -1
  395. package/fesm2022/ngwr-switch.mjs +197 -114
  396. package/fesm2022/ngwr-switch.mjs.map +1 -1
  397. package/fesm2022/ngwr-table-testing.mjs +238 -572
  398. package/fesm2022/ngwr-table-testing.mjs.map +1 -1
  399. package/fesm2022/ngwr-table.mjs +1875 -1446
  400. package/fesm2022/ngwr-table.mjs.map +1 -1
  401. package/fesm2022/ngwr-tabs-router.mjs +84 -153
  402. package/fesm2022/ngwr-tabs-router.mjs.map +1 -1
  403. package/fesm2022/ngwr-tabs-testing.mjs +217 -617
  404. package/fesm2022/ngwr-tabs-testing.mjs.map +1 -1
  405. package/fesm2022/ngwr-tabs.mjs +402 -425
  406. package/fesm2022/ngwr-tabs.mjs.map +1 -1
  407. package/fesm2022/ngwr-textarea-testing.mjs +84 -236
  408. package/fesm2022/ngwr-textarea-testing.mjs.map +1 -1
  409. package/fesm2022/ngwr-textarea.mjs +385 -264
  410. package/fesm2022/ngwr-textarea.mjs.map +1 -1
  411. package/fesm2022/ngwr-theme.mjs +247 -443
  412. package/fesm2022/ngwr-theme.mjs.map +1 -1
  413. package/fesm2022/ngwr-tilt-card-testing.mjs +79 -186
  414. package/fesm2022/ngwr-tilt-card-testing.mjs.map +1 -1
  415. package/fesm2022/ngwr-tilt-card.mjs +257 -168
  416. package/fesm2022/ngwr-tilt-card.mjs.map +1 -1
  417. package/fesm2022/ngwr-timeline.mjs +157 -70
  418. package/fesm2022/ngwr-timeline.mjs.map +1 -1
  419. package/fesm2022/ngwr-toast-testing.mjs +59 -99
  420. package/fesm2022/ngwr-toast-testing.mjs.map +1 -1
  421. package/fesm2022/ngwr-toast.mjs +769 -691
  422. package/fesm2022/ngwr-toast.mjs.map +1 -1
  423. package/fesm2022/ngwr-toolbar.mjs +73 -58
  424. package/fesm2022/ngwr-toolbar.mjs.map +1 -1
  425. package/fesm2022/ngwr-tour-testing.mjs +75 -171
  426. package/fesm2022/ngwr-tour-testing.mjs.map +1 -1
  427. package/fesm2022/ngwr-tour.mjs +333 -347
  428. package/fesm2022/ngwr-tour.mjs.map +1 -1
  429. package/fesm2022/ngwr-transfer-testing.mjs +195 -534
  430. package/fesm2022/ngwr-transfer-testing.mjs.map +1 -1
  431. package/fesm2022/ngwr-transfer.mjs +441 -322
  432. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  433. package/fesm2022/ngwr-tree-testing.mjs +277 -754
  434. package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
  435. package/fesm2022/ngwr-tree.mjs +876 -906
  436. package/fesm2022/ngwr-tree.mjs.map +1 -1
  437. package/fesm2022/ngwr-typewriter-testing.mjs +50 -237
  438. package/fesm2022/ngwr-typewriter-testing.mjs.map +1 -1
  439. package/fesm2022/ngwr-typewriter.mjs +461 -242
  440. package/fesm2022/ngwr-typewriter.mjs.map +1 -1
  441. package/fesm2022/ngwr-typography.mjs +142 -81
  442. package/fesm2022/ngwr-typography.mjs.map +1 -1
  443. package/fesm2022/ngwr-utils.mjs +304 -613
  444. package/fesm2022/ngwr-utils.mjs.map +1 -1
  445. package/fesm2022/ngwr-validators.mjs +179 -361
  446. package/fesm2022/ngwr-validators.mjs.map +1 -1
  447. package/fesm2022/ngwr-version.mjs +17 -47
  448. package/fesm2022/ngwr-version.mjs.map +1 -1
  449. package/fesm2022/ngwr-virtual-scroll.mjs +259 -125
  450. package/fesm2022/ngwr-virtual-scroll.mjs.map +1 -1
  451. package/fesm2022/ngwr-waves-testing.mjs +34 -125
  452. package/fesm2022/ngwr-waves-testing.mjs.map +1 -1
  453. package/fesm2022/ngwr-waves.mjs +816 -373
  454. package/fesm2022/ngwr-waves.mjs.map +1 -1
  455. package/fesm2022/ngwr-window-testing.mjs +171 -366
  456. package/fesm2022/ngwr-window-testing.mjs.map +1 -1
  457. package/fesm2022/ngwr-window.mjs +1437 -1351
  458. package/fesm2022/ngwr-window.mjs.map +1 -1
  459. package/fesm2022/ngwr.mjs +0 -4
  460. package/input-number/styles/_index.scss +33 -35
  461. package/llms-full.txt +2 -2
  462. package/package.json +1 -1
  463. package/segmented/styles/_index.scss +10 -3
  464. package/types/ngwr-action-sheet-testing.d.ts +174 -200
  465. package/types/ngwr-action-sheet.d.ts +83 -45
  466. package/types/ngwr-affix.d.ts +27 -22
  467. package/types/ngwr-alert.d.ts +93 -59
  468. package/types/ngwr-anchor.d.ts +52 -35
  469. package/types/ngwr-aurora.d.ts +53 -35
  470. package/types/ngwr-avatar.d.ts +97 -81
  471. package/types/ngwr-back-top.d.ts +36 -23
  472. package/types/ngwr-badge.d.ts +160 -105
  473. package/types/ngwr-bar-chart-testing.d.ts +40 -58
  474. package/types/ngwr-bar-chart.d.ts +86 -60
  475. package/types/ngwr-blur-text-testing.d.ts +103 -121
  476. package/types/ngwr-blur-text.d.ts +99 -60
  477. package/types/ngwr-border-glow-testing.d.ts +155 -173
  478. package/types/ngwr-border-glow.d.ts +93 -45
  479. package/types/ngwr-breadcrumbs.d.ts +60 -32
  480. package/types/ngwr-burger.d.ts +38 -23
  481. package/types/ngwr-button-testing.d.ts +41 -59
  482. package/types/ngwr-button.d.ts +213 -163
  483. package/types/ngwr-calendar-heatmap-testing.d.ts +38 -56
  484. package/types/ngwr-calendar-heatmap.d.ts +151 -105
  485. package/types/ngwr-calendar-testing.d.ts +198 -224
  486. package/types/ngwr-calendar.d.ts +285 -246
  487. package/types/ngwr-card.d.ts +41 -23
  488. package/types/ngwr-carousel-testing.d.ts +196 -214
  489. package/types/ngwr-carousel.d.ts +173 -122
  490. package/types/ngwr-cascader-testing.d.ts +338 -372
  491. package/types/ngwr-cascader.d.ts +230 -161
  492. package/types/ngwr-checkbox-testing.d.ts +45 -63
  493. package/types/ngwr-checkbox.d.ts +238 -183
  494. package/types/ngwr-circular-text-testing.d.ts +108 -126
  495. package/types/ngwr-circular-text.d.ts +53 -41
  496. package/types/ngwr-click-spark.d.ts +82 -50
  497. package/types/ngwr-clipboard.d.ts +40 -44
  498. package/types/ngwr-collapse-testing.d.ts +193 -219
  499. package/types/ngwr-collapse.d.ts +82 -71
  500. package/types/ngwr-color-picker-testing.d.ts +211 -237
  501. package/types/ngwr-color-picker.d.ts +343 -300
  502. package/types/ngwr-command-palette-testing.d.ts +311 -345
  503. package/types/ngwr-command-palette.d.ts +257 -197
  504. package/types/ngwr-compare.d.ts +102 -67
  505. package/types/ngwr-confetti.d.ts +51 -55
  506. package/types/ngwr-config.d.ts +44 -71
  507. package/types/ngwr-context-menu-testing.d.ts +301 -327
  508. package/types/ngwr-context-menu.d.ts +350 -310
  509. package/types/ngwr-cookie.d.ts +37 -41
  510. package/types/ngwr-counter.d.ts +223 -128
  511. package/types/ngwr-date-adapters-fns.d.ts +40 -59
  512. package/types/ngwr-date-adapters-luxon.d.ts +61 -72
  513. package/types/ngwr-date-picker-testing.d.ts +295 -339
  514. package/types/ngwr-date-picker.d.ts +759 -583
  515. package/types/ngwr-date.d.ts +229 -258
  516. package/types/ngwr-decrypt-text-testing.d.ts +140 -158
  517. package/types/ngwr-decrypt-text.d.ts +104 -62
  518. package/types/ngwr-density.d.ts +42 -57
  519. package/types/ngwr-descriptions.d.ts +50 -27
  520. package/types/ngwr-dialog-testing.d.ts +36 -54
  521. package/types/ngwr-dialog.d.ts +166 -190
  522. package/types/ngwr-directives.d.ts +82 -60
  523. package/types/ngwr-divider.d.ts +78 -62
  524. package/types/ngwr-donut-chart-testing.d.ts +36 -54
  525. package/types/ngwr-donut-chart.d.ts +102 -66
  526. package/types/ngwr-drag-drop.d.ts +139 -106
  527. package/types/ngwr-drawer-testing.d.ts +141 -159
  528. package/types/ngwr-drawer.d.ts +374 -316
  529. package/types/ngwr-dropdown-testing.d.ts +128 -154
  530. package/types/ngwr-dropdown.d.ts +260 -166
  531. package/types/ngwr-editor-testing.d.ts +312 -330
  532. package/types/ngwr-editor.d.ts +435 -344
  533. package/types/ngwr-empty.d.ts +41 -28
  534. package/types/ngwr-event-calendar-testing.d.ts +217 -243
  535. package/types/ngwr-event-calendar.d.ts +340 -298
  536. package/types/ngwr-falling-text-testing.d.ts +108 -126
  537. package/types/ngwr-falling-text.d.ts +57 -35
  538. package/types/ngwr-file-upload-testing.d.ts +133 -151
  539. package/types/ngwr-file-upload.d.ts +193 -128
  540. package/types/ngwr-form-testing.d.ts +255 -282
  541. package/types/ngwr-form.d.ts +324 -306
  542. package/types/ngwr-fuzzy-text-testing.d.ts +63 -81
  543. package/types/ngwr-fuzzy-text.d.ts +152 -65
  544. package/types/ngwr-gauge-testing.d.ts +43 -61
  545. package/types/ngwr-gauge.d.ts +113 -61
  546. package/types/ngwr-glitch-text-testing.d.ts +125 -143
  547. package/types/ngwr-glitch-text.d.ts +47 -24
  548. package/types/ngwr-gradient-text-testing.d.ts +114 -132
  549. package/types/ngwr-gradient-text.d.ts +51 -24
  550. package/types/ngwr-graph-testing.d.ts +89 -115
  551. package/types/ngwr-graph.d.ts +137 -124
  552. package/types/ngwr-hotkey.d.ts +85 -75
  553. package/types/ngwr-i18n-ar.d.ts +2 -5
  554. package/types/ngwr-i18n-cs.d.ts +2 -5
  555. package/types/ngwr-i18n-de.d.ts +2 -5
  556. package/types/ngwr-i18n-en.d.ts +2 -5
  557. package/types/ngwr-i18n-es.d.ts +2 -5
  558. package/types/ngwr-i18n-fr.d.ts +2 -5
  559. package/types/ngwr-i18n-he.d.ts +2 -5
  560. package/types/ngwr-i18n-hi.d.ts +2 -5
  561. package/types/ngwr-i18n-id.d.ts +2 -5
  562. package/types/ngwr-i18n-it.d.ts +2 -5
  563. package/types/ngwr-i18n-ja.d.ts +2 -5
  564. package/types/ngwr-i18n-ko.d.ts +2 -5
  565. package/types/ngwr-i18n-nl.d.ts +2 -5
  566. package/types/ngwr-i18n-pl.d.ts +2 -5
  567. package/types/ngwr-i18n-pt.d.ts +2 -5
  568. package/types/ngwr-i18n-ru.d.ts +2 -5
  569. package/types/ngwr-i18n-sv.d.ts +2 -5
  570. package/types/ngwr-i18n-tr.d.ts +2 -5
  571. package/types/ngwr-i18n-uk.d.ts +2 -5
  572. package/types/ngwr-i18n-vi.d.ts +2 -5
  573. package/types/ngwr-i18n-zh-TW.d.ts +2 -5
  574. package/types/ngwr-i18n-zh.d.ts +2 -5
  575. package/types/ngwr-i18n.d.ts +202 -246
  576. package/types/ngwr-icon-adapters-feather.d.ts +2 -11
  577. package/types/ngwr-icon-adapters-lucide.d.ts +2 -12
  578. package/types/ngwr-icon.d.ts +62 -84
  579. package/types/ngwr-image-cropper-testing.d.ts +116 -134
  580. package/types/ngwr-image-cropper.d.ts +287 -252
  581. package/types/ngwr-input-number-testing.d.ts +164 -182
  582. package/types/ngwr-input-number.d.ts +231 -150
  583. package/types/ngwr-input-otp-testing.d.ts +210 -244
  584. package/types/ngwr-input-otp.d.ts +167 -123
  585. package/types/ngwr-input-testing.d.ts +42 -60
  586. package/types/ngwr-input.d.ts +118 -94
  587. package/types/ngwr-keyboard.d.ts +14 -12
  588. package/types/ngwr-knob-testing.d.ts +106 -124
  589. package/types/ngwr-knob.d.ts +194 -129
  590. package/types/ngwr-layout.d.ts +57 -40
  591. package/types/ngwr-lightbox-testing.d.ts +101 -119
  592. package/types/ngwr-lightbox.d.ts +140 -87
  593. package/types/ngwr-line-chart-testing.d.ts +51 -69
  594. package/types/ngwr-line-chart.d.ts +171 -134
  595. package/types/ngwr-list.d.ts +55 -27
  596. package/types/ngwr-loading-bar-router.d.ts +2 -12
  597. package/types/ngwr-loading-bar.d.ts +45 -39
  598. package/types/ngwr-markdown-testing.d.ts +323 -350
  599. package/types/ngwr-markdown.d.ts +432 -318
  600. package/types/ngwr-marquee-testing.d.ts +190 -216
  601. package/types/ngwr-marquee.d.ts +127 -75
  602. package/types/ngwr-media.d.ts +25 -39
  603. package/types/ngwr-mention-testing.d.ts +274 -300
  604. package/types/ngwr-mention.d.ts +249 -164
  605. package/types/ngwr-meta.d.ts +93 -108
  606. package/types/ngwr-meter-group-testing.d.ts +33 -51
  607. package/types/ngwr-meter-group.d.ts +86 -60
  608. package/types/ngwr-overlay.d.ts +57 -132
  609. package/types/ngwr-page-header.d.ts +32 -19
  610. package/types/ngwr-pagination-testing.d.ts +215 -233
  611. package/types/ngwr-pagination.d.ts +213 -141
  612. package/types/ngwr-pipes.d.ts +67 -84
  613. package/types/ngwr-platform.d.ts +52 -57
  614. package/types/ngwr-popconfirm-testing.d.ts +181 -199
  615. package/types/ngwr-popconfirm.d.ts +151 -82
  616. package/types/ngwr-popover-testing.d.ts +183 -201
  617. package/types/ngwr-popover.d.ts +291 -207
  618. package/types/ngwr-progress.d.ts +38 -25
  619. package/types/ngwr-pull-to-refresh.d.ts +55 -40
  620. package/types/ngwr-qr.d.ts +79 -37
  621. package/types/ngwr-radio-testing.d.ts +208 -234
  622. package/types/ngwr-radio.d.ts +162 -125
  623. package/types/ngwr-rating-testing.d.ts +218 -244
  624. package/types/ngwr-rating.d.ts +146 -111
  625. package/types/ngwr-result.d.ts +85 -41
  626. package/types/ngwr-rotating-text-testing.d.ts +107 -125
  627. package/types/ngwr-rotating-text.d.ts +96 -52
  628. package/types/ngwr-schema-form.d.ts +57 -49
  629. package/types/ngwr-scroll.d.ts +27 -31
  630. package/types/ngwr-segmented-testing.d.ts +333 -359
  631. package/types/ngwr-segmented.d.ts +183 -165
  632. package/types/ngwr-select-testing.d.ts +128 -154
  633. package/types/ngwr-select.d.ts +1083 -906
  634. package/types/ngwr-shiny-text-testing.d.ts +82 -100
  635. package/types/ngwr-shiny-text.d.ts +83 -36
  636. package/types/ngwr-sidebar.d.ts +108 -93
  637. package/types/ngwr-skeleton.d.ts +34 -26
  638. package/types/ngwr-slider-testing.d.ts +228 -254
  639. package/types/ngwr-slider.d.ts +236 -186
  640. package/types/ngwr-sparkline-testing.d.ts +29 -47
  641. package/types/ngwr-sparkline.d.ts +130 -88
  642. package/types/ngwr-speed-dial-testing.d.ts +129 -155
  643. package/types/ngwr-speed-dial.d.ts +92 -57
  644. package/types/ngwr-spinner.d.ts +30 -23
  645. package/types/ngwr-splash-cursor-testing.d.ts +42 -60
  646. package/types/ngwr-splash-cursor.d.ts +129 -61
  647. package/types/ngwr-split-text-testing.d.ts +119 -137
  648. package/types/ngwr-split-text.d.ts +120 -71
  649. package/types/ngwr-splitter-testing.d.ts +114 -132
  650. package/types/ngwr-splitter.d.ts +85 -55
  651. package/types/ngwr-spotlight-card-testing.d.ts +177 -203
  652. package/types/ngwr-spotlight-card.d.ts +50 -32
  653. package/types/ngwr-squircle.d.ts +112 -70
  654. package/types/ngwr-star-border-testing.d.ts +74 -92
  655. package/types/ngwr-star-border.d.ts +42 -20
  656. package/types/ngwr-statistic.d.ts +210 -130
  657. package/types/ngwr-stepper-testing.d.ts +258 -284
  658. package/types/ngwr-stepper.d.ts +112 -75
  659. package/types/ngwr-storage.d.ts +96 -118
  660. package/types/ngwr-switch-testing.d.ts +26 -44
  661. package/types/ngwr-switch.d.ts +92 -62
  662. package/types/ngwr-table-testing.d.ts +291 -333
  663. package/types/ngwr-table.d.ts +922 -707
  664. package/types/ngwr-tabs-router.d.ts +21 -24
  665. package/types/ngwr-tabs-testing.d.ts +354 -380
  666. package/types/ngwr-tabs.d.ts +169 -155
  667. package/types/ngwr-textarea-testing.d.ts +123 -141
  668. package/types/ngwr-textarea.d.ts +160 -105
  669. package/types/ngwr-theme.d.ts +81 -163
  670. package/types/ngwr-tilt-card-testing.d.ts +94 -112
  671. package/types/ngwr-tilt-card.d.ts +64 -35
  672. package/types/ngwr-timeline.d.ts +36 -19
  673. package/types/ngwr-toast-testing.d.ts +37 -55
  674. package/types/ngwr-toast.d.ts +165 -209
  675. package/types/ngwr-toolbar.d.ts +17 -14
  676. package/types/ngwr-tour-testing.d.ts +84 -102
  677. package/types/ngwr-tour.d.ts +142 -144
  678. package/types/ngwr-transfer-testing.d.ts +293 -328
  679. package/types/ngwr-transfer.d.ts +217 -159
  680. package/types/ngwr-tree-testing.d.ts +428 -454
  681. package/types/ngwr-tree.d.ts +400 -296
  682. package/types/ngwr-typewriter-testing.d.ts +125 -143
  683. package/types/ngwr-typewriter.d.ts +137 -63
  684. package/types/ngwr-typography.d.ts +49 -27
  685. package/types/ngwr-utils.d.ts +100 -107
  686. package/types/ngwr-validators.d.ts +94 -104
  687. package/types/ngwr-version.d.ts +3 -14
  688. package/types/ngwr-virtual-scroll.d.ts +86 -58
  689. package/types/ngwr-waves-testing.d.ts +61 -79
  690. package/types/ngwr-waves.d.ts +116 -63
  691. package/types/ngwr-window-testing.d.ts +178 -204
  692. package/types/ngwr-window.d.ts +299 -325
  693. package/types/ngwr.d.ts +1 -2
  694. package/fesm2022/ngwr.mjs.map +0 -1
@@ -1,285 +1,360 @@
1
- import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
2
- import * as i0 from '@angular/core';
3
- import { input, inject, LOCALE_ID, ElementRef, signal, computed, ViewEncapsulation, Component } from '@angular/core';
4
- import { useI18nText, useI18nFormatter } from 'ngwr/i18n';
5
-
1
+ import { coerceBooleanProperty, coerceNumberProperty } from "@angular/cdk/coercion";
2
+ import * as i0 from "@angular/core";
3
+ import { Component, ElementRef, LOCALE_ID, ViewEncapsulation, computed, inject, input, signal } from "@angular/core";
4
+ import { useI18nFormatter, useI18nText } from "ngwr/i18n";
6
5
  /**
7
- * @license
8
- *
9
- * Use of this source code is governed by an MIT-style license that can be
10
- * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
11
- */
6
+ * @license
7
+ *
8
+ * Use of this source code is governed by an MIT-style license that can be
9
+ * found in the LICENSE file at https://github.com/thekhegay/ngwr/blob/main/LICENSE
10
+ */
12
11
  const FALLBACK_COLORS = [
13
- 'var(--wr-color-primary)',
14
- 'var(--wr-color-secondary)',
15
- 'var(--wr-color-success)',
16
- 'var(--wr-color-warning)',
17
- 'var(--wr-color-danger)',
12
+ "var(--wr-color-primary)",
13
+ "var(--wr-color-secondary)",
14
+ "var(--wr-color-success)",
15
+ "var(--wr-color-warning)",
16
+ "var(--wr-color-danger)"
18
17
  ];
19
- /**
20
- * Multi-series line chart with axes, gridlines, and a hover tooltip.
21
- * SVG-only — no external dependency.
22
- *
23
- * @example
24
- * ```html
25
- * <wr-line-chart
26
- * [series]="[
27
- * { label: 'Visits', data: [12, 18, 9, 22, 30, 27, 35] },
28
- * { label: 'Signups', data: [3, 5, 4, 8, 11, 9, 14], color: 'var(--wr-color-success)' }
29
- * ]"
30
- * [xLabels]="['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun']"
31
- * />
32
- * ```
33
- *
34
- * @see https://ngwr.dev/reference/components/line-chart
35
- */
36
- class WrLineChart {
37
- series = input([], /* @ts-ignore */
38
- ...(ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []));
39
- /**
40
- * Accessible name of the chart. The legend carries the series NAMES only — the numbers
41
- * are nowhere in text — so without this the plot is nothing at all to a screen reader.
42
- * Falls back to `lineChart.label`.
43
- */
44
- ariaLabel = input(null, /* @ts-ignore */
45
- ...(ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []));
46
- resolvedAriaLabel = useI18nText(this.ariaLabel, 'lineChart.label', 'Line chart');
47
- locale = inject(LOCALE_ID);
48
- thousandsText = useI18nFormatter('lineChart.thousands', '{{value}}k');
49
- /** Labels for the X axis (one per data point). */
50
- xLabels = input([], /* @ts-ignore */
51
- ...(ngDevMode ? [{ debugName: "xLabels" }] : /* istanbul ignore next */ []));
52
- /** Chart pixel height. @default 240 */
53
- height = input(240, { ...(ngDevMode ? { debugName: "height" } : /* istanbul ignore next */ {}), transform: (v) => Math.max(80, coerceNumberProperty(v, 240)) });
54
- /** Show gridlines + axis ticks. @default true */
55
- showGrid = input(true, { ...(ngDevMode ? { debugName: "showGrid" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
56
- /** Show the legend above the chart. @default true */
57
- showLegend = input(true, { ...(ngDevMode ? { debugName: "showLegend" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
58
- /** Show dots at each data point. @default true */
59
- showDots = input(true, { ...(ngDevMode ? { debugName: "showDots" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
60
- /**
61
- * Show the hover readout: the crosshair, the point markers and the tooltip. Off
62
- * drops all three, since a crosshair with no values beside it points at nothing.
63
- * @default true
64
- */
65
- tooltip = input(true, { ...(ngDevMode ? { debugName: "tooltip" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
66
- // Drawn in a 600×300 viewBox with reserved space for axis labels.
67
- vbW = 600;
68
- vbH = 300;
69
- padding = { top: 16, right: 16, bottom: 28, left: 36 };
70
- host = inject(ElementRef);
71
- /** Hovered point index (across all series) — null when no hover. */
72
- hoveredIndex = signal(null, /* @ts-ignore */
73
- ...(ngDevMode ? [{ debugName: "hoveredIndex" }] : /* istanbul ignore next */ []));
74
- /** The hovered index while the readout is on, so turning `tooltip` off mid-hover clears it. */
75
- activeIndex = computed(() => (this.tooltip() ? this.hoveredIndex() : null), /* @ts-ignore */
76
- ...(ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []));
77
- /**
78
- * A dash pattern per series, so the lines are told apart by SHAPE and not
79
- * only by hue.
80
- *
81
- * The default palette's colours sit within about 1.06:1 of each other in
82
- * relative luminance — that is the whole nine-intent scale's constraint, and
83
- * it means a reader with red-green colour blindness sees several of these
84
- * strokes as one grey. A legend that pairs a coloured square with a name does
85
- * not rescue it: matching the square to the line is exactly the step that
86
- * needs hue. Distinguishing series by dash is the standard remedy and the
87
- * only one that survives greyscale, printing and a monochrome display.
88
- *
89
- * The FIRST entry is solid on purpose. A single-series chart is the common
90
- * case and there is nothing to tell apart in it, so it is left exactly as it
91
- * was; the patterns only appear once a second series does.
92
- */
93
- static DASHES = ['', '7 4', '2 3', '10 4 2 4', '1 4', '6 3 2 3'];
94
- resolvedSeries = computed(() => this.series().map((s, i) => ({
95
- label: s.label,
96
- dash: WrLineChart.DASHES[i % WrLineChart.DASHES.length],
97
- // A non-finite point becomes a HOLE at its own index, not a missing element.
98
- // It cannot stay a number: `Math.min`/`Math.max` over the pooled data are both
99
- // NaN as soon as one datum is, so every coordinate in EVERY series came out
100
- // `NaN` — invalid path geometry, and the whole chart vanished rather than the
101
- // one bad point. But filtering it out closed the gap and slid every LATER point
102
- // one x-slot to the left, so each of them was drawn under, and reported in the
103
- // tooltip as, the wrong x label. A gap is kept as a gap and the line is broken
104
- // across it: interpolating would invent a reading the data never took.
105
- data: s.data.map(v => (Number.isFinite(v) ? v : null)),
106
- color: s.color ?? FALLBACK_COLORS[i % FALLBACK_COLORS.length],
107
- })), /* @ts-ignore */
108
- ...(ngDevMode ? [{ debugName: "resolvedSeries" }] : /* istanbul ignore next */ []));
109
- bounds = computed(() => {
110
- const all = this.resolvedSeries().flatMap(s => s.data.filter(v => v !== null));
111
- if (all.length === 0)
112
- return { min: 0, max: 1 };
113
- const min = Math.min(...all);
114
- const max = Math.max(...all);
115
- if (min === max)
116
- return { min: min - 1, max: max + 1 };
117
- // Pad upper bound by ~10% for breathing room.
118
- return { min: Math.min(0, min), max: max + (max - min) * 0.1 };
119
- }, /* @ts-ignore */
120
- ...(ngDevMode ? [{ debugName: "bounds" }] : /* istanbul ignore next */ []));
121
- pointCount = computed(() => {
122
- const maxLen = this.resolvedSeries().reduce((acc, s) => Math.max(acc, s.data.length), 0);
123
- return Math.max(maxLen, this.xLabels().length);
124
- }, /* @ts-ignore */
125
- ...(ngDevMode ? [{ debugName: "pointCount" }] : /* istanbul ignore next */ []));
126
- /** Y-axis tick marks (5 of them). */
127
- yTicks = computed(() => {
128
- const { min, max } = this.bounds();
129
- const step = (max - min) / 4;
130
- return [0, 1, 2, 3, 4].map(i => {
131
- const value = max - i * step;
132
- return { value, y: this.padding.top + ((max - value) / (max - min)) * this.plotHeight() };
133
- });
134
- }, /* @ts-ignore */
135
- ...(ngDevMode ? [{ debugName: "yTicks" }] : /* istanbul ignore next */ []));
136
- plotWidth = () => this.vbW - this.padding.left - this.padding.right;
137
- plotHeight = () => this.vbH - this.padding.top - this.padding.bottom;
138
- /**
139
- * The SVG path for a series — one subpath per unbroken run, so a hole in the data
140
- * leaves a hole in the line rather than a straight segment across it.
141
- */
142
- pathFor(series) {
143
- const { min, max } = this.bounds();
144
- const count = this.pointCount();
145
- if (count <= 1)
146
- return '';
147
- const pw = this.plotWidth();
148
- const ph = this.plotHeight();
149
- const commands = [];
150
- let run = 0;
151
- let last = '';
152
- // A subpath of one `M` is not stroked at all, so a point with a gap on both sides
153
- // would simply vanish when `showDots` is off. Repeating it gives the round linecap
154
- // something to paint.
155
- const closeRun = () => {
156
- if (run === 1)
157
- commands.push(`L ${last}`);
158
- run = 0;
159
- };
160
- series.data.forEach((v, i) => {
161
- if (v === null) {
162
- closeRun();
163
- return;
164
- }
165
- const x = this.padding.left + (i / (count - 1)) * pw;
166
- const y = this.padding.top + ((max - v) / (max - min)) * ph;
167
- last = `${x.toFixed(2)} ${y.toFixed(2)}`;
168
- commands.push(`${run === 0 ? 'M' : 'L'} ${last}`);
169
- run++;
170
- });
171
- closeRun();
172
- return commands.join(' ');
173
- }
174
- pointX(index) {
175
- const count = this.pointCount();
176
- if (count <= 1)
177
- return this.padding.left;
178
- return this.padding.left + (index / (count - 1)) * this.plotWidth();
179
- }
180
- pointY(value) {
181
- const { min, max } = this.bounds();
182
- return this.padding.top + ((max - value) / (max - min)) * this.plotHeight();
183
- }
184
- /**
185
- * A point's x as a percentage of the host's width. The x-label strip and the SVG share
186
- * that width — the drawing stretches to it — so this is the same space the tooltip and
187
- * the labels are placed in, at any size.
188
- */
189
- xPercent(index) {
190
- return (this.pointX(index) / this.vbW) * 100;
191
- }
192
- /**
193
- * How wide an x label may be, as a percentage of the host's width: its own slot — half
194
- * the distance to a neighbour on each side — cut back to what is left between its point
195
- * and the end of the strip. Centring a label on its point says nothing about its WIDTH,
196
- * and with no bound at all twelve month names printed over each other and the last one
197
- * hung outside the chart. Past this the stylesheet ellipsises.
198
- */
199
- xMaxPercent(index) {
200
- const count = this.pointCount();
201
- // A single label has no neighbour to collide with and the whole strip to sit in.
202
- if (count <= 1)
203
- return 100;
204
- const slot = (this.plotWidth() / (count - 1) / this.vbW) * 100;
205
- const x = this.xPercent(index);
206
- return Math.min(slot, x + slot / 2, 100 - x + slot / 2);
207
- }
208
- hoverPoints = computed(() => {
209
- const i = this.activeIndex();
210
- if (i === null)
211
- return [];
212
- return this.resolvedSeries().flatMap(s => {
213
- // Past the end of a short series, or on a hole in a longer one — either way there
214
- // is no reading at this x, so the series contributes neither a marker nor a row.
215
- const value = s.data[i];
216
- if (value === undefined || value === null)
217
- return [];
218
- return [{ label: s.label, value, color: s.color, x: this.pointX(i), y: this.pointY(value) }];
219
- });
220
- }, /* @ts-ignore */
221
- ...(ngDevMode ? [{ debugName: "hoverPoints" }] : /* istanbul ignore next */ []));
222
- hoverLabel = computed(() => {
223
- const i = this.activeIndex();
224
- if (i === null)
225
- return '';
226
- return this.xLabels()[i] ?? String(i);
227
- }, /* @ts-ignore */
228
- ...(ngDevMode ? [{ debugName: "hoverLabel" }] : /* istanbul ignore next */ []));
229
- onPointerMove(event) {
230
- if (!this.tooltip())
231
- return;
232
- const svg = event.currentTarget.getBoundingClientRect();
233
- const ratio = (event.clientX - svg.left) / svg.width;
234
- const vbX = ratio * this.vbW;
235
- const count = this.pointCount();
236
- if (count === 0)
237
- return;
238
- const i = Math.round(((vbX - this.padding.left) / this.plotWidth()) * (count - 1));
239
- if (i >= 0 && i < count)
240
- this.hoveredIndex.set(i);
241
- }
242
- onPointerLeave() {
243
- this.hoveredIndex.set(null);
244
- }
245
- /**
246
- * A Y-axis tick, in the reader's own language.
247
- *
248
- * Two halves and both were English. The `k` was a hardcoded Latin
249
- * abbreviation — `тыс.` in Russian — so it goes through the catalog like every
250
- * other word the library paints. The digits went through `toFixed`, which
251
- * always writes a full stop, so a German axis read `1.5` where the rest of the
252
- * page read `1,5`; they go through `Intl` now, the way `wrNumber`, `wrDate`
253
- * and `wrPlural` already did.
254
- *
255
- * Grouping is OFF deliberately: a tick is a short axis label, and `5,000k`
256
- * would be both wider and a change to what every existing chart draws.
257
- */
258
- formatTick(v) {
259
- const digits = (n, fraction) => new Intl.NumberFormat(this.locale, {
260
- useGrouping: false,
261
- minimumFractionDigits: fraction,
262
- maximumFractionDigits: fraction,
263
- }).format(n);
264
- if (Math.abs(v) >= 1000)
265
- return this.thousandsText({ value: digits(v / 1000, v % 1000 === 0 ? 0 : 1) });
266
- return digits(v, v % 1 === 0 ? 0 : 1);
267
- }
268
- viewBox = computed(() => `0 0 ${this.vbW} ${this.vbH}`, /* @ts-ignore */
269
- ...(ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []));
270
- // Convenience accessor so the host can be referenced from the template.
271
- hostEl = this.host.nativeElement;
272
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrLineChart, deps: [], target: i0.ɵɵFactoryTarget.Component });
273
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.7", type: WrLineChart, isStandalone: true, selector: "wr-line-chart", inputs: { series: { classPropertyName: "series", publicName: "series", isSignal: true, isRequired: false, transformFunction: null }, ariaLabel: { classPropertyName: "ariaLabel", publicName: "ariaLabel", isSignal: true, isRequired: false, transformFunction: null }, xLabels: { classPropertyName: "xLabels", publicName: "xLabels", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, showGrid: { classPropertyName: "showGrid", publicName: "showGrid", isSignal: true, isRequired: false, transformFunction: null }, showLegend: { classPropertyName: "showLegend", publicName: "showLegend", isSignal: true, isRequired: false, transformFunction: null }, showDots: { classPropertyName: "showDots", publicName: "showDots", isSignal: true, isRequired: false, transformFunction: null }, tooltip: { classPropertyName: "tooltip", publicName: "tooltip", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-line-chart" }, ngImport: i0, template: "@let hovered = activeIndex();\n@if (showLegend() && resolvedSeries().length > 0) {\n <ul class=\"wr-line-chart__legend\">\n @for (s of resolvedSeries(); track s.label) {\n <li class=\"wr-line-chart__legend-item\">\n <!-- The swatch draws the series' own dash, not a solid block. A legend\n that pairs a coloured square with a name leaves the reader to match\n the square to the LINE, and matching by colour is the step the\n patterns exist to remove. -->\n <svg class=\"wr-line-chart__swatch\" viewBox=\"0 0 16 2\" aria-hidden=\"true\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"16\"\n y2=\"1\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>{{ s.label }}</span>\n </li>\n }\n </ul>\n}\n\n<div class=\"wr-line-chart__plot\" role=\"img\" [attr.aria-label]=\"resolvedAriaLabel()\" [style.height.px]=\"height()\">\n <!-- Named, where it was the only unnamed element in the component. The legend\n swatch is an `<svg>` too now, so `querySelector('svg')` no longer means\n \"the chart\" \u2014 and a plot that nothing can address by name is one a\n consumer's stylesheet and a spec both have to reach by position. -->\n <svg\n class=\"wr-line-chart__svg\"\n [attr.viewBox]=\"viewBox()\"\n preserveAspectRatio=\"none\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave()\"\n >\n @if (showGrid()) {\n @for (tick of yTicks(); track tick.value) {\n <line\n class=\"wr-line-chart__grid-line\"\n [attr.x1]=\"padding.left\"\n [attr.x2]=\"vbW - padding.right\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n stroke=\"rgba(var(--wr-color-light-rgb), 0.7)\"\n stroke-width=\"1\"\n vector-effect=\"non-scaling-stroke\"\n />\n <text\n class=\"wr-line-chart__tick\"\n [attr.x]=\"padding.left - 6\"\n [attr.y]=\"tick.y + 4\"\n text-anchor=\"end\"\n fill=\"var(--wr-color-on-surface-muted)\"\n font-size=\"10\"\n font-family=\"var(--wr-font-family-base)\"\n >\n {{ formatTick(tick.value) }}\n </text>\n }\n }\n\n @for (s of resolvedSeries(); track s.label) {\n <path\n class=\"wr-line-chart__line\"\n [attr.d]=\"pathFor(s)\"\n fill=\"none\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n @if (showDots()) {\n @for (v of s.data; track $index; let i = $index) {\n <!-- A hole in the data gets no dot: the index still belongs to it, so the\n points after it stay on their own x. -->\n @if (v !== null) {\n <circle\n class=\"wr-line-chart__dot\"\n [attr.cx]=\"pointX(i)\"\n [attr.cy]=\"pointY(v)\"\n r=\"3\"\n [attr.fill]=\"s.color\"\n />\n }\n }\n }\n }\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <line\n class=\"wr-line-chart__crosshair\"\n [attr.x1]=\"pointX(hovered)\"\n [attr.x2]=\"pointX(hovered)\"\n [attr.y1]=\"padding.top\"\n [attr.y2]=\"vbH - padding.bottom\"\n stroke=\"var(--wr-color-medium)\"\n stroke-width=\"1\"\n stroke-dasharray=\"3 3\"\n vector-effect=\"non-scaling-stroke\"\n />\n @for (p of hoverPoints(); track p.label) {\n <circle\n [attr.cx]=\"p.x\"\n [attr.cy]=\"p.y\"\n r=\"5\"\n fill=\"var(--wr-color-white)\"\n [attr.stroke]=\"p.color\"\n stroke-width=\"2\"\n />\n }\n }\n </svg>\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <!-- The layer spans the plot and is what the tooltip's `cqw` measures. It is out of\n flow, so the containment it turns on costs the plot's own sizing nothing. The\n tooltip takes the same `--wr-line-chart-x` the x labels take, and the same clamp:\n centred on its point, never past either end. -->\n <div class=\"wr-line-chart__tooltip-layer\">\n <div\n class=\"wr-line-chart__tooltip\"\n [style.left.%]=\"xPercent(hovered)\"\n [style.--wr-line-chart-x]=\"xPercent(hovered)\"\n [style.top.px]=\"padding.top\"\n >\n <div class=\"wr-line-chart__tooltip-label\">{{ hoverLabel() }}</div>\n @for (p of hoverPoints(); track p.label) {\n <div class=\"wr-line-chart__tooltip-row\">\n <span class=\"wr-line-chart__swatch\" [style.background]=\"p.color\"></span>\n <span class=\"wr-line-chart__tooltip-name\">{{ p.label }}</span>\n <span class=\"wr-line-chart__tooltip-value\">{{ p.value }}</span>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@if (xLabels().length > 0) {\n <div class=\"wr-line-chart__x-labels\">\n @for (label of xLabels(); track $index) {\n <!-- Each label hands the stylesheet two numbers, both percentages of the host's\n width \u2014 the space the stretching SVG is in, so they track the drawing at any\n size. The x of the point it names, which the stylesheet centres it on; and the\n widest it may be before it reaches a neighbour or the end of the strip, past\n which the stylesheet ellipsises it. Laying the labels out as equal centred flex\n slots instead is bar-chart geometry: only the middle label landed on its dot,\n and the outer ones sat up to half a column away. -->\n <span\n class=\"wr-line-chart__x-label\"\n [style.--wr-line-chart-x]=\"xPercent($index)\"\n [style.--wr-line-chart-x-max]=\"xMaxPercent($index)\"\n >{{ label }}</span\n >\n }\n </div>\n}\n", encapsulation: i0.ViewEncapsulation.None });
274
- }
275
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.7", ngImport: i0, type: WrLineChart, decorators: [{
276
- type: Component,
277
- args: [{ selector: 'wr-line-chart', encapsulation: ViewEncapsulation.None, host: { class: 'wr-line-chart' }, template: "@let hovered = activeIndex();\n@if (showLegend() && resolvedSeries().length > 0) {\n <ul class=\"wr-line-chart__legend\">\n @for (s of resolvedSeries(); track s.label) {\n <li class=\"wr-line-chart__legend-item\">\n <!-- The swatch draws the series' own dash, not a solid block. A legend\n that pairs a coloured square with a name leaves the reader to match\n the square to the LINE, and matching by colour is the step the\n patterns exist to remove. -->\n <svg class=\"wr-line-chart__swatch\" viewBox=\"0 0 16 2\" aria-hidden=\"true\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"16\"\n y2=\"1\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>{{ s.label }}</span>\n </li>\n }\n </ul>\n}\n\n<div class=\"wr-line-chart__plot\" role=\"img\" [attr.aria-label]=\"resolvedAriaLabel()\" [style.height.px]=\"height()\">\n <!-- Named, where it was the only unnamed element in the component. The legend\n swatch is an `<svg>` too now, so `querySelector('svg')` no longer means\n \"the chart\" \u2014 and a plot that nothing can address by name is one a\n consumer's stylesheet and a spec both have to reach by position. -->\n <svg\n class=\"wr-line-chart__svg\"\n [attr.viewBox]=\"viewBox()\"\n preserveAspectRatio=\"none\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave()\"\n >\n @if (showGrid()) {\n @for (tick of yTicks(); track tick.value) {\n <line\n class=\"wr-line-chart__grid-line\"\n [attr.x1]=\"padding.left\"\n [attr.x2]=\"vbW - padding.right\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n stroke=\"rgba(var(--wr-color-light-rgb), 0.7)\"\n stroke-width=\"1\"\n vector-effect=\"non-scaling-stroke\"\n />\n <text\n class=\"wr-line-chart__tick\"\n [attr.x]=\"padding.left - 6\"\n [attr.y]=\"tick.y + 4\"\n text-anchor=\"end\"\n fill=\"var(--wr-color-on-surface-muted)\"\n font-size=\"10\"\n font-family=\"var(--wr-font-family-base)\"\n >\n {{ formatTick(tick.value) }}\n </text>\n }\n }\n\n @for (s of resolvedSeries(); track s.label) {\n <path\n class=\"wr-line-chart__line\"\n [attr.d]=\"pathFor(s)\"\n fill=\"none\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n @if (showDots()) {\n @for (v of s.data; track $index; let i = $index) {\n <!-- A hole in the data gets no dot: the index still belongs to it, so the\n points after it stay on their own x. -->\n @if (v !== null) {\n <circle\n class=\"wr-line-chart__dot\"\n [attr.cx]=\"pointX(i)\"\n [attr.cy]=\"pointY(v)\"\n r=\"3\"\n [attr.fill]=\"s.color\"\n />\n }\n }\n }\n }\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <line\n class=\"wr-line-chart__crosshair\"\n [attr.x1]=\"pointX(hovered)\"\n [attr.x2]=\"pointX(hovered)\"\n [attr.y1]=\"padding.top\"\n [attr.y2]=\"vbH - padding.bottom\"\n stroke=\"var(--wr-color-medium)\"\n stroke-width=\"1\"\n stroke-dasharray=\"3 3\"\n vector-effect=\"non-scaling-stroke\"\n />\n @for (p of hoverPoints(); track p.label) {\n <circle\n [attr.cx]=\"p.x\"\n [attr.cy]=\"p.y\"\n r=\"5\"\n fill=\"var(--wr-color-white)\"\n [attr.stroke]=\"p.color\"\n stroke-width=\"2\"\n />\n }\n }\n </svg>\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <!-- The layer spans the plot and is what the tooltip's `cqw` measures. It is out of\n flow, so the containment it turns on costs the plot's own sizing nothing. The\n tooltip takes the same `--wr-line-chart-x` the x labels take, and the same clamp:\n centred on its point, never past either end. -->\n <div class=\"wr-line-chart__tooltip-layer\">\n <div\n class=\"wr-line-chart__tooltip\"\n [style.left.%]=\"xPercent(hovered)\"\n [style.--wr-line-chart-x]=\"xPercent(hovered)\"\n [style.top.px]=\"padding.top\"\n >\n <div class=\"wr-line-chart__tooltip-label\">{{ hoverLabel() }}</div>\n @for (p of hoverPoints(); track p.label) {\n <div class=\"wr-line-chart__tooltip-row\">\n <span class=\"wr-line-chart__swatch\" [style.background]=\"p.color\"></span>\n <span class=\"wr-line-chart__tooltip-name\">{{ p.label }}</span>\n <span class=\"wr-line-chart__tooltip-value\">{{ p.value }}</span>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@if (xLabels().length > 0) {\n <div class=\"wr-line-chart__x-labels\">\n @for (label of xLabels(); track $index) {\n <!-- Each label hands the stylesheet two numbers, both percentages of the host's\n width \u2014 the space the stretching SVG is in, so they track the drawing at any\n size. The x of the point it names, which the stylesheet centres it on; and the\n widest it may be before it reaches a neighbour or the end of the strip, past\n which the stylesheet ellipsises it. Laying the labels out as equal centred flex\n slots instead is bar-chart geometry: only the middle label landed on its dot,\n and the outer ones sat up to half a column away. -->\n <span\n class=\"wr-line-chart__x-label\"\n [style.--wr-line-chart-x]=\"xPercent($index)\"\n [style.--wr-line-chart-x-max]=\"xMaxPercent($index)\"\n >{{ label }}</span\n >\n }\n </div>\n}\n" }]
278
- }], propDecorators: { series: [{ type: i0.Input, args: [{ isSignal: true, alias: "series", required: false }] }], ariaLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "ariaLabel", required: false }] }], xLabels: [{ type: i0.Input, args: [{ isSignal: true, alias: "xLabels", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], showGrid: [{ type: i0.Input, args: [{ isSignal: true, alias: "showGrid", required: false }] }], showLegend: [{ type: i0.Input, args: [{ isSignal: true, alias: "showLegend", required: false }] }], showDots: [{ type: i0.Input, args: [{ isSignal: true, alias: "showDots", required: false }] }], tooltip: [{ type: i0.Input, args: [{ isSignal: true, alias: "tooltip", required: false }] }] } });
279
-
280
- /**
281
- * Generated bundle index. Do not edit.
282
- */
283
-
18
+ var WrLineChart = class WrLineChart {
19
+ series = input([], ...ngDevMode ? [{ debugName: "series" }] : /* istanbul ignore next */ []);
20
+ ariaLabel = input(null, ...ngDevMode ? [{ debugName: "ariaLabel" }] : /* istanbul ignore next */ []);
21
+ resolvedAriaLabel = useI18nText(this.ariaLabel, "lineChart.label", "Line chart");
22
+ locale = inject(LOCALE_ID);
23
+ thousandsText = useI18nFormatter("lineChart.thousands", "{{value}}k");
24
+ xLabels = input([], ...ngDevMode ? [{ debugName: "xLabels" }] : /* istanbul ignore next */ []);
25
+ height = input(240, {
26
+ ...ngDevMode ? { debugName: "height" } : /* istanbul ignore next */ {},
27
+ transform: (v) => Math.max(80, coerceNumberProperty(v, 240))
28
+ });
29
+ showGrid = input(true, {
30
+ ...ngDevMode ? { debugName: "showGrid" } : /* istanbul ignore next */ {},
31
+ transform: coerceBooleanProperty
32
+ });
33
+ showLegend = input(true, {
34
+ ...ngDevMode ? { debugName: "showLegend" } : /* istanbul ignore next */ {},
35
+ transform: coerceBooleanProperty
36
+ });
37
+ showDots = input(true, {
38
+ ...ngDevMode ? { debugName: "showDots" } : /* istanbul ignore next */ {},
39
+ transform: coerceBooleanProperty
40
+ });
41
+ tooltip = input(true, {
42
+ ...ngDevMode ? { debugName: "tooltip" } : /* istanbul ignore next */ {},
43
+ transform: coerceBooleanProperty
44
+ });
45
+ vbW = 600;
46
+ vbH = 300;
47
+ padding = {
48
+ top: 16,
49
+ right: 16,
50
+ bottom: 28,
51
+ left: 36
52
+ };
53
+ host = inject(ElementRef);
54
+ hoveredIndex = signal(null, ...ngDevMode ? [{ debugName: "hoveredIndex" }] : /* istanbul ignore next */ []);
55
+ activeIndex = computed(() => this.tooltip() ? this.hoveredIndex() : null, ...ngDevMode ? [{ debugName: "activeIndex" }] : /* istanbul ignore next */ []);
56
+ static DASHES = [
57
+ "",
58
+ "7 4",
59
+ "2 3",
60
+ "10 4 2 4",
61
+ "1 4",
62
+ "6 3 2 3"
63
+ ];
64
+ resolvedSeries = computed(() => this.series().map((s, i) => ({
65
+ label: s.label,
66
+ dash: WrLineChart.DASHES[i % WrLineChart.DASHES.length],
67
+ data: s.data.map((v) => Number.isFinite(v) ? v : null),
68
+ color: s.color ?? FALLBACK_COLORS[i % FALLBACK_COLORS.length]
69
+ })), ...ngDevMode ? [{ debugName: "resolvedSeries" }] : /* istanbul ignore next */ []);
70
+ bounds = computed(() => {
71
+ const all = this.resolvedSeries().flatMap((s) => s.data.filter((v) => v !== null));
72
+ if (all.length === 0) return {
73
+ min: 0,
74
+ max: 1
75
+ };
76
+ const min = Math.min(...all);
77
+ const max = Math.max(...all);
78
+ if (min === max) return {
79
+ min: min - 1,
80
+ max: max + 1
81
+ };
82
+ return {
83
+ min: Math.min(0, min),
84
+ max: max + (max - min) * .1
85
+ };
86
+ }, ...ngDevMode ? [{ debugName: "bounds" }] : /* istanbul ignore next */ []);
87
+ pointCount = computed(() => {
88
+ const maxLen = this.resolvedSeries().reduce((acc, s) => Math.max(acc, s.data.length), 0);
89
+ return Math.max(maxLen, this.xLabels().length);
90
+ }, ...ngDevMode ? [{ debugName: "pointCount" }] : /* istanbul ignore next */ []);
91
+ yTicks = computed(() => {
92
+ const { min, max } = this.bounds();
93
+ const step = (max - min) / 4;
94
+ return [
95
+ 0,
96
+ 1,
97
+ 2,
98
+ 3,
99
+ 4
100
+ ].map((i) => {
101
+ const value = max - i * step;
102
+ return {
103
+ value,
104
+ y: this.padding.top + (max - value) / (max - min) * this.plotHeight()
105
+ };
106
+ });
107
+ }, ...ngDevMode ? [{ debugName: "yTicks" }] : /* istanbul ignore next */ []);
108
+ plotWidth = () => this.vbW - this.padding.left - this.padding.right;
109
+ plotHeight = () => this.vbH - this.padding.top - this.padding.bottom;
110
+ pathFor(series) {
111
+ const { min, max } = this.bounds();
112
+ const count = this.pointCount();
113
+ if (count <= 1) return "";
114
+ const pw = this.plotWidth();
115
+ const ph = this.plotHeight();
116
+ const commands = [];
117
+ let run = 0;
118
+ let last = "";
119
+ const closeRun = () => {
120
+ if (run === 1) commands.push(`L ${last}`);
121
+ run = 0;
122
+ };
123
+ series.data.forEach((v, i) => {
124
+ if (v === null) {
125
+ closeRun();
126
+ return;
127
+ }
128
+ const x = this.padding.left + i / (count - 1) * pw;
129
+ const y = this.padding.top + (max - v) / (max - min) * ph;
130
+ last = `${x.toFixed(2)} ${y.toFixed(2)}`;
131
+ commands.push(`${run === 0 ? "M" : "L"} ${last}`);
132
+ run++;
133
+ });
134
+ closeRun();
135
+ return commands.join(" ");
136
+ }
137
+ pointX(index) {
138
+ const count = this.pointCount();
139
+ if (count <= 1) return this.padding.left;
140
+ return this.padding.left + index / (count - 1) * this.plotWidth();
141
+ }
142
+ pointY(value) {
143
+ const { min, max } = this.bounds();
144
+ return this.padding.top + (max - value) / (max - min) * this.plotHeight();
145
+ }
146
+ xPercent(index) {
147
+ return this.pointX(index) / this.vbW * 100;
148
+ }
149
+ xMaxPercent(index) {
150
+ const count = this.pointCount();
151
+ if (count <= 1) return 100;
152
+ const slot = this.plotWidth() / (count - 1) / this.vbW * 100;
153
+ const x = this.xPercent(index);
154
+ return Math.min(slot, x + slot / 2, 100 - x + slot / 2);
155
+ }
156
+ hoverPoints = computed(() => {
157
+ const i = this.activeIndex();
158
+ if (i === null) return [];
159
+ return this.resolvedSeries().flatMap((s) => {
160
+ const value = s.data[i];
161
+ if (value === void 0 || value === null) return [];
162
+ return [{
163
+ label: s.label,
164
+ value,
165
+ color: s.color,
166
+ x: this.pointX(i),
167
+ y: this.pointY(value)
168
+ }];
169
+ });
170
+ }, ...ngDevMode ? [{ debugName: "hoverPoints" }] : /* istanbul ignore next */ []);
171
+ hoverLabel = computed(() => {
172
+ const i = this.activeIndex();
173
+ if (i === null) return "";
174
+ return this.xLabels()[i] ?? String(i);
175
+ }, ...ngDevMode ? [{ debugName: "hoverLabel" }] : /* istanbul ignore next */ []);
176
+ onPointerMove(event) {
177
+ if (!this.tooltip()) return;
178
+ const svg = event.currentTarget.getBoundingClientRect();
179
+ const vbX = (event.clientX - svg.left) / svg.width * this.vbW;
180
+ const count = this.pointCount();
181
+ if (count === 0) return;
182
+ const i = Math.round((vbX - this.padding.left) / this.plotWidth() * (count - 1));
183
+ if (i >= 0 && i < count) this.hoveredIndex.set(i);
184
+ }
185
+ onPointerLeave() {
186
+ this.hoveredIndex.set(null);
187
+ }
188
+ formatTick(v) {
189
+ const digits = (n, fraction) => new Intl.NumberFormat(this.locale, {
190
+ useGrouping: false,
191
+ minimumFractionDigits: fraction,
192
+ maximumFractionDigits: fraction
193
+ }).format(n);
194
+ if (Math.abs(v) >= 1e3) return this.thousandsText({ value: digits(v / 1e3, v % 1e3 === 0 ? 0 : 1) });
195
+ return digits(v, v % 1 === 0 ? 0 : 1);
196
+ }
197
+ viewBox = computed(() => `0 0 ${this.vbW} ${this.vbH}`, ...ngDevMode ? [{ debugName: "viewBox" }] : /* istanbul ignore next */ []);
198
+ hostEl = this.host.nativeElement;
199
+ static ɵfac = i0.ɵɵngDeclareFactory({
200
+ minVersion: "12.0.0",
201
+ version: "22.2.0",
202
+ ngImport: i0,
203
+ type: WrLineChart,
204
+ deps: [],
205
+ target: i0.ɵɵFactoryTarget.Component
206
+ });
207
+ static ɵcmp = i0.ɵɵngDeclareComponent({
208
+ minVersion: "17.0.0",
209
+ version: "22.2.0",
210
+ type: WrLineChart,
211
+ isStandalone: true,
212
+ selector: "wr-line-chart",
213
+ inputs: {
214
+ series: {
215
+ classPropertyName: "series",
216
+ publicName: "series",
217
+ isSignal: true,
218
+ isRequired: false,
219
+ transformFunction: null
220
+ },
221
+ ariaLabel: {
222
+ classPropertyName: "ariaLabel",
223
+ publicName: "ariaLabel",
224
+ isSignal: true,
225
+ isRequired: false,
226
+ transformFunction: null
227
+ },
228
+ xLabels: {
229
+ classPropertyName: "xLabels",
230
+ publicName: "xLabels",
231
+ isSignal: true,
232
+ isRequired: false,
233
+ transformFunction: null
234
+ },
235
+ height: {
236
+ classPropertyName: "height",
237
+ publicName: "height",
238
+ isSignal: true,
239
+ isRequired: false,
240
+ transformFunction: null
241
+ },
242
+ showGrid: {
243
+ classPropertyName: "showGrid",
244
+ publicName: "showGrid",
245
+ isSignal: true,
246
+ isRequired: false,
247
+ transformFunction: null
248
+ },
249
+ showLegend: {
250
+ classPropertyName: "showLegend",
251
+ publicName: "showLegend",
252
+ isSignal: true,
253
+ isRequired: false,
254
+ transformFunction: null
255
+ },
256
+ showDots: {
257
+ classPropertyName: "showDots",
258
+ publicName: "showDots",
259
+ isSignal: true,
260
+ isRequired: false,
261
+ transformFunction: null
262
+ },
263
+ tooltip: {
264
+ classPropertyName: "tooltip",
265
+ publicName: "tooltip",
266
+ isSignal: true,
267
+ isRequired: false,
268
+ transformFunction: null
269
+ }
270
+ },
271
+ host: { classAttribute: "wr-line-chart" },
272
+ ngImport: i0,
273
+ template: "@let hovered = activeIndex();\n@if (showLegend() && resolvedSeries().length > 0) {\n <ul class=\"wr-line-chart__legend\">\n @for (s of resolvedSeries(); track s.label) {\n <li class=\"wr-line-chart__legend-item\">\n <!-- The swatch draws the series' own dash, not a solid block. A legend\n that pairs a coloured square with a name leaves the reader to match\n the square to the LINE, and matching by colour is the step the\n patterns exist to remove. -->\n <svg class=\"wr-line-chart__swatch\" viewBox=\"0 0 16 2\" aria-hidden=\"true\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"16\"\n y2=\"1\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>{{ s.label }}</span>\n </li>\n }\n </ul>\n}\n\n<div class=\"wr-line-chart__plot\" role=\"img\" [attr.aria-label]=\"resolvedAriaLabel()\" [style.height.px]=\"height()\">\n <!-- Named, where it was the only unnamed element in the component. The legend\n swatch is an `<svg>` too now, so `querySelector('svg')` no longer means\n \"the chart\" — and a plot that nothing can address by name is one a\n consumer's stylesheet and a spec both have to reach by position. -->\n <svg\n class=\"wr-line-chart__svg\"\n [attr.viewBox]=\"viewBox()\"\n preserveAspectRatio=\"none\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave()\"\n >\n @if (showGrid()) {\n @for (tick of yTicks(); track tick.value) {\n <line\n class=\"wr-line-chart__grid-line\"\n [attr.x1]=\"padding.left\"\n [attr.x2]=\"vbW - padding.right\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n stroke=\"rgba(var(--wr-color-light-rgb), 0.7)\"\n stroke-width=\"1\"\n vector-effect=\"non-scaling-stroke\"\n />\n <text\n class=\"wr-line-chart__tick\"\n [attr.x]=\"padding.left - 6\"\n [attr.y]=\"tick.y + 4\"\n text-anchor=\"end\"\n fill=\"var(--wr-color-on-surface-muted)\"\n font-size=\"10\"\n font-family=\"var(--wr-font-family-base)\"\n >\n {{ formatTick(tick.value) }}\n </text>\n }\n }\n\n @for (s of resolvedSeries(); track s.label) {\n <path\n class=\"wr-line-chart__line\"\n [attr.d]=\"pathFor(s)\"\n fill=\"none\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n @if (showDots()) {\n @for (v of s.data; track $index; let i = $index) {\n <!-- A hole in the data gets no dot: the index still belongs to it, so the\n points after it stay on their own x. -->\n @if (v !== null) {\n <circle\n class=\"wr-line-chart__dot\"\n [attr.cx]=\"pointX(i)\"\n [attr.cy]=\"pointY(v)\"\n r=\"3\"\n [attr.fill]=\"s.color\"\n />\n }\n }\n }\n }\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <line\n class=\"wr-line-chart__crosshair\"\n [attr.x1]=\"pointX(hovered)\"\n [attr.x2]=\"pointX(hovered)\"\n [attr.y1]=\"padding.top\"\n [attr.y2]=\"vbH - padding.bottom\"\n stroke=\"var(--wr-color-medium)\"\n stroke-width=\"1\"\n stroke-dasharray=\"3 3\"\n vector-effect=\"non-scaling-stroke\"\n />\n @for (p of hoverPoints(); track p.label) {\n <circle\n [attr.cx]=\"p.x\"\n [attr.cy]=\"p.y\"\n r=\"5\"\n fill=\"var(--wr-color-white)\"\n [attr.stroke]=\"p.color\"\n stroke-width=\"2\"\n />\n }\n }\n </svg>\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <!-- The layer spans the plot and is what the tooltip's `cqw` measures. It is out of\n flow, so the containment it turns on costs the plot's own sizing nothing. The\n tooltip takes the same `--wr-line-chart-x` the x labels take, and the same clamp:\n centred on its point, never past either end. -->\n <div class=\"wr-line-chart__tooltip-layer\">\n <div\n class=\"wr-line-chart__tooltip\"\n [style.left.%]=\"xPercent(hovered)\"\n [style.--wr-line-chart-x]=\"xPercent(hovered)\"\n [style.top.px]=\"padding.top\"\n >\n <div class=\"wr-line-chart__tooltip-label\">{{ hoverLabel() }}</div>\n @for (p of hoverPoints(); track p.label) {\n <div class=\"wr-line-chart__tooltip-row\">\n <span class=\"wr-line-chart__swatch\" [style.background]=\"p.color\"></span>\n <span class=\"wr-line-chart__tooltip-name\">{{ p.label }}</span>\n <span class=\"wr-line-chart__tooltip-value\">{{ p.value }}</span>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@if (xLabels().length > 0) {\n <div class=\"wr-line-chart__x-labels\">\n @for (label of xLabels(); track $index) {\n <!-- Each label hands the stylesheet two numbers, both percentages of the host's\n width — the space the stretching SVG is in, so they track the drawing at any\n size. The x of the point it names, which the stylesheet centres it on; and the\n widest it may be before it reaches a neighbour or the end of the strip, past\n which the stylesheet ellipsises it. Laying the labels out as equal centred flex\n slots instead is bar-chart geometry: only the middle label landed on its dot,\n and the outer ones sat up to half a column away. -->\n <span\n class=\"wr-line-chart__x-label\"\n [style.--wr-line-chart-x]=\"xPercent($index)\"\n [style.--wr-line-chart-x-max]=\"xMaxPercent($index)\"\n >{{ label }}</span\n >\n }\n </div>\n}\n",
274
+ encapsulation: i0.ViewEncapsulation.None
275
+ });
276
+ };
277
+ i0.ɵɵngDeclareClassMetadata({
278
+ minVersion: "12.0.0",
279
+ version: "22.2.0",
280
+ ngImport: i0,
281
+ type: WrLineChart,
282
+ decorators: [{
283
+ type: Component,
284
+ args: [{
285
+ selector: "wr-line-chart",
286
+ encapsulation: ViewEncapsulation.None,
287
+ host: { class: "wr-line-chart" },
288
+ template: "@let hovered = activeIndex();\n@if (showLegend() && resolvedSeries().length > 0) {\n <ul class=\"wr-line-chart__legend\">\n @for (s of resolvedSeries(); track s.label) {\n <li class=\"wr-line-chart__legend-item\">\n <!-- The swatch draws the series' own dash, not a solid block. A legend\n that pairs a coloured square with a name leaves the reader to match\n the square to the LINE, and matching by colour is the step the\n patterns exist to remove. -->\n <svg class=\"wr-line-chart__swatch\" viewBox=\"0 0 16 2\" aria-hidden=\"true\">\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"16\"\n y2=\"1\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n />\n </svg>\n <span>{{ s.label }}</span>\n </li>\n }\n </ul>\n}\n\n<div class=\"wr-line-chart__plot\" role=\"img\" [attr.aria-label]=\"resolvedAriaLabel()\" [style.height.px]=\"height()\">\n <!-- Named, where it was the only unnamed element in the component. The legend\n swatch is an `<svg>` too now, so `querySelector('svg')` no longer means\n \"the chart\" — and a plot that nothing can address by name is one a\n consumer's stylesheet and a spec both have to reach by position. -->\n <svg\n class=\"wr-line-chart__svg\"\n [attr.viewBox]=\"viewBox()\"\n preserveAspectRatio=\"none\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerleave)=\"onPointerLeave()\"\n >\n @if (showGrid()) {\n @for (tick of yTicks(); track tick.value) {\n <line\n class=\"wr-line-chart__grid-line\"\n [attr.x1]=\"padding.left\"\n [attr.x2]=\"vbW - padding.right\"\n [attr.y1]=\"tick.y\"\n [attr.y2]=\"tick.y\"\n stroke=\"rgba(var(--wr-color-light-rgb), 0.7)\"\n stroke-width=\"1\"\n vector-effect=\"non-scaling-stroke\"\n />\n <text\n class=\"wr-line-chart__tick\"\n [attr.x]=\"padding.left - 6\"\n [attr.y]=\"tick.y + 4\"\n text-anchor=\"end\"\n fill=\"var(--wr-color-on-surface-muted)\"\n font-size=\"10\"\n font-family=\"var(--wr-font-family-base)\"\n >\n {{ formatTick(tick.value) }}\n </text>\n }\n }\n\n @for (s of resolvedSeries(); track s.label) {\n <path\n class=\"wr-line-chart__line\"\n [attr.d]=\"pathFor(s)\"\n fill=\"none\"\n [attr.stroke]=\"s.color\"\n [attr.stroke-dasharray]=\"s.dash || null\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n vector-effect=\"non-scaling-stroke\"\n />\n @if (showDots()) {\n @for (v of s.data; track $index; let i = $index) {\n <!-- A hole in the data gets no dot: the index still belongs to it, so the\n points after it stay on their own x. -->\n @if (v !== null) {\n <circle\n class=\"wr-line-chart__dot\"\n [attr.cx]=\"pointX(i)\"\n [attr.cy]=\"pointY(v)\"\n r=\"3\"\n [attr.fill]=\"s.color\"\n />\n }\n }\n }\n }\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <line\n class=\"wr-line-chart__crosshair\"\n [attr.x1]=\"pointX(hovered)\"\n [attr.x2]=\"pointX(hovered)\"\n [attr.y1]=\"padding.top\"\n [attr.y2]=\"vbH - padding.bottom\"\n stroke=\"var(--wr-color-medium)\"\n stroke-width=\"1\"\n stroke-dasharray=\"3 3\"\n vector-effect=\"non-scaling-stroke\"\n />\n @for (p of hoverPoints(); track p.label) {\n <circle\n [attr.cx]=\"p.x\"\n [attr.cy]=\"p.y\"\n r=\"5\"\n fill=\"var(--wr-color-white)\"\n [attr.stroke]=\"p.color\"\n stroke-width=\"2\"\n />\n }\n }\n </svg>\n\n @if (hovered !== null && hoverPoints().length > 0) {\n <!-- The layer spans the plot and is what the tooltip's `cqw` measures. It is out of\n flow, so the containment it turns on costs the plot's own sizing nothing. The\n tooltip takes the same `--wr-line-chart-x` the x labels take, and the same clamp:\n centred on its point, never past either end. -->\n <div class=\"wr-line-chart__tooltip-layer\">\n <div\n class=\"wr-line-chart__tooltip\"\n [style.left.%]=\"xPercent(hovered)\"\n [style.--wr-line-chart-x]=\"xPercent(hovered)\"\n [style.top.px]=\"padding.top\"\n >\n <div class=\"wr-line-chart__tooltip-label\">{{ hoverLabel() }}</div>\n @for (p of hoverPoints(); track p.label) {\n <div class=\"wr-line-chart__tooltip-row\">\n <span class=\"wr-line-chart__swatch\" [style.background]=\"p.color\"></span>\n <span class=\"wr-line-chart__tooltip-name\">{{ p.label }}</span>\n <span class=\"wr-line-chart__tooltip-value\">{{ p.value }}</span>\n </div>\n }\n </div>\n </div>\n }\n</div>\n\n@if (xLabels().length > 0) {\n <div class=\"wr-line-chart__x-labels\">\n @for (label of xLabels(); track $index) {\n <!-- Each label hands the stylesheet two numbers, both percentages of the host's\n width — the space the stretching SVG is in, so they track the drawing at any\n size. The x of the point it names, which the stylesheet centres it on; and the\n widest it may be before it reaches a neighbour or the end of the strip, past\n which the stylesheet ellipsises it. Laying the labels out as equal centred flex\n slots instead is bar-chart geometry: only the middle label landed on its dot,\n and the outer ones sat up to half a column away. -->\n <span\n class=\"wr-line-chart__x-label\"\n [style.--wr-line-chart-x]=\"xPercent($index)\"\n [style.--wr-line-chart-x-max]=\"xMaxPercent($index)\"\n >{{ label }}</span\n >\n }\n </div>\n}\n"
289
+ }]
290
+ }],
291
+ propDecorators: {
292
+ series: [{
293
+ type: i0.Input,
294
+ args: [{
295
+ isSignal: true,
296
+ alias: "series",
297
+ required: false
298
+ }]
299
+ }],
300
+ ariaLabel: [{
301
+ type: i0.Input,
302
+ args: [{
303
+ isSignal: true,
304
+ alias: "ariaLabel",
305
+ required: false
306
+ }]
307
+ }],
308
+ xLabels: [{
309
+ type: i0.Input,
310
+ args: [{
311
+ isSignal: true,
312
+ alias: "xLabels",
313
+ required: false
314
+ }]
315
+ }],
316
+ height: [{
317
+ type: i0.Input,
318
+ args: [{
319
+ isSignal: true,
320
+ alias: "height",
321
+ required: false
322
+ }]
323
+ }],
324
+ showGrid: [{
325
+ type: i0.Input,
326
+ args: [{
327
+ isSignal: true,
328
+ alias: "showGrid",
329
+ required: false
330
+ }]
331
+ }],
332
+ showLegend: [{
333
+ type: i0.Input,
334
+ args: [{
335
+ isSignal: true,
336
+ alias: "showLegend",
337
+ required: false
338
+ }]
339
+ }],
340
+ showDots: [{
341
+ type: i0.Input,
342
+ args: [{
343
+ isSignal: true,
344
+ alias: "showDots",
345
+ required: false
346
+ }]
347
+ }],
348
+ tooltip: [{
349
+ type: i0.Input,
350
+ args: [{
351
+ isSignal: true,
352
+ alias: "tooltip",
353
+ required: false
354
+ }]
355
+ }]
356
+ }
357
+ });
284
358
  export { WrLineChart };
285
- //# sourceMappingURL=ngwr-line-chart.mjs.map
359
+
360
+ //# sourceMappingURL=ngwr-line-chart.mjs.map