@acorex/components 22.1.7 → 22.2.0-next.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (324) hide show
  1. package/emoji/README.md +3 -0
  2. package/emojipicker/README.md +3 -0
  3. package/fesm2022/acorex-components-accordion.mjs +12 -12
  4. package/fesm2022/acorex-components-accordion.mjs.map +1 -1
  5. package/fesm2022/acorex-components-action-sheet.mjs +15 -14
  6. package/fesm2022/acorex-components-action-sheet.mjs.map +1 -1
  7. package/fesm2022/acorex-components-alert.mjs +7 -7
  8. package/fesm2022/acorex-components-alert.mjs.map +1 -1
  9. package/fesm2022/acorex-components-aspect-ratio.mjs +3 -3
  10. package/fesm2022/acorex-components-aspect-ratio.mjs.map +1 -1
  11. package/fesm2022/acorex-components-audio-wave.mjs +32 -11
  12. package/fesm2022/acorex-components-audio-wave.mjs.map +1 -1
  13. package/fesm2022/acorex-components-autocomplete.mjs +9 -8
  14. package/fesm2022/acorex-components-autocomplete.mjs.map +1 -1
  15. package/fesm2022/acorex-components-avatar.mjs +10 -10
  16. package/fesm2022/acorex-components-avatar.mjs.map +1 -1
  17. package/fesm2022/acorex-components-badge.mjs +7 -7
  18. package/fesm2022/acorex-components-badge.mjs.map +1 -1
  19. package/fesm2022/acorex-components-bottom-navigation.mjs +10 -10
  20. package/fesm2022/acorex-components-bottom-navigation.mjs.map +1 -1
  21. package/fesm2022/acorex-components-breadcrumbs.mjs +10 -10
  22. package/fesm2022/acorex-components-breadcrumbs.mjs.map +1 -1
  23. package/fesm2022/acorex-components-bubble.mjs +71 -0
  24. package/fesm2022/acorex-components-bubble.mjs.map +1 -0
  25. package/fesm2022/acorex-components-button-group.mjs +22 -15
  26. package/fesm2022/acorex-components-button-group.mjs.map +1 -1
  27. package/fesm2022/acorex-components-button.mjs +366 -56
  28. package/fesm2022/acorex-components-button.mjs.map +1 -1
  29. package/fesm2022/acorex-components-calendar.mjs +40 -37
  30. package/fesm2022/acorex-components-calendar.mjs.map +1 -1
  31. package/fesm2022/acorex-components-check-box.mjs +7 -7
  32. package/fesm2022/acorex-components-check-box.mjs.map +1 -1
  33. package/fesm2022/acorex-components-chips.mjs +7 -7
  34. package/fesm2022/acorex-components-chips.mjs.map +1 -1
  35. package/fesm2022/acorex-components-circular-progress.mjs +7 -7
  36. package/fesm2022/acorex-components-circular-progress.mjs.map +1 -1
  37. package/fesm2022/acorex-components-code-editor.mjs +44 -19
  38. package/fesm2022/acorex-components-code-editor.mjs.map +1 -1
  39. package/fesm2022/acorex-components-color-box.mjs +7 -7
  40. package/fesm2022/acorex-components-color-box.mjs.map +1 -1
  41. package/fesm2022/acorex-components-color-palette.mjs +28 -28
  42. package/fesm2022/acorex-components-color-palette.mjs.map +1 -1
  43. package/fesm2022/acorex-components-combo-box.mjs +188 -31
  44. package/fesm2022/acorex-components-combo-box.mjs.map +1 -1
  45. package/fesm2022/acorex-components-command.mjs +11 -7
  46. package/fesm2022/acorex-components-command.mjs.map +1 -1
  47. package/fesm2022/acorex-components-comment.mjs +28 -28
  48. package/fesm2022/acorex-components-comment.mjs.map +1 -1
  49. package/fesm2022/acorex-components-conversation-acorex-components-conversation-C1Lf9tAe.mjs +19538 -0
  50. package/fesm2022/acorex-components-conversation-acorex-components-conversation-C1Lf9tAe.mjs.map +1 -0
  51. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs +50 -0
  52. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-F5fLD_SK.mjs.map +1 -0
  53. package/fesm2022/acorex-components-conversation-emoji-categories-C7Gm95V0.mjs.map +1 -1
  54. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs +87 -0
  55. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-Bk3ixvt2.mjs.map +1 -0
  56. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-DuRLMEa3.mjs → acorex-components-conversation-picker-rename-file-dialog.component-DyOC1WEb.mjs} +5 -5
  57. package/fesm2022/{acorex-components-conversation-picker-rename-file-dialog.component-DuRLMEa3.mjs.map → acorex-components-conversation-picker-rename-file-dialog.component-DyOC1WEb.mjs.map} +1 -1
  58. package/fesm2022/acorex-components-conversation.mjs +1 -1
  59. package/fesm2022/acorex-components-cron-job.mjs +47 -47
  60. package/fesm2022/acorex-components-cron-job.mjs.map +1 -1
  61. package/fesm2022/acorex-components-data-list.mjs +3 -3
  62. package/fesm2022/acorex-components-data-list.mjs.map +1 -1
  63. package/fesm2022/acorex-components-data-pager.mjs +182 -184
  64. package/fesm2022/acorex-components-data-pager.mjs.map +1 -1
  65. package/fesm2022/acorex-components-data-table.mjs +809 -168
  66. package/fesm2022/acorex-components-data-table.mjs.map +1 -1
  67. package/fesm2022/acorex-components-datetime-box.mjs +7 -7
  68. package/fesm2022/acorex-components-datetime-box.mjs.map +1 -1
  69. package/fesm2022/acorex-components-datetime-input.mjs +7 -7
  70. package/fesm2022/acorex-components-datetime-input.mjs.map +1 -1
  71. package/fesm2022/acorex-components-datetime-picker.mjs +8 -8
  72. package/fesm2022/acorex-components-datetime-picker.mjs.map +1 -1
  73. package/fesm2022/acorex-components-decorators.mjs +59 -117
  74. package/fesm2022/acorex-components-decorators.mjs.map +1 -1
  75. package/fesm2022/acorex-components-dialog.mjs +11 -11
  76. package/fesm2022/acorex-components-dialog.mjs.map +1 -1
  77. package/fesm2022/acorex-components-drawer.mjs +11 -11
  78. package/fesm2022/acorex-components-drawer.mjs.map +1 -1
  79. package/fesm2022/acorex-components-dropdown-button.mjs +10 -9
  80. package/fesm2022/acorex-components-dropdown-button.mjs.map +1 -1
  81. package/fesm2022/acorex-components-dropdown.mjs +19 -14
  82. package/fesm2022/acorex-components-dropdown.mjs.map +1 -1
  83. package/fesm2022/acorex-components-editor.mjs +15 -14
  84. package/fesm2022/acorex-components-editor.mjs.map +1 -1
  85. package/fesm2022/acorex-components-emoji.mjs +74 -0
  86. package/fesm2022/acorex-components-emoji.mjs.map +1 -0
  87. package/fesm2022/acorex-components-emojipicker.mjs +425 -0
  88. package/fesm2022/acorex-components-emojipicker.mjs.map +1 -0
  89. package/fesm2022/acorex-components-fab.mjs +6 -6
  90. package/fesm2022/acorex-components-fab.mjs.map +1 -1
  91. package/fesm2022/acorex-components-file-viewer.mjs +250 -133
  92. package/fesm2022/acorex-components-file-viewer.mjs.map +1 -1
  93. package/fesm2022/acorex-components-form.mjs +17 -17
  94. package/fesm2022/acorex-components-form.mjs.map +1 -1
  95. package/fesm2022/acorex-components-grid-layout-builder.mjs +10 -10
  96. package/fesm2022/acorex-components-grid-layout-builder.mjs.map +1 -1
  97. package/fesm2022/acorex-components-highlight.mjs +80 -0
  98. package/fesm2022/acorex-components-highlight.mjs.map +1 -0
  99. package/fesm2022/acorex-components-image-editor.mjs +217 -79
  100. package/fesm2022/acorex-components-image-editor.mjs.map +1 -1
  101. package/fesm2022/acorex-components-image.mjs +7 -7
  102. package/fesm2022/acorex-components-image.mjs.map +1 -1
  103. package/fesm2022/acorex-components-inline-reaction.mjs +111 -0
  104. package/fesm2022/acorex-components-inline-reaction.mjs.map +1 -0
  105. package/fesm2022/acorex-components-json-viewer.mjs +7 -7
  106. package/fesm2022/acorex-components-json-viewer.mjs.map +1 -1
  107. package/fesm2022/acorex-components-kanban.mjs +3 -3
  108. package/fesm2022/acorex-components-kanban.mjs.map +1 -1
  109. package/fesm2022/acorex-components-kbd.mjs +6 -6
  110. package/fesm2022/acorex-components-kbd.mjs.map +1 -1
  111. package/fesm2022/acorex-components-label.mjs +7 -7
  112. package/fesm2022/acorex-components-label.mjs.map +1 -1
  113. package/fesm2022/acorex-components-list.mjs +28 -9
  114. package/fesm2022/acorex-components-list.mjs.map +1 -1
  115. package/fesm2022/acorex-components-loading-dialog.mjs +10 -10
  116. package/fesm2022/acorex-components-loading-dialog.mjs.map +1 -1
  117. package/fesm2022/acorex-components-loading.mjs +16 -16
  118. package/fesm2022/acorex-components-loading.mjs.map +1 -1
  119. package/fesm2022/acorex-components-lookup.mjs +919 -169
  120. package/fesm2022/acorex-components-lookup.mjs.map +1 -1
  121. package/fesm2022/acorex-components-map.mjs +20 -13
  122. package/fesm2022/acorex-components-map.mjs.map +1 -1
  123. package/fesm2022/acorex-components-media-viewer.mjs +215 -218
  124. package/fesm2022/acorex-components-media-viewer.mjs.map +1 -1
  125. package/fesm2022/acorex-components-menu.mjs +146 -45
  126. package/fesm2022/acorex-components-menu.mjs.map +1 -1
  127. package/fesm2022/acorex-components-message-status.mjs +71 -0
  128. package/fesm2022/acorex-components-message-status.mjs.map +1 -0
  129. package/fesm2022/acorex-components-message-time.mjs +36 -0
  130. package/fesm2022/acorex-components-message-time.mjs.map +1 -0
  131. package/fesm2022/acorex-components-message.mjs +120 -0
  132. package/fesm2022/acorex-components-message.mjs.map +1 -0
  133. package/fesm2022/acorex-components-navbar.mjs +7 -7
  134. package/fesm2022/acorex-components-navbar.mjs.map +1 -1
  135. package/fesm2022/acorex-components-notification.mjs +13 -14
  136. package/fesm2022/acorex-components-notification.mjs.map +1 -1
  137. package/fesm2022/acorex-components-number-box.mjs +17 -10
  138. package/fesm2022/acorex-components-number-box.mjs.map +1 -1
  139. package/fesm2022/acorex-components-otp.mjs +7 -7
  140. package/fesm2022/acorex-components-otp.mjs.map +1 -1
  141. package/fesm2022/acorex-components-page.mjs +10 -10
  142. package/fesm2022/acorex-components-page.mjs.map +1 -1
  143. package/fesm2022/acorex-components-paint.mjs +25 -25
  144. package/fesm2022/acorex-components-paint.mjs.map +1 -1
  145. package/fesm2022/acorex-components-password-box.mjs +10 -10
  146. package/fesm2022/acorex-components-password-box.mjs.map +1 -1
  147. package/fesm2022/acorex-components-pdf-reader.mjs +7 -7
  148. package/fesm2022/acorex-components-pdf-reader.mjs.map +1 -1
  149. package/fesm2022/acorex-components-phone-box.mjs +7 -7
  150. package/fesm2022/acorex-components-phone-box.mjs.map +1 -1
  151. package/fesm2022/acorex-components-picker.mjs +13 -13
  152. package/fesm2022/acorex-components-picker.mjs.map +1 -1
  153. package/fesm2022/acorex-components-popover.mjs +61 -13
  154. package/fesm2022/acorex-components-popover.mjs.map +1 -1
  155. package/fesm2022/acorex-components-popup.mjs +631 -167
  156. package/fesm2022/acorex-components-popup.mjs.map +1 -1
  157. package/fesm2022/acorex-components-progress-bar.mjs +7 -7
  158. package/fesm2022/acorex-components-progress-bar.mjs.map +1 -1
  159. package/fesm2022/acorex-components-qrcode.mjs +7 -7
  160. package/fesm2022/acorex-components-qrcode.mjs.map +1 -1
  161. package/fesm2022/acorex-components-radio.mjs +7 -7
  162. package/fesm2022/acorex-components-radio.mjs.map +1 -1
  163. package/fesm2022/acorex-components-rail-navigation.mjs +13 -13
  164. package/fesm2022/acorex-components-rail-navigation.mjs.map +1 -1
  165. package/fesm2022/acorex-components-range-slider.mjs +7 -7
  166. package/fesm2022/acorex-components-range-slider.mjs.map +1 -1
  167. package/fesm2022/acorex-components-rate-picker.mjs +7 -7
  168. package/fesm2022/acorex-components-rate-picker.mjs.map +1 -1
  169. package/fesm2022/acorex-components-reaction.mjs +144 -0
  170. package/fesm2022/acorex-components-reaction.mjs.map +1 -0
  171. package/fesm2022/acorex-components-rest-api-generator.mjs +23 -23
  172. package/fesm2022/acorex-components-rest-api-generator.mjs.map +1 -1
  173. package/fesm2022/acorex-components-result.mjs +7 -7
  174. package/fesm2022/acorex-components-result.mjs.map +1 -1
  175. package/fesm2022/acorex-components-routing-progress.mjs +7 -7
  176. package/fesm2022/acorex-components-routing-progress.mjs.map +1 -1
  177. package/fesm2022/acorex-components-rrule.mjs +9 -9
  178. package/fesm2022/acorex-components-rrule.mjs.map +1 -1
  179. package/fesm2022/acorex-components-scheduler-picker.mjs +56 -56
  180. package/fesm2022/acorex-components-scheduler-picker.mjs.map +1 -1
  181. package/fesm2022/acorex-components-scheduler.mjs +35 -35
  182. package/fesm2022/acorex-components-scheduler.mjs.map +1 -1
  183. package/fesm2022/acorex-components-search-box.mjs +7 -7
  184. package/fesm2022/acorex-components-search-box.mjs.map +1 -1
  185. package/fesm2022/acorex-components-select-box.mjs +9 -8
  186. package/fesm2022/acorex-components-select-box.mjs.map +1 -1
  187. package/fesm2022/acorex-components-selection-list.mjs +7 -8
  188. package/fesm2022/acorex-components-selection-list.mjs.map +1 -1
  189. package/fesm2022/acorex-components-side-menu.mjs +55 -42
  190. package/fesm2022/acorex-components-side-menu.mjs.map +1 -1
  191. package/fesm2022/acorex-components-sidebar.mjs +28 -28
  192. package/fesm2022/acorex-components-sidebar.mjs.map +1 -1
  193. package/fesm2022/acorex-components-skeleton.mjs +7 -7
  194. package/fesm2022/acorex-components-skeleton.mjs.map +1 -1
  195. package/fesm2022/acorex-components-slider.mjs +7 -7
  196. package/fesm2022/acorex-components-slider.mjs.map +1 -1
  197. package/fesm2022/acorex-components-sliding-item.mjs +13 -13
  198. package/fesm2022/acorex-components-sliding-item.mjs.map +1 -1
  199. package/fesm2022/acorex-components-step-wizard.mjs +16 -18
  200. package/fesm2022/acorex-components-step-wizard.mjs.map +1 -1
  201. package/fesm2022/acorex-components-switch.mjs +10 -10
  202. package/fesm2022/acorex-components-switch.mjs.map +1 -1
  203. package/fesm2022/acorex-components-tabs.mjs +393 -76
  204. package/fesm2022/acorex-components-tabs.mjs.map +1 -1
  205. package/fesm2022/acorex-components-tag-box.mjs +7 -7
  206. package/fesm2022/acorex-components-tag-box.mjs.map +1 -1
  207. package/fesm2022/acorex-components-tag.mjs +7 -7
  208. package/fesm2022/acorex-components-tag.mjs.map +1 -1
  209. package/fesm2022/acorex-components-text-area.mjs +7 -7
  210. package/fesm2022/acorex-components-text-area.mjs.map +1 -1
  211. package/fesm2022/acorex-components-text-box.mjs +7 -7
  212. package/fesm2022/acorex-components-text-box.mjs.map +1 -1
  213. package/fesm2022/acorex-components-time-duration.mjs +7 -7
  214. package/fesm2022/acorex-components-time-duration.mjs.map +1 -1
  215. package/fesm2022/acorex-components-time-line.mjs +10 -10
  216. package/fesm2022/acorex-components-time-line.mjs.map +1 -1
  217. package/fesm2022/acorex-components-toast.mjs +14 -14
  218. package/fesm2022/acorex-components-toast.mjs.map +1 -1
  219. package/fesm2022/acorex-components-toolbar.mjs +7 -7
  220. package/fesm2022/acorex-components-toolbar.mjs.map +1 -1
  221. package/fesm2022/acorex-components-tooltip.mjs +10 -10
  222. package/fesm2022/acorex-components-tooltip.mjs.map +1 -1
  223. package/fesm2022/acorex-components-tree-view.mjs +54 -14
  224. package/fesm2022/acorex-components-tree-view.mjs.map +1 -1
  225. package/fesm2022/acorex-components-uploader.mjs +13 -13
  226. package/fesm2022/acorex-components-uploader.mjs.map +1 -1
  227. package/fesm2022/acorex-components-video-player.mjs +7 -7
  228. package/fesm2022/acorex-components-video-player.mjs.map +1 -1
  229. package/fesm2022/acorex-components-wysiwyg.mjs +691 -295
  230. package/fesm2022/acorex-components-wysiwyg.mjs.map +1 -1
  231. package/fesm2022/acorex-components.mjs.map +1 -1
  232. package/highlight/README.md +13 -0
  233. package/inline-reaction/README.md +3 -0
  234. package/lookup/README.md +1 -1
  235. package/message/README.md +3 -0
  236. package/message-status/README.md +3 -0
  237. package/message-time/README.md +3 -0
  238. package/package.json +48 -13
  239. package/reaction/README.md +3 -0
  240. package/types/acorex-components-action-sheet.d.ts +1 -1
  241. package/types/acorex-components-audio-wave.d.ts +8 -0
  242. package/types/acorex-components-bubble.d.ts +31 -0
  243. package/types/acorex-components-button-group.d.ts +4 -0
  244. package/types/acorex-components-button.d.ts +75 -10
  245. package/types/acorex-components-calendar.d.ts +13 -4
  246. package/types/acorex-components-check-box.d.ts +1 -1
  247. package/types/acorex-components-code-editor.d.ts +4 -1
  248. package/types/acorex-components-color-box.d.ts +1 -1
  249. package/types/acorex-components-color-palette.d.ts +2 -2
  250. package/types/acorex-components-combo-box.d.ts +21 -2
  251. package/types/acorex-components-command.d.ts +3 -1
  252. package/types/acorex-components-conversation.d.ts +550 -242
  253. package/types/acorex-components-cron-job.d.ts +6 -6
  254. package/types/acorex-components-data-pager.d.ts +27 -9
  255. package/types/acorex-components-data-table.d.ts +226 -21
  256. package/types/acorex-components-datetime-box.d.ts +1 -1
  257. package/types/acorex-components-datetime-picker.d.ts +1 -1
  258. package/types/acorex-components-decorators.d.ts +15 -33
  259. package/types/acorex-components-dialog.d.ts +1 -1
  260. package/types/acorex-components-dropdown-button.d.ts +2 -1
  261. package/types/acorex-components-dropdown.d.ts +6 -1
  262. package/types/acorex-components-editor.d.ts +1 -1
  263. package/types/acorex-components-emoji.d.ts +42 -0
  264. package/types/acorex-components-emojipicker.d.ts +146 -0
  265. package/types/acorex-components-file-viewer.d.ts +14 -2
  266. package/types/acorex-components-highlight.d.ts +31 -0
  267. package/types/acorex-components-image-editor.d.ts +19 -2
  268. package/types/acorex-components-inline-reaction.d.ts +52 -0
  269. package/types/acorex-components-list.d.ts +12 -0
  270. package/types/acorex-components-loading-dialog.d.ts +1 -1
  271. package/types/acorex-components-loading.d.ts +1 -1
  272. package/types/acorex-components-lookup.d.ts +227 -79
  273. package/types/acorex-components-map.d.ts +7 -2
  274. package/types/acorex-components-media-viewer.d.ts +4 -3
  275. package/types/acorex-components-menu.d.ts +17 -5
  276. package/types/acorex-components-message-status.d.ts +23 -0
  277. package/types/acorex-components-message-time.d.ts +19 -0
  278. package/types/acorex-components-message.d.ts +59 -0
  279. package/types/acorex-components-notification.d.ts +1 -1
  280. package/types/acorex-components-number-box.d.ts +2 -1
  281. package/types/acorex-components-otp.d.ts +1 -1
  282. package/types/acorex-components-page.d.ts +2 -2
  283. package/types/acorex-components-paint.d.ts +2 -2
  284. package/types/acorex-components-password-box.d.ts +1 -1
  285. package/types/acorex-components-phone-box.d.ts +1 -1
  286. package/types/acorex-components-popover.d.ts +13 -1
  287. package/types/acorex-components-popup.d.ts +183 -50
  288. package/types/acorex-components-rail-navigation.d.ts +1 -1
  289. package/types/acorex-components-range-slider.d.ts +1 -1
  290. package/types/acorex-components-reaction.d.ts +85 -0
  291. package/types/acorex-components-rest-api-generator.d.ts +1 -1
  292. package/types/acorex-components-rrule.d.ts +1 -1
  293. package/types/acorex-components-scheduler-picker.d.ts +1 -1
  294. package/types/acorex-components-scheduler.d.ts +1 -1
  295. package/types/acorex-components-search-box.d.ts +1 -1
  296. package/types/acorex-components-selection-list.d.ts +1 -1
  297. package/types/acorex-components-side-menu.d.ts +6 -8
  298. package/types/acorex-components-slider.d.ts +1 -1
  299. package/types/acorex-components-step-wizard.d.ts +4 -4
  300. package/types/acorex-components-switch.d.ts +1 -1
  301. package/types/acorex-components-tabs.d.ts +109 -19
  302. package/types/acorex-components-tag-box.d.ts +2 -2
  303. package/types/acorex-components-text-area.d.ts +1 -1
  304. package/types/acorex-components-text-box.d.ts +1 -1
  305. package/types/acorex-components-time-duration.d.ts +1 -1
  306. package/types/acorex-components-toast.d.ts +1 -1
  307. package/types/acorex-components-tree-view.d.ts +23 -1
  308. package/types/acorex-components-wysiwyg.d.ts +426 -77
  309. package/fesm2022/acorex-components-conversation-acorex-components-conversation-EiqMwr9v.mjs +0 -16862
  310. package/fesm2022/acorex-components-conversation-acorex-components-conversation-EiqMwr9v.mjs.map +0 -1
  311. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs +0 -51
  312. package/fesm2022/acorex-components-conversation-composer-action-choice-dialog.component-D4ca9Mvt.mjs.map +0 -1
  313. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs +0 -85
  314. package/fesm2022/acorex-components-conversation-image-picker-editor-dialog.component-QVs1XWYf.mjs.map +0 -1
  315. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-C7BnTUw2.mjs +0 -210
  316. package/fesm2022/acorex-components-conversation-open-composer-picker-for-files-C7BnTUw2.mjs.map +0 -1
  317. package/fesm2022/acorex-components-flow-chart.mjs +0 -735
  318. package/fesm2022/acorex-components-flow-chart.mjs.map +0 -1
  319. package/fesm2022/acorex-components-query-builder.mjs +0 -267
  320. package/fesm2022/acorex-components-query-builder.mjs.map +0 -1
  321. package/flow-chart/README.md +0 -3
  322. package/query-builder/README.md +0 -3
  323. package/types/acorex-components-flow-chart.d.ts +0 -187
  324. package/types/acorex-components-query-builder.d.ts +0 -52
