ngwr 14.3.0 → 14.4.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 (330) hide show
  1. package/README.md +1 -1
  2. package/avatar/styles/_index.scss +4 -2
  3. package/badge/styles/_index.scss +4 -1
  4. package/badge/styles/_tag.scss +3 -0
  5. package/cascader/styles/_rules.scss +3 -0
  6. package/command-palette/styles/_index.scss +23 -0
  7. package/context-menu/styles/_index.scss +13 -1
  8. package/fesm2022/ngwr-action-sheet.mjs +3 -3
  9. package/fesm2022/ngwr-affix.mjs +17 -4
  10. package/fesm2022/ngwr-affix.mjs.map +1 -1
  11. package/fesm2022/ngwr-alert.mjs +4 -4
  12. package/fesm2022/ngwr-alert.mjs.map +1 -1
  13. package/fesm2022/ngwr-anchor.mjs +3 -3
  14. package/fesm2022/ngwr-aurora.mjs +3 -3
  15. package/fesm2022/ngwr-avatar.mjs +3 -3
  16. package/fesm2022/ngwr-back-top.mjs +3 -3
  17. package/fesm2022/ngwr-badge.mjs +6 -6
  18. package/fesm2022/ngwr-bar-chart-testing.mjs +18 -2
  19. package/fesm2022/ngwr-bar-chart-testing.mjs.map +1 -1
  20. package/fesm2022/ngwr-bar-chart.mjs +3 -3
  21. package/fesm2022/ngwr-blur-text.mjs +3 -3
  22. package/fesm2022/ngwr-border-glow.mjs +3 -3
  23. package/fesm2022/ngwr-breadcrumbs.mjs +6 -6
  24. package/fesm2022/ngwr-burger.mjs +3 -3
  25. package/fesm2022/ngwr-button.mjs +6 -6
  26. package/fesm2022/ngwr-calendar-heatmap-testing.mjs +12 -9
  27. package/fesm2022/ngwr-calendar-heatmap-testing.mjs.map +1 -1
  28. package/fesm2022/ngwr-calendar-heatmap.mjs +35 -7
  29. package/fesm2022/ngwr-calendar-heatmap.mjs.map +1 -1
  30. package/fesm2022/ngwr-calendar.mjs +32 -4
  31. package/fesm2022/ngwr-calendar.mjs.map +1 -1
  32. package/fesm2022/ngwr-card.mjs +9 -9
  33. package/fesm2022/ngwr-carousel.mjs +6 -6
  34. package/fesm2022/ngwr-cascader-testing.mjs +87 -17
  35. package/fesm2022/ngwr-cascader-testing.mjs.map +1 -1
  36. package/fesm2022/ngwr-cascader.mjs +63 -4
  37. package/fesm2022/ngwr-cascader.mjs.map +1 -1
  38. package/fesm2022/ngwr-checkbox-testing.mjs +13 -2
  39. package/fesm2022/ngwr-checkbox-testing.mjs.map +1 -1
  40. package/fesm2022/ngwr-checkbox.mjs +42 -7
  41. package/fesm2022/ngwr-checkbox.mjs.map +1 -1
  42. package/fesm2022/ngwr-circular-text.mjs +3 -3
  43. package/fesm2022/ngwr-click-spark.mjs +3 -3
  44. package/fesm2022/ngwr-clipboard.mjs +3 -3
  45. package/fesm2022/ngwr-collapse.mjs +9 -9
  46. package/fesm2022/ngwr-color-picker.mjs +6 -6
  47. package/fesm2022/ngwr-command-palette.mjs +16 -3
  48. package/fesm2022/ngwr-command-palette.mjs.map +1 -1
  49. package/fesm2022/ngwr-compare.mjs +3 -3
  50. package/fesm2022/ngwr-confetti.mjs +3 -3
  51. package/fesm2022/ngwr-context-menu.mjs +12 -12
  52. package/fesm2022/ngwr-cookie.mjs +3 -3
  53. package/fesm2022/ngwr-counter.mjs +6 -6
  54. package/fesm2022/ngwr-date-adapters-fns.mjs +3 -3
  55. package/fesm2022/ngwr-date-adapters-luxon.mjs +3 -3
  56. package/fesm2022/ngwr-date-picker.mjs +81 -26
  57. package/fesm2022/ngwr-date-picker.mjs.map +1 -1
  58. package/fesm2022/ngwr-date.mjs +3 -3
  59. package/fesm2022/ngwr-decrypt-text.mjs +3 -3
  60. package/fesm2022/ngwr-density.mjs +6 -6
  61. package/fesm2022/ngwr-descriptions.mjs +6 -6
  62. package/fesm2022/ngwr-dialog.mjs +15 -15
  63. package/fesm2022/ngwr-directives.mjs +12 -12
  64. package/fesm2022/ngwr-divider.mjs +3 -3
  65. package/fesm2022/ngwr-donut-chart-testing.mjs +18 -2
  66. package/fesm2022/ngwr-donut-chart-testing.mjs.map +1 -1
  67. package/fesm2022/ngwr-donut-chart.mjs +4 -4
  68. package/fesm2022/ngwr-donut-chart.mjs.map +1 -1
  69. package/fesm2022/ngwr-drag-drop.mjs +6 -6
  70. package/fesm2022/ngwr-drawer.mjs +18 -18
  71. package/fesm2022/ngwr-dropdown.mjs +32 -14
  72. package/fesm2022/ngwr-dropdown.mjs.map +1 -1
  73. package/fesm2022/ngwr-empty.mjs +3 -3
  74. package/fesm2022/ngwr-event-calendar.mjs +6 -6
  75. package/fesm2022/ngwr-falling-text.mjs +3 -3
  76. package/fesm2022/ngwr-file-upload.mjs +18 -5
  77. package/fesm2022/ngwr-file-upload.mjs.map +1 -1
  78. package/fesm2022/ngwr-form.mjs +66 -14
  79. package/fesm2022/ngwr-form.mjs.map +1 -1
  80. package/fesm2022/ngwr-fuzzy-text.mjs +3 -3
  81. package/fesm2022/ngwr-gauge-testing.mjs +16 -2
  82. package/fesm2022/ngwr-gauge-testing.mjs.map +1 -1
  83. package/fesm2022/ngwr-gauge.mjs +3 -3
  84. package/fesm2022/ngwr-glitch-text.mjs +3 -3
  85. package/fesm2022/ngwr-gradient-text.mjs +3 -3
  86. package/fesm2022/ngwr-hotkey.mjs +6 -6
  87. package/fesm2022/ngwr-i18n-ar.mjs +2 -0
  88. package/fesm2022/ngwr-i18n-ar.mjs.map +1 -1
  89. package/fesm2022/ngwr-i18n-cs.mjs +2 -0
  90. package/fesm2022/ngwr-i18n-cs.mjs.map +1 -1
  91. package/fesm2022/ngwr-i18n-de.mjs +2 -0
  92. package/fesm2022/ngwr-i18n-de.mjs.map +1 -1
  93. package/fesm2022/ngwr-i18n-en.mjs +14 -2
  94. package/fesm2022/ngwr-i18n-en.mjs.map +1 -1
  95. package/fesm2022/ngwr-i18n-es.mjs +2 -0
  96. package/fesm2022/ngwr-i18n-es.mjs.map +1 -1
  97. package/fesm2022/ngwr-i18n-fr.mjs +2 -0
  98. package/fesm2022/ngwr-i18n-fr.mjs.map +1 -1
  99. package/fesm2022/ngwr-i18n-he.mjs +2 -0
  100. package/fesm2022/ngwr-i18n-he.mjs.map +1 -1
  101. package/fesm2022/ngwr-i18n-hi.mjs +2 -0
  102. package/fesm2022/ngwr-i18n-hi.mjs.map +1 -1
  103. package/fesm2022/ngwr-i18n-id.mjs +2 -0
  104. package/fesm2022/ngwr-i18n-id.mjs.map +1 -1
  105. package/fesm2022/ngwr-i18n-it.mjs +2 -0
  106. package/fesm2022/ngwr-i18n-it.mjs.map +1 -1
  107. package/fesm2022/ngwr-i18n-ja.mjs +2 -0
  108. package/fesm2022/ngwr-i18n-ja.mjs.map +1 -1
  109. package/fesm2022/ngwr-i18n-ko.mjs +2 -0
  110. package/fesm2022/ngwr-i18n-ko.mjs.map +1 -1
  111. package/fesm2022/ngwr-i18n-nl.mjs +2 -0
  112. package/fesm2022/ngwr-i18n-nl.mjs.map +1 -1
  113. package/fesm2022/ngwr-i18n-pl.mjs +2 -0
  114. package/fesm2022/ngwr-i18n-pl.mjs.map +1 -1
  115. package/fesm2022/ngwr-i18n-pt.mjs +2 -0
  116. package/fesm2022/ngwr-i18n-pt.mjs.map +1 -1
  117. package/fesm2022/ngwr-i18n-ru.mjs +2 -0
  118. package/fesm2022/ngwr-i18n-ru.mjs.map +1 -1
  119. package/fesm2022/ngwr-i18n-sv.mjs +2 -0
  120. package/fesm2022/ngwr-i18n-sv.mjs.map +1 -1
  121. package/fesm2022/ngwr-i18n-tr.mjs +2 -0
  122. package/fesm2022/ngwr-i18n-tr.mjs.map +1 -1
  123. package/fesm2022/ngwr-i18n-uk.mjs +2 -0
  124. package/fesm2022/ngwr-i18n-uk.mjs.map +1 -1
  125. package/fesm2022/ngwr-i18n-vi.mjs +2 -0
  126. package/fesm2022/ngwr-i18n-vi.mjs.map +1 -1
  127. package/fesm2022/ngwr-i18n-zh-TW.mjs +2 -0
  128. package/fesm2022/ngwr-i18n-zh-TW.mjs.map +1 -1
  129. package/fesm2022/ngwr-i18n-zh.mjs +2 -0
  130. package/fesm2022/ngwr-i18n-zh.mjs.map +1 -1
  131. package/fesm2022/ngwr-i18n.mjs +9 -9
  132. package/fesm2022/ngwr-icon.mjs +6 -6
  133. package/fesm2022/ngwr-image-cropper.mjs +3 -3
  134. package/fesm2022/ngwr-input-number.mjs +15 -6
  135. package/fesm2022/ngwr-input-number.mjs.map +1 -1
  136. package/fesm2022/ngwr-input-otp.mjs +38 -6
  137. package/fesm2022/ngwr-input-otp.mjs.map +1 -1
  138. package/fesm2022/ngwr-input.mjs +15 -15
  139. package/fesm2022/ngwr-keyboard.mjs +3 -3
  140. package/fesm2022/ngwr-knob-testing.mjs +11 -3
  141. package/fesm2022/ngwr-knob-testing.mjs.map +1 -1
  142. package/fesm2022/ngwr-knob.mjs +19 -4
  143. package/fesm2022/ngwr-knob.mjs.map +1 -1
  144. package/fesm2022/ngwr-layout.mjs +15 -15
  145. package/fesm2022/ngwr-lightbox.mjs +3 -3
  146. package/fesm2022/ngwr-line-chart-testing.mjs +18 -2
  147. package/fesm2022/ngwr-line-chart-testing.mjs.map +1 -1
  148. package/fesm2022/ngwr-line-chart.mjs +22 -4
  149. package/fesm2022/ngwr-line-chart.mjs.map +1 -1
  150. package/fesm2022/ngwr-list.mjs +6 -6
  151. package/fesm2022/ngwr-loading-bar.mjs +6 -6
  152. package/fesm2022/ngwr-markdown.mjs +6 -6
  153. package/fesm2022/ngwr-marquee.mjs +3 -3
  154. package/fesm2022/ngwr-media.mjs +3 -3
  155. package/fesm2022/ngwr-mention.mjs +6 -6
  156. package/fesm2022/ngwr-meta.mjs +6 -6
  157. package/fesm2022/ngwr-meter-group.mjs +3 -3
  158. package/fesm2022/ngwr-overlay.mjs +6 -6
  159. package/fesm2022/ngwr-page-header.mjs +3 -3
  160. package/fesm2022/ngwr-pagination.mjs +33 -6
  161. package/fesm2022/ngwr-pagination.mjs.map +1 -1
  162. package/fesm2022/ngwr-pipes.mjs +21 -21
  163. package/fesm2022/ngwr-platform.mjs +9 -9
  164. package/fesm2022/ngwr-popconfirm.mjs +6 -6
  165. package/fesm2022/ngwr-popover.mjs +29 -11
  166. package/fesm2022/ngwr-popover.mjs.map +1 -1
  167. package/fesm2022/ngwr-progress.mjs +3 -3
  168. package/fesm2022/ngwr-pull-to-refresh.mjs +3 -3
  169. package/fesm2022/ngwr-qr.mjs +3 -3
  170. package/fesm2022/ngwr-radio.mjs +6 -6
  171. package/fesm2022/ngwr-rating-testing.mjs +12 -3
  172. package/fesm2022/ngwr-rating-testing.mjs.map +1 -1
  173. package/fesm2022/ngwr-rating.mjs +19 -4
  174. package/fesm2022/ngwr-rating.mjs.map +1 -1
  175. package/fesm2022/ngwr-result.mjs +13 -13
  176. package/fesm2022/ngwr-result.mjs.map +1 -1
  177. package/fesm2022/ngwr-rotating-text.mjs +3 -3
  178. package/fesm2022/ngwr-schema-form.mjs +40 -4
  179. package/fesm2022/ngwr-schema-form.mjs.map +1 -1
  180. package/fesm2022/ngwr-scroll.mjs +3 -3
  181. package/fesm2022/ngwr-segmented.mjs +3 -3
  182. package/fesm2022/ngwr-select.mjs +9 -9
  183. package/fesm2022/ngwr-shiny-text.mjs +6 -6
  184. package/fesm2022/ngwr-sidebar.mjs +3 -3
  185. package/fesm2022/ngwr-skeleton.mjs +3 -3
  186. package/fesm2022/ngwr-slider.mjs +18 -5
  187. package/fesm2022/ngwr-slider.mjs.map +1 -1
  188. package/fesm2022/ngwr-sparkline.mjs +3 -3
  189. package/fesm2022/ngwr-speed-dial.mjs +3 -3
  190. package/fesm2022/ngwr-spinner.mjs +3 -3
  191. package/fesm2022/ngwr-splash-cursor.mjs +3 -3
  192. package/fesm2022/ngwr-split-text.mjs +3 -3
  193. package/fesm2022/ngwr-splitter.mjs +3 -3
  194. package/fesm2022/ngwr-spotlight-card.mjs +6 -6
  195. package/fesm2022/ngwr-squircle.mjs +28 -9
  196. package/fesm2022/ngwr-squircle.mjs.map +1 -1
  197. package/fesm2022/ngwr-star-border.mjs +3 -3
  198. package/fesm2022/ngwr-statistic.mjs +20 -13
  199. package/fesm2022/ngwr-statistic.mjs.map +1 -1
  200. package/fesm2022/ngwr-stepper.mjs +6 -6
  201. package/fesm2022/ngwr-storage.mjs +3 -3
  202. package/fesm2022/ngwr-switch.mjs +3 -3
  203. package/fesm2022/ngwr-table.mjs +18 -18
  204. package/fesm2022/ngwr-tabs-router.mjs +3 -3
  205. package/fesm2022/ngwr-tabs.mjs +6 -6
  206. package/fesm2022/ngwr-textarea.mjs +3 -3
  207. package/fesm2022/ngwr-theme.mjs +3 -3
  208. package/fesm2022/ngwr-tilt-card.mjs +6 -6
  209. package/fesm2022/ngwr-timeline.mjs +6 -6
  210. package/fesm2022/ngwr-toast.mjs +10 -10
  211. package/fesm2022/ngwr-toast.mjs.map +1 -1
  212. package/fesm2022/ngwr-toolbar.mjs +3 -3
  213. package/fesm2022/ngwr-tour.mjs +6 -6
  214. package/fesm2022/ngwr-transfer.mjs +88 -11
  215. package/fesm2022/ngwr-transfer.mjs.map +1 -1
  216. package/fesm2022/ngwr-tree-testing.mjs +24 -0
  217. package/fesm2022/ngwr-tree-testing.mjs.map +1 -1
  218. package/fesm2022/ngwr-tree.mjs +72 -7
  219. package/fesm2022/ngwr-tree.mjs.map +1 -1
  220. package/fesm2022/ngwr-typewriter.mjs +3 -3
  221. package/fesm2022/ngwr-typography.mjs +3 -3
  222. package/fesm2022/ngwr-version.mjs +1 -1
  223. package/fesm2022/ngwr-version.mjs.map +1 -1
  224. package/fesm2022/ngwr-virtual-scroll.mjs +3 -3
  225. package/fesm2022/ngwr-waves.mjs +3 -3
  226. package/fesm2022/ngwr-window.mjs +12 -12
  227. package/form/styles/_index.scss +63 -0
  228. package/i18n/ar.json +4 -2
  229. package/i18n/cs.json +4 -2
  230. package/i18n/de.json +4 -2
  231. package/i18n/en.json +6 -4
  232. package/i18n/es.json +4 -2
  233. package/i18n/fr.json +4 -2
  234. package/i18n/he.json +4 -2
  235. package/i18n/hi.json +4 -2
  236. package/i18n/id.json +4 -2
  237. package/i18n/it.json +4 -2
  238. package/i18n/ja.json +4 -2
  239. package/i18n/ko.json +4 -2
  240. package/i18n/nl.json +4 -2
  241. package/i18n/pl.json +4 -2
  242. package/i18n/pt.json +4 -2
  243. package/i18n/ru.json +4 -2
  244. package/i18n/sv.json +4 -2
  245. package/i18n/tr.json +4 -2
  246. package/i18n/uk.json +4 -2
  247. package/i18n/vi.json +4 -2
  248. package/i18n/zh-TW.json +4 -2
  249. package/i18n/zh.json +4 -2
  250. package/input-otp/styles/_index.scss +5 -1
  251. package/line-chart/styles/_index.scss +5 -3
  252. package/llms-full.txt +1 -1
  253. package/markdown/styles/_index.scss +4 -1
  254. package/mention/styles/_index.scss +22 -1
  255. package/package.json +1 -1
  256. package/radio/styles/_index.scss +3 -0
  257. package/result/styles/_index.scss +12 -0
  258. package/schematics/migrations/v14/index.js +6 -3
  259. package/schematics/migrations.json +1 -1
  260. package/schematics/ng-add/index.js +34 -5
  261. package/segmented/styles/_index.scss +4 -1
  262. package/select/styles/_index.scss +20 -1
  263. package/statistic/styles/_index.scss +4 -0
  264. package/stepper/styles/_index.scss +36 -0
  265. package/switch/styles/_index.scss +3 -0
  266. package/table/styles/_index.scss +12 -0
  267. package/tabs/styles/_index.scss +4 -1
  268. package/textarea/styles/_index.scss +6 -1
  269. package/theme/styles/_colors.scss +11 -0
  270. package/theme/styles/_contrast.scss +136 -0
  271. package/theme/styles/_index.scss +1 -0
  272. package/theme/styles/_mixins.scss +15 -8
  273. package/timeline/styles/_index.scss +28 -1
  274. package/toast/styles/_index.scss +11 -0
  275. package/tree/styles/_index.scss +27 -1
  276. package/types/ngwr-badge.d.ts +1 -1
  277. package/types/ngwr-bar-chart-testing.d.ts +11 -1
  278. package/types/ngwr-button.d.ts +1 -1
  279. package/types/ngwr-calendar-heatmap-testing.d.ts +10 -5
  280. package/types/ngwr-calendar-heatmap.d.ts +22 -0
  281. package/types/ngwr-calendar.d.ts +21 -0
  282. package/types/ngwr-cascader-testing.d.ts +74 -17
  283. package/types/ngwr-cascader.d.ts +28 -0
  284. package/types/ngwr-checkbox-testing.d.ts +12 -1
  285. package/types/ngwr-checkbox.d.ts +10 -0
  286. package/types/ngwr-clipboard.d.ts +1 -1
  287. package/types/ngwr-confetti.d.ts +1 -1
  288. package/types/ngwr-cookie.d.ts +1 -1
  289. package/types/ngwr-date-adapters-fns.d.ts +1 -1
  290. package/types/ngwr-date-adapters-luxon.d.ts +1 -1
  291. package/types/ngwr-date.d.ts +9 -3
  292. package/types/ngwr-density.d.ts +1 -1
  293. package/types/ngwr-dialog.d.ts +1 -1
  294. package/types/ngwr-donut-chart-testing.d.ts +11 -1
  295. package/types/ngwr-drawer.d.ts +1 -1
  296. package/types/ngwr-dropdown.d.ts +16 -0
  297. package/types/ngwr-file-upload.d.ts +11 -0
  298. package/types/ngwr-form.d.ts +25 -0
  299. package/types/ngwr-gauge-testing.d.ts +9 -1
  300. package/types/ngwr-hotkey.d.ts +1 -1
  301. package/types/ngwr-i18n.d.ts +1 -1
  302. package/types/ngwr-input-number.d.ts +12 -2
  303. package/types/ngwr-input-otp.d.ts +12 -0
  304. package/types/ngwr-knob-testing.d.ts +11 -3
  305. package/types/ngwr-knob.d.ts +13 -0
  306. package/types/ngwr-line-chart-testing.d.ts +11 -1
  307. package/types/ngwr-line-chart.d.ts +18 -0
  308. package/types/ngwr-loading-bar.d.ts +1 -1
  309. package/types/ngwr-markdown.d.ts +1 -1
  310. package/types/ngwr-media.d.ts +1 -1
  311. package/types/ngwr-meta.d.ts +1 -1
  312. package/types/ngwr-overlay.d.ts +2 -2
  313. package/types/ngwr-pagination.d.ts +16 -0
  314. package/types/ngwr-platform.d.ts +3 -3
  315. package/types/ngwr-popover.d.ts +16 -0
  316. package/types/ngwr-rating-testing.d.ts +12 -3
  317. package/types/ngwr-rating.d.ts +13 -0
  318. package/types/ngwr-scroll.d.ts +1 -1
  319. package/types/ngwr-squircle.d.ts +22 -3
  320. package/types/ngwr-statistic.d.ts +0 -1
  321. package/types/ngwr-storage.d.ts +1 -1
  322. package/types/ngwr-theme.d.ts +1 -1
  323. package/types/ngwr-toast.d.ts +1 -1
  324. package/types/ngwr-tour.d.ts +1 -1
  325. package/types/ngwr-transfer.d.ts +52 -0
  326. package/types/ngwr-tree-testing.d.ts +20 -0
  327. package/types/ngwr-tree.d.ts +41 -0
  328. package/types/ngwr-version.d.ts +1 -1
  329. package/types/ngwr-window.d.ts +1 -1
  330. package/typography/styles/_index.scss +26 -4
