@testgorilla/tgo-ui 7.0.0-beta.0 → 7.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/components/accordion/accordion.component.d.ts +100 -0
  2. package/components/accordion/accordion.component.module.d.ts +12 -0
  3. package/components/accordion/accordion.model.d.ts +2 -0
  4. package/components/accordion/index.d.ts +5 -118
  5. package/components/accordion/public-api.d.ts +4 -0
  6. package/components/ai-audio-circle/ai-audio-circle.component.d.ts +60 -0
  7. package/components/ai-audio-circle/ai-audio-circle.module.d.ts +8 -0
  8. package/components/ai-audio-circle/index.d.ts +5 -70
  9. package/components/ai-audio-circle/public-api.d.ts +2 -0
  10. package/components/ai-caveat/ai-caveat.component.d.ts +36 -0
  11. package/components/ai-caveat/ai-caveat.component.module.d.ts +10 -0
  12. package/components/ai-caveat/index.d.ts +3 -47
  13. package/components/ai-caveat/public-api.d.ts +3 -0
  14. package/components/ai-feedback/ai-feedback.component.d.ts +52 -0
  15. package/components/ai-feedback/ai-feedback.model.d.ts +19 -0
  16. package/components/ai-feedback/ai-feedback.module.d.ts +16 -0
  17. package/components/ai-feedback/index.d.ts +5 -92
  18. package/components/ai-feedback/public-api.d.ts +4 -0
  19. package/components/alert-banner/alert-banner.component.d.ts +144 -0
  20. package/components/alert-banner/alert-banner.component.module.d.ts +12 -0
  21. package/components/alert-banner/alert-banner.model.d.ts +6 -0
  22. package/components/alert-banner/index.d.ts +5 -165
  23. package/components/alert-banner/public-api.d.ts +4 -0
  24. package/components/audio-waveform/audio-waveform.component.d.ts +32 -0
  25. package/components/audio-waveform/audio-waveform.model.d.ts +8 -0
  26. package/components/audio-waveform/audio-waveform.module.d.ts +7 -0
  27. package/components/audio-waveform/audio-waveform.service.d.ts +21 -0
  28. package/components/audio-waveform/index.d.ts +5 -71
  29. package/components/audio-waveform/public-api.d.ts +4 -0
  30. package/components/autocomplete/autocomplete.component.d.ts +324 -0
  31. package/components/autocomplete/autocomplete.component.module.d.ts +23 -0
  32. package/components/autocomplete/autocomplete.model.d.ts +23 -0
  33. package/components/autocomplete/includes.pipe.d.ts +12 -0
  34. package/components/autocomplete/index.d.ts +3 -414
  35. package/components/autocomplete/prevent-input.directive.d.ts +7 -0
  36. package/components/autocomplete/public-api.d.ts +4 -0
  37. package/components/autocomplete/select-text.directive.d.ts +19 -0
  38. package/components/autocomplete/transform-Item.pipe.d.ts +11 -0
  39. package/components/avatar/avatar.component.d.ts +67 -0
  40. package/components/avatar/avatar.component.module.d.ts +13 -0
  41. package/components/avatar/avatar.model.d.ts +18 -0
  42. package/components/avatar/index.d.ts +5 -107
  43. package/components/avatar/name-initials.pipe.d.ts +7 -0
  44. package/components/avatar/public-api.d.ts +4 -0
  45. package/components/badge/badge.component.d.ts +73 -0
  46. package/components/badge/badge.component.module.d.ts +10 -0
  47. package/components/badge/badge.model.d.ts +38 -0
  48. package/components/badge/index.d.ts +5 -125
  49. package/components/badge/public-api.d.ts +4 -0
  50. package/components/breadcrumb/breadcrumb.component.d.ts +40 -0
  51. package/components/breadcrumb/breadcrumb.component.module.d.ts +14 -0
  52. package/components/breadcrumb/breadcrumb.model.d.ts +5 -0
  53. package/components/breadcrumb/index.d.ts +5 -62
  54. package/components/breadcrumb/public-api.d.ts +4 -0
  55. package/components/button/button.component.d.ts +238 -0
  56. package/components/button/button.component.module.d.ts +15 -0
  57. package/components/button/button.model.d.ts +14 -0
  58. package/components/button/color-contrast.d.ts +28 -0
  59. package/components/button/index.d.ts +3 -298
  60. package/components/button/public-api.d.ts +5 -0
  61. package/components/card/card.component.d.ts +87 -0
  62. package/components/card/card.component.module.d.ts +9 -0
  63. package/components/card/card.model.d.ts +3 -0
  64. package/components/card/index.d.ts +5 -103
  65. package/components/card/public-api.d.ts +4 -0
  66. package/components/checkbox/checkbox.component.d.ts +193 -0
  67. package/components/checkbox/checkbox.component.module.d.ts +16 -0
  68. package/components/checkbox/focus-visible.directive.d.ts +12 -0
  69. package/components/checkbox/index.d.ts +5 -221
  70. package/components/checkbox/public-api.d.ts +4 -0
  71. package/components/checklist/checklist.component.d.ts +82 -0
  72. package/components/checklist/checklist.model.d.ts +9 -0
  73. package/components/checklist/index.d.ts +5 -97
  74. package/components/checklist/public-api.d.ts +3 -0
  75. package/components/core/alert-bar.model.d.ts +2 -0
  76. package/components/core/alert-bars.utils.d.ts +6 -0
  77. package/components/core/application-theme.model.d.ts +7 -0
  78. package/components/core/autocomplete-utils.d.ts +12 -0
  79. package/components/core/checkbox.model.d.ts +1 -0
  80. package/components/core/color-contrast.d.ts +28 -0
  81. package/components/core/colors.model.d.ts +63 -0
  82. package/components/core/data-property-getter.pipe.d.ts +8 -0
  83. package/components/core/digits-only.directive.d.ts +17 -0
  84. package/components/core/dynamic-component.directive.d.ts +20 -0
  85. package/components/core/ellipse-text.directive.d.ts +20 -0
  86. package/components/core/has-validation-error.pipe.d.ts +15 -0
  87. package/components/core/hex-to-rgb.d.ts +1 -0
  88. package/components/core/index.d.ts +3 -346
  89. package/components/core/is-large-tablet.d.ts +2 -0
  90. package/components/core/is-mobile.d.ts +2 -0
  91. package/components/core/keyboard-events.model.d.ts +11 -0
  92. package/components/core/language.model.d.ts +14 -0
  93. package/components/core/language.service.d.ts +20 -0
  94. package/components/core/link-target.model.d.ts +1 -0
  95. package/components/core/memoize-func.pipe.d.ts +26 -0
  96. package/components/core/public-api.d.ts +25 -0
  97. package/components/core/screen-breakpoints.model.d.ts +5 -0
  98. package/components/core/select-text.directive.d.ts +19 -0
  99. package/components/core/truncate.pipe.d.ts +7 -0
  100. package/components/core/ui-ordinal-suffix.pipe.d.ts +7 -0
  101. package/components/core/ui-translate.pipe.d.ts +32 -0
  102. package/components/datepicker/date-adapter.d.ts +34 -0
  103. package/components/datepicker/datepicker.component.d.ts +235 -0
  104. package/components/datepicker/datepicker.component.module.d.ts +17 -0
  105. package/components/datepicker/datepicker.service.d.ts +8 -0
  106. package/components/datepicker/index.d.ts +5 -305
  107. package/components/datepicker/no-date-format.directive.d.ts +11 -0
  108. package/components/datepicker/public-api.d.ts +6 -0
  109. package/components/deprecated-paginator/deprecated-paginator.component.d.ts +34 -0
  110. package/components/deprecated-paginator/deprecated-paginator.component.module.d.ts +9 -0
  111. package/components/dialog/confirm-dialog/confirm-dialog.component.d.ts +38 -0
  112. package/components/dialog/confirm-dialog/confirm-dialog.component.module.d.ts +12 -0
  113. package/components/dialog/confirm-dialog/confirm-dialog.model.d.ts +47 -0
  114. package/components/dialog/dialog-custom/dialog-custom.component.d.ts +22 -0
  115. package/components/dialog/dialog-custom/dialog-custom.component.module.d.ts +10 -0
  116. package/components/dialog/dialog.component.d.ts +163 -0
  117. package/components/dialog/dialog.component.module.d.ts +11 -0
  118. package/components/dialog/dialog.model.d.ts +12 -0
  119. package/components/dialog/dialog.service.d.ts +14 -0
  120. package/components/dialog/index.d.ts +5 -308
  121. package/components/dialog/public-api.d.ts +10 -0
  122. package/components/divider/divider.component.d.ts +39 -0
  123. package/components/divider/divider.component.module.d.ts +9 -0
  124. package/components/divider/divider.model.d.ts +1 -0
  125. package/components/divider/index.d.ts +5 -53
  126. package/components/divider/public-api.d.ts +4 -0
  127. package/components/donut-chart/donut-chart.component.d.ts +22 -0
  128. package/components/donut-chart/donut-chart.component.model.d.ts +6 -0
  129. package/components/donut-chart/donut-chart.component.module.d.ts +8 -0
  130. package/components/donut-chart/index.d.ts +5 -39
  131. package/components/donut-chart/public-api.d.ts +3 -0
  132. package/components/dropdown/dropdown.component.d.ts +214 -0
  133. package/components/dropdown/dropdown.component.module.d.ts +16 -0
  134. package/components/dropdown/dropdown.model.d.ts +6 -0
  135. package/components/dropdown/index.d.ts +5 -240
  136. package/components/dropdown/public-api.d.ts +4 -0
  137. package/components/elevation-shadow/elevation-shadow.component.d.ts +26 -0
  138. package/components/elevation-shadow/elevation-shadow.component.module.d.ts +8 -0
  139. package/components/elevation-shadow/elevation-shadow.constant.d.ts +8 -0
  140. package/components/elevation-shadow/index.d.ts +5 -45
  141. package/components/elevation-shadow/public-api.d.ts +3 -0
  142. package/components/empty-state/empty-state.component.d.ts +199 -0
  143. package/components/empty-state/empty-state.component.module.d.ts +11 -0
  144. package/components/empty-state/empty-state.model.d.ts +3 -0
  145. package/components/empty-state/index.d.ts +5 -217
  146. package/components/empty-state/public-api.d.ts +4 -0
  147. package/components/field/field.component.d.ts +376 -0
  148. package/components/field/field.component.module.d.ts +17 -0
  149. package/components/field/field.model.d.ts +1 -0
  150. package/components/field/index.d.ts +3 -396
  151. package/components/field/public-api.d.ts +4 -0
  152. package/components/file-upload/drag-drop.directive.d.ts +12 -0
  153. package/components/file-upload/file-upload.component.d.ts +142 -0
  154. package/components/file-upload/file-upload.component.module.d.ts +14 -0
  155. package/components/file-upload/index.d.ts +5 -169
  156. package/components/file-upload/public-api.d.ts +3 -0
  157. package/components/filter-button/filter-button.component.d.ts +140 -0
  158. package/components/filter-button/filter-button.component.module.d.ts +17 -0
  159. package/components/filter-button/filter-button.model.d.ts +13 -0
  160. package/components/filter-button/index.d.ts +5 -173
  161. package/components/filter-button/public-api.d.ts +4 -0
  162. package/components/gaussian-chart/gaussian-chart.component.d.ts +82 -0
  163. package/components/gaussian-chart/gaussian-chart.module.d.ts +12 -0
  164. package/components/gaussian-chart/index.d.ts +5 -96
  165. package/components/gaussian-chart/public-api.d.ts +2 -0
  166. package/components/icon/icon-svg-content.d.ts +16 -0
  167. package/components/icon/icon.component.d.ts +72 -0
  168. package/components/icon/icon.component.module.d.ts +10 -0
  169. package/components/icon/icon.config.d.ts +10 -0
  170. package/components/icon/icon.model.d.ts +7 -0
  171. package/components/icon/icons.service.d.ts +8 -0
  172. package/components/icon/index.d.ts +5 -109
  173. package/components/icon/public-api.d.ts +6 -0
  174. package/components/icon-label/icon-label.component.d.ts +51 -0
  175. package/components/icon-label/icon-label.component.module.d.ts +9 -0
  176. package/components/icon-label/index.d.ts +5 -62
  177. package/components/icon-label/public-api.d.ts +2 -0
  178. package/components/inline-field/index.d.ts +3 -273
  179. package/components/inline-field/inline-field.component.d.ts +153 -0
  180. package/components/inline-field/inline-field.component.module.d.ts +13 -0
  181. package/components/inline-field/inline-field.model.d.ts +107 -0
  182. package/components/inline-field/public-api.d.ts +4 -0
  183. package/components/logo/index.d.ts +5 -106
  184. package/components/logo/logo.component.d.ts +66 -0
  185. package/components/logo/logo.component.module.d.ts +8 -0
  186. package/components/logo/logo.model.d.ts +29 -0
  187. package/components/logo/public-api.d.ts +4 -0
  188. package/components/media-card/index.d.ts +5 -35
  189. package/components/media-card/media-card.component.d.ts +32 -0
  190. package/components/media-card/public-api.d.ts +1 -0
  191. package/components/media-dialog/index.d.ts +5 -47
  192. package/components/media-dialog/media-dialog.component.d.ts +28 -0
  193. package/components/media-dialog/media-dialog.model.d.ts +16 -0
  194. package/components/media-dialog/public-api.d.ts +2 -0
  195. package/components/multi-input/index.d.ts +5 -185
  196. package/components/multi-input/multi-input.component.d.ts +158 -0
  197. package/components/multi-input/multi-input.component.module.d.ts +17 -0
  198. package/components/multi-input/multi-input.model.d.ts +4 -0
  199. package/components/multi-input/public-api.d.ts +5 -0
  200. package/components/multi-input/required-multi-input.validator.d.ts +3 -0
  201. package/components/navbar/index.d.ts +5 -203
  202. package/components/navbar/mobile-navbar-side-sheet/mobile-navbar-side-sheet.component.d.ts +28 -0
  203. package/components/navbar/navbar.component.d.ts +133 -0
  204. package/components/navbar/navbar.component.module.d.ts +21 -0
  205. package/components/navbar/navbar.model.d.ts +21 -0
  206. package/components/navbar/public-api.d.ts +5 -0
  207. package/components/overflow-menu/index.d.ts +5 -163
  208. package/components/overflow-menu/overflow-menu.component.d.ts +117 -0
  209. package/components/overflow-menu/overflow-menu.component.module.d.ts +14 -0
  210. package/components/overflow-menu/overflow-menu.model.d.ts +32 -0
  211. package/components/overflow-menu/public-api.d.ts +4 -0
  212. package/components/page-header/index.d.ts +5 -51
  213. package/components/page-header/page-header.component.d.ts +38 -0
  214. package/components/page-header/page-header.component.module.d.ts +10 -0
  215. package/components/page-header/public-api.d.ts +3 -0
  216. package/components/paginator/index.d.ts +5 -70
  217. package/components/paginator/paginator.component.d.ts +58 -0
  218. package/components/paginator/paginator.component.module.d.ts +9 -0
  219. package/components/paginator/public-api.d.ts +3 -0
  220. package/components/password-criteria/index.d.ts +5 -60
  221. package/components/password-criteria/password.component.d.ts +44 -0
  222. package/components/password-criteria/password.component.module.d.ts +13 -0
  223. package/components/password-criteria/public-api.d.ts +3 -0
  224. package/components/password-strength/index.d.ts +5 -59
  225. package/components/password-strength/password-strength.component.d.ts +45 -0
  226. package/components/password-strength/password-strength.component.module.d.ts +11 -0
  227. package/components/password-strength/public-api.d.ts +3 -0
  228. package/components/phone-input/index.d.ts +3 -179
  229. package/components/phone-input/join-strings.pipe.d.ts +7 -0
  230. package/components/phone-input/phone-input.component.d.ts +145 -0
  231. package/components/phone-input/phone-input.component.module.d.ts +19 -0
  232. package/components/phone-input/phone-input.model.d.ts +8 -0
  233. package/components/phone-input/public-api.d.ts +5 -0
  234. package/components/popover/index.d.ts +5 -34
  235. package/components/popover/popover.component.d.ts +9 -0
  236. package/components/popover/popover.directive.d.ts +31 -0
  237. package/components/popover/public-api.d.ts +1 -0
  238. package/components/progress-bar/index.d.ts +5 -86
  239. package/components/progress-bar/progress-bar.component.d.ts +73 -0
  240. package/components/progress-bar/progress-bar.component.module.d.ts +10 -0
  241. package/components/progress-bar/public-api.d.ts +3 -0
  242. package/components/prompt/index.d.ts +5 -95
  243. package/components/prompt/prompt.component.d.ts +62 -0
  244. package/components/prompt/prompt.model.d.ts +9 -0
  245. package/components/prompt/prompt.module.d.ts +20 -0
  246. package/components/prompt/public-api.d.ts +4 -0
  247. package/components/radial-progress/index.d.ts +5 -99
  248. package/components/radial-progress/public-api.d.ts +4 -0
  249. package/components/radial-progress/radial-progress.component.d.ts +75 -0
  250. package/components/radial-progress/radial-progress.component.module.d.ts +10 -0
  251. package/components/radial-progress/radial-progress.model.d.ts +10 -0
  252. package/components/radio-button/index.d.ts +5 -211
  253. package/components/radio-button/public-api.d.ts +4 -0
  254. package/components/radio-button/radio-button.component.d.ts +189 -0
  255. package/components/radio-button/radio-button.component.module.d.ts +15 -0
  256. package/components/radio-button/radio-button.model.d.ts +4 -0
  257. package/components/rating/half-star.pipe.d.ts +14 -0
  258. package/components/rating/index.d.ts +5 -97
  259. package/components/rating/public-api.d.ts +3 -0
  260. package/components/rating/rating.component.d.ts +71 -0
  261. package/components/rating/rating.component.module.d.ts +10 -0
  262. package/components/scale/index.d.ts +5 -65
  263. package/components/scale/public-api.d.ts +3 -0
  264. package/components/scale/scale.component.d.ts +54 -0
  265. package/components/scale/scale.component.module.d.ts +8 -0
  266. package/components/scale-table/index.d.ts +5 -49
  267. package/components/scale-table/public-api.d.ts +3 -0
  268. package/components/scale-table/scale-table.component.d.ts +39 -0
  269. package/components/scale-table/scale-table.model.d.ts +5 -0
  270. package/components/segmented-bar/index.d.ts +5 -92
  271. package/components/segmented-bar/public-api.d.ts +4 -0
  272. package/components/segmented-bar/segmented-bar.component.d.ts +64 -0
  273. package/components/segmented-bar/segmented-bar.component.module.d.ts +12 -0
  274. package/components/segmented-bar/segmented-bar.model.d.ts +12 -0
  275. package/components/segmented-button/index.d.ts +5 -77
  276. package/components/segmented-button/public-api.d.ts +4 -0
  277. package/components/segmented-button/segmented-button.component.d.ts +55 -0
  278. package/components/segmented-button/segmented-button.component.module.d.ts +11 -0
  279. package/components/segmented-button/segmented-button.model.d.ts +8 -0
  280. package/components/selectable-card/index.d.ts +5 -50
  281. package/components/selectable-card/public-api.d.ts +2 -0
  282. package/components/selectable-card/selectable-card.component.d.ts +38 -0
  283. package/components/selectable-card/selectable-card.component.module.d.ts +10 -0
  284. package/components/side-panel/index.d.ts +3 -97
  285. package/components/side-panel/public-api.d.ts +5 -0
  286. package/components/side-panel/side-panel-data-injection-token.d.ts +2 -0
  287. package/components/side-panel/side-panel.animations.d.ts +3 -0
  288. package/components/side-panel/side-panel.component.d.ts +22 -0
  289. package/components/side-panel/side-panel.model.d.ts +46 -0
  290. package/components/side-panel/side-panel.service.d.ts +22 -0
  291. package/components/side-sheet/index.d.ts +5 -81
  292. package/components/side-sheet/public-api.d.ts +4 -0
  293. package/components/side-sheet/side-sheet.component.d.ts +43 -0
  294. package/components/side-sheet/side-sheet.component.module.d.ts +14 -0
  295. package/components/side-sheet/side-sheet.model.d.ts +10 -0
  296. package/components/side-sheet/side-sheet.service.d.ts +14 -0
  297. package/components/skeleton/index.d.ts +5 -34
  298. package/components/skeleton/public-api.d.ts +3 -0
  299. package/components/skeleton/skeleton.component.d.ts +27 -0
  300. package/components/skeleton/skeleton.model.d.ts +2 -0
  301. package/components/slider/index.d.ts +5 -144
  302. package/components/slider/public-api.d.ts +4 -0
  303. package/components/slider/slider.component.d.ts +128 -0
  304. package/components/slider/slider.component.module.d.ts +7 -0
  305. package/components/slider/slider.model.d.ts +5 -0
  306. package/components/snackbar/index.d.ts +5 -162
  307. package/components/snackbar/public-api.d.ts +5 -0
  308. package/components/snackbar/snackbar.component.d.ts +126 -0
  309. package/components/snackbar/snackbar.component.module.d.ts +13 -0
  310. package/components/snackbar/snackbar.model.d.ts +7 -0
  311. package/components/snackbar/snackbar.service.d.ts +16 -0
  312. package/components/spider-chart/index.d.ts +5 -127
  313. package/components/spider-chart/public-api.d.ts +3 -0
  314. package/components/spider-chart/spider-chart.component.d.ts +90 -0
  315. package/components/spider-chart/spider-chart.model.d.ts +12 -0
  316. package/components/spider-chart/spider-chart.module.d.ts +12 -0
  317. package/components/spinner/index.d.ts +5 -74
  318. package/components/spinner/public-api.d.ts +4 -0
  319. package/components/spinner/spinner.component.d.ts +59 -0
  320. package/components/spinner/spinner.model.d.ts +1 -0
  321. package/components/spinner/spinner.module.d.ts +10 -0
  322. package/components/stepper/index.d.ts +3 -341
  323. package/components/stepper/public-api.d.ts +7 -0
  324. package/components/stepper/step-line-element.directive.d.ts +17 -0
  325. package/components/stepper/step.component.d.ts +184 -0
  326. package/components/stepper/step.component.module.d.ts +11 -0
  327. package/components/stepper/stepper.component.d.ts +102 -0
  328. package/components/stepper/stepper.component.module.d.ts +15 -0
  329. package/components/stepper/stepper.model.d.ts +23 -0
  330. package/components/table/index.d.ts +3 -251
  331. package/components/table/public-api.d.ts +6 -0
  332. package/components/table/sentence-case.pipe.d.ts +7 -0
  333. package/components/table/table.component.d.ts +117 -0
  334. package/components/table/table.component.module.d.ts +17 -0
  335. package/components/table/table.model.d.ts +104 -0
  336. package/components/table/table.utils.d.ts +6 -0
  337. package/components/tabs/index.d.ts +5 -145
  338. package/components/tabs/public-api.d.ts +5 -0
  339. package/components/tabs/tab.directive.d.ts +28 -0
  340. package/components/tabs/tabs.component.d.ts +79 -0
  341. package/components/tabs/tabs.component.module.d.ts +13 -0
  342. package/components/tabs/tabs.model.d.ts +26 -0
  343. package/components/tag/index.d.ts +5 -166
  344. package/components/tag/public-api.d.ts +4 -0
  345. package/components/tag/tag.component.d.ts +145 -0
  346. package/components/tag/tag.component.module.d.ts +14 -0
  347. package/components/tag/tag.model.d.ts +1 -0
  348. package/components/toggle/index.d.ts +5 -130
  349. package/components/toggle/public-api.d.ts +3 -0
  350. package/components/toggle/toggle.component.d.ts +113 -0
  351. package/components/toggle/toggle.component.module.d.ts +13 -0
  352. package/components/toggle/toggle.model.d.ts +1 -0
  353. package/components/tooltip/index.d.ts +5 -111
  354. package/components/tooltip/public-api.d.ts +5 -0
  355. package/components/tooltip/tooltip-template.directive.d.ts +27 -0
  356. package/components/tooltip/tooltip.component.d.ts +64 -0
  357. package/components/tooltip/tooltip.component.module.d.ts +11 -0
  358. package/components/tooltip/tooltip.model.d.ts +8 -0
  359. package/components/universal-skills/index.d.ts +5 -153
  360. package/components/universal-skills/public-api.d.ts +6 -0
  361. package/components/universal-skills/spider-charts/universal-skills-spider-charts.component.d.ts +47 -0
  362. package/components/universal-skills/spider-charts/universal-skills-spider-charts.component.module.d.ts +14 -0
  363. package/components/universal-skills/universal-skills-report.component.d.ts +33 -0
  364. package/components/universal-skills/universal-skills-report.component.module.d.ts +12 -0
  365. package/components/universal-skills/universal-skills-report.model.d.ts +44 -0
  366. package/components/universal-skills/universal-skills.service.d.ts +13 -0
  367. package/components/validation-error/index.d.ts +5 -36
  368. package/components/validation-error/public-api.d.ts +3 -0
  369. package/components/validation-error/validation-error.component.d.ts +22 -0
  370. package/components/validation-error/validation-error.model.d.ts +1 -0
  371. package/components/validation-error/validation-error.module.d.ts +10 -0
  372. package/components/write-with-ai/index.d.ts +3 -131
  373. package/components/write-with-ai/llm.service.d.ts +22 -0
  374. package/components/write-with-ai/public-api.d.ts +4 -0
  375. package/components/write-with-ai/write-with-ai.component.d.ts +79 -0
  376. package/components/write-with-ai/write-with-ai.model.d.ts +24 -0
  377. package/components/write-with-ai/write-with-ai.module.d.ts +7 -0
  378. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs +8 -8
  379. package/fesm2022/testgorilla-tgo-ui-components-accordion.mjs.map +1 -1
  380. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs +16 -16
  381. package/fesm2022/testgorilla-tgo-ui-components-ai-audio-circle.mjs.map +1 -1
  382. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs +7 -7
  383. package/fesm2022/testgorilla-tgo-ui-components-ai-caveat.mjs.map +1 -1
  384. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs +24 -24
  385. package/fesm2022/testgorilla-tgo-ui-components-ai-feedback.mjs.map +1 -1
  386. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs +8 -8
  387. package/fesm2022/testgorilla-tgo-ui-components-alert-banner.mjs.map +1 -1
  388. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs +24 -24
  389. package/fesm2022/testgorilla-tgo-ui-components-audio-waveform.mjs.map +1 -1
  390. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs +23 -23
  391. package/fesm2022/testgorilla-tgo-ui-components-autocomplete.mjs.map +1 -1
  392. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs +11 -11
  393. package/fesm2022/testgorilla-tgo-ui-components-avatar.mjs.map +1 -1
  394. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs +8 -8
  395. package/fesm2022/testgorilla-tgo-ui-components-badge.mjs.map +1 -1
  396. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs +23 -22
  397. package/fesm2022/testgorilla-tgo-ui-components-breadcrumb.mjs.map +1 -1
  398. package/fesm2022/testgorilla-tgo-ui-components-button.mjs +9 -8
  399. package/fesm2022/testgorilla-tgo-ui-components-button.mjs.map +1 -1
  400. package/fesm2022/testgorilla-tgo-ui-components-card.mjs +7 -7
  401. package/fesm2022/testgorilla-tgo-ui-components-card.mjs.map +1 -1
  402. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs +11 -11
  403. package/fesm2022/testgorilla-tgo-ui-components-checkbox.mjs.map +1 -1
  404. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs +16 -16
  405. package/fesm2022/testgorilla-tgo-ui-components-checklist.mjs.map +1 -1
  406. package/fesm2022/testgorilla-tgo-ui-components-core.mjs +33 -33
  407. package/fesm2022/testgorilla-tgo-ui-components-core.mjs.map +1 -1
  408. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs +21 -21
  409. package/fesm2022/testgorilla-tgo-ui-components-datepicker.mjs.map +1 -1
  410. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs +31 -31
  411. package/fesm2022/testgorilla-tgo-ui-components-dialog.mjs.map +1 -1
  412. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs +8 -8
  413. package/fesm2022/testgorilla-tgo-ui-components-divider.mjs.map +1 -1
  414. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs +13 -13
  415. package/fesm2022/testgorilla-tgo-ui-components-donut-chart.mjs.map +1 -1
  416. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs +10 -10
  417. package/fesm2022/testgorilla-tgo-ui-components-dropdown.mjs.map +1 -1
  418. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs +7 -7
  419. package/fesm2022/testgorilla-tgo-ui-components-elevation-shadow.mjs.map +1 -1
  420. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs +12 -12
  421. package/fesm2022/testgorilla-tgo-ui-components-empty-state.mjs.map +1 -1
  422. package/fesm2022/testgorilla-tgo-ui-components-field.mjs +18 -18
  423. package/fesm2022/testgorilla-tgo-ui-components-field.mjs.map +1 -1
  424. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs +12 -12
  425. package/fesm2022/testgorilla-tgo-ui-components-file-upload.mjs.map +1 -1
  426. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs +26 -26
  427. package/fesm2022/testgorilla-tgo-ui-components-filter-button.mjs.map +1 -1
  428. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs +13 -12
  429. package/fesm2022/testgorilla-tgo-ui-components-gaussian-chart.mjs.map +1 -1
  430. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs +7 -7
  431. package/fesm2022/testgorilla-tgo-ui-components-icon-label.mjs.map +1 -1
  432. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs +10 -10
  433. package/fesm2022/testgorilla-tgo-ui-components-icon.mjs.map +1 -1
  434. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs +33 -33
  435. package/fesm2022/testgorilla-tgo-ui-components-inline-field.mjs.map +1 -1
  436. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs +9 -8
  437. package/fesm2022/testgorilla-tgo-ui-components-logo.mjs.map +1 -1
  438. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs +3 -3
  439. package/fesm2022/testgorilla-tgo-ui-components-media-card.mjs.map +1 -1
  440. package/fesm2022/testgorilla-tgo-ui-components-media-dialog.mjs +3 -3
  441. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs +34 -33
  442. package/fesm2022/testgorilla-tgo-ui-components-multi-input.mjs.map +1 -1
  443. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs +21 -19
  444. package/fesm2022/testgorilla-tgo-ui-components-navbar.mjs.map +1 -1
  445. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs +11 -11
  446. package/fesm2022/testgorilla-tgo-ui-components-overflow-menu.mjs.map +1 -1
  447. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs +7 -7
  448. package/fesm2022/testgorilla-tgo-ui-components-page-header.mjs.map +1 -1
  449. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs +7 -7
  450. package/fesm2022/testgorilla-tgo-ui-components-paginator.mjs.map +1 -1
  451. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs +9 -9
  452. package/fesm2022/testgorilla-tgo-ui-components-password-criteria.mjs.map +1 -1
  453. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs +8 -8
  454. package/fesm2022/testgorilla-tgo-ui-components-password-strength.mjs.map +1 -1
  455. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs +12 -12
  456. package/fesm2022/testgorilla-tgo-ui-components-phone-input.mjs.map +1 -1
  457. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs +16 -16
  458. package/fesm2022/testgorilla-tgo-ui-components-popover.mjs.map +1 -1
  459. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs +11 -11
  460. package/fesm2022/testgorilla-tgo-ui-components-progress-bar.mjs.map +1 -1
  461. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs +28 -28
  462. package/fesm2022/testgorilla-tgo-ui-components-prompt.mjs.map +1 -1
  463. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs +7 -7
  464. package/fesm2022/testgorilla-tgo-ui-components-radial-progress.mjs.map +1 -1
  465. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs +8 -8
  466. package/fesm2022/testgorilla-tgo-ui-components-radio-button.mjs.map +1 -1
  467. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs +11 -11
  468. package/fesm2022/testgorilla-tgo-ui-components-rating.mjs.map +1 -1
  469. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs +9 -9
  470. package/fesm2022/testgorilla-tgo-ui-components-scale-table.mjs.map +1 -1
  471. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs +9 -9
  472. package/fesm2022/testgorilla-tgo-ui-components-scale.mjs.map +1 -1
  473. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs +8 -8
  474. package/fesm2022/testgorilla-tgo-ui-components-segmented-bar.mjs.map +1 -1
  475. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs +9 -9
  476. package/fesm2022/testgorilla-tgo-ui-components-segmented-button.mjs.map +1 -1
  477. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs +14 -14
  478. package/fesm2022/testgorilla-tgo-ui-components-selectable-card.mjs.map +1 -1
  479. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs +13 -13
  480. package/fesm2022/testgorilla-tgo-ui-components-side-panel.mjs.map +1 -1
  481. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs +17 -17
  482. package/fesm2022/testgorilla-tgo-ui-components-side-sheet.mjs.map +1 -1
  483. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs +5 -5
  484. package/fesm2022/testgorilla-tgo-ui-components-skeleton.mjs.map +1 -1
  485. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs +15 -15
  486. package/fesm2022/testgorilla-tgo-ui-components-slider.mjs.map +1 -1
  487. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs +11 -11
  488. package/fesm2022/testgorilla-tgo-ui-components-snackbar.mjs.map +1 -1
  489. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs +14 -32
  490. package/fesm2022/testgorilla-tgo-ui-components-spider-chart.mjs.map +1 -1
  491. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs +7 -7
  492. package/fesm2022/testgorilla-tgo-ui-components-spinner.mjs.map +1 -1
  493. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs +20 -20
  494. package/fesm2022/testgorilla-tgo-ui-components-stepper.mjs.map +1 -1
  495. package/fesm2022/testgorilla-tgo-ui-components-table.mjs +11 -11
  496. package/fesm2022/testgorilla-tgo-ui-components-table.mjs.map +1 -1
  497. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs +27 -27
  498. package/fesm2022/testgorilla-tgo-ui-components-tabs.mjs.map +1 -1
  499. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs +12 -12
  500. package/fesm2022/testgorilla-tgo-ui-components-tag.mjs.map +1 -1
  501. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs +9 -9
  502. package/fesm2022/testgorilla-tgo-ui-components-toggle.mjs.map +1 -1
  503. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs +11 -11
  504. package/fesm2022/testgorilla-tgo-ui-components-tooltip.mjs.map +1 -1
  505. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs +23 -23
  506. package/fesm2022/testgorilla-tgo-ui-components-universal-skills.mjs.map +1 -1
  507. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs +11 -11
  508. package/fesm2022/testgorilla-tgo-ui-components-validation-error.mjs.map +1 -1
  509. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs +38 -38
  510. package/fesm2022/testgorilla-tgo-ui-components-write-with-ai.mjs.map +1 -1
  511. package/fesm2022/testgorilla-tgo-ui.mjs +8 -8
  512. package/fesm2022/testgorilla-tgo-ui.mjs.map +1 -1
  513. package/index.d.ts +5 -46
  514. package/mcp/catalog.json +1 -0
  515. package/mcp/server.mjs +21567 -0
  516. package/package.json +30 -29
  517. package/projects/tgo-canopy-ui/theme/_tooltip.scss +0 -2
  518. package/public-api.d.ts +81 -0
