@malva-ui/core 0.1.13 → 0.1.14

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 (1618) hide show
  1. package/AGENTS.md +4 -1
  2. package/README.md +15 -0
  3. package/docs/ai/avatar.md +2 -0
  4. package/docs/ai/breadcrumb.md +67 -7
  5. package/docs/ai/button.md +74 -19
  6. package/docs/ai/card.md +8 -6
  7. package/docs/ai/chat.md +59 -45
  8. package/docs/ai/checkbox.md +12 -0
  9. package/docs/ai/combobox.md +18 -2
  10. package/docs/ai/copy-to-clipboard.md +1 -1
  11. package/docs/ai/core.md +15 -0
  12. package/docs/ai/data-table.md +89 -54
  13. package/docs/ai/dialog.md +76 -67
  14. package/docs/ai/drawer.md +15 -12
  15. package/docs/ai/dropdown.md +24 -19
  16. package/docs/ai/empty-state.md +3 -3
  17. package/docs/ai/filter.md +24 -5
  18. package/docs/ai/form-utils.md +160 -5
  19. package/docs/ai/icon-toggle.md +160 -0
  20. package/docs/ai/input.md +30 -0
  21. package/docs/ai/layout.md +23 -0
  22. package/docs/ai/list.md +10 -6
  23. package/docs/ai/menu.md +75 -1
  24. package/docs/ai/page.md +220 -60
  25. package/docs/ai/radio.md +9 -0
  26. package/docs/ai/scrollbar.md +30 -8
  27. package/docs/ai/segmented.md +35 -35
  28. package/docs/ai/select.md +30 -5
  29. package/docs/ai/sidebar.md +45 -27
  30. package/docs/ai/switch.md +114 -19
  31. package/docs/ai/table.md +69 -0
  32. package/docs/ai/tabs.md +2 -1
  33. package/docs/ai/tile.md +311 -85
  34. package/docs/ai/timeline.md +63 -39
  35. package/docs/ai/tokenizer.md +21 -5
  36. package/docs/ai/tooltip.md +5 -5
  37. package/docs/ai/view-variant.md +75 -0
  38. package/fesm2022/malva-ui-core-accordion.mjs +167 -0
  39. package/fesm2022/malva-ui-core-accordion.mjs.map +1 -0
  40. package/fesm2022/malva-ui-core-action-bar.mjs +111 -0
  41. package/fesm2022/malva-ui-core-action-bar.mjs.map +1 -0
  42. package/fesm2022/malva-ui-core-alert.mjs +173 -0
  43. package/fesm2022/malva-ui-core-alert.mjs.map +1 -0
  44. package/fesm2022/malva-ui-core-autocomplete.mjs +775 -0
  45. package/fesm2022/malva-ui-core-autocomplete.mjs.map +1 -0
  46. package/fesm2022/malva-ui-core-avatar-group.mjs +224 -0
  47. package/fesm2022/malva-ui-core-avatar-group.mjs.map +1 -0
  48. package/fesm2022/malva-ui-core-avatar.mjs +247 -0
  49. package/fesm2022/malva-ui-core-avatar.mjs.map +1 -0
  50. package/fesm2022/malva-ui-core-badge.mjs +122 -0
  51. package/fesm2022/malva-ui-core-badge.mjs.map +1 -0
  52. package/fesm2022/malva-ui-core-bottom-nav.mjs +161 -0
  53. package/fesm2022/malva-ui-core-bottom-nav.mjs.map +1 -0
  54. package/fesm2022/malva-ui-core-breadcrumb.mjs +494 -0
  55. package/fesm2022/malva-ui-core-breadcrumb.mjs.map +1 -0
  56. package/fesm2022/malva-ui-core-button.mjs +406 -0
  57. package/fesm2022/malva-ui-core-button.mjs.map +1 -0
  58. package/fesm2022/malva-ui-core-calendar.mjs +938 -0
  59. package/fesm2022/malva-ui-core-calendar.mjs.map +1 -0
  60. package/fesm2022/malva-ui-core-card.mjs +164 -0
  61. package/fesm2022/malva-ui-core-card.mjs.map +1 -0
  62. package/fesm2022/malva-ui-core-chat.mjs +825 -0
  63. package/fesm2022/malva-ui-core-chat.mjs.map +1 -0
  64. package/fesm2022/malva-ui-core-checkbox.mjs +272 -0
  65. package/fesm2022/malva-ui-core-checkbox.mjs.map +1 -0
  66. package/fesm2022/malva-ui-core-chip.mjs +176 -0
  67. package/fesm2022/malva-ui-core-chip.mjs.map +1 -0
  68. package/fesm2022/malva-ui-core-color-picker.mjs +1204 -0
  69. package/fesm2022/malva-ui-core-color-picker.mjs.map +1 -0
  70. package/fesm2022/malva-ui-core-combobox.mjs +945 -0
  71. package/fesm2022/malva-ui-core-combobox.mjs.map +1 -0
  72. package/fesm2022/malva-ui-core-copy-to-clipboard.mjs +255 -0
  73. package/fesm2022/malva-ui-core-copy-to-clipboard.mjs.map +1 -0
  74. package/fesm2022/malva-ui-core-data-table.mjs +2696 -0
  75. package/fesm2022/malva-ui-core-data-table.mjs.map +1 -0
  76. package/fesm2022/malva-ui-core-date-range-picker.mjs +276 -0
  77. package/fesm2022/malva-ui-core-date-range-picker.mjs.map +1 -0
  78. package/fesm2022/malva-ui-core-day-picker.mjs +131 -0
  79. package/fesm2022/malva-ui-core-day-picker.mjs.map +1 -0
  80. package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs +94 -0
  81. package/fesm2022/malva-ui-core-dialog-routable-dialog-CvjXMtlD.mjs.map +1 -0
  82. package/fesm2022/malva-ui-core-dialog.mjs +1223 -0
  83. package/fesm2022/malva-ui-core-dialog.mjs.map +1 -0
  84. package/fesm2022/malva-ui-core-divider.mjs +80 -0
  85. package/fesm2022/malva-ui-core-divider.mjs.map +1 -0
  86. package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs +94 -0
  87. package/fesm2022/malva-ui-core-drawer-routable-drawer-qUk6Etnx.mjs.map +1 -0
  88. package/fesm2022/malva-ui-core-drawer.mjs +814 -0
  89. package/fesm2022/malva-ui-core-drawer.mjs.map +1 -0
  90. package/fesm2022/malva-ui-core-dropdown.mjs +994 -0
  91. package/fesm2022/malva-ui-core-dropdown.mjs.map +1 -0
  92. package/fesm2022/malva-ui-core-empty-state.mjs +50 -0
  93. package/fesm2022/malva-ui-core-empty-state.mjs.map +1 -0
  94. package/fesm2022/malva-ui-core-expand.mjs +130 -0
  95. package/fesm2022/malva-ui-core-expand.mjs.map +1 -0
  96. package/fesm2022/malva-ui-core-file-upload.mjs +451 -0
  97. package/fesm2022/malva-ui-core-file-upload.mjs.map +1 -0
  98. package/fesm2022/malva-ui-core-filter.mjs +1627 -0
  99. package/fesm2022/malva-ui-core-filter.mjs.map +1 -0
  100. package/fesm2022/malva-ui-core-form-utils-testing.mjs +39 -0
  101. package/fesm2022/malva-ui-core-form-utils-testing.mjs.map +1 -0
  102. package/fesm2022/malva-ui-core-form-utils.mjs +977 -0
  103. package/fesm2022/malva-ui-core-form-utils.mjs.map +1 -0
  104. package/fesm2022/malva-ui-core-form.mjs +283 -0
  105. package/fesm2022/malva-ui-core-form.mjs.map +1 -0
  106. package/fesm2022/malva-ui-core-icon-toggle.mjs +120 -0
  107. package/fesm2022/malva-ui-core-icon-toggle.mjs.map +1 -0
  108. package/fesm2022/malva-ui-core-input.mjs +375 -0
  109. package/fesm2022/malva-ui-core-input.mjs.map +1 -0
  110. package/fesm2022/malva-ui-core-kbd.mjs +131 -0
  111. package/fesm2022/malva-ui-core-kbd.mjs.map +1 -0
  112. package/fesm2022/malva-ui-core-layout.mjs +212 -0
  113. package/fesm2022/malva-ui-core-layout.mjs.map +1 -0
  114. package/fesm2022/malva-ui-core-link.mjs +89 -0
  115. package/fesm2022/malva-ui-core-link.mjs.map +1 -0
  116. package/fesm2022/malva-ui-core-list.mjs +413 -0
  117. package/fesm2022/malva-ui-core-list.mjs.map +1 -0
  118. package/fesm2022/malva-ui-core-loader.mjs +141 -0
  119. package/fesm2022/malva-ui-core-loader.mjs.map +1 -0
  120. package/fesm2022/malva-ui-core-menu.mjs +2540 -0
  121. package/fesm2022/malva-ui-core-menu.mjs.map +1 -0
  122. package/fesm2022/malva-ui-core-notification.mjs +201 -0
  123. package/fesm2022/malva-ui-core-notification.mjs.map +1 -0
  124. package/fesm2022/malva-ui-core-number-input.mjs +404 -0
  125. package/fesm2022/malva-ui-core-number-input.mjs.map +1 -0
  126. package/fesm2022/malva-ui-core-page.mjs +1898 -0
  127. package/fesm2022/malva-ui-core-page.mjs.map +1 -0
  128. package/fesm2022/malva-ui-core-pagination.mjs +458 -0
  129. package/fesm2022/malva-ui-core-pagination.mjs.map +1 -0
  130. package/fesm2022/malva-ui-core-pin-input.mjs +405 -0
  131. package/fesm2022/malva-ui-core-pin-input.mjs.map +1 -0
  132. package/fesm2022/malva-ui-core-popup.mjs +1488 -0
  133. package/fesm2022/malva-ui-core-popup.mjs.map +1 -0
  134. package/fesm2022/malva-ui-core-progress.mjs +109 -0
  135. package/fesm2022/malva-ui-core-progress.mjs.map +1 -0
  136. package/fesm2022/malva-ui-core-radio.mjs +317 -0
  137. package/fesm2022/malva-ui-core-radio.mjs.map +1 -0
  138. package/fesm2022/malva-ui-core-rating.mjs +236 -0
  139. package/fesm2022/malva-ui-core-rating.mjs.map +1 -0
  140. package/fesm2022/malva-ui-core-scrollbar.mjs +430 -0
  141. package/fesm2022/malva-ui-core-scrollbar.mjs.map +1 -0
  142. package/fesm2022/malva-ui-core-search-field.mjs +578 -0
  143. package/fesm2022/malva-ui-core-search-field.mjs.map +1 -0
  144. package/fesm2022/malva-ui-core-segmented.mjs +458 -0
  145. package/fesm2022/malva-ui-core-segmented.mjs.map +1 -0
  146. package/fesm2022/malva-ui-core-select.mjs +855 -0
  147. package/fesm2022/malva-ui-core-select.mjs.map +1 -0
  148. package/fesm2022/malva-ui-core-sidebar.mjs +1504 -0
  149. package/fesm2022/malva-ui-core-sidebar.mjs.map +1 -0
  150. package/fesm2022/malva-ui-core-skeleton.mjs +85 -0
  151. package/fesm2022/malva-ui-core-skeleton.mjs.map +1 -0
  152. package/fesm2022/malva-ui-core-slider.mjs +514 -0
  153. package/fesm2022/malva-ui-core-slider.mjs.map +1 -0
  154. package/fesm2022/malva-ui-core-split-pane.mjs +359 -0
  155. package/fesm2022/malva-ui-core-split-pane.mjs.map +1 -0
  156. package/fesm2022/malva-ui-core-status-indicator.mjs +78 -0
  157. package/fesm2022/malva-ui-core-status-indicator.mjs.map +1 -0
  158. package/fesm2022/malva-ui-core-stepper.mjs +332 -0
  159. package/fesm2022/malva-ui-core-stepper.mjs.map +1 -0
  160. package/fesm2022/malva-ui-core-switch.mjs +272 -0
  161. package/fesm2022/malva-ui-core-switch.mjs.map +1 -0
  162. package/fesm2022/malva-ui-core-table.mjs +79 -0
  163. package/fesm2022/malva-ui-core-table.mjs.map +1 -0
  164. package/fesm2022/malva-ui-core-tabs.mjs +794 -0
  165. package/fesm2022/malva-ui-core-tabs.mjs.map +1 -0
  166. package/fesm2022/malva-ui-core-textarea.mjs +201 -0
  167. package/fesm2022/malva-ui-core-textarea.mjs.map +1 -0
  168. package/fesm2022/malva-ui-core-tile.mjs +1404 -0
  169. package/fesm2022/malva-ui-core-tile.mjs.map +1 -0
  170. package/fesm2022/malva-ui-core-time-picker.mjs +533 -0
  171. package/fesm2022/malva-ui-core-time-picker.mjs.map +1 -0
  172. package/fesm2022/malva-ui-core-timeline.mjs +216 -0
  173. package/fesm2022/malva-ui-core-timeline.mjs.map +1 -0
  174. package/fesm2022/malva-ui-core-title.mjs +178 -0
  175. package/fesm2022/malva-ui-core-title.mjs.map +1 -0
  176. package/fesm2022/malva-ui-core-toast.mjs +749 -0
  177. package/fesm2022/malva-ui-core-toast.mjs.map +1 -0
  178. package/fesm2022/malva-ui-core-tokenizer.mjs +502 -0
  179. package/fesm2022/malva-ui-core-tokenizer.mjs.map +1 -0
  180. package/fesm2022/malva-ui-core-toolbar.mjs +141 -0
  181. package/fesm2022/malva-ui-core-toolbar.mjs.map +1 -0
  182. package/fesm2022/malva-ui-core-tooltip.mjs +432 -0
  183. package/fesm2022/malva-ui-core-tooltip.mjs.map +1 -0
  184. package/fesm2022/malva-ui-core-tree.mjs +505 -0
  185. package/fesm2022/malva-ui-core-tree.mjs.map +1 -0
  186. package/fesm2022/malva-ui-core-view-variant.mjs +292 -0
  187. package/fesm2022/malva-ui-core-view-variant.mjs.map +1 -0
  188. package/fesm2022/malva-ui-core.mjs +77 -0
  189. package/fesm2022/malva-ui-core.mjs.map +1 -0
  190. package/package.json +179 -156
  191. package/styles/malva-ui.css +253 -220
  192. package/styles/tokens.md +174 -173
  193. package/table/README.md +46 -0
  194. package/types/malva-ui-core-accordion.d.ts +121 -0
  195. package/types/malva-ui-core-action-bar.d.ts +82 -0
  196. package/types/malva-ui-core-alert.d.ts +131 -0
  197. package/types/malva-ui-core-autocomplete.d.ts +301 -0
  198. package/types/malva-ui-core-avatar-group.d.ts +119 -0
  199. package/types/malva-ui-core-avatar.d.ts +156 -0
  200. package/types/malva-ui-core-badge.d.ts +97 -0
  201. package/types/malva-ui-core-bottom-nav.d.ts +104 -0
  202. package/types/malva-ui-core-breadcrumb.d.ts +308 -0
  203. package/types/malva-ui-core-button.d.ts +194 -0
  204. package/types/malva-ui-core-calendar.d.ts +339 -0
  205. package/types/malva-ui-core-card.d.ts +88 -0
  206. package/types/malva-ui-core-chat.d.ts +375 -0
  207. package/types/malva-ui-core-checkbox.d.ts +158 -0
  208. package/types/malva-ui-core-chip.d.ts +128 -0
  209. package/types/malva-ui-core-color-picker.d.ts +442 -0
  210. package/types/malva-ui-core-combobox.d.ts +419 -0
  211. package/types/malva-ui-core-copy-to-clipboard.d.ts +148 -0
  212. package/types/malva-ui-core-data-table.d.ts +1074 -0
  213. package/types/malva-ui-core-date-range-picker.d.ts +149 -0
  214. package/types/malva-ui-core-day-picker.d.ts +55 -0
  215. package/types/malva-ui-core-dialog.d.ts +597 -0
  216. package/types/malva-ui-core-divider.d.ts +68 -0
  217. package/types/malva-ui-core-drawer.d.ts +333 -0
  218. package/types/malva-ui-core-dropdown.d.ts +592 -0
  219. package/types/malva-ui-core-empty-state.d.ts +37 -0
  220. package/types/malva-ui-core-expand.d.ts +102 -0
  221. package/types/malva-ui-core-file-upload.d.ts +267 -0
  222. package/types/malva-ui-core-filter.d.ts +552 -0
  223. package/types/malva-ui-core-form-utils-testing.d.ts +50 -0
  224. package/types/malva-ui-core-form-utils.d.ts +579 -0
  225. package/types/malva-ui-core-form.d.ts +176 -0
  226. package/types/malva-ui-core-icon-toggle.d.ts +80 -0
  227. package/types/malva-ui-core-input.d.ts +262 -0
  228. package/types/malva-ui-core-kbd.d.ts +56 -0
  229. package/types/malva-ui-core-layout.d.ts +70 -0
  230. package/types/malva-ui-core-link.d.ts +28 -0
  231. package/types/malva-ui-core-list.d.ts +252 -0
  232. package/types/malva-ui-core-loader.d.ts +89 -0
  233. package/types/malva-ui-core-menu.d.ts +954 -0
  234. package/types/malva-ui-core-notification.d.ts +122 -0
  235. package/types/malva-ui-core-number-input.d.ts +167 -0
  236. package/types/malva-ui-core-page.d.ts +799 -0
  237. package/types/malva-ui-core-pagination.d.ts +261 -0
  238. package/types/malva-ui-core-pin-input.d.ts +203 -0
  239. package/types/malva-ui-core-popup.d.ts +834 -0
  240. package/types/malva-ui-core-progress.d.ts +73 -0
  241. package/types/malva-ui-core-radio.d.ts +130 -0
  242. package/types/malva-ui-core-rating.d.ts +115 -0
  243. package/types/malva-ui-core-scrollbar.d.ts +203 -0
  244. package/types/malva-ui-core-search-field.d.ts +408 -0
  245. package/types/malva-ui-core-segmented.d.ts +206 -0
  246. package/types/malva-ui-core-select.d.ts +456 -0
  247. package/types/malva-ui-core-sidebar.d.ts +698 -0
  248. package/types/malva-ui-core-skeleton.d.ts +64 -0
  249. package/types/malva-ui-core-slider.d.ts +219 -0
  250. package/types/malva-ui-core-split-pane.d.ts +149 -0
  251. package/types/malva-ui-core-status-indicator.d.ts +65 -0
  252. package/types/malva-ui-core-stepper.d.ts +168 -0
  253. package/types/malva-ui-core-switch.d.ts +146 -0
  254. package/types/malva-ui-core-table.d.ts +37 -0
  255. package/types/malva-ui-core-tabs.d.ts +339 -0
  256. package/types/malva-ui-core-textarea.d.ts +79 -0
  257. package/types/malva-ui-core-tile.d.ts +373 -0
  258. package/types/malva-ui-core-time-picker.d.ts +141 -0
  259. package/types/malva-ui-core-timeline.d.ts +188 -0
  260. package/types/malva-ui-core-title.d.ts +66 -0
  261. package/types/malva-ui-core-toast.d.ts +432 -0
  262. package/types/malva-ui-core-tokenizer.d.ts +217 -0
  263. package/types/malva-ui-core-toolbar.d.ts +91 -0
  264. package/types/malva-ui-core-tooltip.d.ts +200 -0
  265. package/types/malva-ui-core-tree.d.ts +289 -0
  266. package/types/malva-ui-core-view-variant.d.ts +207 -0
  267. package/types/malva-ui-core.d.ts +72 -0
  268. package/view-variant/README.md +3 -0
  269. package/accordion/index.d.ts +0 -3
  270. package/accordion/lib/accordion/accordion.d.ts +0 -47
  271. package/accordion/lib/accordion-item/accordion-header.d.ts +0 -22
  272. package/accordion/lib/accordion-item/accordion-item.d.ts +0 -49
  273. package/accordion/malva-ui-core-accordion.d.ts +0 -5
  274. package/action-bar/index.d.ts +0 -4
  275. package/action-bar/lib/action-bar/action-bar.d.ts +0 -59
  276. package/action-bar/lib/action-bar/components/action-bar-actions.d.ts +0 -9
  277. package/action-bar/lib/action-bar/components/action-bar-logo.d.ts +0 -5
  278. package/action-bar/lib/action-bar/components/action-bar-spacer.d.ts +0 -5
  279. package/action-bar/malva-ui-core-action-bar.d.ts +0 -5
  280. package/alert/index.d.ts +0 -2
  281. package/alert/lib/alert/alert.d.ts +0 -84
  282. package/alert/lib/alert/alert.directives.d.ts +0 -44
  283. package/alert/malva-ui-core-alert.d.ts +0 -5
  284. package/autocomplete/index.d.ts +0 -1
  285. package/autocomplete/lib/autocomplete/autocomplete.d.ts +0 -296
  286. package/autocomplete/malva-ui-core-autocomplete.d.ts +0 -5
  287. package/avatar/index.d.ts +0 -2
  288. package/avatar/lib/avatar/avatar.d.ts +0 -125
  289. package/avatar/lib/color-from-text.pipe.d.ts +0 -21
  290. package/avatar/malva-ui-core-avatar.d.ts +0 -5
  291. package/avatar-group/index.d.ts +0 -1
  292. package/avatar-group/lib/avatar-group/avatar-group.d.ts +0 -115
  293. package/avatar-group/malva-ui-core-avatar-group.d.ts +0 -5
  294. package/badge/index.d.ts +0 -2
  295. package/badge/lib/badge/badge.d.ts +0 -59
  296. package/badge/lib/badge-icon.d.ts +0 -35
  297. package/badge/malva-ui-core-badge.d.ts +0 -5
  298. package/bottom-nav/index.d.ts +0 -1
  299. package/bottom-nav/lib/bottom-nav/bottom-nav.d.ts +0 -99
  300. package/bottom-nav/malva-ui-core-bottom-nav.d.ts +0 -5
  301. package/breadcrumb/index.d.ts +0 -5
  302. package/breadcrumb/lib/breadcrumb/breadcrumb-item-host.d.ts +0 -32
  303. package/breadcrumb/lib/breadcrumb/breadcrumb-item.d.ts +0 -41
  304. package/breadcrumb/lib/breadcrumb/breadcrumb-separator.d.ts +0 -31
  305. package/breadcrumb/lib/breadcrumb/breadcrumb.d.ts +0 -151
  306. package/breadcrumb/lib/breadcrumb/breadcrumb.types.d.ts +0 -26
  307. package/breadcrumb/malva-ui-core-breadcrumb.d.ts +0 -5
  308. package/button/index.d.ts +0 -7
  309. package/button/lib/button/button.d.ts +0 -61
  310. package/button/lib/button-close/button-close.d.ts +0 -24
  311. package/button/lib/button-group/button-group.d.ts +0 -21
  312. package/button/lib/button-split/button-split.d.ts +0 -21
  313. package/button/lib/button-toggle/button-toggle.d.ts +0 -33
  314. package/button/lib/button-variant.token.d.ts +0 -13
  315. package/button/lib/button.directives.d.ts +0 -14
  316. package/button/lib/button.types.d.ts +0 -8
  317. package/button/malva-ui-core-button.d.ts +0 -5
  318. package/calendar/index.d.ts +0 -3
  319. package/calendar/lib/calendar/calendar.d.ts +0 -182
  320. package/calendar/lib/date-provider/date-adapter.d.ts +0 -92
  321. package/calendar/lib/date-provider/native-date-adapter.d.ts +0 -60
  322. package/calendar/malva-ui-core-calendar.d.ts +0 -5
  323. package/card/index.d.ts +0 -5
  324. package/card/lib/card/card.d.ts +0 -43
  325. package/card/lib/card-actions-def.d.ts +0 -10
  326. package/card/lib/card-footer-def.d.ts +0 -13
  327. package/card/lib/card-header-def.d.ts +0 -10
  328. package/card/lib/card-subheader-def.d.ts +0 -16
  329. package/card/malva-ui-core-card.d.ts +0 -5
  330. package/chat/index.d.ts +0 -9
  331. package/chat/lib/chat/chat.d.ts +0 -133
  332. package/chat/lib/chat-audio/chat-audio.d.ts +0 -51
  333. package/chat/lib/chat-audio/chat-audio.service.d.ts +0 -21
  334. package/chat/lib/chat-date/chat-date.d.ts +0 -16
  335. package/chat/lib/chat-format.d.ts +0 -5
  336. package/chat/lib/chat-media-grid/chat-media-grid.d.ts +0 -32
  337. package/chat/lib/chat-message/chat-message.d.ts +0 -45
  338. package/chat/lib/chat-render-list.d.ts +0 -16
  339. package/chat/lib/chat-tokens.d.ts +0 -25
  340. package/chat/lib/chat-typing/chat-typing.d.ts +0 -16
  341. package/chat/lib/chat.types.d.ts +0 -80
  342. package/chat/lib/defs/chat-author-def.d.ts +0 -30
  343. package/chat/lib/defs/chat-date-def.d.ts +0 -22
  344. package/chat/lib/defs/chat-message-def.d.ts +0 -23
  345. package/chat/malva-ui-core-chat.d.ts +0 -5
  346. package/checkbox/index.d.ts +0 -3
  347. package/checkbox/lib/checkbox/checkbox.d.ts +0 -129
  348. package/checkbox/lib/checkbox-group/checkbox-group.d.ts +0 -24
  349. package/checkbox/lib/checkbox-group-token.d.ts +0 -6
  350. package/checkbox/malva-ui-core-checkbox.d.ts +0 -5
  351. package/chip/index.d.ts +0 -2
  352. package/chip/lib/chip/chip.d.ts +0 -107
  353. package/chip/lib/chip/chip.directives.d.ts +0 -18
  354. package/chip/malva-ui-core-chip.d.ts +0 -5
  355. package/color-picker/index.d.ts +0 -3
  356. package/color-picker/lib/color-picker/color-picker.d.ts +0 -188
  357. package/color-picker/lib/color-picker-popup/color-picker-popup.d.ts +0 -151
  358. package/color-picker/lib/color-utils/color-utils.d.ts +0 -102
  359. package/color-picker/malva-ui-core-color-picker.d.ts +0 -5
  360. package/combobox/index.d.ts +0 -2
  361. package/combobox/lib/combobox/combobox.d.ts +0 -400
  362. package/combobox/lib/combobox-template.directives.d.ts +0 -10
  363. package/combobox/malva-ui-core-combobox.d.ts +0 -5
  364. package/copy-to-clipboard/index.d.ts +0 -1
  365. package/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.d.ts +0 -130
  366. package/copy-to-clipboard/malva-ui-core-copy-to-clipboard.d.ts +0 -5
  367. package/data-table/index.d.ts +0 -8
  368. package/data-table/lib/data-source.d.ts +0 -5
  369. package/data-table/lib/data-table/data-table-layout.d.ts +0 -31
  370. package/data-table/lib/data-table/data-table.d.ts +0 -699
  371. package/data-table/lib/data-table/services/data-table-column-visibility.service.d.ts +0 -19
  372. package/data-table/lib/data-table/services/data-table-editing.service.d.ts +0 -37
  373. package/data-table/lib/data-table/services/data-table-pinning.service.d.ts +0 -37
  374. package/data-table/lib/data-table-cell.d.ts +0 -44
  375. package/data-table/lib/data-table-edit-cell.d.ts +0 -44
  376. package/data-table/lib/data-table-error.d.ts +0 -37
  377. package/data-table/lib/data-table-footer.d.ts +0 -26
  378. package/data-table/lib/data-table-no-data.d.ts +0 -19
  379. package/data-table/lib/filter-dropdown/filter-dropdown.d.ts +0 -54
  380. package/data-table/lib/types.d.ts +0 -134
  381. package/data-table/malva-ui-core-data-table.d.ts +0 -5
  382. package/date-range-picker/index.d.ts +0 -1
  383. package/date-range-picker/lib/date-range-picker/date-range-picker.d.ts +0 -145
  384. package/date-range-picker/malva-ui-core-date-range-picker.d.ts +0 -5
  385. package/day-picker/index.d.ts +0 -1
  386. package/day-picker/lib/day-picker/day-picker.d.ts +0 -51
  387. package/day-picker/malva-ui-core-day-picker.d.ts +0 -5
  388. package/dialog/index.d.ts +0 -11
  389. package/dialog/lib/confirm-dialog-options.d.ts +0 -41
  390. package/dialog/lib/confirm-dialog.d.ts +0 -52
  391. package/dialog/lib/dialog/dialog.d.ts +0 -22
  392. package/dialog/lib/dialog-body.d.ts +0 -9
  393. package/dialog/lib/dialog-close.d.ts +0 -27
  394. package/dialog/lib/dialog-config.d.ts +0 -112
  395. package/dialog/lib/dialog-container.d.ts +0 -40
  396. package/dialog/lib/dialog-footer.d.ts +0 -13
  397. package/dialog/lib/dialog-header.d.ts +0 -74
  398. package/dialog/lib/dialog-ref.d.ts +0 -95
  399. package/dialog/lib/dialog-template.d.ts +0 -65
  400. package/dialog/lib/dialog-text-content.d.ts +0 -24
  401. package/dialog/lib/dialog.service.d.ts +0 -63
  402. package/dialog/lib/generate-routable-dialog-route.d.ts +0 -49
  403. package/dialog/lib/inject-dialog-ref.d.ts +0 -8
  404. package/dialog/lib/routable-dialog.d.ts +0 -30
  405. package/dialog/malva-ui-core-dialog.d.ts +0 -5
  406. package/divider/index.d.ts +0 -1
  407. package/divider/lib/divider/divider.d.ts +0 -64
  408. package/divider/malva-ui-core-divider.d.ts +0 -5
  409. package/drawer/index.d.ts +0 -11
  410. package/drawer/lib/drawer/drawer.d.ts +0 -106
  411. package/drawer/lib/drawer-body.d.ts +0 -8
  412. package/drawer/lib/drawer-content.d.ts +0 -6
  413. package/drawer/lib/drawer-footer.d.ts +0 -5
  414. package/drawer/lib/drawer-header.d.ts +0 -5
  415. package/drawer/lib/drawer-ref.d.ts +0 -29
  416. package/drawer/lib/drawer-resize.d.ts +0 -65
  417. package/drawer/lib/drawer-section/drawer-section.d.ts +0 -15
  418. package/drawer/lib/drawer-sections/drawer-sections.d.ts +0 -22
  419. package/drawer/lib/drawer-sections.service.d.ts +0 -42
  420. package/drawer/lib/drawer.service.d.ts +0 -66
  421. package/drawer/lib/generate-routable-drawer-route.d.ts +0 -42
  422. package/drawer/lib/routable-drawer.d.ts +0 -30
  423. package/drawer/malva-ui-core-drawer.d.ts +0 -5
  424. package/dropdown/index.d.ts +0 -9
  425. package/dropdown/lib/active-descendant.d.ts +0 -64
  426. package/dropdown/lib/dropdown-panel/dropdown-panel.d.ts +0 -178
  427. package/dropdown/lib/highlight-match.pipe.d.ts +0 -27
  428. package/dropdown/lib/option-matcher.d.ts +0 -87
  429. package/dropdown/lib/options-adapter.d.ts +0 -142
  430. package/dropdown/lib/options-result.d.ts +0 -6
  431. package/dropdown/lib/reconciliation.d.ts +0 -19
  432. package/dropdown/lib/select-data-source.d.ts +0 -18
  433. package/dropdown/lib/select-option.d.ts +0 -37
  434. package/dropdown/malva-ui-core-dropdown.d.ts +0 -5
  435. package/empty-state/index.d.ts +0 -1
  436. package/empty-state/lib/empty-state/empty-state.d.ts +0 -34
  437. package/empty-state/malva-ui-core-empty-state.d.ts +0 -5
  438. package/esm2022/accordion/index.js +0 -4
  439. package/esm2022/accordion/index.js.map +0 -1
  440. package/esm2022/accordion/lib/accordion/accordion.js +0 -65
  441. package/esm2022/accordion/lib/accordion/accordion.js.map +0 -1
  442. package/esm2022/accordion/lib/accordion-item/accordion-header.js +0 -30
  443. package/esm2022/accordion/lib/accordion-item/accordion-header.js.map +0 -1
  444. package/esm2022/accordion/lib/accordion-item/accordion-item.js +0 -70
  445. package/esm2022/accordion/lib/accordion-item/accordion-item.js.map +0 -1
  446. package/esm2022/accordion/malva-ui-core-accordion.js +0 -5
  447. package/esm2022/accordion/malva-ui-core-accordion.js.map +0 -1
  448. package/esm2022/action-bar/index.js +0 -5
  449. package/esm2022/action-bar/index.js.map +0 -1
  450. package/esm2022/action-bar/lib/action-bar/action-bar.js +0 -64
  451. package/esm2022/action-bar/lib/action-bar/action-bar.js.map +0 -1
  452. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js +0 -20
  453. package/esm2022/action-bar/lib/action-bar/components/action-bar-actions.js.map +0 -1
  454. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js +0 -13
  455. package/esm2022/action-bar/lib/action-bar/components/action-bar-logo.js.map +0 -1
  456. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js +0 -13
  457. package/esm2022/action-bar/lib/action-bar/components/action-bar-spacer.js.map +0 -1
  458. package/esm2022/action-bar/malva-ui-core-action-bar.js +0 -5
  459. package/esm2022/action-bar/malva-ui-core-action-bar.js.map +0 -1
  460. package/esm2022/alert/index.js +0 -3
  461. package/esm2022/alert/index.js.map +0 -1
  462. package/esm2022/alert/lib/alert/alert.directives.js +0 -53
  463. package/esm2022/alert/lib/alert/alert.directives.js.map +0 -1
  464. package/esm2022/alert/lib/alert/alert.js +0 -118
  465. package/esm2022/alert/lib/alert/alert.js.map +0 -1
  466. package/esm2022/alert/malva-ui-core-alert.js +0 -5
  467. package/esm2022/alert/malva-ui-core-alert.js.map +0 -1
  468. package/esm2022/autocomplete/index.js +0 -2
  469. package/esm2022/autocomplete/index.js.map +0 -1
  470. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js +0 -765
  471. package/esm2022/autocomplete/lib/autocomplete/autocomplete.js.map +0 -1
  472. package/esm2022/autocomplete/malva-ui-core-autocomplete.js +0 -5
  473. package/esm2022/autocomplete/malva-ui-core-autocomplete.js.map +0 -1
  474. package/esm2022/avatar/index.js +0 -3
  475. package/esm2022/avatar/index.js.map +0 -1
  476. package/esm2022/avatar/lib/avatar/avatar.js +0 -192
  477. package/esm2022/avatar/lib/avatar/avatar.js.map +0 -1
  478. package/esm2022/avatar/lib/color-from-text.pipe.js +0 -39
  479. package/esm2022/avatar/lib/color-from-text.pipe.js.map +0 -1
  480. package/esm2022/avatar/malva-ui-core-avatar.js +0 -5
  481. package/esm2022/avatar/malva-ui-core-avatar.js.map +0 -1
  482. package/esm2022/avatar-group/index.js +0 -2
  483. package/esm2022/avatar-group/index.js.map +0 -1
  484. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js +0 -217
  485. package/esm2022/avatar-group/lib/avatar-group/avatar-group.js.map +0 -1
  486. package/esm2022/avatar-group/malva-ui-core-avatar-group.js +0 -5
  487. package/esm2022/avatar-group/malva-ui-core-avatar-group.js.map +0 -1
  488. package/esm2022/badge/index.js +0 -3
  489. package/esm2022/badge/index.js.map +0 -1
  490. package/esm2022/badge/lib/badge/badge.js +0 -71
  491. package/esm2022/badge/lib/badge/badge.js.map +0 -1
  492. package/esm2022/badge/lib/badge-icon.js +0 -47
  493. package/esm2022/badge/lib/badge-icon.js.map +0 -1
  494. package/esm2022/badge/malva-ui-core-badge.js +0 -5
  495. package/esm2022/badge/malva-ui-core-badge.js.map +0 -1
  496. package/esm2022/bottom-nav/index.js +0 -2
  497. package/esm2022/bottom-nav/index.js.map +0 -1
  498. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js +0 -155
  499. package/esm2022/bottom-nav/lib/bottom-nav/bottom-nav.js.map +0 -1
  500. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js +0 -5
  501. package/esm2022/bottom-nav/malva-ui-core-bottom-nav.js.map +0 -1
  502. package/esm2022/breadcrumb/index.js +0 -6
  503. package/esm2022/breadcrumb/index.js.map +0 -1
  504. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js +0 -43
  505. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item-host.js.map +0 -1
  506. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js +0 -110
  507. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-item.js.map +0 -1
  508. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js +0 -38
  509. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb-separator.js.map +0 -1
  510. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js +0 -284
  511. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.js.map +0 -1
  512. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js +0 -1
  513. package/esm2022/breadcrumb/lib/breadcrumb/breadcrumb.types.js.map +0 -1
  514. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js +0 -5
  515. package/esm2022/breadcrumb/malva-ui-core-breadcrumb.js.map +0 -1
  516. package/esm2022/button/index.js +0 -8
  517. package/esm2022/button/index.js.map +0 -1
  518. package/esm2022/button/lib/button/button.js +0 -137
  519. package/esm2022/button/lib/button/button.js.map +0 -1
  520. package/esm2022/button/lib/button-close/button-close.js +0 -52
  521. package/esm2022/button/lib/button-close/button-close.js.map +0 -1
  522. package/esm2022/button/lib/button-group/button-group.js +0 -44
  523. package/esm2022/button/lib/button-group/button-group.js.map +0 -1
  524. package/esm2022/button/lib/button-split/button-split.js +0 -44
  525. package/esm2022/button/lib/button-split/button-split.js.map +0 -1
  526. package/esm2022/button/lib/button-toggle/button-toggle.js +0 -94
  527. package/esm2022/button/lib/button-toggle/button-toggle.js.map +0 -1
  528. package/esm2022/button/lib/button-variant.token.js +0 -4
  529. package/esm2022/button/lib/button-variant.token.js.map +0 -1
  530. package/esm2022/button/lib/button.directives.js +0 -37
  531. package/esm2022/button/lib/button.directives.js.map +0 -1
  532. package/esm2022/button/lib/button.types.js +0 -1
  533. package/esm2022/button/lib/button.types.js.map +0 -1
  534. package/esm2022/button/malva-ui-core-button.js +0 -5
  535. package/esm2022/button/malva-ui-core-button.js.map +0 -1
  536. package/esm2022/calendar/index.js +0 -4
  537. package/esm2022/calendar/index.js.map +0 -1
  538. package/esm2022/calendar/lib/calendar/calendar.js +0 -672
  539. package/esm2022/calendar/lib/calendar/calendar.js.map +0 -1
  540. package/esm2022/calendar/lib/date-provider/date-adapter.js +0 -111
  541. package/esm2022/calendar/lib/date-provider/date-adapter.js.map +0 -1
  542. package/esm2022/calendar/lib/date-provider/native-date-adapter.js +0 -151
  543. package/esm2022/calendar/lib/date-provider/native-date-adapter.js.map +0 -1
  544. package/esm2022/calendar/malva-ui-core-calendar.js +0 -5
  545. package/esm2022/calendar/malva-ui-core-calendar.js.map +0 -1
  546. package/esm2022/card/index.js +0 -6
  547. package/esm2022/card/index.js.map +0 -1
  548. package/esm2022/card/lib/card/card.js +0 -54
  549. package/esm2022/card/lib/card/card.js.map +0 -1
  550. package/esm2022/card/lib/card-actions-def.js +0 -27
  551. package/esm2022/card/lib/card-actions-def.js.map +0 -1
  552. package/esm2022/card/lib/card-footer-def.js +0 -32
  553. package/esm2022/card/lib/card-footer-def.js.map +0 -1
  554. package/esm2022/card/lib/card-header-def.js +0 -27
  555. package/esm2022/card/lib/card-header-def.js.map +0 -1
  556. package/esm2022/card/lib/card-subheader-def.js +0 -33
  557. package/esm2022/card/lib/card-subheader-def.js.map +0 -1
  558. package/esm2022/card/malva-ui-core-card.js +0 -5
  559. package/esm2022/card/malva-ui-core-card.js.map +0 -1
  560. package/esm2022/chat/index.js +0 -10
  561. package/esm2022/chat/index.js.map +0 -1
  562. package/esm2022/chat/lib/chat/chat.js +0 -326
  563. package/esm2022/chat/lib/chat/chat.js.map +0 -1
  564. package/esm2022/chat/lib/chat-audio/chat-audio.js +0 -110
  565. package/esm2022/chat/lib/chat-audio/chat-audio.js.map +0 -1
  566. package/esm2022/chat/lib/chat-audio/chat-audio.service.js +0 -28
  567. package/esm2022/chat/lib/chat-audio/chat-audio.service.js.map +0 -1
  568. package/esm2022/chat/lib/chat-date/chat-date.js +0 -46
  569. package/esm2022/chat/lib/chat-date/chat-date.js.map +0 -1
  570. package/esm2022/chat/lib/chat-format.js +0 -11
  571. package/esm2022/chat/lib/chat-format.js.map +0 -1
  572. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js +0 -53
  573. package/esm2022/chat/lib/chat-media-grid/chat-media-grid.js.map +0 -1
  574. package/esm2022/chat/lib/chat-message/chat-message.js +0 -86
  575. package/esm2022/chat/lib/chat-message/chat-message.js.map +0 -1
  576. package/esm2022/chat/lib/chat-render-list.js +0 -55
  577. package/esm2022/chat/lib/chat-render-list.js.map +0 -1
  578. package/esm2022/chat/lib/chat-tokens.js +0 -9
  579. package/esm2022/chat/lib/chat-tokens.js.map +0 -1
  580. package/esm2022/chat/lib/chat-typing/chat-typing.js +0 -50
  581. package/esm2022/chat/lib/chat-typing/chat-typing.js.map +0 -1
  582. package/esm2022/chat/lib/chat.types.js +0 -1
  583. package/esm2022/chat/lib/chat.types.js.map +0 -1
  584. package/esm2022/chat/lib/defs/chat-author-def.js +0 -27
  585. package/esm2022/chat/lib/defs/chat-author-def.js.map +0 -1
  586. package/esm2022/chat/lib/defs/chat-date-def.js +0 -24
  587. package/esm2022/chat/lib/defs/chat-date-def.js.map +0 -1
  588. package/esm2022/chat/lib/defs/chat-message-def.js +0 -30
  589. package/esm2022/chat/lib/defs/chat-message-def.js.map +0 -1
  590. package/esm2022/chat/malva-ui-core-chat.js +0 -5
  591. package/esm2022/chat/malva-ui-core-chat.js.map +0 -1
  592. package/esm2022/checkbox/index.js +0 -4
  593. package/esm2022/checkbox/index.js.map +0 -1
  594. package/esm2022/checkbox/lib/checkbox/checkbox.js +0 -201
  595. package/esm2022/checkbox/lib/checkbox/checkbox.js.map +0 -1
  596. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js +0 -68
  597. package/esm2022/checkbox/lib/checkbox-group/checkbox-group.js.map +0 -1
  598. package/esm2022/checkbox/lib/checkbox-group-token.js +0 -3
  599. package/esm2022/checkbox/lib/checkbox-group-token.js.map +0 -1
  600. package/esm2022/checkbox/malva-ui-core-checkbox.js +0 -5
  601. package/esm2022/checkbox/malva-ui-core-checkbox.js.map +0 -1
  602. package/esm2022/chip/index.js +0 -3
  603. package/esm2022/chip/index.js.map +0 -1
  604. package/esm2022/chip/lib/chip/chip.directives.js +0 -32
  605. package/esm2022/chip/lib/chip/chip.directives.js.map +0 -1
  606. package/esm2022/chip/lib/chip/chip.js +0 -140
  607. package/esm2022/chip/lib/chip/chip.js.map +0 -1
  608. package/esm2022/chip/malva-ui-core-chip.js +0 -5
  609. package/esm2022/chip/malva-ui-core-chip.js.map +0 -1
  610. package/esm2022/color-picker/index.js +0 -4
  611. package/esm2022/color-picker/index.js.map +0 -1
  612. package/esm2022/color-picker/lib/color-picker/color-picker.js +0 -530
  613. package/esm2022/color-picker/lib/color-picker/color-picker.js.map +0 -1
  614. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js +0 -419
  615. package/esm2022/color-picker/lib/color-picker-popup/color-picker-popup.js.map +0 -1
  616. package/esm2022/color-picker/lib/color-utils/color-utils.js +0 -256
  617. package/esm2022/color-picker/lib/color-utils/color-utils.js.map +0 -1
  618. package/esm2022/color-picker/malva-ui-core-color-picker.js +0 -5
  619. package/esm2022/color-picker/malva-ui-core-color-picker.js.map +0 -1
  620. package/esm2022/combobox/index.js +0 -3
  621. package/esm2022/combobox/index.js.map +0 -1
  622. package/esm2022/combobox/lib/combobox/combobox.js +0 -911
  623. package/esm2022/combobox/lib/combobox/combobox.js.map +0 -1
  624. package/esm2022/combobox/lib/combobox-template.directives.js +0 -24
  625. package/esm2022/combobox/lib/combobox-template.directives.js.map +0 -1
  626. package/esm2022/combobox/malva-ui-core-combobox.js +0 -5
  627. package/esm2022/combobox/malva-ui-core-combobox.js.map +0 -1
  628. package/esm2022/copy-to-clipboard/index.js +0 -2
  629. package/esm2022/copy-to-clipboard/index.js.map +0 -1
  630. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js +0 -201
  631. package/esm2022/copy-to-clipboard/lib/copy-to-clipboard/copy-to-clipboard.js.map +0 -1
  632. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js +0 -5
  633. package/esm2022/copy-to-clipboard/malva-ui-core-copy-to-clipboard.js.map +0 -1
  634. package/esm2022/data-table/index.js +0 -9
  635. package/esm2022/data-table/index.js.map +0 -1
  636. package/esm2022/data-table/lib/data-source.js +0 -6
  637. package/esm2022/data-table/lib/data-source.js.map +0 -1
  638. package/esm2022/data-table/lib/data-table/data-table-layout.js +0 -84
  639. package/esm2022/data-table/lib/data-table/data-table-layout.js.map +0 -1
  640. package/esm2022/data-table/lib/data-table/data-table.js +0 -1846
  641. package/esm2022/data-table/lib/data-table/data-table.js.map +0 -1
  642. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js +0 -37
  643. package/esm2022/data-table/lib/data-table/services/data-table-column-visibility.service.js.map +0 -1
  644. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js +0 -63
  645. package/esm2022/data-table/lib/data-table/services/data-table-editing.service.js.map +0 -1
  646. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js +0 -68
  647. package/esm2022/data-table/lib/data-table/services/data-table-pinning.service.js.map +0 -1
  648. package/esm2022/data-table/lib/data-table-cell.js +0 -46
  649. package/esm2022/data-table/lib/data-table-cell.js.map +0 -1
  650. package/esm2022/data-table/lib/data-table-edit-cell.js +0 -46
  651. package/esm2022/data-table/lib/data-table-edit-cell.js.map +0 -1
  652. package/esm2022/data-table/lib/data-table-error.js +0 -37
  653. package/esm2022/data-table/lib/data-table-error.js.map +0 -1
  654. package/esm2022/data-table/lib/data-table-footer.js +0 -33
  655. package/esm2022/data-table/lib/data-table-footer.js.map +0 -1
  656. package/esm2022/data-table/lib/data-table-no-data.js +0 -26
  657. package/esm2022/data-table/lib/data-table-no-data.js.map +0 -1
  658. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js +0 -224
  659. package/esm2022/data-table/lib/filter-dropdown/filter-dropdown.js.map +0 -1
  660. package/esm2022/data-table/lib/types.js +0 -1
  661. package/esm2022/data-table/lib/types.js.map +0 -1
  662. package/esm2022/data-table/malva-ui-core-data-table.js +0 -5
  663. package/esm2022/data-table/malva-ui-core-data-table.js.map +0 -1
  664. package/esm2022/date-range-picker/index.js +0 -2
  665. package/esm2022/date-range-picker/index.js.map +0 -1
  666. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js +0 -269
  667. package/esm2022/date-range-picker/lib/date-range-picker/date-range-picker.js.map +0 -1
  668. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js +0 -5
  669. package/esm2022/date-range-picker/malva-ui-core-date-range-picker.js.map +0 -1
  670. package/esm2022/day-picker/index.js +0 -2
  671. package/esm2022/day-picker/index.js.map +0 -1
  672. package/esm2022/day-picker/lib/day-picker/day-picker.js +0 -124
  673. package/esm2022/day-picker/lib/day-picker/day-picker.js.map +0 -1
  674. package/esm2022/day-picker/malva-ui-core-day-picker.js +0 -5
  675. package/esm2022/day-picker/malva-ui-core-day-picker.js.map +0 -1
  676. package/esm2022/dialog/index.js +0 -12
  677. package/esm2022/dialog/index.js.map +0 -1
  678. package/esm2022/dialog/lib/confirm-dialog-options.js +0 -1
  679. package/esm2022/dialog/lib/confirm-dialog-options.js.map +0 -1
  680. package/esm2022/dialog/lib/confirm-dialog.js +0 -155
  681. package/esm2022/dialog/lib/confirm-dialog.js.map +0 -1
  682. package/esm2022/dialog/lib/dialog/dialog.js +0 -40
  683. package/esm2022/dialog/lib/dialog/dialog.js.map +0 -1
  684. package/esm2022/dialog/lib/dialog-body.js +0 -33
  685. package/esm2022/dialog/lib/dialog-body.js.map +0 -1
  686. package/esm2022/dialog/lib/dialog-close.js +0 -45
  687. package/esm2022/dialog/lib/dialog-close.js.map +0 -1
  688. package/esm2022/dialog/lib/dialog-config.js +0 -23
  689. package/esm2022/dialog/lib/dialog-config.js.map +0 -1
  690. package/esm2022/dialog/lib/dialog-container.js +0 -69
  691. package/esm2022/dialog/lib/dialog-container.js.map +0 -1
  692. package/esm2022/dialog/lib/dialog-footer.js +0 -29
  693. package/esm2022/dialog/lib/dialog-footer.js.map +0 -1
  694. package/esm2022/dialog/lib/dialog-header.js +0 -181
  695. package/esm2022/dialog/lib/dialog-header.js.map +0 -1
  696. package/esm2022/dialog/lib/dialog-ref.js +0 -167
  697. package/esm2022/dialog/lib/dialog-ref.js.map +0 -1
  698. package/esm2022/dialog/lib/dialog-template.js +0 -136
  699. package/esm2022/dialog/lib/dialog-template.js.map +0 -1
  700. package/esm2022/dialog/lib/dialog-text-content.js +0 -59
  701. package/esm2022/dialog/lib/dialog-text-content.js.map +0 -1
  702. package/esm2022/dialog/lib/dialog.service.js +0 -205
  703. package/esm2022/dialog/lib/dialog.service.js.map +0 -1
  704. package/esm2022/dialog/lib/generate-routable-dialog-route.js +0 -59
  705. package/esm2022/dialog/lib/generate-routable-dialog-route.js.map +0 -1
  706. package/esm2022/dialog/lib/inject-dialog-ref.js +0 -16
  707. package/esm2022/dialog/lib/inject-dialog-ref.js.map +0 -1
  708. package/esm2022/dialog/lib/routable-dialog.js +0 -91
  709. package/esm2022/dialog/lib/routable-dialog.js.map +0 -1
  710. package/esm2022/dialog/malva-ui-core-dialog.js +0 -5
  711. package/esm2022/dialog/malva-ui-core-dialog.js.map +0 -1
  712. package/esm2022/divider/index.js +0 -2
  713. package/esm2022/divider/index.js.map +0 -1
  714. package/esm2022/divider/lib/divider/divider.js +0 -73
  715. package/esm2022/divider/lib/divider/divider.js.map +0 -1
  716. package/esm2022/divider/malva-ui-core-divider.js +0 -5
  717. package/esm2022/divider/malva-ui-core-divider.js.map +0 -1
  718. package/esm2022/drawer/index.js +0 -12
  719. package/esm2022/drawer/index.js.map +0 -1
  720. package/esm2022/drawer/lib/drawer/drawer.js +0 -180
  721. package/esm2022/drawer/lib/drawer/drawer.js.map +0 -1
  722. package/esm2022/drawer/lib/drawer-body.js +0 -32
  723. package/esm2022/drawer/lib/drawer-body.js.map +0 -1
  724. package/esm2022/drawer/lib/drawer-content.js +0 -14
  725. package/esm2022/drawer/lib/drawer-content.js.map +0 -1
  726. package/esm2022/drawer/lib/drawer-footer.js +0 -14
  727. package/esm2022/drawer/lib/drawer-footer.js.map +0 -1
  728. package/esm2022/drawer/lib/drawer-header.js +0 -14
  729. package/esm2022/drawer/lib/drawer-header.js.map +0 -1
  730. package/esm2022/drawer/lib/drawer-ref.js +0 -31
  731. package/esm2022/drawer/lib/drawer-ref.js.map +0 -1
  732. package/esm2022/drawer/lib/drawer-resize.js +0 -243
  733. package/esm2022/drawer/lib/drawer-resize.js.map +0 -1
  734. package/esm2022/drawer/lib/drawer-section/drawer-section.js +0 -26
  735. package/esm2022/drawer/lib/drawer-section/drawer-section.js.map +0 -1
  736. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js +0 -58
  737. package/esm2022/drawer/lib/drawer-sections/drawer-sections.js.map +0 -1
  738. package/esm2022/drawer/lib/drawer-sections.service.js +0 -83
  739. package/esm2022/drawer/lib/drawer-sections.service.js.map +0 -1
  740. package/esm2022/drawer/lib/drawer.service.js +0 -86
  741. package/esm2022/drawer/lib/drawer.service.js.map +0 -1
  742. package/esm2022/drawer/lib/generate-routable-drawer-route.js +0 -52
  743. package/esm2022/drawer/lib/generate-routable-drawer-route.js.map +0 -1
  744. package/esm2022/drawer/lib/routable-drawer.js +0 -91
  745. package/esm2022/drawer/lib/routable-drawer.js.map +0 -1
  746. package/esm2022/drawer/malva-ui-core-drawer.js +0 -5
  747. package/esm2022/drawer/malva-ui-core-drawer.js.map +0 -1
  748. package/esm2022/dropdown/index.js +0 -10
  749. package/esm2022/dropdown/index.js.map +0 -1
  750. package/esm2022/dropdown/lib/active-descendant.js +0 -92
  751. package/esm2022/dropdown/lib/active-descendant.js.map +0 -1
  752. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js +0 -295
  753. package/esm2022/dropdown/lib/dropdown-panel/dropdown-panel.js.map +0 -1
  754. package/esm2022/dropdown/lib/highlight-match.pipe.js +0 -36
  755. package/esm2022/dropdown/lib/highlight-match.pipe.js.map +0 -1
  756. package/esm2022/dropdown/lib/option-matcher.js +0 -124
  757. package/esm2022/dropdown/lib/option-matcher.js.map +0 -1
  758. package/esm2022/dropdown/lib/options-adapter.js +0 -356
  759. package/esm2022/dropdown/lib/options-adapter.js.map +0 -1
  760. package/esm2022/dropdown/lib/options-result.js +0 -11
  761. package/esm2022/dropdown/lib/options-result.js.map +0 -1
  762. package/esm2022/dropdown/lib/reconciliation.js +0 -32
  763. package/esm2022/dropdown/lib/reconciliation.js.map +0 -1
  764. package/esm2022/dropdown/lib/select-data-source.js +0 -21
  765. package/esm2022/dropdown/lib/select-data-source.js.map +0 -1
  766. package/esm2022/dropdown/lib/select-option.js +0 -25
  767. package/esm2022/dropdown/lib/select-option.js.map +0 -1
  768. package/esm2022/dropdown/malva-ui-core-dropdown.js +0 -5
  769. package/esm2022/dropdown/malva-ui-core-dropdown.js.map +0 -1
  770. package/esm2022/empty-state/index.js +0 -2
  771. package/esm2022/empty-state/index.js.map +0 -1
  772. package/esm2022/empty-state/lib/empty-state/empty-state.js +0 -43
  773. package/esm2022/empty-state/lib/empty-state/empty-state.js.map +0 -1
  774. package/esm2022/empty-state/malva-ui-core-empty-state.js +0 -5
  775. package/esm2022/empty-state/malva-ui-core-empty-state.js.map +0 -1
  776. package/esm2022/expand/index.js +0 -3
  777. package/esm2022/expand/index.js.map +0 -1
  778. package/esm2022/expand/lib/expand/expand-content.js +0 -33
  779. package/esm2022/expand/lib/expand/expand-content.js.map +0 -1
  780. package/esm2022/expand/lib/expand/expand.js +0 -93
  781. package/esm2022/expand/lib/expand/expand.js.map +0 -1
  782. package/esm2022/expand/malva-ui-core-expand.js +0 -5
  783. package/esm2022/expand/malva-ui-core-expand.js.map +0 -1
  784. package/esm2022/file-upload/index.js +0 -5
  785. package/esm2022/file-upload/index.js.map +0 -1
  786. package/esm2022/file-upload/lib/file-upload/file-upload.js +0 -324
  787. package/esm2022/file-upload/lib/file-upload/file-upload.js.map +0 -1
  788. package/esm2022/file-upload/lib/file-upload/file-upload.types.js +0 -1
  789. package/esm2022/file-upload/lib/file-upload/file-upload.types.js.map +0 -1
  790. package/esm2022/file-upload/lib/file-upload-action.js +0 -65
  791. package/esm2022/file-upload/lib/file-upload-action.js.map +0 -1
  792. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js +0 -55
  793. package/esm2022/file-upload/lib/file-upload-item/file-upload-item.js.map +0 -1
  794. package/esm2022/file-upload/malva-ui-core-file-upload.js +0 -5
  795. package/esm2022/file-upload/malva-ui-core-file-upload.js.map +0 -1
  796. package/esm2022/filter/index.js +0 -4
  797. package/esm2022/filter/index.js.map +0 -1
  798. package/esm2022/filter/lib/filter/filter.js +0 -552
  799. package/esm2022/filter/lib/filter/filter.js.map +0 -1
  800. package/esm2022/filter/lib/filter.types.js +0 -1
  801. package/esm2022/filter/lib/filter.types.js.map +0 -1
  802. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js +0 -518
  803. package/esm2022/filter/lib/smart-filter-bar/smart-filter-bar.js.map +0 -1
  804. package/esm2022/filter/malva-ui-core-filter.js +0 -5
  805. package/esm2022/filter/malva-ui-core-filter.js.map +0 -1
  806. package/esm2022/form/index.js +0 -7
  807. package/esm2022/form/index.js.map +0 -1
  808. package/esm2022/form/lib/fieldset/fieldset.js +0 -101
  809. package/esm2022/form/lib/fieldset/fieldset.js.map +0 -1
  810. package/esm2022/form/lib/fieldset-span.js +0 -49
  811. package/esm2022/form/lib/fieldset-span.js.map +0 -1
  812. package/esm2022/form/lib/form/form.js +0 -60
  813. package/esm2022/form/lib/form/form.js.map +0 -1
  814. package/esm2022/form/lib/form-actions.js +0 -34
  815. package/esm2022/form/lib/form-actions.js.map +0 -1
  816. package/esm2022/form/lib/form-gap.js +0 -15
  817. package/esm2022/form/lib/form-gap.js.map +0 -1
  818. package/esm2022/form/lib/form-header.js +0 -27
  819. package/esm2022/form/lib/form-header.js.map +0 -1
  820. package/esm2022/form/lib/form.types.js +0 -1
  821. package/esm2022/form/lib/form.types.js.map +0 -1
  822. package/esm2022/form/malva-ui-core-form.js +0 -5
  823. package/esm2022/form/malva-ui-core-form.js.map +0 -1
  824. package/esm2022/form-utils/index.js +0 -16
  825. package/esm2022/form-utils/index.js.map +0 -1
  826. package/esm2022/form-utils/lib/aria-value-bridge.js +0 -57
  827. package/esm2022/form-utils/lib/aria-value-bridge.js.map +0 -1
  828. package/esm2022/form-utils/lib/description/description.js +0 -24
  829. package/esm2022/form-utils/lib/description/description.js.map +0 -1
  830. package/esm2022/form-utils/lib/focusable-group-base.js +0 -87
  831. package/esm2022/form-utils/lib/focusable-group-base.js.map +0 -1
  832. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js +0 -192
  833. package/esm2022/form-utils/lib/form-control-base/signal-form-control-base.js.map +0 -1
  834. package/esm2022/form-utils/lib/form-control-sides.js +0 -34
  835. package/esm2022/form-utils/lib/form-control-sides.js.map +0 -1
  836. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js +0 -14
  837. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper-control.js.map +0 -1
  838. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js +0 -47
  839. package/esm2022/form-utils/lib/form-control-wrapper/form-control-wrapper.js.map +0 -1
  840. package/esm2022/form-utils/lib/form-field/form-field.js +0 -245
  841. package/esm2022/form-utils/lib/form-field/form-field.js.map +0 -1
  842. package/esm2022/form-utils/lib/hint/hint.js +0 -11
  843. package/esm2022/form-utils/lib/hint/hint.js.map +0 -1
  844. package/esm2022/form-utils/lib/label/label.js +0 -55
  845. package/esm2022/form-utils/lib/label/label.js.map +0 -1
  846. package/esm2022/form-utils/lib/message/message.js +0 -20
  847. package/esm2022/form-utils/lib/message/message.js.map +0 -1
  848. package/esm2022/form-utils/lib/models/error-display-strategy.js +0 -1
  849. package/esm2022/form-utils/lib/models/error-display-strategy.js.map +0 -1
  850. package/esm2022/form-utils/lib/models/form-control-connector.js +0 -3
  851. package/esm2022/form-utils/lib/models/form-control-connector.js.map +0 -1
  852. package/esm2022/form-utils/lib/models/form-state.js +0 -1
  853. package/esm2022/form-utils/lib/models/form-state.js.map +0 -1
  854. package/esm2022/form-utils/lib/selection.service.js +0 -81
  855. package/esm2022/form-utils/lib/selection.service.js.map +0 -1
  856. package/esm2022/form-utils/malva-ui-core-form-utils.js +0 -5
  857. package/esm2022/form-utils/malva-ui-core-form-utils.js.map +0 -1
  858. package/esm2022/form-utils/testing/index.js +0 -2
  859. package/esm2022/form-utils/testing/index.js.map +0 -1
  860. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js +0 -32
  861. package/esm2022/form-utils/testing/lib/forms-binding-matrix.js.map +0 -1
  862. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js +0 -5
  863. package/esm2022/form-utils/testing/malva-ui-core-form-utils-testing.js.map +0 -1
  864. package/esm2022/index.js +0 -70
  865. package/esm2022/index.js.map +0 -1
  866. package/esm2022/input/index.js +0 -4
  867. package/esm2022/input/index.js.map +0 -1
  868. package/esm2022/input/lib/input/input-native.js +0 -49
  869. package/esm2022/input/lib/input/input-native.js.map +0 -1
  870. package/esm2022/input/lib/input/input-value-accessor.js +0 -4
  871. package/esm2022/input/lib/input/input-value-accessor.js.map +0 -1
  872. package/esm2022/input/lib/input/input.js +0 -277
  873. package/esm2022/input/lib/input/input.js.map +0 -1
  874. package/esm2022/input/lib/input/password-strength.js +0 -46
  875. package/esm2022/input/lib/input/password-strength.js.map +0 -1
  876. package/esm2022/input/malva-ui-core-input.js +0 -5
  877. package/esm2022/input/malva-ui-core-input.js.map +0 -1
  878. package/esm2022/kbd/index.js +0 -2
  879. package/esm2022/kbd/index.js.map +0 -1
  880. package/esm2022/kbd/lib/kbd/kbd.js +0 -124
  881. package/esm2022/kbd/lib/kbd/kbd.js.map +0 -1
  882. package/esm2022/kbd/malva-ui-core-kbd.js +0 -5
  883. package/esm2022/kbd/malva-ui-core-kbd.js.map +0 -1
  884. package/esm2022/layout/index.js +0 -5
  885. package/esm2022/layout/index.js.map +0 -1
  886. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js +0 -14
  887. package/esm2022/layout/lib/layout/directives/MlvLayoutSide.js.map +0 -1
  888. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js +0 -14
  889. package/esm2022/layout/lib/layout/directives/MlvLayoutTop.js.map +0 -1
  890. package/esm2022/layout/lib/layout/layout.js +0 -43
  891. package/esm2022/layout/lib/layout/layout.js.map +0 -1
  892. package/esm2022/layout/lib/layout/services/theme.service.js +0 -121
  893. package/esm2022/layout/lib/layout/services/theme.service.js.map +0 -1
  894. package/esm2022/layout/malva-ui-core-layout.js +0 -5
  895. package/esm2022/layout/malva-ui-core-layout.js.map +0 -1
  896. package/esm2022/link/index.js +0 -3
  897. package/esm2022/link/index.js.map +0 -1
  898. package/esm2022/link/lib/link/link.directives.js +0 -24
  899. package/esm2022/link/lib/link/link.directives.js.map +0 -1
  900. package/esm2022/link/lib/link/link.js +0 -61
  901. package/esm2022/link/lib/link/link.js.map +0 -1
  902. package/esm2022/link/malva-ui-core-link.js +0 -5
  903. package/esm2022/link/malva-ui-core-link.js.map +0 -1
  904. package/esm2022/list/index.js +0 -14
  905. package/esm2022/list/index.js.map +0 -1
  906. package/esm2022/list/lib/list/list.js +0 -28
  907. package/esm2022/list/lib/list/list.js.map +0 -1
  908. package/esm2022/list/lib/list-item/list-item.js +0 -125
  909. package/esm2022/list/lib/list-item/list-item.js.map +0 -1
  910. package/esm2022/list/lib/list-item-actions.js +0 -23
  911. package/esm2022/list/lib/list-item-actions.js.map +0 -1
  912. package/esm2022/list/lib/list-item-byline.js +0 -13
  913. package/esm2022/list/lib/list-item-byline.js.map +0 -1
  914. package/esm2022/list/lib/list-item-group/list-item-group.js +0 -25
  915. package/esm2022/list/lib/list-item-group/list-item-group.js.map +0 -1
  916. package/esm2022/list/lib/list-item-link/list-item-link.js +0 -20
  917. package/esm2022/list/lib/list-item-link/list-item-link.js.map +0 -1
  918. package/esm2022/list/lib/list-item-media.js +0 -13
  919. package/esm2022/list/lib/list-item-media.js.map +0 -1
  920. package/esm2022/list/lib/list-item-meta.js +0 -13
  921. package/esm2022/list/lib/list-item-meta.js.map +0 -1
  922. package/esm2022/list/lib/list-item-prefix.js +0 -13
  923. package/esm2022/list/lib/list-item-prefix.js.map +0 -1
  924. package/esm2022/list/lib/list-item-suffix.js +0 -13
  925. package/esm2022/list/lib/list-item-suffix.js.map +0 -1
  926. package/esm2022/list/lib/list-item-template.js +0 -14
  927. package/esm2022/list/lib/list-item-template.js.map +0 -1
  928. package/esm2022/list/lib/list-item-title.js +0 -13
  929. package/esm2022/list/lib/list-item-title.js.map +0 -1
  930. package/esm2022/list/lib/list-selectable.js +0 -116
  931. package/esm2022/list/lib/list-selectable.js.map +0 -1
  932. package/esm2022/list/malva-ui-core-list.js +0 -5
  933. package/esm2022/list/malva-ui-core-list.js.map +0 -1
  934. package/esm2022/loader/index.js +0 -2
  935. package/esm2022/loader/index.js.map +0 -1
  936. package/esm2022/loader/lib/loader/loader.js +0 -134
  937. package/esm2022/loader/lib/loader/loader.js.map +0 -1
  938. package/esm2022/loader/malva-ui-core-loader.js +0 -5
  939. package/esm2022/loader/malva-ui-core-loader.js.map +0 -1
  940. package/esm2022/malva-ui-core.js +0 -5
  941. package/esm2022/malva-ui-core.js.map +0 -1
  942. package/esm2022/menu/index.js +0 -10
  943. package/esm2022/menu/index.js.map +0 -1
  944. package/esm2022/menu/lib/menu/menu-group-label.js +0 -35
  945. package/esm2022/menu/lib/menu/menu-group-label.js.map +0 -1
  946. package/esm2022/menu/lib/menu/menu-group.js +0 -44
  947. package/esm2022/menu/lib/menu/menu-group.js.map +0 -1
  948. package/esm2022/menu/lib/menu/menu-item.js +0 -117
  949. package/esm2022/menu/lib/menu/menu-item.js.map +0 -1
  950. package/esm2022/menu/lib/menu/menu-separator.js +0 -41
  951. package/esm2022/menu/lib/menu/menu-separator.js.map +0 -1
  952. package/esm2022/menu/lib/menu/menu-trigger.js +0 -653
  953. package/esm2022/menu/lib/menu/menu-trigger.js.map +0 -1
  954. package/esm2022/menu/lib/menu/menu.js +0 -308
  955. package/esm2022/menu/lib/menu/menu.js.map +0 -1
  956. package/esm2022/menu/lib/menu/menu.types.js +0 -4
  957. package/esm2022/menu/lib/menu/menu.types.js.map +0 -1
  958. package/esm2022/menu/lib/menu/menubar.js +0 -257
  959. package/esm2022/menu/lib/menu/menubar.js.map +0 -1
  960. package/esm2022/menu/lib/menu/menubar.types.js +0 -4
  961. package/esm2022/menu/lib/menu/menubar.types.js.map +0 -1
  962. package/esm2022/menu/lib/menu/submenu-aim.js +0 -30
  963. package/esm2022/menu/lib/menu/submenu-aim.js.map +0 -1
  964. package/esm2022/menu/malva-ui-core-menu.js +0 -5
  965. package/esm2022/menu/malva-ui-core-menu.js.map +0 -1
  966. package/esm2022/notification/index.js +0 -5
  967. package/esm2022/notification/index.js.map +0 -1
  968. package/esm2022/notification/lib/notification-item/notification-item.js +0 -65
  969. package/esm2022/notification/lib/notification-item/notification-item.js.map +0 -1
  970. package/esm2022/notification/lib/notification-ref.js +0 -13
  971. package/esm2022/notification/lib/notification-ref.js.map +0 -1
  972. package/esm2022/notification/lib/notification.service.js +0 -118
  973. package/esm2022/notification/lib/notification.service.js.map +0 -1
  974. package/esm2022/notification/lib/notification.types.js +0 -6
  975. package/esm2022/notification/lib/notification.types.js.map +0 -1
  976. package/esm2022/notification/malva-ui-core-notification.js +0 -5
  977. package/esm2022/notification/malva-ui-core-notification.js.map +0 -1
  978. package/esm2022/number-input/index.js +0 -2
  979. package/esm2022/number-input/index.js.map +0 -1
  980. package/esm2022/number-input/lib/number-input/number-input.js +0 -395
  981. package/esm2022/number-input/lib/number-input/number-input.js.map +0 -1
  982. package/esm2022/number-input/malva-ui-core-number-input.js +0 -5
  983. package/esm2022/number-input/malva-ui-core-number-input.js.map +0 -1
  984. package/esm2022/page/index.js +0 -15
  985. package/esm2022/page/index.js.map +0 -1
  986. package/esm2022/page/lib/page/page-scroll.token.js +0 -9
  987. package/esm2022/page/lib/page/page-scroll.token.js.map +0 -1
  988. package/esm2022/page/lib/page/page-snap-controller.js +0 -170
  989. package/esm2022/page/lib/page/page-snap-controller.js.map +0 -1
  990. package/esm2022/page/lib/page/page-snap.directive.js +0 -65
  991. package/esm2022/page/lib/page/page-snap.directive.js.map +0 -1
  992. package/esm2022/page/lib/page/page.js +0 -173
  993. package/esm2022/page/lib/page/page.js.map +0 -1
  994. package/esm2022/page/lib/page-content/page-aside.js +0 -13
  995. package/esm2022/page/lib/page-content/page-aside.js.map +0 -1
  996. package/esm2022/page/lib/page-content/page-content.js +0 -72
  997. package/esm2022/page/lib/page-content/page-content.js.map +0 -1
  998. package/esm2022/page/lib/page-dock/page-dock.js +0 -128
  999. package/esm2022/page/lib/page-dock/page-dock.js.map +0 -1
  1000. package/esm2022/page/lib/page-dock/page-dock.slots.js +0 -39
  1001. package/esm2022/page/lib/page-dock/page-dock.slots.js.map +0 -1
  1002. package/esm2022/page/lib/page-header/page-header.directives.js +0 -88
  1003. package/esm2022/page/lib/page-header/page-header.directives.js.map +0 -1
  1004. package/esm2022/page/lib/page-header/page-header.js +0 -124
  1005. package/esm2022/page/lib/page-header/page-header.js.map +0 -1
  1006. package/esm2022/page/lib/page-shell/page-shell-color.js +0 -193
  1007. package/esm2022/page/lib/page-shell/page-shell-color.js.map +0 -1
  1008. package/esm2022/page/lib/page-shell/page-shell-css-color.js +0 -207
  1009. package/esm2022/page/lib/page-shell/page-shell-css-color.js.map +0 -1
  1010. package/esm2022/page/lib/page-shell/page-shell.js +0 -131
  1011. package/esm2022/page/lib/page-shell/page-shell.js.map +0 -1
  1012. package/esm2022/page/lib/page-shell/page-shell.slots.js +0 -41
  1013. package/esm2022/page/lib/page-shell/page-shell.slots.js.map +0 -1
  1014. package/esm2022/page/lib/page-summary/page-summary-item.js +0 -26
  1015. package/esm2022/page/lib/page-summary/page-summary-item.js.map +0 -1
  1016. package/esm2022/page/lib/page-summary/page-summary.js +0 -87
  1017. package/esm2022/page/lib/page-summary/page-summary.js.map +0 -1
  1018. package/esm2022/page/malva-ui-core-page.js +0 -5
  1019. package/esm2022/page/malva-ui-core-page.js.map +0 -1
  1020. package/esm2022/pagination/index.js +0 -5
  1021. package/esm2022/pagination/index.js.map +0 -1
  1022. package/esm2022/pagination/lib/pagination/pagination.directives.js +0 -58
  1023. package/esm2022/pagination/lib/pagination/pagination.directives.js.map +0 -1
  1024. package/esm2022/pagination/lib/pagination/pagination.js +0 -293
  1025. package/esm2022/pagination/lib/pagination/pagination.js.map +0 -1
  1026. package/esm2022/pagination/lib/pagination/pagination.model.js +0 -1
  1027. package/esm2022/pagination/lib/pagination/pagination.model.js.map +0 -1
  1028. package/esm2022/pagination/lib/pagination/pagination.service.js +0 -108
  1029. package/esm2022/pagination/lib/pagination/pagination.service.js.map +0 -1
  1030. package/esm2022/pagination/malva-ui-core-pagination.js +0 -5
  1031. package/esm2022/pagination/malva-ui-core-pagination.js.map +0 -1
  1032. package/esm2022/pin-input/index.js +0 -3
  1033. package/esm2022/pin-input/index.js.map +0 -1
  1034. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js +0 -31
  1035. package/esm2022/pin-input/lib/pin-input/pin-input-separator.js.map +0 -1
  1036. package/esm2022/pin-input/lib/pin-input/pin-input.js +0 -365
  1037. package/esm2022/pin-input/lib/pin-input/pin-input.js.map +0 -1
  1038. package/esm2022/pin-input/malva-ui-core-pin-input.js +0 -5
  1039. package/esm2022/pin-input/malva-ui-core-pin-input.js.map +0 -1
  1040. package/esm2022/popup/index.js +0 -10
  1041. package/esm2022/popup/index.js.map +0 -1
  1042. package/esm2022/popup/lib/popup/popup.js +0 -500
  1043. package/esm2022/popup/lib/popup/popup.js.map +0 -1
  1044. package/esm2022/popup/lib/popup-container/popup-container.js +0 -169
  1045. package/esm2022/popup/lib/popup-container/popup-container.js.map +0 -1
  1046. package/esm2022/popup/lib/popup-container/popup-container.token.js +0 -9
  1047. package/esm2022/popup/lib/popup-container/popup-container.token.js.map +0 -1
  1048. package/esm2022/popup/lib/popup-content.js +0 -14
  1049. package/esm2022/popup/lib/popup-content.js.map +0 -1
  1050. package/esm2022/popup/lib/popup-header-content.js +0 -26
  1051. package/esm2022/popup/lib/popup-header-content.js.map +0 -1
  1052. package/esm2022/popup/lib/popup-pinned-content.js +0 -25
  1053. package/esm2022/popup/lib/popup-pinned-content.js.map +0 -1
  1054. package/esm2022/popup/lib/popup-positions.js +0 -252
  1055. package/esm2022/popup/lib/popup-positions.js.map +0 -1
  1056. package/esm2022/popup/lib/popup-trigger/popup-trigger.js +0 -308
  1057. package/esm2022/popup/lib/popup-trigger/popup-trigger.js.map +0 -1
  1058. package/esm2022/popup/lib/popup.service.js +0 -188
  1059. package/esm2022/popup/lib/popup.service.js.map +0 -1
  1060. package/esm2022/popup/malva-ui-core-popup.js +0 -5
  1061. package/esm2022/popup/malva-ui-core-popup.js.map +0 -1
  1062. package/esm2022/progress/index.js +0 -2
  1063. package/esm2022/progress/index.js.map +0 -1
  1064. package/esm2022/progress/lib/progress/progress.js +0 -102
  1065. package/esm2022/progress/lib/progress/progress.js.map +0 -1
  1066. package/esm2022/progress/malva-ui-core-progress.js +0 -5
  1067. package/esm2022/progress/malva-ui-core-progress.js.map +0 -1
  1068. package/esm2022/radio/index.js +0 -3
  1069. package/esm2022/radio/index.js.map +0 -1
  1070. package/esm2022/radio/lib/radio/radio.js +0 -134
  1071. package/esm2022/radio/lib/radio/radio.js.map +0 -1
  1072. package/esm2022/radio/lib/radio-group/radio-group.js +0 -176
  1073. package/esm2022/radio/lib/radio-group/radio-group.js.map +0 -1
  1074. package/esm2022/radio/lib/radio-group-token.js +0 -3
  1075. package/esm2022/radio/lib/radio-group-token.js.map +0 -1
  1076. package/esm2022/radio/malva-ui-core-radio.js +0 -5
  1077. package/esm2022/radio/malva-ui-core-radio.js.map +0 -1
  1078. package/esm2022/rating/index.js +0 -2
  1079. package/esm2022/rating/index.js.map +0 -1
  1080. package/esm2022/rating/lib/rating/rating.js +0 -208
  1081. package/esm2022/rating/lib/rating/rating.js.map +0 -1
  1082. package/esm2022/rating/malva-ui-core-rating.js +0 -5
  1083. package/esm2022/rating/malva-ui-core-rating.js.map +0 -1
  1084. package/esm2022/scrollbar/index.js +0 -2
  1085. package/esm2022/scrollbar/index.js.map +0 -1
  1086. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js +0 -388
  1087. package/esm2022/scrollbar/lib/scrollbar/scrollbar.js.map +0 -1
  1088. package/esm2022/scrollbar/malva-ui-core-scrollbar.js +0 -5
  1089. package/esm2022/scrollbar/malva-ui-core-scrollbar.js.map +0 -1
  1090. package/esm2022/search-field/index.js +0 -3
  1091. package/esm2022/search-field/index.js.map +0 -1
  1092. package/esm2022/search-field/lib/search-field/search-field.js +0 -535
  1093. package/esm2022/search-field/lib/search-field/search-field.js.map +0 -1
  1094. package/esm2022/search-field/lib/search-field/search-overlay-content.js +0 -35
  1095. package/esm2022/search-field/lib/search-field/search-overlay-content.js.map +0 -1
  1096. package/esm2022/search-field/malva-ui-core-search-field.js +0 -5
  1097. package/esm2022/search-field/malva-ui-core-search-field.js.map +0 -1
  1098. package/esm2022/segmented/index.js +0 -5
  1099. package/esm2022/segmented/index.js.map +0 -1
  1100. package/esm2022/segmented/lib/segmented/segmented.js +0 -248
  1101. package/esm2022/segmented/lib/segmented/segmented.js.map +0 -1
  1102. package/esm2022/segmented/lib/segmented-item/segmented-item.js +0 -194
  1103. package/esm2022/segmented/lib/segmented-item/segmented-item.js.map +0 -1
  1104. package/esm2022/segmented/lib/segmented-token.js +0 -4
  1105. package/esm2022/segmented/lib/segmented-token.js.map +0 -1
  1106. package/esm2022/segmented/lib/segmented.types.js +0 -1
  1107. package/esm2022/segmented/lib/segmented.types.js.map +0 -1
  1108. package/esm2022/segmented/malva-ui-core-segmented.js +0 -5
  1109. package/esm2022/segmented/malva-ui-core-segmented.js.map +0 -1
  1110. package/esm2022/select/index.js +0 -4
  1111. package/esm2022/select/index.js.map +0 -1
  1112. package/esm2022/select/lib/select/select.js +0 -685
  1113. package/esm2022/select/lib/select/select.js.map +0 -1
  1114. package/esm2022/select/lib/select-option.js +0 -2
  1115. package/esm2022/select/lib/select-option.js.map +0 -1
  1116. package/esm2022/select/lib/select-template.directives.js +0 -34
  1117. package/esm2022/select/lib/select-template.directives.js.map +0 -1
  1118. package/esm2022/select/malva-ui-core-select.js +0 -5
  1119. package/esm2022/select/malva-ui-core-select.js.map +0 -1
  1120. package/esm2022/sidebar/index.js +0 -16
  1121. package/esm2022/sidebar/index.js.map +0 -1
  1122. package/esm2022/sidebar/lib/sidebar/sidebar.js +0 -251
  1123. package/esm2022/sidebar/lib/sidebar/sidebar.js.map +0 -1
  1124. package/esm2022/sidebar/lib/sidebar-content.js +0 -37
  1125. package/esm2022/sidebar/lib/sidebar-content.js.map +0 -1
  1126. package/esm2022/sidebar/lib/sidebar-context.js +0 -3
  1127. package/esm2022/sidebar/lib/sidebar-context.js.map +0 -1
  1128. package/esm2022/sidebar/lib/sidebar-footer.js +0 -20
  1129. package/esm2022/sidebar/lib/sidebar-footer.js.map +0 -1
  1130. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js +0 -341
  1131. package/esm2022/sidebar/lib/sidebar-group/sidebar-group.js.map +0 -1
  1132. package/esm2022/sidebar/lib/sidebar-header.js +0 -20
  1133. package/esm2022/sidebar/lib/sidebar-header.js.map +0 -1
  1134. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js +0 -216
  1135. package/esm2022/sidebar/lib/sidebar-item/sidebar-item.js.map +0 -1
  1136. package/esm2022/sidebar/lib/sidebar-item-host.js +0 -39
  1137. package/esm2022/sidebar/lib/sidebar-item-host.js.map +0 -1
  1138. package/esm2022/sidebar/lib/sidebar-item-icon.js +0 -14
  1139. package/esm2022/sidebar/lib/sidebar-item-icon.js.map +0 -1
  1140. package/esm2022/sidebar/lib/sidebar-mode.js +0 -1
  1141. package/esm2022/sidebar/lib/sidebar-mode.js.map +0 -1
  1142. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js +0 -202
  1143. package/esm2022/sidebar/lib/sidebar-rail/sidebar-rail.js.map +0 -1
  1144. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js +0 -159
  1145. package/esm2022/sidebar/lib/sidebar-trigger/sidebar-trigger.js.map +0 -1
  1146. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js +0 -35
  1147. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.js.map +0 -1
  1148. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js +0 -107
  1149. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.js.map +0 -1
  1150. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js +0 -1
  1151. package/esm2022/sidebar/lib/sidebar-workspace/sidebar-workspace.types.js.map +0 -1
  1152. package/esm2022/sidebar/malva-ui-core-sidebar.js +0 -5
  1153. package/esm2022/sidebar/malva-ui-core-sidebar.js.map +0 -1
  1154. package/esm2022/skeleton/index.js +0 -2
  1155. package/esm2022/skeleton/index.js.map +0 -1
  1156. package/esm2022/skeleton/lib/skeleton/skeleton.js +0 -78
  1157. package/esm2022/skeleton/lib/skeleton/skeleton.js.map +0 -1
  1158. package/esm2022/skeleton/malva-ui-core-skeleton.js +0 -5
  1159. package/esm2022/skeleton/malva-ui-core-skeleton.js.map +0 -1
  1160. package/esm2022/slider/index.js +0 -3
  1161. package/esm2022/slider/index.js.map +0 -1
  1162. package/esm2022/slider/lib/slider/slider-tooltip-def.js +0 -31
  1163. package/esm2022/slider/lib/slider/slider-tooltip-def.js.map +0 -1
  1164. package/esm2022/slider/lib/slider/slider.js +0 -468
  1165. package/esm2022/slider/lib/slider/slider.js.map +0 -1
  1166. package/esm2022/slider/malva-ui-core-slider.js +0 -5
  1167. package/esm2022/slider/malva-ui-core-slider.js.map +0 -1
  1168. package/esm2022/split-pane/index.js +0 -4
  1169. package/esm2022/split-pane/index.js.map +0 -1
  1170. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js +0 -49
  1171. package/esm2022/split-pane/lib/split-pane/split-pane-panel.js.map +0 -1
  1172. package/esm2022/split-pane/lib/split-pane/split-pane.js +0 -290
  1173. package/esm2022/split-pane/lib/split-pane/split-pane.js.map +0 -1
  1174. package/esm2022/split-pane/lib/split-pane/split-pane.types.js +0 -1
  1175. package/esm2022/split-pane/lib/split-pane/split-pane.types.js.map +0 -1
  1176. package/esm2022/split-pane/malva-ui-core-split-pane.js +0 -5
  1177. package/esm2022/split-pane/malva-ui-core-split-pane.js.map +0 -1
  1178. package/esm2022/status-indicator/index.js +0 -2
  1179. package/esm2022/status-indicator/index.js.map +0 -1
  1180. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js +0 -71
  1181. package/esm2022/status-indicator/lib/status-indicator/status-indicator.js.map +0 -1
  1182. package/esm2022/status-indicator/malva-ui-core-status-indicator.js +0 -5
  1183. package/esm2022/status-indicator/malva-ui-core-status-indicator.js.map +0 -1
  1184. package/esm2022/stepper/index.js +0 -5
  1185. package/esm2022/stepper/index.js.map +0 -1
  1186. package/esm2022/stepper/lib/stepper/step-header.js +0 -46
  1187. package/esm2022/stepper/lib/stepper/step-header.js.map +0 -1
  1188. package/esm2022/stepper/lib/stepper/step.js +0 -65
  1189. package/esm2022/stepper/lib/stepper/step.js.map +0 -1
  1190. package/esm2022/stepper/lib/stepper/stepper-token.js +0 -4
  1191. package/esm2022/stepper/lib/stepper/stepper-token.js.map +0 -1
  1192. package/esm2022/stepper/lib/stepper/stepper.js +0 -216
  1193. package/esm2022/stepper/lib/stepper/stepper.js.map +0 -1
  1194. package/esm2022/stepper/lib/stepper/stepper.types.js +0 -1
  1195. package/esm2022/stepper/lib/stepper/stepper.types.js.map +0 -1
  1196. package/esm2022/stepper/malva-ui-core-stepper.js +0 -5
  1197. package/esm2022/stepper/malva-ui-core-stepper.js.map +0 -1
  1198. package/esm2022/switch/index.js +0 -3
  1199. package/esm2022/switch/index.js.map +0 -1
  1200. package/esm2022/switch/lib/switch/switch.js +0 -190
  1201. package/esm2022/switch/lib/switch/switch.js.map +0 -1
  1202. package/esm2022/switch/lib/switch-group/switch-group.js +0 -68
  1203. package/esm2022/switch/lib/switch-group/switch-group.js.map +0 -1
  1204. package/esm2022/switch/lib/switch-group-token.js +0 -3
  1205. package/esm2022/switch/lib/switch-group-token.js.map +0 -1
  1206. package/esm2022/switch/malva-ui-core-switch.js +0 -5
  1207. package/esm2022/switch/malva-ui-core-switch.js.map +0 -1
  1208. package/esm2022/tabs/index.js +0 -9
  1209. package/esm2022/tabs/index.js.map +0 -1
  1210. package/esm2022/tabs/lib/tab/tab.js +0 -72
  1211. package/esm2022/tabs/lib/tab/tab.js.map +0 -1
  1212. package/esm2022/tabs/lib/tab-content/tab-content.js +0 -19
  1213. package/esm2022/tabs/lib/tab-content/tab-content.js.map +0 -1
  1214. package/esm2022/tabs/lib/tab-content-def.js +0 -14
  1215. package/esm2022/tabs/lib/tab-content-def.js.map +0 -1
  1216. package/esm2022/tabs/lib/tab-def.js +0 -17
  1217. package/esm2022/tabs/lib/tab-def.js.map +0 -1
  1218. package/esm2022/tabs/lib/tab-group-token.js +0 -3
  1219. package/esm2022/tabs/lib/tab-group-token.js.map +0 -1
  1220. package/esm2022/tabs/lib/tab-item/tab-item.js +0 -44
  1221. package/esm2022/tabs/lib/tab-item/tab-item.js.map +0 -1
  1222. package/esm2022/tabs/lib/tabs/tabs.js +0 -542
  1223. package/esm2022/tabs/lib/tabs/tabs.js.map +0 -1
  1224. package/esm2022/tabs/lib/tabs.service.js +0 -83
  1225. package/esm2022/tabs/lib/tabs.service.js.map +0 -1
  1226. package/esm2022/tabs/malva-ui-core-tabs.js +0 -5
  1227. package/esm2022/tabs/malva-ui-core-tabs.js.map +0 -1
  1228. package/esm2022/textarea/index.js +0 -2
  1229. package/esm2022/textarea/index.js.map +0 -1
  1230. package/esm2022/textarea/lib/textarea/textarea.js +0 -194
  1231. package/esm2022/textarea/lib/textarea/textarea.js.map +0 -1
  1232. package/esm2022/textarea/malva-ui-core-textarea.js +0 -5
  1233. package/esm2022/textarea/malva-ui-core-textarea.js.map +0 -1
  1234. package/esm2022/tile/index.js +0 -3
  1235. package/esm2022/tile/index.js.map +0 -1
  1236. package/esm2022/tile/lib/tile/tile.js +0 -39
  1237. package/esm2022/tile/lib/tile/tile.js.map +0 -1
  1238. package/esm2022/tile/lib/tile-header.js +0 -14
  1239. package/esm2022/tile/lib/tile-header.js.map +0 -1
  1240. package/esm2022/tile/malva-ui-core-tile.js +0 -5
  1241. package/esm2022/tile/malva-ui-core-tile.js.map +0 -1
  1242. package/esm2022/time-picker/index.js +0 -2
  1243. package/esm2022/time-picker/index.js.map +0 -1
  1244. package/esm2022/time-picker/lib/time-picker/time-picker.js +0 -310
  1245. package/esm2022/time-picker/lib/time-picker/time-picker.js.map +0 -1
  1246. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js +0 -216
  1247. package/esm2022/time-picker/lib/time-picker-column/time-picker-column.js.map +0 -1
  1248. package/esm2022/time-picker/malva-ui-core-time-picker.js +0 -5
  1249. package/esm2022/time-picker/malva-ui-core-time-picker.js.map +0 -1
  1250. package/esm2022/timeline/index.js +0 -6
  1251. package/esm2022/timeline/index.js.map +0 -1
  1252. package/esm2022/timeline/lib/timeline/timeline-item-icon.js +0 -31
  1253. package/esm2022/timeline/lib/timeline/timeline-item-icon.js.map +0 -1
  1254. package/esm2022/timeline/lib/timeline/timeline-item-meta.js +0 -31
  1255. package/esm2022/timeline/lib/timeline/timeline-item-meta.js.map +0 -1
  1256. package/esm2022/timeline/lib/timeline/timeline-item.js +0 -69
  1257. package/esm2022/timeline/lib/timeline/timeline-item.js.map +0 -1
  1258. package/esm2022/timeline/lib/timeline/timeline.js +0 -36
  1259. package/esm2022/timeline/lib/timeline/timeline.js.map +0 -1
  1260. package/esm2022/timeline/lib/timeline/timeline.types.js +0 -1
  1261. package/esm2022/timeline/lib/timeline/timeline.types.js.map +0 -1
  1262. package/esm2022/timeline/malva-ui-core-timeline.js +0 -5
  1263. package/esm2022/timeline/malva-ui-core-timeline.js.map +0 -1
  1264. package/esm2022/title/index.js +0 -2
  1265. package/esm2022/title/index.js.map +0 -1
  1266. package/esm2022/title/lib/title/title.js +0 -171
  1267. package/esm2022/title/lib/title/title.js.map +0 -1
  1268. package/esm2022/title/malva-ui-core-title.js +0 -5
  1269. package/esm2022/title/malva-ui-core-title.js.map +0 -1
  1270. package/esm2022/toast/index.js +0 -13
  1271. package/esm2022/toast/index.js.map +0 -1
  1272. package/esm2022/toast/lib/abstract-toast-container.js +0 -50
  1273. package/esm2022/toast/lib/abstract-toast-container.js.map +0 -1
  1274. package/esm2022/toast/lib/abstract-toast-item.js +0 -75
  1275. package/esm2022/toast/lib/abstract-toast-item.js.map +0 -1
  1276. package/esm2022/toast/lib/abstract-toast.service.js +0 -176
  1277. package/esm2022/toast/lib/abstract-toast.service.js.map +0 -1
  1278. package/esm2022/toast/lib/toast-container/toast-container.js +0 -61
  1279. package/esm2022/toast/lib/toast-container/toast-container.js.map +0 -1
  1280. package/esm2022/toast/lib/toast-item/toast-item.js +0 -62
  1281. package/esm2022/toast/lib/toast-item/toast-item.js.map +0 -1
  1282. package/esm2022/toast/lib/toast-ref.js +0 -54
  1283. package/esm2022/toast/lib/toast-ref.js.map +0 -1
  1284. package/esm2022/toast/lib/toast-timer.js +0 -37
  1285. package/esm2022/toast/lib/toast-timer.js.map +0 -1
  1286. package/esm2022/toast/lib/toast.directives.js +0 -76
  1287. package/esm2022/toast/lib/toast.directives.js.map +0 -1
  1288. package/esm2022/toast/lib/toast.service.js +0 -127
  1289. package/esm2022/toast/lib/toast.service.js.map +0 -1
  1290. package/esm2022/toast/lib/toast.types.js +0 -39
  1291. package/esm2022/toast/lib/toast.types.js.map +0 -1
  1292. package/esm2022/toast/malva-ui-core-toast.js +0 -5
  1293. package/esm2022/toast/malva-ui-core-toast.js.map +0 -1
  1294. package/esm2022/tokenizer/index.js +0 -4
  1295. package/esm2022/tokenizer/index.js.map +0 -1
  1296. package/esm2022/tokenizer/lib/token/token.js +0 -123
  1297. package/esm2022/tokenizer/lib/token/token.js.map +0 -1
  1298. package/esm2022/tokenizer/lib/token-template.js +0 -23
  1299. package/esm2022/tokenizer/lib/token-template.js.map +0 -1
  1300. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js +0 -324
  1301. package/esm2022/tokenizer/lib/tokenizer/tokenizer.js.map +0 -1
  1302. package/esm2022/tokenizer/malva-ui-core-tokenizer.js +0 -5
  1303. package/esm2022/tokenizer/malva-ui-core-tokenizer.js.map +0 -1
  1304. package/esm2022/toolbar/index.js +0 -4
  1305. package/esm2022/toolbar/index.js.map +0 -1
  1306. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js +0 -13
  1307. package/esm2022/toolbar/lib/toolbar/toolbar-spacer.js.map +0 -1
  1308. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js +0 -106
  1309. package/esm2022/toolbar/lib/toolbar/toolbar-widget.js.map +0 -1
  1310. package/esm2022/toolbar/lib/toolbar/toolbar.js +0 -19
  1311. package/esm2022/toolbar/lib/toolbar/toolbar.js.map +0 -1
  1312. package/esm2022/toolbar/malva-ui-core-toolbar.js +0 -5
  1313. package/esm2022/toolbar/malva-ui-core-toolbar.js.map +0 -1
  1314. package/esm2022/tooltip/index.js +0 -4
  1315. package/esm2022/tooltip/index.js.map +0 -1
  1316. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js +0 -69
  1317. package/esm2022/tooltip/lib/tooltip/tooltip-panel.js.map +0 -1
  1318. package/esm2022/tooltip/lib/tooltip/tooltip.js +0 -352
  1319. package/esm2022/tooltip/lib/tooltip/tooltip.js.map +0 -1
  1320. package/esm2022/tooltip/lib/tooltip/tooltip.types.js +0 -1
  1321. package/esm2022/tooltip/lib/tooltip/tooltip.types.js.map +0 -1
  1322. package/esm2022/tooltip/malva-ui-core-tooltip.js +0 -5
  1323. package/esm2022/tooltip/malva-ui-core-tooltip.js.map +0 -1
  1324. package/esm2022/tree/index.js +0 -5
  1325. package/esm2022/tree/index.js.map +0 -1
  1326. package/esm2022/tree/lib/tree/tree-context.js +0 -7
  1327. package/esm2022/tree/lib/tree/tree-context.js.map +0 -1
  1328. package/esm2022/tree/lib/tree/tree-node-def.js +0 -34
  1329. package/esm2022/tree/lib/tree/tree-node-def.js.map +0 -1
  1330. package/esm2022/tree/lib/tree/tree-node.js +0 -1
  1331. package/esm2022/tree/lib/tree/tree-node.js.map +0 -1
  1332. package/esm2022/tree/lib/tree/tree-subtree.js +0 -107
  1333. package/esm2022/tree/lib/tree/tree-subtree.js.map +0 -1
  1334. package/esm2022/tree/lib/tree/tree.js +0 -362
  1335. package/esm2022/tree/lib/tree/tree.js.map +0 -1
  1336. package/esm2022/tree/malva-ui-core-tree.js +0 -5
  1337. package/esm2022/tree/malva-ui-core-tree.js.map +0 -1
  1338. package/expand/index.d.ts +0 -2
  1339. package/expand/lib/expand/expand-content.d.ts +0 -26
  1340. package/expand/lib/expand/expand.d.ts +0 -74
  1341. package/expand/malva-ui-core-expand.d.ts +0 -5
  1342. package/file-upload/index.d.ts +0 -4
  1343. package/file-upload/lib/file-upload/file-upload.d.ts +0 -138
  1344. package/file-upload/lib/file-upload/file-upload.types.d.ts +0 -42
  1345. package/file-upload/lib/file-upload-action.d.ts +0 -53
  1346. package/file-upload/lib/file-upload-item/file-upload-item.d.ts +0 -30
  1347. package/file-upload/malva-ui-core-file-upload.d.ts +0 -5
  1348. package/filter/index.d.ts +0 -3
  1349. package/filter/lib/filter/filter.d.ts +0 -156
  1350. package/filter/lib/filter.types.d.ts +0 -75
  1351. package/filter/lib/smart-filter-bar/smart-filter-bar.d.ts +0 -153
  1352. package/filter/malva-ui-core-filter.d.ts +0 -5
  1353. package/form/index.d.ts +0 -6
  1354. package/form/lib/fieldset/fieldset.d.ts +0 -58
  1355. package/form/lib/fieldset-span.d.ts +0 -28
  1356. package/form/lib/form/form.d.ts +0 -37
  1357. package/form/lib/form-actions.d.ts +0 -20
  1358. package/form/lib/form-gap.d.ts +0 -5
  1359. package/form/lib/form-header.d.ts +0 -18
  1360. package/form/lib/form.types.d.ts +0 -13
  1361. package/form/malva-ui-core-form.d.ts +0 -5
  1362. package/form-utils/index.d.ts +0 -15
  1363. package/form-utils/lib/aria-value-bridge.d.ts +0 -45
  1364. package/form-utils/lib/description/description.d.ts +0 -16
  1365. package/form-utils/lib/focusable-group-base.d.ts +0 -76
  1366. package/form-utils/lib/form-control-base/signal-form-control-base.d.ts +0 -159
  1367. package/form-utils/lib/form-control-sides.d.ts +0 -20
  1368. package/form-utils/lib/form-control-wrapper/form-control-wrapper-control.d.ts +0 -6
  1369. package/form-utils/lib/form-control-wrapper/form-control-wrapper.d.ts +0 -20
  1370. package/form-utils/lib/form-field/form-field.d.ts +0 -68
  1371. package/form-utils/lib/hint/hint.d.ts +0 -5
  1372. package/form-utils/lib/label/label.d.ts +0 -22
  1373. package/form-utils/lib/message/message.d.ts +0 -7
  1374. package/form-utils/lib/models/error-display-strategy.d.ts +0 -1
  1375. package/form-utils/lib/models/form-control-connector.d.ts +0 -41
  1376. package/form-utils/lib/models/form-state.d.ts +0 -1
  1377. package/form-utils/lib/selection.service.d.ts +0 -27
  1378. package/form-utils/malva-ui-core-form-utils.d.ts +0 -5
  1379. package/form-utils/testing/index.d.ts +0 -1
  1380. package/form-utils/testing/lib/forms-binding-matrix.d.ts +0 -47
  1381. package/form-utils/testing/malva-ui-core-form-utils-testing.d.ts +0 -5
  1382. package/index.d.ts +0 -69
  1383. package/input/index.d.ts +0 -3
  1384. package/input/lib/input/input-native.d.ts +0 -36
  1385. package/input/lib/input/input-value-accessor.d.ts +0 -11
  1386. package/input/lib/input/input.d.ts +0 -189
  1387. package/input/lib/input/password-strength.d.ts +0 -34
  1388. package/input/malva-ui-core-input.d.ts +0 -5
  1389. package/kbd/index.d.ts +0 -1
  1390. package/kbd/lib/kbd/kbd.d.ts +0 -52
  1391. package/kbd/malva-ui-core-kbd.d.ts +0 -5
  1392. package/layout/index.d.ts +0 -4
  1393. package/layout/lib/layout/directives/MlvLayoutSide.d.ts +0 -6
  1394. package/layout/lib/layout/directives/MlvLayoutTop.d.ts +0 -6
  1395. package/layout/lib/layout/layout.d.ts +0 -20
  1396. package/layout/lib/layout/services/theme.service.d.ts +0 -33
  1397. package/layout/malva-ui-core-layout.d.ts +0 -5
  1398. package/link/index.d.ts +0 -2
  1399. package/link/lib/link/link.d.ts +0 -15
  1400. package/link/lib/link/link.directives.d.ts +0 -10
  1401. package/link/malva-ui-core-link.d.ts +0 -5
  1402. package/list/index.d.ts +0 -13
  1403. package/list/lib/list/list.d.ts +0 -25
  1404. package/list/lib/list-item/list-item.d.ts +0 -67
  1405. package/list/lib/list-item-actions.d.ts +0 -12
  1406. package/list/lib/list-item-byline.d.ts +0 -5
  1407. package/list/lib/list-item-group/list-item-group.d.ts +0 -11
  1408. package/list/lib/list-item-link/list-item-link.d.ts +0 -8
  1409. package/list/lib/list-item-media.d.ts +0 -5
  1410. package/list/lib/list-item-meta.d.ts +0 -5
  1411. package/list/lib/list-item-prefix.d.ts +0 -5
  1412. package/list/lib/list-item-suffix.d.ts +0 -5
  1413. package/list/lib/list-item-template.d.ts +0 -10
  1414. package/list/lib/list-item-title.d.ts +0 -5
  1415. package/list/lib/list-selectable.d.ts +0 -73
  1416. package/list/malva-ui-core-list.d.ts +0 -5
  1417. package/loader/index.d.ts +0 -1
  1418. package/loader/lib/loader/loader.d.ts +0 -84
  1419. package/loader/malva-ui-core-loader.d.ts +0 -5
  1420. package/malva-ui-core.d.ts +0 -5
  1421. package/menu/index.d.ts +0 -9
  1422. package/menu/lib/menu/menu-group-label.d.ts +0 -22
  1423. package/menu/lib/menu/menu-group.d.ts +0 -27
  1424. package/menu/lib/menu/menu-item.d.ts +0 -76
  1425. package/menu/lib/menu/menu-separator.d.ts +0 -18
  1426. package/menu/lib/menu/menu-trigger.d.ts +0 -255
  1427. package/menu/lib/menu/menu.d.ts +0 -149
  1428. package/menu/lib/menu/menu.types.d.ts +0 -13
  1429. package/menu/lib/menu/menubar.d.ts +0 -131
  1430. package/menu/lib/menu/menubar.types.d.ts +0 -82
  1431. package/menu/lib/menu/submenu-aim.d.ts +0 -10
  1432. package/menu/malva-ui-core-menu.d.ts +0 -5
  1433. package/notification/index.d.ts +0 -4
  1434. package/notification/lib/notification-item/notification-item.d.ts +0 -20
  1435. package/notification/lib/notification-ref.d.ts +0 -12
  1436. package/notification/lib/notification.service.d.ts +0 -43
  1437. package/notification/lib/notification.types.d.ts +0 -52
  1438. package/notification/malva-ui-core-notification.d.ts +0 -5
  1439. package/number-input/index.d.ts +0 -1
  1440. package/number-input/lib/number-input/number-input.d.ts +0 -162
  1441. package/number-input/malva-ui-core-number-input.d.ts +0 -5
  1442. package/page/index.d.ts +0 -14
  1443. package/page/lib/page/page-scroll.token.d.ts +0 -19
  1444. package/page/lib/page/page-snap-controller.d.ts +0 -87
  1445. package/page/lib/page/page-snap.directive.d.ts +0 -40
  1446. package/page/lib/page/page.d.ts +0 -74
  1447. package/page/lib/page-content/page-aside.d.ts +0 -7
  1448. package/page/lib/page-content/page-content.d.ts +0 -37
  1449. package/page/lib/page-dock/page-dock.d.ts +0 -50
  1450. package/page/lib/page-dock/page-dock.slots.d.ts +0 -16
  1451. package/page/lib/page-header/page-header.d.ts +0 -77
  1452. package/page/lib/page-header/page-header.directives.d.ts +0 -50
  1453. package/page/lib/page-shell/page-shell-color.d.ts +0 -48
  1454. package/page/lib/page-shell/page-shell-css-color.d.ts +0 -20
  1455. package/page/lib/page-shell/page-shell.d.ts +0 -44
  1456. package/page/lib/page-shell/page-shell.slots.d.ts +0 -16
  1457. package/page/lib/page-summary/page-summary-item.d.ts +0 -11
  1458. package/page/lib/page-summary/page-summary.d.ts +0 -36
  1459. package/page/malva-ui-core-page.d.ts +0 -5
  1460. package/pagination/index.d.ts +0 -4
  1461. package/pagination/lib/pagination/pagination.d.ts +0 -182
  1462. package/pagination/lib/pagination/pagination.directives.d.ts +0 -44
  1463. package/pagination/lib/pagination/pagination.model.d.ts +0 -6
  1464. package/pagination/lib/pagination/pagination.service.d.ts +0 -26
  1465. package/pagination/malva-ui-core-pagination.d.ts +0 -5
  1466. package/pin-input/index.d.ts +0 -2
  1467. package/pin-input/lib/pin-input/pin-input-separator.d.ts +0 -24
  1468. package/pin-input/lib/pin-input/pin-input.d.ts +0 -176
  1469. package/pin-input/malva-ui-core-pin-input.d.ts +0 -5
  1470. package/popup/index.d.ts +0 -9
  1471. package/popup/lib/popup/popup.d.ts +0 -343
  1472. package/popup/lib/popup-container/popup-container.d.ts +0 -61
  1473. package/popup/lib/popup-container/popup-container.token.d.ts +0 -34
  1474. package/popup/lib/popup-content.d.ts +0 -6
  1475. package/popup/lib/popup-header-content.d.ts +0 -18
  1476. package/popup/lib/popup-pinned-content.d.ts +0 -17
  1477. package/popup/lib/popup-positions.d.ts +0 -105
  1478. package/popup/lib/popup-trigger/popup-trigger.d.ts +0 -102
  1479. package/popup/lib/popup.service.d.ts +0 -159
  1480. package/popup/malva-ui-core-popup.d.ts +0 -5
  1481. package/progress/index.d.ts +0 -1
  1482. package/progress/lib/progress/progress.d.ts +0 -69
  1483. package/progress/malva-ui-core-progress.d.ts +0 -5
  1484. package/radio/index.d.ts +0 -2
  1485. package/radio/lib/radio/radio.d.ts +0 -87
  1486. package/radio/lib/radio-group/radio-group.d.ts +0 -35
  1487. package/radio/lib/radio-group-token.d.ts +0 -7
  1488. package/radio/malva-ui-core-radio.d.ts +0 -5
  1489. package/rating/index.d.ts +0 -1
  1490. package/rating/lib/rating/rating.d.ts +0 -100
  1491. package/rating/malva-ui-core-rating.d.ts +0 -5
  1492. package/scrollbar/index.d.ts +0 -1
  1493. package/scrollbar/lib/scrollbar/scrollbar.d.ts +0 -166
  1494. package/scrollbar/malva-ui-core-scrollbar.d.ts +0 -5
  1495. package/search-field/index.d.ts +0 -2
  1496. package/search-field/lib/search-field/search-field.d.ts +0 -347
  1497. package/search-field/lib/search-field/search-overlay-content.d.ts +0 -59
  1498. package/search-field/malva-ui-core-search-field.d.ts +0 -5
  1499. package/segmented/index.d.ts +0 -4
  1500. package/segmented/lib/segmented/segmented.d.ts +0 -80
  1501. package/segmented/lib/segmented-item/segmented-item.d.ts +0 -89
  1502. package/segmented/lib/segmented-token.d.ts +0 -22
  1503. package/segmented/lib/segmented.types.d.ts +0 -9
  1504. package/segmented/malva-ui-core-segmented.d.ts +0 -5
  1505. package/select/index.d.ts +0 -3
  1506. package/select/lib/select/select.d.ts +0 -379
  1507. package/select/lib/select-option.d.ts +0 -1
  1508. package/select/lib/select-template.directives.d.ts +0 -14
  1509. package/select/malva-ui-core-select.d.ts +0 -5
  1510. package/sidebar/index.d.ts +0 -15
  1511. package/sidebar/lib/sidebar/sidebar.d.ts +0 -134
  1512. package/sidebar/lib/sidebar-content.d.ts +0 -11
  1513. package/sidebar/lib/sidebar-context.d.ts +0 -23
  1514. package/sidebar/lib/sidebar-footer.d.ts +0 -9
  1515. package/sidebar/lib/sidebar-group/sidebar-group.d.ts +0 -127
  1516. package/sidebar/lib/sidebar-header.d.ts +0 -9
  1517. package/sidebar/lib/sidebar-item/sidebar-item.d.ts +0 -104
  1518. package/sidebar/lib/sidebar-item-host.d.ts +0 -18
  1519. package/sidebar/lib/sidebar-item-icon.d.ts +0 -6
  1520. package/sidebar/lib/sidebar-mode.d.ts +0 -2
  1521. package/sidebar/lib/sidebar-rail/sidebar-rail.d.ts +0 -54
  1522. package/sidebar/lib/sidebar-trigger/sidebar-trigger.d.ts +0 -67
  1523. package/sidebar/lib/sidebar-workspace/sidebar-workspace.d.ts +0 -54
  1524. package/sidebar/lib/sidebar-workspace/sidebar-workspace.directives.d.ts +0 -19
  1525. package/sidebar/lib/sidebar-workspace/sidebar-workspace.types.d.ts +0 -20
  1526. package/sidebar/malva-ui-core-sidebar.d.ts +0 -5
  1527. package/skeleton/index.d.ts +0 -1
  1528. package/skeleton/lib/skeleton/skeleton.d.ts +0 -60
  1529. package/skeleton/malva-ui-core-skeleton.d.ts +0 -5
  1530. package/slider/index.d.ts +0 -2
  1531. package/slider/lib/slider/slider-tooltip-def.d.ts +0 -39
  1532. package/slider/lib/slider/slider.d.ts +0 -171
  1533. package/slider/malva-ui-core-slider.d.ts +0 -5
  1534. package/split-pane/index.d.ts +0 -3
  1535. package/split-pane/lib/split-pane/split-pane-panel.d.ts +0 -34
  1536. package/split-pane/lib/split-pane/split-pane.d.ts +0 -98
  1537. package/split-pane/lib/split-pane/split-pane.types.d.ts +0 -7
  1538. package/split-pane/malva-ui-core-split-pane.d.ts +0 -5
  1539. package/status-indicator/index.d.ts +0 -1
  1540. package/status-indicator/lib/status-indicator/status-indicator.d.ts +0 -61
  1541. package/status-indicator/malva-ui-core-status-indicator.d.ts +0 -5
  1542. package/stepper/index.d.ts +0 -4
  1543. package/stepper/lib/stepper/step-header.d.ts +0 -34
  1544. package/stepper/lib/stepper/step.d.ts +0 -51
  1545. package/stepper/lib/stepper/stepper-token.d.ts +0 -13
  1546. package/stepper/lib/stepper/stepper.d.ts +0 -98
  1547. package/stepper/lib/stepper/stepper.types.d.ts +0 -4
  1548. package/stepper/malva-ui-core-stepper.d.ts +0 -5
  1549. package/switch/index.d.ts +0 -2
  1550. package/switch/lib/switch/switch.d.ts +0 -118
  1551. package/switch/lib/switch-group/switch-group.d.ts +0 -24
  1552. package/switch/lib/switch-group-token.d.ts +0 -6
  1553. package/switch/malva-ui-core-switch.d.ts +0 -5
  1554. package/tabs/index.d.ts +0 -8
  1555. package/tabs/lib/tab/tab.d.ts +0 -46
  1556. package/tabs/lib/tab-content/tab-content.d.ts +0 -11
  1557. package/tabs/lib/tab-content-def.d.ts +0 -6
  1558. package/tabs/lib/tab-def.d.ts +0 -11
  1559. package/tabs/lib/tab-group-token.d.ts +0 -10
  1560. package/tabs/lib/tab-item/tab-item.d.ts +0 -28
  1561. package/tabs/lib/tabs/tabs.d.ts +0 -202
  1562. package/tabs/lib/tabs.service.d.ts +0 -24
  1563. package/tabs/malva-ui-core-tabs.d.ts +0 -5
  1564. package/textarea/index.d.ts +0 -1
  1565. package/textarea/lib/textarea/textarea.d.ts +0 -77
  1566. package/textarea/malva-ui-core-textarea.d.ts +0 -5
  1567. package/tile/index.d.ts +0 -2
  1568. package/tile/lib/tile/tile.d.ts +0 -20
  1569. package/tile/lib/tile-header.d.ts +0 -6
  1570. package/tile/malva-ui-core-tile.d.ts +0 -5
  1571. package/time-picker/index.d.ts +0 -1
  1572. package/time-picker/lib/time-picker/time-picker.d.ts +0 -135
  1573. package/time-picker/lib/time-picker-column/time-picker-column.d.ts +0 -111
  1574. package/time-picker/malva-ui-core-time-picker.d.ts +0 -5
  1575. package/timeline/index.d.ts +0 -5
  1576. package/timeline/lib/timeline/timeline-item-icon.d.ts +0 -24
  1577. package/timeline/lib/timeline/timeline-item-meta.d.ts +0 -24
  1578. package/timeline/lib/timeline/timeline-item.d.ts +0 -52
  1579. package/timeline/lib/timeline/timeline.d.ts +0 -27
  1580. package/timeline/lib/timeline/timeline.types.d.ts +0 -18
  1581. package/timeline/malva-ui-core-timeline.d.ts +0 -5
  1582. package/title/index.d.ts +0 -1
  1583. package/title/lib/title/title.d.ts +0 -63
  1584. package/title/malva-ui-core-title.d.ts +0 -5
  1585. package/toast/index.d.ts +0 -10
  1586. package/toast/lib/abstract-toast-container.d.ts +0 -29
  1587. package/toast/lib/abstract-toast-item.d.ts +0 -44
  1588. package/toast/lib/abstract-toast.service.d.ts +0 -75
  1589. package/toast/lib/toast-container/toast-container.d.ts +0 -23
  1590. package/toast/lib/toast-item/toast-item.d.ts +0 -25
  1591. package/toast/lib/toast-ref.d.ts +0 -33
  1592. package/toast/lib/toast-timer.d.ts +0 -24
  1593. package/toast/lib/toast.directives.d.ts +0 -13
  1594. package/toast/lib/toast.service.d.ts +0 -41
  1595. package/toast/lib/toast.types.d.ts +0 -139
  1596. package/toast/malva-ui-core-toast.d.ts +0 -5
  1597. package/tokenizer/index.d.ts +0 -3
  1598. package/tokenizer/lib/token/token.d.ts +0 -60
  1599. package/tokenizer/lib/token-template.d.ts +0 -29
  1600. package/tokenizer/lib/tokenizer/tokenizer.d.ts +0 -109
  1601. package/tokenizer/malva-ui-core-tokenizer.d.ts +0 -5
  1602. package/toolbar/index.d.ts +0 -3
  1603. package/toolbar/lib/toolbar/toolbar-spacer.d.ts +0 -5
  1604. package/toolbar/lib/toolbar/toolbar-widget.d.ts +0 -75
  1605. package/toolbar/lib/toolbar/toolbar.d.ts +0 -8
  1606. package/toolbar/malva-ui-core-toolbar.d.ts +0 -5
  1607. package/tooltip/index.d.ts +0 -3
  1608. package/tooltip/lib/tooltip/tooltip-panel.d.ts +0 -26
  1609. package/tooltip/lib/tooltip/tooltip.d.ts +0 -148
  1610. package/tooltip/lib/tooltip/tooltip.types.d.ts +0 -17
  1611. package/tooltip/malva-ui-core-tooltip.d.ts +0 -5
  1612. package/tree/index.d.ts +0 -4
  1613. package/tree/lib/tree/tree-context.d.ts +0 -62
  1614. package/tree/lib/tree/tree-node-def.d.ts +0 -33
  1615. package/tree/lib/tree/tree-node.d.ts +0 -45
  1616. package/tree/lib/tree/tree-subtree.d.ts +0 -63
  1617. package/tree/lib/tree/tree.d.ts +0 -156
  1618. package/tree/malva-ui-core-tree.d.ts +0 -5