@@ -951,10 +951,10 @@ class WrSplashCursor {
951
951
  onCleanup(teardown);
952
952
  });
953
953
  }
954
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSplashCursor, deps: [], target: i0.ɵɵFactoryTarget.Component });
955
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.5", type: WrSplashCursor, isStandalone: true, selector: "wr-splash-cursor", inputs: { fullscreen: { classPropertyName: "fullscreen", publicName: "fullscreen", isSignal: true, isRequired: false, transformFunction: null }, simResolution: { classPropertyName: "simResolution", publicName: "simResolution", isSignal: true, isRequired: false, transformFunction: null }, dyeResolution: { classPropertyName: "dyeResolution", publicName: "dyeResolution", isSignal: true, isRequired: false, transformFunction: null }, densityDissipation: { classPropertyName: "densityDissipation", publicName: "densityDissipation", isSignal: true, isRequired: false, transformFunction: null }, velocityDissipation: { classPropertyName: "velocityDissipation", publicName: "velocityDissipation", isSignal: true, isRequired: false, transformFunction: null }, pressure: { classPropertyName: "pressure", publicName: "pressure", isSignal: true, isRequired: false, transformFunction: null }, pressureIterations: { classPropertyName: "pressureIterations", publicName: "pressureIterations", isSignal: true, isRequired: false, transformFunction: null }, curl: { classPropertyName: "curl", publicName: "curl", isSignal: true, isRequired: false, transformFunction: null }, splatRadius: { classPropertyName: "splatRadius", publicName: "splatRadius", isSignal: true, isRequired: false, transformFunction: null }, splatForce: { classPropertyName: "splatForce", publicName: "splatForce", isSignal: true, isRequired: false, transformFunction: null }, shading: { classPropertyName: "shading", publicName: "shading", isSignal: true, isRequired: false, transformFunction: null }, colorUpdateSpeed: { classPropertyName: "colorUpdateSpeed", publicName: "colorUpdateSpeed", isSignal: true, isRequired: false, transformFunction: null }, rainbow: { classPropertyName: "rainbow", publicName: "rainbow", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.wr-splash-cursor--contained": "!fullscreen()" }, classAttribute: "wr-splash-cursor" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: '<canvas #canvas class="wr-splash-cursor__canvas" aria-hidden="true"></canvas>', isInline: true, styles: [".wr-splash-cursor{position:fixed;inset:0;z-index:50;display:block;pointer-events:none}.wr-splash-cursor__canvas{display:block;width:100vw;height:100vh;height:100dvh}.wr-splash-cursor--contained{position:absolute;z-index:0}.wr-splash-cursor--contained .wr-splash-cursor__canvas{width:100%;height:100%}\n"], encapsulation: i0.ViewEncapsulation.None });
954
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSplashCursor, deps: [], target: i0.ɵɵFactoryTarget.Component });
955
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.2.0", version: "22.1.6", type: WrSplashCursor, isStandalone: true, selector: "wr-splash-cursor", inputs: { fullscreen: { classPropertyName: "fullscreen", publicName: "fullscreen", isSignal: true, isRequired: false, transformFunction: null }, simResolution: { classPropertyName: "simResolution", publicName: "simResolution", isSignal: true, isRequired: false, transformFunction: null }, dyeResolution: { classPropertyName: "dyeResolution", publicName: "dyeResolution", isSignal: true, isRequired: false, transformFunction: null }, densityDissipation: { classPropertyName: "densityDissipation", publicName: "densityDissipation", isSignal: true, isRequired: false, transformFunction: null }, velocityDissipation: { classPropertyName: "velocityDissipation", publicName: "velocityDissipation", isSignal: true, isRequired: false, transformFunction: null }, pressure: { classPropertyName: "pressure", publicName: "pressure", isSignal: true, isRequired: false, transformFunction: null }, pressureIterations: { classPropertyName: "pressureIterations", publicName: "pressureIterations", isSignal: true, isRequired: false, transformFunction: null }, curl: { classPropertyName: "curl", publicName: "curl", isSignal: true, isRequired: false, transformFunction: null }, splatRadius: { classPropertyName: "splatRadius", publicName: "splatRadius", isSignal: true, isRequired: false, transformFunction: null }, splatForce: { classPropertyName: "splatForce", publicName: "splatForce", isSignal: true, isRequired: false, transformFunction: null }, shading: { classPropertyName: "shading", publicName: "shading", isSignal: true, isRequired: false, transformFunction: null }, colorUpdateSpeed: { classPropertyName: "colorUpdateSpeed", publicName: "colorUpdateSpeed", isSignal: true, isRequired: false, transformFunction: null }, rainbow: { classPropertyName: "rainbow", publicName: "rainbow", isSignal: true, isRequired: false, transformFunction: null }, color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class.wr-splash-cursor--contained": "!fullscreen()" }, classAttribute: "wr-splash-cursor" }, viewQueries: [{ propertyName: "canvasRef", first: true, predicate: ["canvas"], descendants: true, isSignal: true }], ngImport: i0, template: '<canvas #canvas class="wr-splash-cursor__canvas" aria-hidden="true"></canvas>', isInline: true, styles: [".wr-splash-cursor{position:fixed;inset:0;z-index:50;display:block;pointer-events:none}.wr-splash-cursor__canvas{display:block;width:100vw;height:100vh;height:100dvh}.wr-splash-cursor--contained{position:absolute;z-index:0}.wr-splash-cursor--contained .wr-splash-cursor__canvas{width:100%;height:100%}\n"], encapsulation: i0.ViewEncapsulation.None });
956
956
  }