@@ -1,13 +1,15 @@
1
1
  import * as _acorex_components_conversation from '@acorex/components/conversation';
2
2
  import * as _angular_core from '@angular/core';
3
- import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, OnInit, EventEmitter, TemplateRef, InjectionToken, ElementRef, ModuleWithProviders } from '@angular/core';
3
+ import { OnDestroy, ViewContainerRef, Type, InputSignal, WritableSignal, Signal, Provider, EventEmitter, TemplateRef, InjectionToken, ElementRef, ModuleWithProviders } from '@angular/core';
4
4
  import { AXComponentCloseEvent, AXHtmlEvent, AXClickEvent, AXDataSource, AXPlacement } from '@acorex/cdk/common';
5
5
  import { AXTranslationService } from '@acorex/core/translation';
6
6
  import * as _acorex_components_action_sheet from '@acorex/components/action-sheet';
7
7
  import { AXActionSheetRef } from '@acorex/components/action-sheet';
8
8
  import * as _acorex_components_popup from '@acorex/components/popup';
9
- import { AXPopupService, AXPopupRef } from '@acorex/components/popup';
9
+ import { AXPopupRef, AXPopupService } from '@acorex/components/popup';
10
10
  import { AXFileUploadOptions, AXUploadResult, AXUploadReference, AXUploaderService, AXUploaderFileChangeEvent } from '@acorex/cdk/uploader';
11
+ import { AXToastService } from '@acorex/components/toast';
12
+ import { AXValidationRuleResult } from '@acorex/core/validation';
11
13
  import { AXListComponent } from '@acorex/components/list';
12
14
  import * as rxjs from 'rxjs';
13
15
  import { Observable } from 'rxjs';
@@ -17,12 +19,10 @@ import { AXTabLocation } from '@acorex/components/tabs';
17
19
  import { AXBasePageComponent } from '@acorex/components/page';
18
20
  import * as _acorex_core_file from '@acorex/core/file';
19
21
  import { AXFileTypeRegistryService, AXFileTypeExtensionHint, AXFileTypeOpenContext, AXFileTypeInfoProvider, AXFileType, AXFileService } from '@acorex/core/file';
20
- import { AXToastService } from '@acorex/components/toast';
21
- import { AXValidationRuleResult } from '@acorex/core/validation';
22
22
  import { AXMapMarker } from '@acorex/components/map';
23
+ import { AXWaveConfig, AXAudioWaveChangeEvent } from '@acorex/components/audio-wave';
23
24
  import { AXRangeSliderValue } from '@acorex/components/range-slider';
24
25
  import { SafeHtml } from '@angular/platform-browser';
25
- import { AXWaveConfig, AXAudioWaveChangeEvent } from '@acorex/components/audio-wave';
26
26
  import * as i1 from '@angular/common';
27
27
  import * as i2 from '@angular/forms';
28
28
 
@@ -185,6 +185,7 @@ interface AXConversationFileMediaItem extends AXConversationMediaItemFields {
185
185
  mimeType: string;
186
186
  thumbnailUrl?: string;
187
187
  extension?: string;
188
+ duration?: number;
188
189
  }
189
190
  interface AXConversationFilePayload {
190
191
  type: 'file';
@@ -471,6 +472,8 @@ interface AXConversationMessageListThemeBackground {
471
472
  }
472
473
  /** Single CSS value (both themes) or per-theme `{ light, dark }` backgrounds. */
473
474
  type AXConversationMessageListBackground = string | AXConversationMessageListThemeBackground;
475
+ /** Composer file-attachment UI: picker popup vs inline strip above the input. */
476
+ type AXConversationComposerAttachmentPresentation = 'overlay' | 'banner';
474
477
  /**
475
478
  * Conversation metadata
476
479
  * Extensible map for app-specific conversation data.
@@ -481,10 +484,16 @@ interface AXConversationMetadata extends Record<string, unknown> {
481
484
  /** Optional custom empty-state component for the message list. */
482
485
  messageListEmptyComponent?: Type<AXConversationMessageListEmptyComponent>;
483
486
  /**
484
- * When `false`, hides reaction UI (add button, bubbles, picker) for this conversation.
485
- * Defaults to `true` when omitted.
487
+ * Explicit reaction UI override for this conversation.
488
+ * When omitted, reactions are enabled for `private` / `group` / `channel` and disabled for `bot`.
486
489
  */
487
490
  reactionsEnabled?: boolean;
491
+ /**
492
+ * How composer file attachments are presented.
493
+ * `overlay` opens the picker popup; `banner` keeps files above the composer (ChatGPT-style).
494
+ * When omitted, `bot` chats default to `banner` and other types to `overlay`.
495
+ */
496
+ composerAttachmentPresentation?: AXConversationComposerAttachmentPresentation;
488
497
  }
489
498
  /** Contract for custom empty-state components rendered by message list. */
490
499
  interface AXConversationMessageListEmptyComponent {
@@ -693,6 +702,72 @@ declare abstract class AXConversationBaseRegistry<T extends AXConversationRegist
693
702
  protected abstract getRegistryName(): string;
694
703
  }
695
704
 
705
+ /**
706
+ * Shared upload state and helpers for composer media pickers.
707
+ */
708
+
709
+ /** Stable id for `@for` tracking while upload state is patched immutably. */
710
+ declare function createPickerUploadItemId(): string;
711
+ interface AXConversationComposerPickerUploadItem {
712
+ id: string;
713
+ file: File;
714
+ preview?: string;
715
+ duration?: number;
716
+ uploadProgress?: number;
717
+ uploading?: boolean;
718
+ uploaded?: boolean;
719
+ uploadedUrl?: string;
720
+ mediaId?: string;
721
+ error?: string;
722
+ abortController?: AbortController;
723
+ }
724
+ declare function getPickerCancelUploadLabel(translation: AXTranslationService): string;
725
+ declare function abortPickerUploads(items: Iterable<{
726
+ abortController?: AbortController;
727
+ } | null | undefined>): void;
728
+ interface AXConversationCleanupPickerUploadsOptions {
729
+ retainUploaded?: boolean;
730
+ }
731
+ /** Upload finished; reference is {@link mediaId} and/or a non-empty session url. */
732
+ declare function isPickerItemReadyToSend(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId'>): boolean;
733
+ /** Build uploader result shape for {@link *ItemFromUpload} after picker upload. */
734
+ declare function pickerItemToUploadResult(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): {
735
+ url: string;
736
+ mediaId?: string;
737
+ mimeType: string;
738
+ size: number;
739
+ } | null;
740
+ declare function pickerItemToMediaReference(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): AXConversationUploaderReference | null;
741
+ declare function deleteUploadedPickerMedia(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>): Promise<void>;
742
+ declare function cleanupPickerUploads(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>, options?: AXConversationCleanupPickerUploadsOptions): void;
743
+ declare function revokePickerBlobPreviews(items: Iterable<{
744
+ preview?: string;
745
+ } | null | undefined>): void;
746
+ declare function isUploadAborted(error: unknown, signal?: AbortSignal): boolean;
747
+ declare function limitFilesToCapacity(files: File[], currentCount: number, maxFiles: number): File[];
748
+ declare function uploadPickerFile(uploader: AXUploaderService, conversationId: string, file: File, onProgress: (percent: number) => void, signal?: AbortSignal): Promise<{
749
+ url: string;
750
+ mediaId?: string;
751
+ mimeType: string;
752
+ size: number;
753
+ }>;
754
+ declare function notifyMaxFilesCapacityExceeded(toast: AXToastService, translation: AXTranslationService, maxFiles: number): void;
755
+ /** User-facing message for a file validation failure. */
756
+ declare function formatPickerValidationMessage(translation: AXTranslationService, file: File, error: AXValidationRuleResult | undefined): string;
757
+ /** Show a warning toast for each failed validation rule result. */
758
+ declare function notifyPickerValidationErrors(toast: AXToastService, translation: AXTranslationService, rejected: {
759
+ file: File;
760
+ errors: AXValidationRuleResult[];
761
+ }[]): void;
762
+ /** Close popup/action-sheet host or inline composer shell after send/cancel. */
763
+ declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null, actionSheetRef?: AXActionSheetRef | null): void;
764
+
765
+ type AXConversationComposerDraftAttachmentKind = 'image' | 'video' | 'audio' | 'file';
766
+ interface AXConversationComposerDraftAttachment extends AXConversationComposerPickerUploadItem {
767
+ kind: AXConversationComposerDraftAttachmentKind;
768
+ icon: string;
769
+ }
770
+
696
771
  /** Primary composer button mode (send / cancel / stopping / default action / locked). */
697
772
  type AXConversationComposerPrimaryButtonMode = 'send' | 'cancel' | 'stopping' | 'default-action' | 'locked';