@@ -1 +1 @@
1
- {"version":3,"file":"testgorilla-tgo-ui-components-alert-banner.mjs","sources":["../../../components/alert-banner/alert-banner.component.ts","../../../components/alert-banner/alert-banner.component.html","../../../components/alert-banner/alert-banner.component.module.ts","../../../components/alert-banner/testgorilla-tgo-ui-components-alert-banner.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AlertBarType, AlertVariant, alertBarsUtil } from '@testgorilla/tgo-ui/components/core';\nimport { AlertBannerAction, LinkTargetType } from './alert-banner.model';\n\n@Component({\n selector: 'ui-alert-banner',\n templateUrl: './alert-banner.component.html',\n styleUrls: ['./alert-banner.component.scss'],\n animations: [\n trigger('openClose', [\n transition(':enter', [animate('0.2s ease-out', style({ opacity: 1 }))]),\n transition(':leave', [animate('0.2s ease-in', style({ opacity: 0 }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AlertBannerComponent implements OnInit, OnChanges {\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * Alert Banner type\n *\n * @type {AlertBarType}\n * @default 'success'\n * @memberof AlertBannerComponent\n */\n @Input() alertType: AlertBarType = 'success';\n\n /**\n * Alert Banner variant\n *\n * @type {AlertVariant}\n * @default 'banner'\n * @memberof AlertBannerComponent\n */\n @Input() alertVariant: AlertVariant = 'banner';\n\n /**\n * Alert banner message\n *\n * @memberof AlertBannerComponent\n */\n @Input() message = '';\n\n /**\n * Include dismmiss button\n *\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() includeDismissButton = true;\n\n /**\n * Include shadow or not\n *\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() shadow = false;\n\n /**\n * Link text that will appended at the end of message\n *\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() linkText? = '';\n\n /**\n * Link url\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkUrl?: string;\n\n /**\n * Link target\n *\n * @type {@type {LinkTargetType}}\n * @default '_blank'\n * @memberof AlertBannerComponent\n */\n @Input() linkTarget?: LinkTargetType = '_blank';\n\n /**\n * Optional action buttons displayed on the right side of the banner.\n *\n * @type {AlertBannerAction[]}\n * @default []\n * @memberof AlertBannerComponent\n */\n @Input() actions: AlertBannerAction[] = [];\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @default 'light'\n * @memberof AlertBannerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Sets the full width\n *\n * @type {boolean}\n * @memberof AlertBannerComponent\n */\n @Input() isFullWidth: boolean | undefined;\n\n /**\n * Close button tooltip\n *\n * @type {string}\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() closeButtonTooltip = '';\n\n /**\n * Shows icon\n *\n * @type {boolean}\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() hasIcon = true;\n\n /**\n * Controls loading state for spinner visibility.\n *\n * @type {boolean}\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() isLoading = false;\n\n /**\n * Sets the alert banner position\n *\n * @type {boolean}\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() fixed = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof AlertBannerComponent\n */\n @Input() ariaDescribedby = '';\n\n @Input() secondaryAlerts: string[] = [];\n\n @HostBinding('class.display-none') get isDismissed() {\n return this.dismissAlertBanner;\n }\n\n iconName: IconName;\n visible = true;\n fullWidth: boolean;\n position: string;\n cssClass: string;\n dismissAlertBanner = false;\n\n ngOnInit(): void {\n this.updateBanner();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['alertType']) {\n this.updateBanner();\n }\n }\n\n private updateBanner(): void {\n this.iconName = alertBarsUtil.setIcon(this.alertType) as IconName;\n this.position = alertBarsUtil.setPosition(this.fixed);\n this.fullWidth = this.isFullWidth ?? this.alertVariant === 'banner';\n this.cssClass = alertBarsUtil.setCssClass(this.fullWidth, this.alertType, this.position, this.alertVariant);\n }\n\n //Hide snackbar when dismiss button is clicked\n dismissClick() {\n this.visible = false;\n setTimeout(() => {\n this.dismissAlertBanner = true;\n }, 200);\n }\n}\n","@if (visible) {\n <div\n [ngClass]=\"cssClass\"\n [@openClose]\n role=\"alert\"\n class=\"alert-container\"\n [attr.theme]=\"applicationTheme\"\n [class.shadow]=\"alertVariant === 'callout' && shadow\"\n [attr.aria-live]=\"alertType === 'error' || alertType === 'warning' ? 'assertive' : 'polite'\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [tabIndex]=\"0\"\n >\n <span style=\"position: absolute; left: -9999px\" id=\"labelledby\">{{\n 'ALERT_BANNER.' + (alertType | uppercase) | uiTranslate | async\n }}</span>\n <span [style.display]=\"'none'\" id=\"describedby\">{{ ariaDescribedby }}</span>\n <div class=\"primary-alert-container\">\n <div class=\"alert-text\">\n @if (hasIcon) {\n <ui-icon class=\"left-icon\" [name]=\"iconName\" size=\"24\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n }\n @if (isLoading) {\n <ui-spinner\n class=\"loading-spinner\"\n size=\"small\"\n [isLoader]=\"false\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-spinner>\n }\n <span [innerHTML]=\"message\"></span>\n @if (!!linkText) {\n <a [target]=\"linkTarget\" [href]=\"linkUrl\">{{ linkText }}</a>\n }\n </div>\n @if (actions.length > 0) {\n <div class=\"actions-container\">\n @for (action of actions; track $index) {\n <ui-button\n class=\"action-button\"\n [variant]=\"'text-inline'\"\n [label]=\"action.label\"\n size=\"medium\"\n [disabled]=\"!!action.disabled\"\n [applicationTheme]=\"applicationTheme\"\n (buttonClickEvent)=\"action.onClick($event)\"\n ></ui-button>\n }\n </div>\n }\n @if (includeDismissButton && applicationTheme === 'classic') {\n <ui-button\n variant=\"text\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n (buttonClickEvent)=\"dismissClick()\"\n ></ui-button>\n }\n @if (includeDismissButton && applicationTheme !== 'classic' && alertVariant !== 'callout') {\n <ui-button\n class=\"right-icon\"\n [variant]=\"'icon-button'\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"'Close'\"\n [size]=\"'small'\"\n [justIcon]=\"true\"\n [tooltip]=\"(closeButtonTooltip || ('COMMON.CLOSE' | uiTranslate | async))!\"\n (click)=\"dismissClick()\"\n ></ui-button>\n }\n </div>\n @if (secondaryAlerts.length > 0) {\n <div class=\"secondary-alerts-container\">\n <ul>\n @for (alert of secondaryAlerts; track alert) {\n <li class=\"secondary-alert-item\" [innerHTML]=\"alert\"></li>\n }\n </ul>\n </div>\n }\n </div>\n}\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerComponentModule } from '@testgorilla/tgo-ui/components/spinner';\nimport { AlertBannerComponent } from './alert-banner.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [AlertBannerComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, SpinnerComponentModule, UiTranslatePipe],\n exports: [AlertBannerComponent],\n})\nexport class AlertBannerComponentModule {}\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":"testgorilla-tgo-ui-components-alert-banner.mjs","sources":["../../../components/alert-banner/alert-banner.component.ts","../../../components/alert-banner/alert-banner.component.html","../../../components/alert-banner/alert-banner.component.module.ts","../../../components/alert-banner/testgorilla-tgo-ui-components-alert-banner.ts"],"sourcesContent":["import { animate, style, transition, trigger } from '@angular/animations';\nimport {\n ChangeDetectionStrategy,\n Component,\n HostBinding,\n Inject,\n Input,\n OnChanges,\n OnInit,\n Optional,\n SimpleChanges,\n} from '@angular/core';\nimport { IconName } from '@testgorilla/tgo-ui/components/icon';\nimport { ApplicationTheme } from '@testgorilla/tgo-ui/components/core';\nimport { AlertBarType, AlertVariant, alertBarsUtil } from '@testgorilla/tgo-ui/components/core';\nimport { AlertBannerAction, LinkTargetType } from './alert-banner.model';\n\n@Component({\n selector: 'ui-alert-banner',\n templateUrl: './alert-banner.component.html',\n styleUrls: ['./alert-banner.component.scss'],\n animations: [\n trigger('openClose', [\n transition(':enter', [animate('0.2s ease-out', style({ opacity: 1 }))]),\n transition(':leave', [animate('0.2s ease-in', style({ opacity: 0 }))]),\n ]),\n ],\n changeDetection: ChangeDetectionStrategy.OnPush,\n standalone: false,\n})\nexport class AlertBannerComponent implements OnInit, OnChanges {\n constructor(\n @Optional() @Inject('CANOPYUI_DEFAULT_APPLICATION_THEME') private readonly defaultAppTheme: ApplicationTheme\n ) {\n if (defaultAppTheme) {\n this.applicationTheme = defaultAppTheme;\n }\n }\n\n /**\n * Alert Banner type\n *\n * @type {AlertBarType}\n * @default 'success'\n * @memberof AlertBannerComponent\n */\n @Input() alertType: AlertBarType = 'success';\n\n /**\n * Alert Banner variant\n *\n * @type {AlertVariant}\n * @default 'banner'\n * @memberof AlertBannerComponent\n */\n @Input() alertVariant: AlertVariant = 'banner';\n\n /**\n * Alert banner message\n *\n * @memberof AlertBannerComponent\n */\n @Input() message = '';\n\n /**\n * Include dismmiss button\n *\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() includeDismissButton = true;\n\n /**\n * Include shadow or not\n *\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() shadow = false;\n\n /**\n * Link text that will appended at the end of message\n *\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() linkText? = '';\n\n /**\n * Link url\n *\n * @memberof AlertBannerComponent\n */\n @Input() linkUrl?: string;\n\n /**\n * Link target\n *\n * @type {@type {LinkTargetType}}\n * @default '_blank'\n * @memberof AlertBannerComponent\n */\n @Input() linkTarget?: LinkTargetType = '_blank';\n\n /**\n * Optional action buttons displayed on the right side of the banner.\n *\n * @type {AlertBannerAction[]}\n * @default []\n * @memberof AlertBannerComponent\n */\n @Input() actions: AlertBannerAction[] = [];\n\n /**\n *\n * Defines the application theme\n *\n * @type {ApplicationTheme}\n * @default 'light'\n * @memberof AlertBannerComponent\n */\n @Input() applicationTheme: ApplicationTheme = 'light';\n\n /**\n * Sets the full width\n *\n * @type {boolean}\n * @memberof AlertBannerComponent\n */\n @Input() isFullWidth: boolean | undefined;\n\n /**\n * Close button tooltip\n *\n * @type {string}\n * @default ''\n * @memberof AlertBannerComponent\n */\n @Input() closeButtonTooltip = '';\n\n /**\n * Shows icon\n *\n * @type {boolean}\n * @default true\n * @memberof AlertBannerComponent\n */\n @Input() hasIcon = true;\n\n /**\n * Controls loading state for spinner visibility.\n *\n * @type {boolean}\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() isLoading = false;\n\n /**\n * Sets the alert banner position\n *\n * @type {boolean}\n * @default false\n * @memberof AlertBannerComponent\n */\n @Input() fixed = false;\n\n /**\n * A string representing the ARIA requirement for accessibility.\n * This attribute is used to indicate whether an input field is required for form submission.\n * @type {string}\n * @memberof AlertBannerComponent\n */\n @Input() ariaDescribedby = '';\n\n @Input() secondaryAlerts: string[] = [];\n\n @HostBinding('class.display-none') get isDismissed() {\n return this.dismissAlertBanner;\n }\n\n iconName: IconName;\n visible = true;\n fullWidth: boolean;\n position: string;\n cssClass: string;\n dismissAlertBanner = false;\n\n ngOnInit(): void {\n this.updateBanner();\n }\n\n ngOnChanges(changes: SimpleChanges): void {\n if (changes['alertType']) {\n this.updateBanner();\n }\n }\n\n private updateBanner(): void {\n this.iconName = alertBarsUtil.setIcon(this.alertType) as IconName;\n this.position = alertBarsUtil.setPosition(this.fixed);\n this.fullWidth = this.isFullWidth ?? this.alertVariant === 'banner';\n this.cssClass = alertBarsUtil.setCssClass(this.fullWidth, this.alertType, this.position, this.alertVariant);\n }\n\n //Hide snackbar when dismiss button is clicked\n dismissClick() {\n this.visible = false;\n setTimeout(() => {\n this.dismissAlertBanner = true;\n }, 200);\n }\n}\n","<div\n [ngClass]=\"cssClass\"\n [@openClose]\n *ngIf=\"visible\"\n role=\"alert\"\n class=\"alert-container\"\n [attr.theme]=\"applicationTheme\"\n [class.shadow]=\"alertVariant === 'callout' && shadow\"\n [attr.aria-live]=\"alertType === 'error' || alertType === 'warning' ? 'assertive' : 'polite'\"\n [attr.aria-describedby]=\"'describedby'\"\n [attr.aria-labelledby]=\"'labelledby'\"\n [tabIndex]=\"0\"\n>\n <span style=\"position: absolute; left: -9999px\" id=\"labelledby\">{{\n 'ALERT_BANNER.' + (alertType | uppercase) | uiTranslate | async\n }}</span>\n <span [style.display]=\"'none'\" id=\"describedby\">{{ ariaDescribedby }}</span>\n <div class=\"primary-alert-container\">\n <div class=\"alert-text\">\n @if (hasIcon) {\n <ui-icon class=\"left-icon\" [name]=\"iconName\" size=\"24\" [applicationTheme]=\"applicationTheme\"></ui-icon>\n }\n @if (isLoading) {\n <ui-spinner\n class=\"loading-spinner\"\n size=\"small\"\n [isLoader]=\"false\"\n [applicationTheme]=\"applicationTheme\"\n ></ui-spinner>\n }\n <span [innerHTML]=\"message\"></span>\n <a *ngIf=\"!!linkText\" [target]=\"linkTarget\" [href]=\"linkUrl\">{{ linkText }}</a>\n </div>\n @if (actions.length > 0) {\n <div class=\"actions-container\">\n @for (action of actions; track $index) {\n <ui-button\n class=\"action-button\"\n [variant]=\"'text-inline'\"\n [label]=\"action.label\"\n size=\"medium\"\n [disabled]=\"!!action.disabled\"\n [applicationTheme]=\"applicationTheme\"\n (buttonClickEvent)=\"action.onClick($event)\"\n ></ui-button>\n }\n </div>\n }\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme === 'classic'\"\n variant=\"text\"\n [justIcon]=\"true\"\n class=\"close\"\n iconName=\"Close\"\n (buttonClickEvent)=\"dismissClick()\"\n ></ui-button>\n <ui-button\n *ngIf=\"includeDismissButton && applicationTheme !== 'classic' && alertVariant !== 'callout'\"\n class=\"right-icon\"\n [variant]=\"'icon-button'\"\n [applicationTheme]=\"applicationTheme\"\n [iconName]=\"'Close'\"\n [size]=\"'small'\"\n [justIcon]=\"true\"\n [tooltip]=\"(closeButtonTooltip || ('COMMON.CLOSE' | uiTranslate | async))!\"\n (click)=\"dismissClick()\"\n ></ui-button>\n </div>\n @if (secondaryAlerts.length > 0) {\n <div class=\"secondary-alerts-container\">\n <ul>\n @for (alert of secondaryAlerts; track alert) {\n <li class=\"secondary-alert-item\" [innerHTML]=\"alert\"></li>\n }\n </ul>\n </div>\n }\n</div>\n","import { CommonModule } from '@angular/common';\nimport { NgModule } from '@angular/core';\nimport { ButtonComponentModule } from '@testgorilla/tgo-ui/components/button';\nimport { IconComponentModule } from '@testgorilla/tgo-ui/components/icon';\nimport { SpinnerComponentModule } from '@testgorilla/tgo-ui/components/spinner';\nimport { AlertBannerComponent } from './alert-banner.component';\nimport { UiTranslatePipe } from '@testgorilla/tgo-ui/components/core';\n\n@NgModule({\n declarations: [AlertBannerComponent],\n imports: [CommonModule, ButtonComponentModule, IconComponentModule, SpinnerComponentModule, UiTranslatePipe],\n exports: [AlertBannerComponent],\n})\nexport class AlertBannerComponentModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
@@ -16,8 +16,8 @@ class AudioWaveformService {
16
16
  this.source = null;
17
17
  this.stream = null;
18
18
  this.raf = null;
19
- this.bars = signal([], ...(ngDevMode ? [{ debugName: "bars" }] : []));
20
- this.active = signal(false, ...(ngDevMode ? [{ debugName: "active" }] : []));
19
+ this.bars = signal([]);
20
+ this.active = signal(false);
21
21
  }
22
22
  async start(barCount = DEFAULT_AUDIO_WAVEFORM_CONFIG.barCount, smoothing = DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing) {
23
23
  if (this.active())
@@ -93,10 +93,10 @@ class AudioWaveformService {
93
93
  return amplitude * weight;
94
94
  });
95
95
  }
96
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
97
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformService, providedIn: 'root' }); }
96
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
97
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformService, providedIn: 'root' }); }
98
98
  }