957
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSplashCursor, decorators: [{
957
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSplashCursor, decorators: [{
958
958
  type: Component,
959
959
  args: [{ selector: 'wr-splash-cursor', template: '<canvas #canvas class="wr-splash-cursor__canvas" aria-hidden="true"></canvas>', encapsulation: ViewEncapsulation.None, host: {
960
960
  class: 'wr-splash-cursor',
@@ -210,10 +210,10 @@ class WrSplitText {
210
210
  };
211
211
  });
212
212
  }
213
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSplitText, deps: [], target: i0.ɵɵFactoryTarget.Component });
214
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: WrSplitText, isStandalone: true, selector: "wr-split-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, splitType: { classPropertyName: "splitType", publicName: "splitType", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, easing: { classPropertyName: "easing", publicName: "easing", isSignal: true, isRequired: false, transformFunction: null }, from: { classPropertyName: "from", publicName: "from", isSignal: true, isRequired: false, transformFunction: null }, to: { classPropertyName: "to", publicName: "to", isSignal: true, isRequired: false, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, rootMargin: { classPropertyName: "rootMargin", publicName: "rootMargin", isSignal: true, isRequired: false, transformFunction: null }, textAlign: { classPropertyName: "textAlign", publicName: "textAlign", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationComplete: "animationComplete" }, host: { properties: { "style.text-align": "textAlign()" }, classAttribute: "wr-split-text" }, ngImport: i0, template: "<!-- The readable text, once: the pieces below are per-character spans. -->\n<span class=\"wr-split-text__sr-only\">{{ text() }}</span>\n@for (p of pieces(); track $index) {\n @if (p.kind === 'piece') {\n <span class=\"wr-split-text__piece\" aria-hidden=\"true\">{{ p.text }}</span>\n } @else {\n <span class=\"wr-split-text__space\" aria-hidden=\"true\">{{ p.text }}</span>\n }\n}\n", styles: [".wr-split-text{display:inline-block;overflow:hidden;padding-bottom:.15em;margin-bottom:-.15em;white-space:normal;overflow-wrap:break-word;will-change:transform,opacity}.wr-split-text__sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.wr-split-text__piece{display:inline-block;will-change:transform,opacity}.wr-split-text__space{display:inline;white-space:pre}\n"], encapsulation: i0.ViewEncapsulation.None });
213
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSplitText, deps: [], target: i0.ɵɵFactoryTarget.Component });
214
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: WrSplitText, isStandalone: true, selector: "wr-split-text", inputs: { text: { classPropertyName: "text", publicName: "text", isSignal: true, isRequired: true, transformFunction: null }, splitType: { classPropertyName: "splitType", publicName: "splitType", isSignal: true, isRequired: false, transformFunction: null }, delay: { classPropertyName: "delay", publicName: "delay", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, easing: { classPropertyName: "easing", publicName: "easing", isSignal: true, isRequired: false, transformFunction: null }, from: { classPropertyName: "from", publicName: "from", isSignal: true, isRequired: false, transformFunction: null }, to: { classPropertyName: "to", publicName: "to", isSignal: true, isRequired: false, transformFunction: null }, threshold: { classPropertyName: "threshold", publicName: "threshold", isSignal: true, isRequired: false, transformFunction: null }, rootMargin: { classPropertyName: "rootMargin", publicName: "rootMargin", isSignal: true, isRequired: false, transformFunction: null }, textAlign: { classPropertyName: "textAlign", publicName: "textAlign", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { animationComplete: "animationComplete" }, host: { properties: { "style.text-align": "textAlign()" }, classAttribute: "wr-split-text" }, ngImport: i0, template: "<!-- The readable text, once: the pieces below are per-character spans. -->\n<span class=\"wr-split-text__sr-only\">{{ text() }}</span>\n@for (p of pieces(); track $index) {\n @if (p.kind === 'piece') {\n <span class=\"wr-split-text__piece\" aria-hidden=\"true\">{{ p.text }}</span>\n } @else {\n <span class=\"wr-split-text__space\" aria-hidden=\"true\">{{ p.text }}</span>\n }\n}\n", styles: [".wr-split-text{display:inline-block;overflow:hidden;padding-bottom:.15em;margin-bottom:-.15em;white-space:normal;overflow-wrap:break-word;will-change:transform,opacity}.wr-split-text__sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.wr-split-text__piece{display:inline-block;will-change:transform,opacity}.wr-split-text__space{display:inline;white-space:pre}\n"], encapsulation: i0.ViewEncapsulation.None });
215
215
  }
216
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSplitText, decorators: [{
216
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSplitText, decorators: [{
217
217
  type: Component,
218
218
  args: [{ selector: 'wr-split-text', encapsulation: ViewEncapsulation.None, host: { class: 'wr-split-text', '[style.text-align]': 'textAlign()' }, template: "<!-- The readable text, once: the pieces below are per-character spans. -->\n<span class=\"wr-split-text__sr-only\">{{ text() }}</span>\n@for (p of pieces(); track $index) {\n @if (p.kind === 'piece') {\n <span class=\"wr-split-text__piece\" aria-hidden=\"true\">{{ p.text }}</span>\n } @else {\n <span class=\"wr-split-text__space\" aria-hidden=\"true\">{{ p.text }}</span>\n }\n}\n", styles: [".wr-split-text{display:inline-block;overflow:hidden;padding-bottom:.15em;margin-bottom:-.15em;white-space:normal;overflow-wrap:break-word;will-change:transform,opacity}.wr-split-text__sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.wr-split-text__piece{display:inline-block;will-change:transform,opacity}.wr-split-text__space{display:inline;white-space:pre}\n"] }]
219
219
  }], ctorParameters: () => [], propDecorators: { text: [{ type: i0.Input, args: [{ isSignal: true, alias: "text", required: true }] }], splitType: [{ type: i0.Input, args: [{ isSignal: true, alias: "splitType", required: false }] }], delay: [{ type: i0.Input, args: [{ isSignal: true, alias: "delay", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], easing: [{ type: i0.Input, args: [{ isSignal: true, alias: "easing", required: false }] }], from: [{ type: i0.Input, args: [{ isSignal: true, alias: "from", required: false }] }], to: [{ type: i0.Input, args: [{ isSignal: true, alias: "to", required: false }] }], threshold: [{ type: i0.Input, args: [{ isSignal: true, alias: "threshold", required: false }] }], rootMargin: [{ type: i0.Input, args: [{ isSignal: true, alias: "rootMargin", required: false }] }], textAlign: [{ type: i0.Input, args: [{ isSignal: true, alias: "textAlign", required: false }] }], animationComplete: [{ type: i0.Output, args: ["animationComplete"] }] } });
@@ -170,10 +170,10 @@ class WrSplitter {
170
170
  isRtl() {
171
171
  return this.dir?.value === 'rtl';
172
172
  }
173
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSplitter, deps: [], target: i0.ɵɵFactoryTarget.Component });
174
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.5", type: WrSplitter, isStandalone: true, selector: "wr-splitter", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, minPosition: { classPropertyName: "minPosition", publicName: "minPosition", isSignal: true, isRequired: false, transformFunction: null }, maxPosition: { classPropertyName: "maxPosition", publicName: "maxPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dividerLabel: { classPropertyName: "dividerLabel", publicName: "dividerLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { position: "positionChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: "<div class=\"wr-splitter__pane wr-splitter__pane--start\" [style.flex-basis]=\"startStyle()\">\n <ng-content select=\"[wrSplitterStart]\" />\n</div>\n\n<!-- Roving focus + arrow keys for keyboard resizing. -->\n<div\n class=\"wr-splitter__divider\"\n role=\"separator\"\n [attr.aria-label]=\"resolvedDividerLabel()\"\n [attr.aria-orientation]=\"orientation() === 'horizontal' ? 'vertical' : 'horizontal'\"\n [attr.aria-valuemin]=\"minPosition()\"\n [attr.aria-valuemax]=\"maxPosition()\"\n [attr.aria-valuenow]=\"position()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"wr-splitter__handle\" aria-hidden=\"true\"></span>\n</div>\n\n<div class=\"wr-splitter__pane wr-splitter__pane--end\" [style.flex-basis]=\"endStyle()\">\n <ng-content select=\"[wrSplitterEnd]\" />\n</div>\n", encapsulation: i0.ViewEncapsulation.None });
173
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSplitter, deps: [], target: i0.ɵɵFactoryTarget.Component });
174
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: WrSplitter, isStandalone: true, selector: "wr-splitter", inputs: { position: { classPropertyName: "position", publicName: "position", isSignal: true, isRequired: false, transformFunction: null }, orientation: { classPropertyName: "orientation", publicName: "orientation", isSignal: true, isRequired: false, transformFunction: null }, minPosition: { classPropertyName: "minPosition", publicName: "minPosition", isSignal: true, isRequired: false, transformFunction: null }, maxPosition: { classPropertyName: "maxPosition", publicName: "maxPosition", isSignal: true, isRequired: false, transformFunction: null }, disabled: { classPropertyName: "disabled", publicName: "disabled", isSignal: true, isRequired: false, transformFunction: null }, dividerLabel: { classPropertyName: "dividerLabel", publicName: "dividerLabel", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { position: "positionChange" }, host: { properties: { "class": "classes()" } }, ngImport: i0, template: "<div class=\"wr-splitter__pane wr-splitter__pane--start\" [style.flex-basis]=\"startStyle()\">\n <ng-content select=\"[wrSplitterStart]\" />\n</div>\n\n<!-- Roving focus + arrow keys for keyboard resizing. -->\n<div\n class=\"wr-splitter__divider\"\n role=\"separator\"\n [attr.aria-label]=\"resolvedDividerLabel()\"\n [attr.aria-orientation]=\"orientation() === 'horizontal' ? 'vertical' : 'horizontal'\"\n [attr.aria-valuemin]=\"minPosition()\"\n [attr.aria-valuemax]=\"maxPosition()\"\n [attr.aria-valuenow]=\"position()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"wr-splitter__handle\" aria-hidden=\"true\"></span>\n</div>\n\n<div class=\"wr-splitter__pane wr-splitter__pane--end\" [style.flex-basis]=\"endStyle()\">\n <ng-content select=\"[wrSplitterEnd]\" />\n</div>\n", encapsulation: i0.ViewEncapsulation.None });
175
175
  }