@@ -0,0 +1,825 @@
1
+ import * as i0 from '@angular/core';
2
+ import { InjectionToken, input, output, inject, signal, computed, ChangeDetectionStrategy, ViewEncapsulation, Component, Injectable, DestroyRef, TemplateRef, Directive, contentChild, contentChildren, viewChild, effect, afterRenderEffect } from '@angular/core';
3
+ import { NgTemplateOutlet, DatePipe, formatDate } from '@angular/common';
4
+ import { coerceBooleanProperty } from '@angular/cdk/coercion';
5
+ import { MlvResizeObserverService } from '@malva-ui/cdk/utils';
6
+ import * as i1 from '@malva-ui/cdk/density';
7
+ import { MLV_DENSITY_ELEMENT, MlvDensityDirective } from '@malva-ui/cdk/density';
8
+ import { MLV_CHAT_I18N, MlvTranslatePipe } from '@malva-ui/i18n';
9
+ import { MlvAvatar, MlvColorFromTextPipe } from '@malva-ui/core/avatar';
10
+ import { MlvLoader } from '@malva-ui/core/loader';
11
+ import { MlvSkeleton } from '@malva-ui/core/skeleton';
12
+ import { LucidePlay, LucidePause, LucideCheck, LucideCheckCheck, LucideCircleAlert, LucideClock, LucideCornerUpLeft, LucideMusic } from '@lucide/angular';
13
+ import { MlvProgress } from '@malva-ui/core/progress';
14
+ import { MlvButton } from '@malva-ui/core/button';
15
+ import { MlvSlider } from '@malva-ui/core/slider';
16
+ import { MlvScrollbar } from '@malva-ui/core/scrollbar';
17
+
18
+ /**
19
+ * Users map (id → user) provided by `mlv-chat` so bubbles can resolve author
20
+ * display names (reply quotes). Optional — standalone bubbles render without it.
21
+ */
22
+ const MLV_CHAT_USERS = new InjectionToken('MLV_CHAT_USERS');
23
+ /** Custom message-type templates (type → def) provided by `mlv-chat`. */
24
+ const MLV_CHAT_MESSAGE_DEFS = new InjectionToken('MLV_CHAT_MESSAGE_DEFS');
25
+
26
+ /** Normalizes the {@link MlvChatMessageData.timestamp} union to a Date. */
27
+ function toChatDate(timestamp) {
28
+ return timestamp instanceof Date ? timestamp : new Date(timestamp);
29
+ }
30
+ /** True when both dates fall on the same calendar day (local time). */
31
+ function isSameChatDay(a, b) {
32
+ return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();
33
+ }
34
+ /**
35
+ * Flattens an oldest→newest message array into date separators + author groups.
36
+ * A group breaks on author change, on a gap larger than `groupWindowMinutes`,
37
+ * and always at a calendar-day boundary.
38
+ *
39
+ * @param messages Messages ordered oldest → newest.
40
+ * @param selfId Current user id; groups authored by it are flagged `own`.
41
+ * @param groupWindowMinutes Maximum gap between consecutive messages of one group.
42
+ * @param dateSeparators Whether `kind: 'date'` items are emitted at day boundaries.
43
+ */
44
+ function buildChatRenderList(messages, selfId, groupWindowMinutes, dateSeparators) {
45
+ const items = [];
46
+ let pending = [];
47
+ let prevDate = null;
48
+ const flush = () => {
49
+ if (!pending.length)
50
+ return;
51
+ const rendered = pending.map((message, i) => ({
52
+ message,
53
+ position: pending.length === 1 ? 'single' : i === 0 ? 'first' : i === pending.length - 1 ? 'last' : 'middle',
54
+ }));
55
+ items.push({
56
+ kind: 'group',
57
+ id: `group-${pending[0].id}`,
58
+ authorId: pending[0].authorId,
59
+ own: pending[0].authorId === selfId,
60
+ messages: rendered,
61
+ });
62
+ pending = [];
63
+ };
64
+ for (const message of messages) {
65
+ const date = toChatDate(message.timestamp);
66
+ const dayBreak = prevDate === null || !isSameChatDay(prevDate, date);
67
+ const gapBreak = prevDate !== null && date.getTime() - prevDate.getTime() > groupWindowMinutes * 60_000;
68
+ const authorBreak = pending.length > 0 && pending[0].authorId !== message.authorId;
69
+ if (dayBreak || gapBreak || authorBreak)
70
+ flush();
71
+ if (dayBreak && dateSeparators) {
72
+ items.push({ kind: 'date', id: `date-${date.getFullYear()}-${date.getMonth()}-${date.getDate()}`, date });
73
+ }
74
+ pending.push(message);
75
+ prevDate = date;
76
+ }
77
+ flush();
78
+ return items;
79
+ }
80
+
81
+ /**
82
+ * Formats a duration in seconds as `m:ss` (e.g. 75 → '1:15').
83
+ * Negative or non-finite input renders as '0:00'.
84
+ */
85
+ function formatChatDuration(seconds) {
86
+ const total = Number.isFinite(seconds) && seconds > 0 ? Math.floor(seconds) : 0;
87
+ const minutes = Math.floor(total / 60);
88
+ const rest = total % 60;
89
+ return `${minutes}:${rest.toString().padStart(2, '0')}`;
90
+ }
91
+
92
+ /**
93
+ * Internal renderer for the image/gif/video attachments of a chat message.
94
+ * Not exported from the package barrel — `mlv-chat-message` owns it.
95
+ */
96
+ class MlvChatMediaGrid {
97
+ /** Visual attachments to render; audio entries must be filtered out by the caller. */
98
+ attachments = input.required(/* @ts-ignore */
99
+ ...(ngDevMode ? [{ debugName: "attachments" }] : /* istanbul ignore next */ []));
100
+ /** Condensed rendering inside a reply quote: a single small thumbnail. */
101
+ quote = input(false, { ...(ngDevMode ? { debugName: "quote" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
102
+ /** Emits the attachment whose cell was activated. */
103
+ mediaClick = output();
104
+ /** @internal Chat i18n strings. */
105
+ _i18n = inject(MLV_CHAT_I18N);
106
+ /** @internal Ids of images whose load event fired, so their skeleton is removed. */
107
+ _loaded = signal(new Set(), /* @ts-ignore */
108
+ ...(ngDevMode ? [{ debugName: "_loaded" }] : /* istanbul ignore next */ []));
109
+ /** @internal Cells rendered to the DOM: one in quote mode, otherwise the first four. */
110
+ _visible = computed(() => this.attachments().slice(0, this.quote() ? 1 : 4), /* @ts-ignore */
111
+ ...(ngDevMode ? [{ debugName: "_visible" }] : /* istanbul ignore next */ []));
112
+ /** @internal Count of attachments hidden behind the +N overlay. */
113
+ _extra = computed(() => this.quote() ? 0 : Math.max(0, this.attachments().length - 4), /* @ts-ignore */
114
+ ...(ngDevMode ? [{ debugName: "_extra" }] : /* istanbul ignore next */ []));
115
+ /** @internal Formats a duration in seconds as `m:ss` for the video chip. */
116
+ _formatDuration = formatChatDuration;
117
+ /** @internal True while an attachment carries upload progress, so the overlay shows. */
118
+ _isUploading(attachment) {
119
+ return attachment.uploadProgress !== undefined && attachment.uploadProgress !== null;
120
+ }
121
+ /** @internal Marks an image as loaded so its skeleton placeholder is removed. */
122
+ _onLoad(id) {
123
+ this._loaded.update((set) => new Set(set).add(id));
124
+ }
125
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatMediaGrid, deps: [], target: i0.ɵɵFactoryTarget.Component });
126
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvChatMediaGrid, isStandalone: true, selector: "mlv-chat-media-grid", inputs: { attachments: { classPropertyName: "attachments", publicName: "attachments", isSignal: true, isRequired: true, transformFunction: null }, quote: { classPropertyName: "quote", publicName: "quote", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { mediaClick: "mediaClick" }, host: { properties: { "class.mlv-chat-media-grid--single": "_visible().length === 1", "class.mlv-chat-media-grid--quote": "quote()" }, classAttribute: "mlv-chat-media-grid" }, ngImport: i0, template: "@for (att of _visible(); track att.id; let last = $last) {\n <button\n type=\"button\"\n class=\"mlv-chat-media-grid__cell\"\n [class.mlv-chat-media-grid__cell--uploading]=\"_isUploading(att)\"\n [style.aspect-ratio]=\"att.width && att.height ? att.width + ' / ' + att.height : null\"\n [attr.aria-label]=\"\n last && _extra() > 0\n ? (_i18n().moreMedia | mlvTranslate: { count: _extra() })\n : (att.alt ?? _i18n().imageFallbackAlt)\n \"\n (click)=\"mediaClick.emit(att)\"\n >\n @switch (att.kind) {\n @case ('gif') {\n <video [src]=\"att.src\" [autoplay]=\"true\" [muted]=\"true\" [loop]=\"true\" playsinline></video>\n }\n @case ('video') {\n @if (att.poster) {\n <img [src]=\"att.poster\" [alt]=\"att.alt ?? ''\" loading=\"lazy\" />\n } @else {\n <video [src]=\"att.src\" preload=\"metadata\" [muted]=\"true\" playsinline></video>\n }\n <span class=\"mlv-chat-media-grid__play\">\n <svg lucidePlay [size]=\"20\" aria-hidden=\"true\" />\n </span>\n @if (att.duration) {\n <span class=\"mlv-chat-media-grid__duration\">{{ _formatDuration(att.duration) }}</span>\n }\n }\n @default {\n @if (!_loaded().has(att.id)) {\n <mlv-skeleton class=\"mlv-chat-media-grid__placeholder\" width=\"100%\" height=\"100%\" />\n }\n <img [src]=\"att.src\" [alt]=\"att.alt ?? ''\" loading=\"lazy\" (load)=\"_onLoad(att.id)\" />\n }\n }\n @if (_isUploading(att)) {\n <span class=\"mlv-chat-media-grid__upload\">\n <mlv-progress shape=\"circle\" size=\"s\" [value]=\"att.uploadProgress ?? 0\" />\n </span>\n }\n @if (last && _extra() > 0) {\n <span class=\"mlv-chat-media-grid__more\" aria-hidden=\"true\">+{{ _extra() }}</span>\n }\n </button>\n}\n", styles: ["@layer mlv.components{.mlv-chat-media-grid{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-media-grid *{box-sizing:border-box}.mlv-chat-media-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.125rem;max-width:20rem;border-radius:var(--mlv-radius-m);overflow:hidden}.mlv-chat-media-grid--single{grid-template-columns:1fr}.mlv-chat-media-grid--quote{max-width:2.5rem;gap:0}.mlv-chat-media-grid__cell{position:relative;display:block;padding:0;border:none;background:none;cursor:pointer;min-height:4rem;overflow:hidden}.mlv-chat-media-grid__cell img,.mlv-chat-media-grid__cell video{display:block;width:100%;height:100%;object-fit:cover}.mlv-chat-media-grid__cell:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:calc(var(--mlv-focus-ring-offset) * -1)}.mlv-chat-media-grid__cell--uploading img,.mlv-chat-media-grid__cell--uploading video{opacity:var(--mlv-disabled-opacity)}.mlv-chat-media-grid--quote .mlv-chat-media-grid__cell{width:2.5rem;height:2.5rem;min-height:0}.mlv-chat-media-grid__placeholder{position:absolute;inset:0}.mlv-chat-media-grid__play,.mlv-chat-media-grid__upload{position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center}.mlv-chat-media-grid__play{inline-size:2.5rem;block-size:2.5rem;border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-overlay);color:var(--mlv-text-inverse)}.mlv-chat-media-grid__duration{position:absolute;inset-block-end:.25rem;inset-inline-end:.25rem;padding:.0625rem .25rem;border-radius:var(--mlv-radius-badge);background-color:var(--mlv-background-overlay);color:var(--mlv-text-inverse)}.mlv-chat-media-grid__more{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:var(--mlv-background-overlay);color:var(--mlv-text-inverse);font-size:var(--mlv-typography-body-l-size)}}\n"], dependencies: [{ kind: "component", type: LucidePlay, selector: "svg[lucidePlay]" }, { kind: "component", type: MlvProgress, selector: "mlv-progress", inputs: ["shape", "value", "size", "tone", "showPercentage", "ariaLabel"] }, { kind: "component", type: MlvSkeleton, selector: "mlv-skeleton", inputs: ["variant", "width", "height", "animated", "animationDuration"] }, { kind: "pipe", type: MlvTranslatePipe, name: "mlvTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
127
+ }
128
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatMediaGrid, decorators: [{
129
+ type: Component,
130
+ args: [{ selector: 'mlv-chat-media-grid', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LucidePlay, MlvProgress, MlvSkeleton, MlvTranslatePipe], host: {
131
+ class: 'mlv-chat-media-grid',
132
+ '[class.mlv-chat-media-grid--single]': '_visible().length === 1',
133
+ '[class.mlv-chat-media-grid--quote]': 'quote()',
134
+ }, template: "@for (att of _visible(); track att.id; let last = $last) {\n <button\n type=\"button\"\n class=\"mlv-chat-media-grid__cell\"\n [class.mlv-chat-media-grid__cell--uploading]=\"_isUploading(att)\"\n [style.aspect-ratio]=\"att.width && att.height ? att.width + ' / ' + att.height : null\"\n [attr.aria-label]=\"\n last && _extra() > 0\n ? (_i18n().moreMedia | mlvTranslate: { count: _extra() })\n : (att.alt ?? _i18n().imageFallbackAlt)\n \"\n (click)=\"mediaClick.emit(att)\"\n >\n @switch (att.kind) {\n @case ('gif') {\n <video [src]=\"att.src\" [autoplay]=\"true\" [muted]=\"true\" [loop]=\"true\" playsinline></video>\n }\n @case ('video') {\n @if (att.poster) {\n <img [src]=\"att.poster\" [alt]=\"att.alt ?? ''\" loading=\"lazy\" />\n } @else {\n <video [src]=\"att.src\" preload=\"metadata\" [muted]=\"true\" playsinline></video>\n }\n <span class=\"mlv-chat-media-grid__play\">\n <svg lucidePlay [size]=\"20\" aria-hidden=\"true\" />\n </span>\n @if (att.duration) {\n <span class=\"mlv-chat-media-grid__duration\">{{ _formatDuration(att.duration) }}</span>\n }\n }\n @default {\n @if (!_loaded().has(att.id)) {\n <mlv-skeleton class=\"mlv-chat-media-grid__placeholder\" width=\"100%\" height=\"100%\" />\n }\n <img [src]=\"att.src\" [alt]=\"att.alt ?? ''\" loading=\"lazy\" (load)=\"_onLoad(att.id)\" />\n }\n }\n @if (_isUploading(att)) {\n <span class=\"mlv-chat-media-grid__upload\">\n <mlv-progress shape=\"circle\" size=\"s\" [value]=\"att.uploadProgress ?? 0\" />\n </span>\n }\n @if (last && _extra() > 0) {\n <span class=\"mlv-chat-media-grid__more\" aria-hidden=\"true\">+{{ _extra() }}</span>\n }\n </button>\n}\n", styles: ["@layer mlv.components{.mlv-chat-media-grid{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-media-grid *{box-sizing:border-box}.mlv-chat-media-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:.125rem;max-width:20rem;border-radius:var(--mlv-radius-m);overflow:hidden}.mlv-chat-media-grid--single{grid-template-columns:1fr}.mlv-chat-media-grid--quote{max-width:2.5rem;gap:0}.mlv-chat-media-grid__cell{position:relative;display:block;padding:0;border:none;background:none;cursor:pointer;min-height:4rem;overflow:hidden}.mlv-chat-media-grid__cell img,.mlv-chat-media-grid__cell video{display:block;width:100%;height:100%;object-fit:cover}.mlv-chat-media-grid__cell:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:calc(var(--mlv-focus-ring-offset) * -1)}.mlv-chat-media-grid__cell--uploading img,.mlv-chat-media-grid__cell--uploading video{opacity:var(--mlv-disabled-opacity)}.mlv-chat-media-grid--quote .mlv-chat-media-grid__cell{width:2.5rem;height:2.5rem;min-height:0}.mlv-chat-media-grid__placeholder{position:absolute;inset:0}.mlv-chat-media-grid__play,.mlv-chat-media-grid__upload{position:absolute;inset-block-start:50%;inset-inline-start:50%;transform:translate(-50%,-50%);display:inline-flex;align-items:center;justify-content:center}.mlv-chat-media-grid__play{inline-size:2.5rem;block-size:2.5rem;border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-overlay);color:var(--mlv-text-inverse)}.mlv-chat-media-grid__duration{position:absolute;inset-block-end:.25rem;inset-inline-end:.25rem;padding:.0625rem .25rem;border-radius:var(--mlv-radius-badge);background-color:var(--mlv-background-overlay);color:var(--mlv-text-inverse)}.mlv-chat-media-grid__more{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background-color:var(--mlv-background-overlay);color:var(--mlv-text-inverse);font-size:var(--mlv-typography-body-l-size)}}\n"] }]
135
+ }], propDecorators: { attachments: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachments", required: true }] }], quote: [{ type: i0.Input, args: [{ isSignal: true, alias: "quote", required: false }] }], mediaClick: [{ type: i0.Output, args: ["mediaClick"] }] } });
136
+
137
+ /**
138
+ * Coordinates one-at-a-time playback across the audio bubbles of a single
139
+ * `mlv-chat`. Provided by the container, never `providedIn: 'root'` — two
140
+ * chats on one page keep independent playback.
141
+ */
142
+ class MlvChatAudioService {
143
+ /** @private The player currently allowed to play. */
144
+ _current = null;
145
+ /** Registers `player` as the active one, pausing the previously active player. */
146
+ requestPlay(player) {
147
+ if (this._current && this._current !== player)
148
+ this._current.pause();
149
+ this._current = player;
150
+ }
151
+ /** Clears the active slot when a player pauses or ends on its own. */
152
+ release(player) {
153
+ if (this._current === player)
154
+ this._current = null;
155
+ }
156
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAudioService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
157
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAudioService });
158
+ }
159
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAudioService, decorators: [{
160
+ type: Injectable
161
+ }] });
162
+
163
+ /** Creates the `HTMLAudioElement` a player drives; overridable in tests. */
164
+ const MLV_CHAT_AUDIO_FACTORY = new InjectionToken('MLV_CHAT_AUDIO_FACTORY', { providedIn: 'root', factory: () => (src) => new Audio(src) });
165
+ /**
166
+ * Internal player for an audio attachment: play/pause, a seek slider, and the
167
+ * elapsed/total time. Playback is exclusive per `mlv-chat` when the container
168
+ * provides {@link MlvChatAudioService}.
169
+ */
170
+ class MlvChatAudio {
171
+ /** The audio attachment to play. */
172
+ attachment = input.required(/* @ts-ignore */
173
+ ...(ngDevMode ? [{ debugName: "attachment" }] : /* istanbul ignore next */ []));
174
+ /** @internal Chat i18n strings. */
175
+ _i18n = inject(MLV_CHAT_I18N);
176
+ /** @private Creates the underlying audio element on first playback. */
177
+ _audioFactory = inject(MLV_CHAT_AUDIO_FACTORY);
178
+ /** @private Container-scoped playback coordinator; null for a standalone player. */
179
+ _playback = inject(MlvChatAudioService, { optional: true });
180
+ /** @private Lazily created audio element; null until the first play. */
181
+ _audio = null;
182
+ /** @internal True while the element is playing. */
183
+ _playing = signal(false, /* @ts-ignore */
184
+ ...(ngDevMode ? [{ debugName: "_playing" }] : /* istanbul ignore next */ []));
185
+ /** @internal Playback position in seconds. */
186
+ _currentTime = signal(0, /* @ts-ignore */
187
+ ...(ngDevMode ? [{ debugName: "_currentTime" }] : /* istanbul ignore next */ []));
188
+ /** @private Duration reported by the element once metadata has loaded. */
189
+ _metadataDuration = signal(null, /* @ts-ignore */
190
+ ...(ngDevMode ? [{ debugName: "_metadataDuration" }] : /* istanbul ignore next */ []));
191
+ /** @internal Total duration: element metadata wins over the declared value. */
192
+ _duration = computed(() => this._metadataDuration() ?? this.attachment().duration ?? 0, /* @ts-ignore */
193
+ ...(ngDevMode ? [{ debugName: "_duration" }] : /* istanbul ignore next */ []));
194
+ /** @internal True while the attachment is still uploading; playback is blocked. */
195
+ _uploading = computed(() => {
196
+ const progress = this.attachment().uploadProgress;
197
+ return progress !== undefined && progress !== null;
198
+ }, /* @ts-ignore */
199
+ ...(ngDevMode ? [{ debugName: "_uploading" }] : /* istanbul ignore next */ []));
200
+ /** @internal Formats seconds as `m:ss` for the elapsed/total readout. */
201
+ _formatDuration = formatChatDuration;
202
+ constructor() {
203
+ inject(DestroyRef).onDestroy(() => {
204
+ this._audio?.pause();
205
+ this._playback?.release(this);
206
+ });
207
+ }
208
+ /** Pauses playback. Called by the container coordinator when another player starts. */
209
+ pause() {
210
+ this._audio?.pause();
211
+ this._playing.set(false);
212
+ }
213
+ /** @internal Toggles between play and pause. */
214
+ _toggle() {
215
+ if (this._playing()) {
216
+ this.pause();
217
+ this._playback?.release(this);
218
+ return;
219
+ }
220
+ const audio = this._ensureAudio();
221
+ this._playback?.requestPlay(this);
222
+ void audio.play();
223
+ this._playing.set(true);
224
+ }
225
+ /**
226
+ * @internal Seeks to the given position in seconds. The slider emits the shared
227
+ * `MlvSliderValue` union; only the scalar form is used here (no range thumbs).
228
+ */
229
+ _seek(value) {
230
+ const seconds = Array.isArray(value) ? value[0] : value;
231
+ this._currentTime.set(seconds);
232
+ if (this._audio)
233
+ this._audio.currentTime = seconds;
234
+ }
235
+ /** @private Creates the audio element and wires its listeners on first use. */
236
+ _ensureAudio() {
237
+ if (this._audio)
238
+ return this._audio;
239
+ const audio = this._audioFactory(this.attachment().src);
240
+ audio.addEventListener('timeupdate', () => this._currentTime.set(audio.currentTime));
241
+ audio.addEventListener('loadedmetadata', () => {
242
+ if (Number.isFinite(audio.duration))
243
+ this._metadataDuration.set(audio.duration);
244
+ });
245
+ audio.addEventListener('ended', () => {
246
+ this._playing.set(false);
247
+ this._currentTime.set(0);
248
+ this._playback?.release(this);
249
+ });
250
+ this._audio = audio;
251
+ return audio;
252
+ }
253
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAudio, deps: [], target: i0.ɵɵFactoryTarget.Component });
254
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvChatAudio, isStandalone: true, selector: "mlv-chat-audio", inputs: { attachment: { classPropertyName: "attachment", publicName: "attachment", isSignal: true, isRequired: true, transformFunction: null } }, host: { properties: { "class.mlv-chat-audio--uploading": "_uploading()" }, classAttribute: "mlv-chat-audio" }, ngImport: i0, template: "<button\n mlvButton\n type=\"button\"\n class=\"mlv-chat-audio__toggle\"\n shape=\"circle\"\n [disabled]=\"_uploading()\"\n [attr.aria-label]=\"_playing() ? _i18n().pauseAudio : _i18n().playAudio\"\n (click)=\"_toggle()\"\n>\n @if (_playing()) {\n <svg lucidePause [size]=\"16\" aria-hidden=\"true\" />\n } @else {\n <svg lucidePlay [size]=\"16\" aria-hidden=\"true\" />\n }\n</button>\n@if (_uploading()) {\n<span class=\"mlv-chat-audio__upload\">\n <mlv-progress size=\"s\" [value]=\"attachment().uploadProgress ?? 0\" />\n</span>\n} @else {\n<mlv-slider\n class=\"mlv-chat-audio__seek\"\n [min]=\"0\"\n [max]=\"_duration()\"\n [value]=\"_currentTime()\"\n [label]=\"_i18n().playAudio\"\n (valueChange)=\"_seek($event)\"\n/>\n}\n<span class=\"mlv-chat-audio__time\">\n {{ _formatDuration(_currentTime()) }} / {{ _formatDuration(_duration()) }}\n</span>\n", styles: ["@layer mlv.components{.mlv-chat-audio{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-audio *{box-sizing:border-box}.mlv-chat-audio{display:flex;align-items:center;gap:.5rem;min-inline-size:12rem}.mlv-chat-audio__seek,.mlv-chat-audio__upload{flex:1;min-inline-size:4rem}.mlv-chat-audio__time{font-variant-numeric:tabular-nums;white-space:nowrap;opacity:.7}}\n"], dependencies: [{ kind: "component", type: LucidePause, selector: "svg[lucidePause]" }, { kind: "component", type: LucidePlay, selector: "svg[lucidePlay]" }, { kind: "component", type: MlvButton, selector: "button[mlvButton], a[mlvButton]", inputs: ["variant", "shape", "disabled", "loading", "selected"] }, { kind: "component", type: MlvProgress, selector: "mlv-progress", inputs: ["shape", "value", "size", "tone", "showPercentage", "ariaLabel"] }, { kind: "component", type: MlvSlider, selector: "mlv-slider", inputs: ["orientation", "min", "max", "step", "showTicks", "range", "tooltip", "value"], outputs: ["valueChange"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
255
+ }
256
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAudio, decorators: [{
257
+ type: Component,
258
+ args: [{ selector: 'mlv-chat-audio', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [LucidePause, LucidePlay, MlvButton, MlvProgress, MlvSlider], host: {
259
+ class: 'mlv-chat-audio',
260
+ '[class.mlv-chat-audio--uploading]': '_uploading()',
261
+ }, template: "<button\n mlvButton\n type=\"button\"\n class=\"mlv-chat-audio__toggle\"\n shape=\"circle\"\n [disabled]=\"_uploading()\"\n [attr.aria-label]=\"_playing() ? _i18n().pauseAudio : _i18n().playAudio\"\n (click)=\"_toggle()\"\n>\n @if (_playing()) {\n <svg lucidePause [size]=\"16\" aria-hidden=\"true\" />\n } @else {\n <svg lucidePlay [size]=\"16\" aria-hidden=\"true\" />\n }\n</button>\n@if (_uploading()) {\n<span class=\"mlv-chat-audio__upload\">\n <mlv-progress size=\"s\" [value]=\"attachment().uploadProgress ?? 0\" />\n</span>\n} @else {\n<mlv-slider\n class=\"mlv-chat-audio__seek\"\n [min]=\"0\"\n [max]=\"_duration()\"\n [value]=\"_currentTime()\"\n [label]=\"_i18n().playAudio\"\n (valueChange)=\"_seek($event)\"\n/>\n}\n<span class=\"mlv-chat-audio__time\">\n {{ _formatDuration(_currentTime()) }} / {{ _formatDuration(_duration()) }}\n</span>\n", styles: ["@layer mlv.components{.mlv-chat-audio{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-audio *{box-sizing:border-box}.mlv-chat-audio{display:flex;align-items:center;gap:.5rem;min-inline-size:12rem}.mlv-chat-audio__seek,.mlv-chat-audio__upload{flex:1;min-inline-size:4rem}.mlv-chat-audio__time{font-variant-numeric:tabular-nums;white-space:nowrap;opacity:.7}}\n"] }]
262
+ }], ctorParameters: () => [], propDecorators: { attachment: [{ type: i0.Input, args: [{ isSignal: true, alias: "attachment", required: true }] }] } });
263
+
264
+ /**
265
+ * A single chat bubble. Normally rendered internally by `mlv-chat`, but usable
266
+ * standalone. Renders text, reply quotes, delivery status ticks, and the meta
267
+ * row; media/audio attachments are rendered by internal sub-components.
268
+ */
269
+ class MlvChatMessage {
270
+ /** The message to render. */
271
+ message = input.required(/* @ts-ignore */
272
+ ...(ngDevMode ? [{ debugName: "message" }] : /* istanbul ignore next */ []));
273
+ /** True when authored by the current user (right-aligned, accent bubble, status ticks). */
274
+ own = input(false, { ...(ngDevMode ? { debugName: "own" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
275
+ /** Position inside the consecutive-author group; drives corner-tail radii. */
276
+ groupPosition = input('single', /* @ts-ignore */
277
+ ...(ngDevMode ? [{ debugName: "groupPosition" }] : /* istanbul ignore next */ []));
278
+ /** Condensed quote rendering (inside a reply block): clamped text, no meta row. */
279
+ quote = input(false, { ...(ngDevMode ? { debugName: "quote" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
280
+ /** Emits when the retry button of a failed own message is activated. */
281
+ retry = output();
282
+ /** Emits the clicked media attachment (image/video cell). */
283
+ mediaClick = output();
284
+ /** Emits the embedded replied-to message when the quote block is activated. */
285
+ replyClick = output();
286
+ /** @internal Chat i18n strings. */
287
+ _i18n = inject(MLV_CHAT_I18N);
288
+ /** @private Users map provided by the surrounding `mlv-chat`; null when standalone. */
289
+ _users = inject(MLV_CHAT_USERS, { optional: true });
290
+ /** @internal Custom message-type templates provided by the surrounding `mlv-chat`. */
291
+ _defs = inject(MLV_CHAT_MESSAGE_DEFS, { optional: true });
292
+ /** @internal Normalized timestamp for the DatePipe. */
293
+ _date = computed(() => toChatDate(this.message().timestamp), /* @ts-ignore */
294
+ ...(ngDevMode ? [{ debugName: "_date" }] : /* istanbul ignore next */ []));
295
+ /** @internal Image/gif/video attachments, rendered by the media grid. */
296
+ _mediaAttachments = computed(() => (this.message().attachments ?? []).filter((a) => a.kind !== 'audio'), /* @ts-ignore */
297
+ ...(ngDevMode ? [{ debugName: "_mediaAttachments" }] : /* istanbul ignore next */ []));
298
+ /** @internal Audio attachments, each rendered by its own player. */
299
+ _audioAttachments = computed(() => (this.message().attachments ?? []).filter((a) => a.kind === 'audio'), /* @ts-ignore */
300
+ ...(ngDevMode ? [{ debugName: "_audioAttachments" }] : /* istanbul ignore next */ []));
301
+ /** @internal Formats seconds as `m:ss` for the condensed audio chip in quote mode. */
302
+ _formatDuration = formatChatDuration;
303
+ /** @internal Template for this message's custom type, if registered. */
304
+ _typeTemplate = computed(() => {
305
+ const type = this.message().type;
306
+ return type ? (this._defs?.().get(type)?.templateRef ?? null) : null;
307
+ }, /* @ts-ignore */
308
+ ...(ngDevMode ? [{ debugName: "_typeTemplate" }] : /* istanbul ignore next */ []));
309
+ /** @internal Resolves an author display name from the container-provided users map. */
310
+ _userName(id) {
311
+ return this._users?.().get(id)?.name ?? '';
312
+ }
313
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatMessage, deps: [], target: i0.ɵɵFactoryTarget.Component });
314
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvChatMessage, isStandalone: true, selector: "mlv-chat-message", inputs: { message: { classPropertyName: "message", publicName: "message", isSignal: true, isRequired: true, transformFunction: null }, own: { classPropertyName: "own", publicName: "own", isSignal: true, isRequired: false, transformFunction: null }, groupPosition: { classPropertyName: "groupPosition", publicName: "groupPosition", isSignal: true, isRequired: false, transformFunction: null }, quote: { classPropertyName: "quote", publicName: "quote", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { retry: "retry", mediaClick: "mediaClick", replyClick: "replyClick" }, host: { properties: { "class.mlv-chat-message--own": "own()", "class.mlv-chat-message--other": "!own()", "class": "\"mlv-chat-message--pos-\" + groupPosition()", "class.mlv-chat-message--failed": "message().status === \"failed\"", "class.mlv-chat-message--quote": "quote()" }, classAttribute: "mlv-chat-message" }, ngImport: i0, template: "@if (_typeTemplate(); as tpl) {\n<ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{\n $implicit: message(),\n isOwn: own(),\n groupPosition: groupPosition(),\n quote: quote(),\n }\"\n/>\n} @else { @if (quote()) {\n<span class=\"mlv-chat-message__quote-author\"\n >{{ _userName(message().authorId) }}</span\n>\n@if (message().replyTo) {\n<svg\n class=\"mlv-chat-message__reply-marker\"\n lucideCornerUpLeft\n [size]=\"12\"\n aria-hidden=\"true\"\n/>\n} } @else if (message().replyTo; as reply) {\n<button\n type=\"button\"\n class=\"mlv-chat-message__reply\"\n (click)=\"replyClick.emit(reply)\"\n>\n <mlv-chat-message [message]=\"reply\" quote />\n</button>\n} @if (_mediaAttachments().length) {\n<mlv-chat-media-grid\n [attachments]=\"_mediaAttachments()\"\n [quote]=\"quote()\"\n (mediaClick)=\"mediaClick.emit($event)\"\n/>\n} @if (quote()) { @if (_audioAttachments()[0]; as audio) {\n<span class=\"mlv-chat-message__quote-audio\">\n <svg lucideMusic [size]=\"12\" aria-hidden=\"true\" />\n {{ _formatDuration(audio.duration ?? 0) }}\n</span>\n} } @else { @for (audio of _audioAttachments(); track audio.id) {\n<mlv-chat-audio [attachment]=\"audio\" />\n} } @if (message().text; as text) {\n<span class=\"mlv-chat-message__text\">{{ text }}</span>\n} } @if (!quote()) {\n<span class=\"mlv-chat-message__meta\">\n @if (own() && message().status === 'failed') {\n <button type=\"button\" class=\"mlv-chat-message__retry\" (click)=\"retry.emit()\">\n <svg lucideCircleAlert [size]=\"14\" aria-hidden=\"true\" />\n {{ _i18n().retry }}\n </button>\n }\n <time class=\"mlv-chat-message__time\" [attr.datetime]=\"_date().toISOString()\">\n {{ _date() | date: 'shortTime' }}\n </time>\n @if (own() && message().status; as status) { @switch (status) { @case\n ('sending') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--sending\"\n lucideClock\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } @case ('sent') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--sent\"\n lucideCheck\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } @case ('delivered') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--delivered\"\n lucideCheckCheck\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } @case ('read') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--read\"\n lucideCheckCheck\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } } }\n</span>\n}\n", styles: ["@charset \"UTF-8\";@layer mlv.components{.mlv-chat-message{box-sizing:border-box;padding:.5rem .75rem;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-chat-message *{box-sizing:border-box}.mlv-chat-message{--mlv-chat-message-bg: var(--mlv-background-neutral-1);--mlv-chat-message-color: var(--mlv-text-primary);--mlv-chat-message-radius: var(--mlv-radius-l);--mlv-chat-message-tail-radius: var(--mlv-radius-xs);display:inline-flex;flex-direction:column;gap:.25rem;width:fit-content;max-width:100%;background-color:var(--mlv-chat-message-bg);color:var(--mlv-chat-message-color);border-radius:var(--mlv-chat-message-radius);overflow-wrap:anywhere}.mlv-chat-message--own{--mlv-chat-message-bg: var(--mlv-background-accent-1);--mlv-chat-message-color: var(--mlv-text-primary-on-accent-1)}.mlv-chat-message__reply{--mlv-chat-quote-fg: var(--mlv-chat-message-color);--mlv-chat-quote-accent: var(--mlv-background-accent-1);--mlv-chat-quote-author: var(--mlv-text-action);--mlv-chat-quote-surface: color-mix( in srgb, var(--mlv-chat-message-color) 8%, transparent );--mlv-chat-quote-surface-hover: color-mix( in srgb, var(--mlv-chat-message-color) 14%, transparent );display:flex;width:100%;margin:0;border:0;border-radius:var(--mlv-radius-s);padding:0;background-color:var(--mlv-chat-quote-surface);color:inherit;font:inherit;text-align:start;cursor:pointer;overflow:hidden;transition:background-color var(--mlv-duration-fast) var(--mlv-ease-default)}.mlv-chat-message__reply:hover{background-color:var(--mlv-chat-quote-surface-hover)}.mlv-chat-message__reply:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}.mlv-chat-message--own .mlv-chat-message__reply{--mlv-chat-quote-accent: var(--mlv-text-primary-on-accent-1);--mlv-chat-quote-author: var(--mlv-text-primary-on-accent-1);--mlv-border-focus: var(--mlv-text-primary-on-accent-1)}.mlv-chat-message--other.mlv-chat-message--pos-first{border-end-start-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--other.mlv-chat-message--pos-middle{border-start-start-radius:var(--mlv-chat-message-tail-radius);border-end-start-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--other.mlv-chat-message--pos-last{border-start-start-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--own.mlv-chat-message--pos-first{border-end-end-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--own.mlv-chat-message--pos-middle{border-start-end-radius:var(--mlv-chat-message-tail-radius);border-end-end-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--own.mlv-chat-message--pos-last{border-start-end-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--failed{--mlv-chat-message-bg: var(--mlv-background-danger-1-pale);--mlv-chat-message-color: var(--mlv-text-negative)}.mlv-chat-message__text{white-space:pre-wrap;text-wrap:pretty;color:var(--mlv-chat-message-color);font-size:inherit}.mlv-chat-message__meta{display:inline-flex;align-items:center;gap:.25rem;align-self:flex-end;font-size:var(--mlv-typography-body-s-size);color:var(--mlv-chat-message-color);opacity:.7}.mlv-chat-message__time,.mlv-chat-message__status{color:var(--mlv-chat-message-color);font-size:inherit}.mlv-chat-message__status--read{color:var(--mlv-chat-message-color);opacity:1}.mlv-chat-message__retry{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;color:var(--mlv-text-negative);cursor:pointer;font-size:var(--mlv-typography-body-s-size);padding:0}.mlv-chat-message__retry:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}.mlv-chat-message--quote{--mlv-chat-message-bg: transparent;--mlv-chat-message-color: var(--mlv-chat-quote-fg, var(--mlv-text-primary));flex:1 1 auto;gap:.125rem;min-width:0;border-inline-start:.1875rem solid var(--mlv-chat-quote-accent, var(--mlv-background-accent-1));border-radius:0;padding:var(--mlv-spacing-1) var(--mlv-spacing-2);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-message--quote .mlv-chat-message__text{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;opacity:.85}.mlv-chat-message__quote-author{display:inline-flex;align-items:center;gap:var(--mlv-spacing-1);color:var(--mlv-chat-quote-author, var(--mlv-text-action));font-weight:var(--mlv-font-weight-semibold)}.mlv-chat-message__reply-marker{flex:none;color:var(--mlv-chat-quote-author, var(--mlv-text-action));opacity:.7}.mlv-chat-message__quote-audio{display:inline-flex;align-items:center;gap:var(--mlv-spacing-1);color:var(--mlv-chat-quote-fg, var(--mlv-text-primary));opacity:.85}@media(prefers-reduced-motion:reduce){.mlv-chat-message,.mlv-chat-message *,.mlv-chat-message:before,.mlv-chat-message:after,[class^=mlv-chat-message__],[class*=\" mlv-chat-message__\"],[class^=mlv-chat-message--],[class*=\" mlv-chat-message--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"], dependencies: [{ kind: "component", type: MlvChatMessage, selector: "mlv-chat-message", inputs: ["message", "own", "groupPosition", "quote"], outputs: ["retry", "mediaClick", "replyClick"] }, { kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: LucideCheck, selector: "svg[lucideCheck]" }, { kind: "component", type: LucideCheckCheck, selector: "svg[lucideCheckCheck]" }, { kind: "component", type: LucideCircleAlert, selector: "svg[lucideCircleAlert], svg[lucideAlertCircle]" }, { kind: "component", type: LucideClock, selector: "svg[lucideClock]" }, { kind: "component", type: LucideCornerUpLeft, selector: "svg[lucideCornerUpLeft]" }, { kind: "component", type: LucideMusic, selector: "svg[lucideMusic]" }, { kind: "component", type: MlvChatMediaGrid, selector: "mlv-chat-media-grid", inputs: ["attachments", "quote"], outputs: ["mediaClick"] }, { kind: "component", type: MlvChatAudio, selector: "mlv-chat-audio", inputs: ["attachment"] }, { kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
315
+ }
316
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatMessage, decorators: [{
317
+ type: Component,
318
+ args: [{ selector: 'mlv-chat-message', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
319
+ DatePipe,
320
+ NgTemplateOutlet,
321
+ LucideCheck,
322
+ LucideCheckCheck,
323
+ LucideCircleAlert,
324
+ LucideClock,
325
+ LucideCornerUpLeft,
326
+ LucideMusic,
327
+ MlvChatMediaGrid,
328
+ MlvChatAudio,
329
+ ], host: {
330
+ class: 'mlv-chat-message',
331
+ '[class.mlv-chat-message--own]': 'own()',
332
+ '[class.mlv-chat-message--other]': '!own()',
333
+ '[class]': '"mlv-chat-message--pos-" + groupPosition()',
334
+ '[class.mlv-chat-message--failed]': 'message().status === "failed"',
335
+ '[class.mlv-chat-message--quote]': 'quote()',
336
+ }, template: "@if (_typeTemplate(); as tpl) {\n<ng-container\n [ngTemplateOutlet]=\"tpl\"\n [ngTemplateOutletContext]=\"{\n $implicit: message(),\n isOwn: own(),\n groupPosition: groupPosition(),\n quote: quote(),\n }\"\n/>\n} @else { @if (quote()) {\n<span class=\"mlv-chat-message__quote-author\"\n >{{ _userName(message().authorId) }}</span\n>\n@if (message().replyTo) {\n<svg\n class=\"mlv-chat-message__reply-marker\"\n lucideCornerUpLeft\n [size]=\"12\"\n aria-hidden=\"true\"\n/>\n} } @else if (message().replyTo; as reply) {\n<button\n type=\"button\"\n class=\"mlv-chat-message__reply\"\n (click)=\"replyClick.emit(reply)\"\n>\n <mlv-chat-message [message]=\"reply\" quote />\n</button>\n} @if (_mediaAttachments().length) {\n<mlv-chat-media-grid\n [attachments]=\"_mediaAttachments()\"\n [quote]=\"quote()\"\n (mediaClick)=\"mediaClick.emit($event)\"\n/>\n} @if (quote()) { @if (_audioAttachments()[0]; as audio) {\n<span class=\"mlv-chat-message__quote-audio\">\n <svg lucideMusic [size]=\"12\" aria-hidden=\"true\" />\n {{ _formatDuration(audio.duration ?? 0) }}\n</span>\n} } @else { @for (audio of _audioAttachments(); track audio.id) {\n<mlv-chat-audio [attachment]=\"audio\" />\n} } @if (message().text; as text) {\n<span class=\"mlv-chat-message__text\">{{ text }}</span>\n} } @if (!quote()) {\n<span class=\"mlv-chat-message__meta\">\n @if (own() && message().status === 'failed') {\n <button type=\"button\" class=\"mlv-chat-message__retry\" (click)=\"retry.emit()\">\n <svg lucideCircleAlert [size]=\"14\" aria-hidden=\"true\" />\n {{ _i18n().retry }}\n </button>\n }\n <time class=\"mlv-chat-message__time\" [attr.datetime]=\"_date().toISOString()\">\n {{ _date() | date: 'shortTime' }}\n </time>\n @if (own() && message().status; as status) { @switch (status) { @case\n ('sending') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--sending\"\n lucideClock\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } @case ('sent') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--sent\"\n lucideCheck\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } @case ('delivered') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--delivered\"\n lucideCheckCheck\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } @case ('read') {\n <svg\n class=\"mlv-chat-message__status mlv-chat-message__status--read\"\n lucideCheckCheck\n [size]=\"14\"\n aria-hidden=\"true\"\n />\n } } }\n</span>\n}\n", styles: ["@charset \"UTF-8\";@layer mlv.components{.mlv-chat-message{box-sizing:border-box;padding:.5rem .75rem;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-chat-message *{box-sizing:border-box}.mlv-chat-message{--mlv-chat-message-bg: var(--mlv-background-neutral-1);--mlv-chat-message-color: var(--mlv-text-primary);--mlv-chat-message-radius: var(--mlv-radius-l);--mlv-chat-message-tail-radius: var(--mlv-radius-xs);display:inline-flex;flex-direction:column;gap:.25rem;width:fit-content;max-width:100%;background-color:var(--mlv-chat-message-bg);color:var(--mlv-chat-message-color);border-radius:var(--mlv-chat-message-radius);overflow-wrap:anywhere}.mlv-chat-message--own{--mlv-chat-message-bg: var(--mlv-background-accent-1);--mlv-chat-message-color: var(--mlv-text-primary-on-accent-1)}.mlv-chat-message__reply{--mlv-chat-quote-fg: var(--mlv-chat-message-color);--mlv-chat-quote-accent: var(--mlv-background-accent-1);--mlv-chat-quote-author: var(--mlv-text-action);--mlv-chat-quote-surface: color-mix( in srgb, var(--mlv-chat-message-color) 8%, transparent );--mlv-chat-quote-surface-hover: color-mix( in srgb, var(--mlv-chat-message-color) 14%, transparent );display:flex;width:100%;margin:0;border:0;border-radius:var(--mlv-radius-s);padding:0;background-color:var(--mlv-chat-quote-surface);color:inherit;font:inherit;text-align:start;cursor:pointer;overflow:hidden;transition:background-color var(--mlv-duration-fast) var(--mlv-ease-default)}.mlv-chat-message__reply:hover{background-color:var(--mlv-chat-quote-surface-hover)}.mlv-chat-message__reply:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}.mlv-chat-message--own .mlv-chat-message__reply{--mlv-chat-quote-accent: var(--mlv-text-primary-on-accent-1);--mlv-chat-quote-author: var(--mlv-text-primary-on-accent-1);--mlv-border-focus: var(--mlv-text-primary-on-accent-1)}.mlv-chat-message--other.mlv-chat-message--pos-first{border-end-start-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--other.mlv-chat-message--pos-middle{border-start-start-radius:var(--mlv-chat-message-tail-radius);border-end-start-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--other.mlv-chat-message--pos-last{border-start-start-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--own.mlv-chat-message--pos-first{border-end-end-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--own.mlv-chat-message--pos-middle{border-start-end-radius:var(--mlv-chat-message-tail-radius);border-end-end-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--own.mlv-chat-message--pos-last{border-start-end-radius:var(--mlv-chat-message-tail-radius)}.mlv-chat-message--failed{--mlv-chat-message-bg: var(--mlv-background-danger-1-pale);--mlv-chat-message-color: var(--mlv-text-negative)}.mlv-chat-message__text{white-space:pre-wrap;text-wrap:pretty;color:var(--mlv-chat-message-color);font-size:inherit}.mlv-chat-message__meta{display:inline-flex;align-items:center;gap:.25rem;align-self:flex-end;font-size:var(--mlv-typography-body-s-size);color:var(--mlv-chat-message-color);opacity:.7}.mlv-chat-message__time,.mlv-chat-message__status{color:var(--mlv-chat-message-color);font-size:inherit}.mlv-chat-message__status--read{color:var(--mlv-chat-message-color);opacity:1}.mlv-chat-message__retry{display:inline-flex;align-items:center;gap:.25rem;background:none;border:none;color:var(--mlv-text-negative);cursor:pointer;font-size:var(--mlv-typography-body-s-size);padding:0}.mlv-chat-message__retry:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}.mlv-chat-message--quote{--mlv-chat-message-bg: transparent;--mlv-chat-message-color: var(--mlv-chat-quote-fg, var(--mlv-text-primary));flex:1 1 auto;gap:.125rem;min-width:0;border-inline-start:.1875rem solid var(--mlv-chat-quote-accent, var(--mlv-background-accent-1));border-radius:0;padding:var(--mlv-spacing-1) var(--mlv-spacing-2);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-message--quote .mlv-chat-message__text{display:-webkit-box;-webkit-line-clamp:2;line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;opacity:.85}.mlv-chat-message__quote-author{display:inline-flex;align-items:center;gap:var(--mlv-spacing-1);color:var(--mlv-chat-quote-author, var(--mlv-text-action));font-weight:var(--mlv-font-weight-semibold)}.mlv-chat-message__reply-marker{flex:none;color:var(--mlv-chat-quote-author, var(--mlv-text-action));opacity:.7}.mlv-chat-message__quote-audio{display:inline-flex;align-items:center;gap:var(--mlv-spacing-1);color:var(--mlv-chat-quote-fg, var(--mlv-text-primary));opacity:.85}@media(prefers-reduced-motion:reduce){.mlv-chat-message,.mlv-chat-message *,.mlv-chat-message:before,.mlv-chat-message:after,[class^=mlv-chat-message__],[class*=\" mlv-chat-message__\"],[class^=mlv-chat-message--],[class*=\" mlv-chat-message--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"] }]
337
+ }], propDecorators: { message: [{ type: i0.Input, args: [{ isSignal: true, alias: "message", required: true }] }], own: [{ type: i0.Input, args: [{ isSignal: true, alias: "own", required: false }] }], groupPosition: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupPosition", required: false }] }], quote: [{ type: i0.Input, args: [{ isSignal: true, alias: "quote", required: false }] }], retry: [{ type: i0.Output, args: ["retry"] }], mediaClick: [{ type: i0.Output, args: ["mediaClick"] }], replyClick: [{ type: i0.Output, args: ["replyClick"] }] } });
338
+
339
+ /**
340
+ * Internal default renderer of a date separator. Shows Today/Yesterday for the
341
+ * two most recent days and a formatted date otherwise. Consumers override the
342
+ * whole slot with `[mlvChatDateDef]`.
343
+ */
344
+ class MlvChatDate {
345
+ /** Start of the calendar day this separator introduces. */
346
+ date = input.required(/* @ts-ignore */
347
+ ...(ngDevMode ? [{ debugName: "date" }] : /* istanbul ignore next */ []));
348
+ /** @internal Chat i18n strings. */
349
+ _i18n = inject(MLV_CHAT_I18N);
350
+ /** @internal Relative label, or null when the template should format the date. */
351
+ _label = computed(() => {
352
+ const date = this.date();
353
+ const now = new Date();
354
+ if (isSameChatDay(date, now))
355
+ return this._i18n().today;
356
+ const yesterday = new Date(now.getFullYear(), now.getMonth(), now.getDate() - 1);
357
+ return isSameChatDay(date, yesterday) ? this._i18n().yesterday : null;
358
+ }, /* @ts-ignore */
359
+ ...(ngDevMode ? [{ debugName: "_label" }] : /* istanbul ignore next */ []));
360
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatDate, deps: [], target: i0.ɵɵFactoryTarget.Component });
361
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvChatDate, isStandalone: true, selector: "mlv-chat-date", inputs: { date: { classPropertyName: "date", publicName: "date", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: "mlv-chat-date" }, ngImport: i0, template: `
362
+ @if (_label(); as label) {
363
+ {{ label }}
364
+ } @else {
365
+ {{ date() | date: 'mediumDate' }}
366
+ }
367
+ `, isInline: true, styles: ["@layer mlv.components{.mlv-chat-date{box-sizing:border-box;padding:.125rem .625rem;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-date *{box-sizing:border-box}.mlv-chat-date{display:inline-block;border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-neutral-1);color:var(--mlv-text-secondary)}}\n"], dependencies: [{ kind: "pipe", type: DatePipe, name: "date" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
368
+ }
369
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatDate, decorators: [{
370
+ type: Component,
371
+ args: [{ selector: 'mlv-chat-date', template: `
372
+ @if (_label(); as label) {
373
+ {{ label }}
374
+ } @else {
375
+ {{ date() | date: 'mediumDate' }}
376
+ }
377
+ `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [DatePipe], host: { class: 'mlv-chat-date' }, styles: ["@layer mlv.components{.mlv-chat-date{box-sizing:border-box;padding:.125rem .625rem;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-date *{box-sizing:border-box}.mlv-chat-date{display:inline-block;border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-neutral-1);color:var(--mlv-text-secondary)}}\n"] }]
378
+ }], propDecorators: { date: [{ type: i0.Input, args: [{ isSignal: true, alias: "date", required: true }] }] } });
379
+
380
+ /**
381
+ * Internal three-dot typing bubble. Rendered by `mlv-chat` at the bottom of the
382
+ * transcript while `typingUsers` is non-empty.
383
+ */
384
+ class MlvChatTyping {
385
+ /** Users currently composing a message. */
386
+ users = input([], /* @ts-ignore */
387
+ ...(ngDevMode ? [{ debugName: "users" }] : /* istanbul ignore next */ []));
388
+ /** @internal Chat i18n strings. */
389
+ _i18n = inject(MLV_CHAT_I18N);
390
+ /** @internal Accessible label naming the typing users when they are known. */
391
+ _ariaLabel = computed(() => {
392
+ const names = this.users()
393
+ .map((u) => u.name)
394
+ .filter(Boolean);
395
+ return names.length ? names.join(', ') : null;
396
+ }, /* @ts-ignore */
397
+ ...(ngDevMode ? [{ debugName: "_ariaLabel" }] : /* istanbul ignore next */ []));
398
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatTyping, deps: [], target: i0.ɵɵFactoryTarget.Component });
399
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.1.0", version: "22.0.7", type: MlvChatTyping, isStandalone: true, selector: "mlv-chat-typing", inputs: { users: { classPropertyName: "users", publicName: "users", isSignal: true, isRequired: false, transformFunction: null } }, host: { properties: { "attr.aria-label": "_ariaLabel()" }, classAttribute: "mlv-chat-typing" }, ngImport: i0, template: `
400
+ <span class="mlv-chat-typing__dots" aria-hidden="true">
401
+ <span class="mlv-chat-typing__dot"></span>
402
+ <span class="mlv-chat-typing__dot"></span>
403
+ <span class="mlv-chat-typing__dot"></span>
404
+ </span>
405
+ <span class="mlv-chat-typing__label">
406
+ {{ _i18n().typing | mlvTranslate: { count: users().length } }}
407
+ </span>
408
+ `, isInline: true, styles: ["@layer mlv.components{.mlv-chat-typing{box-sizing:border-box;padding:.375rem .75rem;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-typing *{box-sizing:border-box}.mlv-chat-typing{display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--mlv-radius-l);background-color:var(--mlv-background-neutral-1);color:var(--mlv-text-secondary)}.mlv-chat-typing__dots{display:inline-flex;gap:.1875rem}.mlv-chat-typing__dot{inline-size:.375rem;block-size:.375rem;border-radius:var(--mlv-radius-full);background-color:currentcolor;animation:mlv-chat-typing-bounce var(--mlv-duration-slower) var(--mlv-ease-in-out) infinite}.mlv-chat-typing__dot:nth-child(2){animation-delay:var(--mlv-duration-fast)}.mlv-chat-typing__dot:nth-child(3){animation-delay:var(--mlv-duration-normal)}@keyframes mlv-chat-typing-bounce{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-.1875rem)}}@media(prefers-reduced-motion:reduce){.mlv-chat-typing,.mlv-chat-typing *,.mlv-chat-typing:before,.mlv-chat-typing:after,[class^=mlv-chat-typing__],[class*=\" mlv-chat-typing__\"],[class^=mlv-chat-typing--],[class*=\" mlv-chat-typing--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"], dependencies: [{ kind: "pipe", type: MlvTranslatePipe, name: "mlvTranslate" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
409
+ }
410
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatTyping, decorators: [{
411
+ type: Component,
412
+ args: [{ selector: 'mlv-chat-typing', template: `
413
+ <span class="mlv-chat-typing__dots" aria-hidden="true">
414
+ <span class="mlv-chat-typing__dot"></span>
415
+ <span class="mlv-chat-typing__dot"></span>
416
+ <span class="mlv-chat-typing__dot"></span>
417
+ </span>
418
+ <span class="mlv-chat-typing__label">
419
+ {{ _i18n().typing | mlvTranslate: { count: users().length } }}
420
+ </span>
421
+ `, encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [MlvTranslatePipe], host: {
422
+ class: 'mlv-chat-typing',
423
+ '[attr.aria-label]': '_ariaLabel()',
424
+ }, styles: ["@layer mlv.components{.mlv-chat-typing{box-sizing:border-box;padding:.375rem .75rem;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-s-size)}.mlv-chat-typing *{box-sizing:border-box}.mlv-chat-typing{display:inline-flex;align-items:center;gap:.5rem;border-radius:var(--mlv-radius-l);background-color:var(--mlv-background-neutral-1);color:var(--mlv-text-secondary)}.mlv-chat-typing__dots{display:inline-flex;gap:.1875rem}.mlv-chat-typing__dot{inline-size:.375rem;block-size:.375rem;border-radius:var(--mlv-radius-full);background-color:currentcolor;animation:mlv-chat-typing-bounce var(--mlv-duration-slower) var(--mlv-ease-in-out) infinite}.mlv-chat-typing__dot:nth-child(2){animation-delay:var(--mlv-duration-fast)}.mlv-chat-typing__dot:nth-child(3){animation-delay:var(--mlv-duration-normal)}@keyframes mlv-chat-typing-bounce{0%,60%,to{opacity:.35;transform:translateY(0)}30%{opacity:1;transform:translateY(-.1875rem)}}@media(prefers-reduced-motion:reduce){.mlv-chat-typing,.mlv-chat-typing *,.mlv-chat-typing:before,.mlv-chat-typing:after,[class^=mlv-chat-typing__],[class*=\" mlv-chat-typing__\"],[class^=mlv-chat-typing--],[class*=\" mlv-chat-typing--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"] }]
425
+ }], propDecorators: { users: [{ type: i0.Input, args: [{ isSignal: true, alias: "users", required: false }] }] } });
426
+
427
+ /**
428
+ * Replaces the default author name shown above a group of other-authored
429
+ * messages — for example to render an avatar plus a role badge.
430
+ *
431
+ * @example
432
+ * <ng-template mlvChatAuthorDef let-user>
433
+ * <mlv-avatar size="xs" [name]="user.name" [src]="user.avatarSrc ?? null" />
434
+ * {{ user.name }}
435
+ * </ng-template>
436
+ */
437
+ class MlvChatAuthorDef {
438
+ /** The template rendered in the author slot. */
439
+ templateRef = inject(TemplateRef);
440
+ /** Type guard giving template variables their concrete types. */
441
+ static ngTemplateContextGuard(_dir, _ctx) {
442
+ return true;
443
+ }
444
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAuthorDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
445
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvChatAuthorDef, isStandalone: true, selector: "[mlvChatAuthorDef]", ngImport: i0 });
446
+ }
447
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatAuthorDef, decorators: [{
448
+ type: Directive,
449
+ args: [{ selector: '[mlvChatAuthorDef]' }]
450
+ }] });
451
+
452
+ /**
453
+ * Replaces the default Today/Yesterday/date pill rendered between messages of
454
+ * different calendar days.
455
+ *
456
+ * @example
457
+ * <ng-template mlvChatDateDef let-date>{{ date | date: 'fullDate' }}</ng-template>
458
+ */
459
+ class MlvChatDateDef {
460
+ /** The template rendered for each date separator. */
461
+ templateRef = inject(TemplateRef);
462
+ /** Type guard giving template variables their concrete types. */
463
+ static ngTemplateContextGuard(_dir, _ctx) {
464
+ return true;
465
+ }
466
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatDateDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
467
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "14.0.0", version: "22.0.7", type: MlvChatDateDef, isStandalone: true, selector: "[mlvChatDateDef]", ngImport: i0 });
468
+ }
469
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatDateDef, decorators: [{
470
+ type: Directive,
471
+ args: [{ selector: '[mlvChatDateDef]' }]
472
+ }] });
473
+
474
+ /**
475
+ * Marks an `<ng-template>` as the renderer for chat messages whose `type`
476
+ * matches `mlvChatMessageDefType`. The template replaces the bubble body;
477
+ * alignment, meta row, and animations stay owned by the chat.
478
+ *
479
+ * @example
480
+ * <ng-template mlvChatMessageDef mlvChatMessageDefType="poll" let-message let-isOwn="isOwn">
481
+ * <app-poll [poll]="message.data" />
482
+ * </ng-template>
483
+ */
484
+ class MlvChatMessageDef {
485
+ /** The message `type` this template renders. Templates without a type are ignored. */
486
+ mlvChatMessageDefType = input('', /* @ts-ignore */
487
+ ...(ngDevMode ? [{ debugName: "mlvChatMessageDefType" }] : /* istanbul ignore next */ []));
488
+ /** The template rendered for matching messages. */
489
+ templateRef = inject(TemplateRef);
490
+ /** Type guard giving template variables their concrete types. */
491
+ static ngTemplateContextGuard(_dir, _ctx) {
492
+ return true;
493
+ }
494
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatMessageDef, deps: [], target: i0.ɵɵFactoryTarget.Directive });
495
+ static ɵdir = i0.ɵɵngDeclareDirective({ minVersion: "17.1.0", version: "22.0.7", type: MlvChatMessageDef, isStandalone: true, selector: "[mlvChatMessageDef]", inputs: { mlvChatMessageDefType: { classPropertyName: "mlvChatMessageDefType", publicName: "mlvChatMessageDefType", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0 });
496
+ }
497
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChatMessageDef, decorators: [{
498
+ type: Directive,
499
+ args: [{ selector: '[mlvChatMessageDef]' }]
500
+ }], propDecorators: { mlvChatMessageDefType: [{ type: i0.Input, args: [{ isSignal: true, alias: "mlvChatMessageDefType", required: false }] }] } });
501
+
502
+ /** Skeleton rows rendered while the first page loads. */
503
+ const SKELETON_ROWS = [
504
+ { own: false, width: '55%' },
505
+ { own: false, width: '35%' },
506
+ { own: true, width: '45%' },
507
+ { own: false, width: '65%' },
508
+ { own: true, width: '30%' },
509
+ { own: false, width: '50%' },
510
+ ];
511
+ /**
512
+ * Scrollable chat surface. Renders an oldest→newest `messages` array as author
513
+ * groups with date separators, delivery statuses, replies, media, and audio.
514
+ * Grouping is computed internally — consumers only supply flat data.
515
+ */
516
+ class MlvChat {
517
+ /** @private Distance from the bottom under which the view counts as pinned. */
518
+ static _PIN_THRESHOLD = 48;
519
+ /** @private Distance from the top under which the window grows / `loadOlder` fires. */
520
+ static _TOP_THRESHOLD = 150;
521
+ /** @private Number of messages the render window grows by per step. */
522
+ static _WINDOW_STEP = 50;
523
+ /** Messages ordered oldest → newest. */
524
+ messages = input.required(/* @ts-ignore */
525
+ ...(ngDevMode ? [{ debugName: "messages" }] : /* istanbul ignore next */ []));
526
+ /** Id of the current user; messages authored by it render as own messages. */
527
+ selfId = input.required(/* @ts-ignore */
528
+ ...(ngDevMode ? [{ debugName: "selfId" }] : /* istanbul ignore next */ []));
529
+ /** Known participants, used for avatars and author names. */
530
+ users = input([], /* @ts-ignore */
531
+ ...(ngDevMode ? [{ debugName: "users" }] : /* istanbul ignore next */ []));
532
+ /** Renders skeleton bubbles instead of content while the first page loads. */
533
+ loading = input(false, { ...(ngDevMode ? { debugName: "loading" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
534
+ /** Shows the top loader while an older page is being fetched. */
535
+ loadingOlder = input(false, { ...(ngDevMode ? { debugName: "loadingOlder" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
536
+ /** Whether more history exists; gates the `loadOlder` output. */
537
+ hasOlder = input(false, { ...(ngDevMode ? { debugName: "hasOlder" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
538
+ /** Ids of users currently composing a message. */
539
+ typingUsers = input([], /* @ts-ignore */
540
+ ...(ngDevMode ? [{ debugName: "typingUsers" }] : /* istanbul ignore next */ []));
541
+ /** Maximum gap in minutes between messages of one author group. */
542
+ groupWindow = input(5, /* @ts-ignore */
543
+ ...(ngDevMode ? [{ debugName: "groupWindow" }] : /* istanbul ignore next */ []));
544
+ /** Author slot visibility; `'auto'` shows it once more than two users are known. */
545
+ showAuthors = input('auto', /* @ts-ignore */
546
+ ...(ngDevMode ? [{ debugName: "showAuthors" }] : /* istanbul ignore next */ []));
547
+ /** Whether calendar-day separators are rendered. */
548
+ dateSeparators = input(true, { ...(ngDevMode ? { debugName: "dateSeparators" } : /* istanbul ignore next */ {}), transform: coerceBooleanProperty });
549
+ /** Number of newest messages kept in the DOM. */
550
+ windowSize = input(150, /* @ts-ignore */
551
+ ...(ngDevMode ? [{ debugName: "windowSize" }] : /* istanbul ignore next */ []));
552
+ /** Emits when the user scrolls past the oldest rendered message and more history exists. */
553
+ loadOlder = output();
554
+ /** Emits the failed message whose retry action was activated. */
555
+ retry = output();
556
+ /** Emits the message and attachment of an activated media cell. */
557
+ mediaClick = output();
558
+ /** Emits the message and its embedded original when a reply quote is activated. */
559
+ replyClick = output();
560
+ /** @internal Chat i18n strings. */
561
+ _i18n = inject(MLV_CHAT_I18N);
562
+ /** @internal Author slot template, when a consumer provides one. */
563
+ authorDef = contentChild(MlvChatAuthorDef, /* @ts-ignore */
564
+ ...(ngDevMode ? [{ debugName: "authorDef" }] : /* istanbul ignore next */ []));
565
+ /** @internal Date separator template, when a consumer provides one. */
566
+ dateDef = contentChild(MlvChatDateDef, /* @ts-ignore */
567
+ ...(ngDevMode ? [{ debugName: "dateDef" }] : /* istanbul ignore next */ []));
568
+ /** @private Custom message-type templates projected by the consumer. */
569
+ _messageDefs = contentChildren(MlvChatMessageDef, /* @ts-ignore */
570
+ ...(ngDevMode ? [{ debugName: "_messageDefs" }] : /* istanbul ignore next */ []));
571
+ /** @internal id → user map, provided to bubbles through `MLV_CHAT_USERS`. */
572
+ _usersMap = computed(() => new Map(this.users().map((u) => [u.id, u])), /* @ts-ignore */
573
+ ...(ngDevMode ? [{ debugName: "_usersMap" }] : /* istanbul ignore next */ []));
574
+ /** @internal type → def map, provided to bubbles through `MLV_CHAT_MESSAGE_DEFS`. */
575
+ _defsMap = computed(() => new Map(this._messageDefs()
576
+ .filter((def) => def.mlvChatMessageDefType())
577
+ .map((def) => [def.mlvChatMessageDefType(), def])), /* @ts-ignore */
578
+ ...(ngDevMode ? [{ debugName: "_defsMap" }] : /* istanbul ignore next */ []));
579
+ /** @internal Number of newest messages currently rendered; grown by the scroll engine. */
580
+ _renderCount = signal(150, /* @ts-ignore */
581
+ ...(ngDevMode ? [{ debugName: "_renderCount" }] : /* istanbul ignore next */ []));
582
+ /** @internal Newest slice of `messages` kept in the DOM. */
583
+ _windowed = computed(() => this.messages().slice(-this._renderCount()), /* @ts-ignore */
584
+ ...(ngDevMode ? [{ debugName: "_windowed" }] : /* istanbul ignore next */ []));
585
+ /** @internal Flattened author groups and date separators of the render window. */
586
+ _renderItems = computed(() => buildChatRenderList(this._windowed(), this.selfId(), this.groupWindow(), this.dateSeparators()), /* @ts-ignore */
587
+ ...(ngDevMode ? [{ debugName: "_renderItems" }] : /* istanbul ignore next */ []));
588
+ /** @internal Whether the author slot renders above other-authored groups. */
589
+ _authorsVisible = computed(() => {
590
+ const mode = this.showAuthors();
591
+ return mode === 'auto' ? this.users().length > 2 : mode;
592
+ }, /* @ts-ignore */
593
+ ...(ngDevMode ? [{ debugName: "_authorsVisible" }] : /* istanbul ignore next */ []));
594
+ /** @internal Typing users resolved against the known participants. */
595
+ _typingUserObjects = computed(() => this.typingUsers()
596
+ .map((id) => this._usersMap().get(id))
597
+ .filter((user) => !!user), /* @ts-ignore */
598
+ ...(ngDevMode ? [{ debugName: "_typingUserObjects" }] : /* istanbul ignore next */ []));
599
+ /** @internal Placeholder rows rendered while `loading` is set. */
600
+ _skeletonRows = SKELETON_ROWS;
601
+ /** @internal The scroll container; measured by the scroll engine. */
602
+ _viewport = viewChild(MlvScrollbar, /* @ts-ignore */
603
+ ...(ngDevMode ? [{ debugName: "_viewport" }] : /* istanbul ignore next */ []));
604
+ /** @private Inner content wrapper; its height changes drive re-pinning. */
605
+ _content = viewChild('content', /* @ts-ignore */
606
+ ...(ngDevMode ? [{ debugName: "_content" }] : /* istanbul ignore next */ []));
607
+ /** @private Shared resize observer used to follow content height changes. */
608
+ _resizeObserver = inject(MlvResizeObserverService);
609
+ /** @internal True while the view sits at (or near) the newest message. */
610
+ _pinned = signal(true, /* @ts-ignore */
611
+ ...(ngDevMode ? [{ debugName: "_pinned" }] : /* istanbul ignore next */ []));
612
+ /** @internal Messages appended while unpinned; drives the new-messages pill. */
613
+ _newCount = signal(0, /* @ts-ignore */
614
+ ...(ngDevMode ? [{ debugName: "_newCount" }] : /* istanbul ignore next */ []));
615
+ /** @internal Ids of messages that arrived live, so only those animate in. */
616
+ _liveIds = signal(new Set(), /* @ts-ignore */
617
+ ...(ngDevMode ? [{ debugName: "_liveIds" }] : /* istanbul ignore next */ []));
618
+ /** @private First/last ids of the previous `messages` value, to classify changes. */
619
+ _edgeIds = {
620
+ first: null,
621
+ last: null,
622
+ };
623
+ /** @private Distance from the viewport bottom captured before a prepend renders. */
624
+ _pendingCompensation = null;
625
+ constructor() {
626
+ // The window starts at the configured size; the scroll engine grows it as
627
+ // the user scrolls up and trims it back once they return to the bottom.
628
+ effect(() => this._renderCount.set(this.windowSize()));
629
+ effect(() => {
630
+ const list = this.messages();
631
+ const first = list[0]?.id ?? null;
632
+ const last = list[list.length - 1]?.id ?? null;
633
+ const previous = this._edgeIds;
634
+ this._edgeIds = { first, last };
635
+ if (previous.last === null)
636
+ return;
637
+ const appended = last !== null && last !== previous.last;
638
+ const prepended = first !== null && first !== previous.first && last === previous.last;
639
+ if (prepended)
640
+ this._captureCompensation();
641
+ if (appended) {
642
+ this._markLiveMessages(list, previous.last);
643
+ if (this._pinned())
644
+ this._scrollToBottom('smooth');
645
+ else
646
+ this._newCount.update((count) => count + 1);
647
+ }
648
+ });
649
+ afterRenderEffect(() => {
650
+ // Re-runs whenever the rendered content changes.
651
+ this._renderItems();
652
+ this.loading();
653
+ if (this._applyCompensation())
654
+ return;
655
+ if (this._pinned())
656
+ this._stickToBottom();
657
+ });
658
+ // Renders alone are not enough: media can load late and `content-visibility`
659
+ // reveals height without a change-detection pass. Following the content box
660
+ // keeps the newest message in view in all of those cases.
661
+ effect((onCleanup) => {
662
+ const content = this._content()?.nativeElement;
663
+ if (!content)
664
+ return;
665
+ const subscription = this._resizeObserver
666
+ .observe(content)
667
+ .subscribe(() => {
668
+ if (this._pendingCompensation === null && this._pinned())
669
+ this._stickToBottom();
670
+ });
671
+ onCleanup(() => subscription.unsubscribe());
672
+ });
673
+ }
674
+ /** @internal Re-reads the viewport metrics after a scroll event. */
675
+ _onScroll() {
676
+ const viewport = this._viewport()?.viewportElement;
677
+ if (!viewport)
678
+ return;
679
+ this._evaluateScroll(viewport.scrollTop, viewport.scrollHeight, viewport.clientHeight);
680
+ }
681
+ /**
682
+ * @internal Updates pinning and top-edge behavior from raw scroll metrics.
683
+ * Split from `_onScroll` so the logic is testable without layout.
684
+ */
685
+ _evaluateScroll(scrollTop, scrollHeight, clientHeight) {
686
+ const bottomDistance = scrollHeight - scrollTop - clientHeight;
687
+ const pinned = bottomDistance < MlvChat._PIN_THRESHOLD;
688
+ if (pinned && !this._pinned()) {
689
+ this._newCount.set(0);
690
+ // Trimming is invisible while the view is anchored to the newest message.
691
+ this._renderCount.set(this.windowSize());
692
+ }
693
+ this._pinned.set(pinned);
694
+ if (scrollTop < MlvChat._TOP_THRESHOLD)
695
+ this._growWindow();
696
+ }
697
+ /** @internal Grows the render window, or asks for an older page once it is exhausted. */
698
+ _growWindow() {
699
+ const total = this.messages().length;
700
+ if (this._renderCount() < total) {
701
+ this._captureCompensation();
702
+ this._renderCount.update((count) => Math.min(count + MlvChat._WINDOW_STEP, total));
703
+ return;
704
+ }
705
+ if (this.hasOlder() && !this.loadingOlder())
706
+ this.loadOlder.emit();
707
+ }
708
+ /** @internal Scrolls to the newest message and clears the pill counter. */
709
+ _scrollToBottom(behavior = 'smooth') {
710
+ const viewport = this._viewport()?.viewportElement;
711
+ this._newCount.set(0);
712
+ this._pinned.set(true);
713
+ if (!viewport)
714
+ return;
715
+ viewport.scrollTo?.({ top: viewport.scrollHeight, behavior });
716
+ }
717
+ /**
718
+ * @private Records every message newer than the previous last id so only
719
+ * live arrivals animate in — initial load, window growth, and prepended
720
+ * history render instantly.
721
+ */
722
+ _markLiveMessages(list, previousLast) {
723
+ const previousIndex = list.findIndex((message) => message.id === previousLast);
724
+ const fresh = list.slice(previousIndex + 1).map((message) => message.id);
725
+ if (!fresh.length)
726
+ return;
727
+ this._liveIds.update((ids) => {
728
+ const next = new Set(ids);
729
+ for (const id of fresh)
730
+ next.add(id);
731
+ return next;
732
+ });
733
+ }
734
+ /** @private Records the distance from the bottom so a prepend keeps the view still. */
735
+ _captureCompensation() {
736
+ const viewport = this._viewport()?.viewportElement;
737
+ if (viewport)
738
+ this._pendingCompensation = viewport.scrollHeight - viewport.scrollTop;
739
+ }
740
+ /**
741
+ * @private Restores the captured distance once the taller content has rendered.
742
+ * Returns true when a compensation was applied, so the caller skips pinning.
743
+ */
744
+ _applyCompensation() {
745
+ const pending = this._pendingCompensation;
746
+ if (pending === null)
747
+ return false;
748
+ this._pendingCompensation = null;
749
+ const viewport = this._viewport()?.viewportElement;
750
+ if (viewport)
751
+ viewport.scrollTop = viewport.scrollHeight - pending;
752
+ return true;
753
+ }
754
+ /** @private Jumps the viewport to the newest message without animation. */
755
+ _stickToBottom() {
756
+ const viewport = this._viewport()?.viewportElement;
757
+ if (viewport)
758
+ viewport.scrollTop = viewport.scrollHeight;
759
+ }
760
+ /** @internal Composes the accessible label of one message article. */
761
+ _messageLabel(message, own) {
762
+ const author = own
763
+ ? (this._usersMap().get(this.selfId())?.name ?? '')
764
+ : (this._usersMap().get(message.authorId)?.name ?? '');
765
+ const time = formatDate(toChatDate(message.timestamp), 'shortTime', 'en-US');
766
+ const status = own && message.status ? this._statusLabel(message.status) : '';
767
+ return [author, time, status].filter(Boolean).join(', ');
768
+ }
769
+ /** @private Maps a delivery status to its translated label. */
770
+ _statusLabel(status) {
771
+ const i18n = this._i18n();
772
+ switch (status) {
773
+ case 'sending':
774
+ return i18n.statusSending;
775
+ case 'sent':
776
+ return i18n.statusSent;
777
+ case 'delivered':
778
+ return i18n.statusDelivered;
779
+ case 'read':
780
+ return i18n.statusRead;
781
+ case 'failed':
782
+ return i18n.statusFailed;
783
+ }
784
+ }
785
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChat, deps: [], target: i0.ɵɵFactoryTarget.Component });
786
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "22.0.7", type: MlvChat, isStandalone: true, selector: "mlv-chat", inputs: { messages: { classPropertyName: "messages", publicName: "messages", isSignal: true, isRequired: true, transformFunction: null }, selfId: { classPropertyName: "selfId", publicName: "selfId", isSignal: true, isRequired: true, transformFunction: null }, users: { classPropertyName: "users", publicName: "users", isSignal: true, isRequired: false, transformFunction: null }, loading: { classPropertyName: "loading", publicName: "loading", isSignal: true, isRequired: false, transformFunction: null }, loadingOlder: { classPropertyName: "loadingOlder", publicName: "loadingOlder", isSignal: true, isRequired: false, transformFunction: null }, hasOlder: { classPropertyName: "hasOlder", publicName: "hasOlder", isSignal: true, isRequired: false, transformFunction: null }, typingUsers: { classPropertyName: "typingUsers", publicName: "typingUsers", isSignal: true, isRequired: false, transformFunction: null }, groupWindow: { classPropertyName: "groupWindow", publicName: "groupWindow", isSignal: true, isRequired: false, transformFunction: null }, showAuthors: { classPropertyName: "showAuthors", publicName: "showAuthors", isSignal: true, isRequired: false, transformFunction: null }, dateSeparators: { classPropertyName: "dateSeparators", publicName: "dateSeparators", isSignal: true, isRequired: false, transformFunction: null }, windowSize: { classPropertyName: "windowSize", publicName: "windowSize", isSignal: true, isRequired: false, transformFunction: null } }, outputs: { loadOlder: "loadOlder", retry: "retry", mediaClick: "mediaClick", replyClick: "replyClick" }, host: { classAttribute: "mlv-chat" }, providers: [
787
+ MlvChatAudioService,
788
+ { provide: MLV_DENSITY_ELEMENT, useValue: 'chat' },
789
+ { provide: MLV_CHAT_USERS, useFactory: () => inject(MlvChat)._usersMap },
790
+ {
791
+ provide: MLV_CHAT_MESSAGE_DEFS,
792
+ useFactory: () => inject(MlvChat)._defsMap,
793
+ },
794
+ ], queries: [{ propertyName: "authorDef", first: true, predicate: MlvChatAuthorDef, descendants: true, isSignal: true }, { propertyName: "dateDef", first: true, predicate: MlvChatDateDef, descendants: true, isSignal: true }, { propertyName: "_messageDefs", predicate: MlvChatMessageDef, isSignal: true }], viewQueries: [{ propertyName: "_viewport", first: true, predicate: MlvScrollbar, descendants: true, isSignal: true }, { propertyName: "_content", first: true, predicate: ["content"], descendants: true, isSignal: true }], hostDirectives: [{ directive: i1.MlvDensityDirective, inputs: ["mlvDensity", "mlvDensity"] }], ngImport: i0, template: "<mlv-scrollbar\n #viewport\n class=\"mlv-chat__viewport\"\n role=\"log\"\n [attr.aria-label]=\"_i18n().chatLabel\"\n tabindex=\"0\"\n (scroll)=\"_onScroll()\"\n>\n <div #content class=\"mlv-chat__content\">\n @if (loading()) { @for (row of _skeletonRows; track $index) {\n <div class=\"mlv-chat__skeleton\" [class.mlv-chat__skeleton--own]=\"row.own\">\n <mlv-skeleton variant=\"rectangle\" [width]=\"row.width\" height=\"2.25rem\" />\n </div>\n } } @else { @if (loadingOlder()) {\n <div class=\"mlv-chat__older-loader\">\n <mlv-loader\n variant=\"circle\"\n [indeterminate]=\"true\"\n [size]=\"20\"\n [strokeWidth]=\"2\"\n />\n <span class=\"cdk-visually-hidden\">{{ _i18n().loadingOlder }}</span>\n </div>\n } @for (item of _renderItems(); track item.id) { @switch (item.kind) { @case\n ('date') {\n <div class=\"mlv-chat__date\">\n @if (dateDef(); as def) {\n <ng-container\n [ngTemplateOutlet]=\"def.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.date }\"\n />\n } @else {\n <mlv-chat-date [date]=\"item.date\" />\n }\n </div>\n } @case ('group') {\n <div class=\"mlv-chat__group\" [class.mlv-chat__group--own]=\"item.own\">\n @if (!item.own && _authorsVisible()) {\n <div class=\"mlv-chat__author\">\n @if (authorDef(); as def) {\n <ng-container\n [ngTemplateOutlet]=\"def.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: _usersMap().get(item.authorId),\n isOwn: item.own,\n firstMessage: item.messages[0].message,\n }\"\n />\n } @else { {{ _usersMap().get(item.authorId)?.name }} }\n </div>\n }\n <div class=\"mlv-chat__group-body\">\n @if (!item.own) {\n <mlv-avatar\n class=\"mlv-chat__avatar\"\n size=\"s\"\n [src]=\"_usersMap().get(item.authorId)?.avatarSrc ?? null\"\n [name]=\"_usersMap().get(item.authorId)?.name ?? ''\"\n [color]=\"(_usersMap().get(item.authorId)?.name ?? '') | mlvColorFromText\"\n />\n }\n <div class=\"mlv-chat__bubbles\">\n @for (rendered of item.messages; track rendered.message.id) {\n <article\n class=\"mlv-chat__item\"\n [class.mlv-chat__item--enter]=\"_liveIds().has(rendered.message.id)\"\n animate.leave=\"mlv-chat__item--leave\"\n [attr.aria-label]=\"_messageLabel(rendered.message, item.own)\"\n >\n <mlv-chat-message\n [message]=\"rendered.message\"\n [own]=\"item.own\"\n [groupPosition]=\"rendered.position\"\n (retry)=\"retry.emit(rendered.message)\"\n (mediaClick)=\"mediaClick.emit({ message: rendered.message, attachment: $event })\"\n (replyClick)=\"replyClick.emit({ message: rendered.message, replyTo: $event })\"\n />\n </article>\n }\n </div>\n </div>\n </div>\n } } } @if (_typingUserObjects().length) {\n <mlv-chat-typing class=\"mlv-chat__typing\" [users]=\"_typingUserObjects()\" />\n } }\n </div>\n</mlv-scrollbar>\n@if (!_pinned() && _newCount() > 0) {\n<button\n type=\"button\"\n class=\"mlv-chat__pill\"\n (click)=\"_scrollToBottom('smooth')\"\n>\n {{ _i18n().newMessages | mlvTranslate: { count: _newCount() } }}\n</button>\n}\n", styles: ["@layer mlv.components{@keyframes mlv-chat-item-enter{0%{opacity:0;transform:translateY(.5rem);grid-template-rows:0fr}to{opacity:1;transform:translateY(0);grid-template-rows:1fr}}@keyframes mlv-chat-item-leave-fade{to{opacity:0}}@keyframes mlv-chat-item-leave-collapse{to{grid-template-rows:0fr}}.mlv-chat{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-chat *{box-sizing:border-box}.mlv-chat{--mlv-chat-gap: .5rem;--mlv-chat-padding: var(--mlv-padding-m);--mlv-chat-bubble-gap: .125rem;position:relative;display:flex;flex-direction:column;min-block-size:0}.mlv-chat__viewport{flex:1;display:flex;flex-direction:column;padding:var(--mlv-chat-padding);overflow-y:auto;overflow-anchor:auto}.mlv-chat__content{display:flex;flex-direction:column;gap:var(--mlv-chat-gap);margin-block-start:auto}.mlv-chat__group{display:flex;flex-direction:column;gap:.125rem;content-visibility:auto;contain-intrinsic-size:auto 3.5rem}.mlv-chat__group--own{align-items:flex-end}.mlv-chat__group-body{display:flex;align-items:flex-end;gap:.5rem;max-inline-size:100%}.mlv-chat__avatar{position:sticky;inset-block-end:0;align-self:flex-end;flex-shrink:0}.mlv-chat__group--own .mlv-chat__group-body{flex-direction:row-reverse}.mlv-chat__bubbles{display:flex;flex-direction:column;gap:var(--mlv-chat-bubble-gap);max-inline-size:75%;min-inline-size:0}.mlv-chat__group--own .mlv-chat__bubbles{align-items:flex-end}.mlv-chat__item{display:grid;grid-template-rows:1fr;min-inline-size:0;will-change:transform,opacity,grid-template-rows}.mlv-chat__item>*{min-block-size:0;overflow:hidden}.mlv-chat__item--enter{animation:mlv-chat-item-enter var(--mlv-duration-slow) var(--mlv-ease-out-strong) both}.mlv-chat__item--leave{animation:mlv-chat-item-leave-fade var(--mlv-duration-fast) var(--mlv-ease-out-strong) forwards,mlv-chat-item-leave-collapse var(--mlv-duration-normal) var(--mlv-ease-out-strong) forwards}.mlv-chat__group--own .mlv-chat__item{justify-items:end}.mlv-chat__author{font-size:var(--mlv-typography-body-s-size);color:var(--mlv-text-secondary);margin-inline-start:2.25rem}.mlv-chat__date{align-self:center;font-size:inherit}.mlv-chat__older-loader{display:flex;justify-content:center;padding-block:.5rem}.mlv-chat__skeleton{display:flex}.mlv-chat__skeleton mlv-skeleton{border-radius:var(--mlv-radius-l)}.mlv-chat__skeleton--own{justify-content:flex-end}.mlv-chat__typing{align-self:flex-start}.mlv-chat-typing__label{font-size:var(--mlv-typography-body-m-size)}.mlv-chat__pill{position:absolute;inset-block-end:1rem;inset-inline:0;inline-size:fit-content;margin-inline:auto;padding:.375rem .75rem;border:none;border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-raised);color:var(--mlv-text-action);box-shadow:var(--mlv-shadow-floating);font-size:var(--mlv-typography-body-s-size);cursor:pointer}.mlv-chat__pill:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}[class*=--tight] .mlv-chat:not([class*=--compact],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-chat[class*=--tight]{--mlv-chat-gap: .25rem;--mlv-chat-padding: var(--mlv-padding-xs);--mlv-chat-bubble-gap: .0625rem}[class*=--compact] .mlv-chat:not([class*=--tight],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-chat[class*=--compact]{--mlv-chat-gap: .375rem;--mlv-chat-padding: var(--mlv-padding-s)}[class*=--spacious] .mlv-chat:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--airy]),.mlv-chat[class*=--spacious]{--mlv-chat-gap: .75rem;--mlv-chat-padding: var(--mlv-padding-l);--mlv-chat-bubble-gap: .25rem}[class*=--airy] .mlv-chat:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--spacious]),.mlv-chat[class*=--airy]{--mlv-chat-gap: 1rem;--mlv-chat-padding: var(--mlv-padding-xl);--mlv-chat-bubble-gap: .375rem}@media(prefers-reduced-motion:reduce){.mlv-chat,.mlv-chat *,.mlv-chat:before,.mlv-chat:after,[class^=mlv-chat__],[class*=\" mlv-chat__\"],[class^=mlv-chat--],[class*=\" mlv-chat--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"], dependencies: [{ kind: "directive", type: NgTemplateOutlet, selector: "[ngTemplateOutlet]", inputs: ["ngTemplateOutletContext", "ngTemplateOutlet", "ngTemplateOutletInjector"] }, { kind: "component", type: MlvAvatar, selector: "mlv-avatar", inputs: ["size", "shape", "src", "name", "initials", "color", "label"] }, { kind: "component", type: MlvLoader, selector: "mlv-loader", inputs: ["variant", "tone", "value", "max", "indeterminate", "size", "strokeWidth", "ariaLabel", "showHint", "color", "trackColor", "glow"] }, { kind: "component", type: MlvSkeleton, selector: "mlv-skeleton", inputs: ["variant", "width", "height", "animated", "animationDuration"] }, { kind: "component", type: MlvChatMessage, selector: "mlv-chat-message", inputs: ["message", "own", "groupPosition", "quote"], outputs: ["retry", "mediaClick", "replyClick"] }, { kind: "component", type: MlvChatDate, selector: "mlv-chat-date", inputs: ["date"] }, { kind: "component", type: MlvChatTyping, selector: "mlv-chat-typing", inputs: ["users"] }, { kind: "component", type: MlvScrollbar, selector: "mlv-scrollbar", inputs: ["orientation", "scrollbarSize", "disabled", "ariaLabel", "viewportTabIndex"] }, { kind: "pipe", type: MlvTranslatePipe, name: "mlvTranslate" }, { kind: "pipe", type: MlvColorFromTextPipe, name: "mlvColorFromText" }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
795
+ }
796
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "22.0.7", ngImport: i0, type: MlvChat, decorators: [{
797
+ type: Component,
798
+ args: [{ selector: 'mlv-chat', encapsulation: ViewEncapsulation.None, changeDetection: ChangeDetectionStrategy.OnPush, imports: [
799
+ NgTemplateOutlet,
800
+ MlvTranslatePipe,
801
+ MlvAvatar,
802
+ MlvColorFromTextPipe,
803
+ MlvLoader,
804
+ MlvSkeleton,
805
+ MlvChatMessage,
806
+ MlvChatDate,
807
+ MlvChatTyping,
808
+ MlvScrollbar,
809
+ ], providers: [
810
+ MlvChatAudioService,
811
+ { provide: MLV_DENSITY_ELEMENT, useValue: 'chat' },
812
+ { provide: MLV_CHAT_USERS, useFactory: () => inject(MlvChat)._usersMap },
813
+ {
814
+ provide: MLV_CHAT_MESSAGE_DEFS,
815
+ useFactory: () => inject(MlvChat)._defsMap,
816
+ },
817
+ ], hostDirectives: [{ directive: MlvDensityDirective, inputs: ['mlvDensity'] }], host: { class: 'mlv-chat' }, template: "<mlv-scrollbar\n #viewport\n class=\"mlv-chat__viewport\"\n role=\"log\"\n [attr.aria-label]=\"_i18n().chatLabel\"\n tabindex=\"0\"\n (scroll)=\"_onScroll()\"\n>\n <div #content class=\"mlv-chat__content\">\n @if (loading()) { @for (row of _skeletonRows; track $index) {\n <div class=\"mlv-chat__skeleton\" [class.mlv-chat__skeleton--own]=\"row.own\">\n <mlv-skeleton variant=\"rectangle\" [width]=\"row.width\" height=\"2.25rem\" />\n </div>\n } } @else { @if (loadingOlder()) {\n <div class=\"mlv-chat__older-loader\">\n <mlv-loader\n variant=\"circle\"\n [indeterminate]=\"true\"\n [size]=\"20\"\n [strokeWidth]=\"2\"\n />\n <span class=\"cdk-visually-hidden\">{{ _i18n().loadingOlder }}</span>\n </div>\n } @for (item of _renderItems(); track item.id) { @switch (item.kind) { @case\n ('date') {\n <div class=\"mlv-chat__date\">\n @if (dateDef(); as def) {\n <ng-container\n [ngTemplateOutlet]=\"def.templateRef\"\n [ngTemplateOutletContext]=\"{ $implicit: item.date }\"\n />\n } @else {\n <mlv-chat-date [date]=\"item.date\" />\n }\n </div>\n } @case ('group') {\n <div class=\"mlv-chat__group\" [class.mlv-chat__group--own]=\"item.own\">\n @if (!item.own && _authorsVisible()) {\n <div class=\"mlv-chat__author\">\n @if (authorDef(); as def) {\n <ng-container\n [ngTemplateOutlet]=\"def.templateRef\"\n [ngTemplateOutletContext]=\"{\n $implicit: _usersMap().get(item.authorId),\n isOwn: item.own,\n firstMessage: item.messages[0].message,\n }\"\n />\n } @else { {{ _usersMap().get(item.authorId)?.name }} }\n </div>\n }\n <div class=\"mlv-chat__group-body\">\n @if (!item.own) {\n <mlv-avatar\n class=\"mlv-chat__avatar\"\n size=\"s\"\n [src]=\"_usersMap().get(item.authorId)?.avatarSrc ?? null\"\n [name]=\"_usersMap().get(item.authorId)?.name ?? ''\"\n [color]=\"(_usersMap().get(item.authorId)?.name ?? '') | mlvColorFromText\"\n />\n }\n <div class=\"mlv-chat__bubbles\">\n @for (rendered of item.messages; track rendered.message.id) {\n <article\n class=\"mlv-chat__item\"\n [class.mlv-chat__item--enter]=\"_liveIds().has(rendered.message.id)\"\n animate.leave=\"mlv-chat__item--leave\"\n [attr.aria-label]=\"_messageLabel(rendered.message, item.own)\"\n >\n <mlv-chat-message\n [message]=\"rendered.message\"\n [own]=\"item.own\"\n [groupPosition]=\"rendered.position\"\n (retry)=\"retry.emit(rendered.message)\"\n (mediaClick)=\"mediaClick.emit({ message: rendered.message, attachment: $event })\"\n (replyClick)=\"replyClick.emit({ message: rendered.message, replyTo: $event })\"\n />\n </article>\n }\n </div>\n </div>\n </div>\n } } } @if (_typingUserObjects().length) {\n <mlv-chat-typing class=\"mlv-chat__typing\" [users]=\"_typingUserObjects()\" />\n } }\n </div>\n</mlv-scrollbar>\n@if (!_pinned() && _newCount() > 0) {\n<button\n type=\"button\"\n class=\"mlv-chat__pill\"\n (click)=\"_scrollToBottom('smooth')\"\n>\n {{ _i18n().newMessages | mlvTranslate: { count: _newCount() } }}\n</button>\n}\n", styles: ["@layer mlv.components{@keyframes mlv-chat-item-enter{0%{opacity:0;transform:translateY(.5rem);grid-template-rows:0fr}to{opacity:1;transform:translateY(0);grid-template-rows:1fr}}@keyframes mlv-chat-item-leave-fade{to{opacity:0}}@keyframes mlv-chat-item-leave-collapse{to{grid-template-rows:0fr}}.mlv-chat{box-sizing:border-box;padding:0;margin:0;font-family:var(--mlv-typography-family-text);font-size:var(--mlv-typography-body-m-size)}.mlv-chat *{box-sizing:border-box}.mlv-chat{--mlv-chat-gap: .5rem;--mlv-chat-padding: var(--mlv-padding-m);--mlv-chat-bubble-gap: .125rem;position:relative;display:flex;flex-direction:column;min-block-size:0}.mlv-chat__viewport{flex:1;display:flex;flex-direction:column;padding:var(--mlv-chat-padding);overflow-y:auto;overflow-anchor:auto}.mlv-chat__content{display:flex;flex-direction:column;gap:var(--mlv-chat-gap);margin-block-start:auto}.mlv-chat__group{display:flex;flex-direction:column;gap:.125rem;content-visibility:auto;contain-intrinsic-size:auto 3.5rem}.mlv-chat__group--own{align-items:flex-end}.mlv-chat__group-body{display:flex;align-items:flex-end;gap:.5rem;max-inline-size:100%}.mlv-chat__avatar{position:sticky;inset-block-end:0;align-self:flex-end;flex-shrink:0}.mlv-chat__group--own .mlv-chat__group-body{flex-direction:row-reverse}.mlv-chat__bubbles{display:flex;flex-direction:column;gap:var(--mlv-chat-bubble-gap);max-inline-size:75%;min-inline-size:0}.mlv-chat__group--own .mlv-chat__bubbles{align-items:flex-end}.mlv-chat__item{display:grid;grid-template-rows:1fr;min-inline-size:0;will-change:transform,opacity,grid-template-rows}.mlv-chat__item>*{min-block-size:0;overflow:hidden}.mlv-chat__item--enter{animation:mlv-chat-item-enter var(--mlv-duration-slow) var(--mlv-ease-out-strong) both}.mlv-chat__item--leave{animation:mlv-chat-item-leave-fade var(--mlv-duration-fast) var(--mlv-ease-out-strong) forwards,mlv-chat-item-leave-collapse var(--mlv-duration-normal) var(--mlv-ease-out-strong) forwards}.mlv-chat__group--own .mlv-chat__item{justify-items:end}.mlv-chat__author{font-size:var(--mlv-typography-body-s-size);color:var(--mlv-text-secondary);margin-inline-start:2.25rem}.mlv-chat__date{align-self:center;font-size:inherit}.mlv-chat__older-loader{display:flex;justify-content:center;padding-block:.5rem}.mlv-chat__skeleton{display:flex}.mlv-chat__skeleton mlv-skeleton{border-radius:var(--mlv-radius-l)}.mlv-chat__skeleton--own{justify-content:flex-end}.mlv-chat__typing{align-self:flex-start}.mlv-chat-typing__label{font-size:var(--mlv-typography-body-m-size)}.mlv-chat__pill{position:absolute;inset-block-end:1rem;inset-inline:0;inline-size:fit-content;margin-inline:auto;padding:.375rem .75rem;border:none;border-radius:var(--mlv-radius-full);background-color:var(--mlv-background-raised);color:var(--mlv-text-action);box-shadow:var(--mlv-shadow-floating);font-size:var(--mlv-typography-body-s-size);cursor:pointer}.mlv-chat__pill:focus-visible{outline:var(--mlv-stroke-width-medium) solid var(--mlv-border-focus);outline-offset:var(--mlv-focus-ring-offset)}[class*=--tight] .mlv-chat:not([class*=--compact],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-chat[class*=--tight]{--mlv-chat-gap: .25rem;--mlv-chat-padding: var(--mlv-padding-xs);--mlv-chat-bubble-gap: .0625rem}[class*=--compact] .mlv-chat:not([class*=--tight],[class*=--comfortable],[class*=--spacious],[class*=--airy]),.mlv-chat[class*=--compact]{--mlv-chat-gap: .375rem;--mlv-chat-padding: var(--mlv-padding-s)}[class*=--spacious] .mlv-chat:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--airy]),.mlv-chat[class*=--spacious]{--mlv-chat-gap: .75rem;--mlv-chat-padding: var(--mlv-padding-l);--mlv-chat-bubble-gap: .25rem}[class*=--airy] .mlv-chat:not([class*=--tight],[class*=--compact],[class*=--comfortable],[class*=--spacious]),.mlv-chat[class*=--airy]{--mlv-chat-gap: 1rem;--mlv-chat-padding: var(--mlv-padding-xl);--mlv-chat-bubble-gap: .375rem}@media(prefers-reduced-motion:reduce){.mlv-chat,.mlv-chat *,.mlv-chat:before,.mlv-chat:after,[class^=mlv-chat__],[class*=\" mlv-chat__\"],[class^=mlv-chat--],[class*=\" mlv-chat--\"]{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:var(--mlv-duration-instant)!important}}}\n"] }]
818
+ }], ctorParameters: () => [], propDecorators: { messages: [{ type: i0.Input, args: [{ isSignal: true, alias: "messages", required: true }] }], selfId: [{ type: i0.Input, args: [{ isSignal: true, alias: "selfId", required: true }] }], users: [{ type: i0.Input, args: [{ isSignal: true, alias: "users", required: false }] }], loading: [{ type: i0.Input, args: [{ isSignal: true, alias: "loading", required: false }] }], loadingOlder: [{ type: i0.Input, args: [{ isSignal: true, alias: "loadingOlder", required: false }] }], hasOlder: [{ type: i0.Input, args: [{ isSignal: true, alias: "hasOlder", required: false }] }], typingUsers: [{ type: i0.Input, args: [{ isSignal: true, alias: "typingUsers", required: false }] }], groupWindow: [{ type: i0.Input, args: [{ isSignal: true, alias: "groupWindow", required: false }] }], showAuthors: [{ type: i0.Input, args: [{ isSignal: true, alias: "showAuthors", required: false }] }], dateSeparators: [{ type: i0.Input, args: [{ isSignal: true, alias: "dateSeparators", required: false }] }], windowSize: [{ type: i0.Input, args: [{ isSignal: true, alias: "windowSize", required: false }] }], loadOlder: [{ type: i0.Output, args: ["loadOlder"] }], retry: [{ type: i0.Output, args: ["retry"] }], mediaClick: [{ type: i0.Output, args: ["mediaClick"] }], replyClick: [{ type: i0.Output, args: ["replyClick"] }], authorDef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvChatAuthorDef), { isSignal: true }] }], dateDef: [{ type: i0.ContentChild, args: [i0.forwardRef(() => MlvChatDateDef), { isSignal: true }] }], _messageDefs: [{ type: i0.ContentChildren, args: [i0.forwardRef(() => MlvChatMessageDef), { isSignal: true }] }], _viewport: [{ type: i0.ViewChild, args: [i0.forwardRef(() => MlvScrollbar), { isSignal: true }] }], _content: [{ type: i0.ViewChild, args: ['content', { isSignal: true }] }] } });
819
+
820
+ /**
821
+ * Generated bundle index. Do not edit.
822
+ */
823
+
824
+ export { MLV_CHAT_MESSAGE_DEFS, MLV_CHAT_USERS, MlvChat, MlvChatAuthorDef, MlvChatDateDef, MlvChatMessage, MlvChatMessageDef, buildChatRenderList, formatChatDuration, isSameChatDay, toChatDate };
825
+ //# sourceMappingURL=malva-ui-core-chat.mjs.map