99
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformService, decorators: [{
99
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformService, decorators: [{
100
100
  type: Injectable,
101
101
  args: [{ providedIn: 'root' }]
102
102
  }] });
@@ -105,35 +105,35 @@ class AudioWaveformComponent {
105
105
  constructor() {
106
106
  this.waveformService = inject(AudioWaveformService);
107
107
  this.barCount = DEFAULT_AUDIO_WAVEFORM_CONFIG.barCount;
108
- this.width = input(40, ...(ngDevMode ? [{ debugName: "width" }] : []));
109
- this.height = input(22, ...(ngDevMode ? [{ debugName: "height" }] : []));
110
- this.gap = input(3, ...(ngDevMode ? [{ debugName: "gap" }] : []));
111
- this.minScale = input(0.08, ...(ngDevMode ? [{ debugName: "minScale" }] : []));
112
- this.smoothing = input(DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing, ...(ngDevMode ? [{ debugName: "smoothing" }] : []));
108
+ this.width = input(40);
109
+ this.height = input(22);
110
+ this.gap = input(3);
111
+ this.minScale = input(0.08);
112
+ this.smoothing = input(DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing);
113
113
  /**
114
114
  * When provided, the component operates in controlled mode —
115
115
  * it renders externally-supplied bar values instead of managing the mic itself.
116
116
  */
117
- this.bars = input(null, ...(ngDevMode ? [{ debugName: "bars" }] : []));
117
+ this.bars = input(null);
118
118
  /** Mirror of `bars` for controlled mode; required when `bars` is set. */
119
- this.active = input(null, ...(ngDevMode ? [{ debugName: "active" }] : []));
120
- this.controlled = computed(() => this.active() !== null, ...(ngDevMode ? [{ debugName: "controlled" }] : []));
119
+ this.active = input(null);
120
+ this.controlled = computed(() => this.active() !== null);
121
121
  this.effectiveBars = computed(() => {
122
122
  if (this.controlled()) {
123
123
  return this.bars() ?? [];
124
124
  }
125
125
  return this.waveformService.bars();
126
- }, ...(ngDevMode ? [{ debugName: "effectiveBars" }] : []));
126
+ });
127
127
  this.effectiveActive = computed(() => {
128
128
  if (this.controlled()) {
129
129
  return this.active() ?? false;
130
130
  }
131
131
  return this.waveformService.active();
132
- }, ...(ngDevMode ? [{ debugName: "effectiveActive" }] : []));
132
+ });
133
133
  this.barWidth = computed(() => {
134
134
  const count = this.barCount;
135
135
  return (this.width() - this.gap() * (count - 1)) / count;
136
- }, ...(ngDevMode ? [{ debugName: "barWidth" }] : []));
136
+ });
137
137
  effect(() => {
138
138
  if (!this.controlled()) {
139
139
  void this.waveformService.start(this.barCount, this.smoothing());
@@ -164,20 +164,20 @@ class AudioWaveformComponent {
164
164
  this.waveformService.stop();
165
165
  }
166
166
  }
167
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
168
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "20.3.18", type: AudioWaveformComponent, isStandalone: true, selector: "ui-audio-waveform", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, minScale: { classPropertyName: "minScale", publicName: "minScale", isSignal: true, isRequired: false, transformFunction: null }, smoothing: { classPropertyName: "smoothing", publicName: "smoothing", isSignal: true, isRequired: false, transformFunction: null }, bars: { classPropertyName: "bars", publicName: "bars", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"waveform\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.gap.px]=\"gap()\"\n role=\"img\"\n [attr.aria-label]=\"effectiveActive() ? 'Audio waveform active' : 'Audio waveform inactive'\"\n>\n @for (item of effectiveBars(); track $index) {\n <div\n class=\"waveform-bar\"\n [style.width.px]=\"barWidth()\"\n [style.height.px]=\"barHeight(barValue($index))\"\n [style.border-radius.px]=\"barRadius()\"\n [style.background-color]=\"barColor($index)\"\n ></div>\n }\n</div>\n", styles: [".waveform{display:inline-flex;align-items:center}.waveform-bar{flex-shrink:0;transition:height 80ms ease-out}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
167
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformComponent, deps: [], target: i0.ɵɵFactoryTarget.Component }); }
168
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.20", type: AudioWaveformComponent, isStandalone: true, selector: "ui-audio-waveform", inputs: { width: { classPropertyName: "width", publicName: "width", isSignal: true, isRequired: false, transformFunction: null }, height: { classPropertyName: "height", publicName: "height", isSignal: true, isRequired: false, transformFunction: null }, gap: { classPropertyName: "gap", publicName: "gap", isSignal: true, isRequired: false, transformFunction: null }, minScale: { classPropertyName: "minScale", publicName: "minScale", isSignal: true, isRequired: false, transformFunction: null }, smoothing: { classPropertyName: "smoothing", publicName: "smoothing", isSignal: true, isRequired: false, transformFunction: null }, bars: { classPropertyName: "bars", publicName: "bars", isSignal: true, isRequired: false, transformFunction: null }, active: { classPropertyName: "active", publicName: "active", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: "<div\n class=\"waveform\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.gap.px]=\"gap()\"\n role=\"img\"\n [attr.aria-label]=\"effectiveActive() ? 'Audio waveform active' : 'Audio waveform inactive'\"\n>\n @for (item of effectiveBars(); track $index) {\n <div\n class=\"waveform-bar\"\n [style.width.px]=\"barWidth()\"\n [style.height.px]=\"barHeight(barValue($index))\"\n [style.border-radius.px]=\"barRadius()\"\n [style.background-color]=\"barColor($index)\"\n ></div>\n }\n</div>\n", styles: [".waveform{display:inline-flex;align-items:center}.waveform-bar{flex-shrink:0;transition:height 80ms ease-out}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }
169
169
  }
170
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformComponent, decorators: [{
170
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformComponent, decorators: [{
171
171
  type: Component,
172
172
  args: [{ selector: 'ui-audio-waveform', changeDetection: ChangeDetectionStrategy.OnPush, imports: [], template: "<div\n class=\"waveform\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.gap.px]=\"gap()\"\n role=\"img\"\n [attr.aria-label]=\"effectiveActive() ? 'Audio waveform active' : 'Audio waveform inactive'\"\n>\n @for (item of effectiveBars(); track $index) {\n <div\n class=\"waveform-bar\"\n [style.width.px]=\"barWidth()\"\n [style.height.px]=\"barHeight(barValue($index))\"\n [style.border-radius.px]=\"barRadius()\"\n [style.background-color]=\"barColor($index)\"\n ></div>\n }\n</div>\n", styles: [".waveform{display:inline-flex;align-items:center}.waveform-bar{flex-shrink:0;transition:height 80ms ease-out}\n"] }]
173
- }], ctorParameters: () => [], propDecorators: { width: [{ type: i0.Input, args: [{ isSignal: true, alias: "width", required: false }] }], height: [{ type: i0.Input, args: [{ isSignal: true, alias: "height", required: false }] }], gap: [{ type: i0.Input, args: [{ isSignal: true, alias: "gap", required: false }] }], minScale: [{ type: i0.Input, args: [{ isSignal: true, alias: "minScale", required: false }] }], smoothing: [{ type: i0.Input, args: [{ isSignal: true, alias: "smoothing", required: false }] }], bars: [{ type: i0.Input, args: [{ isSignal: true, alias: "bars", required: false }] }], active: [{ type: i0.Input, args: [{ isSignal: true, alias: "active", required: false }] }] } });
173
+ }], ctorParameters: () => [] });
174
174
 