176
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSplitter, decorators: [{
176
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSplitter, decorators: [{
177
177
  type: Component,
178
178
  args: [{ selector: 'wr-splitter', encapsulation: ViewEncapsulation.None, host: { '[class]': 'classes()' }, template: "<div class=\"wr-splitter__pane wr-splitter__pane--start\" [style.flex-basis]=\"startStyle()\">\n <ng-content select=\"[wrSplitterStart]\" />\n</div>\n\n<!-- Roving focus + arrow keys for keyboard resizing. -->\n<div\n class=\"wr-splitter__divider\"\n role=\"separator\"\n [attr.aria-label]=\"resolvedDividerLabel()\"\n [attr.aria-orientation]=\"orientation() === 'horizontal' ? 'vertical' : 'horizontal'\"\n [attr.aria-valuemin]=\"minPosition()\"\n [attr.aria-valuemax]=\"maxPosition()\"\n [attr.aria-valuenow]=\"position()\"\n [attr.aria-disabled]=\"disabled() || null\"\n [attr.tabindex]=\"disabled() ? -1 : 0\"\n (pointerdown)=\"onPointerDown($event)\"\n (pointermove)=\"onPointerMove($event)\"\n (pointerup)=\"onPointerUp($event)\"\n (pointercancel)=\"onPointerUp($event)\"\n (keydown)=\"onKeydown($event)\"\n>\n <span class=\"wr-splitter__handle\" aria-hidden=\"true\"></span>\n</div>\n\n<div class=\"wr-splitter__pane wr-splitter__pane--end\" [style.flex-basis]=\"endStyle()\">\n <ng-content select=\"[wrSplitterEnd]\" />\n</div>\n" }]
179
179
  }], ctorParameters: () => [], propDecorators: { position: [{ type: i0.Input, args: [{ isSignal: true, alias: "position", required: false }] }, { type: i0.Output, args: ["positionChange"] }], orientation: [{ type: i0.Input, args: [{ isSignal: true, alias: "orientation", required: false }] }], minPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "minPosition", required: false }] }], maxPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "maxPosition", required: false }] }], disabled: [{ type: i0.Input, args: [{ isSignal: true, alias: "disabled", required: false }] }], dividerLabel: [{ type: i0.Input, args: [{ isSignal: true, alias: "dividerLabel", required: false }] }] } });
@@ -44,10 +44,10 @@ class WrSpotlightCard {
44
44
  host.style.setProperty('--wr-spotlight-x', `${event.clientX - rect.left}px`);
45
45
  host.style.setProperty('--wr-spotlight-y', `${event.clientY - rect.top}px`);
46
46
  }
47
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSpotlightCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.5", type: WrSpotlightCard, isStandalone: true, selector: "wr-spotlight-card", inputs: { spotlightColor: { classPropertyName: "spotlightColor", publicName: "spotlightColor", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousemove": "onMouseMove($event)" }, properties: { "style.--wr-spotlight-color": "spotlightColor()", "style.--wr-spotlight-radius": "radius() + \"%\"" }, classAttribute: "wr-spotlight-card" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".wr-spotlight-card{--wr-spotlight-x: 50%;--wr-spotlight-y: 50%;--wr-spotlight-color: rgba(var(--wr-color-on-surface-rgb), .15);position:relative;display:block;border-radius:1.5rem;border:1px solid var(--wr-color-outline);background-color:var(--wr-color-surface);padding:2rem;overflow:hidden;color:var(--wr-color-on-surface)}.wr-spotlight-card:before{content:\"\";position:absolute;inset:0;background:radial-gradient(circle at var(--wr-spotlight-x) var(--wr-spotlight-y),var(--wr-spotlight-color),transparent var(--wr-spotlight-radius, 80%));opacity:0;transition:opacity .5s ease;pointer-events:none}.wr-spotlight-card:hover:before,.wr-spotlight-card:focus-within:before{opacity:.6}\n"], encapsulation: i0.ViewEncapsulation.None });
47
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSpotlightCard, deps: [], target: i0.ɵɵFactoryTarget.Component });
48
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: WrSpotlightCard, isStandalone: true, selector: "wr-spotlight-card", inputs: { spotlightColor: { classPropertyName: "spotlightColor", publicName: "spotlightColor", isSignal: true, isRequired: false, transformFunction: null }, radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "mousemove": "onMouseMove($event)" }, properties: { "style.--wr-spotlight-color": "spotlightColor()", "style.--wr-spotlight-radius": "radius() + \"%\"" }, classAttribute: "wr-spotlight-card" }, ngImport: i0, template: '<ng-content />', isInline: true, styles: [".wr-spotlight-card{--wr-spotlight-x: 50%;--wr-spotlight-y: 50%;--wr-spotlight-color: rgba(var(--wr-color-on-surface-rgb), .15);position:relative;display:block;border-radius:1.5rem;border:1px solid var(--wr-color-outline);background-color:var(--wr-color-surface);padding:2rem;overflow:hidden;color:var(--wr-color-on-surface)}.wr-spotlight-card:before{content:\"\";position:absolute;inset:0;background:radial-gradient(circle at var(--wr-spotlight-x) var(--wr-spotlight-y),var(--wr-spotlight-color),transparent var(--wr-spotlight-radius, 80%));opacity:0;transition:opacity .5s ease;pointer-events:none}.wr-spotlight-card:hover:before,.wr-spotlight-card:focus-within:before{opacity:.6}\n"], encapsulation: i0.ViewEncapsulation.None });
49
49
  }
50
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSpotlightCard, decorators: [{
50
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSpotlightCard, decorators: [{
51
51
  type: Component,
52
52
  args: [{ selector: 'wr-spotlight-card', template: '<ng-content />', encapsulation: ViewEncapsulation.None, host: {
53
53
  class: 'wr-spotlight-card',
@@ -119,10 +119,10 @@ class WrSpotlight {
119
119
  host.style.setProperty('--wr-spotlight-x', this.resetX());
120
120
  host.style.setProperty('--wr-spotlight-y', this.resetY());
121
121
  }
122
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSpotlight, deps: [], target: i0.ɵɵFactoryTarget.Directive });
123
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.5", type: WrSpotlight, isStandalone: true, selector: "[wrSpotlight]", inputs: { resetX: { classPropertyName: "resetX", publicName: "resetX", isSignal: true, isRequired: false, transformFunction: null }, resetY: { classPropertyName: "resetY", publicName: "resetY", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointermove": "onMove($event)", "pointerleave": "onLeave()" } }, ngImport: i0 });
122
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSpotlight, deps: [], target: i0.ɵɵFactoryTarget.Directive });
123
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: WrSpotlight, isStandalone: true, selector: "[wrSpotlight]", inputs: { resetX: { classPropertyName: "resetX", publicName: "resetX", isSignal: true, isRequired: false, transformFunction: null }, resetY: { classPropertyName: "resetY", publicName: "resetY", isSignal: true, isRequired: false, transformFunction: null } }, host: { listeners: { "pointermove": "onMove($event)", "pointerleave": "onLeave()" } }, ngImport: i0 });
124
124
  }