698
773
  declare class AXConversationComposerService {
@@ -700,8 +775,13 @@ declare class AXConversationComposerService {
700
775
  private readonly generationState;
701
776
  private readonly translation;
702
777
  private readonly popupService;
778
+ private readonly uploader;
779
+ private readonly fileService;
780
+ private readonly toast;
703
781
  private readonly config;
782
+ private readonly destroyRef;
704
783
  private readonly _activeActionOverlay;
784
+ constructor();
705
785
  private get registry();
706
786
  private readonly _replyMessage;
707
787
  private readonly _editMessage;
@@ -711,8 +791,10 @@ declare class AXConversationComposerService {
711
791
  readonly activeMessages: _angular_core.Signal<AXConversationMessage[]>;
712
792
  /** Draft text */
713
793
  readonly draftText: _angular_core.WritableSignal<string>;
714
- /** Attachments */
715
- readonly attachments: _angular_core.WritableSignal<File[]>;
794
+ /** Inline composer attachments shown above the input in banner mode. */
795
+ readonly draftAttachments: _angular_core.WritableSignal<AXConversationComposerDraftAttachment[]>;
796
+ readonly draftAttachmentsReady: _angular_core.Signal<boolean>;
797
+ readonly usesAttachmentBanner: _angular_core.Signal<boolean>;
716
798
  /** Incremented to request focus on the composer text area (handled by AXConversationComposerComponent). */
717
799
  private readonly _focusRequest;
718
800
  readonly focusRequest: _angular_core.Signal<number>;
@@ -749,6 +831,7 @@ declare class AXConversationComposerService {
749
831
  startEdit(message: AXConversationMessage): void;
750
832
  /** Focus the composer text area when the composer component is mounted. */
751
833
  focusComposer(): void;
834
+ clearReplyEdit(): void;
752
835
  clear(): void;
753
836
  /**
754
837
  * Persist draft for the previous conversation and reset composer UI state when switching conversations.
@@ -767,6 +850,15 @@ declare class AXConversationComposerService {
767
850
  toggleable?: boolean;
768
851
  initialFiles?: File[];
769
852
  }): Promise<void>;
853
+ browseDraftAttachments(fileType?: string): Promise<number>;
854
+ addDraftAttachments(files: File[]): Promise<number>;
855
+ removeDraftAttachment(id: string): void;
856
+ clearDraftAttachments(options?: {
857
+ retainUploaded?: boolean;
858
+ }): void;
859
+ buildDraftAttachmentCommand(caption?: string): Promise<AXConversationSendMessageCommand | null>;
860
+ private uploadDraftAttachment;
861
+ private patchDraftAttachment;
770
862
  /**
771
863
  * Hide the active action overlay.
772
864
  */
@@ -792,7 +884,7 @@ declare class AXConversationComposerService {
792
884
  */
793
885
  clearDraft(conversationId: string): void;
794
886
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerService, never>;
795
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerService>;
887
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
796
888
  }
797
889
 
798
890
  /**
@@ -969,7 +1061,7 @@ declare class AXConversationComposerActionRegistry {
969
1061
  */
970
1062
  clear(): void;
971
1063
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerActionRegistry, never>;
972
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerActionRegistry>;
1064
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
973
1065
  }
974
1066
 
975
1067
  /**
@@ -1030,7 +1122,7 @@ declare class AXConversationComposerTabRegistry {
1030
1122
  */
1031
1123
  clear(): void;
1032
1124
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerTabRegistry, never>;
1033
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerTabRegistry>;
1125
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1034
1126
  }
1035
1127
 
1036
1128
  /**
@@ -1104,7 +1196,7 @@ declare class AXConversationItemActionRegistry extends AXConversationBaseRegistr
1104
1196
  getActionTooltip(action: AXConversationItemAction, conversation: AXConversation): string | undefined;
1105
1197
  executeAction(actionId: string, context: AXConversationItemActionContext): Promise<void>;
1106
1198
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationItemActionRegistry, never>;
1107
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationItemActionRegistry>;
1199
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1108
1200
  }
1109
1201
 
1110
1202
  /**
@@ -1171,9 +1263,27 @@ declare class AXConversationTabRegistry {
1171
1263
  */
1172
1264
  clear(): void;
1173
1265
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationTabRegistry, never>;
1174
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationTabRegistry>;
1266
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1175
1267
  }
1176
1268
 
1269
+ /** Visual chrome around a message body in the list. */
1270
+ type AXConversationMessageChrome = 'bubble' | 'plain';
1271
+ /** Max consecutive emoji graphemes that render as a jumbo (sticker-sized) text message. */
1272
+ declare const AX_CONVERSATION_JUMBO_EMOJI_MAX = 3;
1273
+ /**
1274
+ * Resolve registry chrome config to a concrete value.
1275
+ * Default is {@link AXConversationMessageChrome bubble}.
1276
+ */
1277
+ declare function resolveMessageChrome(chrome: AXConversationMessageChrome | ((message: AXConversationMessage) => AXConversationMessageChrome) | undefined, message: AXConversationMessage): AXConversationMessageChrome;
1278
+ /** Visible graphemes in trimmed text (whitespace between emojis is dropped). */
1279
+ declare function listTextGraphemes(text: string | null | undefined): string[];
1280
+ /** Count emoji graphemes in trimmed text; `0` when mixed with other characters. */
1281
+ declare function countLoneEmojis(text: string | null | undefined): number;
1282
+ declare function isJumboEmojiText(text: string | null | undefined): boolean;
1283
+ declare function isJumboEmojiTextMessage(message: AXConversationMessage): boolean;
1284
+ /** Types that never sit inside a bubble cluster with neighboring messages. */
1285
+ declare function isPlainChromeMessage(message: AXConversationMessage): boolean;
1286
+
1177
1287
  /**
1178
1288
  * Message Renderer Registry
1179
1289
  * Register custom message renderers for different message types
@@ -1248,6 +1358,12 @@ interface AXConversationMessageRenderer {
1248
1358
  canHandle: (message: AXConversationMessage) => boolean;
1249
1359
  /** Renderer capabilities */
1250
1360
  capabilities: AXConversationMessageRendererCapabilities;
1361
+ /**
1362
+ * List chrome for this message type.
1363
+ * `plain` removes bubble fill, padding, shadow, and tail. Default is `bubble`.
1364
+ * Pass a function when chrome depends on payload (e.g. jumbo emoji text).
1365
+ */
1366
+ chrome?: AXConversationMessageChrome | ((message: AXConversationMessage) => AXConversationMessageChrome);
1251
1367
  /** Display name */
1252
1368
  displayName?: string;
1253
1369
  /** Icon name/class */
@@ -1308,7 +1424,7 @@ declare class AXConversationMessageRendererRegistry {
1308
1424
  */
1309
1425
  clear(): void;
1310
1426
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageRendererRegistry, never>;
1311
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageRendererRegistry>;
1427
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1312
1428
  }
1313
1429
 
1314
1430
  /**
@@ -1427,7 +1543,7 @@ declare class AXConversationInfoBarService {
1427
1543
  clearSearch(): void;
1428
1544
  private _extractOnClose;
1429
1545
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoBarService, never>;
1430
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationInfoBarService>;
1546
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1431
1547
  }
1432
1548
 
1433
1549
  /**
@@ -1543,7 +1659,7 @@ declare class AXConversationInfoBarActionRegistry extends AXConversationBaseRegi
1543
1659
  */
1544
1660
  getActionTooltip(action: AXConversationInfoBarAction, conversation: AXConversation): string | undefined;
1545
1661
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationInfoBarActionRegistry, never>;
1546
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationInfoBarActionRegistry>;
1662
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1547
1663
  }
1548
1664
 
1549
1665
  /**
@@ -1634,7 +1750,7 @@ declare class AXConversationMessageActionRegistry {
1634
1750
  */
1635
1751
  clear(): void;
1636
1752
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageActionRegistry, never>;
1637
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageActionRegistry>;
1753
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1638
1754
  }
1639
1755
 