175
175
  class AudioWaveformModule {
176
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
177
- static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformModule, imports: [AudioWaveformComponent], exports: [AudioWaveformComponent] }); }
178
- static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformModule }); }
176
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
177
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformModule, imports: [AudioWaveformComponent], exports: [AudioWaveformComponent] }); }
178
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformModule }); }
179
179
  }
180
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.18", ngImport: i0, type: AudioWaveformModule, decorators: [{
180
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.20", ngImport: i0, type: AudioWaveformModule, decorators: [{
181
181
  type: NgModule,
182
182
  args: [{
183
183
  imports: [AudioWaveformComponent],
@@ -1 +1 @@
1
- {"version":3,"file":"testgorilla-tgo-ui-components-audio-waveform.mjs","sources":["../../../components/audio-waveform/audio-waveform.model.ts","../../../components/audio-waveform/audio-waveform.service.ts","../../../components/audio-waveform/audio-waveform.component.ts","../../../components/audio-waveform/audio-waveform.component.html","../../../components/audio-waveform/audio-waveform.module.ts","../../../components/audio-waveform/testgorilla-tgo-ui-components-audio-waveform.ts"],"sourcesContent":["export interface AudioWaveformConfig {\n barCount: number;\n smoothing: number;\n fftSize: number;\n}\n\nexport const DEFAULT_AUDIO_WAVEFORM_CONFIG: AudioWaveformConfig = {\n barCount: 5,\n smoothing: 0.55,\n fftSize: 256,\n};\n\n/** Per-bar colors for the 5-bar waveform (left to right) */\nexport const AUDIO_WAVEFORM_BAR_COLORS: string[] = ['#C065D0', '#A86FDA', '#9078E3', '#7882EC', '#6889F3'];\n","import { Injectable, OnDestroy, signal } from '@angular/core';\nimport { DEFAULT_AUDIO_WAVEFORM_CONFIG } from './audio-waveform.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AudioWaveformService implements OnDestroy {\n private ctx: AudioContext | null = null;\n private analyser: AnalyserNode | null = null;\n private source: MediaStreamAudioSourceNode | null = null;\n private stream: MediaStream | null = null;\n private raf: number | null = null;\n\n readonly bars = signal<number[]>([]);\n readonly active = signal<boolean>(false);\n\n async start(\n barCount = DEFAULT_AUDIO_WAVEFORM_CONFIG.barCount,\n smoothing = DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing\n ): Promise<void> {\n if (this.active()) return;\n\n try {\n this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n this.ctx = new AudioContext();\n this.analyser = this.ctx.createAnalyser();\n this.analyser.fftSize = DEFAULT_AUDIO_WAVEFORM_CONFIG.fftSize;\n this.analyser.smoothingTimeConstant = smoothing;\n this.source = this.ctx.createMediaStreamSource(this.stream);\n this.source.connect(this.analyser);\n this.active.set(true);\n\n const data = new Uint8Array(this.analyser.frequencyBinCount);\n // Focus on the lower ~60% of bins where speech energy concentrates\n const speechBinCount = Math.max(1, Math.floor(data.length * 0.6));\n\n const analyserRef = this.analyser;\n const tick = (): void => {\n analyserRef.getByteFrequencyData(data);\n\n // RMS (root mean square) of speech-range bins — represents perceived loudness,\n // unlike peak which saturates on any single spike\n let sumSq = 0;\n for (let i = 0; i < speechBinCount; i++) {\n const v = data[i] / 255;\n sumSq += v * v;\n }\n const rms = Math.sqrt(sumSq / speechBinCount);\n\n // Power curve keeps quiet→loud variation visible. Gain multiplier ensures\n // loud speech reaches full bar height. Clamped to [0, 1].\n const amplitude = Math.min(1, Math.pow(rms, 0.55) * 1.5);\n\n const values = this.createSymmetricBars(barCount, amplitude);\n this.bars.set(values);\n this.raf = requestAnimationFrame(tick);\n };\n tick();\n } catch (e) {\n console.error('[AudioWaveform] Mic access denied:', e);\n }\n }\n\n stop(): void {\n if (this.raf !== null) cancelAnimationFrame(this.raf);\n this.source?.disconnect();\n this.analyser?.disconnect();\n this.stream?.getTracks().forEach(t => t.stop());\n if (this.ctx && this.ctx.state !== 'closed') {\n void this.ctx.close();\n }\n this.ctx = null;\n this.analyser = null;\n this.source = null;\n this.stream = null;\n this.raf = null;\n this.active.set(false);\n this.bars.set([]);\n }\n\n ngOnDestroy(): void {\n this.stop();\n }\n\n /**\n * Creates a symmetric bar distribution where middle bars are highest.\n * Uses a bell-curve-like pattern centered at the middle bar.\n */\n private createSymmetricBars(barCount: number, amplitude: number): number[] {\n const center = (barCount - 1) / 2;\n const maxDistance = center;\n\n return Array.from({ length: barCount }, (_, i) => {\n const distance = Math.abs(i - center);\n // Weight decreases as distance from center increases\n // Using a quadratic falloff for smoother appearance\n const weight = 1 - (distance / maxDistance) * 0.65;\n return amplitude * weight;\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, OnDestroy, computed, effect, inject, input } from '@angular/core';\nimport { AudioWaveformService } from './audio-waveform.service';\nimport { DEFAULT_AUDIO_WAVEFORM_CONFIG, AUDIO_WAVEFORM_BAR_COLORS } from './audio-waveform.model';\n\n@Component({\n selector: 'ui-audio-waveform',\n templateUrl: './audio-waveform.component.html',\n styleUrls: ['./audio-waveform.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AudioWaveformComponent implements OnDestroy {\n private readonly waveformService = inject(AudioWaveformService);\n\n readonly barCount = DEFAULT_AUDIO_WAVEFORM_CONFIG.barCount;\n readonly width = input<number>(40);\n readonly height = input<number>(22);\n readonly gap = input<number>(3);\n readonly minScale = input<number>(0.08);\n readonly smoothing = input<number>(DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing);\n\n /**\n * When provided, the component operates in controlled mode —\n * it renders externally-supplied bar values instead of managing the mic itself.\n */\n readonly bars = input<number[] | null>(null);\n\n /** Mirror of `bars` for controlled mode; required when `bars` is set. */\n readonly active = input<boolean | null>(null);\n\n readonly controlled = computed(() => this.active() !== null);\n\n readonly effectiveBars = computed(() => {\n if (this.controlled()) {\n return this.bars() ?? [];\n }\n return this.waveformService.bars();\n });\n\n readonly effectiveActive = computed(() => {\n if (this.controlled()) {\n return this.active() ?? false;\n }\n return this.waveformService.active();\n });\n\n readonly barWidth = computed(() => {\n const count = this.barCount;\n return (this.width() - this.gap() * (count - 1)) / count;\n });\n\n constructor() {\n effect(() => {\n if (!this.controlled()) {\n void this.waveformService.start(this.barCount, this.smoothing());\n }\n });\n }\n\n barHeight(value: number): number {\n const h = this.height();\n const min = this.minScale();\n return h * (min + value * (1 - min));\n }\n\n barRadius(): number {\n return this.barWidth() / 2;\n }\n\n barValue(index: number): number {\n const bars = this.effectiveBars();\n return bars[index] ?? 0;\n }\n\n barColor(index: number): string {\n return AUDIO_WAVEFORM_BAR_COLORS[index] ?? AUDIO_WAVEFORM_BAR_COLORS[0];\n }\n\n /** Returns the x-offset for a bar so the shared CSS gradient aligns correctly. */\n barOffset(index: number): number {\n return (this.barWidth() + this.gap()) * index;\n }\n\n ngOnDestroy(): void {\n if (!this.controlled()) {\n this.waveformService.stop();\n }\n }\n}\n","<div\n class=\"waveform\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.gap.px]=\"gap()\"\n role=\"img\"\n [attr.aria-label]=\"effectiveActive() ? 'Audio waveform active' : 'Audio waveform inactive'\"\n>\n @for (item of effectiveBars(); track $index) {\n <div\n class=\"waveform-bar\"\n [style.width.px]=\"barWidth()\"\n [style.height.px]=\"barHeight(barValue($index))\"\n [style.border-radius.px]=\"barRadius()\"\n [style.background-color]=\"barColor($index)\"\n ></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { AudioWaveformComponent } from './audio-waveform.component';\n\n@NgModule({\n imports: [AudioWaveformComponent],\n exports: [AudioWaveformComponent],\n})\nexport class AudioWaveformModule {}\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":"testgorilla-tgo-ui-components-audio-waveform.mjs","sources":["../../../components/audio-waveform/audio-waveform.model.ts","../../../components/audio-waveform/audio-waveform.service.ts","../../../components/audio-waveform/audio-waveform.component.ts","../../../components/audio-waveform/audio-waveform.component.html","../../../components/audio-waveform/audio-waveform.module.ts","../../../components/audio-waveform/testgorilla-tgo-ui-components-audio-waveform.ts"],"sourcesContent":["export interface AudioWaveformConfig {\n barCount: number;\n smoothing: number;\n fftSize: number;\n}\n\nexport const DEFAULT_AUDIO_WAVEFORM_CONFIG: AudioWaveformConfig = {\n barCount: 5,\n smoothing: 0.55,\n fftSize: 256,\n};\n\n/** Per-bar colors for the 5-bar waveform (left to right) */\nexport const AUDIO_WAVEFORM_BAR_COLORS: string[] = ['#C065D0', '#A86FDA', '#9078E3', '#7882EC', '#6889F3'];\n","import { Injectable, OnDestroy, signal } from '@angular/core';\nimport { DEFAULT_AUDIO_WAVEFORM_CONFIG } from './audio-waveform.model';\n\n@Injectable({ providedIn: 'root' })\nexport class AudioWaveformService implements OnDestroy {\n private ctx: AudioContext | null = null;\n private analyser: AnalyserNode | null = null;\n private source: MediaStreamAudioSourceNode | null = null;\n private stream: MediaStream | null = null;\n private raf: number | null = null;\n\n readonly bars = signal<number[]>([]);\n readonly active = signal<boolean>(false);\n\n async start(\n barCount = DEFAULT_AUDIO_WAVEFORM_CONFIG.barCount,\n smoothing = DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing\n ): Promise<void> {\n if (this.active()) return;\n\n try {\n this.stream = await navigator.mediaDevices.getUserMedia({ audio: true });\n this.ctx = new AudioContext();\n this.analyser = this.ctx.createAnalyser();\n this.analyser.fftSize = DEFAULT_AUDIO_WAVEFORM_CONFIG.fftSize;\n this.analyser.smoothingTimeConstant = smoothing;\n this.source = this.ctx.createMediaStreamSource(this.stream);\n this.source.connect(this.analyser);\n this.active.set(true);\n\n const data = new Uint8Array(this.analyser.frequencyBinCount);\n // Focus on the lower ~60% of bins where speech energy concentrates\n const speechBinCount = Math.max(1, Math.floor(data.length * 0.6));\n\n const analyserRef = this.analyser;\n const tick = (): void => {\n analyserRef.getByteFrequencyData(data);\n\n // RMS (root mean square) of speech-range bins — represents perceived loudness,\n // unlike peak which saturates on any single spike\n let sumSq = 0;\n for (let i = 0; i < speechBinCount; i++) {\n const v = data[i] / 255;\n sumSq += v * v;\n }\n const rms = Math.sqrt(sumSq / speechBinCount);\n\n // Power curve keeps quiet→loud variation visible. Gain multiplier ensures\n // loud speech reaches full bar height. Clamped to [0, 1].\n const amplitude = Math.min(1, Math.pow(rms, 0.55) * 1.5);\n\n const values = this.createSymmetricBars(barCount, amplitude);\n this.bars.set(values);\n this.raf = requestAnimationFrame(tick);\n };\n tick();\n } catch (e) {\n console.error('[AudioWaveform] Mic access denied:', e);\n }\n }\n\n stop(): void {\n if (this.raf !== null) cancelAnimationFrame(this.raf);\n this.source?.disconnect();\n this.analyser?.disconnect();\n this.stream?.getTracks().forEach(t => t.stop());\n if (this.ctx && this.ctx.state !== 'closed') {\n void this.ctx.close();\n }\n this.ctx = null;\n this.analyser = null;\n this.source = null;\n this.stream = null;\n this.raf = null;\n this.active.set(false);\n this.bars.set([]);\n }\n\n ngOnDestroy(): void {\n this.stop();\n }\n\n /**\n * Creates a symmetric bar distribution where middle bars are highest.\n * Uses a bell-curve-like pattern centered at the middle bar.\n */\n private createSymmetricBars(barCount: number, amplitude: number): number[] {\n const center = (barCount - 1) / 2;\n const maxDistance = center;\n\n return Array.from({ length: barCount }, (_, i) => {\n const distance = Math.abs(i - center);\n // Weight decreases as distance from center increases\n // Using a quadratic falloff for smoother appearance\n const weight = 1 - (distance / maxDistance) * 0.65;\n return amplitude * weight;\n });\n }\n}\n","import { Component, ChangeDetectionStrategy, OnDestroy, computed, effect, inject, input } from '@angular/core';\nimport { AudioWaveformService } from './audio-waveform.service';\nimport { DEFAULT_AUDIO_WAVEFORM_CONFIG, AUDIO_WAVEFORM_BAR_COLORS } from './audio-waveform.model';\n\n@Component({\n selector: 'ui-audio-waveform',\n templateUrl: './audio-waveform.component.html',\n styleUrls: ['./audio-waveform.component.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n imports: [],\n})\nexport class AudioWaveformComponent implements OnDestroy {\n private readonly waveformService = inject(AudioWaveformService);\n\n readonly barCount = DEFAULT_AUDIO_WAVEFORM_CONFIG.barCount;\n readonly width = input<number>(40);\n readonly height = input<number>(22);\n readonly gap = input<number>(3);\n readonly minScale = input<number>(0.08);\n readonly smoothing = input<number>(DEFAULT_AUDIO_WAVEFORM_CONFIG.smoothing);\n\n /**\n * When provided, the component operates in controlled mode —\n * it renders externally-supplied bar values instead of managing the mic itself.\n */\n readonly bars = input<number[] | null>(null);\n\n /** Mirror of `bars` for controlled mode; required when `bars` is set. */\n readonly active = input<boolean | null>(null);\n\n readonly controlled = computed(() => this.active() !== null);\n\n readonly effectiveBars = computed(() => {\n if (this.controlled()) {\n return this.bars() ?? [];\n }\n return this.waveformService.bars();\n });\n\n readonly effectiveActive = computed(() => {\n if (this.controlled()) {\n return this.active() ?? false;\n }\n return this.waveformService.active();\n });\n\n readonly barWidth = computed(() => {\n const count = this.barCount;\n return (this.width() - this.gap() * (count - 1)) / count;\n });\n\n constructor() {\n effect(() => {\n if (!this.controlled()) {\n void this.waveformService.start(this.barCount, this.smoothing());\n }\n });\n }\n\n barHeight(value: number): number {\n const h = this.height();\n const min = this.minScale();\n return h * (min + value * (1 - min));\n }\n\n barRadius(): number {\n return this.barWidth() / 2;\n }\n\n barValue(index: number): number {\n const bars = this.effectiveBars();\n return bars[index] ?? 0;\n }\n\n barColor(index: number): string {\n return AUDIO_WAVEFORM_BAR_COLORS[index] ?? AUDIO_WAVEFORM_BAR_COLORS[0];\n }\n\n /** Returns the x-offset for a bar so the shared CSS gradient aligns correctly. */\n barOffset(index: number): number {\n return (this.barWidth() + this.gap()) * index;\n }\n\n ngOnDestroy(): void {\n if (!this.controlled()) {\n this.waveformService.stop();\n }\n }\n}\n","<div\n class=\"waveform\"\n [style.width.px]=\"width()\"\n [style.height.px]=\"height()\"\n [style.gap.px]=\"gap()\"\n role=\"img\"\n [attr.aria-label]=\"effectiveActive() ? 'Audio waveform active' : 'Audio waveform inactive'\"\n>\n @for (item of effectiveBars(); track $index) {\n <div\n class=\"waveform-bar\"\n [style.width.px]=\"barWidth()\"\n [style.height.px]=\"barHeight(barValue($index))\"\n [style.border-radius.px]=\"barRadius()\"\n [style.background-color]=\"barColor($index)\"\n ></div>\n }\n</div>\n","import { NgModule } from '@angular/core';\nimport { AudioWaveformComponent } from './audio-waveform.component';\n\n@NgModule({\n imports: [AudioWaveformComponent],\n exports: [AudioWaveformComponent],\n})\nexport class AudioWaveformModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}