125
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSpotlight, decorators: [{
125
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSpotlight, decorators: [{
126
126
  type: Directive,
127
127
  args: [{
128
128
  selector: '[wrSpotlight]',
@@ -124,6 +124,20 @@ function maskToRadii(mask, r) {
124
124
  * Apply a Figma-style smooth-corner ("squircle") `clip-path` to the host
125
125
  * element. Re-computes the path whenever the element resizes.
126
126
  *
127
+ * @deprecated Use the native route instead — `@use 'ngwr/theme'` and the
128
+ * `smooth-br` mixin, which 31 entry points already ride by default. This
129
+ * directive exists because `corner-shape` was Chromium-only, and that reason
130
+ * has an expiry date: WebKit has it in Technology Preview. It will be removed
131
+ * in the major after Safari stable ships the property.
132
+ *
133
+ * It is deprecated rather than removed today because it is still the only
134
+ * DETERMINISTIC squircle — the native property reaches roughly two thirds of
135
+ * users and the rest see a rounded corner. If that difference matters to a
136
+ * design, this is still the way to get it, with the costs stated: a hand-ported
137
+ * superellipse, a `ResizeObserver` and a `getBoundingClientRect` per host on
138
+ * every resize, square corners until hydration under SSR, no test harness, and
139
+ * a clip that `box-shadow`, `border-image` and the focus ring do not follow.
140
+ *
127
141
  * Borders: pass `[borderWidth]` (px) + `[borderColor]` and the directive
128
142
  * paints a `::before` pseudo with an *inset* squircle path on top of the
129
143
  * host. The visible border is the host's own background colour, so set
@@ -178,9 +192,11 @@ class WrSquircle {
178
192
  * only the two corners on the named side and leave the other two at
179
193
  * 90°. `'none'` is equivalent to disabling the directive.
180
194
  *
181
- * Modelled so parent components composing the directive can flip the
182
- * value imperatively — used by `WrButtonGroup` to squircle only the
183
- * outer corners of the first / last child.
195
+ * A `model()` rather than an `input()` so a parent composing the directive
196
+ * can flip it imperatively. Nothing in the library does today: this line
197
+ * used to name `WrButtonGroup` as the consumer, and that component has
198
+ * carried no squircle reference for several releases — `wr-btn--squircle`
199
+ * is plain CSS now.
184
200
  *
185
201
  * @default 'all'
186
202
  */
@@ -267,10 +283,10 @@ class WrSquircle {
267
283
  host.style.removeProperty('--wr-squircle-border-width');
268
284
  host.style.removeProperty('--wr-squircle-border-color');
269
285
  }
270
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSquircle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
271
- static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.5", type: WrSquircle, isStandalone: true, selector: "[wrSquircle]", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, smoothing: { classPropertyName: "smoothing", publicName: "smoothing", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, borderWidth: { classPropertyName: "borderWidth", publicName: "borderWidth", isSignal: true, isRequired: false, transformFunction: null }, borderColor: { classPropertyName: "borderColor", publicName: "borderColor", isSignal: true, isRequired: false, transformFunction: null }, corners: { classPropertyName: "corners", publicName: "corners", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { enabled: "enabledChange", borderWidth: "borderWidthChange", borderColor: "borderColorChange", corners: "cornersChange" }, host: { properties: { "class.wr-squircle--bordered": "borderWidth() > 0 && enabled()" } }, exportAs: ["wrSquircle"], ngImport: i0 });
286
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSquircle, deps: [], target: i0.ɵɵFactoryTarget.Directive });
287
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.1.6", type: WrSquircle, isStandalone: true, selector: "[wrSquircle]", inputs: { radius: { classPropertyName: "radius", publicName: "radius", isSignal: true, isRequired: false, transformFunction: null }, smoothing: { classPropertyName: "smoothing", publicName: "smoothing", isSignal: true, isRequired: false, transformFunction: null }, enabled: { classPropertyName: "enabled", publicName: "enabled", isSignal: true, isRequired: false, transformFunction: null }, borderWidth: { classPropertyName: "borderWidth", publicName: "borderWidth", isSignal: true, isRequired: false, transformFunction: null }, borderColor: { classPropertyName: "borderColor", publicName: "borderColor", isSignal: true, isRequired: false, transformFunction: null }, corners: { classPropertyName: "corners", publicName: "corners", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { enabled: "enabledChange", borderWidth: "borderWidthChange", borderColor: "borderColorChange", corners: "cornersChange" }, host: { properties: { "class.wr-squircle--bordered": "borderWidth() > 0 && enabled()" } }, exportAs: ["wrSquircle"], ngImport: i0 });
272
288
  }
273
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSquircle, decorators: [{
289
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSquircle, decorators: [{
274
290
  type: Directive,
275
291
  args: [{
276
292
  selector: '[wrSquircle]',
@@ -297,12 +313,15 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImpor
297
313
  * ```
298
314
  *
299
315
  * @see https://ngwr.dev/reference/components/squircle
316
+ *
317
+ * @deprecated Follows `[wrSquircle]`, which it wraps — see that directive
318
+ * for why, and for the native route to use instead.
300
319
  */
301
320
  class WrSquircleHost {
302
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSquircleHost, deps: [], target: i0.ɵɵFactoryTarget.Component });
303
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.5", type: WrSquircleHost, isStandalone: true, selector: "wr-squircle", host: { classAttribute: "wr-squircle" }, hostDirectives: [{ directive: WrSquircle, inputs: ["radius", "radius", "smoothing", "smoothing", "borderWidth", "borderWidth", "borderColor", "borderColor"] }], ngImport: i0, template: '<ng-content />', isInline: true, encapsulation: i0.ViewEncapsulation.None });
321
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSquircleHost, deps: [], target: i0.ɵɵFactoryTarget.Component });
322
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "22.1.6", type: WrSquircleHost, isStandalone: true, selector: "wr-squircle", host: { classAttribute: "wr-squircle" }, hostDirectives: [{ directive: WrSquircle, inputs: ["radius", "radius", "smoothing", "smoothing", "borderWidth", "borderWidth", "borderColor", "borderColor"] }], ngImport: i0, template: '<ng-content />', isInline: true, encapsulation: i0.ViewEncapsulation.None });
304
323
  }
305
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrSquircleHost, decorators: [{
324
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrSquircleHost, decorators: [{
306
325
  type: Component,
307
326
  args: [{
308
327
  selector: 'wr-squircle',
@@ -1 +1 @@
1
- {"version":3,"file":"ngwr-squircle.mjs","sources":["../../../projects/lib/squircle/compute-squircle-path.ts","../../../projects/lib/squircle/wr-squircle.ts","../../../projects/lib/squircle/wr-squircle-host.ts","../../../projects/lib/squircle/ngwr-squircle.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 * Squircle path computation — port of the algorithm from `figma-squircle`\n * (https://github.com/phamfoo/figma-squircle, MIT). Generates an SVG `d`\n * string for a smooth-corner rectangle.\n */\n\n/** Per-corner radii for the squircle. */\ninterface WrSquircleCorners {\n readonly topLeft: number;\n readonly topRight: number;\n readonly bottomRight: number;\n readonly bottomLeft: number;\n}\n\ninterface CornerParams {\n readonly a: number;\n readonly b: number;\n readonly c: number;\n readonly d: number;\n readonly p: number;\n readonly arcSectionLength: number;\n readonly cornerRadius: number;\n}\n\nfunction toRadians(deg: number): number {\n return (deg * Math.PI) / 180;\n}\n\nfunction cornerParams(cornerRadius: number, cornerSmoothing: number, budget: number): CornerParams {\n if (cornerRadius <= 0) {\n return { a: 0, b: 0, c: 0, d: 0, p: 0, arcSectionLength: 0, cornerRadius: 0 };\n }\n let p = (1 + cornerSmoothing) * cornerRadius;\n // Cap smoothing so the corner fits within the available budget.\n let s = cornerSmoothing;\n const maxSmoothing = budget / cornerRadius - 1;\n if (maxSmoothing < s) {\n s = Math.max(0, maxSmoothing);\n p = (1 + s) * cornerRadius;\n }\n const arcMeasure = 90 * (1 - s);\n const arcSectionLength = Math.sin(toRadians(arcMeasure / 2)) * cornerRadius * Math.SQRT2;\n const angleAlpha = (90 - arcMeasure) / 2;\n const p3p4 = cornerRadius * Math.tan(toRadians(angleAlpha / 2));\n const angleBeta = 45 * s;\n const c = p3p4 * Math.cos(toRadians(angleBeta));\n const d = c * Math.tan(toRadians(angleBeta));\n const b = (p - arcSectionLength - c - d) / 3;\n const a = 2 * b;\n return { a, b, c, d, p, arcSectionLength, cornerRadius };\n}\n\n/** Cubic-bezier + arc commands for one corner — anchored at its `p` distance. */\nfunction drawCorner(c: CornerParams, rotation: 'tl' | 'tr' | 'br' | 'bl'): string {\n if (c.cornerRadius === 0) return '';\n const { a, b, c: cc, d, arcSectionLength, cornerRadius } = c;\n switch (rotation) {\n case 'tr':\n return `c ${a} 0 ${a + b} 0 ${a + b + cc} ${d} a ${cornerRadius} ${cornerRadius} 0 0 1 ${arcSectionLength} ${arcSectionLength} c ${d} ${cc} ${d} ${b + cc} ${d} ${a + b + cc}`;\n case 'br':\n return `c 0 ${a} 0 ${a + b} ${-d} ${a + b + cc} a ${cornerRadius} ${cornerRadius} 0 0 1 ${-arcSectionLength} ${arcSectionLength} c ${-cc} ${d} ${-(b + cc)} ${d} ${-(a + b + cc)} ${d}`;\n case 'bl':\n return `c ${-a} 0 ${-(a + b)} 0 ${-(a + b + cc)} ${-d} a ${cornerRadius} ${cornerRadius} 0 0 1 ${-arcSectionLength} ${-arcSectionLength} c ${-d} ${-cc} ${-d} ${-(b + cc)} ${-d} ${-(a + b + cc)}`;\n case 'tl':\n return `c 0 ${-a} 0 ${-(a + b)} ${d} ${-(a + b + cc)} a ${cornerRadius} ${cornerRadius} 0 0 1 ${arcSectionLength} ${-arcSectionLength} c ${cc} ${-d} ${b + cc} ${-d} ${a + b + cc} ${-d}`;\n }\n}\n\n/**\n * Generate an SVG `d` string for a squircle (smooth-corner rectangle).\n *\n * @param width Box width in user units.\n * @param height Box height in user units.\n * @param radius Either a single number applied to all four corners or a\n * `WrSquircleCorners` object with per-corner radii.\n * @param smoothing 0–1. `0` = standard rounded rectangle; `1` = full\n * iOS-style smooth corner. @default 1\n */\nfunction squirclePath(width: number, height: number, radius: number | WrSquircleCorners, smoothing = 1): string {\n const corners: WrSquircleCorners =\n typeof radius === 'number'\n ? { topLeft: radius, topRight: radius, bottomRight: radius, bottomLeft: radius }\n : radius;\n\n // Budget per corner = half of the shorter dimension.\n const budget = Math.min(width / 2, height / 2);\n\n const tl = cornerParams(Math.min(corners.topLeft, budget), smoothing, budget);\n const tr = cornerParams(Math.min(corners.topRight, budget), smoothing, budget);\n const br = cornerParams(Math.min(corners.bottomRight, budget), smoothing, budget);\n const bl = cornerParams(Math.min(corners.bottomLeft, budget), smoothing, budget);\n\n return [\n `M ${tl.p} 0`,\n `L ${width - tr.p} 0`,\n drawCorner(tr, 'tr'),\n `L ${width} ${height - br.p}`,\n drawCorner(br, 'br'),\n `L ${bl.p} ${height}`,\n drawCorner(bl, 'bl'),\n `L 0 ${tl.p}`,\n drawCorner(tl, 'tl'),\n 'Z',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\nexport { squirclePath };\nexport type { WrSquircleCorners };\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 { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, Directive, ElementRef, PLATFORM_ID, effect, inject, input, model } from '@angular/core';\n\nimport { squirclePath, type WrSquircleCorners } from './compute-squircle-path';\nimport type { WrSquircleCornerMask } from './interfaces';\n\n/**\n * Which corners to squircle. `'all'` = standard four-corner squircle;\n * the side-named values squircle the two corners on that side and leave\n * the other two at 90°. Useful for tab-/segment-style controls where\n * only outer corners need smoothing.\n */\nfunction maskToRadii(mask: WrSquircleCornerMask, r: number): WrSquircleCorners {\n switch (mask) {\n case 'left':\n return { topLeft: r, topRight: 0, bottomRight: 0, bottomLeft: r };\n case 'right':\n return { topLeft: 0, topRight: r, bottomRight: r, bottomLeft: 0 };\n case 'top':\n return { topLeft: r, topRight: r, bottomRight: 0, bottomLeft: 0 };\n case 'bottom':\n return { topLeft: 0, topRight: 0, bottomRight: r, bottomLeft: r };\n case 'none':\n return { topLeft: 0, topRight: 0, bottomRight: 0, bottomLeft: 0 };\n case 'all':\n default:\n return { topLeft: r, topRight: r, bottomRight: r, bottomLeft: r };\n }\n}\n\n/**\n * Apply a Figma-style smooth-corner (\"squircle\") `clip-path` to the host\n * element. Re-computes the path whenever the element resizes.\n *\n * Borders: pass `[borderWidth]` (px) + `[borderColor]` and the directive\n * paints a `::before` pseudo with an *inset* squircle path on top of the\n * host. The visible border is the host's own background colour, so set\n * `background: <border-color>` on the host (or use the convenience\n * `[borderColor]` input which writes the host background for you).\n *\n * @example\n * ```html\n * <button wr-btn wrSquircle [radius]=\"16\">Save</button>\n * <wr-tag wrSquircle>v2.0</wr-tag>\n * <div wrSquircle [radius]=\"32\" [smoothing]=\"0.8\">…</div>\n * <div wrSquircle [borderWidth]=\"2\" borderColor=\"var(--wr-color-primary)\">…</div>\n * ```\n */\n@Directive({\n selector: '[wrSquircle]',\n exportAs: 'wrSquircle',\n host: { '[class.wr-squircle--bordered]': 'borderWidth() > 0 && enabled()' },\n})\nexport class WrSquircle {\n /** Corner radius in CSS pixels. Falls back to `--wr-border-radius-base` × 16. @default 12 */\n readonly radius = input(12, { transform: (v: unknown): number => Math.max(0, coerceNumberProperty(v, 12)) });\n\n /** Smoothing factor — `0` = plain rounded rect; `1` = full smooth iOS corner. @default 1 */\n readonly smoothing = input(1, {\n transform: (v: unknown): number => Math.min(1, Math.max(0, coerceNumberProperty(v, 1))),\n });\n\n /**\n * Whether the squircle clip-path is applied. When `false`, the directive\n * stays inert (clip-path cleared).\n *\n * Modelled as `model()` so a parent component composing this directive\n * (`inject(WrSquircle, { self: true }).enabled.set(...)`) can flip the\n * state from outside without exposing an `enabled` input on its own API.\n *\n * @default true\n */\n readonly enabled = model(true);\n\n /**\n * Border thickness in CSS pixels. `0` disables the border ring entirely.\n * Modelled (not `input()`) so parent components composing this directive\n * can flip it imperatively — e.g. `WrButton` turning on a 1px ring when\n * `shape=\"squircle\" outlined` is active.\n * @default 0\n */\n readonly borderWidth = model(0);\n\n /**\n * Border colour — any CSS colour. Applied to the host's background so the\n * outer squircle reveals it. Defaults to `currentColor` so the consuming\n * element's text colour drives the ring.\n * @default 'currentColor'\n */\n readonly borderColor = model<string>('currentColor');\n\n /**\n * Which corners to squircle. `'all'` (default) is the standard four-\n * corner shape; `'left'` / `'right'` / `'top'` / `'bottom'` squircle\n * only the two corners on the named side and leave the other two at\n * 90°. `'none'` is equivalent to disabling the directive.\n *\n * Modelled so parent components composing the directive can flip the\n * value imperatively — used by `WrButtonGroup` to squircle only the\n * outer corners of the first / last child.\n *\n * @default 'all'\n */\n readonly corners = model<WrSquircleCornerMask>('all');\n\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly destroyRef = inject(DestroyRef);\n private observer: ResizeObserver | null = null;\n\n constructor() {\n if (!this.isBrowser) return;\n const host = this.el.nativeElement;\n // Reactively re-apply when inputs change.\n effect(() => {\n this.radius();\n this.smoothing();\n this.enabled();\n this.borderWidth();\n this.borderColor();\n this.corners();\n this.apply();\n });\n // Re-apply on resize.\n this.observer = new ResizeObserver(() => this.apply());\n this.observer.observe(host);\n this.destroyRef.onDestroy(() => {\n this.observer?.disconnect();\n this.clear();\n });\n }\n\n private apply(): void {\n const host = this.el.nativeElement;\n if (!this.enabled()) {\n this.clear();\n return;\n }\n const rect = host.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return;\n\n const r = this.radius();\n const s = this.smoothing();\n const radii = maskToRadii(this.corners(), r);\n const outer = squirclePath(rect.width, rect.height, radii, s);\n const value = `path(\"${outer}\")`;\n host.style.clipPath = value;\n host.style.setProperty('-webkit-clip-path', value);\n\n // Border mode: paint an INNER squircle in a `::before` pseudo on top of\n // the host so the host's own bg only shows at the border-width perimeter.\n const bw = this.borderWidth();\n if (bw > 0) {\n const innerW = Math.max(0, rect.width - bw * 2);\n const innerH = Math.max(0, rect.height - bw * 2);\n const innerR = Math.max(0, r - bw);\n if (innerW > 0 && innerH > 0) {\n const innerRadii = maskToRadii(this.corners(), innerR);\n const inner = squirclePath(innerW, innerH, innerRadii, s);\n host.style.setProperty('--wr-squircle-inner-path', `path(\"${inner}\")`);\n }\n host.style.setProperty('--wr-squircle-border-width', `${bw}px`);\n // Only set the colour var inline when the consumer asked for a\n // specific colour. Leaving the default `'currentColor'` un-inlined\n // lets host CSS (e.g. WrButton's outlined-squircle rule) override\n // the var via SCSS without losing to inline-style specificity.\n const bc = this.borderColor();\n if (bc && bc !== 'currentColor') {\n host.style.setProperty('--wr-squircle-border-color', bc);\n } else {\n host.style.removeProperty('--wr-squircle-border-color');\n }\n } else {\n host.style.removeProperty('--wr-squircle-inner-path');\n host.style.removeProperty('--wr-squircle-border-width');\n host.style.removeProperty('--wr-squircle-border-color');\n }\n }\n\n private clear(): void {\n const host = this.el.nativeElement;\n host.style.removeProperty('clip-path');\n host.style.removeProperty('-webkit-clip-path');\n host.style.removeProperty('--wr-squircle-inner-path');\n host.style.removeProperty('--wr-squircle-border-width');\n host.style.removeProperty('--wr-squircle-border-color');\n }\n}\n\nexport type { WrSquircleCornerMask } from './interfaces';\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 { Component, ViewEncapsulation } from '@angular/core';\n\nimport { WrSquircle } from './wr-squircle';\n\n/**\n * Standalone squircle container. Equivalent to `<div wrSquircle>` but\n * named for ergonomics in templates.\n *\n * @example\n * ```html\n * <wr-squircle [radius]=\"24\" style=\"width: 160px; height: 160px; background: var(--wr-color-primary)\">\n * …\n * </wr-squircle>\n * ```\n *\n * @see https://ngwr.dev/reference/components/squircle\n */\n@Component({\n selector: 'wr-squircle',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'wr-squircle' },\n hostDirectives: [{ directive: WrSquircle, inputs: ['radius', 'smoothing', 'borderWidth', 'borderColor'] }],\n})\nexport class WrSquircleHost {}\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-squircle.mjs","sources":["../../../projects/lib/squircle/compute-squircle-path.ts","../../../projects/lib/squircle/wr-squircle.ts","../../../projects/lib/squircle/wr-squircle-host.ts","../../../projects/lib/squircle/ngwr-squircle.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 * Squircle path computation — port of the algorithm from `figma-squircle`\n * (https://github.com/phamfoo/figma-squircle, MIT). Generates an SVG `d`\n * string for a smooth-corner rectangle.\n */\n\n/** Per-corner radii for the squircle. */\ninterface WrSquircleCorners {\n readonly topLeft: number;\n readonly topRight: number;\n readonly bottomRight: number;\n readonly bottomLeft: number;\n}\n\ninterface CornerParams {\n readonly a: number;\n readonly b: number;\n readonly c: number;\n readonly d: number;\n readonly p: number;\n readonly arcSectionLength: number;\n readonly cornerRadius: number;\n}\n\nfunction toRadians(deg: number): number {\n return (deg * Math.PI) / 180;\n}\n\nfunction cornerParams(cornerRadius: number, cornerSmoothing: number, budget: number): CornerParams {\n if (cornerRadius <= 0) {\n return { a: 0, b: 0, c: 0, d: 0, p: 0, arcSectionLength: 0, cornerRadius: 0 };\n }\n let p = (1 + cornerSmoothing) * cornerRadius;\n // Cap smoothing so the corner fits within the available budget.\n let s = cornerSmoothing;\n const maxSmoothing = budget / cornerRadius - 1;\n if (maxSmoothing < s) {\n s = Math.max(0, maxSmoothing);\n p = (1 + s) * cornerRadius;\n }\n const arcMeasure = 90 * (1 - s);\n const arcSectionLength = Math.sin(toRadians(arcMeasure / 2)) * cornerRadius * Math.SQRT2;\n const angleAlpha = (90 - arcMeasure) / 2;\n const p3p4 = cornerRadius * Math.tan(toRadians(angleAlpha / 2));\n const angleBeta = 45 * s;\n const c = p3p4 * Math.cos(toRadians(angleBeta));\n const d = c * Math.tan(toRadians(angleBeta));\n const b = (p - arcSectionLength - c - d) / 3;\n const a = 2 * b;\n return { a, b, c, d, p, arcSectionLength, cornerRadius };\n}\n\n/** Cubic-bezier + arc commands for one corner — anchored at its `p` distance. */\nfunction drawCorner(c: CornerParams, rotation: 'tl' | 'tr' | 'br' | 'bl'): string {\n if (c.cornerRadius === 0) return '';\n const { a, b, c: cc, d, arcSectionLength, cornerRadius } = c;\n switch (rotation) {\n case 'tr':\n return `c ${a} 0 ${a + b} 0 ${a + b + cc} ${d} a ${cornerRadius} ${cornerRadius} 0 0 1 ${arcSectionLength} ${arcSectionLength} c ${d} ${cc} ${d} ${b + cc} ${d} ${a + b + cc}`;\n case 'br':\n return `c 0 ${a} 0 ${a + b} ${-d} ${a + b + cc} a ${cornerRadius} ${cornerRadius} 0 0 1 ${-arcSectionLength} ${arcSectionLength} c ${-cc} ${d} ${-(b + cc)} ${d} ${-(a + b + cc)} ${d}`;\n case 'bl':\n return `c ${-a} 0 ${-(a + b)} 0 ${-(a + b + cc)} ${-d} a ${cornerRadius} ${cornerRadius} 0 0 1 ${-arcSectionLength} ${-arcSectionLength} c ${-d} ${-cc} ${-d} ${-(b + cc)} ${-d} ${-(a + b + cc)}`;\n case 'tl':\n return `c 0 ${-a} 0 ${-(a + b)} ${d} ${-(a + b + cc)} a ${cornerRadius} ${cornerRadius} 0 0 1 ${arcSectionLength} ${-arcSectionLength} c ${cc} ${-d} ${b + cc} ${-d} ${a + b + cc} ${-d}`;\n }\n}\n\n/**\n * Generate an SVG `d` string for a squircle (smooth-corner rectangle).\n *\n * @param width Box width in user units.\n * @param height Box height in user units.\n * @param radius Either a single number applied to all four corners or a\n * `WrSquircleCorners` object with per-corner radii.\n * @param smoothing 0–1. `0` = standard rounded rectangle; `1` = full\n * iOS-style smooth corner. @default 1\n */\nfunction squirclePath(width: number, height: number, radius: number | WrSquircleCorners, smoothing = 1): string {\n const corners: WrSquircleCorners =\n typeof radius === 'number'\n ? { topLeft: radius, topRight: radius, bottomRight: radius, bottomLeft: radius }\n : radius;\n\n // Budget per corner = half of the shorter dimension.\n const budget = Math.min(width / 2, height / 2);\n\n const tl = cornerParams(Math.min(corners.topLeft, budget), smoothing, budget);\n const tr = cornerParams(Math.min(corners.topRight, budget), smoothing, budget);\n const br = cornerParams(Math.min(corners.bottomRight, budget), smoothing, budget);\n const bl = cornerParams(Math.min(corners.bottomLeft, budget), smoothing, budget);\n\n return [\n `M ${tl.p} 0`,\n `L ${width - tr.p} 0`,\n drawCorner(tr, 'tr'),\n `L ${width} ${height - br.p}`,\n drawCorner(br, 'br'),\n `L ${bl.p} ${height}`,\n drawCorner(bl, 'bl'),\n `L 0 ${tl.p}`,\n drawCorner(tl, 'tl'),\n 'Z',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\nexport { squirclePath };\nexport type { WrSquircleCorners };\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 { coerceNumberProperty } from '@angular/cdk/coercion';\nimport { isPlatformBrowser } from '@angular/common';\nimport { DestroyRef, Directive, ElementRef, PLATFORM_ID, effect, inject, input, model } from '@angular/core';\n\nimport { squirclePath, type WrSquircleCorners } from './compute-squircle-path';\nimport type { WrSquircleCornerMask } from './interfaces';\n\n/**\n * Which corners to squircle. `'all'` = standard four-corner squircle;\n * the side-named values squircle the two corners on that side and leave\n * the other two at 90°. Useful for tab-/segment-style controls where\n * only outer corners need smoothing.\n */\nfunction maskToRadii(mask: WrSquircleCornerMask, r: number): WrSquircleCorners {\n switch (mask) {\n case 'left':\n return { topLeft: r, topRight: 0, bottomRight: 0, bottomLeft: r };\n case 'right':\n return { topLeft: 0, topRight: r, bottomRight: r, bottomLeft: 0 };\n case 'top':\n return { topLeft: r, topRight: r, bottomRight: 0, bottomLeft: 0 };\n case 'bottom':\n return { topLeft: 0, topRight: 0, bottomRight: r, bottomLeft: r };\n case 'none':\n return { topLeft: 0, topRight: 0, bottomRight: 0, bottomLeft: 0 };\n case 'all':\n default:\n return { topLeft: r, topRight: r, bottomRight: r, bottomLeft: r };\n }\n}\n\n/**\n * Apply a Figma-style smooth-corner (\"squircle\") `clip-path` to the host\n * element. Re-computes the path whenever the element resizes.\n *\n * @deprecated Use the native route instead — `@use 'ngwr/theme'` and the\n * `smooth-br` mixin, which 31 entry points already ride by default. This\n * directive exists because `corner-shape` was Chromium-only, and that reason\n * has an expiry date: WebKit has it in Technology Preview. It will be removed\n * in the major after Safari stable ships the property.\n *\n * It is deprecated rather than removed today because it is still the only\n * DETERMINISTIC squircle — the native property reaches roughly two thirds of\n * users and the rest see a rounded corner. If that difference matters to a\n * design, this is still the way to get it, with the costs stated: a hand-ported\n * superellipse, a `ResizeObserver` and a `getBoundingClientRect` per host on\n * every resize, square corners until hydration under SSR, no test harness, and\n * a clip that `box-shadow`, `border-image` and the focus ring do not follow.\n *\n * Borders: pass `[borderWidth]` (px) + `[borderColor]` and the directive\n * paints a `::before` pseudo with an *inset* squircle path on top of the\n * host. The visible border is the host's own background colour, so set\n * `background: <border-color>` on the host (or use the convenience\n * `[borderColor]` input which writes the host background for you).\n *\n * @example\n * ```html\n * <button wr-btn wrSquircle [radius]=\"16\">Save</button>\n * <wr-tag wrSquircle>v2.0</wr-tag>\n * <div wrSquircle [radius]=\"32\" [smoothing]=\"0.8\">…</div>\n * <div wrSquircle [borderWidth]=\"2\" borderColor=\"var(--wr-color-primary)\">…</div>\n * ```\n */\n@Directive({\n selector: '[wrSquircle]',\n exportAs: 'wrSquircle',\n host: { '[class.wr-squircle--bordered]': 'borderWidth() > 0 && enabled()' },\n})\nexport class WrSquircle {\n /** Corner radius in CSS pixels. Falls back to `--wr-border-radius-base` × 16. @default 12 */\n readonly radius = input(12, { transform: (v: unknown): number => Math.max(0, coerceNumberProperty(v, 12)) });\n\n /** Smoothing factor — `0` = plain rounded rect; `1` = full smooth iOS corner. @default 1 */\n readonly smoothing = input(1, {\n transform: (v: unknown): number => Math.min(1, Math.max(0, coerceNumberProperty(v, 1))),\n });\n\n /**\n * Whether the squircle clip-path is applied. When `false`, the directive\n * stays inert (clip-path cleared).\n *\n * Modelled as `model()` so a parent component composing this directive\n * (`inject(WrSquircle, { self: true }).enabled.set(...)`) can flip the\n * state from outside without exposing an `enabled` input on its own API.\n *\n * @default true\n */\n readonly enabled = model(true);\n\n /**\n * Border thickness in CSS pixels. `0` disables the border ring entirely.\n * Modelled (not `input()`) so parent components composing this directive\n * can flip it imperatively — e.g. `WrButton` turning on a 1px ring when\n * `shape=\"squircle\" outlined` is active.\n * @default 0\n */\n readonly borderWidth = model(0);\n\n /**\n * Border colour — any CSS colour. Applied to the host's background so the\n * outer squircle reveals it. Defaults to `currentColor` so the consuming\n * element's text colour drives the ring.\n * @default 'currentColor'\n */\n readonly borderColor = model<string>('currentColor');\n\n /**\n * Which corners to squircle. `'all'` (default) is the standard four-\n * corner shape; `'left'` / `'right'` / `'top'` / `'bottom'` squircle\n * only the two corners on the named side and leave the other two at\n * 90°. `'none'` is equivalent to disabling the directive.\n *\n * A `model()` rather than an `input()` so a parent composing the directive\n * can flip it imperatively. Nothing in the library does today: this line\n * used to name `WrButtonGroup` as the consumer, and that component has\n * carried no squircle reference for several releases — `wr-btn--squircle`\n * is plain CSS now.\n *\n * @default 'all'\n */\n readonly corners = model<WrSquircleCornerMask>('all');\n\n private readonly el = inject<ElementRef<HTMLElement>>(ElementRef);\n private readonly isBrowser = isPlatformBrowser(inject(PLATFORM_ID));\n private readonly destroyRef = inject(DestroyRef);\n private observer: ResizeObserver | null = null;\n\n constructor() {\n if (!this.isBrowser) return;\n const host = this.el.nativeElement;\n // Reactively re-apply when inputs change.\n effect(() => {\n this.radius();\n this.smoothing();\n this.enabled();\n this.borderWidth();\n this.borderColor();\n this.corners();\n this.apply();\n });\n // Re-apply on resize.\n this.observer = new ResizeObserver(() => this.apply());\n this.observer.observe(host);\n this.destroyRef.onDestroy(() => {\n this.observer?.disconnect();\n this.clear();\n });\n }\n\n private apply(): void {\n const host = this.el.nativeElement;\n if (!this.enabled()) {\n this.clear();\n return;\n }\n const rect = host.getBoundingClientRect();\n if (rect.width === 0 || rect.height === 0) return;\n\n const r = this.radius();\n const s = this.smoothing();\n const radii = maskToRadii(this.corners(), r);\n const outer = squirclePath(rect.width, rect.height, radii, s);\n const value = `path(\"${outer}\")`;\n host.style.clipPath = value;\n host.style.setProperty('-webkit-clip-path', value);\n\n // Border mode: paint an INNER squircle in a `::before` pseudo on top of\n // the host so the host's own bg only shows at the border-width perimeter.\n const bw = this.borderWidth();\n if (bw > 0) {\n const innerW = Math.max(0, rect.width - bw * 2);\n const innerH = Math.max(0, rect.height - bw * 2);\n const innerR = Math.max(0, r - bw);\n if (innerW > 0 && innerH > 0) {\n const innerRadii = maskToRadii(this.corners(), innerR);\n const inner = squirclePath(innerW, innerH, innerRadii, s);\n host.style.setProperty('--wr-squircle-inner-path', `path(\"${inner}\")`);\n }\n host.style.setProperty('--wr-squircle-border-width', `${bw}px`);\n // Only set the colour var inline when the consumer asked for a\n // specific colour. Leaving the default `'currentColor'` un-inlined\n // lets host CSS (e.g. WrButton's outlined-squircle rule) override\n // the var via SCSS without losing to inline-style specificity.\n const bc = this.borderColor();\n if (bc && bc !== 'currentColor') {\n host.style.setProperty('--wr-squircle-border-color', bc);\n } else {\n host.style.removeProperty('--wr-squircle-border-color');\n }\n } else {\n host.style.removeProperty('--wr-squircle-inner-path');\n host.style.removeProperty('--wr-squircle-border-width');\n host.style.removeProperty('--wr-squircle-border-color');\n }\n }\n\n private clear(): void {\n const host = this.el.nativeElement;\n host.style.removeProperty('clip-path');\n host.style.removeProperty('-webkit-clip-path');\n host.style.removeProperty('--wr-squircle-inner-path');\n host.style.removeProperty('--wr-squircle-border-width');\n host.style.removeProperty('--wr-squircle-border-color');\n }\n}\n\nexport type { WrSquircleCornerMask } from './interfaces';\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 { Component, ViewEncapsulation } from '@angular/core';\n\nimport { WrSquircle } from './wr-squircle';\n\n/**\n * Standalone squircle container. Equivalent to `<div wrSquircle>` but\n * named for ergonomics in templates.\n *\n * @example\n * ```html\n * <wr-squircle [radius]=\"24\" style=\"width: 160px; height: 160px; background: var(--wr-color-primary)\">\n * …\n * </wr-squircle>\n * ```\n *\n * @see https://ngwr.dev/reference/components/squircle\n *\n * @deprecated Follows `[wrSquircle]`, which it wraps — see that directive\n * for why, and for the native route to use instead.\n */\n@Component({\n selector: 'wr-squircle',\n template: '<ng-content />',\n encapsulation: ViewEncapsulation.None,\n host: { class: 'wr-squircle' },\n hostDirectives: [{ directive: WrSquircle, inputs: ['radius', 'smoothing', 'borderWidth', 'borderColor'] }],\n})\nexport class WrSquircleHost {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -51,10 +51,10 @@ class WrStarBorder {
51
51
  parts.push('wr-star-border--single');
52
52
  return parts.join(' ');
53
53
  };
54
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStarBorder, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.5", type: WrStarBorder, isStandalone: true, selector: "wr-star-border, [wr-star-border]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null }, thickness: { classPropertyName: "thickness", publicName: "thickness", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, rays: { classPropertyName: "rays", publicName: "rays", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style.--wr-star-border-color": "color()", "style.--wr-star-border-speed": "speed() + \"s\"", "style.padding": "thickness() + \"px 0\"" } }, ngImport: i0, template: "<span class=\"wr-star-border__ray wr-star-border__ray--bottom\" aria-hidden=\"true\"></span>\n<span class=\"wr-star-border__ray wr-star-border__ray--top\" aria-hidden=\"true\"></span>\n<span class=\"wr-star-border__inner\"><ng-content /></span>\n", styles: [".wr-star-border{--wr-star-border-color: var(--wr-color-primary);--wr-star-border-speed: 6s;--wr-star-border-radius: 20px;--wr-star-border-stop: 16%;--wr-star-border-opacity: 1;display:inline-block;position:relative;border:0;background:transparent;border-radius:var(--wr-star-border-radius);overflow:hidden;cursor:inherit}.wr-star-border__ray{position:absolute;display:block;width:300%;height:50%;opacity:var(--wr-star-border-opacity);border-radius:50%;background:radial-gradient(circle,var(--wr-star-border-color),transparent var(--wr-star-border-stop));animation:wr-star-border-bottom var(--wr-star-border-speed) linear infinite alternate;z-index:0}.wr-star-border__ray--bottom{bottom:-12px;right:-250%}.wr-star-border__ray--top{top:-12px;left:-250%;animation-name:wr-star-border-top}.wr-star-border--single .wr-star-border__ray--top{display:none}.wr-star-border--hover .wr-star-border__ray{opacity:0;animation:none}.wr-star-border--hover:hover .wr-star-border__ray{animation:wr-star-border-bottom var(--wr-star-border-speed) linear infinite alternate}.wr-star-border--hover:hover .wr-star-border__ray--top{animation-name:wr-star-border-top}.wr-star-border__inner{position:relative;display:block;border:1px solid var(--wr-color-outline);background:var(--wr-color-surface);color:var(--wr-color-on-surface);font-size:1rem;text-align:center;padding:1rem 1.625rem;border-radius:var(--wr-star-border-radius);z-index:1}@keyframes wr-star-border-bottom{0%{transform:translate(0);opacity:1}to{transform:translate(-100%);opacity:0}}@keyframes wr-star-border-top{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@media(prefers-reduced-motion:reduce){.wr-star-border__ray{animation:none!important;opacity:0!important}}\n"], encapsulation: i0.ViewEncapsulation.None });
54
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStarBorder, deps: [], target: i0.ɵɵFactoryTarget.Component });
55
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: WrStarBorder, isStandalone: true, selector: "wr-star-border, [wr-star-border]", inputs: { color: { classPropertyName: "color", publicName: "color", isSignal: true, isRequired: false, transformFunction: null }, speed: { classPropertyName: "speed", publicName: "speed", isSignal: true, isRequired: false, transformFunction: null }, thickness: { classPropertyName: "thickness", publicName: "thickness", isSignal: true, isRequired: false, transformFunction: null }, mode: { classPropertyName: "mode", publicName: "mode", isSignal: true, isRequired: false, transformFunction: null }, rays: { classPropertyName: "rays", publicName: "rays", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "class": "classes()", "style.--wr-star-border-color": "color()", "style.--wr-star-border-speed": "speed() + \"s\"", "style.padding": "thickness() + \"px 0\"" } }, ngImport: i0, template: "<span class=\"wr-star-border__ray wr-star-border__ray--bottom\" aria-hidden=\"true\"></span>\n<span class=\"wr-star-border__ray wr-star-border__ray--top\" aria-hidden=\"true\"></span>\n<span class=\"wr-star-border__inner\"><ng-content /></span>\n", styles: [".wr-star-border{--wr-star-border-color: var(--wr-color-primary);--wr-star-border-speed: 6s;--wr-star-border-radius: 20px;--wr-star-border-stop: 16%;--wr-star-border-opacity: 1;display:inline-block;position:relative;border:0;background:transparent;border-radius:var(--wr-star-border-radius);overflow:hidden;cursor:inherit}.wr-star-border__ray{position:absolute;display:block;width:300%;height:50%;opacity:var(--wr-star-border-opacity);border-radius:50%;background:radial-gradient(circle,var(--wr-star-border-color),transparent var(--wr-star-border-stop));animation:wr-star-border-bottom var(--wr-star-border-speed) linear infinite alternate;z-index:0}.wr-star-border__ray--bottom{bottom:-12px;right:-250%}.wr-star-border__ray--top{top:-12px;left:-250%;animation-name:wr-star-border-top}.wr-star-border--single .wr-star-border__ray--top{display:none}.wr-star-border--hover .wr-star-border__ray{opacity:0;animation:none}.wr-star-border--hover:hover .wr-star-border__ray{animation:wr-star-border-bottom var(--wr-star-border-speed) linear infinite alternate}.wr-star-border--hover:hover .wr-star-border__ray--top{animation-name:wr-star-border-top}.wr-star-border__inner{position:relative;display:block;border:1px solid var(--wr-color-outline);background:var(--wr-color-surface);color:var(--wr-color-on-surface);font-size:1rem;text-align:center;padding:1rem 1.625rem;border-radius:var(--wr-star-border-radius);z-index:1}@keyframes wr-star-border-bottom{0%{transform:translate(0);opacity:1}to{transform:translate(-100%);opacity:0}}@keyframes wr-star-border-top{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}@media(prefers-reduced-motion:reduce){.wr-star-border__ray{animation:none!important;opacity:0!important}}\n"], encapsulation: i0.ViewEncapsulation.None });
56
56
  }
57
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStarBorder, decorators: [{
57
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStarBorder, decorators: [{
58
58
  type: Component,
59
59
  args: [{ selector: 'wr-star-border, [wr-star-border]', encapsulation: ViewEncapsulation.None, host: {
60
60
  '[class]': 'classes()',
@@ -1,6 +1,6 @@
1
1
  import { coerceNumberProperty, coerceBooleanProperty } from '@angular/cdk/coercion';
2
2
  import * as i0 from '@angular/core';
3
- import { inject, LOCALE_ID, input, computed, signal, effect, untracked, ViewEncapsulation, Component, output, DestroyRef, PLATFORM_ID, afterNextRender } from '@angular/core';
3
+ import { inject, LOCALE_ID, input, computed, signal, effect, untracked, ViewEncapsulation, Component, output, PLATFORM_ID } from '@angular/core';
4
4
  import { WrCountUp } from 'ngwr/counter';
5
5
  import { useI18nText, useI18nFormatter } from 'ngwr/i18n';
6
6
  import { WrPlatform } from 'ngwr/platform';
@@ -166,10 +166,10 @@ class WrStatistic {
166
166
  return this.deltaFormat({ value, suffix: this.resolvedDeltaSuffix() });
167
167
  }, /* @ts-ignore */
168
168
  ...(ngDevMode ? [{ debugName: "deltaText" }] : /* istanbul ignore next */ []));
169
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStatistic, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: WrStatistic, isStandalone: true, selector: "wr-statistic", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, precision: { classPropertyName: "precision", publicName: "precision", isSignal: true, isRequired: false, transformFunction: null }, animate: { classPropertyName: "animate", publicName: "animate", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, delta: { classPropertyName: "delta", publicName: "delta", isSignal: true, isRequired: false, transformFunction: null }, deltaSuffix: { classPropertyName: "deltaSuffix", publicName: "deltaSuffix", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-statistic" }, ngImport: i0, template: "@if (label()) {\n <div class=\"wr-statistic__label\">{{ label() }}</div>\n}\n<div class=\"wr-statistic__value\">\n @if (prefix()) {\n <span class=\"wr-statistic__prefix\">{{ prefix() }}</span>\n }\n @if (animated()) {\n <wr-count-up\n class=\"wr-statistic__number\"\n [from]=\"animateFrom()\"\n [to]=\"numericValue() ?? 0\"\n [decimals]=\"precision()\"\n [duration]=\"duration()\"\n />\n } @else {\n <span class=\"wr-statistic__number\">{{ displayValue() }}</span>\n }\n @if (suffix()) {\n <span class=\"wr-statistic__suffix\">{{ suffix() }}</span>\n }\n</div>\n@if (hasDelta()) {\n <div [class]=\"`wr-statistic__delta wr-statistic__delta--${deltaDirection()}`\">\n @if (deltaDirection() === 'up') {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M5 1 L9 8 L1 8 Z\" fill=\"currentColor\" />\n </svg>\n } @else if (deltaDirection() === 'down') {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M5 9 L9 2 L1 2 Z\" fill=\"currentColor\" />\n </svg>\n }\n <span>{{ deltaText() }}</span>\n </div>\n}\n", dependencies: [{ kind: "component", type: WrCountUp, selector: "wr-count-up", inputs: ["from", "to", "duration", "delay", "easing", "trigger", "direction", "decimals", "prefix", "suffix", "grouping"], outputs: ["started", "completed"] }], encapsulation: i0.ViewEncapsulation.None });
169
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStatistic, deps: [], target: i0.ɵɵFactoryTarget.Component });
170
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: WrStatistic, isStandalone: true, selector: "wr-statistic", inputs: { label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: "value", publicName: "value", isSignal: true, isRequired: false, transformFunction: null }, prefix: { classPropertyName: "prefix", publicName: "prefix", isSignal: true, isRequired: false, transformFunction: null }, suffix: { classPropertyName: "suffix", publicName: "suffix", isSignal: true, isRequired: false, transformFunction: null }, precision: { classPropertyName: "precision", publicName: "precision", isSignal: true, isRequired: false, transformFunction: null }, animate: { classPropertyName: "animate", publicName: "animate", isSignal: true, isRequired: false, transformFunction: null }, duration: { classPropertyName: "duration", publicName: "duration", isSignal: true, isRequired: false, transformFunction: null }, delta: { classPropertyName: "delta", publicName: "delta", isSignal: true, isRequired: false, transformFunction: null }, deltaSuffix: { classPropertyName: "deltaSuffix", publicName: "deltaSuffix", isSignal: true, isRequired: false, transformFunction: null } }, host: { classAttribute: "wr-statistic" }, ngImport: i0, template: "@if (label()) {\n <div class=\"wr-statistic__label\">{{ label() }}</div>\n}\n<div class=\"wr-statistic__value\">\n @if (prefix()) {\n <span class=\"wr-statistic__prefix\">{{ prefix() }}</span>\n }\n @if (animated()) {\n <wr-count-up\n class=\"wr-statistic__number\"\n [from]=\"animateFrom()\"\n [to]=\"numericValue() ?? 0\"\n [decimals]=\"precision()\"\n [duration]=\"duration()\"\n />\n } @else {\n <span class=\"wr-statistic__number\">{{ displayValue() }}</span>\n }\n @if (suffix()) {\n <span class=\"wr-statistic__suffix\">{{ suffix() }}</span>\n }\n</div>\n@if (hasDelta()) {\n <div [class]=\"`wr-statistic__delta wr-statistic__delta--${deltaDirection()}`\">\n @if (deltaDirection() === 'up') {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M5 1 L9 8 L1 8 Z\" fill=\"currentColor\" />\n </svg>\n } @else if (deltaDirection() === 'down') {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M5 9 L9 2 L1 2 Z\" fill=\"currentColor\" />\n </svg>\n }\n <span>{{ deltaText() }}</span>\n </div>\n}\n", dependencies: [{ kind: "component", type: WrCountUp, selector: "wr-count-up", inputs: ["from", "to", "duration", "delay", "easing", "trigger", "direction", "decimals", "prefix", "suffix", "grouping"], outputs: ["started", "completed"] }], encapsulation: i0.ViewEncapsulation.None });
171
171
  }
172
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStatistic, decorators: [{
172
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStatistic, decorators: [{
173
173
  type: Component,
174
174
  args: [{ selector: 'wr-statistic', encapsulation: ViewEncapsulation.None, host: { class: 'wr-statistic' }, imports: [WrCountUp], template: "@if (label()) {\n <div class=\"wr-statistic__label\">{{ label() }}</div>\n}\n<div class=\"wr-statistic__value\">\n @if (prefix()) {\n <span class=\"wr-statistic__prefix\">{{ prefix() }}</span>\n }\n @if (animated()) {\n <wr-count-up\n class=\"wr-statistic__number\"\n [from]=\"animateFrom()\"\n [to]=\"numericValue() ?? 0\"\n [decimals]=\"precision()\"\n [duration]=\"duration()\"\n />\n } @else {\n <span class=\"wr-statistic__number\">{{ displayValue() }}</span>\n }\n @if (suffix()) {\n <span class=\"wr-statistic__suffix\">{{ suffix() }}</span>\n }\n</div>\n@if (hasDelta()) {\n <div [class]=\"`wr-statistic__delta wr-statistic__delta--${deltaDirection()}`\">\n @if (deltaDirection() === 'up') {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M5 1 L9 8 L1 8 Z\" fill=\"currentColor\" />\n </svg>\n } @else if (deltaDirection() === 'down') {\n <svg width=\"10\" height=\"10\" viewBox=\"0 0 10 10\" aria-hidden=\"true\">\n <path d=\"M5 9 L9 2 L1 2 Z\" fill=\"currentColor\" />\n </svg>\n }\n <span>{{ deltaText() }}</span>\n </div>\n}\n" }]
175
175
  }], ctorParameters: () => [], propDecorators: { label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], value: [{ type: i0.Input, args: [{ isSignal: true, alias: "value", required: false }] }], prefix: [{ type: i0.Input, args: [{ isSignal: true, alias: "prefix", required: false }] }], suffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "suffix", required: false }] }], precision: [{ type: i0.Input, args: [{ isSignal: true, alias: "precision", required: false }] }], animate: [{ type: i0.Input, args: [{ isSignal: true, alias: "animate", required: false }] }], duration: [{ type: i0.Input, args: [{ isSignal: true, alias: "duration", required: false }] }], delta: [{ type: i0.Input, args: [{ isSignal: true, alias: "delta", required: false }] }], deltaSuffix: [{ type: i0.Input, args: [{ isSignal: true, alias: "deltaSuffix", required: false }] }] } });