1640
1756
  declare class AXConversationComposerComponent implements OnDestroy {
@@ -1643,14 +1759,21 @@ declare class AXConversationComposerComponent implements OnDestroy {
1643
1759
  private readonly messageListService;
1644
1760
  private readonly config;
1645
1761
  protected readonly translation: AXTranslationService;
1762
+ private readonly uploader;
1763
+ private readonly platform;
1764
+ private readonly fileService;
1765
+ private readonly toast;
1766
+ private readonly actionSheetService;
1767
+ private readonly hostRef;
1646
1768
  /** Access registry through conversation service */
1647
1769
  protected get composerActionRegistry(): _acorex_components_conversation.AXConversationComposerActionRegistry;
1648
1770
  /** Composer text area reference */
1649
1771
  private readonly textAreaRef;
1650
1772
  /** Draft text - use service */
1651
1773
  readonly draftText: _angular_core.WritableSignal<string>;
1652
- /** Attachments - use service */
1653
- readonly attachments: _angular_core.WritableSignal<File[]>;
1774
+ /** Draft attachments shown above the composer in banner mode. */
1775
+ readonly draftAttachments: _angular_core.WritableSignal<_acorex_components_conversation.AXConversationComposerDraftAttachment[]>;
1776
+ readonly usesAttachmentBanner: _angular_core.Signal<boolean>;
1654
1777
  /** Editing message */
1655
1778
  readonly editingMessage: _angular_core.WritableSignal<any>;
1656
1779
  /** Replying to message */
@@ -1681,6 +1804,7 @@ declare class AXConversationComposerComponent implements OnDestroy {
1681
1804
  readonly placeholder: _angular_core.Signal<string>;
1682
1805
  constructor();
1683
1806
  private draftSaveTimeout?;
1807
+ private seededEditMessageId;
1684
1808
  /** Number of input rows - use service */
1685
1809
  readonly inputRows: _angular_core.Signal<number>;
1686
1810
  /** Can send message - use service */
@@ -1707,6 +1831,10 @@ declare class AXConversationComposerComponent implements OnDestroy {
1707
1831
  readonly defaultAction: _angular_core.Signal<AXConversationComposerAction>;
1708
1832
  /** Handle key down (send on Enter; typing is driven by draft changes only). */
1709
1833
  onKeyDown(event: AXHtmlEvent<KeyboardEvent>): void;
1834
+ /** Keep the draft signal in sync with ngModel (signal two-way bind is unreliable on ax-text-area). */
1835
+ onDraftModelChange(value: string): void;
1836
+ /** Keep the draft signal in sync with ax-text-area CVA output. */
1837
+ onDraftValueChanged(event: unknown): void;
1710
1838
  /** Handle draft text changes — throttled typing indicator via conversation service. */
1711
1839
  onDraftChanged(): void;
1712
1840
  /** Cleanup on destroy */
@@ -1730,8 +1858,13 @@ declare class AXConversationComposerComponent implements OnDestroy {
1730
1858
  onAttachMenuPanelMouseLeave(): void;
1731
1859
  private scheduleAttachMenuClose;
1732
1860
  private clearAttachMenuCloseTimer;
1733
- /** Handle attach menu click */
1861
+ /** Desktop: open an all-files chooser. Mobile: toggle the attachment dropdown. */
1734
1862
  onAttachMenuClick(event: AXClickEvent): void;
1863
+ /** Open the OS file picker for any file, then route to the matching composer picker. */
1864
+ private openSmartAttachChooser;
1865
+ /** OS file paste (Ctrl+V) while the composer is focused. */
1866
+ onComposerPaste(event: ClipboardEvent): void;
1867
+ private composerPickerDeps;
1735
1868
  /** Handle attachment menu action selection */
1736
1869
  onAttachMenuAction(actionId: string): Promise<void>;
1737
1870
  /** Handle primary button click (send / cancel / stopping / voice / locked). */
@@ -1745,9 +1878,13 @@ declare class AXConversationComposerComponent implements OnDestroy {
1745
1878
  getDefaultActionIcon(): string;
1746
1879
  /** Handle voice click */
1747
1880
  onVoiceClick(): void;
1748
- /** Remove attachment */
1749
- removeAttachment(index: number): void;
1750
- /** Cancel edit/reply mode */
1881
+ /** Remove a draft attachment from the composer banner. */
1882
+ removeDraftAttachment(id: string): void;
1883
+ addDraftAttachments(): void;
1884
+ dismissDraftAttachments(): void;
1885
+ draftAttachmentLabel(name: string): string;
1886
+ canAddDraftAttachments(): boolean;
1887
+ /** Cancel edit/reply mode without dropping draft attachments. */
1751
1888
  cancelEditReply(): void;
1752
1889
  /** Start editing a message */
1753
1890
  startEdit(message: any): void;
@@ -1755,6 +1892,11 @@ declare class AXConversationComposerComponent implements OnDestroy {
1755
1892
  startReply(message: AXConversationMessage): void;
1756
1893
  /** Focus the native textarea inside ax-text-area */
1757
1894
  private focusTextArea;
1895
+ /** Prefer the visible textarea when it differs from the original edit; else the draft signal. */
1896
+ private resolveComposerText;
1897
+ private readOriginalEditText;
1898
+ private readNativeComposerText;
1899
+ private readChangedText;
1758
1900
  private getClickTarget;
1759
1901
  /** Handle action click */
1760
1902
  onActionClick(actionId: string, event?: AXClickEvent | MouseEvent, initialFiles?: File[]): Promise<void>;
@@ -1804,6 +1946,8 @@ declare class AXConversationContainerComponent {
1804
1946
  private readonly actionSheetService;
1805
1947
  private readonly hostRef;
1806
1948
  private readonly platformId;
1949
+ private readonly document;
1950
+ private readonly destroyRef;
1807
1951
  protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
1808
1952
  constructor();
1809
1953
  private get registry();
@@ -1818,11 +1962,7 @@ declare class AXConversationContainerComponent {
1818
1962
  /** Container CSS classes */
1819
1963
  readonly containerClasses: _angular_core.Signal<string>;
1820
1964
  closeActiveConversation(): void;
1821
- /**
1822
- * When the user pastes files copied from the OS (e.g. Ctrl+V after copying in Explorer),
1823
- * open the same composer picker popup used for message-list drag-and-drop.
1824
- */
1825
- onDocumentPaste(event: ClipboardEvent): Promise<void>;
1965
+ private openPastedFiles;
1826
1966
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerComponent, never>;
1827
1967
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationContainerComponent, "ax-conversation-container", never, { "customClass": { "alias": "customClass"; "required": false; "isSignal": true; }; }, {}, never, ["ax-conversation-sidebar, [ax-conversation-sidebar]", "ax-conversation-info-bar, [ax-conversation-info-bar]", "ax-conversation-message-list, [ax-conversation-message-list]", "ax-conversation-composer, [ax-conversation-composer]", "ax-conversation-empty"], true, never>;
1828
1968
  }
@@ -1833,6 +1973,8 @@ declare class AXConversationContainerDirective {
1833
1973
  private readonly fileService;
1834
1974
  private readonly hostRef;
1835
1975
  private readonly platformId;
1976
+ private readonly document;
1977
+ private readonly destroyRef;
1836
1978
  private readonly translation;
1837
1979
  private readonly toast;
1838
1980
  private readonly platform;
@@ -1847,7 +1989,7 @@ declare class AXConversationContainerDirective {
1847
1989
  /** Error state */
1848
1990
  readonly error: _angular_core.Signal<Error>;
1849
1991
  closeActiveConversation(): void;
1850
- onDocumentPaste(event: ClipboardEvent): Promise<void>;
1992
+ private openPastedFiles;
1851
1993
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationContainerDirective, never>;
1852
1994
  static ɵdir: _angular_core.ɵɵDirectiveDeclaration<AXConversationContainerDirective, "[axConversationContainer]", never, {}, {}, never, never, true, never>;
1853
1995
  }
@@ -1993,7 +2135,7 @@ declare class AXConversationApiLoggerService {
1993
2135
  private readonly config;
1994
2136
  log(entry: AXConversationApiLogEntry): void;
1995
2137
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationApiLoggerService, never>;
1996
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationApiLoggerService>;
2138
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
1997
2139
  }
1998
2140
 
1999
2141
  /**
@@ -2049,6 +2191,7 @@ interface AXConversationUpdateData {
2049
2191
  interface AXConversationDeleteOptions {
2050
2192
  /**
2051
2193
  * Private: destroy the chat for every participant (Telegram "delete for both").
2194
+ * Bot: always delete for both sides.
2052
2195
  * Group/channel: only valid for the creator — destroys the room for everyone.
2053
2196
  * Defaults to `false` (hide / clear history for the current user only).
2054
2197
  */
@@ -3014,7 +3157,7 @@ declare class AXConversationComposerGenerationStateService {
3014
3157
  /** User requested cancel — enters `stopping` until {@link setGenerating}(false) is called. */
3015
3158
  cancel(): void;
3016
3159
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerGenerationStateService, never>;
3017
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerGenerationStateService>;
3160
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
3018
3161
  }
3019
3162
 
3020
3163
  /**
@@ -3044,7 +3187,7 @@ declare class AXConversationRegistryService {
3044
3187
  */
3045
3188
  clearAll(): void;
3046
3189
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationRegistryService, never>;
3047
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationRegistryService>;
3190
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
3048
3191
  }
3049
3192
 
3050
3193
  /** Result of loading a message page (newest-first APIs, merged ascending in the store). */
@@ -3064,7 +3207,10 @@ interface AXConversationLoadMessagesResult {
3064
3207
  * - Automatic rollback on failures
3065
3208
  */
3066
3209
  declare class AXConversationService {
3210
+ private static readonly createDisplayMetadataKeys;
3067
3211
  private static normalizeOptionalString;
3212
+ /** Keep flags like `reactionsEnabled`; drop display fields already mapped onto the conversation. */
3213
+ private static toPersistedConversationMetadata;
3068
3214
  private readonly config;
3069
3215
  private readonly state;
3070
3216
  readonly userApi: AXConversationUserApi;
@@ -3304,6 +3450,12 @@ declare class AXConversationService {
3304
3450
  * Handle message update
3305
3451
  */
3306
3452
  private handleMessageUpdate;
3453
+ /**
3454
+ * After a local text edit, entity cache / status persist can echo the pre-edit payload.
3455
+ * Keep the newer local bubble until a strictly newer edit arrives.
3456
+ */
3457
+ private preferLocalEditedPayload;
3458
+ private readTextPayload;
3307
3459
  /**
3308
3460
  * Bump reply/forward counts locally when realtime events arrive outside the active message list.
3309
3461
  */
@@ -3401,8 +3553,10 @@ declare class AXConversationService {
3401
3553
  /**
3402
3554
  * Delete, hide, or leave a conversation.
3403
3555
  * Opens a confirmation popup (checkbox for private/creator destroy), then updates the store.
3556
+ * Bot chats skip the prompt and always delete for both sides.
3404
3557
  */
3405
3558
  deleteConversation(conversationId: string): Promise<boolean>;
3559
+ private performDeleteConversation;
3406
3560
  /**
3407
3561
  * Get reply count for a message
3408
3562
  * @param messageId - Message ID
@@ -3560,7 +3714,7 @@ declare class AXConversationService {
3560
3714
  */
3561
3715
  private validateMessageContent;
3562
3716
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationService, never>;
3563
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationService>;
3717
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
3564
3718
  }
3565
3719
 
3566
3720
  /**
@@ -3675,12 +3829,16 @@ declare class AXConversationErrorHandlerService {
3675
3829
  */
3676
3830
  private delay;
3677
3831
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationErrorHandlerService, never>;
3678
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationErrorHandlerService>;
3832
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
3679
3833
  }
3680
3834
 
3681
- declare class AXConversationForwardMessageDialogComponent implements OnInit {
3835
+ declare class AXConversationForwardMessageDialogComponent {
3682
3836
  private readonly toastService;
3683
3837
  private readonly translation;
3838
+ private readonly config;
3839
+ private readonly destroyRef;
3840
+ private searchDebounceTimer?;
3841
+ constructor();
3684
3842
  /**
3685
3843
  * Set by {@link AXPopupComponent} when opened via {@link AXPopupService} so the shell title can update.
3686
3844
  */
@@ -3693,67 +3851,32 @@ declare class AXConversationForwardMessageDialogComponent implements OnInit {
3693
3851
  /** Assigned from `open(..., { data: { message } })`. */
3694
3852
  message: AXConversationMessage;
3695
3853
  readonly onClosed: EventEmitter<AXComponentCloseEvent>;
3696
- readonly allConversations: _angular_core.WritableSignal<AXConversation[]>;
3854
+ readonly availableUsers: _angular_core.WritableSignal<AXConversationParticipant[]>;
3697
3855
  readonly forwardSearchQuery: _angular_core.WritableSignal<string>;
3698
- readonly selectedConversationIds: _angular_core.WritableSignal<string[]>;
3856
+ readonly selectedUserIds: _angular_core.WritableSignal<string[]>;
3699
3857
  readonly forwardListEmptyTpl: _angular_core.Signal<TemplateRef<unknown>>;
3858
+ readonly forwardListLoadingTpl: _angular_core.Signal<TemplateRef<unknown>>;
3700
3859
  readonly forwardList: _angular_core.Signal<AXListComponent>;
3701
3860
  readonly forwardListDataSource: AXDataSource<unknown>;
3702
3861
  readonly isForwarding: _angular_core.Signal<boolean>;
3703
3862
  readonly canForward: _angular_core.Signal<boolean>;
3704
3863
  private readonly _syncPopupTitleEffect;
3705
- ngOnInit(): void;
3706
3864
  onForwardSearchChange(value: string): void;
3707
- conversationFromItem(item: unknown): AXConversation | null;
3708
- isSelected(conversationId: string): boolean;
3709
- private getFilteredConversationsForForward;
3865
+ userFromItem(item: unknown): AXConversationParticipant | null;
3866
+ isSelected(userId: string): boolean;
3867
+ private mergeUsersCache;
3868
+ private seedUsersFromConversations;
3869
+ private loadUsersForForward;
3870
+ private getSortedUsersForForward;
3871
+ private isExcludedUser;
3872
+ private getExcludedUserIds;
3873
+ private resolveConversationIdForUser;
3710
3874
  onCancel(): void;
3711
3875
  onForward(): Promise<void>;
3712
3876
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationForwardMessageDialogComponent, never>;
3713
3877
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationForwardMessageDialogComponent, "ax-conversation-forward-message-dialog", never, { "__popup__": { "alias": "__popup__"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
3714
3878
  }
3715
3879
 
3716
- /**
3717
- * Message Utilities Service
3718
- * Helper functions for message formatting and display
3719
- */
3720
-
3721
- /** Position of a message inside a consecutive same-sender cluster (Telegram grouping). */
3722
- type AXConversationMessageClusterRole = 'single' | 'start' | 'middle' | 'end';
3723
- declare class AXConversationMessageUtilsService {
3724
- static getInitials(name: string): string;
3725
- static getMessageText(message: AXConversationMessage): string;
3726
- static getPreviewText(message: AXConversationMessage, maxLength?: number): {
3727
- value: string;
3728
- type: string;
3729
- icon: string;
3730
- };
3731
- static isOwnMessage(message: AXConversationMessage, currentUserId: string): boolean;
3732
- static getSenderName(message: AXConversationMessage, conversation: AXConversation): string;
3733
- static getSenderAvatar(message: AXConversationMessage, conversation: AXConversation): string | undefined;
3734
- static getSenderAvatarIcon(message: AXConversationMessage, conversation: AXConversation): string | undefined;
3735
- static getConversationAvatar(conversation: AXConversation): string | undefined;
3736
- static getConversationAvatarIcon(conversation: AXConversation): string | undefined;
3737
- static getConversationStatus(conversation: AXConversation, presence?: AXConversationUserPresence): AXConversationPresenceStatus | undefined;
3738
- /** Consecutive same-sender messages within this window share one Telegram-style cluster. */
3739
- static readonly MESSAGE_CLUSTER_MAX_GAP_MS: number;
3740
- /** Palette of existing theme tokens used to color group sender names (not bubble chrome). */
3741
- private static readonly SENDER_NAME_COLORS;
3742
- static toTimestampMs(value: Date | string | number): number;
3743
- static shouldGroupMessages(message: AXConversationMessage, previousMessage?: AXConversationMessage): boolean;
3744
- static getMessageClusterRole(message: AXConversationMessage, previousMessage?: AXConversationMessage, nextMessage?: AXConversationMessage): AXConversationMessageClusterRole;
3745
- static getSenderNameColor(senderId: string): string;
3746
- static getUserPresenceStatus(presence?: AXConversationUserPresence): AXConversationPresenceStatus | undefined;
3747
- static getTypingText(conversation: AXConversation, typingUserIds: string[]): string;
3748
- static formatLastSeen(date: Date): string;
3749
- static getPrivateChatSubtitle(conversation: AXConversation, presence?: AXConversationUserPresence, currentUserId?: string): string;
3750
- static getConversationSubtitle(conversation: AXConversation, options?: {
3751
- typingUserIds?: string[];
3752
- peerPresence?: AXConversationUserPresence;
3753
- currentUserId?: string;
3754
- }): string;
3755
- }
3756
-
3757
3880
  /** Default message list surface when no conversation is selected and no `ax-conversation-message-list-no-active` content is projected. */
3758
3881
  declare class AXConversationMessageListNoActiveDefaultComponent {
3759
3882
  private readonly translation;
@@ -3810,6 +3933,10 @@ declare function resolveMessageListBackgroundStyle(value: AXConversationMessageL
3810
3933
  /** Whether two stored backgrounds represent the same preset (supports legacy string values). */
3811
3934
  declare function isSameMessageListBackground(a: AXConversationMessageListBackground | undefined, b: AXConversationMessageListThemeBackground, isDark: boolean): boolean;
3812
3935
 
3936
+ interface AXConversationForwardUserSortEntry {
3937
+ user: AXConversationParticipant;
3938
+ conversation?: AXConversation;
3939
+ }
3813
3940
  /** Default Font Awesome icon for group conversations without a custom avatar image. */
3814
3941
  declare const AX_CONVERSATION_DEFAULT_GROUP_ICON = "fa-light fa-users";
3815
3942
  /** Default Font Awesome icon for private/bot conversations without a custom avatar image. */
@@ -3821,6 +3948,10 @@ declare function isGenericPrivateConversationTitle(title: string | undefined): b
3821
3948
  * Matches conversations with exactly those two participants.
3822
3949
  */
3823
3950
  declare function findExistingPrivateConversation(conversations: AXConversation[], currentUserId: string, peerUserId: string): AXConversation | undefined;
3951
+ /**
3952
+ * Sort users for forward picker: existing private chats first (most recent on top), then others by name.
3953
+ */
3954
+ declare function sortUsersForForward(users: AXConversationParticipant[], conversations: AXConversation[], currentUserId: string): AXConversationParticipant[];
3824
3955
  /** Other participant in a private 1v1 chat (excludes the current viewer). */
3825
3956
  declare function resolvePrivatePeerParticipant(conversation: AXConversation, currentUserId?: string): AXConversationParticipant | undefined;
3826
3957
  /**
@@ -3833,8 +3964,17 @@ declare function resolveConversationTitleForViewer(conversation: AXConversation,
3833
3964
  * Does not mutate the source object.
3834
3965
  */
3835
3966
  declare function resolveConversationForViewer(conversation: AXConversation, currentUserId?: string): AXConversation;
3836
- /** Whether message reactions are enabled for a conversation. Defaults to `true` when omitted. */
3967
+ /**
3968
+ * Whether message reactions are enabled for a conversation.
3969
+ * `metadata.reactionsEnabled` wins when set; otherwise `bot` chats default to off.
3970
+ */
3837
3971
  declare function isConversationReactionsEnabled(conversation?: AXConversation | null): boolean;
3972
+ /**
3973
+ * How file attachments are shown in the composer.
3974
+ * `metadata.composerAttachmentPresentation` wins when set; otherwise `bot` chats use `banner`.
3975
+ */
3976
+ declare function resolveComposerAttachmentPresentation(conversation?: AXConversation | null): AXConversationComposerAttachmentPresentation;
3977
+ declare function isComposerAttachmentBannerEnabled(conversation?: AXConversation | null): boolean;
3838
3978
 
3839
3979
  /** Group and channel rooms share join/leave and creator-destroy rules. */
3840
3980
  declare function isGroupLikeConversation(conversationOrType: AXConversation | AXConversationType | undefined): boolean;
@@ -3877,6 +4017,47 @@ declare class AXConversationDateUtilsService {
3877
4017
  static formatTime(date: Date): string;
3878
4018
  }
3879
4019
 
4020
+ /**
4021
+ * Message Utilities Service
4022
+ * Helper functions for message formatting and display
4023
+ */
4024
+
4025
+ /** Position of a message inside a consecutive same-sender cluster (Telegram grouping). */
4026
+ type AXConversationMessageClusterRole = 'single' | 'start' | 'middle' | 'end';
4027
+ declare class AXConversationMessageUtilsService {
4028
+ static getInitials(name: string): string;
4029
+ static getMessageText(message: AXConversationMessage): string;
4030
+ static getPreviewText(message: AXConversationMessage, maxLength?: number): {
4031
+ value: string;
4032
+ type: string;
4033
+ icon: string;
4034
+ };
4035
+ static isOwnMessage(message: AXConversationMessage, currentUserId: string): boolean;
4036
+ static getSenderName(message: AXConversationMessage, conversation: AXConversation): string;
4037
+ static getSenderAvatar(message: AXConversationMessage, conversation: AXConversation): string | undefined;
4038
+ static getSenderAvatarIcon(message: AXConversationMessage, conversation: AXConversation): string | undefined;
4039
+ static getConversationAvatar(conversation: AXConversation): string | undefined;
4040
+ static getConversationAvatarIcon(conversation: AXConversation): string | undefined;
4041
+ static getConversationStatus(conversation: AXConversation, presence?: AXConversationUserPresence): AXConversationPresenceStatus | undefined;
4042
+ /** Consecutive same-sender messages within this window share one Telegram-style cluster. */
4043
+ static readonly MESSAGE_CLUSTER_MAX_GAP_MS: number;
4044
+ /** Palette of existing theme tokens used to color group sender names (not bubble chrome). */
4045
+ private static readonly SENDER_NAME_COLORS;
4046
+ static toTimestampMs(value: Date | string | number): number;
4047
+ static shouldGroupMessages(message: AXConversationMessage, previousMessage?: AXConversationMessage): boolean;
4048
+ static getMessageClusterRole(message: AXConversationMessage, previousMessage?: AXConversationMessage, nextMessage?: AXConversationMessage): AXConversationMessageClusterRole;
4049
+ static getSenderNameColor(senderId: string): string;
4050
+ static getUserPresenceStatus(presence?: AXConversationUserPresence): AXConversationPresenceStatus | undefined;
4051
+ static getTypingText(conversation: AXConversation, typingUserIds: string[]): string;
4052
+ static formatLastSeen(date: Date): string;
4053
+ static getPrivateChatSubtitle(conversation: AXConversation, presence?: AXConversationUserPresence, currentUserId?: string): string;
4054
+ static getConversationSubtitle(conversation: AXConversation, options?: {
4055
+ typingUserIds?: string[];
4056
+ peerPresence?: AXConversationUserPresence;
4057
+ currentUserId?: string;
4058
+ }): string;
4059
+ }
4060
+
3880
4061
  /**
3881
4062
  * Conversation feature flags for configurable bundle size.
3882
4063
  */
@@ -4302,7 +4483,7 @@ declare class AXConversationMessageListService {
4302
4483
  requestScrollToBottom(): void;
4303
4484
  private buildCountMap;
4304
4485
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListService, never>;
4305
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationMessageListService>;
4486
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
4306
4487
  }
4307
4488
 
4308
4489
  declare class AXConversationMessageListComponent implements OnDestroy {
@@ -4312,11 +4493,12 @@ declare class AXConversationMessageListComponent implements OnDestroy {
4312
4493
  private readonly fileService;
4313
4494
  private readonly toast;
4314
4495
  private readonly infoBarService;
4315
- private readonly translation;
4496
+ protected readonly translation: AXTranslationService;
4316
4497
  private readonly document;
4317
4498
  private readonly platform;
4318
4499
  private readonly actionSheetService;
4319
4500
  private readonly ngZone;
4501
+ private readonly cdr;
4320
4502
  protected readonly config: Required<_acorex_components_conversation.AXConversationConfig>;
4321
4503
  /**
4322
4504
  * Background for the message list scroll area from config, or the built-in soft wash when unset/empty.
@@ -4330,22 +4512,35 @@ declare class AXConversationMessageListComponent implements OnDestroy {
4330
4512
  /** Fallback when no conversation is active and no `ax-conversation-message-list-no-active` content is projected. */
4331
4513
  protected readonly noActiveFallbackComponent: typeof AXConversationMessageListNoActiveDefaultComponent;
4332
4514
  private readonly timeouts;
4515
+ private dateSeparatorFadeTimer;
4333
4516
  readonly reactionPickerTarget: _angular_core.WritableSignal<string>;
4334
4517
  readonly reactionPickerElement: _angular_core.WritableSignal<HTMLElement>;
4335
4518
  readonly reactionPickerPlacement: _angular_core.WritableSignal<AXPlacement>;
4336
4519
  readonly reactionPopover: _angular_core.Signal<any>;
4337
4520
  /** Message id whose context menu is open (for active row styling). */
4338
4521
  readonly contextMenuMessageId: _angular_core.WritableSignal<string>;
4522
+ private readonly contextMenuMessage;
4523
+ private readonly messageActionsMenu;
4339
4524
  /** True while files are dragged over the message list drop zone. */
4340
4525
  readonly messageListDragging: _angular_core.WritableSignal<boolean>;
4341
4526
  /** True when the message list uses single-column adaptive layout (matches CSS container query). */
4342
4527
  readonly isAdaptiveWideLayout: _angular_core.WritableSignal<boolean>;
4343
4528
  /** While true, older history is being prepended — do not auto-scroll to the latest message. */
4344
4529
  private restoringScrollAfterPrepend;
4530
+ /**
4531
+ * Stick to the latest message across layout shifts (media decode, lazy outlets).
4532
+ * Cleared as soon as the user scrolls up — even within `scrollThreshold` —
4533
+ * otherwise ResizeObserver keeps yanking the feed back to the bottom.
4534
+ */
4535
+ private pinnedToBottom;
4536
+ /**
4537
+ * True while we assign `scrollTop`. Kept until the following animation frame
4538
+ * because some browsers dispatch `scroll` asynchronously after `scrollTop` writes.
4539
+ */
4540
+ private programmaticScroll;
4541
+ private programmaticScrollGen;
4345
4542
  private adaptiveLayoutResizeObserver?;
4346
4543
  private documentClickListener?;
4347
- private readonly rendererInputsCache;
4348
- private readonly rendererViewByType;
4349
4544
  readonly availableReactions: _angular_core.WritableSignal<string[]>;
4350
4545
  private reactionsLoading;
4351
4546
  private get registry();
@@ -4366,6 +4561,21 @@ declare class AXConversationMessageListComponent implements OnDestroy {
4366
4561
  readonly isGroupConversation: _angular_core.Signal<boolean>;
4367
4562
  /** Placeholder rows for the initial message list skeleton. */
4368
4563
  protected readonly loadingSkeletonItems: readonly [0, 1, 2, 3, 4, 5, 6, 7];
4564
+ /**
4565
+ * Conversation whose feed has already been pinned to the latest message.
4566
+ * Compared with the active id in `feedReady` so a chat switch hides the list
4567
+ * in the same render — before the effect that pins the new history.
4568
+ */
4569
+ private readonly pinnedConversationId;
4570
+ private feedRevealGeneration;
4571
+ private feedRevealRaf;
4572
+ /** False until this conversation is pinned to the bottom (never shows history from the top). */
4573
+ readonly feedReady: _angular_core.Signal<boolean>;
4574
+ /**
4575
+ * Keep the skeleton up until the feed is pinned. The real list stays
4576
+ * `visibility: hidden` underneath so bubbles never show through the cover.
4577
+ */
4578
+ readonly showOpenCover: _angular_core.Signal<boolean>;
4369
4579
  /** Whether the active conversation allows message reactions. */
4370
4580
  readonly reactionsEnabled: _angular_core.Signal<boolean>;
4371
4581
  /** Messages */
@@ -4389,58 +4599,23 @@ declare class AXConversationMessageListComponent implements OnDestroy {
4389
4599
  * Setup intersection observer to mark messages as read when visible
4390
4600
  */
4391
4601
  private setupIntersectionObserver;
4602
+ /**
4603
+ * Keep the viewport stable when layout changes.
4604
+ * ResizeObserver runs after layout and before paint — apply scrollTop in the
4605
+ * callback (not rAF) so the browser never paints a jump.
4606
+ *
4607
+ * Near the bottom, pin to the latest message (media decode, lazy outlets).
4608
+ * Further up, only compensate rows that grew fully above the viewport.
4609
+ */
4610
+ private setupMediaScrollCompensation;
4392
4611
  /**
4393
4612
  * Mark message as read
4394
4613
  */
4395
4614
  private markMessageAsRead;
4396
- getMessageClusterRole(message: AXConversationMessage, previous?: AXConversationMessage, next?: AXConversationMessage): AXConversationMessageClusterRole;
4397
- getSenderNameColor(senderId: string): string;
4398
- /** Get message CSS classes */
4399
- getMessageClasses(message: AXConversationMessage, cluster: AXConversationMessageClusterRole): string;
4400
- /** Get bubble CSS classes */
4401
- getBubbleClasses(message: AXConversationMessage): string;
4402
4615
  /** Check if message is from current user */
4403
4616
  isOwnMessage(message: AXConversationMessage): boolean;
4404
- /** Whether the avatar slot is rendered (visibility is CSS-controlled per layout mode). */
4405
- shouldRenderAvatar(message: AXConversationMessage): boolean;
4406
- /** Should show sender name */
4407
- shouldShowSenderName(message: AXConversationMessage, cluster: AXConversationMessageClusterRole): boolean;
4408
- /** Get sender name */
4409
- getSenderName(message: AXConversationMessage): string;
4410
- /** Get original sender name for forwarded messages */
4411
- getOriginalSenderName(message: AXConversationMessage): string;
4412
- /** Get forwarded text with sender and conversation info */
4413
- getForwardedText(message: AXConversationMessage): string;
4414
- /** Resolve renderer component for message */
4415
- getRendererComponent(message: AXConversationMessage): Type<unknown>;
4416
- /** Resolve lazy renderer loader for message */
4417
- private static readonly fallbackRendererLoader;
4418
- getRendererComponentLoader(message: AXConversationMessage): () => Promise<Type<unknown>>;
4419
- private resolveRendererView;
4420
- /** Provide inputs for the dynamic renderer (stable object so outlets are not rebuilt on CD). */
4421
- getRendererInputs(message: AXConversationMessage): {
4422
- message: AXConversationMessage;
4423
- };
4424
- /** Get status icon CSS classes */
4425
- getStatusIconClasses(message: AXConversationMessage): string;
4426
- /** Get status tooltip text */
4427
- getStatusTooltip(message: AXConversationMessage): string;
4428
4617
  /** Get first unread message ID */
4429
4618
  readonly firstUnreadMessageId: _angular_core.Signal<string>;
4430
- /** Get grouped reactions */
4431
- getGroupedReactions(message: AXConversationMessage): Array<{
4432
- emoji: string;
4433
- count: number;
4434
- userIds: string[];
4435
- hasReacted: boolean;
4436
- }>;
4437
- /** Get reaction tooltip text */
4438
- getReactionTooltip(reaction: {
4439
- emoji: string;
4440
- count: number;
4441
- userIds: string[];
4442
- hasReacted: boolean;
4443
- }): string;
4444
4619
  /** Whether reactions can be shown or added for a message in the active conversation. */
4445
4620
  messageSupportsReactions(message: AXConversationMessage): boolean;
4446
4621
  /** Toggle reaction picker */
@@ -4470,41 +4645,57 @@ declare class AXConversationMessageListComponent implements OnDestroy {
4470
4645
  /**
4471
4646
  * Keep the user's viewport on the same messages after older rows are inserted above.
4472
4647
  */
4473
- private restoreScrollPositionAfterPrepend;
4474
- /** Check if user is near bottom of scroll */
4475
- private isUserNearBottom;
4476
- /**
4477
- * After switching chats, the template may still show loading (no #messagesContainer).
4478
- * Poll with rAF until the feed exists, then scroll after double rAF so scrollHeight is stable.
4479
- */
4480
- private scrollToBottomWhenContainerReady;
4648
+ private applyPrependScrollRestore;
4649
+ private revealStuckDateSeparators;
4650
+ private syncDateSeparatorStuckState;
4651
+ private scheduleDateSeparatorFade;
4652
+ private clearDateSeparatorFadeTimer;
4653
+ /** Distance from the last pixel of the feed. */
4654
+ private distanceFromBottom;
4655
+ /** True when the viewport is at the latest message (not merely within `scrollThreshold`). */
4656
+ private isStuckToBottom;
4657
+ /**
4658
+ * Assign scrollTop without the listener treating it as a user scroll.
4659
+ * The flag stays set until the next frame so async `scroll` events are ignored.
4660
+ */
4661
+ private writeScrollTop;
4662
+ /** Pin the feed to the latest message before the next paint. */
4663
+ private pinFeedToBottom;
4664
+ /** Hide the feed and pin to the latest message before the first visible paint. */
4665
+ private beginFeedReveal;
4666
+ private cancelFeedReveal;
4667
+ /**
4668
+ * Pin to the latest message, then reveal. Two frames is enough — stick-to-bottom
4669
+ * holds later media growth. Waiting for loaders here left a blank gap after the skeleton.
4670
+ */
4671
+ private scheduleFeedPin;
4672
+ /** Start nearby lazy images so they decode while stick-to-bottom holds the viewport. */
4673
+ private primeOpenViewportMedia;
4481
4674
  /** Scroll to bottom */
4482
4675
  scrollToBottom(smooth?: boolean): void;
4483
4676
  /** Scroll to specific message */
4484
4677
  scrollToMessage(messageId: string): void;
4485
4678
  /** Cleanup timeouts and observers on destroy */
4486
4679
  ngOnDestroy(): void;
4487
- /** Get message preview text for reply */
4488
- getMessagePreviewText(message: AXConversationMessage): {
4489
- value: string;
4490
- type: string;
4491
- icon: string;
4492
- };
4493
- /** Get ARIA label for message */
4494
- getMessageAriaLabel(message: AXConversationMessage): string;
4680
+ /** Get ARIA label for a date separator. */
4495
4681
  getDateSeparatorAriaLabel(group: AXConversationMessageDateGroup): string;
4496
4682
  resolveDateSeparatorLabel(group: AXConversationMessageDateGroup): string;
4497
- getReplyCount(message: AXConversationMessage): number;
4498
- getForwardCount(message: AXConversationMessage): number;
4499
4683
  onMessageListDragEnter(): void;
4500
4684
  onMessageListDragLeave(): void;
4501
4685
  /** Open the matching composer picker popup when files are dropped on the message list. */
4502
4686
  onMessageListFilesDropped(event: AXUploaderFileChangeEvent): Promise<void>;
4503
4687
  private composerPickerDeps;
4688
+ /**
4689
+ * Open the shared message-actions menu from a single delegated listener.
4690
+ * Per-row `ax-context-menu` instances each register capture-phase scroll listeners
4691
+ * and were the main source of scroll jank.
4692
+ */
4693
+ onMessagesFeedContextMenu(event: MouseEvent): void;
4694
+ onMessageContextMenuClose(): void;
4504
4695
  /** Handle context menu opening for messages */
4505
- handleMessageContextMenuOpening(event: AXContextMenuOpeningEvent, message: AXConversationMessage): void;
4696
+ handleMessageContextMenuOpening(event: AXContextMenuOpeningEvent): void;
4506
4697
  /** Handle context menu item click for messages */
4507
- handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent, message: AXConversationMessage): void;
4698
+ handleMessageContextMenuItemClick(event: AXContextMenuItemsClickEvent): void;
4508
4699
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationMessageListComponent, never>;
4509
4700
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationMessageListComponent, "ax-conversation-message-list", never, {}, { "messageAction": "messageAction"; }, never, ["ax-conversation-message-list-empty, [ax-conversation-message-list-empty]", "ax-conversation-message-list-no-active, [ax-conversation-message-list-no-active]"], true, never>;
4510
4701
  }
@@ -4613,7 +4804,7 @@ declare class AXConversationSidebarService {
4613
4804
  */
4614
4805
  reloadConversations(): Promise<void>;
4615
4806
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationSidebarService, never>;
4616
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationSidebarService>;
4807
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
4617
4808
  }
4618
4809
 
4619
4810
  declare class AXConversationSidebarComponent implements OnDestroy {
@@ -4671,6 +4862,7 @@ declare class AXConversationNewDialogComponent extends AXBasePageComponent {
4671
4862
  private readonly translation;
4672
4863
  private readonly config;
4673
4864
  private readonly destroyRef;
4865
+ private readonly popupService;
4674
4866
  private searchDebounceTimer?;
4675
4867
  constructor();
4676
4868
  /**
@@ -4682,6 +4874,7 @@ declare class AXConversationNewDialogComponent extends AXBasePageComponent {
4682
4874
  readonly selectedUserIds: _angular_core.WritableSignal<string[]>;
4683
4875
  readonly groupTitle: _angular_core.WritableSignal<string>;
4684
4876
  readonly groupAvatar: _angular_core.WritableSignal<string>;
4877
+ readonly groupAvatarFileName: _angular_core.WritableSignal<string>;
4685
4878
  readonly searchQuery: _angular_core.WritableSignal<string>;
4686
4879
  readonly creating: _angular_core.WritableSignal<boolean>;
4687
4880
  /** For 2+ users: step 1 = pick users, step 2 = title + avatar. */
@@ -4698,11 +4891,19 @@ declare class AXConversationNewDialogComponent extends AXBasePageComponent {
4698
4891
  readonly usersListEmptyTpl: _angular_core.Signal<TemplateRef<unknown>>;
4699
4892
  readonly usersListLoadingTpl: _angular_core.Signal<TemplateRef<unknown>>;
4700
4893
  readonly usersList: _angular_core.Signal<AXListComponent>;
4894
+ private readonly groupNameInput;
4895
+ private readonly groupPhotoInput;
4896
+ readonly groupPhotoAriaLabel: _angular_core.Signal<string>;
4701
4897
  readonly usersListDataSource: AXDataSource<unknown>;
4702
4898
  onCancel(): void;
4703
4899
  onSelectedUsersChange(ids: string[]): void;
4704
4900
  onNextToGroupDetails(): void;
4705
4901
  onBackFromGroupDetails(): void;
4902
+ onPickGroupPhoto(): void;
4903
+ onClearGroupPhoto(): void;
4904
+ onEditGroupPhoto(): Promise<void>;
4905
+ onGroupPhotoSelected(event: Event): Promise<void>;
4906
+ private openGroupPhotoEditor;
4706
4907
  onSearchChange(value: string): void;
4707
4908
  isUserSelected(id: string): boolean;
4708
4909
  userFromItem(item: unknown): AXConversationParticipant | null;
@@ -4777,73 +4978,13 @@ declare class AXConversationAudioFileTypeProvider extends AXFileTypeInfoProvider
4777
4978
  [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
4778
4979
  }>[]>;
4779
4980
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioFileTypeProvider, never>;
4780
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationAudioFileTypeProvider>;
4981
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
4781
4982
  }
4782
4983
 
4783
4984
  declare function audioItemFromUpload(file: File, result: AXConversationUploaderResult, duration: number): AXConversationAudioMediaItem;
4784
4985
  declare function mergeAudioUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
4785
4986
  declare function applyAudioLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
4786
4987
 
4787
- /**
4788
- * Shared upload state and helpers for composer media pickers.
4789
- */
4790
-
4791
- /** Stable id for `@for` tracking while upload state is patched immutably. */
4792
- declare function createPickerUploadItemId(): string;
4793
- interface AXConversationComposerPickerUploadItem {
4794
- id: string;
4795
- file: File;
4796
- preview?: string;
4797
- duration?: number;
4798
- uploadProgress?: number;
4799
- uploading?: boolean;
4800
- uploaded?: boolean;
4801
- uploadedUrl?: string;
4802
- mediaId?: string;
4803
- error?: string;
4804
- abortController?: AbortController;
4805
- }
4806
- declare function getPickerCancelUploadLabel(translation: AXTranslationService): string;
4807
- declare function abortPickerUploads(items: Iterable<{
4808
- abortController?: AbortController;
4809
- } | null | undefined>): void;
4810
- interface AXConversationCleanupPickerUploadsOptions {
4811
- retainUploaded?: boolean;
4812
- }
4813
- /** Upload finished; reference is {@link mediaId} and/or a non-empty session url. */
4814
- declare function isPickerItemReadyToSend(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId'>): boolean;
4815
- /** Build uploader result shape for {@link *ItemFromUpload} after picker upload. */
4816
- declare function pickerItemToUploadResult(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): {
4817
- url: string;
4818
- mediaId?: string;
4819
- mimeType: string;
4820
- size: number;
4821
- } | null;
4822
- declare function pickerItemToMediaReference(item: Pick<AXConversationComposerPickerUploadItem, 'uploaded' | 'uploadedUrl' | 'mediaId' | 'file'>): AXConversationUploaderReference | null;
4823
- declare function deleteUploadedPickerMedia(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>): Promise<void>;
4824
- declare function cleanupPickerUploads(uploader: AXUploaderService, items: Iterable<AXConversationComposerPickerUploadItem | null | undefined>, options?: AXConversationCleanupPickerUploadsOptions): void;
4825
- declare function revokePickerBlobPreviews(items: Iterable<{
4826
- preview?: string;
4827
- } | null | undefined>): void;
4828
- declare function isUploadAborted(error: unknown, signal?: AbortSignal): boolean;
4829
- declare function limitFilesToCapacity(files: File[], currentCount: number, maxFiles: number): File[];
4830
- declare function uploadPickerFile(uploader: AXUploaderService, conversationId: string, file: File, onProgress: (percent: number) => void, signal?: AbortSignal): Promise<{
4831
- url: string;
4832
- mediaId?: string;
4833
- mimeType: string;
4834
- size: number;
4835
- }>;
4836
- declare function notifyMaxFilesCapacityExceeded(toast: AXToastService, translation: AXTranslationService, maxFiles: number): void;
4837
- /** User-facing message for a file validation failure. */
4838
- declare function formatPickerValidationMessage(translation: AXTranslationService, file: File, error: AXValidationRuleResult | undefined): string;
4839
- /** Show a warning toast for each failed validation rule result. */
4840
- declare function notifyPickerValidationErrors(toast: AXToastService, translation: AXTranslationService, rejected: {
4841
- file: File;
4842
- errors: AXValidationRuleResult[];
4843
- }[]): void;
4844
- /** Close popup/action-sheet host or inline composer shell after send/cancel. */
4845
- declare function dismissComposerPickerHost(composerService: AXConversationComposerService, popupRef?: AXPopupRef | null, actionSheetRef?: AXActionSheetRef | null): void;
4846
-
4847
4988
  interface AXConversationAudioFile extends AXConversationComposerPickerUploadItem {
4848
4989
  duration?: number;
4849
4990
  dataUrl?: string;
@@ -4875,6 +5016,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy, AXConvers
4875
5016
  private catalogFileTypeDef?;
4876
5017
  caption: string;
4877
5018
  groupItems: boolean;
5019
+ sendAsDocuments: boolean;
4878
5020
  readonly allowMultiple: _angular_core.Signal<boolean>;
4879
5021
  constructor();
4880
5022
  activate(): Promise<void>;
@@ -4888,6 +5030,7 @@ declare class AXConversationAudioPickerComponent implements OnDestroy, AXConvers
4888
5030
  renameAudio(index: number): Promise<void>;
4889
5031
  replaceAttachment(index: number): Promise<void>;
4890
5032
  sendAudio(): Promise<void>;
5033
+ private sendAudioAsDocuments;
4891
5034
  canSend(): boolean;
4892
5035
  getUploadingLabel(progress: number): string;
4893
5036
  getCancelUploadLabel(): string;
@@ -4959,10 +5102,12 @@ declare class AXConversationFileFileTypeProvider extends AXFileTypeInfoProvider
4959
5102
  [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
4960
5103
  }>[]>;
4961
5104
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileFileTypeProvider, never>;
4962
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationFileFileTypeProvider>;
5105
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
4963
5106
  }
4964
5107
 
4965
- declare function fileItemFromUpload(file: File, result: AXConversationUploaderResult): AXConversationFileMediaItem;
5108
+ declare function fileItemFromUpload(file: File, result: AXConversationUploaderResult, extras?: {
5109
+ duration?: number;
5110
+ }): AXConversationFileMediaItem;
4966
5111
  declare function mergeFileUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
4967
5112
  declare function applyFileLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
4968
5113
 
@@ -5016,6 +5161,7 @@ declare class AXConversationFilePickerComponent implements OnDestroy, AXConversa
5016
5161
  cancel(): void;
5017
5162
  ngOnDestroy(): void;
5018
5163
  private dismissPicker;
5164
+ private revokePreview;
5019
5165
  getHeaderTitle(): string;
5020
5166
  truncateFileName(fileName: string): string;
5021
5167
  onAddMoreFiles(): void;
@@ -5042,7 +5188,13 @@ declare class AXConversationImageFileTypeProvider extends AXFileTypeInfoProvider
5042
5188
  [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5043
5189
  }>[]>;
5044
5190
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImageFileTypeProvider, never>;
5045
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationImageFileTypeProvider>;
5191
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
5192
+ }
5193
+
5194
+ type AXConversationMediaGalleryLayoutMode = 'single' | 'dual' | 'triple' | 'masonry';
5195
+ interface AXConversationMediaGalleryRow<T> {
5196
+ items: T[];
5197
+ startIndex: number;
5046
5198
  }
5047
5199
 
5048
5200
  interface AXConversationImageFile extends AXConversationComposerPickerUploadItem {
@@ -5077,6 +5229,8 @@ declare class AXConversationImagePickerComponent implements OnDestroy, AXConvers
5077
5229
  groupItems: boolean;
5078
5230
  sendAsDocuments: boolean;
5079
5231
  readonly allowMultiple: _angular_core.Signal<boolean>;
5232
+ readonly layoutMode: _angular_core.Signal<AXConversationMediaGalleryLayoutMode>;
5233
+ readonly mediaRows: _angular_core.Signal<AXConversationMediaGalleryRow<AXConversationImageFile>[]>;
5080
5234
  private imageFileType?;
5081
5235
  constructor();
5082
5236
  activate(): Promise<void>;
@@ -5091,7 +5245,6 @@ declare class AXConversationImagePickerComponent implements OnDestroy, AXConvers
5091
5245
  private applyReplacementFile;
5092
5246
  sendImages(): Promise<void>;
5093
5247
  private sendImagesAsDocuments;
5094
- getMediaGridClass(): string;
5095
5248
  canSend(): boolean;
5096
5249
  getUploadingLabel(progress: number): string;
5097
5250
  getCancelUploadLabel(): string;
@@ -5138,14 +5291,30 @@ declare class AXConversationPickerFooterComponent {
5138
5291
  }
5139
5292
 
5140
5293
  declare class AXConversationPickerHeaderComponent {
5294
+ private readonly translation;
5141
5295
  readonly title: _angular_core.InputSignal<string>;
5142
5296
  readonly showMenu: _angular_core.InputSignal<boolean>;
5143
5297
  readonly addMoreLabel: _angular_core.InputSignal<string>;
5298
+ readonly closeLabel: _angular_core.InputSignal<string>;
5144
5299
  readonly onClose: _angular_core.OutputEmitterRef<void>;
5145
5300
  readonly onAddMore: _angular_core.OutputEmitterRef<void>;
5146
5301
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerHeaderComponent, never>;
5147
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerHeaderComponent, "ax-conversation-picker-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "showMenu": { "alias": "showMenu"; "required": false; "isSignal": true; }; "addMoreLabel": { "alias": "addMoreLabel"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; "onAddMore": "onAddMore"; }, never, never, true, never>;
5302
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerHeaderComponent, "ax-conversation-picker-header", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "showMenu": { "alias": "showMenu"; "required": false; "isSignal": true; }; "addMoreLabel": { "alias": "addMoreLabel"; "required": false; "isSignal": true; }; "closeLabel": { "alias": "closeLabel"; "required": false; "isSignal": true; }; }, { "onClose": "onClose"; "onAddMore": "onAddMore"; }, never, never, true, never>;
5303
+ }
5304
+
5305
+ /** Explorer/OS paste often has an empty MIME type; catalogs reject that. */
5306
+ declare function normalizeConversationInboundFile(file: File): File;
5307
+ /** Extract OS-copied files from a paste event (e.g. Ctrl+V after copying a file in Explorer). */
5308
+ declare function filesFromClipboardEvent(event: ClipboardEvent): File[];
5309
+
5310
+ interface AXConversationMediaDimensions {
5311
+ width: number;
5312
+ height: number;
5313
+ duration: number;
5148
5314
  }
5315
+ declare function probeImageDimensions(source: Blob | string): Promise<Pick<AXConversationMediaDimensions, 'width' | 'height'>>;
5316
+ declare function probeAudioDuration(source: Blob): Promise<number>;
5317
+ declare function probeVideoMedia(source: Blob): Promise<AXConversationMediaDimensions>;
5149
5318
 
5150
5319
  declare function formatFileSize(bytes: number): string;
5151
5320
  declare function formatDuration(seconds: number): string;
@@ -5203,12 +5372,19 @@ declare class AXConversationPickerEmptyComponent {
5203
5372
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerEmptyComponent, "ax-conversation-picker-empty", never, { "title": { "alias": "title"; "required": true; "isSignal": true; }; "hint": { "alias": "hint"; "required": true; "isSignal": true; }; "iconClass": { "alias": "iconClass"; "required": true; "isSignal": true; }; "dragOver": { "alias": "dragOver"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5204
5373
  }
5205
5374
 
5375
+ /** Active composer picker paste handlers (top-most popup wins). */
5376
+ type AXConversationPickerPasteHandler = (files: File[]) => void;
5377
+ declare function registerComposerPickerPasteHandler(handler: AXConversationPickerPasteHandler): () => void;
5378
+ declare function getActiveComposerPickerPasteHandler(): AXConversationPickerPasteHandler | undefined;
5379
+
5206
5380
  /**
5207
5381
  * Wraps composer pickers with {@link AXUploaderZoneDirective} for browse, drop, and validation.
5208
5382
  */
5209
5383
  declare class AXConversationPickerShellComponent {
5210
5384
  private readonly toast;
5211
5385
  private readonly translation;
5386
+ private readonly uploader;
5387
+ private readonly destroyRef;
5212
5388
  private readonly zone;
5213
5389
  readonly fileType: _angular_core.InputSignal<string>;
5214
5390
  readonly multiple: _angular_core.InputSignal<boolean>;
@@ -5216,9 +5392,13 @@ declare class AXConversationPickerShellComponent {
5216
5392
  readonly dragEnter: _angular_core.OutputEmitterRef<DragEvent>;
5217
5393
  readonly dragLeave: _angular_core.OutputEmitterRef<DragEvent>;
5218
5394
  readonly dragOver: _angular_core.OutputEmitterRef<DragEvent>;
5395
+ constructor();
5219
5396
  /** Open the OS file picker for this shell's catalog. */
5220
5397
  browse(): Promise<void>;
5398
+ protected onHostPaste(event: ClipboardEvent): void;
5221
5399
  protected onZoneFileChange(event: AXUploaderFileChangeEvent): void;
5400
+ private ingestPastedFiles;
5401
+ private emitValidatedFiles;
5222
5402
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationPickerShellComponent, never>;
5223
5403
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationPickerShellComponent, "ax-conversation-picker-shell", never, { "fileType": { "alias": "fileType"; "required": true; "isSignal": true; }; "multiple": { "alias": "multiple"; "required": false; "isSignal": true; }; }, { "filesSelected": "filesSelected"; "dragEnter": "dragEnter"; "dragLeave": "dragLeave"; "dragOver": "dragOver"; }, never, ["*"], true, never>;
5224
5404
  }
@@ -5241,6 +5421,7 @@ declare class AXConversationStickerTabComponent {
5241
5421
  private readonly http;
5242
5422
  private readonly destroyRef;
5243
5423
  private readonly apiKey;
5424
+ protected readonly translation: AXTranslationService;
5244
5425
  readonly itemSelected: _angular_core.OutputEmitterRef<AXConversationStickerPayload>;
5245
5426
  readonly searchQuery: _angular_core.WritableSignal<string>;
5246
5427
  readonly activeStickers: _angular_core.WritableSignal<AXConversationStickerPayload[]>;
@@ -5276,16 +5457,21 @@ declare class AXConversationVideoFileTypeProvider extends AXFileTypeInfoProvider
5276
5457
  [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5277
5458
  }>[]>;
5278
5459
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVideoFileTypeProvider, never>;
5279
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationVideoFileTypeProvider>;
5460
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
5280
5461
  }
5281
5462
 
5282
- declare function videoItemFromUpload(file: File, result: AXConversationUploaderResult, duration: number): AXConversationVideoMediaItem;
5463
+ declare function videoItemFromUpload(file: File, result: AXConversationUploaderResult, duration: number, size?: {
5464
+ width?: number;
5465
+ height?: number;
5466
+ }): Promise<AXConversationVideoMediaItem>;
5283
5467
  declare function mergeVideoUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
5284
5468
  declare function applyVideoLocalPreview(payload: AXConversationMessagePayload, localUrl: string, mimeType?: string): AXConversationMessagePayload;
5285
5469
 
5286
5470
  interface AXConversationVideoFile extends AXConversationComposerPickerUploadItem {
5287
5471
  preview?: string;
5288
5472
  duration?: number;
5473
+ width?: number;
5474
+ height?: number;
5289
5475
  }
5290
5476
  declare class AXConversationVideoPickerComponent implements OnDestroy, AXConversationComposerActionComponent {
5291
5477
  private uploadsDismissed;
@@ -5313,6 +5499,8 @@ declare class AXConversationVideoPickerComponent implements OnDestroy, AXConvers
5313
5499
  groupItems: boolean;
5314
5500
  sendAsDocuments: boolean;
5315
5501
  readonly allowMultiple: _angular_core.Signal<boolean>;
5502
+ readonly layoutMode: _angular_core.Signal<AXConversationMediaGalleryLayoutMode>;
5503
+ readonly mediaRows: _angular_core.Signal<AXConversationMediaGalleryRow<AXConversationVideoFile>[]>;
5316
5504
  readonly typeIconClass: "fa-light fa-video ax-text-blue-500";
5317
5505
  readonly emptyIconClass: _angular_core.Signal<"fa-light fa-video ax-text-blue-500" | "fa-light fa-cloud-arrow-up">;
5318
5506
  private catalogFileTypeDef?;
@@ -5328,7 +5516,6 @@ declare class AXConversationVideoPickerComponent implements OnDestroy, AXConvers
5328
5516
  replaceAttachment(index: number): Promise<void>;
5329
5517
  sendVideos(): Promise<void>;
5330
5518
  private sendVideosAsDocuments;
5331
- getMediaGridClass(): string;
5332
5519
  canSend(): boolean;
5333
5520
  getUploadingLabel(progress: number): string;
5334
5521
  getCancelUploadLabel(): string;
@@ -5358,7 +5545,7 @@ declare class AXConversationVoiceFileTypeProvider extends AXFileTypeInfoProvider
5358
5545
  [x: string]: (ctx: _acorex_core_file.AXFileTypeContext, ...args: unknown[]) => Promise<unknown> | unknown;
5359
5546
  }>[]>;
5360
5547
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVoiceFileTypeProvider, never>;
5361
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationVoiceFileTypeProvider>;
5548
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
5362
5549
  }
5363
5550
 
5364
5551
  declare function mergeVoiceUploadResult(payload: AXConversationMessagePayload, result: AXUploadResult): AXConversationMessagePayload;
@@ -5382,31 +5569,71 @@ declare class AXConversationVoiceRecorderComponent implements AXConversationComp
5382
5569
  readonly recordingComplete: _angular_core.OutputEmitterRef<Blob>;
5383
5570
  readonly recordingCancelled: _angular_core.OutputEmitterRef<void>;
5384
5571
  readonly isRecording: _angular_core.WritableSignal<boolean>;
5572
+ readonly isPreview: _angular_core.WritableSignal<boolean>;
5573
+ readonly isPlayingPreview: _angular_core.WritableSignal<boolean>;
5385
5574
  readonly isUploading: _angular_core.WritableSignal<boolean>;
5386
5575
  readonly uploadProgress: _angular_core.WritableSignal<number>;
5387
5576
  readonly recordingDuration: _angular_core.WritableSignal<number>;
5577
+ readonly previewUrl: _angular_core.WritableSignal<string>;
5578
+ readonly livePeaks: _angular_core.WritableSignal<number[]>;
5579
+ readonly liveBarCount: _angular_core.WritableSignal<number>;
5388
5580
  private recordingStartTime;
5389
5581
  private timerInterval?;
5390
5582
  private mediaRecorder?;
5391
5583
  private audioChunks;
5392
5584
  private activeStream?;
5393
5585
  private cancelled;
5586
+ private sendAfterStop;
5587
+ private sendInFlight;
5588
+ private awaitingPreviewData;
5589
+ private previewBlob;
5394
5590
  private uploadAbortController?;
5591
+ private audioContext?;
5592
+ private analyser?;
5593
+ private timeDomain;
5594
+ private rafId;
5595
+ private lastLivePeakAt;
5596
+ private waveResizeObserver?;
5597
+ private readonly waveWrapRef;
5598
+ private readonly waveRef;
5395
5599
  readonly formattedTime: _angular_core.Signal<string>;
5600
+ readonly canSend: _angular_core.Signal<boolean>;
5601
+ readonly liveDisplayBars: _angular_core.Signal<{
5602
+ index: number;
5603
+ recorded: boolean;
5604
+ height: number;
5605
+ }[]>;
5606
+ readonly waveConfig: _angular_core.Signal<AXWaveConfig>;
5396
5607
  constructor();
5397
5608
  activate(): Promise<void>;
5398
5609
  startRecording(): Promise<void>;
5399
5610
  private dismissHost;
5400
- /** Stop recording and send */
5611
+ toggleStopOrContinue(): void;
5401
5612
  stopRecording(): void;
5613
+ sendRecording(): void;
5614
+ deleteRecording(): void;
5402
5615
  cancelRecording(): void;
5403
- /** Close the voice recorder */
5404
5616
  cancel(): void;
5617
+ togglePreview(): void;
5618
+ onWaveStatusChanged(event: AXAudioWaveChangeEvent): void;
5405
5619
  abortInProgressUploads(): void;
5406
- /** Clear timer */
5620
+ private pauseRecording;
5621
+ private continueRecording;
5622
+ private flushPreviewIfWaiting;
5623
+ private buildRecordingBlob;
5624
+ private discardActiveRecorder;
5625
+ private releaseStream;
5626
+ private startLiveWave;
5627
+ private observeWaveWidth;
5628
+ private updateBarCount;
5629
+ private tickLiveWave;
5630
+ private stopLiveWave;
5631
+ private enterPreview;
5632
+ private pausePreview;
5633
+ private clearPreview;
5634
+ private clearPreviewUrl;
5407
5635
  private clearTimer;
5408
5636
  getUploadingLabel(): string;
5409
- /** Send voice message */
5410
5637
  private sendVoiceMessage;
5411
5638
  private stopAndCleanup;
5412
5639
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVoiceRecorderComponent, never>;
@@ -5442,7 +5669,7 @@ declare function ensureConversationFileCatalogRegistered(registry: AXFileTypeReg
5442
5669
  declare class AXConversationComposerFileTypesProvider extends AXFileTypeInfoProvider {
5443
5670
  items(): Promise<AXFileType[]>;
5444
5671
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationComposerFileTypesProvider, never>;
5445
- static ɵprov: _angular_core.ɵɵInjectableDeclaration<AXConversationComposerFileTypesProvider>;
5672
+ static ɵprov: _angular_core.ɵɵInjectableDeclaration<any>;
5446
5673
  }
5447
5674
 
5448
5675
  declare function mergeUploadResult(type: AXConversationMessageType, payload: AXConversationMessagePayload, result: AXUploadResult): Promise<AXConversationMessagePayload>;
@@ -5514,6 +5741,7 @@ declare const AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION: AXConversationInfoBarActi
5514
5741
  /**
5515
5742
  * Delete/Leave conversation action (smart action that adapts based on conversation type)
5516
5743
  * - Private: "Delete" - Deletes the conversation
5744
+ * - Bot: "Delete" - Deletes for both sides without a confirmation prompt
5517
5745
  * - Group/Channel: "Leave & Delete" - Leaves the group and removes it from list
5518
5746
  */
5519
5747
  declare const AX_CONVERSATION_INFO_BAR_DELETE_ACTION: AXConversationInfoBarAction;
@@ -5526,7 +5754,9 @@ declare function toUploaderReference(item: AXConversationMediaItemFields): AXCon
5526
5754
 
5527
5755
  declare class AXConversationAudioAttachmentComponent {
5528
5756
  private readonly platformId;
5757
+ protected readonly translation: AXTranslationService;
5529
5758
  readonly item: _angular_core.InputSignal<AXConversationAudioMediaItem>;
5759
+ readonly look: _angular_core.InputSignal<"file" | "player">;
5530
5760
  readonly playingChange: _angular_core.OutputEmitterRef<boolean>;
5531
5761
  readonly timeUpdate: _angular_core.OutputEmitterRef<number>;
5532
5762
  readonly durationChange: _angular_core.OutputEmitterRef<number>;
@@ -5546,9 +5776,12 @@ declare class AXConversationAudioAttachmentComponent {
5546
5776
  readonly effectiveDuration: _angular_core.Signal<number>;
5547
5777
  readonly sliderMax: _angular_core.Signal<number>;
5548
5778
  readonly currentTimeLabel: _angular_core.Signal<string>;
5779
+ readonly durationLabel: _angular_core.Signal<string>;
5549
5780
  readonly downloadName: _angular_core.Signal<string>;
5550
5781
  constructor();
5551
5782
  togglePlay(): void;
5783
+ onPlayClick(event: AXClickEvent): void;
5784
+ onNativePlayClick(event: Event): void;
5552
5785
  pause(): void;
5553
5786
  setPlaybackRate(rate: number): void;
5554
5787
  setMuted(muted: boolean): void;
@@ -5561,10 +5794,16 @@ declare class AXConversationAudioAttachmentComponent {
5561
5794
  onError(): void;
5562
5795
  onCoverError(): void;
5563
5796
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationAudioAttachmentComponent, never>;
5564
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioAttachmentComponent, "ax-conversation-audio-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
5797
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationAudioAttachmentComponent, "ax-conversation-audio-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "look": { "alias": "look"; "required": false; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
5565
5798
  }
5566
5799
 
5800
+ type AXConversationFileVisualKind = 'image' | 'video' | 'audio' | 'file';
5801
+
5567
5802
  declare class AXConversationFileAttachmentComponent {
5803
+ private readonly platformId;
5804
+ private readonly document;
5805
+ protected readonly translation: AXTranslationService;
5806
+ private readonly thumbImage;
5568
5807
  readonly item: _angular_core.InputSignal<AXConversationFileMediaItem>;
5569
5808
  private readonly mediaReference;
5570
5809
  private readonly resolvedUrl;
@@ -5573,6 +5812,11 @@ declare class AXConversationFileAttachmentComponent {
5573
5812
  readonly fileSize: _angular_core.Signal<number>;
5574
5813
  readonly fileExtension: _angular_core.Signal<string>;
5575
5814
  readonly formattedSize: _angular_core.Signal<string>;
5815
+ readonly kind: _angular_core.Signal<AXConversationFileVisualKind>;
5816
+ readonly isMedia: _angular_core.Signal<boolean>;
5817
+ readonly thumbUrl: _angular_core.Signal<string>;
5818
+ readonly previewSrc: _angular_core.Signal<string>;
5819
+ openImage(event: Event): void;
5576
5820
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileAttachmentComponent, never>;
5577
5821
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFileAttachmentComponent, "ax-conversation-file-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
5578
5822
  }
@@ -5586,7 +5830,10 @@ declare class AXConversationImageAttachmentComponent {
5586
5830
  private readonly document;
5587
5831
  readonly item: _angular_core.InputSignal<AXConversationImageMediaItem>;
5588
5832
  readonly alt: _angular_core.InputSignal<string>;
5833
+ /** When false, skip aspect-ratio reservation (gallery cells already have a fixed size). */
5834
+ readonly reserveAspect: _angular_core.InputSignal<boolean>;
5589
5835
  readonly ready: _angular_core.WritableSignal<boolean>;
5836
+ readonly aspectRatio: _angular_core.Signal<string>;
5590
5837
  private readonly mediaReference;
5591
5838
  private readonly resolvedUrl;
5592
5839
  readonly displayUrl: _angular_core.Signal<string>;
@@ -5595,7 +5842,7 @@ declare class AXConversationImageAttachmentComponent {
5595
5842
  onImageError(): void;
5596
5843
  toggleFullscreen(event: AXClickEvent): void;
5597
5844
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationImageAttachmentComponent, never>;
5598
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImageAttachmentComponent, "ax-conversation-image-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5845
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationImageAttachmentComponent, "ax-conversation-image-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "alt": { "alias": "alt"; "required": false; "isSignal": true; }; "reserveAspect": { "alias": "reserveAspect"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
5599
5846
  }
5600
5847
 
5601
5848
  interface AXConversationPlaybackBannerInputs {
@@ -5613,6 +5860,7 @@ interface AXConversationPlaybackBannerInputs {
5613
5860
  showMuteControl?: boolean;
5614
5861
  }
5615
5862
  declare class AXConversationMediaPlaybackInfoBarBannerComponent implements AXConversationMessageInfoBarBannerComponent {
5863
+ protected readonly translation: AXTranslationService;
5616
5864
  readonly message: _angular_core.InputSignal<AXConversationMessage>;
5617
5865
  readonly title: _angular_core.InputSignal<string>;
5618
5866
  readonly currentTime: _angular_core.InputSignal<number>;
@@ -5705,6 +5953,8 @@ declare function syncPlaybackInfoBarBanner(infoBar: AXConversationInfoBarService
5705
5953
 
5706
5954
  declare class AXConversationVideoAttachmentComponent {
5707
5955
  readonly item: _angular_core.InputSignal<AXConversationVideoMediaItem>;
5956
+ /** When false, skip aspect-ratio reservation (gallery cells already have a fixed size). */
5957
+ readonly reserveAspect: _angular_core.InputSignal<boolean>;
5708
5958
  readonly playingChange: _angular_core.OutputEmitterRef<boolean>;
5709
5959
  readonly timeUpdate: _angular_core.OutputEmitterRef<number>;
5710
5960
  readonly durationChange: _angular_core.OutputEmitterRef<number>;
@@ -5716,6 +5966,7 @@ declare class AXConversationVideoAttachmentComponent {
5716
5966
  readonly playbackUrl: _angular_core.Signal<string>;
5717
5967
  readonly duration: _angular_core.Signal<number>;
5718
5968
  readonly durationLabel: _angular_core.Signal<string>;
5969
+ readonly aspectRatio: _angular_core.Signal<string>;
5719
5970
  togglePlay(): void;
5720
5971
  pause(): void;
5721
5972
  onLoadedMetadata(): void;
@@ -5725,7 +5976,7 @@ declare class AXConversationVideoAttachmentComponent {
5725
5976
  onEnded(): void;
5726
5977
  onError(): void;
5727
5978
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationVideoAttachmentComponent, never>;
5728
- static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoAttachmentComponent, "ax-conversation-video-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
5979
+ static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationVideoAttachmentComponent, "ax-conversation-video-attachment", never, { "item": { "alias": "item"; "required": true; "isSignal": true; }; "reserveAspect": { "alias": "reserveAspect"; "required": false; "isSignal": true; }; }, { "playingChange": "playingChange"; "timeUpdate": "timeUpdate"; "durationChange": "durationChange"; "playbackEnded": "playbackEnded"; "playbackError": "playbackError"; }, never, never, true, never>;
5729
5980
  }
5730
5981
 
5731
5982
  declare class AXConversationAudioRendererComponent extends AXConversationMessageRendererCopyHostComponent {
@@ -5792,29 +6043,62 @@ declare class AXConversationFallbackRendererComponent implements AXConversationM
5792
6043
 
5793
6044
  declare class AXConversationFileRendererComponent extends AXConversationMessageRendererCopyHostComponent {
5794
6045
  private readonly fileTypes;
6046
+ private readonly translation;
6047
+ private readonly destroyRef;
6048
+ private readonly infoBarService;
6049
+ private readonly audioAttachments;
6050
+ private readonly _contentState;
6051
+ private readonly activeTrackIndex;
6052
+ private readonly isPlaying;
6053
+ private readonly currentTime;
6054
+ private readonly duration;
6055
+ readonly playbackSpeed: _angular_core.WritableSignal<number>;
6056
+ readonly isMuted: _angular_core.WritableSignal<boolean>;
6057
+ private lastBannerSyncAt;
6058
+ private readonly speeds;
6059
+ private readonly bannerTogglePlay;
6060
+ private readonly bannerClose;
6061
+ private readonly bannerCycleSpeed;
6062
+ private readonly bannerToggleMute;
5795
6063
  readonly message: _angular_core.InputSignal<AXConversationMessage>;
5796
6064
  readonly rendererState: _angular_core.Signal<{
5797
6065
  deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
5798
- contentState: "ready";
6066
+ contentState: AXConversationMessageRendererContentState;
5799
6067
  }>;
5800
6068
  readonly payload: _angular_core.Signal<AXConversationFilePayload>;
5801
- readonly files: _angular_core.Signal<_acorex_components_conversation.AXConversationFileMediaItem[]>;
6069
+ readonly files: _angular_core.Signal<AXConversationFileMediaItem[]>;
5802
6070
  readonly caption: _angular_core.Signal<string>;
6071
+ readonly fileRows: _angular_core.Signal<{
6072
+ file: AXConversationFileMediaItem;
6073
+ isAudio: boolean;
6074
+ audio: _acorex_components_conversation.AXConversationAudioMediaItem;
6075
+ trackIndex: number;
6076
+ }[]>;
5803
6077
  copy(): Promise<string>;
6078
+ constructor();
6079
+ isAudioFile(file: AXConversationFileMediaItem): boolean;
6080
+ onPlayingChange(trackIndex: number, playing: boolean): void;
6081
+ onTimeUpdate(trackIndex: number, time: number): void;
6082
+ onDurationChange(trackIndex: number, duration: number): void;
6083
+ onPlaybackEnded(trackIndex: number): void;
6084
+ onPlaybackError(): void;
6085
+ togglePlay(): void;
6086
+ cyclePlaybackSpeed(): void;
6087
+ toggleMute(): void;
6088
+ private pauseOtherTracks;
6089
+ private pausePlayback;
6090
+ private applyPlaybackSettings;
6091
+ private syncInfoBarBanner;
5804
6092
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationFileRendererComponent, never>;
5805
6093
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationFileRendererComponent, "ax-conversation-file-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
5806
6094
  }
5807
6095
 
6096
+ declare function fileItemAsAudioMedia(item: AXConversationFileMediaItem): AXConversationAudioMediaItem;
5808
6097
  declare function normalizeFilePayload(payload: AXConversationFilePayload): AXConversationFilePayload;
5809
6098
 
5810
- type AXConversationMediaGalleryLayoutMode = 'single' | 'dual' | 'triple' | 'masonry';
5811
- interface AXConversationMediaGalleryRow<T> {
5812
- items: T[];
5813
- startIndex: number;
5814
- }
5815
-
5816
6099
  declare class AXConversationImageRendererComponent extends AXConversationMessageRendererCopyHostComponent {
5817
6100
  private readonly fileTypes;
6101
+ protected readonly translation: AXTranslationService;
5818
6102
  readonly message: _angular_core.InputSignal<AXConversationMessage>;
5819
6103
  readonly rendererState: _angular_core.Signal<{
5820
6104
  deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
@@ -5823,6 +6107,8 @@ declare class AXConversationImageRendererComponent extends AXConversationMessage
5823
6107
  readonly payload: _angular_core.Signal<AXConversationImagePayload>;
5824
6108
  readonly images: _angular_core.Signal<_acorex_components_conversation.AXConversationImageMediaItem[]>;
5825
6109
  readonly caption: _angular_core.Signal<string>;
6110
+ readonly imageAlt: _angular_core.Signal<string>;
6111
+ readonly imageLoadErrorLabel: _angular_core.Signal<string>;
5826
6112
  copy(): Promise<string>;
5827
6113
  readonly layoutMode: _angular_core.Signal<AXConversationMediaGalleryLayoutMode>;
5828
6114
  readonly imageRows: _angular_core.Signal<AXConversationMediaGalleryRow<_acorex_components_conversation.AXConversationImageMediaItem>[]>;
@@ -5837,6 +6123,13 @@ declare function resolveImageDisplayUrl(image: AXConversationImageMediaItem): st
5837
6123
 
5838
6124
  declare class AXConversationLocationRendererComponent extends AXConversationMessageRendererCopyHostComponent {
5839
6125
  private readonly _contentState;
6126
+ private readonly platformId;
6127
+ private readonly document;
6128
+ private readonly fullScreen;
6129
+ private readonly destroyRef;
6130
+ private readonly mapHost;
6131
+ private readonly map;
6132
+ protected readonly translation: AXTranslationService;
5840
6133
  readonly message: _angular_core.InputSignal<AXConversationMessage>;
5841
6134
  readonly rendererState: _angular_core.Signal<{
5842
6135
  deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
@@ -5857,12 +6150,21 @@ declare class AXConversationLocationRendererComponent extends AXConversationMess
5857
6150
  popupOpen: boolean;
5858
6151
  popupCloseButton: boolean;
5859
6152
  }[]>;
6153
+ readonly mapIsFullscreen: _angular_core.Signal<boolean>;
6154
+ readonly mapFullscreenLabel: _angular_core.Signal<string>;
6155
+ readonly mapFullscreenIconClass: _angular_core.Signal<"fa-light fa-compress" | "fa-light fa-expand">;
6156
+ constructor();
6157
+ openInMaps(event: AXClickEvent): void;
6158
+ toggleMapFullscreen(event: AXClickEvent): void;
6159
+ private exitMapFullscreen;
6160
+ protected scheduleMapResize(): void;
5860
6161
  static ɵfac: _angular_core.ɵɵFactoryDeclaration<AXConversationLocationRendererComponent, never>;
5861
6162
  static ɵcmp: _angular_core.ɵɵComponentDeclaration<AXConversationLocationRendererComponent, "ax-conversation-location-renderer", never, { "message": { "alias": "message"; "required": true; "isSignal": true; }; }, {}, never, never, true, never>;
5862
6163
  }
5863
6164
 
5864
6165
  declare class AXConversationStickerRendererComponent implements AXConversationMessageRendererComponent {
5865
6166
  private readonly _contentState;
6167
+ protected readonly translation: AXTranslationService;
5866
6168
  readonly message: _angular_core.InputSignal<AXConversationMessage>;
5867
6169
  readonly rendererState: _angular_core.Signal<{
5868
6170
  deliveryStatus: _acorex_components_conversation.AXConversationMessageStatus;
@@ -5873,6 +6175,7 @@ declare class AXConversationStickerRendererComponent implements AXConversationMe
5873
6175
  private readonly resolvedUrl;
5874
6176
  readonly stickerUrl: _angular_core.Signal<string>;
5875
6177
  readonly alt: _angular_core.Signal<string>;
6178
+ readonly aspectRatio: _angular_core.Signal<string>;
5876
6179
  constructor();
5877
6180
  onLoad(): void;
5878
6181
  onError(): void;
@@ -5904,6 +6207,10 @@ declare class AXConversationTextRendererComponent extends AXConversationMessageR
5904
6207
  }>;
5905
6208
  readonly searchQuery: _angular_core.Signal<string>;
5906
6209
  copy(): string;
6210
+ readonly jumboCount: _angular_core.Signal<number>;
6211
+ readonly isJumbo: _angular_core.Signal<boolean>;
6212
+ readonly jumboText: _angular_core.Signal<string>;
6213
+ readonly jumboGraphemes: _angular_core.Signal<string[]>;
5907
6214
  readonly formattedText: _angular_core.Signal<SafeHtml>;
5908
6215
  private linkify;
5909
6216
  private highlightSearch;
@@ -5953,7 +6260,7 @@ declare function normalizeVideoPayload(payload: AXConversationVideoPayload): AXC
5953
6260
 
5954
6261
  declare class AXConversationVoiceRendererComponent extends AXConversationMessageRendererCopyHostComponent {
5955
6262
  private readonly fileTypes;
5956
- private readonly translation;
6263
+ protected readonly translation: AXTranslationService;
5957
6264
  private readonly platformId;
5958
6265
  private readonly destroyRef;
5959
6266
  private readonly infoBarService;
@@ -6068,6 +6375,7 @@ declare const AX_CONVERSATION_ITEM_DIVIDER: AXConversationItemAction;
6068
6375
  /**
6069
6376
  * Delete/Leave conversation action (smart action that adapts based on conversation type)
6070
6377
  * - Private: "Delete" - Deletes the conversation
6378
+ * - Bot: "Delete" - Deletes for both sides without a confirmation prompt
6071
6379
  * - Group/Channel: "Leave & Delete" - Leaves the group and removes it from list
6072
6380
  */
6073
6381
  declare const AX_CONVERSATION_ITEM_DELETE_ACTION: AXConversationItemAction;
@@ -6567,5 +6875,5 @@ declare function getErrorMessage(code: string, params?: Record<string, string |
6567
6875
  */
6568
6876
  type AXConversationErrorCode = typeof AX_CONVERSATION_MESSAGE_ERRORS[keyof typeof AX_CONVERSATION_MESSAGE_ERRORS]['code'] | typeof AX_CONVERSATION_FILE_ERRORS[keyof typeof AX_CONVERSATION_FILE_ERRORS]['code'] | typeof AX_CONVERSATION_USER_ERRORS[keyof typeof AX_CONVERSATION_USER_ERRORS]['code'] | typeof AX_CONVERSATION_ERRORS[keyof typeof AX_CONVERSATION_ERRORS]['code'] | typeof AX_CONVERSATION_CONNECTION_ERRORS[keyof typeof AX_CONVERSATION_CONNECTION_ERRORS]['code'] | typeof AX_CONVERSATION_LOCATION_ERRORS[keyof typeof AX_CONVERSATION_LOCATION_ERRORS]['code'] | typeof AX_CONVERSATION_URL_ERRORS[keyof typeof AX_CONVERSATION_URL_ERRORS]['code'];
6569
6877
 
6570
- export { AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationAvatarComponent, AXConversationAvatarPickerComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerGenerationStateService, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationDeleteDialogComponent, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerOptionsComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryComponentOutletComponent, AXConversationRegistryService, AXConversationService, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_BUILTIN_COMPOSER_TABS, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CONFIG, AX_CONVERSATION_CONNECTION_ERRORS, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS, AX_CONVERSATION_DEFAULT_COMPOSER_TABS, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS, AX_CONVERSATION_DEFAULT_GROUP_ICON, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS, AX_CONVERSATION_DEFAULT_ROOM_PREFERENCES, AX_CONVERSATION_DEFAULT_USER_ICON, AX_CONVERSATION_ERRORS, AX_CONVERSATION_ERROR_HANDLER_CONFIG, AX_CONVERSATION_ERROR_MESSAGES, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_CATALOG, AX_CONVERSATION_FILE_ERRORS, AX_CONVERSATION_FILE_PRESENTATION, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_FILE_TYPES_READY, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_LOCATION_ERRORS, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_ERRORS, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE, AX_CONVERSATION_PEER_AVATAR_TYPES, AX_CONVERSATION_REGISTRY_CONFIG, AX_CONVERSATION_STICKER_API_KEY, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_URL_ERRORS, AX_CONVERSATION_USER_AVATAR_COMPONENT, AX_CONVERSATION_USER_ERRORS, AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, abortPickerUploads, applyAudioLocalPreview, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createPickerUploadItemId, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, ensureConversationFileCatalogRegistered, fetchConversationMediaPage, fileItemFromUpload, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getConversationMediaCategories, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, hasRegistryComponent, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerTabEnabled, isConversationReactionsEnabled, isConversationRoomCreator, isGenericPrivateConversationTitle, isGridMediaCategory, isGroupLikeConversation, isMessageDeliveryPending, isMessageListThemeBackground, isMessageVisibleAfterHistoryCutoff, isNonPersistableMediaUrl, isPickerItemReadyToSend, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAudioPayload, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, pickDisplayMediaUrl, pickEarliestJoinedParticipant, pickerItemToMediaReference, pickerItemToUploadResult, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, reportMediaLoadError, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, shouldUseUserAvatarForConversation, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, uploadPickerFile, usesDefaultMessageListWallpaper, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
6571
- export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerGenerationPhase, AXConversationComposerPickerUploadItem, AXConversationComposerPrimaryButtonMode, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDateSeparatorKind, AXConversationDeleteDialogMode, AXConversationDeleteDialogResult, AXConversationDeleteMessageCommand, AXConversationDeleteOptions, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaGalleryTile, AXConversationMediaItemFields, AXConversationMediaPageResult, AXConversationMention, AXConversationMessage, AXConversationMessageAction, AXConversationMessageActionContext, AXConversationMessageClusterRole, AXConversationMessageDateGroup, AXConversationMessageForwardData, AXConversationMessageInfoBarBannerComponent, AXConversationMessageListBackground, AXConversationMessageListBackgroundPreset, AXConversationMessageListEmptyComponent, AXConversationMessageListThemeBackground, AXConversationMessagePayload, AXConversationMessageRenderer, AXConversationMessageRendererCapabilities, AXConversationMessageRendererComponent, AXConversationMessageRendererContentState, AXConversationMessageRendererState, AXConversationMessageSearchFilters, AXConversationMessageStatus, AXConversationMessageType, AXConversationMetadata, AXConversationOptions, AXConversationOutletSkeleton, AXConversationPaginatedResult, AXConversationPagination, AXConversationPaginationState, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantUpdate, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryComponentRef, AXConversationRegistryConfiguration, AXConversationRegistryItem, AXConversationRoomPreferences, AXConversationRoomPreferencesMap, AXConversationSendMessageCommand, AXConversationSendMessageOptions, AXConversationSendMessageUploadSource, AXConversationSettingsUpdate, AXConversationSidebarTabsOrientation, AXConversationSort, AXConversationStickerPayload, AXConversationSystemPayload, AXConversationTab, AXConversationTextFormat, AXConversationTextPayload, AXConversationType, AXConversationTypingIndicator, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUploaderFilePreview, AXConversationUploaderReference, AXConversationUploaderResult, AXConversationUser, AXConversationUserAvatarComponent, AXConversationUserPresence, AXConversationUserProfile, AXConversationUserProfileUpdate, AXConversationUserSearchFilters, AXConversationValidationResult, AXConversationVideoMediaItem, AXConversationVideoPayload, AXConversationVoicePayload };
6878
+ export { AXConversationApi, AXConversationApiLoggerService, AXConversationAudioAttachmentComponent, AXConversationAudioFileTypeProvider, AXConversationAudioPickerComponent, AXConversationAudioRendererComponent, AXConversationAvatarComponent, AXConversationAvatarPickerComponent, AXConversationBaseRegistry, AXConversationComposerActionRegistry, AXConversationComposerComponent, AXConversationComposerFileTypesProvider, AXConversationComposerGenerationStateService, AXConversationComposerPopupComponent, AXConversationComposerService, AXConversationComposerTabRegistry, AXConversationContainerComponent, AXConversationContainerDirective, AXConversationDateUtilsService, AXConversationDeleteDialogComponent, AXConversationEmojiTabComponent, AXConversationErrorHandlerService, AXConversationFallbackRendererComponent, AXConversationFileAttachmentComponent, AXConversationFileFileTypeProvider, AXConversationFilePickerComponent, AXConversationFileRendererComponent, AXConversationForwardMessageDialogComponent, AXConversationImageAttachmentComponent, AXConversationImageFileTypeProvider, AXConversationImagePickerComponent, AXConversationImageRendererComponent, AXConversationInfiniteScrollDirective, AXConversationInfoBarActionRegistry, AXConversationInfoBarComponent, AXConversationInfoBarSearchComponent, AXConversationInfoBarService, AXConversationItemActionRegistry, AXConversationLocationPickerComponent, AXConversationLocationRendererComponent, AXConversationMediaPlaybackInfoBarBannerComponent, AXConversationMessageActionRegistry, AXConversationMessageApi, AXConversationMessageListComponent, AXConversationMessageListNoActiveDefaultComponent, AXConversationMessageListService, AXConversationMessageRendererCopyHostComponent, AXConversationMessageRendererRegistry, AXConversationMessageRendererStateComponent, AXConversationMessageUtilsService, AXConversationModule, AXConversationNewDialogComponent, AXConversationPickerCaptionComponent, AXConversationPickerEmptyComponent, AXConversationPickerFooterComponent, AXConversationPickerHeaderComponent, AXConversationPickerOptionsComponent, AXConversationPickerShellComponent, AXConversationPickerToolbarComponent, AXConversationRealtimeApi, AXConversationRegistryComponentOutletComponent, AXConversationRegistryService, AXConversationService, AXConversationSidebarComponent, AXConversationSidebarService, AXConversationStickerRendererComponent, AXConversationStickerTabComponent, AXConversationSystemRendererComponent, AXConversationTabRegistry, AXConversationTextRendererComponent, AXConversationUserApi, AXConversationVideoAttachmentComponent, AXConversationVideoFileTypeProvider, AXConversationVideoPickerComponent, AXConversationVideoRendererComponent, AXConversationVoiceFileTypeProvider, AXConversationVoiceRecorderComponent, AXConversationVoiceRendererComponent, AX_CONVERSATION_AUDIO_CATALOG, AX_CONVERSATION_AUDIO_PRESENTATION, AX_CONVERSATION_AUDIO_RENDERER, AX_CONVERSATION_BUILTIN_COMPOSER_TABS, AX_CONVERSATION_COMPOSER_AUDIO_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_ACTION, AX_CONVERSATION_COMPOSER_EMOJI_TAB, AX_CONVERSATION_COMPOSER_FILE_ACTION, AX_CONVERSATION_COMPOSER_IMAGE_ACTION, AX_CONVERSATION_COMPOSER_LOCATION_ACTION, AX_CONVERSATION_COMPOSER_STICKER_TAB, AX_CONVERSATION_COMPOSER_VIDEO_ACTION, AX_CONVERSATION_COMPOSER_VOICE_RECORDING_ACTION, AX_CONVERSATION_CONFIG, AX_CONVERSATION_CONNECTION_ERRORS, AX_CONVERSATION_CONVERSATION_AVATAR_COMPONENT, AX_CONVERSATION_DEFAULT_COMPOSER_ACTIONS, AX_CONVERSATION_DEFAULT_COMPOSER_TABS, AX_CONVERSATION_DEFAULT_CONVERSATION_ITEM_ACTIONS, AX_CONVERSATION_DEFAULT_CONVERSATION_TABS, AX_CONVERSATION_DEFAULT_GROUP_ICON, AX_CONVERSATION_DEFAULT_INFO_BAR_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_ACTIONS, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_BACKGROUND_PRESET_ID, AX_CONVERSATION_DEFAULT_MESSAGE_LIST_THEME_BACKGROUND, AX_CONVERSATION_DEFAULT_MESSAGE_RENDERERS, AX_CONVERSATION_DEFAULT_ROOM_PREFERENCES, AX_CONVERSATION_DEFAULT_USER_ICON, AX_CONVERSATION_ERRORS, AX_CONVERSATION_ERROR_HANDLER_CONFIG, AX_CONVERSATION_ERROR_MESSAGES, AX_CONVERSATION_FALLBACK_RENDERER, AX_CONVERSATION_FILE_CATALOG, AX_CONVERSATION_FILE_ERRORS, AX_CONVERSATION_FILE_PRESENTATION, AX_CONVERSATION_FILE_RENDERER, AX_CONVERSATION_FILE_TYPES_READY, AX_CONVERSATION_IMAGE_CATALOG, AX_CONVERSATION_IMAGE_PRESENTATION, AX_CONVERSATION_IMAGE_RENDERER, AX_CONVERSATION_INFO_BAR_ARCHIVE_ACTION, AX_CONVERSATION_INFO_BAR_BLOCK_ACTION, AX_CONVERSATION_INFO_BAR_DELETE_ACTION, AX_CONVERSATION_INFO_BAR_DIVIDER, AX_CONVERSATION_INFO_BAR_MUTE_ACTION, AX_CONVERSATION_INFO_BAR_SEARCH_ACTION, AX_CONVERSATION_ITEM_BLOCK_ACTION, AX_CONVERSATION_ITEM_DELETE_ACTION, AX_CONVERSATION_ITEM_DIVIDER, AX_CONVERSATION_ITEM_MARK_READ_ACTION, AX_CONVERSATION_ITEM_MUTE_ACTION, AX_CONVERSATION_ITEM_PIN_ACTION, AX_CONVERSATION_JUMBO_EMOJI_MAX, AX_CONVERSATION_LOCATION_ERRORS, AX_CONVERSATION_LOCATION_RENDERER, AX_CONVERSATION_MESSAGE_DELETE_ACTION, AX_CONVERSATION_MESSAGE_EDIT_ACTION, AX_CONVERSATION_MESSAGE_ERRORS, AX_CONVERSATION_MESSAGE_FORWARD_ACTION, AX_CONVERSATION_MESSAGE_LIST_BACKGROUND_PRESETS, AX_CONVERSATION_MESSAGE_REPLY_ACTION, AX_CONVERSATION_MESSAGE_TYPE_FILE_TYPE, AX_CONVERSATION_PEER_AVATAR_TYPES, AX_CONVERSATION_REGISTRY_CONFIG, AX_CONVERSATION_STICKER_API_KEY, AX_CONVERSATION_STICKER_RENDERER, AX_CONVERSATION_SYSTEM_RENDERER, AX_CONVERSATION_TAB_ALL, AX_CONVERSATION_TAB_ARCHIVED, AX_CONVERSATION_TAB_BOT, AX_CONVERSATION_TAB_CHANNELS, AX_CONVERSATION_TAB_GROUPS, AX_CONVERSATION_TAB_PRIVATE, AX_CONVERSATION_TAB_UNREAD, AX_CONVERSATION_TEXT_RENDERER, AX_CONVERSATION_URL_ERRORS, AX_CONVERSATION_USER_AVATAR_COMPONENT, AX_CONVERSATION_USER_ERRORS, AX_CONVERSATION_VIDEO_CATALOG, AX_CONVERSATION_VIDEO_PRESENTATION, AX_CONVERSATION_VIDEO_RENDERER, AX_CONVERSATION_VOICE_CATALOG, AX_CONVERSATION_VOICE_PRESENTATION, AX_CONVERSATION_VOICE_RENDERER, AX_DEFAULT_CONVERSATION_CONFIG, abortPickerUploads, applyAudioLocalPreview, applyFileLocalPreview, applyLocalPreview, applyVideoLocalPreview, applyVoiceLocalPreview, audioItemFromUpload, bindMediaRendererContentState, buildMediaGalleryTiles, canShowRendererContentError, cleanupPickerUploads, conversationAudioUtilities, conversationFileUtilities, conversationImageUtilities, conversationVideoUtilities, conversationVoiceUtilities, copyWithFileTypeFallback, countLoneEmojis, createConversationAudioFileType, createConversationFileFileType, createConversationImageFileType, createConversationVideoFileType, createConversationVoiceFileType, createLocalPreviewUrl, createObjectUrl, createPickerDragHandlers, createPickerUploadItemId, createResolvedMediaUrlSignal, deleteUploadedPickerMedia, dismissComposerPickerHost, ensureConversationFileCatalogRegistered, fetchConversationMediaPage, fileItemAsAudioMedia, fileItemFromUpload, filesFromClipboardEvent, filterMessagesByMediaCategory, filterSupplementalInfoPanelMessages, findExistingPrivateConversation, formatDuration, formatErrorMessage, formatFileByteSize, formatFileSize, formatMediaDuration, formatPickerValidationMessage, getActiveComposerPickerPasteHandler, getConversationMediaCategories, getConversationProfileFields, getErrorMessage, getMessageAudioItems, getMessageVideoItems, getPickerCancelUploadLabel, getPrivatePeerParticipant, hasRegistryComponent, inferFileExtensionHintFromMessage, isAttachmentListCategory, isComposerAttachmentBannerEnabled, isComposerTabEnabled, isConversationReactionsEnabled, isConversationRoomCreator, isGenericPrivateConversationTitle, isGridMediaCategory, isGroupLikeConversation, isJumboEmojiText, isJumboEmojiTextMessage, isMessageDeliveryPending, isMessageListThemeBackground, isMessageVisibleAfterHistoryCutoff, isNonPersistableMediaUrl, isPickerItemReadyToSend, isPlainChromeMessage, isSameMessageListBackground, isUploadAborted, limitFilesToCapacity, listTextGraphemes, mediaCopyText, mergeAudioUploadResult, mergeFileUploadResult, mergeInfoPanelMessages, mergeUploadResult, mergeVideoUploadResult, mergeVoiceUploadResult, mergeWithDefaults, messageContainsLink, normalizeAudioPayload, normalizeConversationInboundFile, normalizeFilePayload, normalizeImagePayload, normalizeMessageListBackgroundValue, normalizeVideoPayload, notifyMaxFilesCapacityExceeded, notifyPickerValidationErrors, openWithFileType, pickDisplayMediaUrl, pickEarliestJoinedParticipant, pickerItemToMediaReference, pickerItemToUploadResult, probeAudioDuration, probeImageDimensions, probeVideoMedia, provideConversation, provideConversationComposerFileTypes, provideConversationFileCatalog, registerComposerPickerPasteHandler, reportMediaLoadError, resolveComposerAttachmentPresentation, resolveComposerMaxFiles, resolveConversationAvatarDisplay, resolveConversationComposerTabs, resolveConversationForViewer, resolveConversationMessageFileType, resolveConversationPeerParticipant, resolveConversationPeerUserId, resolveConversationTitleForViewer, resolveGalleryImageUrl, resolveImageDisplayUrl, resolveMessageChrome, resolveMessageListBackgroundRaw, resolveMessageListBackgroundStyle, resolveParticipantProfile, resolvePersistableMediaUrl, resolvePersistedThumbnailUrl, resolvePrivatePeerParticipant, resolvePrivatePeerUserId, resolveUserAvatarDisplay, resolveVideoThumbnailUrl, revokeObjectUrl, revokePickerBlobPreviews, sanitizeInput, shouldUseUserAvatarForConversation, sortUsersForForward, syncPlaybackInfoBarBanner, toUploaderReference as toMediaItemUploaderReference, toUploaderReference$1 as toUploaderReference, uploadPickerFile, usesDefaultMessageListWallpaper, validateConversationId, validateEmail, validateLatitude, validateLongitude, validateMessagePayload, validateMessageText, validateMessageType, validateUrl, validateUserId, validateUserIds, videoItemFromUpload };
6879
+ export type { AXConversation, AXConversationApiError, AXConversationApiLogEntry, AXConversationApiName, AXConversationAudioMediaItem, AXConversationAudioPayload, AXConversationAvatarComponents, AXConversationAvatarDisplay, AXConversationAvatarKind, AXConversationBlockReportReason, AXConversationCleanupPickerUploadsOptions, AXConversationComposerAction, AXConversationComposerActionComponent, AXConversationComposerActionContext, AXConversationComposerAttachmentPresentation, AXConversationComposerDraftAttachment, AXConversationComposerDraftAttachmentKind, AXConversationComposerGenerationPhase, AXConversationComposerPickerUploadItem, AXConversationComposerPrimaryButtonMode, AXConversationComposerTab, AXConversationComposerTabFeature, AXConversationConfig, AXConversationConnectionStatus, AXConversationConversationAvatarComponent, AXConversationCreateData, AXConversationDateSeparatorKind, AXConversationDeleteDialogMode, AXConversationDeleteDialogResult, AXConversationDeleteMessageCommand, AXConversationDeleteOptions, AXConversationDropdownMenuItem, AXConversationEditMessageCommand, AXConversationError, AXConversationErrorCode, AXConversationErrorHandlerConfig, AXConversationErrorMessage, AXConversationErrorSeverity, AXConversationFeatures, AXConversationFileMediaItem, AXConversationFilePayload, AXConversationFilter, AXConversationFilters, AXConversationForwardUserSortEntry, AXConversationGroupedReaction, AXConversationImageMediaItem, AXConversationImagePayload, AXConversationInfoBarAction, AXConversationInfoBarActionComponent, AXConversationInfoBarActionContext, AXConversationInfoBarActiveBanner, AXConversationInfoBarActiveComponent, AXConversationInfoProfileField, AXConversationItemAction, AXConversationItemActionContext, AXConversationLink, AXConversationLinkPreview, AXConversationLoadMessagesResult, AXConversationLocationPayload, AXConversationMediaCategory, AXConversationMediaCategoryId, AXConversationMediaDimensions, AXConversationMediaGalleryTile, AXConversationMediaItemFields, AXConversationMediaPageResult, AXConversationMention, AXConversationMessage, AXConversationMessageAction, AXConversationMessageActionContext, AXConversationMessageChrome, AXConversationMessageClusterRole, AXConversationMessageDateGroup, AXConversationMessageForwardData, AXConversationMessageInfoBarBannerComponent, AXConversationMessageListBackground, AXConversationMessageListBackgroundPreset, AXConversationMessageListEmptyComponent, AXConversationMessageListThemeBackground, AXConversationMessagePayload, AXConversationMessageRenderer, AXConversationMessageRendererCapabilities, AXConversationMessageRendererComponent, AXConversationMessageRendererContentState, AXConversationMessageRendererState, AXConversationMessageSearchFilters, AXConversationMessageStatus, AXConversationMessageType, AXConversationMetadata, AXConversationOptions, AXConversationOutletSkeleton, AXConversationPaginatedResult, AXConversationPagination, AXConversationPaginationState, AXConversationParticipant, AXConversationParticipantRole, AXConversationParticipantUpdate, AXConversationPickerPasteHandler, AXConversationPinnedMessage, AXConversationPlaybackBannerInputs, AXConversationPollOption, AXConversationPollPayload, AXConversationPresenceStatus, AXConversationPresenceUpdate, AXConversationReaction, AXConversationReadReceipt, AXConversationRegistryComponentRef, AXConversationRegistryConfiguration, AXConversationRegistryItem, AXConversationRoomPreferences, AXConversationRoomPreferencesMap, AXConversationSendMessageCommand, AXConversationSendMessageOptions, AXConversationSendMessageUploadSource, AXConversationSettingsUpdate, AXConversationSidebarTabsOrientation, AXConversationSort, AXConversationStickerPayload, AXConversationSystemPayload, AXConversationTab, AXConversationTextFormat, AXConversationTextPayload, AXConversationType, AXConversationTypingIndicator, AXConversationUpdateData, AXConversationUploadOptions, AXConversationUploaderFilePreview, AXConversationUploaderReference, AXConversationUploaderResult, AXConversationUser, AXConversationUserAvatarComponent, AXConversationUserPresence, AXConversationUserProfile, AXConversationUserProfileUpdate, AXConversationUserSearchFilters, AXConversationValidationResult, AXConversationVideoMediaItem, AXConversationVideoPayload, AXConversationVoicePayload };