@@ -271,7 +271,6 @@ class WrStatisticCountdown {
271
271
  tickMs = input(1000, { ...(ngDevMode ? { debugName: "tickMs" } : /* istanbul ignore next */ {}), transform: (v) => Math.max(16, numAttr(1000)(v)) });
272
272
  /** Fires once when the countdown crosses zero. */
273
273
  countdownEnd = output();
274
- destroyRef = inject(DestroyRef);
275
274
  isBrowser = isPlatformBrowser(inject(PLATFORM_ID));
276
275
  targetMs = computed(() => toMs(this.target()), /* @ts-ignore */
277
276
  ...(ngDevMode ? [{ debugName: "targetMs" }] : /* istanbul ignore next */ []));
@@ -306,9 +305,17 @@ class WrStatisticCountdown {
306
305
  });
307
306
  if (!this.isBrowser)
308
307
  return;
309
- afterNextRender(() => {
308
+ // The interval is REBUILT when `tickMs` changes, which is what makes the
309
+ // input bindable rather than an authoring-time constant. Read once from
310
+ // inside `afterNextRender` it was a plain, untracked read, so
311
+ // `[tickMs]="precise() ? 16 : 1000"` kept whatever period the first frame
312
+ // saw and nothing looked wrong — the countdown still counted. Same shape
313
+ // `wr-rotating-text` uses for its own rotation period; the `onCleanup` is
314
+ // what keeps a period change from leaving the old interval running beside
315
+ // the new one.
316
+ effect(onCleanup => {
310
317
  const handle = setInterval(() => this.tick(), this.tickMs());
311
- this.destroyRef.onDestroy(() => clearInterval(handle));
318
+ onCleanup(() => clearInterval(handle));
312
319
  });
313
320
  }
314
321
  tick() {
@@ -321,10 +328,10 @@ class WrStatisticCountdown {
321
328
  this.countdownEnd.emit();
322
329
  }
323
330
  }
324
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStatisticCountdown, deps: [], target: i0.ɵɵFactoryTarget.Component });
325
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.5", type: WrStatisticCountdown, isStandalone: true, selector: "wr-statistic-countdown", inputs: { target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, endText: { classPropertyName: "endText", publicName: "endText", isSignal: true, isRequired: false, transformFunction: null }, tickMs: { classPropertyName: "tickMs", publicName: "tickMs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { countdownEnd: "countdownEnd" }, host: { classAttribute: "wr-statistic" }, ngImport: i0, template: "@if (label()) {\n <div class=\"wr-statistic__label\">{{ label() }}</div>\n}\n<div class=\"wr-statistic__value\">\n <span class=\"wr-statistic__number\">{{ display() }}</span>\n</div>\n", encapsulation: i0.ViewEncapsulation.None });
331
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStatisticCountdown, deps: [], target: i0.ɵɵFactoryTarget.Component });
332
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.1.6", type: WrStatisticCountdown, isStandalone: true, selector: "wr-statistic-countdown", inputs: { target: { classPropertyName: "target", publicName: "target", isSignal: true, isRequired: true, transformFunction: null }, label: { classPropertyName: "label", publicName: "label", isSignal: true, isRequired: false, transformFunction: null }, format: { classPropertyName: "format", publicName: "format", isSignal: true, isRequired: false, transformFunction: null }, endText: { classPropertyName: "endText", publicName: "endText", isSignal: true, isRequired: false, transformFunction: null }, tickMs: { classPropertyName: "tickMs", publicName: "tickMs", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { countdownEnd: "countdownEnd" }, host: { classAttribute: "wr-statistic" }, ngImport: i0, template: "@if (label()) {\n <div class=\"wr-statistic__label\">{{ label() }}</div>\n}\n<div class=\"wr-statistic__value\">\n <span class=\"wr-statistic__number\">{{ display() }}</span>\n</div>\n", encapsulation: i0.ViewEncapsulation.None });
326
333
  }
327
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStatisticCountdown, decorators: [{
334
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStatisticCountdown, decorators: [{
328
335
  type: Component,
329
336
  args: [{ selector: 'wr-statistic-countdown', encapsulation: ViewEncapsulation.None, host: { class: 'wr-statistic' }, template: "@if (label()) {\n <div class=\"wr-statistic__label\">{{ label() }}</div>\n}\n<div class=\"wr-statistic__value\">\n <span class=\"wr-statistic__number\">{{ display() }}</span>\n</div>\n" }]
330
337
  }], ctorParameters: () => [], propDecorators: { target: [{ type: i0.Input, args: [{ isSignal: true, alias: "target", required: true }] }], label: [{ type: i0.Input, args: [{ isSignal: true, alias: "label", required: false }] }], format: [{ type: i0.Input, args: [{ isSignal: true, alias: "format", required: false }] }], endText: [{ type: i0.Input, args: [{ isSignal: true, alias: "endText", required: false }] }], tickMs: [{ type: i0.Input, args: [{ isSignal: true, alias: "tickMs", required: false }] }], countdownEnd: [{ type: i0.Output, args: ["countdownEnd"] }] } });
@@ -367,10 +374,10 @@ class WrStatisticGroup {
367
374
  * width allows. @default 0
368
375
  */
369
376
  columns = input(0, { ...(ngDevMode ? { debugName: "columns" } : /* istanbul ignore next */ {}), transform: (v) => Math.max(0, coerceNumberProperty(v, 0)) });
370
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStatisticGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
371
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.5", type: WrStatisticGroup, isStandalone: true, selector: "wr-statistic-group", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--wr-statistic-group-min": "min()", "style.--wr-statistic-group-columns": "columns() || null" }, classAttribute: "wr-statistic-group" }, ngImport: i0, template: '<div class="wr-statistic-group__grid"><ng-content /></div>', isInline: true, encapsulation: i0.ViewEncapsulation.None });
377
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStatisticGroup, deps: [], target: i0.ɵɵFactoryTarget.Component });
378
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.1.6", type: WrStatisticGroup, isStandalone: true, selector: "wr-statistic-group", inputs: { min: { classPropertyName: "min", publicName: "min", isSignal: true, isRequired: false, transformFunction: null }, columns: { classPropertyName: "columns", publicName: "columns", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "style.--wr-statistic-group-min": "min()", "style.--wr-statistic-group-columns": "columns() || null" }, classAttribute: "wr-statistic-group" }, ngImport: i0, template: '<div class="wr-statistic-group__grid"><ng-content /></div>', isInline: true, encapsulation: i0.ViewEncapsulation.None });
372
379
  }
373
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.5", ngImport: i0, type: WrStatisticGroup, decorators: [{
380
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.1.6", ngImport: i0, type: WrStatisticGroup, decorators: [{
374
381
  type: Component,
375
382
  args: [{
376
383
  selector: 'wr-statistic-group',